From 9ba321c096078db252e47ce42473884b39b48ff1 Mon Sep 17 00:00:00 2001 From: Vladimir Sadovnikov Date: Thu, 10 Oct 2024 13:19:20 +0300 Subject: [PATCH] Updated build scripts --- CHANGELOG | 2 +- make/configure.mk | 4 ++-- make/system.mk | 20 +++++++++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 426fa41..37c4453 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ ******************************************************************************* === 1.0.25 === - +* Updated build scripts. === 1.0.24 === * Fixed z fighting cases between windows under Windows platform. diff --git a/make/configure.mk b/make/configure.mk index 1214f7f..8ee8d44 100644 --- a/make/configure.mk +++ b/make/configure.mk @@ -49,7 +49,7 @@ MERGED_DEPENDENCIES := \ $(TEST_DEPENDENCIES) UNIQ_MERGED_DEPENDENCIES := $(call uniq, $(MERGED_DEPENDENCIES)) DEPENDENCIES = $(UNIQ_MERGED_DEPENDENCIES) -FEATURES := $(sort $(call subtraction,$(SUB_FEATURES),$(DEFAULT_FEATURES) $(ADD_FEATURES))) +BUILD_FEATURES := $(sort $(call subtraction,$(SUB_FEATURES),$(if $(FEATURES),$(FEATURES),$(DEFAULT_FEATURES)) $(ADD_FEATURES))) # Determine versions ifeq ($(findstring -devel,$(ARTIFACT_VERSION)),-devel) @@ -270,7 +270,7 @@ $(CONFIG_VARS): prepare config: $(CONFIG_VARS) echo "Host architecture: $(HOST_ARCHITECTURE_FAMILY)/$(HOST_ARCHITECTURE) ($(HOST_ARCHITECTURE_CFLAGS))" echo "Architecture: $(ARCHITECTURE_FAMILY)/$(ARCHITECTURE) ($(ARCHITECTURE_CFLAGS))" - echo "Features: $(FEATURES)" + echo "Features: $(BUILD_FEATURES)" echo "Configured OK" help: | pathvars toolvars sysvars diff --git a/make/system.mk b/make/system.mk index dbb7311..b4d5386 100644 --- a/make/system.mk +++ b/make/system.mk @@ -53,6 +53,17 @@ else endif BUILD_ARCH := $(if $(ARCHITECTURE),$(ARCHITECTURE),$(HOST_BUILD_ARCH)) +ifeq ($(PLATFORM),Linux) + OBJ_LDFLAGS_X86 = -m elf_i386 + OBJ_LDFLAGS_X86_64 = -m elf_x86_64 +else ifeq ($(PLATFORM),BSD) + OBJ_LDFLAGS_X86 = -m elf_i386 + OBJ_LDFLAGS_X86_64 = -m elf_x86_64 +else ifeq ($(PLATFORM),Windows) + OBJ_LDFLAGS_X86 = -m i386pe + OBJ_LDFLAGS_X86_64 = -m i386pep +endif + # Set actual architecture for HOST and TARGET builds # The current architecture can be obtained by: gcc -Q --help=target define detect_architecture = @@ -100,30 +111,37 @@ define detect_architecture = $(2)_NAME = x86_64 $(2)_FAMILY = x86_64 $(2)_CFLAGS := -march=x86-64 -m64 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86_64) else ifeq ($(patsubst %amd64%,amd64,$(1)),amd64) $(2)_NAME = x86_64 $(2)_FAMILY = x86_64 $(2)_CFLAGS := -march=x86-64 -m64 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86_64) else ifeq ($(patsubst %AMD64%,AMD64,$(1)),AMD64) $(2)_NAME = x86_64 $(2)_FAMILY = x86_64 $(2)_CFLAGS := -march=x86-64 -m64 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86_64) else ifeq ($(1),i86pc) $(2)_NAME = x86_64 $(2)_FAMILY = x86_64 $(2)_CFLAGS := -march=x86-64 -m64 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86_64) else ifeq ($(patsubst %i686%,i686,$(1)),i686) $(2)_NAME = i686 $(2)_FAMILY = ia32 $(2)_CFLAGS := -march=i686 -m32 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86) else ifeq ($(patsubst i%86,i586,$(1)),i586) $(2)_NAME = i586 $(2)_FAMILY = ia32 $(2)_CFLAGS := -march=i586 -m32 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86) else ifeq ($(1),x86) $(2)_NAME = i686 $(2)_FAMILY = ia32 $(2)_CFLAGS := -march=i686 -m32 + $(2)_LDFLAGS := $(OBJ_LDFLAGS_X86) else ifeq ($(1),riscv32) $(2)_NAME = riscv32 $(2)_FAMILY = riscv32 @@ -191,11 +209,11 @@ COMMON_VARS = \ ARCHITECTURE \ ARCHITECTURE_FAMILY \ ARCHITECTURE_CFLAGS \ + BUILD_FEATURES \ CROSS_COMPILE \ DEBUG \ EXECUTABLE_EXT \ EXPORT_SYMBOLS \ - FEATURES \ HOST_ARCHITECTURE \ HOST_ARCHITECTURE_FAMILY \ HOST_ARCHITECTURE_CFLAGS \