- Removed need of assembler startup files for wince. Now compiler directly creates .pdata section needed for arm-wince exception handling.

git-svn-id: trunk@3764 -
This commit is contained in:
yury 2006-06-02 08:36:25 +00:00
parent 9a5885b8d2
commit 550626ef34
13 changed files with 88 additions and 265 deletions

View File

@ -56,6 +56,8 @@ interface
sec_rodata,
sec_bss,
sec_threadvar,
{ used for wince exception handling }
sec_pdata,
{ used for darwin import stubs }
sec_stub,
{ stabs }

View File

@ -244,6 +244,7 @@ implementation
{$endif arm}
'.bss',
'.threadvar',
'.pdata',
'', { stubs }
'.stab',
'.stabstr',
@ -259,6 +260,7 @@ implementation
'.data.rel',
'.bss',
'.threadvar',
'.pdata',
'', { stubs }
'.stab',
'.stabstr',

View File

@ -360,6 +360,7 @@ interface
'.rodata',
'.bss',
'.tbss',
'.pdata',
'.text',
'.stab',
'.stabstr',

View File

@ -737,6 +737,7 @@ implementation
'roData',
'bss',
'threadvar',
'pdata',
'stub',
'stab','stabstr',
'iData2','iData4','iData5','iData6','iData7','eData',
@ -762,6 +763,7 @@ implementation
{roData} [oso_Data,oso_load,oso_write,oso_keep],
{bss} [oso_load,oso_write,oso_keep],
{threadvar} [oso_load,oso_write],
{pdata} [oso_load,oso_readonly,oso_keep],
{stub} [oso_Data,oso_load,oso_readonly,oso_executable],
{stab} [oso_Data,oso_noload,oso_debug],
{stabstr} [oso_Data,oso_noload,oso_strings,oso_debug],

View File

@ -473,6 +473,7 @@ implementation
coffsecnames : array[TAsmSectiontype] of string[17] = ('',
'.text','.data','.data','.bss','.tls',
'.text',
'.pdata',
'.stab','.stabstr',
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
'.eh_frame',
@ -1918,7 +1919,10 @@ const win32stub : array[0..131] of byte=(
inherited create;
win32:=awin32;
if win32 then
imagebase:=$400000;
if target_info.system in [system_arm_wince] then
imagebase:=$10000
else
imagebase:=$400000;
end;
@ -2455,8 +2459,6 @@ const win32stub : array[0..131] of byte=(
begin
with LinkScript do
begin
if target_info.system in [system_arm_wince,system_i386_wince] then
Concat('READOBJECT ' + FindObjectFile('wprt0','',false));
Concat('READUNITOBJECTS');
if IsSharedLibrary then
begin
@ -2469,8 +2471,6 @@ const win32stub : array[0..131] of byte=(
end
else
begin
if target_info.system in [system_arm_wince] then
Concat('IMAGEBASE $10000');
if apptype=app_gui then
Concat('ENTRYNAME _WinMainCRTStartup')
else
@ -2478,6 +2478,9 @@ const win32stub : array[0..131] of byte=(
end;
Concat('HEADER');
Concat('EXESECTION .text');
{$ifdef arm}
Concat(' OBJSECTION .pdata.FPC_EH_PROLOG');
{$endif arm}
Concat(' OBJSECTION .text*');
Concat(' SYMBOL etext');
Concat('ENDEXESECTION');

View File

@ -583,6 +583,7 @@ implementation
{$else userodata}
'.text','.data','.data','.bss','.threadvar',
{$endif userodata}
'.pdata',
'.text', { darwin stubs }
'.stab','.stabstr',
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',

View File

@ -221,6 +221,19 @@ implementation
ltvTable.Free;
end;
{$ifdef arm}
procedure InsertPData;
begin
new_section(current_asmdata.asmlists[al_globals],sec_pdata,'FPC_EH_PROLOG',sizeof(aint));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname('_ARM_ExceptionHandler', 0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_32bit(0));
current_asmdata.asmlists[al_globals].concat(Tai_symbol.Createname_global('FPC_EH_CODE_START',AT_DATA,0));
new_section(current_asmdata.asmlists[al_globals],sec_pdata,'',sizeof(aint));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname('FPC_EH_CODE_START', 0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_32bit($cfffff02));
end;
{$endif arm}
Procedure InsertResourceInfo;
@ -1376,6 +1389,13 @@ implementation
{ do we need to add the variants unit? }
maybeloadvariantsunit;
{$ifdef arm}
{ Insert .pdata section for arm-wince.
It is needed for exception handling. }
if target_info.system in [system_arm_wince] then
InsertPData;
{$endif arm}
{ generate debuginfo }
if (cs_debuginfo in aktmoduleswitches) then

View File

@ -72,7 +72,7 @@ interface
'csect', {code}
'csect', {data}
'csect', {read only data}
'csect', {bss} 'csect',
'csect', {bss} 'csect', '',
'csect','csect','csect','csect',
'','','','','','','','','','','',''
);

View File

@ -997,11 +997,6 @@ begin
if not ObjectFiles.Empty then
begin
Add('INPUT(');
{ For wince external startup file is used and placed first, }
{ because ARM prolog structure must be located at the very }
{ beginning of code. Otherwise exceptions do not work properly. }
if target_info.system in [system_arm_wince,system_i386_wince] then
LinkRes.AddFileName(MaybeQuoted(FindObjectFile('wprt0','',false)));
while not ObjectFiles.Empty do
begin
s:=ObjectFiles.GetFirst;
@ -1054,6 +1049,9 @@ begin
Add(' . = ALIGN(__section_alignment__);');
Add(' .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :');
Add(' {');
{$ifdef arm}
Add(' *(.pdata.FPC_EH_PROLOG)');
{$endif arm}
Add(' *(.init)');
add(' *(.text .stub .text.* .gnu.linkonce.t.*)');
Add(' *(SORT(.text$*))');

View File

@ -60,7 +60,7 @@ implementation
secnames : array[TAsmSectiontype] of string[4] = ('',
'CODE','DATA','DATA','BSS','',
'','','','','',
'','','','','','',
'','','','',
'',
'','','','',
@ -70,7 +70,7 @@ implementation
secnamesml64 : array[TAsmSectiontype] of string[7] = ('',
'_TEXT','_DATE','_DATA','_BSS','',
'','','',
'','','','',
'idata$2','idata$4','idata$5','idata$6','idata$7','edata',
'',
'','','','',

View File

@ -1,8 +1,8 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/05/11]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/26]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince powerpc64-linux
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx
LIMIT83fs = go32v2 os2 emx watcom
@ -284,9 +284,6 @@ endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
@ -356,132 +353,12 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types classes strutils convutils math dateutils varutils variants matrix ucomplex charset getopts winsock winsock2 sockets
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_LOADERS+=wprt0 #wdllprt0
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
@ -519,9 +396,6 @@ endif
ifeq ($(FULL_TARGET),i386-wdosx)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
ifeq ($(FULL_TARGET),i386-darwin)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
ifeq ($(FULL_TARGET),i386-emx)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
@ -591,9 +465,6 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
ifeq ($(FULL_TARGET),arm-palmos)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
ifeq ($(FULL_TARGET),arm-wince)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
endif
@ -636,9 +507,6 @@ endif
ifeq ($(FULL_TARGET),i386-wdosx)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
ifeq ($(FULL_TARGET),i386-darwin)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
ifeq ($(FULL_TARGET),i386-emx)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@ -708,9 +576,6 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
ifeq ($(FULL_TARGET),arm-palmos)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
ifeq ($(FULL_TARGET),arm-wince)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
endif
@ -900,9 +765,6 @@ endif
ifndef INSTALL_DATADIR
INSTALL_DATADIR=$(INSTALL_BASEDIR)
endif
ifndef INSTALL_SHAREDDIR
INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
endif
ifdef CROSSCOMPILE
ifndef CROSSBINDIR
CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
@ -923,9 +785,7 @@ ASMEXT=.s
SMARTEXT=.sl
STATICLIBEXT=.a
SHAREDLIBEXT=.so
SHAREDLIBPREFIX=libfp
STATICLIBPREFIX=libp
IMPORTLIBPREFIX=libimp
RSTEXT=.rst
ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
ifeq ($(OS_TARGET),go32v1)
@ -1358,17 +1218,12 @@ endif
endif
export ZIPPROG
ifndef TARPROG
TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(TARPROG),)
TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
ifeq ($(TARPROG),)
TARPROG= __missing_command_TARPROG
else
TARPROG:=$(firstword $(TARPROG))
endif
else
TARPROG:=$(firstword $(TARPROG))
endif
endif
export TARPROG
ASNAME=$(BINUTILSPREFIX)as
@ -1461,9 +1316,6 @@ endif
ifneq ($(OS_TARGET),$(OS_SOURCE))
override FPCOPT+=-T$(OS_TARGET)
endif
ifneq ($(CPU_TARGET),$(CPU_SOURCE))
override FPCOPT+=-P$(CPU_TARGET)
endif
ifeq ($(OS_SOURCE),openbsd)
override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
endif
@ -1498,15 +1350,14 @@ override FPCOPT+=-gl
override FPCOPTDEF+=DEBUG
endif
ifdef RELEASE
ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
ifeq ($(CPU_TARGET),i386)
FPCCPUOPT:=-OG2p3
endif
else
ifeq ($(CPU_TARGET),powerpc)
FPCCPUOPT:=-O1r
endif
else
FPCCPUOPT:=-O2
FPCCPUOPT:=
endif
endif
override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
override FPCOPTDEF+=RELEASE
@ -1515,7 +1366,9 @@ ifdef STRIP
override FPCOPT+=-Xs
endif
ifdef OPTIMIZE
override FPCOPT+=-O2
ifeq ($(CPU_TARGET),i386)
override FPCOPT+=-OG2p3
endif
endif
ifdef VERBOSE
override FPCOPT+=-vwni
@ -1559,14 +1412,11 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
endif
endif
ifdef CREATESHARED
override FPCOPT+=-Cg
ifeq ($(CPU_TARGET),i386)
override FPCOPT+=-Aas
ifeq ($(OS_TARGET),linux)
ifeq ($(FPC_VERSION),1.0.6)
override FPCOPTDEF+=HASUNIX
endif
endif
ifdef LINKSHARED
endif
ifdef OPT
override FPCOPT+=$(OPT)
endif
@ -1581,14 +1431,6 @@ override FPCEXTCMD:=$(FPCOPT)
override FPCOPT:=!FPCEXTCMD
export FPCEXTCMD
endif
override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
override ACROSSCOMPILE=1
endif
ifdef ACROSSCOMPILE
override FPCOPT+=$(CROSSOPT)
endif
override COMPILER:=$(FPC) $(FPCOPT)
ifeq (,$(findstring -s ,$(COMPILER)))
EXECPPAS=
@ -1597,33 +1439,6 @@ ifeq ($(FULL_SOURCE),$(FULL_TARGET))
EXECPPAS:=@$(PPAS)
endif
endif
.PHONY: fpc_loaders
ifneq ($(TARGET_LOADERS),)
override ALLTARGET+=fpc_loaders
override CLEANTARGET+=fpc_loaders_clean
override INSTALLTARGET+=fpc_loaders_install
override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))
endif
%$(OEXT): %$(LOADEREXT)
ifdef COMPILER_UNITTARGETDIR
$(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<
else
$(AS) -o $*$(OEXT) $<
endif
fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)
fpc_loaders_clean:
ifdef COMPILER_UNITTARGETDIR
-$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES))
else
-$(DEL) $(LOADEROFILES)
endif
fpc_loaders_install:
$(MKDIR) $(INSTALL_UNITDIR)
ifdef COMPILER_UNITTARGETDIR
$(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR)
else
$(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS),)
override ALLTARGET+=fpc_units
@ -1637,7 +1452,7 @@ ifdef TARGET_RSTS
override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
override CLEANRSTFILES+=$(RSTFILES)
endif
.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
.PHONY: fpc_all fpc_smart fpc_debug fpc_release
$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
@$(ECHOREDIR) Compiled > $(FPCMADE)
fpc_all: $(FPCMADE)
@ -1678,38 +1493,6 @@ vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
.PHONY: fpc_shared
override INSTALLTARGET+=fpc_shared_install
ifndef SHARED_LIBVERSION
SHARED_LIBVERSION=$(FPC_VERSION)
endif
ifndef SHARED_LIBNAME
SHARED_LIBNAME=$(PACKAGE_NAME)
endif
ifndef SHARED_FULLNAME
SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
endif
ifndef SHARED_LIBUNITS
SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
endif
fpc_shared:
ifdef HASSHAREDLIB
$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
ifneq ($(SHARED_BUILD),n)
$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
endif
else
@$(ECHO) Shared Libraries not supported
endif
fpc_shared_install:
ifneq ($(SHARED_BUILD),n)
ifneq ($(SHARED_LIBUNITS),)
ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
endif
endif
endif
.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
ifdef INSTALL_UNITS
override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
@ -1718,7 +1501,7 @@ ifdef INSTALL_BUILDUNIT
override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
endif
ifdef INSTALLPPUFILES
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
ifneq ($(UNITTARGETDIRPREFIX),)
override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
@ -1788,7 +1571,7 @@ ifdef CLEAN_UNITS
override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
endif
ifdef CLEANPPUFILES
override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(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
@ -1959,7 +1742,7 @@ smart: fpc_smart
release: fpc_release
units: fpc_units
examples:
shared: fpc_shared
shared:
install: fpc_install
sourceinstall: fpc_sourceinstall
exampleinstall: fpc_exampleinstall
@ -1983,8 +1766,6 @@ SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
include $(PROCINC)/makefile.cpu
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) winres.inc
wprt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)wprt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)

View File

@ -6,7 +6,6 @@
main=rtl
[target]
loaders= wprt0 #wdllprt0
units=$(SYSTEMUNIT) ctypes objpas macpas strings \
lineinfo heaptrc \
windows messages dynlibs \
@ -88,15 +87,6 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS) winres.inc
#
# Loaders
#
wprt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)wprt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
#wdllprt0$(OEXT) : wdllprt0.as
#
# System Units (System, Objpas, Strings)
#

View File

@ -844,14 +844,6 @@ begin
end;
end;
procedure DLLMainStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_FPC_DLLMainStartup';
begin
sysinstance:=_hinstance;
dllreason:=_dllreason;
dllparam:=_dllparam;
DLL_Entry;
end;
{$ifdef WINCE_EXCEPTION_HANDLING}
//
@ -1441,6 +1433,37 @@ begin
system_exit;
end;
procedure _FPC_mainCRTStartup;stdcall;public name '_mainCRTStartup';
begin
IsConsole:=True;
Exe_entry;
end;
procedure _FPC_WinMainCRTStartup;stdcall;public name '_WinMainCRTStartup';
begin
IsConsole:=False;
Exe_entry;
end;
procedure _FPC_DLLMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLMainCRTStartup';
begin
IsConsole:=true;
sysinstance:=_hinstance;
dllreason:=_dllreason;
dllparam:=_dllparam;
DLL_Entry;
end;
procedure _FPC_DLLWinMainCRTStartup(_hinstance,_dllreason,_dllparam:longint);stdcall;public name '_DLLWinMainCRTStartup';
begin
IsConsole:=false;
sysinstance:=_hinstance;
dllreason:=_dllreason;
dllparam:=_dllparam;
DLL_Entry;
end;
{****************************************************************************
OS dependend widestrings
****************************************************************************}