mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-01 18:07:33 +01:00
* Modified bootstrap code so separate prt0.as/prt0_10.as files are no
longer necessary
This commit is contained in:
parent
5062c04096
commit
a1229ff8fe
@ -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
|
||||
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)),)
|
||||
inUnix=1
|
||||
SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
|
||||
else
|
||||
SEARCHPATH:=$(subst ;, ,$(PATH))
|
||||
endif
|
||||
endif
|
||||
SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
|
||||
PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
|
||||
ifeq ($(PWD),)
|
||||
PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
|
||||
@ -42,26 +32,29 @@ inOS2=1
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifneq ($(findstring cygdrive,$(PATH)),)
|
||||
ifneq ($(findstring cygwin,$(MACHTYPE)),)
|
||||
inCygWin=1
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_TARGET),freebsd)
|
||||
BSDhier=1
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netbsd)
|
||||
BSDhier=1
|
||||
endif
|
||||
ifdef inUnix
|
||||
SRCBATCHEXT=.sh
|
||||
BATCHEXT=.sh
|
||||
else
|
||||
ifdef inOS2
|
||||
SRCBATCHEXT=.cmd
|
||||
BATCHEXT=.cmd
|
||||
else
|
||||
SRCBATCHEXT=.bat
|
||||
BATCHEXT=.bat
|
||||
endif
|
||||
endif
|
||||
ifdef inUnix
|
||||
PATHSEP=/
|
||||
else
|
||||
PATHSEP:=$(subst /,\,/)
|
||||
ifdef inCygWin
|
||||
PATHSEP=/
|
||||
endif
|
||||
endif
|
||||
ifdef PWD
|
||||
BASEDIR:=$(subst \,/,$(shell $(PWD)))
|
||||
@ -91,7 +84,7 @@ endif
|
||||
endif
|
||||
export ECHO
|
||||
endif
|
||||
override OS_TARGET_DEFAULT=freebsd
|
||||
OS_TARGET=freebsd
|
||||
override DEFAULT_FPCDIR=../..
|
||||
ifndef FPC
|
||||
ifdef PP
|
||||
@ -113,38 +106,37 @@ endif
|
||||
override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
|
||||
override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
|
||||
ifndef FPC_VERSION
|
||||
FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
|
||||
FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
|
||||
FPC_VERSION:=$(shell $(FPC) -iV)
|
||||
endif
|
||||
export FPC FPC_VERSION FPC_COMPILERINFO
|
||||
export FPC FPC_VERSION
|
||||
unexport CHECKDEPEND ALLDEPENDENCIES
|
||||
ifndef CPU_TARGET
|
||||
ifdef CPU_TARGET_DEFAULT
|
||||
CPU_TARGET=$(CPU_TARGET_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
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)
|
||||
endif
|
||||
ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
|
||||
COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO)
|
||||
ifndef CPU_SOURCE
|
||||
CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
|
||||
CPU_SOURCE:=$(word 1,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef CPU_TARGET
|
||||
CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
|
||||
CPU_TARGET:=$(word 2,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef OS_SOURCE
|
||||
OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
|
||||
OS_SOURCE:=$(word 3,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef OS_TARGET
|
||||
OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
|
||||
OS_TARGET:=$(word 4,$(COMPILERINFO))
|
||||
endif
|
||||
else
|
||||
ifndef CPU_SOURCE
|
||||
CPU_SOURCE:=$(shell $(FPC) -iSP)
|
||||
endif
|
||||
ifndef CPU_TARGET
|
||||
CPU_TARGET:=$(shell $(FPC) -iTP)
|
||||
endif
|
||||
ifndef OS_SOURCE
|
||||
OS_SOURCE:=$(shell $(FPC) -iSO)
|
||||
endif
|
||||
ifndef OS_TARGET
|
||||
OS_TARGET:=$(shell $(FPC) -iTO)
|
||||
endif
|
||||
endif
|
||||
FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
|
||||
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)
|
||||
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
|
||||
ifdef FPCDIR
|
||||
override FPCDIR:=$(subst \,/,$(FPCDIR))
|
||||
@ -191,14 +177,11 @@ override FPCDIR:=$(FPCDIR)/..
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR:=$(FPCDIR)/..
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR:=$(BASEDIR)
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR=c:/pp
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifndef CROSSDIR
|
||||
CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
|
||||
endif
|
||||
@ -225,13 +208,11 @@ UNIXINC=$(RTL)/unix
|
||||
UNITPREFIX=rtl
|
||||
ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
|
||||
SYSTEMUNIT=system
|
||||
PRT0=prt0
|
||||
override FPCOPT+=-dNOMOUSE
|
||||
loaders+=gprt0
|
||||
else
|
||||
SYSTEMUNIT=sysbsd
|
||||
override FPCOPT+=-dUNIX -dNOMOUSE
|
||||
PRT0=prt0_10
|
||||
endif
|
||||
ifdef RELEASE
|
||||
override FPCOPT+=-Ur
|
||||
@ -255,12 +236,30 @@ ifdef REQUIRE_PACKAGESDIR
|
||||
override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
|
||||
endif
|
||||
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
|
||||
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
|
||||
ifndef INSTALL_PREFIX
|
||||
@ -269,7 +268,7 @@ INSTALL_PREFIX=$(PREFIX)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_PREFIX
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_PREFIX=/usr/local
|
||||
else
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
@ -288,7 +287,7 @@ DIST_DESTDIR:=$(BASEDIR)
|
||||
endif
|
||||
export DIST_DESTDIR
|
||||
ifndef INSTALL_BASEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
|
||||
else
|
||||
@ -299,18 +298,10 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_BINDIR
|
||||
ifdef UNIXHier
|
||||
ifdef CROSSCOMPILE
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
|
||||
else
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
|
||||
endif
|
||||
else
|
||||
ifdef CROSSCOMPILE
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
|
||||
else
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
|
||||
endif
|
||||
@ -329,23 +320,19 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_LIBDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
|
||||
else
|
||||
INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_SOURCEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef BSDhier
|
||||
SRCPREFIXDIR=share/src
|
||||
else
|
||||
ifdef linuxHier
|
||||
SRCPREFIXDIR=share/src
|
||||
else
|
||||
SRCPREFIXDIR=src
|
||||
endif
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
ifdef INSTALL_FPCSUBDIR
|
||||
INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
|
||||
@ -368,16 +355,12 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_DOCDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef BSDhier
|
||||
DOCPREFIXDIR=share/doc
|
||||
else
|
||||
ifdef linuxHier
|
||||
DOCPREFIXDIR=share/doc
|
||||
else
|
||||
DOCPREFIXDIR=doc
|
||||
endif
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
|
||||
else
|
||||
@ -392,28 +375,20 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_EXAMPLEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
ifdef BSDhier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
|
||||
else
|
||||
ifdef linuxHier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
|
||||
else
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifdef BSDhier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
else
|
||||
ifdef linuxHier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
else
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
|
||||
@ -435,7 +410,6 @@ endif
|
||||
else
|
||||
CROSSBINDIR=
|
||||
endif
|
||||
BATCHEXT=.bat
|
||||
LOADEREXT=.as
|
||||
EXEEXT=.exe
|
||||
PPLEXT=.ppl
|
||||
@ -448,124 +422,6 @@ SHAREDLIBEXT=.so
|
||||
STATICLIBPREFIX=libp
|
||||
RSTEXT=.rst
|
||||
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)
|
||||
PPUEXT=.pp1
|
||||
OEXT=.o1
|
||||
@ -582,39 +438,24 @@ STATICLIBPREFIX=
|
||||
FPCMADE=fpcmade.dos
|
||||
ZIPSUFFIX=go32
|
||||
endif
|
||||
ifeq ($(OS_TARGET),watcom)
|
||||
STATICLIBPREFIX=
|
||||
FPCMADE=fpcmade.dos
|
||||
ZIPSUFFIX=watcom
|
||||
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)
|
||||
PPUEXT=.ppw
|
||||
OEXT=.ow
|
||||
@ -626,7 +467,6 @@ FPCMADE=fpcmade.w32
|
||||
ZIPSUFFIX=w32
|
||||
endif
|
||||
ifeq ($(OS_TARGET),os2)
|
||||
BATCHEXT=.cmd
|
||||
PPUEXT=.ppo
|
||||
ASMEXT=.so2
|
||||
OEXT=.oo2
|
||||
@ -641,7 +481,7 @@ ECHO=echo
|
||||
endif
|
||||
ifeq ($(OS_TARGET),amiga)
|
||||
EXEEXT=
|
||||
PPUEXT=.ppu
|
||||
PPUEXT=.ppa
|
||||
ASMEXT=.asm
|
||||
OEXT=.o
|
||||
SMARTEXT=.sl
|
||||
@ -650,7 +490,7 @@ SHAREDLIBEXT=.library
|
||||
FPCMADE=fpcmade.amg
|
||||
endif
|
||||
ifeq ($(OS_TARGET),atari)
|
||||
PPUEXT=.ppu
|
||||
PPUEXT=.ppt
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
SMARTEXT=.sl
|
||||
@ -659,7 +499,6 @@ EXEEXT=.ttp
|
||||
FPCMADE=fpcmade.ata
|
||||
endif
|
||||
ifeq ($(OS_TARGET),beos)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -670,7 +509,6 @@ FPCMADE=fpcmade.be
|
||||
ZIPSUFFIX=be
|
||||
endif
|
||||
ifeq ($(OS_TARGET),sunos)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -681,7 +519,6 @@ FPCMADE=fpcmade.sun
|
||||
ZIPSUFFIX=sun
|
||||
endif
|
||||
ifeq ($(OS_TARGET),qnx)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -693,8 +530,8 @@ ZIPSUFFIX=qnx
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netware)
|
||||
STATICLIBPREFIX=
|
||||
PPUEXT=.ppu
|
||||
OEXT=.o
|
||||
PPUEXT=.ppn
|
||||
OEXT=.on
|
||||
ASMEXT=.s
|
||||
SMARTEXT=.sl
|
||||
STATICLIBEXT=.a
|
||||
@ -703,24 +540,12 @@ FPCMADE=fpcmade.nw
|
||||
ZIPSUFFIX=nw
|
||||
EXEEXT=.nlm
|
||||
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
|
||||
ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ECHO),)
|
||||
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ECHO),)
|
||||
ECHO= __missing_command__
|
||||
ECHO=
|
||||
else
|
||||
ECHO:=$(firstword $(ECHO))
|
||||
endif
|
||||
@ -734,7 +559,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(DATE),)
|
||||
DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(DATE),)
|
||||
DATE= __missing_command__
|
||||
DATE=
|
||||
else
|
||||
DATE:=$(firstword $(DATE))
|
||||
endif
|
||||
@ -748,7 +573,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(GINSTALL),)
|
||||
GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(GINSTALL),)
|
||||
GINSTALL= __missing_command__
|
||||
GINSTALL=
|
||||
else
|
||||
GINSTALL:=$(firstword $(GINSTALL))
|
||||
endif
|
||||
@ -760,7 +585,7 @@ export GINSTALL
|
||||
ifndef CPPROG
|
||||
CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(CPPROG),)
|
||||
CPPROG= __missing_command__
|
||||
CPPROG=
|
||||
else
|
||||
CPPROG:=$(firstword $(CPPROG))
|
||||
endif
|
||||
@ -769,7 +594,7 @@ export CPPROG
|
||||
ifndef RMPROG
|
||||
RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(RMPROG),)
|
||||
RMPROG= __missing_command__
|
||||
RMPROG=
|
||||
else
|
||||
RMPROG:=$(firstword $(RMPROG))
|
||||
endif
|
||||
@ -778,18 +603,14 @@ export RMPROG
|
||||
ifndef MVPROG
|
||||
MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(MVPROG),)
|
||||
MVPROG= __missing_command__
|
||||
MVPROG=
|
||||
else
|
||||
MVPROG:=$(firstword $(MVPROG))
|
||||
endif
|
||||
endif
|
||||
export MVPROG
|
||||
ifndef ECHOREDIR
|
||||
ifndef inUnix
|
||||
ECHOREDIR=echo
|
||||
else
|
||||
ECHOREDIR=$(ECHO)
|
||||
endif
|
||||
ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
|
||||
endif
|
||||
ifndef COPY
|
||||
COPY:=$(CPPROG) -fp
|
||||
@ -827,7 +648,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
|
||||
ifndef PPUMOVE
|
||||
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(PPUMOVE),)
|
||||
PPUMOVE= __missing_command__
|
||||
PPUMOVE=
|
||||
else
|
||||
PPUMOVE:=$(firstword $(PPUMOVE))
|
||||
endif
|
||||
@ -836,7 +657,7 @@ export PPUMOVE
|
||||
ifndef FPCMAKE
|
||||
FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(FPCMAKE),)
|
||||
FPCMAKE= __missing_command__
|
||||
FPCMAKE=
|
||||
else
|
||||
FPCMAKE:=$(firstword $(FPCMAKE))
|
||||
endif
|
||||
@ -845,7 +666,7 @@ export FPCMAKE
|
||||
ifndef ZIPPROG
|
||||
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ZIPPROG),)
|
||||
ZIPPROG= __missing_command__
|
||||
ZIPPROG=
|
||||
else
|
||||
ZIPPROG:=$(firstword $(ZIPPROG))
|
||||
endif
|
||||
@ -854,25 +675,21 @@ export ZIPPROG
|
||||
ifndef TARPROG
|
||||
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(TARPROG),)
|
||||
TARPROG= __missing_command__
|
||||
TARPROG=
|
||||
else
|
||||
TARPROG:=$(firstword $(TARPROG))
|
||||
endif
|
||||
endif
|
||||
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 ($(CROSSBINDIR),)
|
||||
ASNAME=asw
|
||||
LDNAME=ldw
|
||||
ARNAME=arw
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifndef ASPROG
|
||||
ifdef CROSSBINDIR
|
||||
ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
|
||||
@ -905,7 +722,7 @@ AS=$(ASPROG)
|
||||
LD=$(LDPROG)
|
||||
RC=$(RCPROG)
|
||||
AR=$(ARPROG)
|
||||
PPAS=ppas$(SRCBATCHEXT)
|
||||
PPAS=ppas$(BATCHEXT)
|
||||
ifdef inUnix
|
||||
LDCONFIG=ldconfig
|
||||
else
|
||||
@ -950,17 +767,6 @@ endif
|
||||
ifneq ($(OS_TARGET),$(OS_SOURCE))
|
||||
override FPCOPT+=-T$(OS_TARGET)
|
||||
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
|
||||
override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
|
||||
endif
|
||||
@ -987,12 +793,8 @@ ifdef RELEASE
|
||||
ifeq ($(CPU_TARGET),i386)
|
||||
FPCCPUOPT:=-OG2p3
|
||||
else
|
||||
ifeq ($(CPU_TARGET),powerpc)
|
||||
FPCCPUOPT:=-O1
|
||||
else
|
||||
FPCCPUOPT:=
|
||||
endif
|
||||
endif
|
||||
override FPCOPT+=-Xs $(FPCCPUOPT) -n
|
||||
override FPCOPTDEF+=RELEASE
|
||||
endif
|
||||
@ -1046,11 +848,6 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
|
||||
override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_TARGET),linux)
|
||||
ifeq ($(FPC_VERSION),1.0.6)
|
||||
override FPCOPTDEF+=HASUNIX
|
||||
endif
|
||||
endif
|
||||
ifdef OPT
|
||||
override FPCOPT+=$(OPT)
|
||||
endif
|
||||
@ -1069,12 +866,12 @@ override COMPILER:=$(FPC) $(FPCOPT)
|
||||
ifeq (,$(findstring -s ,$(COMPILER)))
|
||||
EXECPPAS=
|
||||
else
|
||||
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
|
||||
ifeq ($(OS_SOURCE),$(OS_TARGET))
|
||||
EXECPPAS:=@$(PPAS)
|
||||
endif
|
||||
endif
|
||||
.PHONY: fpc_loaders
|
||||
ifneq ($(TARGET_LOADERS),)
|
||||
ifdef TARGET_LOADERS
|
||||
override ALLTARGET+=fpc_loaders
|
||||
override CLEANTARGET+=fpc_loaders_clean
|
||||
override INSTALLTARGET+=fpc_loaders_install
|
||||
@ -1089,7 +886,7 @@ fpc_loaders_install:
|
||||
$(MKDIR) $(INSTALL_UNITDIR)
|
||||
$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
|
||||
.PHONY: fpc_units
|
||||
ifneq ($(TARGET_UNITS),)
|
||||
ifdef TARGET_UNITS
|
||||
override ALLTARGET+=fpc_units
|
||||
override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
|
||||
override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
|
||||
@ -1111,7 +908,7 @@ fpc_debug:
|
||||
$(MAKE) all DEBUG=1
|
||||
fpc_release:
|
||||
$(MAKE) all RELEASE=1
|
||||
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .dpr .pp .rc .res
|
||||
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
|
||||
%$(PPUEXT): %.pp
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
@ -1124,14 +921,10 @@ fpc_release:
|
||||
%$(EXEEXT): %.pas
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
%$(EXEEXT): %.dpr
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
%.res: %.rc
|
||||
windres -i $< -o $@
|
||||
vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
|
||||
.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
|
||||
ifdef INSTALL_UNITS
|
||||
@ -1208,9 +1001,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
|
||||
endif
|
||||
ifdef 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 CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
|
||||
endif
|
||||
@ -1234,7 +1024,6 @@ ifdef LIB_NAME
|
||||
-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
|
||||
endif
|
||||
-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
|
||||
-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
|
||||
fpc_distclean: clean
|
||||
ifdef COMPILER_UNITTARGETDIR
|
||||
TARGETDIRCLEAN=fpc_clean
|
||||
@ -1246,13 +1035,9 @@ endif
|
||||
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
|
||||
-$(DELTREE) *$(SMARTEXT)
|
||||
-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
|
||||
-$(DEL) *_ppas$(BATCHEXT)
|
||||
ifdef AOUTEXT
|
||||
-$(DEL) *$(AOUTEXT)
|
||||
endif
|
||||
ifdef DEBUGSYMEXT
|
||||
-$(DEL) *$(DEBUGSYMEXT)
|
||||
endif
|
||||
.PHONY: fpc_baseinfo
|
||||
override INFORULES+=fpc_baseinfo
|
||||
fpc_baseinfo:
|
||||
@ -1297,7 +1082,6 @@ fpc_baseinfo:
|
||||
@$(ECHO) Rm........ $(RMPROG)
|
||||
@$(ECHO) GInstall.. $(GINSTALL)
|
||||
@$(ECHO) Echo...... $(ECHO)
|
||||
@$(ECHO) Shell..... $(SHELL)
|
||||
@$(ECHO) Date...... $(DATE)
|
||||
@$(ECHO) FPCMake... $(FPCMAKE)
|
||||
@$(ECHO) PPUMove... $(PPUMOVE)
|
||||
@ -1383,8 +1167,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
|
||||
include $(PROCINC)/makefile.cpu
|
||||
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
|
||||
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
|
||||
$(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
|
||||
gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
|
||||
|
||||
@ -58,13 +58,11 @@ UNITPREFIX=rtl
|
||||
|
||||
ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
|
||||
SYSTEMUNIT=system
|
||||
PRT0=prt0
|
||||
override FPCOPT+=-dNOMOUSE
|
||||
loaders+=gprt0
|
||||
else
|
||||
SYSTEMUNIT=sysbsd
|
||||
override FPCOPT+=-dUNIX -dNOMOUSE
|
||||
PRT0=prt0_10
|
||||
endif
|
||||
|
||||
# Use new feature from 1.0.5 version
|
||||
@ -109,8 +107,8 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
|
||||
# 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
|
||||
$(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
|
||||
|
||||
@ -55,12 +55,12 @@ _start:
|
||||
movl %edx,%edx
|
||||
#NO_APP
|
||||
leal 8(%ebp),%edi
|
||||
movl %edi,U_SYSTEM_ARGV
|
||||
movl %edi,operatingsystem_parameter_argv
|
||||
mov -4(%edi),%eax
|
||||
movl %eax,U_SYSTEM_ARGC
|
||||
movl %eax,operatingsystem_parameter_argc
|
||||
movl 4(%ebp),%ebx
|
||||
leal 12(%ebp,%ebx,4),%esi
|
||||
movl %esi,U_SYSTEM_ENVP
|
||||
movl %esi,operatingsystem_parameter_envp
|
||||
movl %esi,environ
|
||||
testl %ebx,%ebx
|
||||
jle .L2
|
||||
@ -116,7 +116,7 @@ _start:
|
||||
|
||||
_haltproc:
|
||||
mov $1,%eax
|
||||
movzwl U_SYSTEM_EXITCODE,%ebx
|
||||
movzwl operatingsystem_result,%ebx
|
||||
pushl %ebx
|
||||
call .Lactualsyscall
|
||||
addl $4,%esp
|
||||
@ -139,3 +139,8 @@ _haltproc:
|
||||
.comm environ,4,4
|
||||
.weak _DYNAMIC
|
||||
.ident "GCC: (GNU) 2.7.2.1"
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
@ -67,12 +67,12 @@ _start:
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
movl 4(%ebp),%ebx
|
||||
movl %ebx,U_SYSTEM_ARGC
|
||||
movl %ebx,operatingsystem_parameter_argc
|
||||
leal 12(%ebp,%ebx,4),%esi
|
||||
leal 8(%ebp),%eax
|
||||
movl %eax,U_SYSTEM_ARGV
|
||||
movl %eax,operatingsystem_parameter_argv
|
||||
movl %eax,-4(%ebp)
|
||||
movl %esi,U_SYSTEM_ENVP
|
||||
movl %esi,operatingsystem_parameter_envp
|
||||
movl %esi,environ
|
||||
movl $_DYNAMIC,%ecx
|
||||
testl %ebx,%ebx
|
||||
@ -125,11 +125,11 @@ _start:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
movzwl U_SYSTEM_EXITCODE,%ebx
|
||||
movzwl operatingsystem_result,%ebx
|
||||
pushl %ebx
|
||||
call exit
|
||||
mov $1,%eax
|
||||
movzwl U_SYSTEM_EXITCODE,%ebx
|
||||
movzwl operatingsystem_result,%ebx
|
||||
pushl %ebx
|
||||
call .Lactualsyscall
|
||||
addl $4,%esp
|
||||
@ -156,3 +156,8 @@ _haltproc:
|
||||
.globl _DYNAMIC
|
||||
.weak _DYNAMIC
|
||||
.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
|
||||
|
||||
@ -55,12 +55,12 @@ _start:
|
||||
movl %edx,%edx
|
||||
#NO_APP
|
||||
leal 8(%ebp),%edi
|
||||
movl %edi,U_SYSTEM_ARGV
|
||||
movl %edi,operatingsystem_parameter_argv
|
||||
mov -4(%edi),%eax
|
||||
movl %eax,U_SYSTEM_ARGC
|
||||
movl %eax,operatingsystem_parameter_argc
|
||||
movl 4(%ebp),%ebx
|
||||
leal 12(%ebp,%ebx,4),%esi
|
||||
movl %esi,U_SYSTEM_ENVP
|
||||
movl %esi,operatingsystem_parameter_envp
|
||||
movl %esi,environ
|
||||
testl %ebx,%ebx
|
||||
jle .L2
|
||||
@ -101,7 +101,7 @@ _start:
|
||||
|
||||
_haltproc:
|
||||
mov $1,%eax
|
||||
movzwl U_SYSTEM_EXITCODE,%ebx
|
||||
movzwl operatingsystem_result,%ebx
|
||||
pushl %ebx
|
||||
call _actualsyscall
|
||||
addl $4,%esp
|
||||
@ -122,3 +122,9 @@ _actualsyscall:
|
||||
.comm environ,4,4
|
||||
.weak _DYNAMIC
|
||||
.ident "GCC: (GNU) 2.7.2.1"
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
|
||||
@ -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"
|
||||
@ -39,18 +39,18 @@ _start:
|
||||
movq -8(%rbp), %rax
|
||||
movl (%rax), %eax
|
||||
movl %eax, -20(%rbp)
|
||||
movl %eax, U_SYSTEM_ARGC
|
||||
movl %eax, operatingsystem_parameter_argc
|
||||
movq -8(%rbp), %rax
|
||||
addq $8, %rax
|
||||
movq %rax, -32(%rbp)
|
||||
movq %rax, U_SYSTEM_ARGV
|
||||
movq %rax, operatingsystem_parameter_argv
|
||||
movl -20(%rbp), %eax
|
||||
cltq
|
||||
salq $3, %rax
|
||||
addq -8(%rbp), %rax
|
||||
addq $16, %rax
|
||||
movq %rax, -40(%rbp)
|
||||
movq %rax, U_SYSTEM_ENVP
|
||||
movq %rax, operatingsystem_parameter_envp
|
||||
movq -40(%rbp), %rax
|
||||
movq %rax, environ(%rip)
|
||||
movq %rax,environ
|
||||
|
||||
@ -341,7 +341,7 @@ const
|
||||
StackError : boolean = FALSE;
|
||||
|
||||
var
|
||||
ExitCode : Word;
|
||||
ExitCode : Word; public name 'operatingsystem_result';
|
||||
RandSeed : Cardinal;
|
||||
{ Delphi compatibility }
|
||||
IsLibrary : boolean;
|
||||
@ -744,7 +744,11 @@ const
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.94 2004/06/11 13:45:33 florian
|
||||
|
||||
@ -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
|
||||
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)),)
|
||||
inUnix=1
|
||||
SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
|
||||
else
|
||||
SEARCHPATH:=$(subst ;, ,$(PATH))
|
||||
endif
|
||||
endif
|
||||
SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
|
||||
PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
|
||||
ifeq ($(PWD),)
|
||||
PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
|
||||
@ -42,26 +32,29 @@ inOS2=1
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifneq ($(findstring cygdrive,$(PATH)),)
|
||||
ifneq ($(findstring cygwin,$(MACHTYPE)),)
|
||||
inCygWin=1
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_TARGET),freebsd)
|
||||
BSDhier=1
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netbsd)
|
||||
BSDhier=1
|
||||
endif
|
||||
ifdef inUnix
|
||||
SRCBATCHEXT=.sh
|
||||
BATCHEXT=.sh
|
||||
else
|
||||
ifdef inOS2
|
||||
SRCBATCHEXT=.cmd
|
||||
BATCHEXT=.cmd
|
||||
else
|
||||
SRCBATCHEXT=.bat
|
||||
BATCHEXT=.bat
|
||||
endif
|
||||
endif
|
||||
ifdef inUnix
|
||||
PATHSEP=/
|
||||
else
|
||||
PATHSEP:=$(subst /,\,/)
|
||||
ifdef inCygWin
|
||||
PATHSEP=/
|
||||
endif
|
||||
endif
|
||||
ifdef PWD
|
||||
BASEDIR:=$(subst \,/,$(shell $(PWD)))
|
||||
@ -91,7 +84,7 @@ endif
|
||||
endif
|
||||
export ECHO
|
||||
endif
|
||||
override OS_TARGET_DEFAULT=linux
|
||||
OS_TARGET=linux
|
||||
override DEFAULT_FPCDIR=../..
|
||||
ifndef FPC
|
||||
ifdef PP
|
||||
@ -113,38 +106,37 @@ endif
|
||||
override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
|
||||
override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
|
||||
ifndef FPC_VERSION
|
||||
FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
|
||||
FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
|
||||
FPC_VERSION:=$(shell $(FPC) -iV)
|
||||
endif
|
||||
export FPC FPC_VERSION FPC_COMPILERINFO
|
||||
export FPC FPC_VERSION
|
||||
unexport CHECKDEPEND ALLDEPENDENCIES
|
||||
ifndef CPU_TARGET
|
||||
ifdef CPU_TARGET_DEFAULT
|
||||
CPU_TARGET=$(CPU_TARGET_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
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)
|
||||
endif
|
||||
ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
|
||||
COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO)
|
||||
ifndef CPU_SOURCE
|
||||
CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
|
||||
CPU_SOURCE:=$(word 1,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef CPU_TARGET
|
||||
CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
|
||||
CPU_TARGET:=$(word 2,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef OS_SOURCE
|
||||
OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
|
||||
OS_SOURCE:=$(word 3,$(COMPILERINFO))
|
||||
endif
|
||||
ifndef OS_TARGET
|
||||
OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
|
||||
OS_TARGET:=$(word 4,$(COMPILERINFO))
|
||||
endif
|
||||
else
|
||||
ifndef CPU_SOURCE
|
||||
CPU_SOURCE:=$(shell $(FPC) -iSP)
|
||||
endif
|
||||
ifndef CPU_TARGET
|
||||
CPU_TARGET:=$(shell $(FPC) -iTP)
|
||||
endif
|
||||
ifndef OS_SOURCE
|
||||
OS_SOURCE:=$(shell $(FPC) -iSO)
|
||||
endif
|
||||
ifndef OS_TARGET
|
||||
OS_TARGET:=$(shell $(FPC) -iTO)
|
||||
endif
|
||||
endif
|
||||
FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
|
||||
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)
|
||||
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
|
||||
ifdef FPCDIR
|
||||
override FPCDIR:=$(subst \,/,$(FPCDIR))
|
||||
@ -191,14 +177,11 @@ override FPCDIR:=$(FPCDIR)/..
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR:=$(FPCDIR)/..
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR:=$(BASEDIR)
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
override FPCDIR=c:/pp
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifndef CROSSDIR
|
||||
CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
|
||||
endif
|
||||
@ -233,12 +216,10 @@ ifeq ($(CPU_TARGET),i386)
|
||||
CPU_UNITS+=oldlinux
|
||||
endif
|
||||
LINUXUNIT2=linux
|
||||
PRT0=prt0
|
||||
else
|
||||
SYSTEMUNIT=syslinux
|
||||
LINUXUNIT1=linux
|
||||
LINUXUNIT2=
|
||||
PRT0=prt0_10
|
||||
override FPCOPT+=-dUNIX
|
||||
endif
|
||||
ifdef RELEASE
|
||||
@ -264,12 +245,30 @@ ifdef REQUIRE_PACKAGESDIR
|
||||
override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
|
||||
endif
|
||||
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
|
||||
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
|
||||
ifndef INSTALL_PREFIX
|
||||
@ -278,7 +277,7 @@ INSTALL_PREFIX=$(PREFIX)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_PREFIX
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_PREFIX=/usr/local
|
||||
else
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
@ -297,7 +296,7 @@ DIST_DESTDIR:=$(BASEDIR)
|
||||
endif
|
||||
export DIST_DESTDIR
|
||||
ifndef INSTALL_BASEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
|
||||
else
|
||||
@ -308,18 +307,10 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_BINDIR
|
||||
ifdef UNIXHier
|
||||
ifdef CROSSCOMPILE
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
|
||||
else
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
|
||||
endif
|
||||
else
|
||||
ifdef CROSSCOMPILE
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
|
||||
else
|
||||
INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
|
||||
endif
|
||||
@ -338,23 +329,19 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_LIBDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
|
||||
else
|
||||
INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_SOURCEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef BSDhier
|
||||
SRCPREFIXDIR=share/src
|
||||
else
|
||||
ifdef linuxHier
|
||||
SRCPREFIXDIR=share/src
|
||||
else
|
||||
SRCPREFIXDIR=src
|
||||
endif
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
ifdef INSTALL_FPCSUBDIR
|
||||
INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
|
||||
@ -377,16 +364,12 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_DOCDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef BSDhier
|
||||
DOCPREFIXDIR=share/doc
|
||||
else
|
||||
ifdef linuxHier
|
||||
DOCPREFIXDIR=share/doc
|
||||
else
|
||||
DOCPREFIXDIR=doc
|
||||
endif
|
||||
endif
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
|
||||
else
|
||||
@ -401,28 +384,20 @@ endif
|
||||
endif
|
||||
endif
|
||||
ifndef INSTALL_EXAMPLEDIR
|
||||
ifdef UNIXHier
|
||||
ifdef UNIXINSTALLDIR
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
ifdef BSDhier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
|
||||
else
|
||||
ifdef linuxHier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
|
||||
else
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifdef BSDhier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
else
|
||||
ifdef linuxHier
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
else
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifdef INSTALL_FPCPACKAGE
|
||||
INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
|
||||
@ -444,7 +419,6 @@ endif
|
||||
else
|
||||
CROSSBINDIR=
|
||||
endif
|
||||
BATCHEXT=.bat
|
||||
LOADEREXT=.as
|
||||
EXEEXT=.exe
|
||||
PPLEXT=.ppl
|
||||
@ -457,124 +431,6 @@ SHAREDLIBEXT=.so
|
||||
STATICLIBPREFIX=libp
|
||||
RSTEXT=.rst
|
||||
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)
|
||||
PPUEXT=.pp1
|
||||
OEXT=.o1
|
||||
@ -591,39 +447,24 @@ STATICLIBPREFIX=
|
||||
FPCMADE=fpcmade.dos
|
||||
ZIPSUFFIX=go32
|
||||
endif
|
||||
ifeq ($(OS_TARGET),watcom)
|
||||
STATICLIBPREFIX=
|
||||
FPCMADE=fpcmade.dos
|
||||
ZIPSUFFIX=watcom
|
||||
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)
|
||||
PPUEXT=.ppw
|
||||
OEXT=.ow
|
||||
@ -635,7 +476,6 @@ FPCMADE=fpcmade.w32
|
||||
ZIPSUFFIX=w32
|
||||
endif
|
||||
ifeq ($(OS_TARGET),os2)
|
||||
BATCHEXT=.cmd
|
||||
PPUEXT=.ppo
|
||||
ASMEXT=.so2
|
||||
OEXT=.oo2
|
||||
@ -650,7 +490,7 @@ ECHO=echo
|
||||
endif
|
||||
ifeq ($(OS_TARGET),amiga)
|
||||
EXEEXT=
|
||||
PPUEXT=.ppu
|
||||
PPUEXT=.ppa
|
||||
ASMEXT=.asm
|
||||
OEXT=.o
|
||||
SMARTEXT=.sl
|
||||
@ -659,7 +499,7 @@ SHAREDLIBEXT=.library
|
||||
FPCMADE=fpcmade.amg
|
||||
endif
|
||||
ifeq ($(OS_TARGET),atari)
|
||||
PPUEXT=.ppu
|
||||
PPUEXT=.ppt
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
SMARTEXT=.sl
|
||||
@ -668,7 +508,6 @@ EXEEXT=.ttp
|
||||
FPCMADE=fpcmade.ata
|
||||
endif
|
||||
ifeq ($(OS_TARGET),beos)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -679,7 +518,6 @@ FPCMADE=fpcmade.be
|
||||
ZIPSUFFIX=be
|
||||
endif
|
||||
ifeq ($(OS_TARGET),sunos)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -690,7 +528,6 @@ FPCMADE=fpcmade.sun
|
||||
ZIPSUFFIX=sun
|
||||
endif
|
||||
ifeq ($(OS_TARGET),qnx)
|
||||
BATCHEXT=.sh
|
||||
PPUEXT=.ppu
|
||||
ASMEXT=.s
|
||||
OEXT=.o
|
||||
@ -702,8 +539,8 @@ ZIPSUFFIX=qnx
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netware)
|
||||
STATICLIBPREFIX=
|
||||
PPUEXT=.ppu
|
||||
OEXT=.o
|
||||
PPUEXT=.ppn
|
||||
OEXT=.on
|
||||
ASMEXT=.s
|
||||
SMARTEXT=.sl
|
||||
STATICLIBEXT=.a
|
||||
@ -712,24 +549,12 @@ FPCMADE=fpcmade.nw
|
||||
ZIPSUFFIX=nw
|
||||
EXEEXT=.nlm
|
||||
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
|
||||
ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ECHO),)
|
||||
ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ECHO),)
|
||||
ECHO= __missing_command__
|
||||
ECHO=
|
||||
else
|
||||
ECHO:=$(firstword $(ECHO))
|
||||
endif
|
||||
@ -743,7 +568,7 @@ DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(DATE),)
|
||||
DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(DATE),)
|
||||
DATE= __missing_command__
|
||||
DATE=
|
||||
else
|
||||
DATE:=$(firstword $(DATE))
|
||||
endif
|
||||
@ -757,7 +582,7 @@ GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(GINSTALL),)
|
||||
GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(GINSTALL),)
|
||||
GINSTALL= __missing_command__
|
||||
GINSTALL=
|
||||
else
|
||||
GINSTALL:=$(firstword $(GINSTALL))
|
||||
endif
|
||||
@ -769,7 +594,7 @@ export GINSTALL
|
||||
ifndef CPPROG
|
||||
CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(CPPROG),)
|
||||
CPPROG= __missing_command__
|
||||
CPPROG=
|
||||
else
|
||||
CPPROG:=$(firstword $(CPPROG))
|
||||
endif
|
||||
@ -778,7 +603,7 @@ export CPPROG
|
||||
ifndef RMPROG
|
||||
RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(RMPROG),)
|
||||
RMPROG= __missing_command__
|
||||
RMPROG=
|
||||
else
|
||||
RMPROG:=$(firstword $(RMPROG))
|
||||
endif
|
||||
@ -787,18 +612,14 @@ export RMPROG
|
||||
ifndef MVPROG
|
||||
MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(MVPROG),)
|
||||
MVPROG= __missing_command__
|
||||
MVPROG=
|
||||
else
|
||||
MVPROG:=$(firstword $(MVPROG))
|
||||
endif
|
||||
endif
|
||||
export MVPROG
|
||||
ifndef ECHOREDIR
|
||||
ifndef inUnix
|
||||
ECHOREDIR=echo
|
||||
else
|
||||
ECHOREDIR=$(ECHO)
|
||||
endif
|
||||
ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
|
||||
endif
|
||||
ifndef COPY
|
||||
COPY:=$(CPPROG) -fp
|
||||
@ -836,7 +657,7 @@ export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
|
||||
ifndef PPUMOVE
|
||||
PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(PPUMOVE),)
|
||||
PPUMOVE= __missing_command__
|
||||
PPUMOVE=
|
||||
else
|
||||
PPUMOVE:=$(firstword $(PPUMOVE))
|
||||
endif
|
||||
@ -845,7 +666,7 @@ export PPUMOVE
|
||||
ifndef FPCMAKE
|
||||
FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(FPCMAKE),)
|
||||
FPCMAKE= __missing_command__
|
||||
FPCMAKE=
|
||||
else
|
||||
FPCMAKE:=$(firstword $(FPCMAKE))
|
||||
endif
|
||||
@ -854,7 +675,7 @@ export FPCMAKE
|
||||
ifndef ZIPPROG
|
||||
ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(ZIPPROG),)
|
||||
ZIPPROG= __missing_command__
|
||||
ZIPPROG=
|
||||
else
|
||||
ZIPPROG:=$(firstword $(ZIPPROG))
|
||||
endif
|
||||
@ -863,25 +684,21 @@ export ZIPPROG
|
||||
ifndef TARPROG
|
||||
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
|
||||
ifeq ($(TARPROG),)
|
||||
TARPROG= __missing_command__
|
||||
TARPROG=
|
||||
else
|
||||
TARPROG:=$(firstword $(TARPROG))
|
||||
endif
|
||||
endif
|
||||
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 ($(CROSSBINDIR),)
|
||||
ASNAME=asw
|
||||
LDNAME=ldw
|
||||
ARNAME=arw
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifndef ASPROG
|
||||
ifdef CROSSBINDIR
|
||||
ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
|
||||
@ -914,7 +731,7 @@ AS=$(ASPROG)
|
||||
LD=$(LDPROG)
|
||||
RC=$(RCPROG)
|
||||
AR=$(ARPROG)
|
||||
PPAS=ppas$(SRCBATCHEXT)
|
||||
PPAS=ppas$(BATCHEXT)
|
||||
ifdef inUnix
|
||||
LDCONFIG=ldconfig
|
||||
else
|
||||
@ -959,17 +776,6 @@ endif
|
||||
ifneq ($(OS_TARGET),$(OS_SOURCE))
|
||||
override FPCOPT+=-T$(OS_TARGET)
|
||||
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
|
||||
override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
|
||||
endif
|
||||
@ -996,12 +802,8 @@ ifdef RELEASE
|
||||
ifeq ($(CPU_TARGET),i386)
|
||||
FPCCPUOPT:=-OG2p3
|
||||
else
|
||||
ifeq ($(CPU_TARGET),powerpc)
|
||||
FPCCPUOPT:=-O1
|
||||
else
|
||||
FPCCPUOPT:=
|
||||
endif
|
||||
endif
|
||||
override FPCOPT+=-Xs $(FPCCPUOPT) -n
|
||||
override FPCOPTDEF+=RELEASE
|
||||
endif
|
||||
@ -1055,11 +857,6 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
|
||||
override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_TARGET),linux)
|
||||
ifeq ($(FPC_VERSION),1.0.6)
|
||||
override FPCOPTDEF+=HASUNIX
|
||||
endif
|
||||
endif
|
||||
ifdef OPT
|
||||
override FPCOPT+=$(OPT)
|
||||
endif
|
||||
@ -1078,12 +875,12 @@ override COMPILER:=$(FPC) $(FPCOPT)
|
||||
ifeq (,$(findstring -s ,$(COMPILER)))
|
||||
EXECPPAS=
|
||||
else
|
||||
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
|
||||
ifeq ($(OS_SOURCE),$(OS_TARGET))
|
||||
EXECPPAS:=@$(PPAS)
|
||||
endif
|
||||
endif
|
||||
.PHONY: fpc_loaders
|
||||
ifneq ($(TARGET_LOADERS),)
|
||||
ifdef TARGET_LOADERS
|
||||
override ALLTARGET+=fpc_loaders
|
||||
override CLEANTARGET+=fpc_loaders_clean
|
||||
override INSTALLTARGET+=fpc_loaders_install
|
||||
@ -1098,7 +895,7 @@ fpc_loaders_install:
|
||||
$(MKDIR) $(INSTALL_UNITDIR)
|
||||
$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
|
||||
.PHONY: fpc_units
|
||||
ifneq ($(TARGET_UNITS),)
|
||||
ifdef TARGET_UNITS
|
||||
override ALLTARGET+=fpc_units
|
||||
override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
|
||||
override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
|
||||
@ -1120,7 +917,7 @@ fpc_debug:
|
||||
$(MAKE) all DEBUG=1
|
||||
fpc_release:
|
||||
$(MAKE) all RELEASE=1
|
||||
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .dpr .pp .rc .res
|
||||
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
|
||||
%$(PPUEXT): %.pp
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
@ -1133,14 +930,10 @@ fpc_release:
|
||||
%$(EXEEXT): %.pas
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
%$(EXEEXT): %.dpr
|
||||
$(COMPILER) $<
|
||||
$(EXECPPAS)
|
||||
%.res: %.rc
|
||||
windres -i $< -o $@
|
||||
vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||
vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
|
||||
.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
|
||||
ifdef INSTALL_UNITS
|
||||
@ -1217,9 +1010,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
|
||||
endif
|
||||
ifdef 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 CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
|
||||
endif
|
||||
@ -1243,7 +1033,6 @@ ifdef LIB_NAME
|
||||
-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
|
||||
endif
|
||||
-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
|
||||
-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
|
||||
fpc_distclean: clean
|
||||
ifdef COMPILER_UNITTARGETDIR
|
||||
TARGETDIRCLEAN=fpc_clean
|
||||
@ -1255,13 +1044,9 @@ endif
|
||||
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
|
||||
-$(DELTREE) *$(SMARTEXT)
|
||||
-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
|
||||
-$(DEL) *_ppas$(BATCHEXT)
|
||||
ifdef AOUTEXT
|
||||
-$(DEL) *$(AOUTEXT)
|
||||
endif
|
||||
ifdef DEBUGSYMEXT
|
||||
-$(DEL) *$(DEBUGSYMEXT)
|
||||
endif
|
||||
.PHONY: fpc_baseinfo
|
||||
override INFORULES+=fpc_baseinfo
|
||||
fpc_baseinfo:
|
||||
@ -1306,7 +1091,6 @@ fpc_baseinfo:
|
||||
@$(ECHO) Rm........ $(RMPROG)
|
||||
@$(ECHO) GInstall.. $(GINSTALL)
|
||||
@$(ECHO) Echo...... $(ECHO)
|
||||
@$(ECHO) Shell..... $(SHELL)
|
||||
@$(ECHO) Date...... $(DATE)
|
||||
@$(ECHO) FPCMake... $(FPCMAKE)
|
||||
@$(ECHO) PPUMove... $(PPUMOVE)
|
||||
@ -1392,8 +1176,8 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
|
||||
include $(PROCINC)/makefile.cpu
|
||||
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
|
||||
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
|
||||
$(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
|
||||
gprt0$(OEXT) : $(CPU_TARGET)/gprt0.as
|
||||
|
||||
@ -69,12 +69,10 @@ ifeq ($(CPU_TARGET),i386)
|
||||
CPU_UNITS+=oldlinux
|
||||
endif
|
||||
LINUXUNIT2=linux
|
||||
PRT0=prt0
|
||||
else
|
||||
SYSTEMUNIT=syslinux
|
||||
LINUXUNIT1=linux
|
||||
LINUXUNIT2=
|
||||
PRT0=prt0_10
|
||||
override FPCOPT+=-dUNIX
|
||||
endif
|
||||
|
||||
@ -119,8 +117,8 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
|
||||
# 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
|
||||
$(AS) -o dllprt0$(OEXT) $(CPU_TARGET)/dllprt0.as
|
||||
|
||||
@ -50,14 +50,14 @@ _start:
|
||||
ldmia sp!, {a2}
|
||||
|
||||
/* 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]
|
||||
|
||||
/* calc envp */
|
||||
add a2,a2,#1
|
||||
add a2,sp,a2,LSL #2
|
||||
ldr ip,=U_SYSTEM_ENVP
|
||||
ldr ip,=operatingsystem_parameter_envp
|
||||
|
||||
str sp,[a3]
|
||||
str a2,[ip]
|
||||
@ -68,7 +68,7 @@ _start:
|
||||
.globl _haltproc
|
||||
.type _haltproc,#function
|
||||
_haltproc:
|
||||
ldr r0,=U_SYSTEM_EXITCODE
|
||||
ldr r0,=operatingsystem_result
|
||||
ldrb r0,[r0]
|
||||
swi 0x900001
|
||||
b _haltproc
|
||||
@ -81,6 +81,11 @@ __data_start:
|
||||
.weak data_start
|
||||
data_start = __data_start
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
.section ".comment"
|
||||
.byte 0
|
||||
.ascii "generated by FPC http://www.freepascal.org\0"
|
||||
@ -101,7 +106,11 @@ __data_start:
|
||||
|
||||
/*
|
||||
$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
|
||||
* made some generic math code more readable
|
||||
|
||||
|
||||
@ -14,25 +14,39 @@
|
||||
#**********************************************************************}
|
||||
#
|
||||
# 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
|
||||
.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
|
||||
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 */
|
||||
|
||||
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 */
|
||||
|
||||
@ -44,10 +58,10 @@ _start:
|
||||
movzwl __fpu_control,%eax
|
||||
pushl %eax
|
||||
call __setfpucw
|
||||
addl $4,%esp
|
||||
popl %eax
|
||||
pushl $_fini
|
||||
call atexit
|
||||
addl $4,%esp
|
||||
popl %eax
|
||||
call _init
|
||||
|
||||
popl %eax
|
||||
@ -59,30 +73,32 @@ _start:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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
|
||||
jmp _haltproc
|
||||
jmp _haltproc2
|
||||
|
||||
.data
|
||||
.align 4
|
||||
|
||||
.globl ___fpc_brk_addr /* heap management */
|
||||
.bss
|
||||
.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$
|
||||
# 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
|
||||
#
|
||||
|
||||
@ -14,6 +14,22 @@
|
||||
#**********************************************************************}
|
||||
#
|
||||
# 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"
|
||||
@ -22,6 +38,7 @@
|
||||
.type _start,@function
|
||||
_start:
|
||||
/* First locate the start of the environment variables */
|
||||
|
||||
popl %esi
|
||||
movl %eax,%edi
|
||||
|
||||
@ -32,9 +49,9 @@ _start:
|
||||
addl %esp,%eax
|
||||
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
|
||||
pushl %edi
|
||||
@ -65,8 +82,7 @@ main:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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_ebp,%ebp
|
||||
@ -79,12 +95,6 @@ _fini_dummy:
|
||||
.data
|
||||
.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 */
|
||||
.long 0
|
||||
___fpc_ret_ebx:
|
||||
@ -92,9 +102,21 @@ ___fpc_ret_ebx:
|
||||
___fpc_ret_ebp:
|
||||
.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$
|
||||
# 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
|
||||
#
|
||||
|
||||
@ -30,9 +30,9 @@ FPC_LIB_START:
|
||||
movl 12(%ebp),%ecx
|
||||
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
|
||||
|
||||
@ -44,14 +44,24 @@ FPC_LIB_START:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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
|
||||
jmp _haltproc
|
||||
jmp _haltproc2
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
#
|
||||
# $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
|
||||
#
|
||||
|
||||
@ -31,9 +31,9 @@ _start:
|
||||
addl %esp,%eax
|
||||
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 */
|
||||
fwait
|
||||
@ -53,31 +53,35 @@ _start:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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
|
||||
|
||||
call exit /* call libc exit, this will */
|
||||
/* write the gmon.out */
|
||||
|
||||
movl $1,%eax /* exit call */
|
||||
xorl %eax,%eax
|
||||
incl %eax /* eax=1, exit call */
|
||||
popl %ebx
|
||||
int $0x80
|
||||
jmp _haltproc
|
||||
jmp _haltproc2
|
||||
|
||||
.data
|
||||
.align 4
|
||||
___fpucw:
|
||||
.long 0x1332
|
||||
|
||||
.globl ___fpc_brk_addr /* heap management */
|
||||
.bss
|
||||
.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$
|
||||
# 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
|
||||
#
|
||||
|
||||
@ -32,9 +32,9 @@ _start:
|
||||
addl %esp,%eax
|
||||
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
|
||||
xorl %ebp,%ebp
|
||||
@ -68,8 +68,7 @@ cmain:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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_ebx,%ebx
|
||||
@ -105,12 +104,6 @@ __gmon_start__:
|
||||
.data
|
||||
.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 */
|
||||
.long 0
|
||||
___fpc_ret_ebx:
|
||||
@ -123,9 +116,21 @@ ___fpc_ret_edi:
|
||||
.bss
|
||||
.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$
|
||||
# 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+
|
||||
#
|
||||
# Revision 1.4 2002/09/07 16:01:20 peter
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
#
|
||||
# $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.
|
||||
# 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,
|
||||
# for details about the copyright.
|
||||
@ -14,27 +14,45 @@
|
||||
#**********************************************************************}
|
||||
#
|
||||
# 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
|
||||
.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
|
||||
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 */
|
||||
|
||||
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
|
||||
fldcw ___fpucw
|
||||
|
||||
@ -44,25 +62,37 @@ _start:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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
|
||||
jmp _haltproc
|
||||
jmp _haltproc2
|
||||
|
||||
.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
|
||||
|
||||
.bss
|
||||
.type ___fpc_brk_addr,@object
|
||||
.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$
|
||||
# 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
|
||||
#
|
||||
|
||||
@ -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
|
||||
#
|
||||
@ -31,14 +31,14 @@ _start:
|
||||
mtlr 0
|
||||
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 */
|
||||
bl __libc_init_first
|
||||
@ -52,8 +52,8 @@ _start:
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
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
|
||||
b _haltproc
|
||||
|
||||
@ -68,9 +68,18 @@ data_start:
|
||||
___fpc_brk_addr:
|
||||
.long 0
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
/*
|
||||
$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
|
||||
|
||||
Revision 1.5 2004/01/04 17:12:28 florian
|
||||
|
||||
@ -31,18 +31,18 @@ _start:
|
||||
mtlr 0
|
||||
stw 0,0(1)
|
||||
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 */
|
||||
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 */
|
||||
slwi 27,27,2 /* calculate (argc + 1) * sizeof(char *) into r27 */
|
||||
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
|
||||
|
||||
@ -65,9 +65,18 @@ data_start:
|
||||
.size ___fpc_brk_addr,4
|
||||
___fpc_brk_addr:
|
||||
.long 0
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
/*
|
||||
$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
|
||||
|
||||
Revision 1.11 2004/01/04 17:23:57 florian
|
||||
|
||||
@ -33,21 +33,21 @@ _start:
|
||||
/* Extract the arguments and environment as encoded on the stack. The
|
||||
argument info starts after one register window (16 words) past the SP. */
|
||||
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]
|
||||
|
||||
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]
|
||||
|
||||
/* envp=(argc+1)*4+argv */
|
||||
inc %o2
|
||||
sll %o2, 2, %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]
|
||||
|
||||
/* Call the user program entry point. */
|
||||
@ -68,9 +68,18 @@ _haltproc:
|
||||
|
||||
.size _start, .-_start
|
||||
|
||||
.bss
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
||||
|
||||
#
|
||||
# $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
|
||||
# * stat fixed
|
||||
#
|
||||
|
||||
@ -50,11 +50,11 @@ _start:
|
||||
popq %rsi /* Pop the argument count. */
|
||||
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
|
||||
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. */
|
||||
andq $~15, %rsp
|
||||
@ -93,7 +93,7 @@ main_stub:
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_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_rbp,%rbp
|
||||
@ -121,6 +121,11 @@ ___fpc_ret: /* return address to libc */
|
||||
___fpc_ret_rbp:
|
||||
.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
|
||||
gdb will chokes with SIGILL when trying to debug apps.
|
||||
*/
|
||||
@ -140,7 +145,11 @@ ___fpc_ret_rbp:
|
||||
|
||||
/*
|
||||
$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
|
||||
|
||||
Revision 1.1 2003/01/06 19:39:17 florian
|
||||
|
||||
@ -42,11 +42,11 @@ _start:
|
||||
# movq %rdx,%r9 /* Address of the shared library termination
|
||||
# function. */
|
||||
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
|
||||
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. */
|
||||
|
||||
/* !!!! CPU initialization? */
|
||||
@ -59,8 +59,7 @@ _start:
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
movl $60,%eax /* exit call */
|
||||
xorq %rdi,%rdi
|
||||
movw U_SYSTEM_EXITCODE,%di
|
||||
movzwl operatingsystem_result,%edi
|
||||
syscall
|
||||
jmp _haltproc
|
||||
|
||||
@ -72,6 +71,12 @@ __data_start:
|
||||
.weak 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
|
||||
gdb will chokes with SIGILL when trying to debug apps.
|
||||
*/
|
||||
@ -90,7 +95,11 @@ __data_start:
|
||||
|
||||
#
|
||||
# $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
|
||||
# * int64 mod int64 for negative numbers fixed
|
||||
#
|
||||
|
||||
@ -52,14 +52,17 @@ const
|
||||
sLineBreak = LineEnding;
|
||||
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$
|
||||
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
|
||||
* textrec fixed for 64bit
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@ interface
|
||||
|
||||
{$DEFINE HAS_SLEEP}
|
||||
{$DEFINE HAS_OSERROR}
|
||||
{$DEFINE HASUNIX}
|
||||
|
||||
uses
|
||||
Unix,errors,sysconst;
|
||||
@ -643,7 +644,11 @@ end.
|
||||
{
|
||||
|
||||
$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
|
||||
|
||||
Revision 1.41 2004/05/22 14:25:03 michael
|
||||
|
||||
Loading…
Reference in New Issue
Block a user