diff --git a/rtl/bsd/Makefile b/rtl/bsd/Makefile deleted file mode 100644 index e2e3f54728..0000000000 --- a/rtl/bsd/Makefile +++ /dev/null @@ -1,1202 +0,0 @@ -# -# Makefile generated by fpcmake v0.99.13 [2000/01/17] -# - -defaultrule: all - -##################################################################### -# Autodetect OS (Linux or Dos or Windows NT) -# define inlinux when running under linux -# define inWinNT when running under WinNT -##################################################################### - -# We need only / in the path -override PATH:=$(subst \,/,$(PATH)) - -# Search for PWD and determine also if we are under linux -PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH))))) -ifeq ($(PWD),) -PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH))))) -ifeq ($(PWD),) -nopwd: - @echo You need the GNU utils package to use this Makefile! - @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip - @exit -else -inlinux=1 -endif -else -PWD:=$(firstword $(PWD)) -endif - -# Detect NT - NT sets OS to Windows_NT -ifndef inlinux -ifeq ($(OS),Windows_NT) -inWinNT=1 -endif -endif - -# Detect OS/2 - OS/2 has OS2_SHELL defined -ifndef inlinux -ifndef inWinNT -ifdef OS2_SHELL -inOS2=1 -endif -endif -endif - -# The extension of executables -ifdef inlinux -EXEEXT= -else -EXEEXT=.exe -endif - -# The path which is searched separated by spaces -ifdef inlinux -SEARCHPATH=$(subst :, ,$(PATH)) -else -SEARCHPATH=$(subst ;, ,$(PATH)) -endif - -# Base dir -ifdef PWD -BASEDIR:=$(shell $(PWD)) -else -BASEDIR=. -endif - -##################################################################### -# Default target -##################################################################### - -override OS_TARGET:=linux -override CPU_TARGET:=i386 - -##################################################################### -# FPC version/target Detection -##################################################################### - -# What compiler to use ? -ifndef FPC -# Compatibility with old makefiles -ifdef PP -FPC=$(PP) -else -ifdef inOS2 -FPC=ppos2$(EXEEXT) -else -FPC=ppc386$(EXEEXT) -endif -endif -endif - -# Target OS -ifndef OS_TARGET -OS_TARGET:=$(shell $(FPC) -iTO) -endif - -# Source OS -ifndef OS_SOURCE -OS_SOURCE:=$(shell $(FPC) -iSO) -endif - -# Target CPU -ifndef CPU_TARGET -CPU_TARGET:=$(shell $(FPC) -iTP) -endif - -# Source CPU -ifndef CPU_SOURCE -CPU_SOURCE:=$(shell $(FPC) -iSP) -endif - -# FPC version -ifndef FPC_VERSION -FPC_VERSION:=$(shell $(FPC) -iV) -endif - -export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION - -##################################################################### -# Pre Settings -##################################################################### - -RTL=.. -INC=$(RTL)/inc -PROCINC=$(RTL)/$(CPU_TARGET) - -UNITPREFIX=rtl - -# Paths -OBJPASDIR=$(RTL)/objpas -GRAPHDIR=$(INC)/graph - -# Define Go32v2 Units -SYSTEMUNIT=syslinux - -# Use new graph unit ? -# NEWGRAPH=YES -# Use LibGGI ? -# Use -# -ifndef USELIBGGI -USELIBGGI=NO -endif -##################################################################### -# FPCDIR Setting -##################################################################### - -# Test FPCDIR to look if the RTL dir exists -ifdef FPCDIR -override FPCDIR:=$(subst \,/,$(FPCDIR)) -ifeq ($(wildcard $(FPCDIR)/rtl),) -override FPCDIR=wrong -endif -else -override FPCDIR=wrong -endif - -# Default FPCDIR -ifeq ($(FPCDIR),wrong) -override FPCDIR=. -ifeq ($(wildcard $(FPCDIR)/rtl),) -override FPCDIR=wrong -endif -endif - -# Detect FPCDIR -ifeq ($(FPCDIR),wrong) -ifdef inlinux -override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) -else -override FPCDIR:=$(subst /$(FPC)$(EXEEXT),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC)$(EXEEXT),$(SEARCHPATH)))))) -endif -endif - -##################################################################### -# User Settings -##################################################################### - - -# Targets - -override LOADEROBJECTS+=prt0 cprt0 -override UNITOBJECTS+=$(SYSTEMUNIT) objpas strings linux initc dos crt objects printer sysutils typinfo math cpu mmx getopts heaptrc lineinfo errors sockets gpm ipc -override RSTOBJECTS+=math - -# Clean - - -# Install - -UNITSUBDIR=rtl -ZIPTARGET=install - -# Defaults - - -# Directories - -override NEEDINCDIR=$(INC) $(PROCINC) -ifndef TARGETDIR -TARGETDIR=. -endif - -# Packages - - -# Libraries - -LIBNAME=libfprtl.so -SHAREDLIBOBJECTUNITS=$(SYSTEMUNIT) objpas strings linux dos crt objects printer sysutils typinfo math cpu mmx getopts heaptrc errors sockets ipc - -# Info - -INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall - -##################################################################### -# Post Settings -##################################################################### - -SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT)) - -# Get the system independent include file names. -# This will set the following variables : -# SYSINCNAMES -include $(INC)/makefile.inc -SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES)) - -# Get the processor dependent include file names. -# This will set the following variables : -# CPUINCNAMES -include $(PROCINC)/makefile.cpu -SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES)) - -# Put system unit dependencies together. -SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) - -##################################################################### -# Shell tools -##################################################################### - -# echo -ifndef ECHO -ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(ECHO),) -ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(ECHO),) -ECHO:=echo -ECHOE:=echo -else -ECHO:=$(firstword $(ECHO)) -ECHOE=$(ECHO) -E -endif -else -ECHO:=$(firstword $(ECHO)) -ECHOE=$(ECHO) -E -endif -endif - -# To copy pograms -ifndef COPY -COPY:=cp -fp -endif - -# Copy a whole tree -ifndef COPYTREE -COPYTREE:=cp -rfp -endif - -# To move pograms -ifndef MOVE -MOVE:=mv -f -endif - -# Check delete program -ifndef DEL -DEL:=rm -f -endif - -# Check deltree program -ifndef DELTREE -DELTREE:=rm -rf -endif - -# To install files -ifndef INSTALL -ifdef inlinux -INSTALL:=install -m 644 -else -INSTALL:=$(COPY) -endif -endif - -# To install programs -ifndef INSTALLEXE -ifdef inlinux -INSTALLEXE:=install -m 755 -else -INSTALLEXE:=$(COPY) -endif -endif - -# To make a directory. -ifndef MKDIR -ifdef inlinux -MKDIR:=install -m 755 -d -else -MKDIR:=ginstall -m 755 -d -endif -endif - -export ECHO ECHOE COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR - -##################################################################### -# Default Tools -##################################################################### - -# assembler, redefine it if cross compiling -ifndef AS -AS=as -endif - -# linker, but probably not used -ifndef LD -LD=ld -endif - -# ppas.bat / ppas.sh -ifdef inlinux -PPAS=ppas.sh -else -ifdef inOS2 -PPAS=ppas.cmd -else -PPAS=ppas.bat -endif -endif - -# also call ppas if with command option -s -ifeq (,$(findstring -s ,$(COMPILER))) -EXECPPAS= -else -EXECPPAS:=@$(PPAS) -endif - -# ldconfig to rebuild .so cache -ifdef inlinux -LDCONFIG=ldconfig -else -LDCONFIG= -endif - -# ppumove -ifndef PPUMOVE -PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(PPUMOVE),) -PPUMOVE= -else -PPUMOVE:=$(firstword $(PPUMOVE)) -endif -endif -export PPUMOVE - -# ppufiles -ifndef PPUFILES -PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(PPUFILES),) -PPUFILES= -else -PPUFILES:=$(firstword $(PPUFILES)) -endif -endif -export PPUFILES - -# Look if UPX is found for go32v2 and win32. We can't use $UPX becuase -# upx uses that one itself (PFV) -ifndef UPXPROG -ifeq ($(OS_TARGET),go32v2) -UPXPROG:=1 -endif -ifeq ($(OS_TARGET),win32) -UPXPROG:=1 -endif -ifdef UPXPROG -UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(UPXPROG),) -UPXPROG= -else -UPXPROG:=$(firstword $(UPXPROG)) -endif -else -UPXPROG= -endif -endif -export UPXPROG - -# ZipProg, you can't use Zip as the var name (PFV) -ifndef ZIPPROG -ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(ZIPPROG),) -ZIPPROG= -else -ZIPPROG:=$(firstword $(ZIPPROG)) -D9 -r -endif -endif -export ZIPPROG - -ZIPOPT=-9 -ZIPEXT=.zip - -# Tar -ifndef TARPROG -TARPROG:=$(strip $(wildcard $(addsuffix /tar$(EXEEXT),$(SEARCHPATH)))) -ifeq ($(TARPROG),) -TARPROG= -else -TARPROG:=$(firstword $(TARPROG)) -endif -endif -export TARPROG - -ifeq ($(USETAR),bz2) -TAROPT=vI -TAREXT=.tar.bz2 -else -TAROPT=vz -TAREXT=.tar.gz -endif - -##################################################################### -# Default extensions -##################################################################### - -# Default needed extensions (Go32v2,Linux) -LOADEREXT=.as -PPLEXT=.ppl -PPUEXT=.ppu -OEXT=.o -ASMEXT=.s -SMARTEXT=.sl -STATICLIBEXT=.a -SHAREDLIBEXT=.so -RSTEXT=.rst -FPCMADE=fpcmade - -# Go32v1 -ifeq ($(OS_TARGET),go32v1) -PPUEXT=.pp1 -OEXT=.o1 -ASMEXT=.s1 -SMARTEXT=.sl1 -STATICLIBEXT=.a1 -SHAREDLIBEXT=.so1 -FPCMADE=fpcmade.v1 -endif - -# Go32v2 -ifeq ($(OS_TARGET),go32v2) -FPCMADE=fpcmade.dos -endif - -# Linux -ifeq ($(OS_TARGET),linux) -FPCMADE=fpcmade.lnx -endif - -# Win32 -ifeq ($(OS_TARGET),win32) -PPUEXT=.ppw -OEXT=.ow -ASMEXT=.sw -SMARTEXT=.slw -STATICLIBEXT=.aw -SHAREDLIBEXT=.dll -FPCMADE=fpcmade.w32 -endif - -# OS/2 -ifeq ($(OS_TARGET),os2) -PPUEXT=.ppo -ASMEXT=.so2 -OEXT=.oo2 -SMARTEXT=.so -STATICLIBEXT=.ao2 -SHAREDLIBEXT=.dll -FPCMADE=fpcmade.os2 -endif - -# library prefix -LIBPREFIX=lib -ifeq ($(OS_TARGET),go32v2) -LIBPREFIX= -endif -ifeq ($(OS_TARGET),go32v1) -LIBPREFIX= -endif - -# determine which .pas extension is used -ifndef PASEXT -ifdef EXEOBJECTS -override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS))))) -else -override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS))))) -endif -ifeq ($(TESTPAS),) -PASEXT=.pp -else -PASEXT=.pas -endif -endif - - - -##################################################################### -# Default Directories -##################################################################### - -# set the prefix directory where to install everything -ifndef PREFIXINSTALLDIR -ifdef inlinux -PREFIXINSTALLDIR=/usr -else -PREFIXINSTALLDIR=/pp -endif -endif -export PREFIXINSTALLDIR - -# Where to place the resulting zip files -ifndef DESTZIPDIR -DESTZIPDIR:=$(BASEDIR) -endif -export DESTZIPDIR - -##################################################################### -# Install Directories -##################################################################### - -# set the base directory where to install everything -ifndef BASEINSTALLDIR -ifdef inlinux -BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION) -else -BASEINSTALLDIR=$(PREFIXINSTALLDIR) -endif -endif - -# set the directory where to install the binaries -ifndef BININSTALLDIR -ifdef inlinux -BININSTALLDIR=$(PREFIXINSTALLDIR)/bin -else -BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET) -endif -endif - -# set the directory where to install the units. -ifndef UNITINSTALLDIR -UNITINSTALLDIR=$(BASEINSTALLDIR)/units/$(OS_TARGET) -ifdef UNITSUBDIR -UNITINSTALLDIR:=$(UNITINSTALLDIR)/$(UNITSUBDIR) -endif -endif - -# Where to install shared libraries -ifndef LIBINSTALLDIR -ifdef inlinux -LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib -else -LIBINSTALLDIR=$(UNITINSTALLDIR) -endif -endif - -# Where the source files will be stored -ifndef SOURCEINSTALLDIR -ifdef inlinux -SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION) -else -SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source -endif -ifdef SOURCESUBDIR -SOURCEINSTALLDIR:=$(SOURCEINSTALLDIR)/$(SOURCESUBDIR) -endif -endif - -# Where the doc files will be stored -ifndef DOCINSTALLDIR -ifdef inlinux -DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc-$(FPC_VERSION) -else -DOCINSTALLDIR=$(BASEINSTALLDIR)/doc -endif -endif - -# Where the some extra (data)files will be stored -ifndef DATAINSTALLDIR -DATAINSTALLDIR=$(BASEINSTALLDIR) -endif - -##################################################################### -# Redirection -##################################################################### - -# Release ? Then force OPT and don't use extra opts via commandline -ifndef REDIRFILE -REDIRFILE=log -endif - -ifdef REDIR -ifndef inlinux -override FPC=redir -eo $(FPC) -endif -# set the verbosity to max -override FPCOPT+=-va -override REDIR:= >> $(REDIRFILE) -endif - - -##################################################################### -# Compiler Command Line -##################################################################### - -# Load commandline OPTDEF and add FPC_CPU define -override FPCOPTDEF:=-d$(CPU_TARGET) - -# Load commandline OPT and add target and unit dir to be sure -ifneq ($(OS_TARGET),$(OS_SOURCE)) -override FPCOPT+=-T$(OS_TARGET) -endif - -ifdef UNITSDIR -override FPCOPT+=-Fu$(UNITSDIR) -endif - -ifdef NEEDINCDIR -override FPCOPT+=$(addprefix -Fi,$(NEEDINCDIR)) -endif - - -# Target dirs -ifdef TARGETDIR -override FPCOPT+=-FE$(TARGETDIR) -endif - -# Smartlinking -ifdef SMARTLINK -override FPCOPT+=-CX -endif - -# Debug -ifdef DEBUG -override FPCOPT+=-g -dDEBUG -endif - -# Release mode (strip, optimize and don't load ppc386.cfg) -ifdef RELEASE -override FPCOPT+=-Xs -OG2p3 -n -endif - -# Verbose settings (warning,note,info) -ifdef VERBOSE -override FPCOPT+=-vwni -endif - -# Add commandline options -ifdef OPT -override FPCOPT+=$(OPT) -endif -ifdef UNITDIR -override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) -endif -ifdef LIBDIR -override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) -endif -ifdef OBJDIR -override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) -endif -ifdef INCDIR -override FPCOPT+=$(addprefix -Fi,$(INCDIR)) -endif - -# Add defines from FPCOPTDEF to FPCOPT -ifdef FPCOPTDEF -override FPCOPT+=$(FPCOPTDEF) -endif - -# Error file ? -ifdef ERRORFILE -override FPCOPT+=-Fr$(ERRORFILE) -endif - -# Was a config file specified ? -ifdef CFGFILE -override FPCOPT+=@$(CFGFILE) -endif - -# For win32 the options are passed using the environment FPCEXTCMD -ifeq ($(OS_SOURCE),win32) -override FPCEXTCMD:=$(FPCOPT) -override FPCOPT:=!FPCEXTCMD -endif - -# Compiler commandline -override COMPILER:=$(FPC) $(FPCOPT) - -##################################################################### -# Standard rules -##################################################################### - -all: fpc_all - -debug: fpc_debug - -smart: fpc_smart - -shared: fpc_shared - -showinstall: fpc_showinstall - -install: fpc_install - -sourceinstall: fpc_sourceinstall - -zipinstall: fpc_zipinstall - -zipsourceinstall: fpc_zipsourceinstall - -clean: fpc_clean - -cleanall: fpc_cleanall - -info: fpc_info - -.PHONY: all debug smart shared showinstall install sourceinstall zipinstall zipsourceinstall clean cleanall info - -##################################################################### -# Loaders -##################################################################### - -.PHONY: fpc_loaders - -%$(OEXT): %$(LOADEREXT) - $(AS) -o $*$(OEXT) $< - -override ALLTARGET+=fpc_loaders -override CLEANTARGET+=fpc_loaders_clean -override SHOWINSTALLTARGET+=fpc_loaders_showinstall -override INSTALLTARGET+=fpc_loaders_install - -override LOADEROFILES:=$(addsuffix $(OEXT),$(LOADEROBJECTS)) - -fpc_loaders: $(LOADEROFILES) - -fpc_loaders_clean: - -$(DEL) $(LOADEROFILES) - -fpc_loaders_showinstall: - @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES)) - -fpc_loaders_install: - $(MKDIR) $(UNITINSTALLDIR) - $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR) - -##################################################################### -# Units -##################################################################### - -.PHONY: fpc_units - -override ALLTARGET+=fpc_units - -override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS)) -override INSTALLPPUFILES+=$(UNITPPUFILES) -override CLEANPPUFILES+=$(UNITPPUFILES) - -fpc_units: $(UNITPPUFILES) - -##################################################################### -# Resource strings -##################################################################### - -override RSTFILES=$(addsuffix $(RSTEXT),$(RSTOBJECTS)) - -override CLEANRSTFILES+=$(RSTFILES) - -##################################################################### -# General compile rules -##################################################################### - -.PHONY: fpc_packages fpc_all fpc_debug - -$(FPCMADE): $(ALLTARGET) - @$(ECHO) Compiled > $(FPCMADE) - -fpc_packages: $(COMPILEPACKAGES) - -fpc_all: fpc_packages $(FPCMADE) - -fpc_debug: - $(MAKE) all DEBUG=1 - -# General compile rules, available for both possible PASEXT - -.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp - -%$(PPUEXT): %.pp - $(COMPILER) $< $(REDIR) - $(EXECPASS) - -%$(PPUEXT): %.pas - $(COMPILER) $< $(REDIR) - $(EXECPASS) - -%$(EXEEXT): %.pp - $(COMPILER) $< $(REDIR) - $(EXECPASS) - -%$(EXEEXT): %.pas - $(COMPILER) $< $(REDIR) - $(EXECPASS) - -##################################################################### -# Library -##################################################################### - -.PHONY: fpc_smart fpc_shared - -# Default sharedlib units are all unit objects -ifndef SHAREDLIBUNITOBJECTS -SHAREDLIBUNITOBJECTS:=$(UNITOBJECTS) -endif - -fpc_smart: - $(MAKE) all SMARTLINK=1 - -fpc_shared: all -ifdef inlinux -ifndef LIBNAME - @$(ECHO) "LIBNAME not set" -else - $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBNAME) -endif -else - @$(ECHO) "Shared Libraries not supported" -endif - -##################################################################### -# Install rules -##################################################################### - -.PHONY: fpc_showinstall fpc_install - -ifdef EXTRAINSTALLUNITS -override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS)) -endif - -ifdef INSTALLPPUFILES -ifdef PPUFILES -ifdef inlinux -INSTALLPPULINKFILES:=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES)) -INSTALLPPULIBFILES:=$(shell $(PPUFILES) -L $(INSTALLPPUFILES)) -else -INSTALLPPULINKFILES:=$(shell $(PPUFILES) $(INSTALLPPUFILES)) -endif -else -INSTALLPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES))) -endif -endif - -fpc_showinstall: $(SHOWINSTALLTARGET) -ifdef INSTALLEXEFILES - @$(ECHO) -e $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES)) -endif -ifdef INSTALLPPUFILES - @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES)) -ifneq ($(INSTALLPPULINKFILES),) - @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES)) -endif -ifneq ($(INSTALLPPULIBFILES),) - @$(ECHO) -e $(addprefix "\n"$(LIBINSTALLDIR)/,$(INSTALLPPULIBFILES)) -endif -endif -ifdef EXTRAINSTALLFILES - @$(ECHO) -e $(addprefix "\n"$(DATAINSTALLDIR)/,$(EXTRAINSTALLFILES)) -endif - -fpc_install: $(INSTALLTARGET) -# Create UnitInstallFiles -ifdef INSTALLEXEFILES - $(MKDIR) $(BININSTALLDIR) -# Compress the exes if upx is defined -ifdef UPXPROG - -$(UPXPROG) $(INSTALLEXEFILES) -endif - $(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR) -endif -ifdef INSTALLPPUFILES - $(MKDIR) $(UNITINSTALLDIR) - $(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR) -ifneq ($(INSTALLPPULINKFILES),) - $(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR) -endif -ifneq ($(INSTALLPPULIBFILES),) - $(MKDIR) $(LIBINSTALLDIR) - $(INSTALL) $(INSTALLPPULIBFILES) $(LIBINSTALLDIR) -endif -endif -ifdef EXTRAINSTALLFILES - $(MKDIR) $(DATAINSTALLDIR) - $(INSTALL) $(EXTRAINSTALLFILES) $(DATAINSTALLDIR) -endif - -##################################################################### -# SourceInstall rules -##################################################################### - -.PHONY: fpc_sourceinstall - -ifndef SOURCETOPDIR -SOURCETOPDIR=$(BASEDIR) -endif - -fpc_sourceinstall: clean - $(MKDIR) $(SOURCEINSTALLDIR) - $(COPYTREE) $(SOURCETOPDIR) $(SOURCEINSTALLDIR) - -##################################################################### -# Zip -##################################################################### - -.PHONY: fpc_zipinstall - -# Create suffix to add -ifndef PACKAGESUFFIX -PACKAGESUFFIX=$(OS_TARGET) -ifeq ($(OS_TARGET),go32v2) -PACKAGESUFFIX=go32 -endif -ifeq ($(OS_TARGET),win32) -PACKAGESUFFIX=w32 -endif -endif - -# Temporary path to pack a file -ifndef PACKDIR -ifndef inlinux -PACKDIR=$(BASEDIR)/pack_tmp -else -PACKDIR=/tmp/fpc-pack -endif -endif - -# Maybe create default zipname from packagename -ifndef ZIPNAME -ifdef PACKAGENAME -ZIPNAME=$(PACKAGEPREFIX)$(PACKAGENAME)$(PACKAGESUFFIX) -endif -endif - -# Use tar by default under linux -ifndef USEZIP -ifdef inlinux -USETAR=1 -endif -endif - -fpc_zipinstall: -ifndef ZIPNAME - @$(ECHO) "Please specify ZIPNAME!" - @exit 1 -else - $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR) -ifdef USETAR - $(DEL) $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT) - cd $(PACKDIR) ; $(TARPROG) c$(TAROPT) --file $(DESTZIPDIR)/$(ZIPNAME)$(TAREXT) * ; cd $(BASEDIR) -else - $(DEL) $(DESTZIPDIR)/$(ZIPNAME)/$(ZIPEXT) - cd $(PACKDIR) ; $(ZIPPROG) -Dr $(ZIPOPT) $(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT) * ; cd $(BASEDIR) -endif - $(DELTREE) $(PACKDIR) -endif - -.PHONY: fpc_zipsourceinstall - -fpc_zipsourceinstall: - $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall PACKAGESUFFIX=src - -##################################################################### -# Clean rules -##################################################################### - -.PHONY: fpc_clean fpc_cleanall - -ifdef EXTRACLEANUNITS -override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS)) -endif - -ifdef CLEANPPUFILES -ifdef PPUFILES -CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES)) -else -CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES))) -endif -endif - -fpc_clean: $(CLEANTARGET) -ifdef CLEANEXEFILES - -$(DEL) $(CLEANEXEFILES) -endif -ifdef CLEANPPUFILES - -$(DEL) $(CLEANPPUFILES) -endif -ifneq ($(CLEANPPULINKFILES),) - -$(DEL) $(CLEANPPULINKFILES) -endif -ifdef CLEANRSTFILES - -$(DEL) $(CLEANRSTFILES) -endif -ifdef EXTRACLEANFILES - -$(DEL) $(EXTRACLEANFILES) -endif - -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTCMD) $(REDIRFILE) - -fpc_cleanall: $(CLEANTARGET) -ifdef CLEANEXEFILES - -$(DEL) $(CLEANEXEFILES) -endif - -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) - -$(DELTREE) *$(SMARTEXT) - -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTCMD) $(REDIRFILE) - -##################################################################### -# Info rules -##################################################################### - -.PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \ - fpc_dirinfo - -fpc_info: $(INFOTARGET) - -fpc_infocfg: - @$(ECHO) - @$(ECHO) == Configuration info == - @$(ECHO) - @$(ECHO) FPC....... $(FPC) - @$(ECHO) Version... $(FPC_VERSION) - @$(ECHO) CPU....... $(CPU_TARGET) - @$(ECHO) Source.... $(OS_SOURCE) - @$(ECHO) Target.... $(OS_TARGET) - @$(ECHO) - -fpc_infoobjects: - @$(ECHO) - @$(ECHO) == Object info == - @$(ECHO) - @$(ECHO) LoaderObjects..... $(LOADEROBJECTS) - @$(ECHO) UnitObjects....... $(UNITOBJECTS) - @$(ECHO) ExeObjects........ $(EXEOBJECTS) - @$(ECHO) - @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS) - @$(ECHO) ExtraCleanFiles... $(EXTRACLEANFILES) - @$(ECHO) - @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS) - @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES) - @$(ECHO) - -fpc_infoinstall: - @$(ECHO) - @$(ECHO) == Install info == - @$(ECHO) -ifdef DATE - @$(ECHO) DateStr.............. $(DATESTR) -endif -ifdef PACKAGEPREFIX - @$(ECHO) PackagePrefix........ $(PACKAGEPREFIX) -endif -ifdef PACKAGENAME - @$(ECHO) PackageName.......... $(PACKAGENAME) -endif - @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX) - @$(ECHO) - @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR) - @$(ECHO) BinInstallDir........ $(BININSTALLDIR) - @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR) - @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR) - @$(ECHO) SourceInstallDir..... $(SOURCEINSTALLDIR) - @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR) - @$(ECHO) DataInstallDir....... $(DATAINSTALLDIR) - @$(ECHO) - @$(ECHO) DestZipDir........... $(DESTZIPDIR) - @$(ECHO) ZipName.............. $(ZIPNAME) - @$(ECHO) - -##################################################################### -# Local Makefile -##################################################################### - -ifneq ($(wildcard fpcmake.loc),) -include fpcmake.loc -endif - -##################################################################### -# Users rules -##################################################################### - -vpath %$(PASEXT) $(INC) $(PROCINC) - -# -# Loaders -# - -prt0$(OEXT) : $(CPU_TARGET)/prt0.as - $(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as - -cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as - $(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as - - - - -# -# System Units (System, Objpas, Strings) -# - -$(SYSTEMPPU) : syslinux.pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS) - $(COMPILER) -Us -Sg syslinux.pp $(REDIR) - -objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMPPU) - $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp $(REDIR) - -strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\ - $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\ - $(SYSTEMPPU) - -# -# System Dependent Units -# - -linux$(PPUEXT) : linux.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \ - syscalls.inc systypes.inc sysconst.inc timezone.inc $(SYSTEMPPU) \ - linsysca.inc - - -# -# TP7 Compatible RTL Units -# - -dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \ - linux$(PPUEXT) $(SYSTEMPPU) - -crt$(PPUEXT) : crt.pp $(INC)/textrec.inc linux$(PPUEXT) $(SYSTEMPPU) - -objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMPPU) - -printer$(PPUEXT) : printer.pp $(INC)/textrec.inc linux$(PPUEXT) $(SYSTEMPPU) - -# -# Graph -# - -# -# Delphi Compatible Units -# - -sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \ - objpas$(PPUEXT) linux$(PPUEXT) errors$(PPUEXT) - $(COMPILER) -I$(OBJPASDIR) sysutils.pp $(REDIR) - -typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) - $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR) - -math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) - $(COMPILER) $(OBJPASDIR)/math.pp $(REDIR) - -gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) - $(COMPILER) $(OBJPASDIR)/gettext.pp $(REDIR) - -# -# Other system-independent RTL Units -# - -cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMPPU) - -mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMPPU) - -getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMPPU) - -heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMPPU) - $(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR) - -lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMPPU) - -# -# Other system-dependent RTL Units -# - -sockets$(PPUEXT) : sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \ - linux$(PPUEXT) $(SYSTEMPPU) - -errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMPPU) - -ipc$(PPUEXT) : ipc.pp linux$(PPUEXT) $(SYSTEMPPU) diff --git a/rtl/bsd/Makefile.fpc b/rtl/bsd/Makefile.fpc deleted file mode 100644 index c7f188eca0..0000000000 --- a/rtl/bsd/Makefile.fpc +++ /dev/null @@ -1,181 +0,0 @@ -# -# Makefile.fpc for Free Pascal FreeBSD RTL -# - -[targets] -loaders=prt0 cprt0 -units=$(SYSTEMUNIT) objpas strings \ - linux initc \ - dos crt objects printer \ - sysutils typinfo math \ - cpu mmx getopts heaptrc lineinfo \ - errors sockets gpm ipc -rst=math - -[require] -rtl=0 - -[defaults] -defaulttarget=linux -defaultcpu=i386 - -[install] -unitsubdir=rtl - -[dirs] -fpcdir=. -incdir=$(INC) $(PROCINC) -targetdir=. - -[libs] -libname=libfprtl.so -libversion=1.0 -libunits=$(SYSTEMUNIT) objpas strings \ - linux \ - dos crt objects printer \ - sysutils typinfo math \ - cpu mmx getopts heaptrc \ - errors sockets ipc - - -[presettings] -RTL=.. -INC=$(RTL)/inc -PROCINC=$(RTL)/$(CPU_TARGET) - -UNITPREFIX=rtl - -# Paths -OBJPASDIR=$(RTL)/objpas -GRAPHDIR=$(INC)/graph - -# Define Go32v2 Units -SYSTEMUNIT=syslinux - -# Use new graph unit ? -# NEWGRAPH=YES -# Use LibGGI ? -# Use -# -ifndef USELIBGGI -USELIBGGI=NO -endif - - -[postsettings] -SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT)) - -# Get the system independent include file names. -# This will set the following variables : -# SYSINCNAMES -include $(INC)/makefile.inc -SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES)) - -# Get the processor dependent include file names. -# This will set the following variables : -# CPUINCNAMES -include $(PROCINC)/makefile.cpu -SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES)) - -# Put system unit dependencies together. -SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) - - -[rules] -vpath %$(PASEXT) $(INC) $(PROCINC) - -# -# Loaders -# - -prt0$(OEXT) : $(CPU_TARGET)/prt0.as - $(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as - -cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as - $(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as - - - - -# -# System Units (System, Objpas, Strings) -# - -$(SYSTEMPPU) : syslinux.pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS) - $(COMPILER) -Us -Sg syslinux.pp $(REDIR) - -objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMPPU) - $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp $(REDIR) - -strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\ - $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\ - $(SYSTEMPPU) - -# -# System Dependent Units -# - -linux$(PPUEXT) : linux.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \ - syscalls.inc systypes.inc sysconst.inc timezone.inc $(SYSTEMPPU) \ - linsysca.inc - - -# -# TP7 Compatible RTL Units -# - -dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \ - linux$(PPUEXT) $(SYSTEMPPU) - -crt$(PPUEXT) : crt.pp $(INC)/textrec.inc linux$(PPUEXT) $(SYSTEMPPU) - -objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMPPU) - -printer$(PPUEXT) : printer.pp $(INC)/textrec.inc linux$(PPUEXT) $(SYSTEMPPU) - -# -# Graph -# - -# -# Delphi Compatible Units -# - -sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \ - objpas$(PPUEXT) linux$(PPUEXT) errors$(PPUEXT) - $(COMPILER) -I$(OBJPASDIR) sysutils.pp $(REDIR) - -typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT) - $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR) - -math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT) - $(COMPILER) $(OBJPASDIR)/math.pp $(REDIR) - -gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT) - $(COMPILER) $(OBJPASDIR)/gettext.pp $(REDIR) - -# -# Other system-independent RTL Units -# - -cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMPPU) - -mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMPPU) - -getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMPPU) - -heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMPPU) - $(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR) - -lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMPPU) - -# -# Other system-dependent RTL Units -# - -sockets$(PPUEXT) : sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \ - linux$(PPUEXT) $(SYSTEMPPU) - -errors$(PPUEXT) : errors.pp strings$(PPUEXT) $(SYSTEMPPU) - -ipc$(PPUEXT) : ipc.pp linux$(PPUEXT) $(SYSTEMPPU) diff --git a/rtl/bsd/bsdport.txt b/rtl/bsd/bsdport.txt deleted file mode 100644 index f65e8a0d38..0000000000 --- a/rtl/bsd/bsdport.txt +++ /dev/null @@ -1,224 +0,0 @@ -$Id$ - -Comments, mistakes and suggestions to Marco@freepascal.org - -1 FreeBSD status and notes. (kept on CVS because I work on several places) ------------------------------------------------------------------------------ - -Please read these before running a FreeBSD snapshot. - -- Supported are FreeBSD 3.x (3.2, 3.4 and 4.0-release (quickly) tested. I never - tested on 3.0). NON-ELF (2.x) versions are not supported. - -- This is alpha software. I didn't have data-loss using it, but you - use this on your own responsability. Use a scratch, or well backup'ed - system. - -- The FreeBSD/FPC port is now in its second stage. Some more stuff then what - is required to recompile is now implemented (Clone, Sockets, Signals). - Plans to create an (Alpha) release distribution are being made. - (linking to external libs worked in the 16 april version already, even - though the bsdport.txt of that date said it didn't) - -- IMPORTANT: - !!! An explicite warning: Not all procedures and structures in Linux are - checked, so even if they are not commented out, they can be not implemented!!! - This specially applies to linux specific stuff. In case of doubt, use a - scratch system, view the source, or mail the maintainer. - -- The pre alpha version's READDIR problem is fixed with a "hack", which - means that searchpath (-Fx) and FindFirst/FindNext are more or less - working. - I don't know how good that hack is,I hope to replace it later this week - by a port of freebsd's libc opendir/readdir/closedir/telldir/seekdir code, - just to make sure.( Libc does some complex scanning and sorting for - duplicate names, but I don't know if that is something archaic or not. - Probably related to hardlinks, so don't use findfirst in /dev for now) - -These packages have more or less been tested with ncurses: -- RTL, (NOT the Crt unit. Use ncrt for now!) -- compiler can rebuild (see below) -- packages/inet, -- packages/zlib -- packages/x11 -- fcl/ -- ncurses/panel. -- (reported by somebody else) XForms. -- fpgui's "hello world" demo (the other ones needed a FPC 1.1 compiler, I - only tested 1.0.1 with FreeBSD) - -2 Syscalls. ------------ - -The bulk of the linux syscalls are implemented. - -Some that aren't implemented: - -NI = not implemented yet -req = required for compiler -noreq? = not required, but not checked. -Ever? (y/n) - -syscall status Ever? comment ------------------------------------------------------------------------- -Readdir I req implemented from scratch, working. (this - call doesn't exist on FreeBSD and FindFirst is - based on it) - -ioperm NI noreq n IO via port access impossible under FreeBSD - (so: no ports unit, port[] support) - (got some reports that port access is possible under - FreeBSD. Probably the same way it slipped into Linux; - dos emulation) - -ipc NI ? The IPC is System V thingy, and only supported - under FreeBSD with certain kernel parameters. - -Clone() I noreq Not implemented as syscall, based on linuxthread - assembler routine. Untested. Somebody has a good - test program? Or that tests the FCL threading - routines based on it? - -sysinfo NI noreq Not supported under BSD, not even by emulator -uname NI noreq " " " " " " " " - (procedures based on this call are also commented - (get* procs)) - -signal I noreq A *lot* of emulation code. -alarm NI noreq? Could be possible to port. (crt.delay?) -pause NI noreq? Also possible I think. Uses process information - in linux-emu, that is why I didn't port directly. - -3 How to build a FreeBSD compiler/RTL ? ------------------------------------------------------------------------------ - -(You'll probably need CVS sources dated after April 16th for basic support, or -after the major updates on 10 september for signals and sockets.) - -To rebuild the compiler, you need a starting compiler. -- Start compiler on other OS? (tested is Linux) -> check 3a -- Already a 1.0.x startcompiler on FreeBSD (e.g. from a snapshot) -> 3b is much - easier. - -3a How to build a FreeBSD system starting on Linux or using the Linux emu of - FreeBSD? (Bootstrapping) - -The FreeBSD port is experimental atm, though valid native binaries can be -obtained. - -The procedure here is verbose, and for the most akward case. -If you have linux support on on your FreeBSD machine, or operate on NFS or Samba -share (so that copying and using the sources in two systems is easier) -some steps can be omitted or simplified. Just play with it. - -STEP A: create the RTL assembler files. - -1. Copy all linux files to a new directory. (here called BSDBUILD), and -2. Copy all bsd files over them. -2b. Run fpcmake if you can. This will eliminate problems with Makefile being - out of sync or containing dos lfns. -3. Execute make OPT='-Tlinux -dBSD -a -s -OG3p3' (with any i386 FPC - compiler) in directory BSDBUILD. This failed with some go32v2 versions - (which wanted to assemble anyway), but worked with several win32 and - linux' snapshots. On go32v2 you can try to add -Aas. - -You now have .ppu's and .s 's for the RTL hopefully. Don't forget - i386/prt0.as (which is in fact a .s file)! - -STEP B: Create the compiler assembler (.s) sources; - -4. Compile with - ./bsdcompile -Fu/full_path_to_BSDBUILD -a -s - -(steps 5 and 6 are only needed for the very first FreeBSD snapshot, which -is no longer available) - -STEP C: Building the binary - -7. Copy all necessary files - (- all *.s *.ppu files, both from compiler and BSDBUILD dir, - - compiler/link.res and - - compiler/ppas.sh - - Cut and paste of the DO_S script at the end of this document to file - - rtl/bsd/i386/*.as files. - ) - to a directory on the BSD machine. -8a. Change to the directory on the BSD machine, and run the script DO_S to - assemble all .s files to .o files. -8b. Assemble the stub with as prt0.as -o prt0.o -9. Adapt link.res so that all paths are right. - (remove all paths in front of all .o files, remove the -l lines and their - parentheses) -10a. Edit ppas.sh, and keep only #!/bin/sh and the line starting with ld. - b Remove any -l=ld-linux.so.1 (or similar) option from the ld line. - c run ppas.sh to build the compiler - -11. Have fun :-) The compiler is called "pp" - -12. If you have a heavy machine (pentium 100 and 32MB+) execute 3b to make - sure everything is up to date. - ------------- - -3b How to update FPC compiler on FreeBSD from fresh CVS sources with a snapshot -installed. - -(To create a compiler for the 1.0 branch, you need a 1.0.x compiler, and to -create a 1.1 (development branch) compiler you need a 1.1.x snapshot. -You can check the version of your snapshot with ppc386 -i) - -(assuming ppc386 in the PATH, and a rtl/ and compiler/ directory obtained - from snapshot zips, with non mangled makefiles) - -1a Rename the rtl/linux to something else. (here: rtl/linuxorg) -1b create a new rtl/linux dir -1c copy rtl/linuxorg/* to rtl/linux -1d copy rtl/bsd/* to rtl/linux RECURSIVELY -1e (optionally) Run fpcmake if you have it installed. This is a good - habit! -2 switch to compiler/ -3 gmake cycle OPT='-OG3p3 -dBSD' will generate a new compiler. - -Be patient! FreeBSD has slower disk-io than Linux :-) - -Rest is like Linux, except that I strongly advise to create the fpc -directory always in /usr/local/lib/ instead of /usr/lib. -This habit is still fashionable on FreeBSD. - -The same with other packages. Like Linux :-) - -4 Linking to external libraries ------------------------------------------------------------------------------ - -Same as on Linux, except use the - - ------------------- -The DO_S script. (C) El Znorro ------------------- -#!/bin/sh - -for i in *.s; do - flup=`basename $i .s` - as $i -o $flup.o - echo $i - echo $flup - done - -{ -$Log$ -Revision 1.3 2000-09-11 14:38:09 marco - * 14 april version killed, and replaced by newer fixes branch version - -Revision 1.1.2.1 2000/09/10 16:12:14 marco -Initial signals, sockets and clone - -Revision 1.1 2000/07/13 06:30:32 michael -+ Initial import - -Revision 1.3 2000/04/16 16:11:33 marco - * Severe updates for now *working* status - -Revision 1.2 2000/04/10 15:46:51 marco - * worked all day. probably a lot changed -} diff --git a/rtl/bsd/bsdsock.inc b/rtl/bsd/bsdsock.inc deleted file mode 100644 index 332cc20cdd..0000000000 --- a/rtl/bsd/bsdsock.inc +++ /dev/null @@ -1,176 +0,0 @@ -{****************************************************************************** - Basic Socket Functions -******************************************************************************} - -Function socket(Domain,SocketType,Protocol:Longint):Longint; -begin - Socket:=Do_Syscall(syscall_nr_socket,Domain,SocketType,Protocol); -end; - -Function Send(Sock:Longint;Var Addr;AddrLen,Flags:Longint):Longint; -begin - Send:=do_syscall(syscall_nr_sendto,Sock,Longint(@Addr),AddrLen,Flags,0,0); -end; - -Function Recv(Sock:Longint;Var Addr;AddrLen,Flags:Longint):Longint; -begin - Recv:=do_syscall(syscall_nr_Recvfrom,Sock,Longint(@Addr),AddrLen,Flags,0,0); -end; - -Function Bind(Sock:Longint;Var Addr;AddrLen:Longint):Boolean; -begin - Bind:=(do_syscall(syscall_nr_Bind,Sock,Longint(@Addr),AddrLen)=0); -end; - -Function Listen(Sock,MaxConnect:Longint):Boolean; -begin - Listen:=(do_syscall(syscall_nr_Listen,Sock,MaxConnect,0)=0); -end; - -Function Accept(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint; -begin - Accept:=do_syscall(syscall_nr_accept,Sock,longint(@Addr),longint(@AddrLen)); - If Accept<0 Then - Accept:=-1; -end; - -Function Connect(Sock:Longint;Var Addr;Addrlen:Longint): boolean; - -begin - Connect:=do_syscall(syscall_nr_connect,Sock,longint(@Addr),AddrLen)=0; -end; - - -Function Shutdown(Sock:Longint;How:Longint):Longint; -begin - ShutDown:=do_syscall(syscall_nr_shutdown,Sock,How); -end; - - -Function GetSocketName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint; -begin - GetSocketName:=do_syscall(syscall_nr_GetSockName,Sock,longint(@Addr),longint(@AddrLen)); -end; - - - -Function GetPeerName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint; -begin - GetPeerName:=do_syscall(syscall_nr_GetPeerName,Sock,longint(@Addr),longint(@AddrLen)); -end; - - - -Function SetSocketOptions(Sock,Level,OptName:Longint;Var OptVal;optlen:longint):Longint; -begin - SetSocketOptions:=do_syscall(syscall_nr_SetSockOpt,Sock,Level,OptName,Longint(@OptVal),OptLen,0); -end; - - - -Function GetSocketOptions(Sock,Level,OptName:Longint;Var OptVal;Var optlen:longint):Longint; -begin - GetSocketOptions:=do_syscall(syscall_nr_GetSockOpt,Sock,Level,OptName,Longint(@OptVal),OptLen,0); -end; - - - -Function SocketPair(Domain,SocketType,Protocol:Longint;var Pair:TSockArray):Longint; -begin - SocketPair:=do_syscall(syscall_nr_SocketPair,Domain,SocketType,Protocol,longint(@Pair),0,0); -end; - -{****************************************************************************** - UnixSock -******************************************************************************} - -Procedure Str2UnixSockAddr(const addr:string;var t:TUnixSockAddr;var len:longint); -begin - Move(Addr[1],t.Path,length(Addr)); - t.Family:=AF_UNIX; - t.Path[length(Addr)]:=#0; - Len:=Length(Addr)+3; -end; - - -Function Bind(Sock:longint;const addr:string):boolean; -var - UnixAddr : TUnixSockAddr; - AddrLen : longint; -begin - Str2UnixSockAddr(addr,UnixAddr,AddrLen); - Bind(Sock,UnixAddr,AddrLen); - Bind:=(SocketError=0); -end; - - - -Function DoAccept(Sock:longint;var addr:string):longint; -var - UnixAddr : TUnixSockAddr; - AddrLen : longint; -begin - AddrLen:=length(addr)+3; - DoAccept:=Accept(Sock,UnixAddr,AddrLen); - Move(UnixAddr.Path,Addr[1],AddrLen); - SetLength(Addr,AddrLen); -end; - - - -Function DoConnect(Sock:longint;const addr:string):Boolean; -var - UnixAddr : TUnixSockAddr; - AddrLen : longint; -begin - Str2UnixSockAddr(addr,UnixAddr,AddrLen); - DoConnect:=Connect(Sock,UnixAddr,AddrLen); -end; - -Function Accept(Sock:longint;var addr:string;var SockIn,SockOut:text):Boolean; -var - s : longint; -begin - S:=DoAccept(Sock,addr); - if S>0 then - begin - Sock2Text(S,SockIn,SockOut); - Accept:=true; - end - else - Accept:=false; -end; - - - -Function Accept(Sock:longint;var addr:string;var SockIn,SockOut:File):Boolean; -var - s : longint; -begin - S:=DoAccept(Sock,addr); - if S>0 then - begin - Sock2File(S,SockIn,SockOut); - Accept:=true; - end - else - Accept:=false; -end; - - - -Function Connect(Sock:longint;const addr:string;var SockIn,SockOut:text):Boolean; -begin - Connect:=DoConnect(Sock,addr); - If Connect then - Sock2Text(Sock,SockIn,SockOut); -end; - - - -Function Connect(Sock:longint;const addr:string;var SockIn,SockOut:file):Boolean; -begin - Connect:=DoConnect(Sock,addr); - if Connect then - Sock2File(Sock,SockIn,SockOut); -end; diff --git a/rtl/bsd/i386/cprt0.as b/rtl/bsd/i386/cprt0.as deleted file mode 100644 index 23de4973cb..0000000000 --- a/rtl/bsd/i386/cprt0.as +++ /dev/null @@ -1,141 +0,0 @@ -# -# $Id$ -# This file is part of the Free Pascal run time library. -# Copyright (c) 1999-2000 by Marco van de Voort, Michael Van Canneyt -# and Peter Vreman -# members of the Free Pascal development team. -# -# See the file COPYING.FPC, included in this distribution, -# for details about the copyright. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY;without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -#**********************************************************************} -# -# FreeBSD ELF startup code for Free Pascal for dynamical linking to libc. -# - - .file "cprt0.as" - .version "01.01" -gcc2_compiled.: -.globl __progname -.section .rodata -.LC0: - .ascii "\0" -.data - .p2align 2 - .type __progname,@object - .size __progname,4 -__progname: - .long .LC0 - .align 4 -___fpucw: - .long 0x1332 - - .globl ___fpc_brk_addr /* heap management */ - .type ___fpc_brk_addr,@object - .size ___fpc_brk_addr,4 -___fpc_brk_addr: - .long 0 - - -.text - .p2align 2 -.globl _start - .type _start,@function -_start: - pushl %ebp - movl %esp,%ebp - pushl %edi - pushl %esi - pushl %ebx -#APP - movl %edx,%edx -#NO_APP - leal 8(%ebp),%edi - movl %edi,U_SYSLINUX_ARGV - mov -4(%edi),%eax - movl %eax,U_SYSLINUX_ARGC - movl 4(%ebp),%ebx - leal 12(%ebp,%ebx,4),%esi - movl %esi,U_SYSLINUX_ENVP - movl %esi,environ - testl %ebx,%ebx - jle .L2 - movl 8(%ebp),%eax - testl %eax,%eax - je .L2 - movl %eax,__progname - cmpb $0,(%eax) - je .L2 - .p2align 2,0x90 -.L6: - cmpb $47,(%eax) - jne .L5 - leal 1(%eax),%ecx - movl %ecx,__progname -.L5: - incl %eax - cmpb $0,(%eax) - jne .L6 -.L2: - movl $_DYNAMIC,%eax - testl %eax,%eax - je .L9 - pushl %edx - call atexit - addl $4,%esp -.L9: - pushl $_fini - call atexit - call _init -# pushl %esi -# pushl %edi -# pushl %ebx -# call main -# pushl %eax -# call exit - - - finit /* initialize fpu */ - fwait - fldcw ___fpucw - - xorl %ebp,%ebp - - call main - pushl %eax - jmp _haltproc - - .p2align 2,0x90 - -.globl _haltproc -.type _haltproc,@function - -_haltproc: - mov $1,%eax - movzwl U_SYSLINUX_EXITCODE,%ebx - pushl %ebx - call .Lactualsyscall - addl $4,%esp - jmp _haltproc - -.Lactualsyscall: - int $0x80 - jb .LErrorcode - xor %ebx,%ebx - ret -.LErrorcode: - mov %eax,%ebx - mov $-1,%eax - ret - .p2align 2,0x90 -.Lfe1: - - - .size _start,.Lfe1-_start - .comm environ,4,4 - .weak _DYNAMIC - .ident "GCC: (GNU) 2.7.2.1" diff --git a/rtl/bsd/i386/prt0.as b/rtl/bsd/i386/prt0.as deleted file mode 100644 index 9c0bcb218a..0000000000 --- a/rtl/bsd/i386/prt0.as +++ /dev/null @@ -1,124 +0,0 @@ -# -# $Id$ -# This file is part of the Free Pascal run time library. -# Copyright (c) 1999-2000 by Marco van de Voort, Michael Van Canneyt -# and Peter Vreman -# members of the Free Pascal development team. -# -# See the file COPYING.FPC, included in this distribution, -# for details about the copyright. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY;without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -#**********************************************************************} -# -# FreeBSD standard (static) ELF startup code for Free Pascal -# - - .file "prt1.as" - .version "01.01" -gcc2_compiled.: -.globl __progname -.section .rodata -.LC0: - .ascii "\0" -.data - .p2align 2 - .type __progname,@object - .size __progname,4 -__progname: - .long .LC0 - .align 4 -___fpucw: - .long 0x1332 - - .globl ___fpc_brk_addr /* heap management */ - .type ___fpc_brk_addr,@object - .size ___fpc_brk_addr,4 -___fpc_brk_addr: - .long 0 - - -.text - .p2align 2 -.globl _start - .type _start,@function -_start: - pushl %ebp - movl %esp,%ebp - pushl %edi - pushl %esi - pushl %ebx -#APP - movl %edx,%edx -#NO_APP - leal 8(%ebp),%edi - movl %edi,U_SYSLINUX_ARGV - mov -4(%edi),%eax - movl %eax,U_SYSLINUX_ARGC - movl 4(%ebp),%ebx - leal 12(%ebp,%ebx,4),%esi - movl %esi,U_SYSLINUX_ENVP - movl %esi,environ - testl %ebx,%ebx - jle .L2 - movl 8(%ebp),%eax - testl %eax,%eax - je .L2 - movl %eax,__progname - cmpb $0,(%eax) - je .L2 - .p2align 2,0x90 -.L6: - cmpb $47,(%eax) - jne .L5 - leal 1(%eax),%ecx - movl %ecx,__progname -.L5: - incl %eax - cmpb $0,(%eax) - jne .L6 -.L2: -.L9: - -# copied from linux - - finit /* initialize fpu */ - fwait - fldcw ___fpucw - - xorl %ebp,%ebp - - call main - pushl %eax - jmp _haltproc - -.p2align 2,0x90 -.globl _haltproc -.type _haltproc,@function - -_haltproc: - mov $1,%eax - movzwl U_SYSLINUX_EXITCODE,%ebx - pushl %ebx - call _actualsyscall - addl $4,%esp - jmp _haltproc - -_actualsyscall: - int $0x80 - jb .LErrorcode - xor %ebx,%ebx - ret -.LErrorcode: - mov %eax,%ebx - mov $-1,%eax - ret - .p2align 2,0x90 -.Lfe1: - .size _start,.Lfe1-_start - .comm environ,4,4 - .weak _DYNAMIC - .ident "GCC: (GNU) 2.7.2.1" diff --git a/rtl/bsd/signal.inc b/rtl/bsd/signal.inc deleted file mode 100644 index 2f6751a182..0000000000 --- a/rtl/bsd/signal.inc +++ /dev/null @@ -1,167 +0,0 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Jonas Maebe, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} - - -Const { For sending a signal } - - SA_NOCLDSTOP = 8; - SA_ONSTACK = $001; { take signal on signal stack } - SA_RESTART = $002; { restart system call on signal return } - SA_RESETHAND = $004; { reset to SIG_DFL when taking signal } - SA_NODEFER = $010; { don't mask the signal we're delivering } - SA_NOCLDWAIT = $020; { don't keep zombies around } - SA_SIGINFO = $040; { signal handler with SA_SIGINFO args } - SA_USERTRAMP = $100; { SUNOS compat: Do not bounce off kernel's sigtramp } - - SIG_BLOCK = 1; - SIG_UNBLOCK = 2; - SIG_SETMASK = 3; - -{BSD Checked} - SIG_DFL = 0 ; - SIG_IGN = 1 ; - SIG_ERR = -1 ; - - SIGHUP = 1; - SIGINT = 2; - SIGQUIT = 3; - SIGILL = 4; - SIGTRAP = 5; - SIGABRT = 6; - SIGIOT = 6; - SIGEMT = 7; - SIGFPE = 8; - SIGKILL = 9; - SIGBUS = 10; - SIGSEGV = 11; - SIGSYS = 12; - SIGPIPE = 13; - SIGALRM = 14; - SIGTERM = 15; - SIGURG = 16; - SIGSTOP = 17; - SIGTSTP = 18; - SIGCONT = 19; - SIGCHLD = 20; - SIGTTIN = 21; - SIGTTOU = 22; - SIGIO = 23; - SIGXCPU = 24; - SIGXFSZ = 25; - SIGVTALRM = 26; - SIGPROF = 27; - SIGWINCH = 28; - SIGINFO = 29; - SIGUSR1 = 30; - SIGUSR2 = 31; - - -{$packrecords C} -const - SI_PAD_SIZE = ((128/sizeof(longint)) - 3); - -{ - * The sequence of the fields/registers in struct sigcontext should match - * those in mcontext_t. - } - -type sigset_t = cardinal; - - PSigContextRec = ^SigContextRec; - SigContextRec = record - sc_mask : sigset_t; { signal mask to restore } - sc_onstack : longint; { sigstack state to restore } - - sc_gs : longint; { machine state (struct trapframe): } - sc_fs : longint; - sc_es : longint; - sc_ds : longint; - sc_edi : longint; - sc_esi : longint; - sc_ebp : longint; - sc_isp : longint; - sc_ebx : longint; - sc_edx : longint; - sc_ecx : longint; - sc_eax : longint; - sc_trapno : longint; - sc_err : longint; - sc_eip : longint; - sc_cs : longint; - sc_efl : longint; - sc_esp : longint; - sc_ss : longint; - { - * XXX FPU state is 27 * 4 bytes h/w, 1 * 4 bytes s/w (probably not - * needed here), or that + 16 * 4 bytes for emulators (probably all - * needed here). The "spare" bytes are mostly not spare. - } - en_cw : cardinal; { control word (16bits used) } - en_sw : cardinal; { status word (16bits) } - en_tw : cardinal; { tag word (16bits) } - en_fip : cardinal; { floating point instruction pointer } - en_fcs : word; { floating code segment selector } - en_opcode : word; { opcode last executed (11 bits ) } - en_foo : cardinal; { floating operand offset } - en_fos : cardinal; { floating operand segment selector } - fpr_acc : array[0..79] of char; - fpr_ex_sw : cardinal; - fpr_pad : array[0..63] of char; - end; - - SignalHandler = Procedure(Sig : Longint);cdecl; - PSignalHandler = ^SignalHandler; - SignalRestorer = Procedure;cdecl; - PSignalRestorer = ^SignalRestorer; - TSigAction = procedure(Sig: Longint; SigContext: SigContextRec;someptr:pointer);cdecl; - - Sigset=sigset_t; - PSigSet = ^SigSet; - - SigActionRec = packed record - Handler : record - case byte of - 0: (Sh: SignalHandler); - 1: (Sa: TSigAction); - end; - Sa_Flags : Longint; - Sa_Mask : SigSet; - end; - PSigActionRec = ^SigActionRec; - -{ - Change action of process upon receipt of a signal. - Signum specifies the signal (all except SigKill and SigStop). - If Act is non-nil, it is used to specify the new action. - If OldAct is non-nil the previous action is saved there. -} - - -{ - $Log$ - Revision 1.2 2000-09-11 14:38:10 marco - * 14 april version killed, and replaced by newer fixes branch version - - Revision 1.1.2.1 2000/09/10 16:18:41 marco - initial version - - Revision 1.2 2000/03/31 23:11:23 pierre - * TSigAction Context param is the full record not a pointer - - Revision 1.1 2000/03/31 13:24:28 jonas - * signal handling using sigaction when compiled with -dnewsignal - (allows multiple signals to be received in one run) - -} diff --git a/rtl/bsd/syscalls.inc b/rtl/bsd/syscalls.inc deleted file mode 100644 index 126ae7d3b6..0000000000 --- a/rtl/bsd/syscalls.inc +++ /dev/null @@ -1,511 +0,0 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Michael Van Canneyt, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} - -{BSD version of the syscalls required to implement SysLinux.} - -{No debugging for syslinux include !} -{$IFDEF SYS_LINUX} - {$UNDEF SYSCALL_DEBUG} -{$ENDIF SYS_LINUX} - -{***************************************************************************** - --- Main:The System Call Self --- -*****************************************************************************} - -{ The system designed for Linux can't be used for FreeBSD so easily, since - FreeBSD pushes arguments, instead of loading them to registers. - -For now I do them in assembler, which makes it easier to test them (copy and -paste to and AS source). Ultimately I hope to design something like this} - -{actualsyscall: - _actualsyscall : int $0x80 - jb someerror - ret - someerror: storeerrorsomewhere - ret -} - -{ -procedure actualsyscall; cdecl; EXTERNAL NAME '_actualsyscall'; -} - -procedure actualsyscall; assembler; - asm - int $0x80 - jb .LErrorcode - xor %ebx,%ebx - ret -.LErrorcode: - mov %eax,%ebx - mov $-1,%eax - end; - - -function Do_SysCall(sysnr:LONGINT):longint; assembler; - -asm - movl sysnr,%eax - call actualsyscall - movw %bx,Errno -end; - -function Do_SysCall(sysnr,param1:longint):longint; assembler; - - asm - movl sysnr,%eax - pushl Param1 - call actualsyscall - addl $4,%esp - movw %bx,Errno - end; - -function Do_SysCall(sysnr,param1:integer):longint; assembler; - - asm - movl sysnr,%eax - pushw Param1 - call actualsyscall - addw $2,%esp - movw %bx,Errno - end; - - -function Do_SysCall(sysnr,param1,param2:LONGINT):longint; assembler; - - asm - movl sysnr,%eax - pushl param2 - pushl Param1 - call actualsyscall - addl $8,%esp - movw %bx,Errno - end; - -function Do_SysCall(sysnr,param1,param2,param3:LONGINT):longint; assembler; - - asm - movl sysnr,%eax - pushl param3 - pushl param2 - pushl Param1 - call actualsyscall - addl $12,%esp - movw %bx,Errno - end; - -function Do_SysCall(sysnr,param1,param2,param3,param4:LONGINT):longint; assembler; - -asm - movl sysnr,%eax - pushl param4 - pushl param3 - pushl param2 - pushl Param1 - call actualsyscall - addl $16,%esp - movw %bx,Errno -end; - - -function Do_SysCall(sysnr,param1,param2,param3,param4,param5:LONGINT):longint; assembler; - - asm - movl sysnr,%eax - pushl param5 - pushl param4 - pushl param3 - pushl param2 - pushl Param1 - call actualsyscall - addl $20,%esp - movw %bx,Errno - end; - -function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6:LONGINT):longint; assembler; - -asm - movl sysnr,%eax - pushl param6 - pushl param5 - pushl param4 - pushl param3 - pushl param2 - pushl Param1 - call actualsyscall - addl $24,%esp - movw %bx,Errno -end; - - -function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6,param7:LONGINT):longint; assembler; - -asm - movl sysnr,%eax - pushl param7 - pushl param6 - pushl param5 - pushl param4 - pushl param3 - pushl param2 - pushl Param1 - call actualsyscall - addl $28,%esp - movw %bx,Errno -end; - -Function Sys_Time:longint; - -VAR tv : timeval; - tz : timezone; - retval : longint; - -begin - Retval:=do_syscall(116,longint(@tv),longint(@tz)); - If retval=-1 then - sys_time:=-1 - else - sys_time:=tv.sec; -end; - -{***************************************************************************** - --- File:File handling related calls --- -*****************************************************************************} - - -Function Sys_Open(f:pchar;flags:longint;mode:integer):longint; - -Begin - sys_open:=do_syscall(syscall_nr_open,longint(f),flags,mode); -End; - -Function Sys_Close(f:longint):longint; - -begin - sys_close:=do_syscall(syscall_nr_close,f); -end; - -{ -Function Sys_Lseek(F:longint;Off:longint;Whence:longint):longint; - -var returnvalue64 : array[0..1] of longint; - -begin - {Lseek's offset is 64-bit, the highword is the 0} - do_syscall(syscall_nr_lseek,longint(@returnvalue64),F,Off,0,Whence); - sys_lseek:=returnvalue64[0]; -end; - -} - -Function Sys_Lseek(F:longint;Off:longint;Whence:longint):longint; assembler; - -{this one is special for the return value being 64-bit..} - - asm - pushl Whence - pushl $0 // high dword - pushl Off - pushl $0 - pushl F - pushl $0 // Your guess is as good as mine. - pushl $0xc7 // Actual lseek syscall number. - movl $0xc6,%eax - call actualsyscall - addl $28,%esp - mov %ebx,Errno - end; - -Function Sys_Read(f:longint;buffer:pchar;count:longint):longint; - -begin - sys_read:=do_syscall(syscall_nr_read,F,longint(buffer),count); -end; - -Function Sys_Write(f:longint;buffer:pchar;count:longint):longint; - -begin - sys_write:=do_syscall(syscall_nr_write,F,longint(buffer),count); -end; - -Function Sys_Unlink(Filename:pchar):longint; - -begin - sys_unlink:=do_syscall(syscall_nr_unlink,longint(Filename)); -end; - -Function Sys_Rename(Oldname,Newname:pchar):longint; - -begin - sys_rename:=do_syscall(syscall_nr_rename,longint(oldname),longint(newname)); -end; - -Function Sys_Stat(Filename:pchar;var Buffer: stat):longint; -{ - We need this for getcwd -} - -begin - sys_stat:=do_syscall(syscall_nr_stat,longint(filename),longint(@buffer)); -end; - -Function Sys_Symlink(oldname,newname:pchar):longint; -{ - We need this for erase -} - -begin - sys_symlink:=do_syscall(syscall_nr_symlink,longint(oldname),longint(newname)); -end; - - -Function Sys_ReadLink(name,linkname:pchar;maxlen:longint):longint; - -begin - sys_readlink:=do_syscall(syscall_nr_readlink, longint(name),longint(linkname),maxlen); -end; - - - -{***************************************************************************** - --- Directory:Directory related calls --- -*****************************************************************************} - -Function Sys_Chdir(Filename:pchar):longint; - -begin - sys_chdir:=do_syscall(syscall_nr_chdir,longint(filename)); -end; - -Function Sys_Mkdir(Filename:pchar;mode:longint):longint; - -begin {Mode is 16-bit on F-BSD} - sys_mkdir:=do_syscall(syscall_nr_mkdir,longint(filename),mode shl 8); -end; - -Function Sys_Rmdir(Filename:pchar):longint; - -begin - sys_rmdir:=do_syscall(syscall_nr_rmdir,longint(filename)); -end; - - -const DIRBLKSIZ=1024; - - -{ we need this for getcwd, NOT touched for BSD version } -Function OpenDir(f:pchar):pdir; - -var - fd:longint; - st:stat; - ptr:pdir; -begin - opendir:=nil; - if sys_stat(f,st)<0 then - exit; -{ Is it a dir ? } - if not((st.mode and $f000)=$4000)then - begin - errno:=sys_enotdir; - exit - end; -{ Open it} - fd:=sys_open(f,OPEN_RDONLY,438); - if fd<0 then - exit; - new(ptr); - if ptr=nil then - exit; - Getmem(ptr^.buf,2*DIRBLKSIZ); - if ptr^.buf=nil then - exit; - ptr^.fd:=fd; - ptr^.loc:=-1; - ptr^.rewind:=longint(ptr^.buf); - ptr^.size:=0; -// ptr^.dd_max:=sizeof(ptr^.buf^); - opendir:=ptr; -end; - -function CloseDir(p:pdir):integer; -begin - closedir:=sys_close(p^.fd); - Freemem(p^.buf); - dispose(p); -end; - - -Function Sys_ReadDir(p:pdir):pdirent; -{Different from Linux, Readdir on BSD is based on Getdents, due to the -missing of the readdir syscall. -Getdents requires the buffer to be larger than the blocksize. -This usually the sectorsize =512 bytes, but maybe tapedrives and harddisks -with blockmode have this higher?} - -function readbuffer:longint; - -var retval :longint; - -begin - retval:=do_syscall(syscall_nr_getdents,longint(p^.fd),longint(@p^.buf^),DIRBLKSIZ {sizeof(getdentsbuffer)}); - p^.rewind:=longint(p^.buf); - if retval=0 then - begin - p^.rewind:=0; - p^.loc:=0; - end - else - P^.loc:=retval; - readbuffer:=retval; -end; - -var - l : pdirent; - novalid : boolean; - -begin - if (p^.buf=nil) or (p^.loc=0) THEN - exit(nil); - if p^.loc=-1 then {First readdir on this pdir. Initial fill of buffer} - begin - if readbuffer()=0 Then {nothing to be read} - exit(nil) - end; - l:=nil; - repeat - novalid:=false; - if (pdirent(p^.rewind)^.reclen<>0) then - begin {valid direntry?} - if pdirent(P^.rewind)^.ino<>0 then - l:=pdirent(p^.rewind); - inc(p^.rewind,pdirent(p^.rewind)^.reclen); - if p^.rewind>=(longint(p^.buf)+dirblksiz) then - novalid:=true; - end - else - novalid:=true; - if novalid then - begin {block entirely searched or reclen=0} - if p^.loc<>0 THEN {blocks left?} - if readbuffer()<>0 then {succesful read?} - novalid:=false; - end; - until (l<>nil) or novalid; - Sys_ReadDir:=l; -end; - - -{***************************************************************************** - --- Process:Process & program handling - related calls --- -*****************************************************************************} - - -Function sys_GetPid:LongInt; -{ - Get Process ID. -} - -begin - sys_GetPID:=do_syscall(syscall_nr_getpid); -end; - -Procedure Sys_Exit(ExitCode:longint); - -begin - do_syscall(syscall_nr_exit,exitcode); -end; - -{ - Change action of process upon receipt of a signal. - Signum specifies the signal (all except SigKill and SigStop). - If Act is non-nil, it is used to specify the new action. - If OldAct is non-nil the previous action is saved there. -} - - - -Procedure SigAction(Signum:longint;Act,OldAct:PSigActionRec ); -{ - Change action of process upon receipt of a signal. - Signum specifies the signal (all except SigKill and SigStop). - If Act is non-nil, it is used to specify the new action. - If OldAct is non-nil the previous action is saved there. -} - -begin - do_syscall(syscall_nr_sigaction,longint(signum),longint(act),longint(oldact)); - {$ifdef linuxunit} - LinuxError:=Errno; - {$endif} -end; - - -{ - $Log$ - Revision 1.4 2000-09-11 14:38:10 marco - * 14 april version killed, and replaced by newer fixes branch version - - Revision 1.1.2.1 2000/09/10 16:12:14 marco - Initial signals, sockets and clone - - Revision 1.1 2000/07/13 06:30:32 michael - + Initial import - - Revision 1.15 2000/04/16 16:08:53 marco - * Fixes (mainly opendir/Readdir/closedir) - - Revision 1.14 2000/04/14 17:04:13 marco - * Working! - - Revision 1.13 2000/04/10 15:46:52 marco - * worked all day. probably a lot changed - - Revision 1.11 2000/04/05 13:58:40 marco - * syscall variablenames reintroduced. - - Revision 1.10 2000/03/16 16:18:12 marco - * Last changes before next test. ppc386 -h works with these srcs. - - Revision 1.9 2000/03/02 15:34:07 marco - * added a syscall for 5 longints - - Revision 1.8 2000/03/01 20:03:57 marco - * small fixes for syslinux - - Revision 1.7 2000/03/01 17:28:40 marco - * some changes due to updating linux.pp to new syscall - - Revision 1.6 2000/02/27 23:45:39 marco - * Redone the syscalls - - Revision 1.5 2000/02/04 16:53:26 marco - * Finished Linux (and rest syscalls) roughly. Some things still need to be - tested, and checked (off_t calls specially) - - Revision 1.4 2000/02/03 17:04:47 marco - * additions fixes due to port linux - - Revision 1.3 2000/02/02 18:07:27 marco - * Ported except for readdir which is 200 lines C code in FBSD linux - emulator - - Revision 1.2 2000/02/02 16:35:10 marco - * Ported more functions. Half done now. - - Revision 1.1 2000/02/02 15:41:56 marco - * Initial BSD version. Still needs a lot of work. - -} diff --git a/rtl/bsd/sysconst.inc b/rtl/bsd/sysconst.inc deleted file mode 100644 index 1badb3cb50..0000000000 --- a/rtl/bsd/sysconst.inc +++ /dev/null @@ -1,119 +0,0 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Michael Van Canneyt, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} - -{BSD version, only the blocks with BSD in the comment are updated} - -Const - { Things for LSEEK call, same in linux and BSD } - Seek_set = 0; - Seek_Cur = 1; - Seek_End = 2; - { Things for OPEN call - after include/sys/fcntl.h, BSD updated. - BSD specifies these constants in hex } - Open_Accmode = 3; - Open_RdOnly = 0; - Open_WrOnly = 1; - Open_RdWr = 2; - Open_NonBlock = 4; - Open_Append = 8; - Open_ShLock = $10; - Open_ExLock = $20; - Open_ASync = $40; - Open_FSync = $80; - Open_NoFollow = $100; - Open_Create = $200; {BSD convention} - Open_Creat = $200; {Linux convention} - Open_Trunc = $400; - Open_Excl = $800; - - - { The waitpid uses the following options:} - Wait_NoHang = 1; - Wait_UnTraced = 2; - Wait_Any = -1; - Wait_MyPGRP = 0; - { Constants to check stat.mode - checked all STAT constants with BSD} - STAT_IFMT = $f000; {00170000 } - STAT_IFSOCK = $c000; {0140000 } - STAT_IFLNK = $a000; {0120000 } - STAT_IFREG = $8000; {0100000 } - STAT_IFBLK = $6000; {0060000 } - STAT_IFDIR = $4000; {0040000 } - STAT_IFCHR = $2000; {0020000 } - STAT_IFIFO = $1000; {0010000 } - STAT_ISUID = $0800; {0004000 } - STAT_ISGID = $0400; {0002000 } - STAT_ISVTX = $0200; {0001000} - { Constants to check permissions all } - STAT_IRWXO = $7; - STAT_IROTH = $4; - STAT_IWOTH = $2; - STAT_IXOTH = $1; - - STAT_IRWXG = STAT_IRWXO shl 3; - STAT_IRGRP = STAT_IROTH shl 3; - STAT_IWGRP = STAT_IWOTH shl 3; - STAT_IXGRP = STAT_IXOTH shl 3; - - STAT_IRWXU = STAT_IRWXO shl 6; - STAT_IRUSR = STAT_IROTH shl 6; - STAT_IWUSR = STAT_IWOTH shl 6; - STAT_IXUSR = STAT_IXOTH shl 6; - - { Constants to test the type of filesystem } - fs_old_ext2 = $ef51; - fs_ext2 = $ef53; - fs_ext = $137d; - fs_iso = $9660; - fs_minix = $137f; - fs_minix_30 = $138f; - fs_minux_V2 = $2468; - fs_msdos = $4d44; - fs_nfs = $6969; - fs_proc = $9fa0; - fs_xia = $012FD16D; - -{ - $Log$ - Revision 1.4 2000-09-11 14:38:10 marco - * 14 april version killed, and replaced by newer fixes branch version - - Revision 1.1 2000/07/13 06:30:33 michael - + Initial import - - Revision 1.5 2000/04/10 15:46:52 marco - * worked all day. probably a lot changed - - Revision 1.3 2000/02/03 17:05:13 marco - * fixes and updates due to linux unit porting - - Revision 1.2 2000/02/02 16:35:29 marco - * Checked stat constants - - Revision 1.1 2000/02/02 15:41:28 marco - * initial BSD version. - - Revision 1.4 2000/01/07 16:41:41 daniel - * copyright 2000 - - Revision 1.3 2000/01/07 16:32:28 daniel - * copyright 2000 added - - Revision 1.2 1998/05/06 12:38:22 michael - + Removed log from before restored version. - - Revision 1.1.1.1 1998/03/25 11:18:43 root - * Restored version -} diff --git a/rtl/bsd/sysnr.inc b/rtl/bsd/sysnr.inc deleted file mode 100644 index 9d696d2fbb..0000000000 --- a/rtl/bsd/sysnr.inc +++ /dev/null @@ -1,345 +0,0 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Michael Van Canneyt, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} - -const -{ Crude converted FreeBSD 4.0-release syscall.h. Copy and paste if you - checked the function. - syscall_nr_syscall = 0; - syscall_nr_exit = 1; - syscall_nr_fork = 2; - syscall_nr_read = 3; - syscall_nr_write = 4; - syscall_nr_open = 5; - syscall_nr_close = 6; - syscall_nr_wait4 = 7; - syscall_nr_link = 9; - syscall_nr_unlink = 10; - syscall_nr_chdir = 12; - syscall_nr_fchdir = 13; - syscall_nr_mknod = 14; - syscall_nr_chmod = 15; - syscall_nr_chown = 16; - syscall_nr_break = 17; - syscall_nr_getfsstat = 18; - syscall_nr_getpid = 20; - syscall_nr_mount = 21; - syscall_nr_unmount = 22; - syscall_nr_setuid = 23; - syscall_nr_getuid = 24; - syscall_nr_geteuid = 25; - syscall_nr_ptrace = 26; - syscall_nr_recvmsg = 27; - syscall_nr_sendmsg = 28; - syscall_nr_getpeername = 31; - syscall_nr_getsockname = 32; - syscall_nr_access = 33; - syscall_nr_chflags = 34; - syscall_nr_fchflags = 35; - syscall_nr_sync = 36; - syscall_nr_kill = 37; - syscall_nr_getppid = 39; - syscall_nr_dup = 41; - syscall_nr_pipe = 42; - syscall_nr_getegid = 43; - syscall_nr_profil = 44; - syscall_nr_ktrace = 45; - syscall_nr_getgid = 47; - syscall_nr_getlogin = 49; - syscall_nr_setlogin = 50; - syscall_nr_acct = 51; - syscall_nr_sigaltstack = 53; - syscall_nr_ioctl = 54; - syscall_nr_reboot = 55; - syscall_nr_revoke = 56; - syscall_nr_symlink = 57; - syscall_nr_readlink = 58; - syscall_nr_execve = 59; - syscall_nr_umask = 60; - syscall_nr_chroot = 61; - syscall_nr_msync = 65; - syscall_nr_vfork = 66; - syscall_nr_sbrk = 69; - syscall_nr_sstk = 70; - syscall_nr_vadvise = 72; - syscall_nr_mprotect = 74; - syscall_nr_madvise = 75; - syscall_nr_mincore = 78; - syscall_nr_getgroups = 79; - syscall_nr_setgroups = 80; - syscall_nr_getpgrp = 81; - syscall_nr_setpgid = 82; - syscall_nr_setitimer = 83; - syscall_nr_swapon = 85; - syscall_nr_getitimer = 86; - syscall_nr_getdtablesize = 89; - syscall_nr_dup2 = 90; - syscall_nr_fcntl = 92; - syscall_nr_select = 93; - syscall_nr_fsync = 95; - syscall_nr_setpriority = 96; - syscall_nr_connect = 98; - syscall_nr_getpriority =100; - syscall_nr_setsockopt =105; - syscall_nr_gettimeofday =116; - syscall_nr_getrusage =117; - syscall_nr_readv =120; - syscall_nr_writev =121; - syscall_nr_settimeofday =122; - syscall_nr_fchown =123; - syscall_nr_fchmod =124; - syscall_nr_setreuid =126; - syscall_nr_setregid =127; - syscall_nr_rename =128; - syscall_nr_flock =131; - syscall_nr_mkfifo =132; - syscall_nr_mkdir =136; - syscall_nr_rmdir =137; - syscall_nr_utimes =138; - syscall_nr_adjtime =140; - syscall_nr_setsid =147; - syscall_nr_quotactl =148; - syscall_nr_nfssvc =155; - syscall_nr_statfs =157; - syscall_nr_fstatfs =158; - syscall_nr_getfh =161; - syscall_nr_getdomainname =162; - syscall_nr_setdomainname =163; - syscall_nr_uname =164; - syscall_nr_sysarch =165; - syscall_nr_rtprio =166; - syscall_nr_semsys =169; - syscall_nr_msgsys =170; - syscall_nr_shmsys =171; - syscall_nr_pread =173; - syscall_nr_pwrite =174; - syscall_nr_ntp_adjtime =176; - syscall_nr_setgid =181; - syscall_nr_setegid =182; - syscall_nr_seteuid =183; - syscall_nr_stat =188; - syscall_nr_fstat =189; - syscall_nr_lstat =190; - syscall_nr_pathconf =191; - syscall_nr_fpathconf =192; - syscall_nr_getrlimit =194; - syscall_nr_setrlimit =195; -syscall_nr_getdirentries =196; - syscall_nr_mmap =197; - syscall_nr___syscall =198; - syscall_nr_lseek =199; - syscall_nr_truncate =200; - syscall_nr_ftruncate =201; - syscall_nr___sysctl =202; - syscall_nr_mlock =203; - syscall_nr_munlock =204; - syscall_nr_undelete =205; - syscall_nr_futimes =206; - syscall_nr_getpgid =207; - syscall_nr_poll =209; - syscall_nr___semctl =220; - syscall_nr_semget =221; - syscall_nr_semop =222; - syscall_nr_semconfig =223; - syscall_nr_msgctl =224; - syscall_nr_msgget =225; - syscall_nr_msgsnd =226; - syscall_nr_msgrcv =227; - syscall_nr_shmat =228; - syscall_nr_shmctl =229; - syscall_nr_shmdt =230; - syscall_nr_shmget =231; - syscall_nr_clock_gettime =232; - syscall_nr_clock_settime =233; - syscall_nr_clock_getres =234; - syscall_nr_nanosleep =240; - syscall_nr_minherit =250; - syscall_nr_openbsd_poll =252; - syscall_nr_issetugid =253; - syscall_nr_lchown =254; - syscall_nr_getdents =272; - syscall_nr_lchmod =274; - syscall_nr_netbsd_lchown =275; - syscall_nr_lutimes =276; - syscall_nr_netbsd_msync =277; - syscall_nr_nstat =278; - syscall_nr_nfstat =279; - syscall_nr_nlstat =280; - syscall_nr_fhstatfs =297; - syscall_nr_fhopen =298; - syscall_nr_fhstat =299; - syscall_nr_modnext =300; - syscall_nr_modstat =301; - syscall_nr_modfnext =302; - syscall_nr_modfind =303; - syscall_nr_kldload =304; - syscall_nr_kldunload =305; - syscall_nr_kldfind =306; - syscall_nr_kldnext =307; - syscall_nr_kldstat =308; - syscall_nr_kldfirstmod =309; - syscall_nr_getsid =310; - syscall_nr_setresuid =311; - syscall_nr_setresgid =312; - syscall_nr_aio_return =314; - syscall_nr_aio_suspend =315; - syscall_nr_aio_cancel =316; - syscall_nr_aio_error =317; - syscall_nr_aio_read =318; - syscall_nr_aio_write =319; - syscall_nr_lio_listio =320; - syscall_nr_yield =321; - syscall_nr_thr_sleep =322; - syscall_nr_thr_wakeup =323; - syscall_nr_mlockall =324; - syscall_nr_munlockall =325; - syscall_nr___getcwd =326; - syscall_nr_sched_setparam =327; - syscall_nr_sched_getparam =328; - syscall_nr_sched_setscheduler =329; - syscall_nr_sched_getscheduler =330; - syscall_nr_sched_yield =331; - syscall_nr_sched_get_priority_max =332; - syscall_nr_sched_get_priority_min =333; - syscall_nr_sched_rr_get_interval =334; - syscall_nr_utrace =335; - syscall_nr_sendfile =336; - syscall_nr_kldsym =337; - syscall_nr_jail =338; - syscall_nr_sigprocmask =340; - syscall_nr_sigsuspend =341; - syscall_nr_sigaction =342; - syscall_nr_sigpending =343; - syscall_nr_sigreturn =344; - syscall_nr___acl_get_file =347; - syscall_nr___acl_set_file =348; - syscall_nr___acl_get_fd =349; - syscall_nr___acl_set_fd =350; - syscall_nr___acl_delete_file =351; - syscall_nr___acl_delete_fd =352; - syscall_nr___acl_aclcheck_file =353; - syscall_nr___acl_aclcheck_fd =354; - syscall_nr_extattrctl =355; - syscall_nr_extattr_set_file =356; - syscall_nr_extattr_get_file =357; - syscall_nr_extattr_delete_file =358; - syscall_nr_aio_waitcomplete =359; - syscall_nr_getresuid =360; - syscall_nr_getresgid =361; - syscall_nr_MAXSYSCALL =362; - -} - -{More or less checked BSD syscalls} - - syscall_nr_accept = 30; - syscall_nr_access = 33; - syscall_nr_bind = 104; - syscall_nr_chdir = 12; - syscall_nr_chmod = 15; - syscall_nr_chown = 16; - syscall_nr_close = 6; - syscall_nr_connect = 98; - syscall_nr_dup = 41; - syscall_nr_dup2 = 90; - syscall_nr_execve = 59; - syscall_nr_exit = 1; - syscall_nr_fcntl = 92; - syscall_nr_flock = 131; - syscall_nr_fork = 2; - syscall_nr_fstat = 189; - syscall_nr_fstatfs = 158; - syscall_nr_fsync = 95; - syscall_nr_ftruncate = 201; - syscall_nr_getdents = 272; - syscall_nr_getegid = 43; - syscall_nr_geteuid = 25; - syscall_nr_getgid = 47; - syscall_nr_getpeername = 31; - syscall_nr_getpid = 20; - syscall_nr_getppid = 39; - syscall_nr_getpriority = 100; - syscall_nr_getsockname = 32; - syscall_nr_gettimeofday = 116; - syscall_nr_getuid = 24; - syscall_nr_ioctl = 54; - syscall_nr_kill = 37; - syscall_nr_link = 9; - syscall_nr_listen = 106; - syscall_nr_lseek = 199; - syscall_nr_lstat = 190; - syscall_nr_mkdir = 136; - syscall_nr_mknod = 14; - syscall_nr_mmap = 197; - syscall_nr_open = 5; - syscall_nr_pipe = 42; - syscall_nr_read = 3; - syscall_nr_readlink = 58; - syscall_nr_recvfrom = 29; - syscall_nr_rename = 128; - syscall_nr_rmdir = 137; - syscall_nr_select = 93; - syscall_nr_sendto = 133; - syscall_nr_setpriority = 96; - syscall_nr_setsockopt = 105; - syscall_nr_shutdown = 134; - syscall_nr_sigaction = 342; - syscall_nr_sigpending = 343; - syscall_nr_sigprocmask = 340; - syscall_nr_sigsuspend = 341; - syscall_nr_socket = 97; - syscall_nr_socketpair = 135; - syscall_nr_stat = 188; - syscall_nr_statfs = 157; - syscall_nr_symlink = 57; - syscall_nr_umask = 60; - syscall_nr_unlink = 10; - syscall_nr_utimes = 138; - syscall_nr_waitpid = 7; - syscall_nr_write = 4; - syscall_nr_munmap = 73; - syscall_nr_getsockopt =118; - syscall_nr_rfork =251; - - -{ - $Log$ - Revision 1.4 2000-09-11 14:38:10 marco - * 14 april version killed, and replaced by newer fixes branch version - - Revision 1.1.2.1 2000/09/10 16:12:14 marco - Initial signals, sockets and clone - - Revision 1.1 2000/07/13 06:30:33 michael - + Initial import - - Revision 1.4 2000/04/10 15:46:52 marco - * worked all day. probably a lot changed - - Revision 1.2 2000/04/05 13:59:10 marco - * added constants for syscall.inc - - Revision 1.1 2000/04/05 13:06:24 marco - * Initial version. (copied from linux.) Patch for BSD not ready yeT - - Revision 1.5 2000/02/09 16:59:32 peter - * truncated log - - Revision 1.4 2000/01/07 16:41:41 daniel - * copyright 2000 - - Revision 1.3 2000/01/07 16:32:28 daniel - * copyright 2000 added - -} diff --git a/rtl/bsd/systypes.inc b/rtl/bsd/systypes.inc deleted file mode 100644 index db7af041c2..0000000000 --- a/rtl/bsd/systypes.inc +++ /dev/null @@ -1,186 +0,0 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Michael Van Canneyt, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} -type - -{ - Linux system calls take arguments as follows : - - i386/m68k: - - %eax/%d0 : System call number - %ebx/%d1 : first argument - %ecx/%d2 : second argument - %edx/%d3 : third argumens - %esi/%d3 : fourth argument - %edi/%d4 : fifth argument - - That is why we define a special type, with only these arguments - To make it processor independent, we don't give any system dependent - names, but the rather abstract reg1,reg2 etc; - - SysCallRegs=record - reg1,reg2,reg3,reg4,reg5,reg6 : longint; - end; - PSysCallRegs=^SysCallRegs; - TSysCallRegs=SysCallRegs; -} -{ The following are records for system calls BSD updated } - dirent = packed record - ino : cardinal; { This is not inode number, but "a number - unique for each file on a filesystem"} - reclen : word; - d_type, - namlen : byte; - name : array [0..255] of char; - end; - - pdirent =^dirent; - TDirEnt = dirent; - - TDir= packed record {BSD libc record.} - fd : longint; { file descriptor associated with directory } - loc, { offset in current buffer } - size : cardinal; { amount of data returned by getdirentries} - buf : pdirent; { data buffer, actually a pchar} - len : longint; { size of data buffer } - seek, { magic cookie returned by getdirentries} - rewind: cardinal; { magic cookie for rewinding} - flags : longint; { flags for readdir } - end; - -{ Linux kernel record - TDir = packed record - fd : longint; - loc : longint; - size : integer; - buf : pdirent; - {The following are used in libc, but NOT in the linux kernel sources ??} - nextoff: longint; - dd_max : integer; {size of buf. Irrelevant, as buf is of type dirent} - lock : pointer; - dummy : array[0..1023] of char; - end;} - - PDir =^TDir; - -{$packrecords C} - Stat =record {BSD version} - dev, { inode's device } - ino : cardinal; { inode's number } - mode, { inode protection mode } - nlink : word; { number of hard links } - uid, { user ID of the file's owner } - gid, { group ID of the file's group } - dev_t : cardinal; { device type } - atime, { time of last access } - atime_nsec, { nsec of last access } - mtime, { time of last data modification } - mtime_nsec, { nsec of last data modification } - ctime, { time of last file status change } - ctime_nsec : longint; { nsec of last file status change } - size, { file size, in bytes } - blocks : Int64; { blocks allocated for file } - blksze, { optimal blocksize for I/O } - flags, { user defined flags for file } - filegen : cardinal; { file generation number } - lspare : longint; - qspare : array[0..1] of int64; - end; - - PStat=^Stat; - TStat=Stat; - - Statfs = packed record - spare2, { place holder} - bsize, { fundamental block size} - iosize, { optimal block size } - blocks, { total blocks} - bfree, { blocks free} - bavail, { block available for mortal users} - files, { Total file nodes} - ffree : longint; { file nodes free} - fsid : array[0..1] of longint; - fowner : longint; {mounter uid} - ftype : longint; - fflags : longint; {copy of mount flags} - spare : array [0..1] of longint; { For later use } - fstypename : array[0..15] of char; - mountpoint : array[0..89] of char; - mnfromname : array[0..89] of char; - end; - PStatFS=^StatFS; - TStatFS=StatFS; - - fdSet=array[0..7] of longint;{=256 bits} - pfdset=^fdset; - TFDSet=fdset; - - timeval = packed record - sec,usec:int64; - end; - ptimeval=^timeval; - TTimeVal=timeval; - - timezone = packed record - minuteswest,dsttime:longint; - end; - ptimezone =^timezone; - TTimeZone = timezone; - - utsname = packed record - sysname, - nodename, - release, - version, - machine, - domainname : Array[0..64] of char; - end; - PUTSName=^UTSName; - TUTSName=UTSName; - -{ - $Log$ - Revision 1.4 2000-09-11 14:38:10 marco - * 14 april version killed, and replaced by newer fixes branch version - - Revision 1.1.2.1 2000/09/10 16:12:14 marco - Initial signals, sockets and clone - - Revision 1.1 2000/07/13 06:30:33 michael - + Initial import - - Revision 1.8 2000/04/16 16:08:30 marco - * Updated PDir to BSD libc layout. (which is totally different from Linux) - - Revision 1.7 2000/04/10 15:46:52 marco - * worked all day. probably a lot changed - - Revision 1.5 2000/03/17 12:58:57 marco - * some changes to ftruncate based procs. Added a "0" as extra parameter - - Revision 1.4 2000/02/04 16:55:47 marco - * Fixed tdir, some params need to be 32-bit - - Revision 1.3 2000/02/03 17:05:55 marco - - * Some types fixed/ported. - - Revision 1.2 2000/02/02 16:45:38 marco - * Typo in STAT record - - Revision 1.1 2000/02/02 16:36:09 marco - * Initial version. Copy of linux version, with BSD stat. - -}