mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 04:19:31 +02:00
* fpcmake & fpmake: support for installing .bc files (LLVM bitcode)
git-svn-id: branches/debug_eh@41913 -
This commit is contained in:
parent
cd3e4d26d4
commit
5757ae75b8
@ -235,6 +235,7 @@ Const
|
|||||||
PPExt = '.pp';
|
PPExt = '.pp';
|
||||||
IncExt = '.inc';
|
IncExt = '.inc';
|
||||||
ObjExt = '.o';
|
ObjExt = '.o';
|
||||||
|
LTOExt = '.bc';
|
||||||
RstExt = '.rst';
|
RstExt = '.rst';
|
||||||
RsjExt = '.rsj';
|
RsjExt = '.rsj';
|
||||||
LibExt = '.a';
|
LibExt = '.a';
|
||||||
@ -623,6 +624,7 @@ Type
|
|||||||
Function GetUnitFileName : String; virtual;
|
Function GetUnitFileName : String; virtual;
|
||||||
function GetUnitLibFileName(AOS: TOS): String; virtual;
|
function GetUnitLibFileName(AOS: TOS): String; virtual;
|
||||||
Function GetObjectFileName : String; virtual;
|
Function GetObjectFileName : String; virtual;
|
||||||
|
Function GetLTOFileName : String; virtual;
|
||||||
Function GetBinFileBase: String;
|
Function GetBinFileBase: String;
|
||||||
function GetRSTFileName : String; Virtual;
|
function GetRSTFileName : String; Virtual;
|
||||||
function GetRSJFileName : String; Virtual;
|
function GetRSJFileName : String; Virtual;
|
||||||
@ -654,6 +656,7 @@ Type
|
|||||||
Property SourceFileName: String Read GetSourceFileName ;
|
Property SourceFileName: String Read GetSourceFileName ;
|
||||||
Property UnitFileName : String Read GetUnitFileName;
|
Property UnitFileName : String Read GetUnitFileName;
|
||||||
Property ObjectFileName : String Read GetObjectFileName;
|
Property ObjectFileName : String Read GetObjectFileName;
|
||||||
|
Property LTOFileName : String Read GetLTOFileName;
|
||||||
Property RSTFileName : String Read GetRSTFileName;
|
Property RSTFileName : String Read GetRSTFileName;
|
||||||
Property RSJFileName : String Read GetRSJFileName;
|
Property RSJFileName : String Read GetRSJFileName;
|
||||||
Property FPCTarget : String Read FFPCTarget Write FFPCTarget;
|
Property FPCTarget : String Read FFPCTarget Write FFPCTarget;
|
||||||
@ -8659,6 +8662,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TTarget.GetLTOFileName: String;
|
||||||
|
begin
|
||||||
|
Result:=Name+LTOExt;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TTarget.GetRSTFileName: String;
|
function TTarget.GetRSTFileName: String;
|
||||||
begin
|
begin
|
||||||
Result:=Name+RSText;
|
Result:=Name+RSText;
|
||||||
@ -8756,6 +8765,7 @@ begin
|
|||||||
If not(ACPU in CPUs) or not(AOS in OSes) then
|
If not(ACPU in CPUs) or not(AOS in OSes) then
|
||||||
exit;
|
exit;
|
||||||
List.Add(APrefixU + ObjectFileName);
|
List.Add(APrefixU + ObjectFileName);
|
||||||
|
List.Add(APrefixU + LTOFileName);
|
||||||
If (TargetType in [ttUnit,ttImplicitUnit,ttExampleUnit, ttCleanOnlyUnit]) then
|
If (TargetType in [ttUnit,ttImplicitUnit,ttExampleUnit, ttCleanOnlyUnit]) then
|
||||||
begin
|
begin
|
||||||
List.Add(APrefixU + UnitFileName);
|
List.Add(APrefixU + UnitFileName);
|
||||||
@ -8808,9 +8818,14 @@ var
|
|||||||
UnitsDir : string;
|
UnitsDir : string;
|
||||||
begin
|
begin
|
||||||
UnitsDir := Installer.BuildEngine.AddPathPrefix(nil, APrefixU);
|
UnitsDir := Installer.BuildEngine.AddPathPrefix(nil, APrefixU);
|
||||||
If Not (TargetType in [ttProgram,ttSharedLibrary,ttExampleProgram]) and FileExists(UnitsDir + ObjectFileName) then
|
If Not (TargetType in [ttProgram,ttSharedLibrary,ttExampleProgram]) then
|
||||||
// The compiler does not create an objectfile for all programs.
|
begin
|
||||||
List.Add(APrefixU + ObjectFileName);
|
// The compiler does not create an objectfile for all programs.
|
||||||
|
if FileExists(UnitsDir + ObjectFileName) then
|
||||||
|
List.Add(APrefixU + ObjectFileName);
|
||||||
|
if FileExists(UnitsDir + LTOFileName) then
|
||||||
|
List.Add(APrefixU + LTOFileName);
|
||||||
|
end;
|
||||||
If (TargetType in [ttUnit,ttImplicitUnit,ttExampleUnit]) then
|
If (TargetType in [ttUnit,ttImplicitUnit,ttExampleUnit]) then
|
||||||
begin
|
begin
|
||||||
List.Add(APrefixU + UnitFileName);
|
List.Add(APrefixU + UnitFileName);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -870,6 +870,7 @@ EXEEXT=.exe
|
|||||||
PPLEXT=.ppl
|
PPLEXT=.ppl
|
||||||
PPUEXT=.ppu
|
PPUEXT=.ppu
|
||||||
OEXT=.o
|
OEXT=.o
|
||||||
|
LTOEXT=.bc
|
||||||
ASMEXT=.s
|
ASMEXT=.s
|
||||||
SMARTEXT=.sl
|
SMARTEXT=.sl
|
||||||
STATICLIBEXT=.a
|
STATICLIBEXT=.a
|
||||||
@ -1587,7 +1588,7 @@ fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
|
|||||||
ifndef CROSSINSTALL
|
ifndef CROSSINSTALL
|
||||||
ifneq ($(TARGET_PROGRAMS),)
|
ifneq ($(TARGET_PROGRAMS),)
|
||||||
override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
|
override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
|
||||||
override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
|
override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffix $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
|
||||||
override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))
|
override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))
|
||||||
|
|
||||||
override ALLTARGET+=fpc_exes
|
override ALLTARGET+=fpc_exes
|
||||||
@ -1629,7 +1630,7 @@ ifneq ($(TARGET_EXAMPLES),)
|
|||||||
HASEXAMPLES=1
|
HASEXAMPLES=1
|
||||||
override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))
|
override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))
|
||||||
override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))
|
override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))
|
||||||
override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))
|
override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addsuffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))
|
||||||
override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))
|
override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))
|
||||||
|
|
||||||
override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
|
override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
|
||||||
@ -1671,7 +1672,7 @@ fpc_release:
|
|||||||
|
|
||||||
# General compile rules, available for both possible .pp and .pas extensions
|
# General compile rules, available for both possible .pp and .pas extensions
|
||||||
|
|
||||||
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
|
.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .rc .res
|
||||||
|
|
||||||
$(COMPILER_UNITTARGETDIR):
|
$(COMPILER_UNITTARGETDIR):
|
||||||
$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
|
$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
|
||||||
@ -1713,6 +1714,7 @@ vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
|||||||
vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
|
||||||
vpath %.inc $(COMPILER_INCLUDEDIR)
|
vpath %.inc $(COMPILER_INCLUDEDIR)
|
||||||
vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
|
vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
|
||||||
|
vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR)
|
||||||
vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
|
vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
|
||||||
|
|
||||||
[sharedrules]
|
[sharedrules]
|
||||||
@ -1780,9 +1782,9 @@ ifdef INSTALLPPUFILES
|
|||||||
# Avoid getting the same name twice as some install EXE fail
|
# Avoid getting the same name twice as some install EXE fail
|
||||||
# in this case, happends for instance for OS/2 target
|
# in this case, happends for instance for OS/2 target
|
||||||
ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICLIBEXT))
|
ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICLIBEXT))
|
||||||
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
|
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
|
||||||
else
|
else
|
||||||
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
|
override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(UNITTARGETDIRPREFIX),)
|
ifneq ($(UNITTARGETDIRPREFIX),)
|
||||||
@ -1996,7 +1998,7 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CLEANPPUFILES
|
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)) $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
|
||||||
ifdef DEBUGSYMEXT
|
ifdef DEBUGSYMEXT
|
||||||
override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
|
override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
|
||||||
endif
|
endif
|
||||||
@ -2050,7 +2052,7 @@ ifdef CLEAN_FILES
|
|||||||
endif
|
endif
|
||||||
-$(DELTREE) units
|
-$(DELTREE) units
|
||||||
-$(DELTREE) bin
|
-$(DELTREE) bin
|
||||||
-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
|
-$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
|
||||||
ifneq ($(PPUEXT),.ppu)
|
ifneq ($(PPUEXT),.ppu)
|
||||||
-$(DEL) *.o *.ppu *.a
|
-$(DEL) *.o *.ppu *.a
|
||||||
endif
|
endif
|
||||||
@ -2299,7 +2301,7 @@ lclinfo:
|
|||||||
# fpmake prerules
|
# fpmake prerules
|
||||||
#####################################################################
|
#####################################################################
|
||||||
FPMAKEBIN=fpmake$(SRCEXEEXT)
|
FPMAKEBIN=fpmake$(SRCEXEEXT)
|
||||||
FPMAKEBINOBJ=fpmake$(OEXT)
|
FPMAKEBINOBJ=fpmake$(OEXT) fpmake$(LTOEXT)
|
||||||
LOCALFPMAKEBIN=.$(PATHSEP)$(FPMAKEBIN)
|
LOCALFPMAKEBIN=.$(PATHSEP)$(FPMAKEBIN)
|
||||||
|
|
||||||
# Convert the OS_TARGET and CPU_TARGET options to fpmake's --os and --cpu parameters
|
# Convert the OS_TARGET and CPU_TARGET options to fpmake's --os and --cpu parameters
|
||||||
|
Loading…
Reference in New Issue
Block a user