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