diff options
author | Jose <pepone@users.noreply.github.com> | 2024-11-20 22:03:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-20 22:03:45 +0100 |
commit | d53f0a955fd1e925fd0f6159953d781b09b9b1ba (patch) | |
tree | 568031cec52c749c8e84943e86de3d57a05548a2 | |
parent | Backport fix for Swift race condition (#3054) (diff) | |
download | ice-d53f0a955fd1e925fd0f6159953d781b09b9b1ba.tar.bz2 ice-d53f0a955fd1e925fd0f6159953d781b09b9b1ba.tar.xz ice-d53f0a955fd1e925fd0f6159953d781b09b9b1ba.zip |
RedHat multi-platform build fixes (#3167)
-rw-r--r-- | config/Make.rules.Linux | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/config/Make.rules.Linux b/config/Make.rules.Linux index b1d819ecad8..0801c8ddb5b 100644 --- a/config/Make.rules.Linux +++ b/config/Make.rules.Linux @@ -35,19 +35,28 @@ else ifneq ($(and $(filter centos rhel fedora,$(linux_id)),$(filter x86_64 i%86, supported-platforms = x64 x86 multilib-platform = yes +# We filter out -m32, -m64, because Slice compilers are always build as 64bit executables, and we set +# the correct value for each arch build below. We also filter out -march setting to ensure our x86 builds +# target x86-64 capable processor. + ifeq ($(OPTIMIZE),yes) # Use default system packaging flags if building with OPTIMIZE and CXXFLAGS/LDFLAGS aren't defined. -# NOTE: We remove the -m32/-m64 flags since we'll add them below. -opt-cppflags = $(if $(CXXFLAGS),,$(filter-out -m32 -m64,$(shell setarch $1 rpm --eval %optflags))) +opt-cppflags = $(if $(CXXFLAGS),,$(filter-out -m32 -m64 -march=%,$(shell setarch $1 rpm --eval %optflags))) opt-ldflags = $(if $(LDFLAGS),,$(shell setarch $1 rpm --eval %?__global_ldflags)) endif -x64_cppflags := $(call opt-cppflags,x86_64) -m64 +CXXFLAGS := $(filter-out -m32 -m64 -march=%, $(CXXFLAGS)) +LDFLAGS := $(filter-out -m32 -m64, $(LDFLAGS)) + +# Targeting x86-64-v2, compatible with most x86-64 processors. This matches the defaults in RHEL 9 x86-64 builds. +# https://developers.redhat.com/blog/2021/01/05/building-red-hat-enterprise-linux-9-for-the-x86-64-v2-microarchitecture-level + +x64_cppflags := $(call opt-cppflags,x86_64) -m64 -march=x86-64-v2 x64_ldflags := $(call opt-ldflags,x86_64) -m64 x64_targetdir = $(if $(filter %/build,$5),/x64,$(if $(filter-out $($1_target),program),64)) x64_installdir = $(if $(and $(filter-out $($1_target),program),$(if $5,$(filter-out %64,$5),true)),64) -x86_cppflags := $(call opt-cppflags,i386) -m32 +x86_cppflags := $(call opt-cppflags,i386) -m32 -march=x86-64-v2 x86_ldflags := $(call opt-ldflags,i386) -m32 x86_targetdir = $(if $(filter %/build,$5),/x86) x86_targetname = $(if $(is-bin-program),32) |