mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 09:59:25 +02:00
- 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:
parent
9a5885b8d2
commit
550626ef34
@ -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 }
|
||||
|
@ -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',
|
||||
|
@ -360,6 +360,7 @@ interface
|
||||
'.rodata',
|
||||
'.bss',
|
||||
'.tbss',
|
||||
'.pdata',
|
||||
'.text',
|
||||
'.stab',
|
||||
'.stabstr',
|
||||
|
@ -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],
|
||||
|
@ -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');
|
||||
|
@ -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',
|
||||
|
@ -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
|
||||
|
@ -72,7 +72,7 @@ interface
|
||||
'csect', {code}
|
||||
'csect', {data}
|
||||
'csect', {read only data}
|
||||
'csect', {bss} 'csect',
|
||||
'csect', {bss} 'csect', '',
|
||||
'csect','csect','csect','csect',
|
||||
'','','','','','','','','','','',''
|
||||
);
|
||||
|
@ -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$*))');
|
||||
|
@ -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',
|
||||
'',
|
||||
'','','','',
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
#
|
||||
|
@ -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
|
||||
****************************************************************************}
|
||||
|
Loading…
Reference in New Issue
Block a user