Răsfoiți Sursa

* Modified bootstrap code so separate prt0.as/prt0_10.as files are no
longer necessary

daniel 21 ani în urmă
părinte
comite
a1229ff8fe

+ 86 - 302
rtl/freebsd/Makefile

@@ -1,25 +1,15 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 1.1 [2004/05/23]
+# Don't edit, this file is generated by FPCMake Version 1.1 [2002/05/23]
 #
 #
 default: all
 default: all
-MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) sunos qnx
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
+MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware
+override PATH:=$(subst \,/,$(PATH))
 ifeq ($(findstring ;,$(PATH)),)
 ifeq ($(findstring ;,$(PATH)),)
 inUnix=1
 inUnix=1
 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
 else
 else
 SEARCHPATH:=$(subst ;, ,$(PATH))
 SEARCHPATH:=$(subst ;, ,$(PATH))
 endif
 endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 ifeq ($(PWD),)
 ifeq ($(PWD),)
 PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
@@ -42,26 +32,29 @@ inOS2=1
 endif
 endif
 endif
 endif
 else
 else
-ifneq ($(findstring cygdrive,$(PATH)),)
+ifneq ($(findstring cygwin,$(MACHTYPE)),)
 inCygWin=1
 inCygWin=1
 endif
 endif
 endif
 endif
+ifeq ($(OS_TARGET),freebsd)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+BSDhier=1
+endif
 ifdef inUnix
 ifdef inUnix
-SRCBATCHEXT=.sh
+BATCHEXT=.sh
 else
 else
 ifdef inOS2
 ifdef inOS2
-SRCBATCHEXT=.cmd
+BATCHEXT=.cmd
 else
 else
-SRCBATCHEXT=.bat
+BATCHEXT=.bat
 endif
 endif
 endif
 endif
 ifdef inUnix
 ifdef inUnix
 PATHSEP=/
 PATHSEP=/
 else
 else
 PATHSEP:=$(subst /,\,/)
 PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
 endif
 endif
 ifdef PWD
 ifdef PWD
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
@@ -91,7 +84,7 @@ endif
 endif
 endif
 export ECHO
 export ECHO
 endif
 endif
-override OS_TARGET_DEFAULT=freebsd
+OS_TARGET=freebsd
 override DEFAULT_FPCDIR=../..
 override DEFAULT_FPCDIR=../..
 ifndef FPC
 ifndef FPC
 ifdef PP
 ifdef PP
@@ -113,38 +106,37 @@ endif
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 ifndef FPC_VERSION
 ifndef FPC_VERSION
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+FPC_VERSION:=$(shell $(FPC) -iV)
 endif
 endif
-export FPC FPC_VERSION FPC_COMPILERINFO
+export FPC FPC_VERSION
 unexport CHECKDEPEND ALLDEPENDENCIES
 unexport CHECKDEPEND ALLDEPENDENCIES
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO)
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 1,$(COMPILERINFO))
+endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
+CPU_TARGET:=$(word 2,$(COMPILERINFO))
 endif
 endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 3,$(COMPILERINFO))
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+OS_TARGET:=$(word 4,$(COMPILERINFO))
 endif
 endif
+else
 ifndef CPU_SOURCE
 ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+CPU_SOURCE:=$(shell $(FPC) -iSP)
 endif
 endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+CPU_TARGET:=$(shell $(FPC) -iTP)
 endif
 endif
 ifndef OS_SOURCE
 ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+OS_SOURCE:=$(shell $(FPC) -iSO)
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+OS_TARGET:=$(shell $(FPC) -iTO)
+endif
 endif
 endif
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
@@ -156,12 +148,6 @@ ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
 $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
 $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
 endif
 endif
 endif
 endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
 export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
 export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
 ifdef FPCDIR
 ifdef FPCDIR
 override FPCDIR:=$(subst \,/,$(FPCDIR))
 override FPCDIR:=$(subst \,/,$(FPCDIR))
@@ -191,14 +177,11 @@ override FPCDIR:=$(FPCDIR)/..
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR:=$(FPCDIR)/..
 override FPCDIR:=$(FPCDIR)/..
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR=c:/pp
 override FPCDIR=c:/pp
 endif
 endif
 endif
 endif
 endif
 endif
 endif
 endif
-endif
 ifndef CROSSDIR
 ifndef CROSSDIR
 CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
 CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
 endif
 endif
@@ -225,13 +208,11 @@ UNIXINC=$(RTL)/unix
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
 ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
 SYSTEMUNIT=system
 SYSTEMUNIT=system
-PRT0=prt0
 override FPCOPT+=-dNOMOUSE
 override FPCOPT+=-dNOMOUSE
 loaders+=gprt0
 loaders+=gprt0
 else
 else
 SYSTEMUNIT=sysbsd
 SYSTEMUNIT=sysbsd
 override FPCOPT+=-dUNIX -dNOMOUSE
 override FPCOPT+=-dUNIX -dNOMOUSE
-PRT0=prt0_10
 endif
 endif
 ifdef RELEASE
 ifdef RELEASE
 override FPCOPT+=-Ur
 override FPCOPT+=-Ur
@@ -255,12 +236,30 @@ ifdef REQUIRE_PACKAGESDIR
 override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
 override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
 endif
 endif
 ifdef ZIPINSTALL
 ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_TARGET),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
 endif
 endif
 else
 else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_SOURCE),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
 endif
 endif
 endif
 endif
 ifndef INSTALL_PREFIX
 ifndef INSTALL_PREFIX
@@ -269,7 +268,7 @@ INSTALL_PREFIX=$(PREFIX)
 endif
 endif
 endif
 endif
 ifndef INSTALL_PREFIX
 ifndef INSTALL_PREFIX
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_PREFIX=/usr/local
 INSTALL_PREFIX=/usr/local
 else
 else
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
@@ -288,7 +287,7 @@ DIST_DESTDIR:=$(BASEDIR)
 endif
 endif
 export DIST_DESTDIR
 export DIST_DESTDIR
 ifndef INSTALL_BASEDIR
 ifndef INSTALL_BASEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 else
 else
@@ -299,18 +298,10 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
 endif
 endif
 endif
 endif
 ifndef INSTALL_BINDIR
 ifndef INSTALL_BINDIR
-ifdef UNIXHier
-ifdef CROSSCOMPILE
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
-else
+ifdef UNIXINSTALLDIR
 INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
 INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-endif
-else
-ifdef CROSSCOMPILE
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
 else
 else
 INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
 INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
 INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
 endif
 endif
@@ -329,23 +320,19 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_LIBDIR
 ifndef INSTALL_LIBDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
 INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
 else
 else
 INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
 INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
 endif
 endif
 endif
 endif
 ifndef INSTALL_SOURCEDIR
 ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 ifdef BSDhier
 SRCPREFIXDIR=share/src
 SRCPREFIXDIR=share/src
 else
 else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
 SRCPREFIXDIR=src
 SRCPREFIXDIR=src
 endif
 endif
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCSUBDIR
 ifdef INSTALL_FPCSUBDIR
 INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
 INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
@@ -368,16 +355,12 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_DOCDIR
 ifndef INSTALL_DOCDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 ifdef BSDhier
 DOCPREFIXDIR=share/doc
 DOCPREFIXDIR=share/doc
 else
 else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
 DOCPREFIXDIR=doc
 DOCPREFIXDIR=doc
 endif
 endif
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 else
 else
@@ -392,28 +375,20 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_EXAMPLEDIR
 ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 ifdef BSDhier
 ifdef BSDhier
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 else
 else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
 endif
 endif
-endif
 else
 else
 ifdef BSDhier
 ifdef BSDhier
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 else
 else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 endif
 endif
 endif
 endif
-endif
 else
 else
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
@@ -435,7 +410,6 @@ endif
 else
 else
 CROSSBINDIR=
 CROSSBINDIR=
 endif
 endif
-BATCHEXT=.bat
 LOADEREXT=.as
 LOADEREXT=.as
 EXEEXT=.exe
 EXEEXT=.exe
 PPLEXT=.ppl
 PPLEXT=.ppl
@@ -448,124 +422,6 @@ SHAREDLIBEXT=.so
 STATICLIBPREFIX=libp
 STATICLIBPREFIX=libp
 RSTEXT=.rst
 RSTEXT=.rst
 FPCMADE=fpcmade
 FPCMADE=fpcmade
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.v1
-PACKAGESUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.dos
-ZIPSUFFIX=go32
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.wat
-ZIPSUFFIX=watc
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.lnx
-ZIPSUFFIX=linux
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.freebsd
-ZIPSUFFIX=freebsd
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.netbsd
-ZIPSUFFIX=netbsd
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.openbsd
-ZIPSUFFIX=openbsd
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.w32
-ZIPSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.os2
-ZIPSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.emx
-ZIPSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-FPCMADE=fpcmade.amg
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-FPCMADE=fpcmade.ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.be
-ZIPSUFFIX=be
-endif
-ifeq ($(OS_TARGET),sunos)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.sun
-ZIPSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.qnx
-ZIPSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-FPCMADE=fpcmade.nw
-ZIPSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-FPCMADE=fpcmade.macos
-ZIPSUFFIX=macos
-DEBUGSYMEXT=.xcoff
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.darwin
-ZIPSUFFIX=darwin
-endif
-else
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
 PPUEXT=.pp1
 OEXT=.o1
 OEXT=.o1
@@ -582,39 +438,24 @@ STATICLIBPREFIX=
 FPCMADE=fpcmade.dos
 FPCMADE=fpcmade.dos
 ZIPSUFFIX=go32
 ZIPSUFFIX=go32
 endif
 endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.dos
-ZIPSUFFIX=watcom
-endif
 ifeq ($(OS_TARGET),linux)
 ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.lnx
 FPCMADE=fpcmade.lnx
 ZIPSUFFIX=linux
 ZIPSUFFIX=linux
 endif
 endif
 ifeq ($(OS_TARGET),freebsd)
 ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.freebsd
 FPCMADE=fpcmade.freebsd
 ZIPSUFFIX=freebsd
 ZIPSUFFIX=freebsd
 endif
 endif
 ifeq ($(OS_TARGET),netbsd)
 ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.netbsd
 FPCMADE=fpcmade.netbsd
 ZIPSUFFIX=netbsd
 ZIPSUFFIX=netbsd
 endif
 endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.openbsd
-ZIPSUFFIX=openbsd
-endif
 ifeq ($(OS_TARGET),win32)
 ifeq ($(OS_TARGET),win32)
 PPUEXT=.ppw
 PPUEXT=.ppw
 OEXT=.ow
 OEXT=.ow
@@ -626,7 +467,6 @@ FPCMADE=fpcmade.w32
 ZIPSUFFIX=w32
 ZIPSUFFIX=w32
 endif
 endif
 ifeq ($(OS_TARGET),os2)
 ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
 PPUEXT=.ppo
 PPUEXT=.ppo
 ASMEXT=.so2
 ASMEXT=.so2
 OEXT=.oo2
 OEXT=.oo2
@@ -641,7 +481,7 @@ ECHO=echo
 endif
 endif
 ifeq ($(OS_TARGET),amiga)
 ifeq ($(OS_TARGET),amiga)
 EXEEXT=
 EXEEXT=
-PPUEXT=.ppu
+PPUEXT=.ppa
 ASMEXT=.asm
 ASMEXT=.asm
 OEXT=.o
 OEXT=.o
 SMARTEXT=.sl
 SMARTEXT=.sl
@@ -650,7 +490,7 @@ SHAREDLIBEXT=.library
 FPCMADE=fpcmade.amg
 FPCMADE=fpcmade.amg
 endif
 endif
 ifeq ($(OS_TARGET),atari)
 ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
+PPUEXT=.ppt
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
 SMARTEXT=.sl
 SMARTEXT=.sl
@@ -659,7 +499,6 @@ EXEEXT=.ttp
 FPCMADE=fpcmade.ata
 FPCMADE=fpcmade.ata
 endif
 endif
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -670,7 +509,6 @@ FPCMADE=fpcmade.be
 ZIPSUFFIX=be
 ZIPSUFFIX=be
 endif
 endif
 ifeq ($(OS_TARGET),sunos)
 ifeq ($(OS_TARGET),sunos)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -681,7 +519,6 @@ FPCMADE=fpcmade.sun
 ZIPSUFFIX=sun
 ZIPSUFFIX=sun
 endif
 endif
 ifeq ($(OS_TARGET),qnx)
 ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -693,8 +530,8 @@ ZIPSUFFIX=qnx
 endif
 endif
 ifeq ($(OS_TARGET),netware)
 ifeq ($(OS_TARGET),netware)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
+PPUEXT=.ppn
+OEXT=.on
 ASMEXT=.s
 ASMEXT=.s
 SMARTEXT=.sl
 SMARTEXT=.sl
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -703,24 +540,12 @@ FPCMADE=fpcmade.nw
 ZIPSUFFIX=nw
 ZIPSUFFIX=nw
 EXEEXT=.nlm
 EXEEXT=.nlm
 endif
 endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-FPCMADE=fpcmade.macos
-endif
-endif
 ifndef ECHO
 ifndef ECHO
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ifeq ($(ECHO),)
 ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
 ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ifeq ($(ECHO),)
-ECHO= __missing_command__
+ECHO=
 else
 else
 ECHO:=$(firstword $(ECHO))
 ECHO:=$(firstword $(ECHO))
 endif
 endif
@@ -734,7 +559,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(DATE),)
 ifeq ($(DATE),)
 DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
 DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(DATE),)
 ifeq ($(DATE),)
-DATE= __missing_command__
+DATE=
 else
 else
 DATE:=$(firstword $(DATE))
 DATE:=$(firstword $(DATE))
 endif
 endif
@@ -748,7 +573,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(GINSTALL),)
 ifeq ($(GINSTALL),)
 GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
 GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(GINSTALL),)
 ifeq ($(GINSTALL),)
-GINSTALL= __missing_command__
+GINSTALL=
 else
 else
 GINSTALL:=$(firstword $(GINSTALL))
 GINSTALL:=$(firstword $(GINSTALL))
 endif
 endif
@@ -760,7 +585,7 @@ export GINSTALL
 ifndef CPPROG
 ifndef CPPROG
 CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
 CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(CPPROG),)
 ifeq ($(CPPROG),)
-CPPROG= __missing_command__
+CPPROG=
 else
 else
 CPPROG:=$(firstword $(CPPROG))
 CPPROG:=$(firstword $(CPPROG))
 endif
 endif
@@ -769,7 +594,7 @@ export CPPROG
 ifndef RMPROG
 ifndef RMPROG
 RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
 RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(RMPROG),)
 ifeq ($(RMPROG),)
-RMPROG= __missing_command__
+RMPROG=
 else
 else
 RMPROG:=$(firstword $(RMPROG))
 RMPROG:=$(firstword $(RMPROG))
 endif
 endif
@@ -778,18 +603,14 @@ export RMPROG
 ifndef MVPROG
 ifndef MVPROG
 MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
 MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(MVPROG),)
 ifeq ($(MVPROG),)
-MVPROG= __missing_command__
+MVPROG=
 else
 else
 MVPROG:=$(firstword $(MVPROG))
 MVPROG:=$(firstword $(MVPROG))
 endif
 endif
 endif
 endif
 export MVPROG
 export MVPROG
 ifndef ECHOREDIR
 ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
+ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
 endif
 endif
 ifndef COPY
 ifndef COPY
 COPY:=$(CPPROG) -fp
 COPY:=$(CPPROG) -fp
@@ -827,7 +648,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
 ifndef PPUMOVE
 ifndef PPUMOVE
 PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
 PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(PPUMOVE),)
 ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command__
+PPUMOVE=
 else
 else
 PPUMOVE:=$(firstword $(PPUMOVE))
 PPUMOVE:=$(firstword $(PPUMOVE))
 endif
 endif
@@ -836,7 +657,7 @@ export PPUMOVE
 ifndef FPCMAKE
 ifndef FPCMAKE
 FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
 FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(FPCMAKE),)
 ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command__
+FPCMAKE=
 else
 else
 FPCMAKE:=$(firstword $(FPCMAKE))
 FPCMAKE:=$(firstword $(FPCMAKE))
 endif
 endif
@@ -845,7 +666,7 @@ export FPCMAKE
 ifndef ZIPPROG
 ifndef ZIPPROG
 ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
 ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ZIPPROG),)
 ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command__
+ZIPPROG=
 else
 else
 ZIPPROG:=$(firstword $(ZIPPROG))
 ZIPPROG:=$(firstword $(ZIPPROG))
 endif
 endif
@@ -854,25 +675,21 @@ export ZIPPROG
 ifndef TARPROG
 ifndef TARPROG
 TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
 TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(TARPROG),)
 ifeq ($(TARPROG),)
-TARPROG= __missing_command__
+TARPROG=
 else
 else
 TARPROG:=$(firstword $(TARPROG))
 TARPROG:=$(firstword $(TARPROG))
 endif
 endif
 endif
 endif
 export TARPROG
 export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
+ASNAME=as
+LDNAME=ld
+ARNAME=ar
+RCNAME=rc
 ifeq ($(OS_TARGET),win32)
 ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
 ASNAME=asw
 ASNAME=asw
 LDNAME=ldw
 LDNAME=ldw
 ARNAME=arw
 ARNAME=arw
 endif
 endif
-endif
-endif
 ifndef ASPROG
 ifndef ASPROG
 ifdef CROSSBINDIR
 ifdef CROSSBINDIR
 ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
 ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
@@ -905,7 +722,7 @@ AS=$(ASPROG)
 LD=$(LDPROG)
 LD=$(LDPROG)
 RC=$(RCPROG)
 RC=$(RCPROG)
 AR=$(ARPROG)
 AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
+PPAS=ppas$(BATCHEXT)
 ifdef inUnix
 ifdef inUnix
 LDCONFIG=ldconfig
 LDCONFIG=ldconfig
 else
 else
@@ -950,17 +767,6 @@ endif
 ifneq ($(OS_TARGET),$(OS_SOURCE))
 ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 override FPCOPT+=-T$(OS_TARGET)
 endif
 endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
 ifdef UNITDIR
 ifdef UNITDIR
 override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 endif
 endif
@@ -987,12 +793,8 @@ ifdef RELEASE
 ifeq ($(CPU_TARGET),i386)
 ifeq ($(CPU_TARGET),i386)
 FPCCPUOPT:=-OG2p3
 FPCCPUOPT:=-OG2p3
 else
 else
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1
-else
 FPCCPUOPT:=
 FPCCPUOPT:=
 endif
 endif
-endif
 override FPCOPT+=-Xs $(FPCCPUOPT) -n
 override FPCOPT+=-Xs $(FPCCPUOPT) -n
 override FPCOPTDEF+=RELEASE
 override FPCOPTDEF+=RELEASE
 endif
 endif
@@ -1046,11 +848,6 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 endif
 endif
 endif
 endif
-ifeq ($(OS_TARGET),linux)
-ifeq ($(FPC_VERSION),1.0.6)
-override FPCOPTDEF+=HASUNIX
-endif
-endif
 ifdef OPT
 ifdef OPT
 override FPCOPT+=$(OPT)
 override FPCOPT+=$(OPT)
 endif
 endif
@@ -1069,12 +866,12 @@ override COMPILER:=$(FPC) $(FPCOPT)
 ifeq (,$(findstring -s ,$(COMPILER)))
 ifeq (,$(findstring -s ,$(COMPILER)))
 EXECPPAS=
 EXECPPAS=
 else
 else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifeq ($(OS_SOURCE),$(OS_TARGET))
 EXECPPAS:=@$(PPAS)
 EXECPPAS:=@$(PPAS)
 endif
 endif
 endif
 endif
 .PHONY: fpc_loaders
 .PHONY: fpc_loaders
-ifneq ($(TARGET_LOADERS),)
+ifdef TARGET_LOADERS
 override ALLTARGET+=fpc_loaders
 override ALLTARGET+=fpc_loaders
 override CLEANTARGET+=fpc_loaders_clean
 override CLEANTARGET+=fpc_loaders_clean
 override INSTALLTARGET+=fpc_loaders_install
 override INSTALLTARGET+=fpc_loaders_install
@@ -1089,7 +886,7 @@ fpc_loaders_install:
 	$(MKDIR) $(INSTALL_UNITDIR)
 	$(MKDIR) $(INSTALL_UNITDIR)
 	$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
 	$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
 .PHONY: fpc_units
 .PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
+ifdef TARGET_UNITS
 override ALLTARGET+=fpc_units
 override ALLTARGET+=fpc_units
 override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
 override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
 override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
 override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
@@ -1111,7 +908,7 @@ fpc_debug:
 	$(MAKE) all DEBUG=1
 	$(MAKE) all DEBUG=1
 fpc_release:
 fpc_release:
 	$(MAKE) all RELEASE=1
 	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .dpr .pp .rc .res
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
 %$(PPUEXT): %.pp
 %$(PPUEXT): %.pp
 	$(COMPILER) $<
 	$(COMPILER) $<
 	$(EXECPPAS)
 	$(EXECPPAS)
@@ -1124,14 +921,10 @@ fpc_release:
 %$(EXEEXT): %.pas
 %$(EXEEXT): %.pas
 	$(COMPILER) $<
 	$(COMPILER) $<
 	$(EXECPPAS)
 	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
 %.res: %.rc
 %.res: %.rc
 	windres -i $< -o $@
 	windres -i $< -o $@
 vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
 .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
 .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
 ifdef INSTALL_UNITS
 ifdef INSTALL_UNITS
@@ -1208,9 +1001,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
 endif
 endif
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
 override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) 
-endif
 override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
 override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
 override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
 override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
 endif
 endif
@@ -1234,7 +1024,6 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
 fpc_distclean: clean
 fpc_distclean: clean
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 TARGETDIRCLEAN=fpc_clean
 TARGETDIRCLEAN=fpc_clean
@@ -1246,13 +1035,9 @@ endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)
 endif
 endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
 .PHONY: fpc_baseinfo
 .PHONY: fpc_baseinfo
 override INFORULES+=fpc_baseinfo
 override INFORULES+=fpc_baseinfo
 fpc_baseinfo:
 fpc_baseinfo:
@@ -1297,7 +1082,6 @@ fpc_baseinfo:
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  Echo...... $(ECHO)
 	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)
@@ -1383,8 +1167,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
-	$(AS) -o prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
+prt0$(OEXT) : $(CPU_TARGET)/prt0.as
+	$(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
 	$(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
 	$(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
 gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
 gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as

+ 2 - 4
rtl/freebsd/Makefile.fpc

@@ -58,13 +58,11 @@ UNITPREFIX=rtl
 
 
 ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
 ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
 SYSTEMUNIT=system
 SYSTEMUNIT=system
-PRT0=prt0
 override FPCOPT+=-dNOMOUSE
 override FPCOPT+=-dNOMOUSE
 loaders+=gprt0
 loaders+=gprt0
 else
 else
 SYSTEMUNIT=sysbsd
 SYSTEMUNIT=sysbsd
 override FPCOPT+=-dUNIX -dNOMOUSE
 override FPCOPT+=-dUNIX -dNOMOUSE
-PRT0=prt0_10
 endif
 endif
 
 
 # Use new feature from 1.0.5 version
 # Use new feature from 1.0.5 version
@@ -109,8 +107,8 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Loaders
 # Loaders
 #
 #
 
 
-prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
-        $(AS) -o prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
+prt0$(OEXT) : $(CPU_TARGET)/prt0.as
+        $(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as
 
 
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
 cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
         $(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
         $(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as

+ 9 - 4
rtl/freebsd/i386/cprt0.as

@@ -55,12 +55,12 @@ _start:
         movl %edx,%edx
         movl %edx,%edx
 #NO_APP
 #NO_APP
         leal 8(%ebp),%edi
         leal 8(%ebp),%edi
-        movl %edi,U_SYSTEM_ARGV
+        movl %edi,operatingsystem_parameter_argv
         mov -4(%edi),%eax
         mov -4(%edi),%eax
-        movl %eax,U_SYSTEM_ARGC
+        movl %eax,operatingsystem_parameter_argc
         movl 4(%ebp),%ebx
         movl 4(%ebp),%ebx
         leal 12(%ebp,%ebx,4),%esi
         leal 12(%ebp,%ebx,4),%esi
-        movl %esi,U_SYSTEM_ENVP
+        movl %esi,operatingsystem_parameter_envp
         movl %esi,environ
         movl %esi,environ
         testl %ebx,%ebx
         testl %ebx,%ebx
         jle .L2
         jle .L2
@@ -116,7 +116,7 @@ _start:
 
 
 _haltproc:
 _haltproc:
            mov $1,%eax  
            mov $1,%eax  
-           movzwl U_SYSTEM_EXITCODE,%ebx
+           movzwl operatingsystem_result,%ebx
            pushl %ebx
            pushl %ebx
            call .Lactualsyscall
            call .Lactualsyscall
            addl  $4,%esp
            addl  $4,%esp
@@ -139,3 +139,8 @@ _haltproc:
         .comm   environ,4,4
         .comm   environ,4,4
         .weak   _DYNAMIC
         .weak   _DYNAMIC
         .ident  "GCC: (GNU) 2.7.2.1"
         .ident  "GCC: (GNU) 2.7.2.1"
+
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4

+ 10 - 5
rtl/freebsd/i386/gprt0.as

@@ -67,12 +67,12 @@ _start:
 	pushl %esi
 	pushl %esi
 	pushl %ebx
 	pushl %ebx
 	movl 4(%ebp),%ebx
 	movl 4(%ebp),%ebx
-	movl %ebx,U_SYSTEM_ARGC
+	movl %ebx,operatingsystem_parameter_argc
 	leal 12(%ebp,%ebx,4),%esi
 	leal 12(%ebp,%ebx,4),%esi
 	leal 8(%ebp),%eax
 	leal 8(%ebp),%eax
-	movl %eax,U_SYSTEM_ARGV
+	movl %eax,operatingsystem_parameter_argv
 	movl %eax,-4(%ebp)
 	movl %eax,-4(%ebp)
-	movl %esi,U_SYSTEM_ENVP		
+	movl %esi,operatingsystem_parameter_envp
 	movl %esi,environ
 	movl %esi,environ
 	movl $_DYNAMIC,%ecx
 	movl $_DYNAMIC,%ecx
 	testl %ebx,%ebx
 	testl %ebx,%ebx
@@ -125,11 +125,11 @@ _start:
 .globl _haltproc
 .globl _haltproc
 .type _haltproc,@function
 .type _haltproc,@function
 _haltproc:
 _haltproc:
-           movzwl U_SYSTEM_EXITCODE,%ebx
+           movzwl operatingsystem_result,%ebx
            pushl %ebx
            pushl %ebx
 	   call  exit
 	   call  exit
            mov $1,%eax  
            mov $1,%eax  
-           movzwl U_SYSTEM_EXITCODE,%ebx
+           movzwl operatingsystem_result,%ebx
 	   pushl %ebx
 	   pushl %ebx
            call .Lactualsyscall
            call .Lactualsyscall
            addl  $4,%esp
            addl  $4,%esp
@@ -156,3 +156,8 @@ _haltproc:
 	.globl	_DYNAMIC
 	.globl	_DYNAMIC
 	.weak	_DYNAMIC
 	.weak	_DYNAMIC
 	.ident	"GCC: (GNU) c 2.95.4 20020320 [FreeBSD]"
 	.ident	"GCC: (GNU) c 2.95.4 20020320 [FreeBSD]"
+
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4

+ 10 - 4
rtl/freebsd/i386/prt0.as

@@ -55,12 +55,12 @@ _start:
         movl %edx,%edx
         movl %edx,%edx
 #NO_APP
 #NO_APP
         leal 8(%ebp),%edi
         leal 8(%ebp),%edi
-        movl %edi,U_SYSTEM_ARGV
+        movl %edi,operatingsystem_parameter_argv
         mov -4(%edi),%eax
         mov -4(%edi),%eax
-        movl %eax,U_SYSTEM_ARGC
+        movl %eax,operatingsystem_parameter_argc
         movl 4(%ebp),%ebx
         movl 4(%ebp),%ebx
         leal 12(%ebp,%ebx,4),%esi
         leal 12(%ebp,%ebx,4),%esi
-        movl %esi,U_SYSTEM_ENVP
+        movl %esi,operatingsystem_parameter_envp
         movl %esi,environ
         movl %esi,environ
         testl %ebx,%ebx
         testl %ebx,%ebx
         jle .L2
         jle .L2
@@ -101,7 +101,7 @@ _start:
 
 
 _haltproc:
 _haltproc:
            mov $1,%eax  
            mov $1,%eax  
-           movzwl U_SYSTEM_EXITCODE,%ebx
+           movzwl operatingsystem_result,%ebx
            pushl %ebx
            pushl %ebx
            call _actualsyscall
            call _actualsyscall
            addl  $4,%esp
            addl  $4,%esp
@@ -122,3 +122,9 @@ _actualsyscall:
         .comm   environ,4,4
         .comm   environ,4,4
         .weak   _DYNAMIC
         .weak   _DYNAMIC
         .ident  "GCC: (GNU) 2.7.2.1"
         .ident  "GCC: (GNU) 2.7.2.1"
+
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+	

+ 0 - 124
rtl/freebsd/i386/prt0_10.as

@@ -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_SYSBSD_ARGV
-        mov -4(%edi),%eax
-        movl %eax,U_SYSBSD_ARGC
-        movl 4(%ebp),%ebx
-        leal 12(%ebp,%ebx,4),%esi
-        movl %esi,U_SYSBSD_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_SYSBSD_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"

+ 3 - 3
rtl/freebsd/x86_64/prt0.as

@@ -39,18 +39,18 @@ _start:
 	movq	-8(%rbp), %rax
 	movq	-8(%rbp), %rax
 	movl	(%rax), %eax
 	movl	(%rax), %eax
 	movl	%eax, -20(%rbp)
 	movl	%eax, -20(%rbp)
-	movl	%eax, U_SYSTEM_ARGC
+	movl	%eax, operatingsystem_parameter_argc
 	movq	-8(%rbp), %rax
 	movq	-8(%rbp), %rax
 	addq	$8, %rax
 	addq	$8, %rax
 	movq	%rax, -32(%rbp)
 	movq	%rax, -32(%rbp)
-	movq    %rax, U_SYSTEM_ARGV
+	movq    %rax, operatingsystem_parameter_argv
 	movl	-20(%rbp), %eax
 	movl	-20(%rbp), %eax
 	cltq
 	cltq
 	salq	$3, %rax
 	salq	$3, %rax
 	addq	-8(%rbp), %rax
 	addq	-8(%rbp), %rax
 	addq	$16, %rax
 	addq	$16, %rax
 	movq	%rax, -40(%rbp)
 	movq	%rax, -40(%rbp)
-	movq    %rax, U_SYSTEM_ENVP
+	movq    %rax, operatingsystem_parameter_envp
 	movq	-40(%rbp), %rax
 	movq	-40(%rbp), %rax
 	movq	%rax, environ(%rip)
 	movq	%rax, environ(%rip)
 	movq    %rax,environ
 	movq    %rax,environ

+ 6 - 2
rtl/inc/systemh.inc

@@ -341,7 +341,7 @@ const
   StackError : boolean = FALSE;
   StackError : boolean = FALSE;
 
 
 var
 var
-  ExitCode    : Word;
+  ExitCode    : Word; public name 'operatingsystem_result';
   RandSeed    : Cardinal;
   RandSeed    : Cardinal;
   { Delphi compatibility }
   { Delphi compatibility }
   IsLibrary : boolean;
   IsLibrary : boolean;
@@ -744,7 +744,11 @@ const
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.95  2004-06-11 19:21:53  florian
+  Revision 1.96  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.95  2004/06/11 19:21:53  florian
     * fixed wrong commit
     * fixed wrong commit
 
 
   Revision 1.94  2004/06/11 13:45:33  florian
   Revision 1.94  2004/06/11 13:45:33  florian

+ 86 - 302
rtl/linux/Makefile

@@ -1,25 +1,15 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 1.1 [2004/05/23]
+# Don't edit, this file is generated by FPCMake Version 1.1 [2002/05/23]
 #
 #
 default: all
 default: all
-MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) sunos qnx
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
+MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware
+override PATH:=$(subst \,/,$(PATH))
 ifeq ($(findstring ;,$(PATH)),)
 ifeq ($(findstring ;,$(PATH)),)
 inUnix=1
 inUnix=1
 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
 else
 else
 SEARCHPATH:=$(subst ;, ,$(PATH))
 SEARCHPATH:=$(subst ;, ,$(PATH))
 endif
 endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 ifeq ($(PWD),)
 ifeq ($(PWD),)
 PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
@@ -42,26 +32,29 @@ inOS2=1
 endif
 endif
 endif
 endif
 else
 else
-ifneq ($(findstring cygdrive,$(PATH)),)
+ifneq ($(findstring cygwin,$(MACHTYPE)),)
 inCygWin=1
 inCygWin=1
 endif
 endif
 endif
 endif
+ifeq ($(OS_TARGET),freebsd)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+BSDhier=1
+endif
 ifdef inUnix
 ifdef inUnix
-SRCBATCHEXT=.sh
+BATCHEXT=.sh
 else
 else
 ifdef inOS2
 ifdef inOS2
-SRCBATCHEXT=.cmd
+BATCHEXT=.cmd
 else
 else
-SRCBATCHEXT=.bat
+BATCHEXT=.bat
 endif
 endif
 endif
 endif
 ifdef inUnix
 ifdef inUnix
 PATHSEP=/
 PATHSEP=/
 else
 else
 PATHSEP:=$(subst /,\,/)
 PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
 endif
 endif
 ifdef PWD
 ifdef PWD
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
@@ -91,7 +84,7 @@ endif
 endif
 endif
 export ECHO
 export ECHO
 endif
 endif
-override OS_TARGET_DEFAULT=linux
+OS_TARGET=linux
 override DEFAULT_FPCDIR=../..
 override DEFAULT_FPCDIR=../..
 ifndef FPC
 ifndef FPC
 ifdef PP
 ifdef PP
@@ -113,38 +106,37 @@ endif
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 ifndef FPC_VERSION
 ifndef FPC_VERSION
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+FPC_VERSION:=$(shell $(FPC) -iV)
 endif
 endif
-export FPC FPC_VERSION FPC_COMPILERINFO
+export FPC FPC_VERSION
 unexport CHECKDEPEND ALLDEPENDENCIES
 unexport CHECKDEPEND ALLDEPENDENCIES
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO)
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 1,$(COMPILERINFO))
+endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
+CPU_TARGET:=$(word 2,$(COMPILERINFO))
 endif
 endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 3,$(COMPILERINFO))
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+OS_TARGET:=$(word 4,$(COMPILERINFO))
 endif
 endif
+else
 ifndef CPU_SOURCE
 ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+CPU_SOURCE:=$(shell $(FPC) -iSP)
 endif
 endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+CPU_TARGET:=$(shell $(FPC) -iTP)
 endif
 endif
 ifndef OS_SOURCE
 ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+OS_SOURCE:=$(shell $(FPC) -iSO)
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+OS_TARGET:=$(shell $(FPC) -iTO)
+endif
 endif
 endif
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
@@ -156,12 +148,6 @@ ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
 $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
 $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
 endif
 endif
 endif
 endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
 export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
 export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
 ifdef FPCDIR
 ifdef FPCDIR
 override FPCDIR:=$(subst \,/,$(FPCDIR))
 override FPCDIR:=$(subst \,/,$(FPCDIR))
@@ -191,14 +177,11 @@ override FPCDIR:=$(FPCDIR)/..
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR:=$(FPCDIR)/..
 override FPCDIR:=$(FPCDIR)/..
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
 override FPCDIR=c:/pp
 override FPCDIR=c:/pp
 endif
 endif
 endif
 endif
 endif
 endif
 endif
 endif
-endif
 ifndef CROSSDIR
 ifndef CROSSDIR
 CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
 CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
 endif
 endif
@@ -233,12 +216,10 @@ ifeq ($(CPU_TARGET),i386)
 CPU_UNITS+=oldlinux
 CPU_UNITS+=oldlinux
 endif
 endif
 LINUXUNIT2=linux
 LINUXUNIT2=linux
-PRT0=prt0
 else
 else
 SYSTEMUNIT=syslinux
 SYSTEMUNIT=syslinux
 LINUXUNIT1=linux
 LINUXUNIT1=linux
 LINUXUNIT2=
 LINUXUNIT2=
-PRT0=prt0_10
 override FPCOPT+=-dUNIX
 override FPCOPT+=-dUNIX
 endif
 endif
 ifdef RELEASE
 ifdef RELEASE
@@ -264,12 +245,30 @@ ifdef REQUIRE_PACKAGESDIR
 override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
 override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
 endif
 endif
 ifdef ZIPINSTALL
 ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_TARGET),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
 endif
 endif
 else
 else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_SOURCE),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
 endif
 endif
 endif
 endif
 ifndef INSTALL_PREFIX
 ifndef INSTALL_PREFIX
@@ -278,7 +277,7 @@ INSTALL_PREFIX=$(PREFIX)
 endif
 endif
 endif
 endif
 ifndef INSTALL_PREFIX
 ifndef INSTALL_PREFIX
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_PREFIX=/usr/local
 INSTALL_PREFIX=/usr/local
 else
 else
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
@@ -297,7 +296,7 @@ DIST_DESTDIR:=$(BASEDIR)
 endif
 endif
 export DIST_DESTDIR
 export DIST_DESTDIR
 ifndef INSTALL_BASEDIR
 ifndef INSTALL_BASEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 else
 else
@@ -308,18 +307,10 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
 endif
 endif
 endif
 endif
 ifndef INSTALL_BINDIR
 ifndef INSTALL_BINDIR
-ifdef UNIXHier
-ifdef CROSSCOMPILE
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
-else
+ifdef UNIXINSTALLDIR
 INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
 INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-endif
-else
-ifdef CROSSCOMPILE
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
 else
 else
 INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
 INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
 INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
 endif
 endif
@@ -338,23 +329,19 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_LIBDIR
 ifndef INSTALL_LIBDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
 INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
 else
 else
 INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
 INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
 endif
 endif
 endif
 endif
 ifndef INSTALL_SOURCEDIR
 ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 ifdef BSDhier
 SRCPREFIXDIR=share/src
 SRCPREFIXDIR=share/src
 else
 else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
 SRCPREFIXDIR=src
 SRCPREFIXDIR=src
 endif
 endif
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCSUBDIR
 ifdef INSTALL_FPCSUBDIR
 INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
 INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
@@ -377,16 +364,12 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_DOCDIR
 ifndef INSTALL_DOCDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 ifdef BSDhier
 DOCPREFIXDIR=share/doc
 DOCPREFIXDIR=share/doc
 else
 else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
 DOCPREFIXDIR=doc
 DOCPREFIXDIR=doc
 endif
 endif
-endif
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 else
 else
@@ -401,28 +384,20 @@ endif
 endif
 endif
 endif
 endif
 ifndef INSTALL_EXAMPLEDIR
 ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 ifdef BSDhier
 ifdef BSDhier
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
 else
 else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
 endif
 endif
-endif
 else
 else
 ifdef BSDhier
 ifdef BSDhier
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 else
 else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
 endif
 endif
 endif
 endif
-endif
 else
 else
 ifdef INSTALL_FPCPACKAGE
 ifdef INSTALL_FPCPACKAGE
 INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
 INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
@@ -444,7 +419,6 @@ endif
 else
 else
 CROSSBINDIR=
 CROSSBINDIR=
 endif
 endif
-BATCHEXT=.bat
 LOADEREXT=.as
 LOADEREXT=.as
 EXEEXT=.exe
 EXEEXT=.exe
 PPLEXT=.ppl
 PPLEXT=.ppl
@@ -457,124 +431,6 @@ SHAREDLIBEXT=.so
 STATICLIBPREFIX=libp
 STATICLIBPREFIX=libp
 RSTEXT=.rst
 RSTEXT=.rst
 FPCMADE=fpcmade
 FPCMADE=fpcmade
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.v1
-PACKAGESUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.dos
-ZIPSUFFIX=go32
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.wat
-ZIPSUFFIX=watc
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.lnx
-ZIPSUFFIX=linux
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.freebsd
-ZIPSUFFIX=freebsd
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.netbsd
-ZIPSUFFIX=netbsd
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.openbsd
-ZIPSUFFIX=openbsd
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.w32
-ZIPSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.os2
-ZIPSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.emx
-ZIPSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-FPCMADE=fpcmade.amg
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-FPCMADE=fpcmade.ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.be
-ZIPSUFFIX=be
-endif
-ifeq ($(OS_TARGET),sunos)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.sun
-ZIPSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-FPCMADE=fpcmade.qnx
-ZIPSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-FPCMADE=fpcmade.nw
-ZIPSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-FPCMADE=fpcmade.macos
-ZIPSUFFIX=macos
-DEBUGSYMEXT=.xcoff
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.darwin
-ZIPSUFFIX=darwin
-endif
-else
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
 PPUEXT=.pp1
 OEXT=.o1
 OEXT=.o1
@@ -591,39 +447,24 @@ STATICLIBPREFIX=
 FPCMADE=fpcmade.dos
 FPCMADE=fpcmade.dos
 ZIPSUFFIX=go32
 ZIPSUFFIX=go32
 endif
 endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.dos
-ZIPSUFFIX=watcom
-endif
 ifeq ($(OS_TARGET),linux)
 ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.lnx
 FPCMADE=fpcmade.lnx
 ZIPSUFFIX=linux
 ZIPSUFFIX=linux
 endif
 endif
 ifeq ($(OS_TARGET),freebsd)
 ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.freebsd
 FPCMADE=fpcmade.freebsd
 ZIPSUFFIX=freebsd
 ZIPSUFFIX=freebsd
 endif
 endif
 ifeq ($(OS_TARGET),netbsd)
 ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
 EXEEXT=
 EXEEXT=
 HASSHAREDLIB=1
 HASSHAREDLIB=1
 FPCMADE=fpcmade.netbsd
 FPCMADE=fpcmade.netbsd
 ZIPSUFFIX=netbsd
 ZIPSUFFIX=netbsd
 endif
 endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.openbsd
-ZIPSUFFIX=openbsd
-endif
 ifeq ($(OS_TARGET),win32)
 ifeq ($(OS_TARGET),win32)
 PPUEXT=.ppw
 PPUEXT=.ppw
 OEXT=.ow
 OEXT=.ow
@@ -635,7 +476,6 @@ FPCMADE=fpcmade.w32
 ZIPSUFFIX=w32
 ZIPSUFFIX=w32
 endif
 endif
 ifeq ($(OS_TARGET),os2)
 ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
 PPUEXT=.ppo
 PPUEXT=.ppo
 ASMEXT=.so2
 ASMEXT=.so2
 OEXT=.oo2
 OEXT=.oo2
@@ -650,7 +490,7 @@ ECHO=echo
 endif
 endif
 ifeq ($(OS_TARGET),amiga)
 ifeq ($(OS_TARGET),amiga)
 EXEEXT=
 EXEEXT=
-PPUEXT=.ppu
+PPUEXT=.ppa
 ASMEXT=.asm
 ASMEXT=.asm
 OEXT=.o
 OEXT=.o
 SMARTEXT=.sl
 SMARTEXT=.sl
@@ -659,7 +499,7 @@ SHAREDLIBEXT=.library
 FPCMADE=fpcmade.amg
 FPCMADE=fpcmade.amg
 endif
 endif
 ifeq ($(OS_TARGET),atari)
 ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
+PPUEXT=.ppt
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
 SMARTEXT=.sl
 SMARTEXT=.sl
@@ -668,7 +508,6 @@ EXEEXT=.ttp
 FPCMADE=fpcmade.ata
 FPCMADE=fpcmade.ata
 endif
 endif
 ifeq ($(OS_TARGET),beos)
 ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -679,7 +518,6 @@ FPCMADE=fpcmade.be
 ZIPSUFFIX=be
 ZIPSUFFIX=be
 endif
 endif
 ifeq ($(OS_TARGET),sunos)
 ifeq ($(OS_TARGET),sunos)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -690,7 +528,6 @@ FPCMADE=fpcmade.sun
 ZIPSUFFIX=sun
 ZIPSUFFIX=sun
 endif
 endif
 ifeq ($(OS_TARGET),qnx)
 ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
 PPUEXT=.ppu
 PPUEXT=.ppu
 ASMEXT=.s
 ASMEXT=.s
 OEXT=.o
 OEXT=.o
@@ -702,8 +539,8 @@ ZIPSUFFIX=qnx
 endif
 endif
 ifeq ($(OS_TARGET),netware)
 ifeq ($(OS_TARGET),netware)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
+PPUEXT=.ppn
+OEXT=.on
 ASMEXT=.s
 ASMEXT=.s
 SMARTEXT=.sl
 SMARTEXT=.sl
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -712,24 +549,12 @@ FPCMADE=fpcmade.nw
 ZIPSUFFIX=nw
 ZIPSUFFIX=nw
 EXEEXT=.nlm
 EXEEXT=.nlm
 endif
 endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-FPCMADE=fpcmade.macos
-endif
-endif
 ifndef ECHO
 ifndef ECHO
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ifeq ($(ECHO),)
 ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
 ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ifeq ($(ECHO),)
-ECHO= __missing_command__
+ECHO=
 else
 else
 ECHO:=$(firstword $(ECHO))
 ECHO:=$(firstword $(ECHO))
 endif
 endif
@@ -743,7 +568,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(DATE),)
 ifeq ($(DATE),)
 DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
 DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(DATE),)
 ifeq ($(DATE),)
-DATE= __missing_command__
+DATE=
 else
 else
 DATE:=$(firstword $(DATE))
 DATE:=$(firstword $(DATE))
 endif
 endif
@@ -757,7 +582,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(GINSTALL),)
 ifeq ($(GINSTALL),)
 GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
 GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(GINSTALL),)
 ifeq ($(GINSTALL),)
-GINSTALL= __missing_command__
+GINSTALL=
 else
 else
 GINSTALL:=$(firstword $(GINSTALL))
 GINSTALL:=$(firstword $(GINSTALL))
 endif
 endif
@@ -769,7 +594,7 @@ export GINSTALL
 ifndef CPPROG
 ifndef CPPROG
 CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
 CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(CPPROG),)
 ifeq ($(CPPROG),)
-CPPROG= __missing_command__
+CPPROG=
 else
 else
 CPPROG:=$(firstword $(CPPROG))
 CPPROG:=$(firstword $(CPPROG))
 endif
 endif
@@ -778,7 +603,7 @@ export CPPROG
 ifndef RMPROG
 ifndef RMPROG
 RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
 RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(RMPROG),)
 ifeq ($(RMPROG),)
-RMPROG= __missing_command__
+RMPROG=
 else
 else
 RMPROG:=$(firstword $(RMPROG))
 RMPROG:=$(firstword $(RMPROG))
 endif
 endif
@@ -787,18 +612,14 @@ export RMPROG
 ifndef MVPROG
 ifndef MVPROG
 MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
 MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(MVPROG),)
 ifeq ($(MVPROG),)
-MVPROG= __missing_command__
+MVPROG=
 else
 else
 MVPROG:=$(firstword $(MVPROG))
 MVPROG:=$(firstword $(MVPROG))
 endif
 endif
 endif
 endif
 export MVPROG
 export MVPROG
 ifndef ECHOREDIR
 ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
+ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
 endif
 endif
 ifndef COPY
 ifndef COPY
 COPY:=$(CPPROG) -fp
 COPY:=$(CPPROG) -fp
@@ -836,7 +657,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
 ifndef PPUMOVE
 ifndef PPUMOVE
 PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
 PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(PPUMOVE),)
 ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command__
+PPUMOVE=
 else
 else
 PPUMOVE:=$(firstword $(PPUMOVE))
 PPUMOVE:=$(firstword $(PPUMOVE))
 endif
 endif
@@ -845,7 +666,7 @@ export PPUMOVE
 ifndef FPCMAKE
 ifndef FPCMAKE
 FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
 FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(FPCMAKE),)
 ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command__
+FPCMAKE=
 else
 else
 FPCMAKE:=$(firstword $(FPCMAKE))
 FPCMAKE:=$(firstword $(FPCMAKE))
 endif
 endif
@@ -854,7 +675,7 @@ export FPCMAKE
 ifndef ZIPPROG
 ifndef ZIPPROG
 ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
 ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ZIPPROG),)
 ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command__
+ZIPPROG=
 else
 else
 ZIPPROG:=$(firstword $(ZIPPROG))
 ZIPPROG:=$(firstword $(ZIPPROG))
 endif
 endif
@@ -863,25 +684,21 @@ export ZIPPROG
 ifndef TARPROG
 ifndef TARPROG
 TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
 TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(TARPROG),)
 ifeq ($(TARPROG),)
-TARPROG= __missing_command__
+TARPROG=
 else
 else
 TARPROG:=$(firstword $(TARPROG))
 TARPROG:=$(firstword $(TARPROG))
 endif
 endif
 endif
 endif
 export TARPROG
 export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
+ASNAME=as
+LDNAME=ld
+ARNAME=ar
+RCNAME=rc
 ifeq ($(OS_TARGET),win32)
 ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
 ASNAME=asw
 ASNAME=asw
 LDNAME=ldw
 LDNAME=ldw
 ARNAME=arw
 ARNAME=arw
 endif
 endif
-endif
-endif
 ifndef ASPROG
 ifndef ASPROG
 ifdef CROSSBINDIR
 ifdef CROSSBINDIR
 ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
 ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
@@ -914,7 +731,7 @@ AS=$(ASPROG)
 LD=$(LDPROG)
 LD=$(LDPROG)
 RC=$(RCPROG)
 RC=$(RCPROG)
 AR=$(ARPROG)
 AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
+PPAS=ppas$(BATCHEXT)
 ifdef inUnix
 ifdef inUnix
 LDCONFIG=ldconfig
 LDCONFIG=ldconfig
 else
 else
@@ -959,17 +776,6 @@ endif
 ifneq ($(OS_TARGET),$(OS_SOURCE))
 ifneq ($(OS_TARGET),$(OS_SOURCE))
 override FPCOPT+=-T$(OS_TARGET)
 override FPCOPT+=-T$(OS_TARGET)
 endif
 endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
 ifdef UNITDIR
 ifdef UNITDIR
 override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
 endif
 endif
@@ -996,12 +802,8 @@ ifdef RELEASE
 ifeq ($(CPU_TARGET),i386)
 ifeq ($(CPU_TARGET),i386)
 FPCCPUOPT:=-OG2p3
 FPCCPUOPT:=-OG2p3
 else
 else
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1
-else
 FPCCPUOPT:=
 FPCCPUOPT:=
 endif
 endif
-endif
 override FPCOPT+=-Xs $(FPCCPUOPT) -n
 override FPCOPT+=-Xs $(FPCCPUOPT) -n
 override FPCOPTDEF+=RELEASE
 override FPCOPTDEF+=RELEASE
 endif
 endif
@@ -1055,11 +857,6 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 endif
 endif
 endif
 endif
-ifeq ($(OS_TARGET),linux)
-ifeq ($(FPC_VERSION),1.0.6)
-override FPCOPTDEF+=HASUNIX
-endif
-endif
 ifdef OPT
 ifdef OPT
 override FPCOPT+=$(OPT)
 override FPCOPT+=$(OPT)
 endif
 endif
@@ -1078,12 +875,12 @@ override COMPILER:=$(FPC) $(FPCOPT)
 ifeq (,$(findstring -s ,$(COMPILER)))
 ifeq (,$(findstring -s ,$(COMPILER)))
 EXECPPAS=
 EXECPPAS=
 else
 else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifeq ($(OS_SOURCE),$(OS_TARGET))
 EXECPPAS:=@$(PPAS)
 EXECPPAS:=@$(PPAS)
 endif
 endif
 endif
 endif
 .PHONY: fpc_loaders
 .PHONY: fpc_loaders
-ifneq ($(TARGET_LOADERS),)
+ifdef TARGET_LOADERS
 override ALLTARGET+=fpc_loaders
 override ALLTARGET+=fpc_loaders
 override CLEANTARGET+=fpc_loaders_clean
 override CLEANTARGET+=fpc_loaders_clean
 override INSTALLTARGET+=fpc_loaders_install
 override INSTALLTARGET+=fpc_loaders_install
@@ -1098,7 +895,7 @@ fpc_loaders_install:
 	$(MKDIR) $(INSTALL_UNITDIR)
 	$(MKDIR) $(INSTALL_UNITDIR)
 	$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
 	$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
 .PHONY: fpc_units
 .PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
+ifdef TARGET_UNITS
 override ALLTARGET+=fpc_units
 override ALLTARGET+=fpc_units
 override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
 override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
 override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
 override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
@@ -1120,7 +917,7 @@ fpc_debug:
 	$(MAKE) all DEBUG=1
 	$(MAKE) all DEBUG=1
 fpc_release:
 fpc_release:
 	$(MAKE) all RELEASE=1
 	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .dpr .pp .rc .res
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
 %$(PPUEXT): %.pp
 %$(PPUEXT): %.pp
 	$(COMPILER) $<
 	$(COMPILER) $<
 	$(EXECPPAS)
 	$(EXECPPAS)
@@ -1133,14 +930,10 @@ fpc_release:
 %$(EXEEXT): %.pas
 %$(EXEEXT): %.pas
 	$(COMPILER) $<
 	$(COMPILER) $<
 	$(EXECPPAS)
 	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
 %.res: %.rc
 %.res: %.rc
 	windres -i $< -o $@
 	windres -i $< -o $@
 vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
 .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
 .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
 ifdef INSTALL_UNITS
 ifdef INSTALL_UNITS
@@ -1217,9 +1010,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
 endif
 endif
 ifdef CLEANPPUFILES
 ifdef CLEANPPUFILES
 override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
 override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) 
-endif
 override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
 override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
 override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
 override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
 endif
 endif
@@ -1243,7 +1033,6 @@ ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
 endif
 endif
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
 fpc_distclean: clean
 fpc_distclean: clean
 ifdef COMPILER_UNITTARGETDIR
 ifdef COMPILER_UNITTARGETDIR
 TARGETDIRCLEAN=fpc_clean
 TARGETDIRCLEAN=fpc_clean
@@ -1255,13 +1044,9 @@ endif
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DELTREE) *$(SMARTEXT)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
 ifdef AOUTEXT
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 	-$(DEL) *$(AOUTEXT)
 endif
 endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
 .PHONY: fpc_baseinfo
 .PHONY: fpc_baseinfo
 override INFORULES+=fpc_baseinfo
 override INFORULES+=fpc_baseinfo
 fpc_baseinfo:
 fpc_baseinfo:
@@ -1306,7 +1091,6 @@ fpc_baseinfo:
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  Echo...... $(ECHO)
 	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)
@@ -1392,8 +1176,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 include $(PROCINC)/makefile.cpu
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
-prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
-	$(AS) -o prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
+prt0$(OEXT) : $(CPU_TARGET)/prt0.as
+	$(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 	$(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
 	$(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
 gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
 gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as

+ 2 - 4
rtl/linux/Makefile.fpc

@@ -69,12 +69,10 @@ ifeq ($(CPU_TARGET),i386)
 CPU_UNITS+=oldlinux
 CPU_UNITS+=oldlinux
 endif
 endif
 LINUXUNIT2=linux
 LINUXUNIT2=linux
-PRT0=prt0
 else
 else
 SYSTEMUNIT=syslinux
 SYSTEMUNIT=syslinux
 LINUXUNIT1=linux
 LINUXUNIT1=linux
 LINUXUNIT2=
 LINUXUNIT2=
-PRT0=prt0_10
 override FPCOPT+=-dUNIX
 override FPCOPT+=-dUNIX
 endif
 endif
 
 
@@ -119,8 +117,8 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # Loaders
 # Loaders
 #
 #
 
 
-prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
-        $(AS) -o prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
+prt0$(OEXT) : $(CPU_TARGET)/prt0.as
+        $(AS) -o prt0$(OEXT) $(CPU_TARGET)/prt0.as
 
 
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
 dllprt0$(OEXT) : $(CPU_TARGET)/dllprt0.as
         $(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
         $(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as

+ 14 - 5
rtl/linux/arm/prt0.as

@@ -50,14 +50,14 @@ _start:
 	ldmia   sp!, {a2}
 	ldmia   sp!, {a2}
 
 
 	/* Pop argc off the stack and save a pointer to argv */
 	/* Pop argc off the stack and save a pointer to argv */
-	ldr ip,=U_SYSTEM_ARGC
-	ldr a3,=U_SYSTEM_ARGV 
+	ldr ip,=operatingsystem_parameter_argc
+	ldr a3,=operatingsystem_parameter_argv
 	str a2,[ip]
 	str a2,[ip]
 
 
 	/* calc envp */
 	/* calc envp */
 	add a2,a2,#1
 	add a2,a2,#1
 	add a2,sp,a2,LSL #2
 	add a2,sp,a2,LSL #2
-	ldr ip,=U_SYSTEM_ENVP
+	ldr ip,=operatingsystem_parameter_envp
 
 
 	str sp,[a3]
 	str sp,[a3]
     str a2,[ip]
     str a2,[ip]
@@ -68,7 +68,7 @@ _start:
 	.globl  _haltproc
 	.globl  _haltproc
     .type   _haltproc,#function
     .type   _haltproc,#function
 _haltproc:
 _haltproc:
-	ldr		r0,=U_SYSTEM_EXITCODE
+	ldr		r0,=operatingsystem_result
 	ldrb	r0,[r0]
 	ldrb	r0,[r0]
 	swi		0x900001
 	swi		0x900001
 	b		_haltproc
 	b		_haltproc
@@ -81,6 +81,11 @@ __data_start:
 	.weak data_start
 	.weak data_start
 	data_start = __data_start
 	data_start = __data_start
 
 
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+
 	.section ".comment"
 	.section ".comment"
 	.byte 0
 	.byte 0
 	.ascii "generated by FPC http://www.freepascal.org\0"
 	.ascii "generated by FPC http://www.freepascal.org\0"
@@ -101,7 +106,11 @@ __data_start:
 
 
 /*
 /*
   $Log$
   $Log$
-  Revision 1.3  2004-03-11 22:39:53  florian
+  Revision 1.4  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.3  2004/03/11 22:39:53  florian
     * arm startup code fixed
     * arm startup code fixed
     * made some generic math code more readable
     * made some generic math code more readable
 
 

+ 44 - 28
rtl/linux/i386/cprt0.as

@@ -14,25 +14,39 @@
 #**********************************************************************}
 #**********************************************************************}
 #
 #
 # Linux ELF startup code for Free Pascal
 # Linux ELF startup code for Free Pascal
+#
+#
+# Stack layout at program start:
+#
+#         nil
+#         envn
+#         ....
+#         ....           ENVIRONMENT VARIABLES
+#         env1
+#         env0
+#         nil
+#         argn
+#         ....
+#         ....           COMMAND LINE OPTIONS
+#         arg1
+#         arg0
+#         argc <--- esp
 #
 #
 
 
-        .file   "prt1.as"
+        .file   "cprt0.as"
         .text
         .text
         .globl  _start
         .globl  _start
         .type   _start,@function
         .type   _start,@function
 _start:
 _start:
         /* First locate the start of the environment variables */
         /* First locate the start of the environment variables */
-        popl    %ecx
-        movl    %esp,%ebx               /* Points to the arguments */
-        movl    %ecx,%eax
-        incl    %eax
-        shll    $2,%eax
-        addl    %esp,%eax
+        popl    %ecx                    /* Get argc in ecx */
+        movl    %esp,%ebx               /* Esp now points to the arguments */
+        leal    4(%esp,%ecx,4),%eax     /* The start of the environment is: esp+4*eax+8 */
         andl    $0xfffffff8,%esp        /* Align stack */
         andl    $0xfffffff8,%esp        /* Align stack */
 
 
-        movl    %eax,U_SYSTEM_ENVP    /* Move the environment pointer */
-        movl    %ecx,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSTEM_ARGV    /* Move the argument pointer    */
+        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
+        movl    %ecx,operatingsystem_parameter_argc    /* Move the argument counter    */
+        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
 
         movl    %eax,__environ          /* libc environ */
         movl    %eax,__environ          /* libc environ */
 
 
@@ -44,10 +58,10 @@ _start:
         movzwl  __fpu_control,%eax
         movzwl  __fpu_control,%eax
         pushl   %eax
         pushl   %eax
         call    __setfpucw
         call    __setfpucw
-        addl    $4,%esp
+        popl    %eax
         pushl   $_fini
         pushl   $_fini
         call    atexit
         call    atexit
-        addl    $4,%esp
+        popl    %eax
         call    _init
         call    _init
 
 
         popl    %eax
         popl    %eax
@@ -59,30 +73,32 @@ _start:
         .globl _haltproc
         .globl _haltproc
         .type _haltproc,@function
         .type _haltproc,@function
 _haltproc:
 _haltproc:
-        xorl    %ebx,%ebx               /* load and save exitcode */
-        movw    U_SYSTEM_EXITCODE,%bx
-        pushl   %ebx
-
-        call    exit                    /* call libc exit, this will */
-                                        /* write the gmon.out */
-
-        movl    $1,%eax                 /* exit call */
-        popl    %ebx
+_haltproc2:             # GAS <= 2.15 bug: generates larger jump if a label is exported
+        movzwl  operatingsystem_result,%ebx
+	pushl   %ebx
+	call    exit
+        xorl    %eax,%eax
+        incl    %eax                    /* eax=1, exit call */
+	popl    %ebx
         int     $0x80
         int     $0x80
-        jmp     _haltproc
+        jmp     _haltproc2
 
 
 .data
 .data
-        .align  4
 
 
-        .globl  ___fpc_brk_addr         /* heap management */
+.bss
         .type   ___fpc_brk_addr,@object
         .type   ___fpc_brk_addr,@object
-        .size   ___fpc_brk_addr,4
-___fpc_brk_addr:
-        .long   0
+        .comm   ___fpc_brk_addr,4        /* heap management */
 
 
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  2002-09-07 16:01:20  peter
+# Revision 1.4  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.3  2002/09/07 16:01:20  peter
 #   * old logs removed and tabs fixed
 #   * old logs removed and tabs fixed
 #
 #

+ 34 - 12
rtl/linux/i386/cprt21.as

@@ -14,6 +14,22 @@
 #**********************************************************************}
 #**********************************************************************}
 #
 #
 # Linux ELF startup code for Free Pascal
 # Linux ELF startup code for Free Pascal
+#
+# Stack layout at program start:
+#
+#         nil
+#         envn
+#         ....
+#         ....           ENVIRONMENT VARIABLES
+#         env1
+#         env0
+#         nil
+#         argn
+#         ....
+#         ....           COMMAND LINE OPTIONS
+#         arg1
+#         arg0
+#         argc <--- esp
 #
 #
 
 
         .file   "prt1.as"
         .file   "prt1.as"
@@ -22,6 +38,7 @@
         .type   _start,@function
         .type   _start,@function
 _start:
 _start:
         /* First locate the start of the environment variables */
         /* First locate the start of the environment variables */
+
         popl    %esi
         popl    %esi
         movl    %eax,%edi
         movl    %eax,%edi
 
 
@@ -32,9 +49,9 @@ _start:
         addl    %esp,%eax
         addl    %esp,%eax
         andl    $0xfffffff8,%esp        /* Align stack */
         andl    $0xfffffff8,%esp        /* Align stack */
 
 
-        movl    %eax,U_SYSTEM_ENVP    /* Move the environment pointer */
-        movl    %esi,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSTEM_ARGV    /* Move the argument pointer    */
+        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
+        movl    %esi,operatingsystem_parameter_argc    /* Move the argument counter    */
+        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
 
         xorl    %ebp,%ebp
         xorl    %ebp,%ebp
         pushl   %edi
         pushl   %edi
@@ -65,8 +82,7 @@ main:
         .globl _haltproc
         .globl _haltproc
         .type _haltproc,@function
         .type _haltproc,@function
 _haltproc:
 _haltproc:
-        xorl    %eax,%eax               /* load and save exitcode */
-        movw    U_SYSTEM_EXITCODE,%ax
+        movzwl    operatingsystem_result,%eax
 
 
         movl    ___fpc_ret,%edx         /* return to libc */
         movl    ___fpc_ret,%edx         /* return to libc */
         movl    ___fpc_ret_ebp,%ebp
         movl    ___fpc_ret_ebp,%ebp
@@ -79,12 +95,6 @@ _fini_dummy:
 .data
 .data
         .align  4
         .align  4
 
 
-        .globl  ___fpc_brk_addr         /* heap management */
-        .type   ___fpc_brk_addr,@object
-        .size   ___fpc_brk_addr,4
-___fpc_brk_addr:
-        .long   0
-
 ___fpc_ret:                             /* return address to libc */
 ___fpc_ret:                             /* return address to libc */
         .long   0
         .long   0
 ___fpc_ret_ebx:
 ___fpc_ret_ebx:
@@ -92,9 +102,21 @@ ___fpc_ret_ebx:
 ___fpc_ret_ebp:
 ___fpc_ret_ebp:
         .long   0
         .long   0
 
 
+.bss
+        .type   ___fpc_brk_addr,@object
+        .comm   ___fpc_brk_addr,4        /* heap management */
+
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.5  2002-09-07 16:01:20  peter
+# Revision 1.6  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.5  2002/09/07 16:01:20  peter
 #   * old logs removed and tabs fixed
 #   * old logs removed and tabs fixed
 #
 #

+ 18 - 8
rtl/linux/i386/dllprt0.as

@@ -30,9 +30,9 @@ FPC_LIB_START:
         movl    12(%ebp),%ecx
         movl    12(%ebp),%ecx
         movl    16(%ebp),%edx
         movl    16(%ebp),%edx
 
 
-        movl    %eax,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ecx,U_SYSTEM_ARGV    /* Move the argument pointer    */
-        movl    %edx,U_SYSTEM_ENVP    /* Move the environment pointer */
+        movl    %edx,operatingsystem_parameter_envp    /* Move the environment pointer */
+        movl    %eax,operatingsystem_parameter_argc    /* Move the argument counter    */
+        movl    %ecx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
 
         movb    $1,U_SYSTEM_ISLIBRARY
         movb    $1,U_SYSTEM_ISLIBRARY
 
 
@@ -44,14 +44,24 @@ FPC_LIB_START:
         .globl  _haltproc
         .globl  _haltproc
         .type   _haltproc,@function
         .type   _haltproc,@function
 _haltproc:
 _haltproc:
-        movl    $1,%eax                 /* exit call */
-        xorl    %ebx,%ebx
-        movw    U_SYSTEM_EXITCODE,%bx
+_haltproc2:             # GAS <= 2.15 bug: generates larger jump if a label is exported
+        xorl    %eax,%eax
+        incl    %eax                    /* eax=1, exit call */
+        movzwl  operatingsystem_result,%ebx
         int     $0x80
         int     $0x80
-        jmp     _haltproc
+        jmp     _haltproc2
+
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.2  2002-09-07 16:01:20  peter
+# Revision 1.3  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.2  2002/09/07 16:01:20  peter
 #   * old logs removed and tabs fixed
 #   * old logs removed and tabs fixed
 #
 #

+ 19 - 15
rtl/linux/i386/gprt0.as

@@ -31,9 +31,9 @@ _start:
         addl    %esp,%eax
         addl    %esp,%eax
         andl    $0xfffffff8,%esp        /* Align stack */
         andl    $0xfffffff8,%esp        /* Align stack */
 
 
-        movl    %eax,U_SYSTEM_ENVP    /* Move the environment pointer */
-        movl    %ecx,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSTEM_ARGV    /* Move the argument pointer    */
+        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
+        movl    %ecx,operatingsystem_parameter_argc    /* Move the argument counter    */
+        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
 
         finit                           /* initialize fpu */
         finit                           /* initialize fpu */
         fwait
         fwait
@@ -53,31 +53,35 @@ _start:
         .globl _haltproc
         .globl _haltproc
         .type _haltproc,@function
         .type _haltproc,@function
 _haltproc:
 _haltproc:
-        xorl    %ebx,%ebx               /* load and save exitcode */
-        movw    U_SYSTEM_EXITCODE,%bx
+_haltproc2:             # GAS <= 2.15 bug: generates larger jump if a label is exported
+        movzwl  operatingsystem_result,%ebx
         pushl   %ebx
         pushl   %ebx
-
         call    exit                    /* call libc exit, this will */
         call    exit                    /* call libc exit, this will */
                                         /* write the gmon.out */
                                         /* write the gmon.out */
-
-        movl    $1,%eax                 /* exit call */
+        xorl    %eax,%eax
+        incl    %eax                    /* eax=1, exit call */
         popl    %ebx
         popl    %ebx
         int     $0x80
         int     $0x80
-        jmp     _haltproc
+        jmp     _haltproc2
 
 
 .data
 .data
-        .align  4
 ___fpucw:
 ___fpucw:
         .long   0x1332
         .long   0x1332
 
 
-        .globl  ___fpc_brk_addr         /* heap management */
+.bss
         .type   ___fpc_brk_addr,@object
         .type   ___fpc_brk_addr,@object
-        .size   ___fpc_brk_addr,4
-___fpc_brk_addr:
-        .long   0
+        .comm   ___fpc_brk_addr,4        /* heap management */
+
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  2002-09-07 16:01:20  peter
+# Revision 1.4  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.3  2002/09/07 16:01:20  peter
 #   * old logs removed and tabs fixed
 #   * old logs removed and tabs fixed
 #
 #

+ 17 - 12
rtl/linux/i386/gprt21.as

@@ -32,9 +32,9 @@ _start:
         addl    %esp,%eax
         addl    %esp,%eax
         andl    $0xfffffff8,%esp        /* Align stack */
         andl    $0xfffffff8,%esp        /* Align stack */
 
 
-        movl    %eax,U_SYSTEM_ENVP    /* Move the environment pointer */
-        movl    %esi,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSTEM_ARGV    /* Move the argument pointer    */
+        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
+        movl    %esi,operatingsystem_parameter_argc    /* Move the argument counter    */
+        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
 
         movl    %edi,%eax
         movl    %edi,%eax
         xorl    %ebp,%ebp
         xorl    %ebp,%ebp
@@ -68,8 +68,7 @@ cmain:
         .globl _haltproc
         .globl _haltproc
         .type _haltproc,@function
         .type _haltproc,@function
 _haltproc:
 _haltproc:
-        xorl    %eax,%eax               /* load and save exitcode */
-        movw    U_SYSTEM_EXITCODE,%ax
+        movzwl    operatingsystem_result,%eax
 
 
         movl    ___fpc_ret,%edx         /* return to libc */
         movl    ___fpc_ret,%edx         /* return to libc */
         movl    ___fpc_ret_ebx,%ebx
         movl    ___fpc_ret_ebx,%ebx
@@ -105,12 +104,6 @@ __gmon_start__:
 .data
 .data
         .align  4
         .align  4
 
 
-        .globl  ___fpc_brk_addr         /* heap management */
-        .type   ___fpc_brk_addr,@object
-        .size   ___fpc_brk_addr,4
-___fpc_brk_addr:
-        .long   0
-
 ___fpc_ret:                             /* return address to libc */
 ___fpc_ret:                             /* return address to libc */
         .long   0
         .long   0
 ___fpc_ret_ebx:
 ___fpc_ret_ebx:
@@ -123,9 +116,21 @@ ___fpc_ret_edi:
 .bss
 .bss
         .lcomm __monstarted,4
         .lcomm __monstarted,4
 
 
+        .type   ___fpc_brk_addr,@object
+        .comm   ___fpc_brk_addr,4        /* heap management */
+
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+
+
 #
 #
 # $Log$
 # $Log$
-# Revision 1.5  2004-03-10 20:38:59  peter
+# Revision 1.6  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.5  2004/03/10 20:38:59  peter
 #   * only i386 needs cprt21 to link with glibc 2.1+
 #   * only i386 needs cprt21 to link with glibc 2.1+
 #
 #
 # Revision 1.4  2002/09/07 16:01:20  peter
 # Revision 1.4  2002/09/07 16:01:20  peter

+ 53 - 23
rtl/linux/i386/prt0.as

@@ -1,8 +1,8 @@
 #
 #
 #   $Id$
 #   $Id$
 #   This file is part of the Free Pascal run time library.
 #   This file is part of the Free Pascal run time library.
-#   Copyright (c) 1999-2000 by Michael Van Canneyt and Peter Vreman
-#   members of the Free Pascal development team.
+#   Copyright (c) 1999-2004 by Michael Van Canneyt, Peter Vreman,
+#   & Daniel Mantione, members of the Free Pascal development team.
 #
 #
 #   See the file COPYING.FPC, included in this distribution,
 #   See the file COPYING.FPC, included in this distribution,
 #   for details about the copyright.
 #   for details about the copyright.
@@ -14,27 +14,45 @@
 #**********************************************************************}
 #**********************************************************************}
 #
 #
 # Linux ELF startup code for Free Pascal
 # Linux ELF startup code for Free Pascal
+#
+#
+# Stack layout at program start:
+# 
+#         nil
+#         envn
+#         ....
+#         ....           ENVIRONMENT VARIABLES
+#         env1
+#         env0
+#         nil
+#         argn
+#         ....
+#         ....           COMMAND LINE OPTIONS
+#         arg1
+#         arg0
+#         argc <--- esp
 #
 #
 
 
-        .file   "prt1.as"
+        .file   "prt0.as"
         .text
         .text
         .globl  _start
         .globl  _start
         .type   _start,@function
         .type   _start,@function
 _start:
 _start:
         /* First locate the start of the environment variables */
         /* First locate the start of the environment variables */
-        popl    %ecx
-        movl    %esp,%ebx               /* Points to the arguments */
-        movl    %ecx,%eax
-        incl    %eax
-        shll    $2,%eax
-        addl    %esp,%eax
+        popl    %ecx                    /* Get argc in ecx */
+        movl    %esp,%ebx               /* Esp now points to the arguments */
+	leal    4(%esp,%ecx,4),%eax     /* The start of the environment is: esp+4*eax+8 */
         andl    $0xfffffff8,%esp        /* Align stack */
         andl    $0xfffffff8,%esp        /* Align stack */
 
 
-        movl    %eax,U_SYSTEM_ENVP    /* Move the environment pointer */
-        movl    %ecx,U_SYSTEM_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSTEM_ARGV    /* Move the argument pointer    */
+	leal    operatingsystem_parameters,%edi
+	stosl	/* Move the environment pointer */
+	xchg    %ecx,%eax
+	stosl   /* Move the argument counter    */
+	xchg	%ebx,%eax
+	stosl   /* Move the argument pointer    */
+
 
 
-        finit                           /* initialize fpu */
+        fninit                           /* initialize fpu */
         fwait
         fwait
         fldcw   ___fpucw
         fldcw   ___fpucw
 
 
@@ -44,25 +62,37 @@ _start:
         .globl  _haltproc
         .globl  _haltproc
         .type   _haltproc,@function
         .type   _haltproc,@function
 _haltproc:
 _haltproc:
-        movl    $1,%eax                 /* exit call */
-        xorl    %ebx,%ebx
-        movw    U_SYSTEM_EXITCODE,%bx
+_haltproc2:		# GAS <= 2.15 bug: generates larger jump if a label is exported
+	xorl    %eax,%eax
+	incl    %eax			/* eax=1, exit call */
+        movzwl  operatingsystem_result,%ebx
         int     $0x80
         int     $0x80
-        jmp     _haltproc
+        jmp     _haltproc2
 
 
 .data
 .data
-        .align  4
 ___fpucw:
 ___fpucw:
         .long   0x1332
         .long   0x1332
 
 
-        .globl  ___fpc_brk_addr         /* heap management */
+
+.bss
         .type   ___fpc_brk_addr,@object
         .type   ___fpc_brk_addr,@object
-        .size   ___fpc_brk_addr,4
-___fpc_brk_addr:
-        .long   0
+	.comm   ___fpc_brk_addr,4        /* heap management */
+
+operatingsystem_parameters:
+	.skip 3*4
 
 
+	.global operatingsystem_parameter_envp
+	.global operatingsystem_parameter_argc
+	.global operatingsystem_parameter_argv
+	.set operatingsystem_parameter_envp,operatingsystem_parameters+0
+	.set operatingsystem_parameter_argc,operatingsystem_parameters+4
+	.set operatingsystem_parameter_argv,operatingsystem_parameters+8
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  2002-09-07 16:01:20  peter
+# Revision 1.4  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.3  2002/09/07 16:01:20  peter
 #   * old logs removed and tabs fixed
 #   * old logs removed and tabs fixed
 #
 #

+ 0 - 68
rtl/linux/i386/prt0_10.as

@@ -1,68 +0,0 @@
-#
-#   $Id$
-#   This file is part of the Free Pascal run time library.
-#   Copyright (c) 1999-2000 by 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.
-#
-#**********************************************************************}
-#
-# Linux ELF startup code for Free Pascal
-#
-
-        .file   "prt1.as"
-        .text
-        .globl  _start
-        .type   _start,@function
-_start:
-        /* First locate the start of the environment variables */
-        popl    %ecx
-        movl    %esp,%ebx               /* Points to the arguments */
-        movl    %ecx,%eax
-        incl    %eax
-        shll    $2,%eax
-        addl    %esp,%eax
-        andl    $0xfffffff8,%esp        /* Align stack */
-
-        movl    %eax,U_SYSLINUX_ENVP    /* Move the environment pointer */
-        movl    %ecx,U_SYSLINUX_ARGC    /* Move the argument counter    */
-        movl    %ebx,U_SYSLINUX_ARGV    /* Move the argument pointer    */
-
-        finit                           /* initialize fpu */
-        fwait
-        fldcw   ___fpucw
-
-        xorl    %ebp,%ebp
-        call    PASCALMAIN
-
-        .globl  _haltproc
-        .type   _haltproc,@function
-_haltproc:
-        movl    $1,%eax                 /* exit call */
-        xorl    %ebx,%ebx
-        movw    U_SYSLINUX_EXITCODE,%bx
-        int     $0x80
-        jmp     _haltproc
-
-.data
-        .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
-
-#
-# $Log$
-# Revision 1.3  2002-09-07 16:01:20  peter
-#   * old logs removed and tabs fixed
-#

+ 18 - 9
rtl/linux/powerpc/cprt0.as

@@ -31,14 +31,14 @@ _start:
 	mtlr	0
 	mtlr	0
 	stw	0,0(1)
 	stw	0,0(1)
 
 
-        lis 	11,U_SYSTEM_ARGC@ha
-	stw 	3,U_SYSTEM_ARGC@l(11);
+        lis 	11,operatingsystem_parameter_argc@ha
+	stw 	3,operatingsystem_parameter_argc@l(11);
 
 
-        lis 	11,U_SYSTEM_ARGV@ha
-	stw 	4,U_SYSTEM_ARGV@l(11);
+        lis 	11,operatingsystem_parameter_argc@ha
+	stw 	4,operatingsystem_parameter_argc@l(11);
 
 
-	lis 	11,U_SYSTEM_ENVP@ha
-	stw 	5,U_SYSTEM_ENVP@l(11);
+	lis 	11,operatingsystem_parameter_envp@ha
+	stw 	5,operatingsystem_parameter_envp@l(11);
 
 
 	/* init libc, parameters are already setup at this point */
 	/* init libc, parameters are already setup at this point */
 	bl	__libc_init_first
 	bl	__libc_init_first
@@ -52,8 +52,8 @@ _start:
         .type   _haltproc,@function
         .type   _haltproc,@function
 _haltproc:
 _haltproc:
         li      0,1	         /* exit call */
         li      0,1	         /* exit call */
-	lis	3,U_SYSTEM_EXITCODE@h
-	stw	3,U_SYSTEM_EXITCODE@l(3)
+	lis	3,operatingsystem_result@h
+	stw	3,operatingsystem_result@l(3)
         sc
         sc
         b	_haltproc
         b	_haltproc
 
 
@@ -68,9 +68,18 @@ data_start:
 ___fpc_brk_addr:
 ___fpc_brk_addr:
         .long   0
         .long   0
 
 
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+
 /*
 /*
   $Log$
   $Log$
-  Revision 1.6  2004-01-04 17:28:03  florian
+  Revision 1.7  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.6  2004/01/04 17:28:03  florian
     * clean up
     * clean up
 
 
   Revision 1.5  2004/01/04 17:12:28  florian
   Revision 1.5  2004/01/04 17:12:28  florian

+ 16 - 7
rtl/linux/powerpc/prt0.as

@@ -31,18 +31,18 @@ _start:
 	mtlr	0
 	mtlr	0
 	stw	0,0(1)
 	stw	0,0(1)
 	lwz     3,0(26)       /* get argc */
 	lwz     3,0(26)       /* get argc */
-        lis 	11,U_SYSTEM_ARGC@ha
-	stw 	3,U_SYSTEM_ARGC@l(11);
+        lis 	11,operatingsystem_parameter_argc@ha
+	stw 	3,operatingsystem_parameter_argc@l(11);
 
 
 	addi    4,26,4        /* get argv */
 	addi    4,26,4        /* get argv */
-        lis 	11,U_SYSTEM_ARGV@ha
-	stw 	4,U_SYSTEM_ARGV@l(11);
+        lis 	11,operatingsystem_parameter_argv@ha
+	stw 	4,operatingsystem_parameter_argv@l(11);
 
 
 	addi    27,3,1        /* calculate argc + 1 into r27 */
 	addi    27,3,1        /* calculate argc + 1 into r27 */
         slwi    27,27,2       /* calculate (argc + 1) * sizeof(char *) into r27 */
         slwi    27,27,2       /* calculate (argc + 1) * sizeof(char *) into r27 */
         add     5,4,27        /* get address of env[0] */
         add     5,4,27        /* get address of env[0] */
-	lis 	11,U_SYSTEM_ENVP@ha
-	stw 	5,U_SYSTEM_ENVP@l(11);
+	lis 	11,operatingsystem_parameter_envp@ha
+	stw 	5,operatingsystem_parameter_envp@l(11);
 
 
 	bl	PASCALMAIN
 	bl	PASCALMAIN
 	
 	
@@ -65,9 +65,18 @@ data_start:
         .size   ___fpc_brk_addr,4
         .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
         .long   0
         .long   0
+
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
 /*
 /*
   $Log$
   $Log$
-  Revision 1.12  2004-05-26 20:48:17  florian
+  Revision 1.13  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.12  2004/05/26 20:48:17  florian
     * _haltproc fixed
     * _haltproc fixed
 
 
   Revision 1.11  2004/01/04 17:23:57  florian
   Revision 1.11  2004/01/04 17:23:57  florian

+ 16 - 7
rtl/linux/sparc/prt0.as

@@ -33,21 +33,21 @@ _start:
   	/* Extract the arguments and environment as encoded on the stack.  The
   	/* Extract the arguments and environment as encoded on the stack.  The
      	   argument info starts after one register window (16 words) past the SP.  */
      	   argument info starts after one register window (16 words) past the SP.  */
 	ld	[%sp+22*4], %o2
 	ld	[%sp+22*4], %o2
-	sethi	%hi(U_SYSTEM_ARGC),%o1
-	or	%o1,%lo(U_SYSTEM_ARGC),%o1
+	sethi	%hi(operatingsystem_parameter_argc),%o1
+	or	%o1,%lo(operatingsystem_parameter_argc),%o1
 	st	%o2, [%o1]	
 	st	%o2, [%o1]	
 
 
 	add	%sp, 23*4, %o0
 	add	%sp, 23*4, %o0
-	sethi	%hi(U_SYSTEM_ARGV),%o1
-	or	%o1,%lo(U_SYSTEM_ARGV),%o1
+	sethi	%hi(operatingsystem_parameter_argv),%o1
+	or	%o1,%lo(operatingsystem_parameter_argv),%o1
 	st	%o0, [%o1]	
 	st	%o0, [%o1]	
 
 
 	/* envp=(argc+1)*4+argv */
 	/* envp=(argc+1)*4+argv */
 	inc     %o2
 	inc     %o2
 	sll     %o2, 2, %o2
 	sll     %o2, 2, %o2
 	add	%o2, %o0, %o2
 	add	%o2, %o0, %o2
-	sethi	%hi(U_SYSTEM_ENVP),%o1
-	or	%o1,%lo(U_SYSTEM_ENVP),%o1
+	sethi	%hi(operatingsystem_parameter_envp),%o1
+	or	%o1,%lo(operatingsystem_parameter_envp),%o1
 	st	%o2, [%o1]	
 	st	%o2, [%o1]	
 	
 	
   	/* Call the user program entry point.  */
   	/* Call the user program entry point.  */
@@ -68,9 +68,18 @@ _haltproc:
 
 
 	.size _start, .-_start
 	.size _start, .-_start
 
 
+.bss
+        .comm operatingsystem_parameter_envp,4
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,4
+
 #
 #
 # $Log$
 # $Log$
-# Revision 1.7  2004-05-27 23:15:02  peter
+# Revision 1.8  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.7  2004/05/27 23:15:02  peter
 #   * startup argc,argv,envp fix
 #   * startup argc,argv,envp fix
 #   * stat fixed
 #   * stat fixed
 #
 #

+ 14 - 5
rtl/linux/x86_64/cprt0.as

@@ -50,11 +50,11 @@ _start:
 	popq %rsi		/* Pop the argument count.  */
 	popq %rsi		/* Pop the argument count.  */
 	movq %rsp, %rdx		/* argv starts just at the current stack top.  */
 	movq %rsp, %rdx		/* argv starts just at the current stack top.  */
 
 
-        movq     %rsi,U_SYSTEM_ARGC
-	movq     %rsp,U_SYSTEM_ARGV   /* argv starts just at the current stack top.  */
+        movq     %rsi,operatingsystem_parameter_argc
+	movq     %rsp,operatingsystem_parameter_argv   /* argv starts just at the current stack top.  */
         leaq     8(,%rsi,8),%rax
         leaq     8(,%rsi,8),%rax
         addq     %rsp,%rax
         addq     %rsp,%rax
-        movq     %rax,U_SYSTEM_ENVP
+        movq     %rax,operatingsystem_parameter_envp
 
 
 	/* Align the stack to a 16 byte boundary to follow the ABI.  */
 	/* Align the stack to a 16 byte boundary to follow the ABI.  */
 	andq  $~15, %rsp
 	andq  $~15, %rsp
@@ -93,7 +93,7 @@ main_stub:
         .globl _haltproc
         .globl _haltproc
         .type _haltproc,@function
         .type _haltproc,@function
 _haltproc:
 _haltproc:
-        movzwq    U_SYSTEM_EXITCODE,%rax /* load and save exitcode */
+        movzwq    operatingsystem_result,%rax /* load and save exitcode */
 
 
         movq    ___fpc_ret,%rdx         /* return to libc */
         movq    ___fpc_ret,%rdx         /* return to libc */
         movq    ___fpc_ret_rbp,%rbp
         movq    ___fpc_ret_rbp,%rbp
@@ -121,6 +121,11 @@ ___fpc_ret:                             /* return address to libc */
 ___fpc_ret_rbp:
 ___fpc_ret_rbp:
         .quad   0
         .quad   0
 
 
+.bss
+        .comm operatingsystem_parameter_envp,8
+        .comm operatingsystem_parameter_argc,8
+        .comm operatingsystem_parameter_argv,8
+
 /* We need this stuff to make gdb behave itself, otherwise
 /* We need this stuff to make gdb behave itself, otherwise
    gdb will chokes with SIGILL when trying to debug apps.
    gdb will chokes with SIGILL when trying to debug apps.
 */
 */
@@ -140,7 +145,11 @@ ___fpc_ret_rbp:
 
 
 /*
 /*
   $Log$
   $Log$
-  Revision 1.2  2004-02-20 23:48:27  peter
+  Revision 1.3  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.2  2004/02/20 23:48:27  peter
     * c stub implemented
     * c stub implemented
 
 
   Revision 1.1  2003/01/06 19:39:17  florian
   Revision 1.1  2003/01/06 19:39:17  florian

+ 15 - 6
rtl/linux/x86_64/prt0.as

@@ -42,11 +42,11 @@ _start:
 #       movq %rdx,%r9                 /* Address of the shared library termination
 #       movq %rdx,%r9                 /* Address of the shared library termination
 #               	                 function.  */
 #               	                 function.  */
 	popq     %rsi		      /* Pop the argument count.  */
 	popq     %rsi		      /* Pop the argument count.  */
-        movq     %rsi,U_SYSTEM_ARGC
-	movq     %rsp,U_SYSTEM_ARGV   /* argv starts just at the current stack top.  */
+        movq     %rsi,operatingsystem_parameter_argc
+	movq     %rsp,operatingsystem_parameter_argv   /* argv starts just at the current stack top.  */
         leaq     8(,%rsi,8),%rax
         leaq     8(,%rsi,8),%rax
         addq     %rsp,%rax
         addq     %rsp,%rax
-        movq     %rax,U_SYSTEM_ENVP
+        movq     %rax,operatingsystem_parameter_envp
         andq     $~15,%rsp            /* Align the stack to a 16 byte boundary to follow the ABI.  */
         andq     $~15,%rsp            /* Align the stack to a 16 byte boundary to follow the ABI.  */
 
 
 /* !!!! CPU initialization? */
 /* !!!! CPU initialization? */
@@ -59,8 +59,7 @@ _start:
         .type   _haltproc,@function
         .type   _haltproc,@function
 _haltproc:
 _haltproc:
         movl    $60,%eax                 /* exit call */
         movl    $60,%eax                 /* exit call */
-	xorq	%rdi,%rdi
-        movw    U_SYSTEM_EXITCODE,%di
+        movzwl    operatingsystem_result,%edi
         syscall
         syscall
         jmp     _haltproc
         jmp     _haltproc
 
 
@@ -72,6 +71,12 @@ __data_start:
 	.weak data_start
 	.weak data_start
         data_start = __data_start
         data_start = __data_start
 
 
+.bss
+        .comm operatingsystem_parameter_envp,8
+        .comm operatingsystem_parameter_argc,8
+        .comm operatingsystem_parameter_argv,8
+
+
 /* We need this stuff to make gdb behave itself, otherwise
 /* We need this stuff to make gdb behave itself, otherwise
    gdb will chokes with SIGILL when trying to debug apps.
    gdb will chokes with SIGILL when trying to debug apps.
 */
 */
@@ -90,7 +95,11 @@ __data_start:
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.7  2004-04-24 17:14:09  florian
+# Revision 1.8  2004-07-03 21:50:31  daniel
+#   * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+#     longer necessary
+#
+# Revision 1.7  2004/04/24 17:14:09  florian
 #   * prt0.as exit code handling fixed
 #   * prt0.as exit code handling fixed
 #   * int64 mod int64 for negative numbers fixed
 #   * int64 mod int64 for negative numbers fixed
 #
 #

+ 8 - 5
rtl/unix/sysunixh.inc

@@ -52,14 +52,17 @@ const
   sLineBreak = LineEnding;
   sLineBreak = LineEnding;
   DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsLF;
   DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsLF;
 
 
-var
-  argc : longint;
-  argv : ppchar;
-  envp : ppchar;
+var argc:longint;external name 'operatingsystem_parameter_argc';
+    argv:PPchar;external name 'operatingsystem_parameter_argv';
+    envp:PPchar;external name 'operatingsystem_parameter_envp';
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.19  2004-05-18 20:16:23  peter
+  Revision 1.20  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.19  2004/05/18 20:16:23  peter
     * unix thandle is always 32bit
     * unix thandle is always 32bit
     * textrec fixed for 64bit
     * textrec fixed for 64bit
 
 

+ 6 - 1
rtl/unix/sysutils.pp

@@ -23,6 +23,7 @@ interface
 
 
 {$DEFINE HAS_SLEEP}
 {$DEFINE HAS_SLEEP}
 {$DEFINE HAS_OSERROR}
 {$DEFINE HAS_OSERROR}
+{$DEFINE HASUNIX}
 
 
 uses
 uses
   Unix,errors,sysconst;
   Unix,errors,sysconst;
@@ -643,7 +644,11 @@ end.
 {
 {
 
 
   $Log$
   $Log$
-  Revision 1.42  2004-06-15 07:36:03  michael
+  Revision 1.43  2004-07-03 21:50:31  daniel
+    * Modified bootstrap code so separate prt0.as/prt0_10.as files are no
+      longer necessary
+
+  Revision 1.42  2004/06/15 07:36:03  michael
   + Fixed Globtosearchrec to use unixtowinage
   + Fixed Globtosearchrec to use unixtowinage
 
 
   Revision 1.41  2004/05/22 14:25:03  michael
   Revision 1.41  2004/05/22 14:25:03  michael