Refactor setting of NoNativeBinaries:

Added NO_NATIVE_COMPILER_CPU_LIST and NO_NATIVE_COMPILER_OS_LIST
  Set NoNativeBinaries if target CPU is different from source CPU 
  and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
  Set NoNativeBinaries if target OS is different from source OS 
  and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
  Add FORCE_NATIVE_BINARIES variable to be able to overrule
  default behavior of NoNativeBinaries=1

git-svn-id: trunk@47043 -
This commit is contained in:
pierre 2020-10-03 15:27:57 +00:00
parent 963fe73d19
commit 399552d350
2 changed files with 64 additions and 68 deletions

View File

@ -352,6 +352,24 @@ override PACKAGE_VERSION=3.3.1
unexport FPC_VERSION FPC_COMPILERINFO
CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb mipsel mips avr jvm i8086 aarch64 sparc64 riscv32 riscv64 xtensa z80
ALLTARGETS=$(CYCLETARGETS)
NO_NATIVE_COMPILER_OS_LIST=amstradcpc embedded freertos gba macosclassic msdos msxdos nds palmos symbian watcom wii win16 zxspectrum
NO_NATIVE_COMPILER_CPU_LIST=avr i8086 jvm z80
ifneq ($(CPU_SOURCE),$(CPU_TARGET))
ifneq ($(findstring $(CPU_TARGET),$(NO_NATIVE_COMPILER_CPU_LIST)),)
NoNativeBinaries=1
endif
endif
ifneq ($(OS_SOURCE),$(OS_TARGET))
ifneq ($(findstring $(OS_TARGET),$(NO_NATIVE_COMPILER_OS_LIST)),)
NoNativeBinaries=1
endif
endif
ifndef FORCE_NATIVE_BINARIES
ifeq ($(NoNativeBinaries),1)
override EXEEXT=$(SRCEXEEXT)
CROSSINSTALL=1
endif
endif
ifdef POWERPC
PPC_TARGET=powerpc
endif
@ -613,37 +631,6 @@ OPTWPOPERFORM+=-Owsymbolliveness
endif
endif
endif
ifeq ($(CPU_TARGET),jvm)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),embedded)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),gba)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),msdos)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),nds)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),win16)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),macosclassic)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),freertos)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),zxspectrum)
NoNativeBinaries=1
endif
ifeq ($(NoNativeBinaries),1)
override EXEEXT=$(SRCEXEEXT)
CROSSINSTALL=1
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_DIRS+=utils
endif
@ -2725,15 +2712,34 @@ ifneq ($(findstring sparc64,$(shell uname -a)),)
ifeq ($(BINUTILSPREFIX),)
GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
CROSSGCCOPT=-mabi=32
else
CROSSGCCOPT=-m32
endif
endif
endif
endif
endif
ifdef FPCFPMAKE
FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP)
ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET))
FPCMAKEGCCLIBDIR:=$(GCCLIBDIR)
else
ifneq ($(findstring $(FPCFPMAKE_CPU_TARGET),aarch64 powerpc64 riscv64 sparc64 x86_64),)
FPCMAKE_CROSSGCCOPT=-m64
else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips64 mips64el),)
FPCMAKE_CROSSGCCOPT=-mabi=64
else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
ifndef FPCMAKEGCCLIBDIR

View File

@ -37,6 +37,33 @@ CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb mipsel mips avr
# All supported targets used for clean
ALLTARGETS=$(CYCLETARGETS)
# All OS targets that do not support native compiler
NO_NATIVE_COMPILER_OS_LIST=amstradcpc embedded freertos gba macosclassic msdos msxdos nds palmos symbian watcom wii win16 zxspectrum
# All CPU targets that do not support native compiler
NO_NATIVE_COMPILER_CPU_LIST=avr i8086 jvm z80
# Don't compile a native compiler & utilities for targets
# which do not support it
ifneq ($(CPU_SOURCE),$(CPU_TARGET))
ifneq ($(findstring $(CPU_TARGET),$(NO_NATIVE_COMPILER_CPU_LIST)),)
NoNativeBinaries=1
endif
endif
ifneq ($(OS_SOURCE),$(OS_TARGET))
ifneq ($(findstring $(OS_TARGET),$(NO_NATIVE_COMPILER_OS_LIST)),)
NoNativeBinaries=1
endif
endif
ifndef FORCE_NATIVE_BINARIES
ifeq ($(NoNativeBinaries),1)
override EXEEXT=$(SRCEXEEXT)
# In those cases, installation in a cross-installation
CROSSINSTALL=1
endif
endif
# Allow POWERPC, POWERPC64, M68K, I386, jvm defines for target cpu
ifdef POWERPC
PPC_TARGET=powerpc
@ -380,43 +407,6 @@ endif
endif
endif
# Don't compile a native compiler & utilities for JVM and embedded
# targets
ifeq ($(CPU_TARGET),jvm)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),embedded)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),gba)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),msdos)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),nds)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),win16)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),macosclassic)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),freertos)
NoNativeBinaries=1
endif
ifeq ($(OS_TARGET),zxspectrum)
NoNativeBinaries=1
endif
# Allow install for jvm
ifeq ($(NoNativeBinaries),1)
override EXEEXT=$(SRCEXEEXT)
# In those cases, installation in a cross-installation
CROSSINSTALL=1
endif
[rules]
#####################################################################
# Setup Targets