mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 12:49:20 +02:00
* Top level makefile: Fixed and simplified cross-building. It is now possible to perform cross builds when having only bootstrap compiler executable.
- Always use fresh native fpcmake executable. - Build fresh native fpcmake executable when cross-compiling. - Explicitly specify a compiler which is used to bootstrap fpmake and fpcmake. Always use fresh native compiler for that. * New bootstrap target for fpcmake to build native fpcmake regardless of CPU/OS settings. git-svn-id: trunk@23641 -
This commit is contained in:
parent
21aa533719
commit
4ee4e6fba0
37
Makefile
37
Makefile
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/01/16]
|
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/02/20]
|
||||||
#
|
#
|
||||||
default: help
|
default: help
|
||||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
|
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
|
||||||
@ -268,6 +268,19 @@ ifdef CROSSCOMPILE
|
|||||||
ifndef DARWIN2DARWIN
|
ifndef DARWIN2DARWIN
|
||||||
ifneq ($(CPU_TARGET),jvm)
|
ifneq ($(CPU_TARGET),jvm)
|
||||||
BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
|
BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
|
||||||
|
ifeq ($(OS_TARGET),android)
|
||||||
|
ifeq ($(CPU_TARGET),arm)
|
||||||
|
BINUTILSPREFIX=arm-linux-androideabi-
|
||||||
|
else
|
||||||
|
ifeq ($(CPU_TARGET),i386)
|
||||||
|
BINUTILSPREFIX=i686-linux-android-
|
||||||
|
else
|
||||||
|
ifeq ($(CPU_TARGET),mips)
|
||||||
|
BINUTILSPREFIX=mipsel-linux-android-
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -360,6 +373,13 @@ PPPRE=ppc
|
|||||||
endif
|
endif
|
||||||
PPNEW=$(BASEDIR)/compiler/$(PPPRE)$(PPSUF)$(SRCEXEEXT)
|
PPNEW=$(BASEDIR)/compiler/$(PPPRE)$(PPSUF)$(SRCEXEEXT)
|
||||||
endif
|
endif
|
||||||
|
ifndef FPCFPMAKENEW
|
||||||
|
ifdef CROSSCOMPILE
|
||||||
|
FPCFPMAKENEW=$(BASEDIR)/compiler/ppc$(SRCEXEEXT)
|
||||||
|
else
|
||||||
|
FPCFPMAKENEW=$(PPNEW)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
ifneq ($(wildcard install),)
|
ifneq ($(wildcard install),)
|
||||||
CVSINSTALL=install
|
CVSINSTALL=install
|
||||||
else
|
else
|
||||||
@ -407,17 +427,11 @@ ifndef DIST_DESTDIR
|
|||||||
export DIST_DESTDIR:=$(BASEDIR)
|
export DIST_DESTDIR:=$(BASEDIR)
|
||||||
endif
|
endif
|
||||||
BASEPACKDIR=$(BASEDIR)/basepack
|
BASEPACKDIR=$(BASEDIR)/basepack
|
||||||
ifndef FPCMAKE
|
ifndef FPCMAKENEW
|
||||||
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
|
FPCMAKENEW=$(BASEDIR)/utils/fpcm/fpcmake$(SRCEXEEXT)
|
||||||
FPCMAKENEW=$(BASEDIR)/utils/fpcm/fpcmake$(EXEEXT)
|
|
||||||
else
|
|
||||||
FPCMAKENEW=fpcmake
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
FPCMAKENEW=$(FPCMAKE)
|
|
||||||
endif
|
endif
|
||||||
CLEANOPTS=FPC=$(PPNEW)
|
CLEANOPTS=FPC=$(PPNEW)
|
||||||
BUILDOPTS=FPC=$(PPNEW) RELEASE=1
|
BUILDOPTS=FPC=$(PPNEW) FPCFPMAKE=$(FPCFPMAKENEW) RELEASE=1
|
||||||
INSTALLOPTS=FPC=$(PPNEW) ZIPDESTDIR=$(BASEDIR) FPCMAKE=$(FPCMAKENEW)
|
INSTALLOPTS=FPC=$(PPNEW) ZIPDESTDIR=$(BASEDIR) FPCMAKE=$(FPCMAKENEW)
|
||||||
ifndef CROSSCOMPILE
|
ifndef CROSSCOMPILE
|
||||||
ifneq ($(wildcard ide),)
|
ifneq ($(wildcard ide),)
|
||||||
@ -2676,6 +2690,9 @@ distclean: clean
|
|||||||
build: $(BUILDSTAMP)
|
build: $(BUILDSTAMP)
|
||||||
$(BUILDSTAMP):
|
$(BUILDSTAMP):
|
||||||
$(MAKE) compiler_cycle RELEASE=1
|
$(MAKE) compiler_cycle RELEASE=1
|
||||||
|
ifdef CROSSCOMPILE
|
||||||
|
$(MAKE) -C utils/fpcm bootstrap $(BUILDOPTS)
|
||||||
|
endif
|
||||||
$(MAKE) rtl_clean $(CLEANOPTS)
|
$(MAKE) rtl_clean $(CLEANOPTS)
|
||||||
$(MAKE) packages_clean $(CLEANOPTS)
|
$(MAKE) packages_clean $(CLEANOPTS)
|
||||||
ifdef UTILS
|
ifdef UTILS
|
||||||
|
31
Makefile.fpc
31
Makefile.fpc
@ -88,6 +88,18 @@ endif
|
|||||||
PPNEW=$(BASEDIR)/compiler/$(PPPRE)$(PPSUF)$(SRCEXEEXT)
|
PPNEW=$(BASEDIR)/compiler/$(PPPRE)$(PPSUF)$(SRCEXEEXT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Use FPCFPMAKENEW to explicitly specify FPCFPMAKE later.
|
||||||
|
# Otherwise pmkunit build will use wrong (starting) compiler
|
||||||
|
# if there has been no compiler binary available in the compiler
|
||||||
|
# dir before running make.
|
||||||
|
ifndef FPCFPMAKENEW
|
||||||
|
ifdef CROSSCOMPILE
|
||||||
|
FPCFPMAKENEW=$(BASEDIR)/compiler/ppc$(SRCEXEEXT)
|
||||||
|
else
|
||||||
|
FPCFPMAKENEW=$(PPNEW)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Check if install/ subdir is available
|
# Check if install/ subdir is available
|
||||||
ifneq ($(wildcard install),)
|
ifneq ($(wildcard install),)
|
||||||
CVSINSTALL=install
|
CVSINSTALL=install
|
||||||
@ -151,20 +163,14 @@ endif
|
|||||||
# Temporary path to pack a file
|
# Temporary path to pack a file
|
||||||
BASEPACKDIR=$(BASEDIR)/basepack
|
BASEPACKDIR=$(BASEDIR)/basepack
|
||||||
|
|
||||||
# Newly created fpcmake
|
# Always use newly created fpcmake
|
||||||
ifndef FPCMAKE
|
ifndef FPCMAKENEW
|
||||||
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
|
FPCMAKENEW=$(BASEDIR)/utils/fpcm/fpcmake$(SRCEXEEXT)
|
||||||
FPCMAKENEW=$(BASEDIR)/utils/fpcm/fpcmake$(EXEEXT)
|
|
||||||
else
|
|
||||||
FPCMAKENEW=fpcmake
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
FPCMAKENEW=$(FPCMAKE)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Build/install options
|
# Build/install options
|
||||||
CLEANOPTS=FPC=$(PPNEW)
|
CLEANOPTS=FPC=$(PPNEW)
|
||||||
BUILDOPTS=FPC=$(PPNEW) RELEASE=1
|
BUILDOPTS=FPC=$(PPNEW) FPCFPMAKE=$(FPCFPMAKENEW) RELEASE=1
|
||||||
INSTALLOPTS=FPC=$(PPNEW) ZIPDESTDIR=$(BASEDIR) FPCMAKE=$(FPCMAKENEW)
|
INSTALLOPTS=FPC=$(PPNEW) ZIPDESTDIR=$(BASEDIR) FPCMAKE=$(FPCMAKENEW)
|
||||||
|
|
||||||
# Compile also IDE (check for ide and fv dir)
|
# Compile also IDE (check for ide and fv dir)
|
||||||
@ -268,6 +274,11 @@ build: $(BUILDSTAMP)
|
|||||||
$(BUILDSTAMP):
|
$(BUILDSTAMP):
|
||||||
# create new compiler
|
# create new compiler
|
||||||
$(MAKE) compiler_cycle RELEASE=1
|
$(MAKE) compiler_cycle RELEASE=1
|
||||||
|
ifdef CROSSCOMPILE
|
||||||
|
# Buld a new native fpcmake when cross-compiling.
|
||||||
|
# Fresh native compiler and RTL are ready at this stage.
|
||||||
|
$(MAKE) -C utils/fpcm bootstrap $(BUILDOPTS)
|
||||||
|
endif
|
||||||
# clean
|
# clean
|
||||||
$(MAKE) rtl_clean $(CLEANOPTS)
|
$(MAKE) rtl_clean $(CLEANOPTS)
|
||||||
$(MAKE) packages_clean $(CLEANOPTS)
|
$(MAKE) packages_clean $(CLEANOPTS)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/01/16]
|
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2013/02/20]
|
||||||
#
|
#
|
||||||
default: all
|
default: all
|
||||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
|
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
|
||||||
@ -268,6 +268,19 @@ ifdef CROSSCOMPILE
|
|||||||
ifndef DARWIN2DARWIN
|
ifndef DARWIN2DARWIN
|
||||||
ifneq ($(CPU_TARGET),jvm)
|
ifneq ($(CPU_TARGET),jvm)
|
||||||
BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
|
BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
|
||||||
|
ifeq ($(OS_TARGET),android)
|
||||||
|
ifeq ($(CPU_TARGET),arm)
|
||||||
|
BINUTILSPREFIX=arm-linux-androideabi-
|
||||||
|
else
|
||||||
|
ifeq ($(CPU_TARGET),i386)
|
||||||
|
BINUTILSPREFIX=i686-linux-android-
|
||||||
|
else
|
||||||
|
ifeq ($(CPU_TARGET),mips)
|
||||||
|
BINUTILSPREFIX=mipsel-linux-android-
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -302,6 +315,7 @@ FPMAKE_SKIP_CONFIG=-n
|
|||||||
FPCFPMAKE=$(FPC)
|
FPCFPMAKE=$(FPC)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
BS_UNITDIR=$(BASEDIR)/units/$(SOURCESUFFIX)
|
||||||
ifeq ($(FULL_TARGET),i386-linux)
|
ifeq ($(FULL_TARGET),i386-linux)
|
||||||
override TARGET_PROGRAMS+=fpcmake
|
override TARGET_PROGRAMS+=fpcmake
|
||||||
endif
|
endif
|
||||||
@ -3027,3 +3041,7 @@ fpcmake.inc: fpcmake.ini
|
|||||||
$(DATA2INC) -b -s fpcmake.ini fpcmake.inc fpcmakeini
|
$(DATA2INC) -b -s fpcmake.ini fpcmake.inc fpcmakeini
|
||||||
endif
|
endif
|
||||||
fpcmake$(EXEEXT): $(wildcard fpcm*.pp) fpcmake.inc
|
fpcmake$(EXEEXT): $(wildcard fpcm*.pp) fpcmake.inc
|
||||||
|
$(BS_UNITDIR):
|
||||||
|
$(MKDIRTREE) $(BS_UNITDIR)
|
||||||
|
bootstrap: $(BS_UNITDIR) fpcmake.inc
|
||||||
|
$(FPCFPMAKE) fpcmake.pp $(FPMAKE_SKIP_CONFIG) -Fu$(UNITDIR_FPMAKE_RTL) -FU$(BS_UNITDIR) $(OPT)
|
||||||
|
@ -19,6 +19,9 @@ fpcpackage=y
|
|||||||
[default]
|
[default]
|
||||||
fpcdir=../..
|
fpcdir=../..
|
||||||
|
|
||||||
|
[prerules]
|
||||||
|
BS_UNITDIR=$(BASEDIR)/units/$(SOURCESUFFIX)
|
||||||
|
|
||||||
[rules]
|
[rules]
|
||||||
.NOTPARALLEL:
|
.NOTPARALLEL:
|
||||||
ifneq ($(DATA2INC),)
|
ifneq ($(DATA2INC),)
|
||||||
@ -27,3 +30,8 @@ fpcmake.inc: fpcmake.ini
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
fpcmake$(EXEEXT): $(wildcard fpcm*.pp) fpcmake.inc
|
fpcmake$(EXEEXT): $(wildcard fpcm*.pp) fpcmake.inc
|
||||||
|
|
||||||
|
$(BS_UNITDIR):
|
||||||
|
$(MKDIRTREE) $(BS_UNITDIR)
|
||||||
|
bootstrap: $(BS_UNITDIR) fpcmake.inc
|
||||||
|
$(FPCFPMAKE) fpcmake.pp $(FPMAKE_SKIP_CONFIG) -Fu$(UNITDIR_FPMAKE_RTL) -FU$(BS_UNITDIR) $(OPT)
|
||||||
|
Loading…
Reference in New Issue
Block a user