diff --git a/CHANGELOG b/CHANGELOG
index 3a29667d..605f9399 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,10 @@
* RECENT CHANGES
*******************************************************************************
+=== 1.0.27 ===
+* Updated build scripts.
+* Updated module versions in dependencies.
+
=== 1.0.26 ===
* Updated build scripts.
* Updated module versions in dependencies.
diff --git a/include/lsp-plug.in/dsp/version.h b/include/lsp-plug.in/dsp/version.h
index b3c20dc2..a4b35537 100644
--- a/include/lsp-plug.in/dsp/version.h
+++ b/include/lsp-plug.in/dsp/version.h
@@ -25,7 +25,7 @@
// Define version of headers
#define LSP_DSP_LIB_MAJOR 1
#define LSP_DSP_LIB_MINOR 0
-#define LSP_DSP_LIB_MICRO 26
+#define LSP_DSP_LIB_MICRO 27
#if defined(__WINDOWS__) || defined(__WIN32__) || defined(__WIN64__) || defined(_WIN64) || defined(_WIN32) || defined(__WINNT) || defined(__WINNT__)
#define LSP_DSP_LIB_EXPORT_MODIFIER __declspec(dllexport)
diff --git a/make/configure.mk b/make/configure.mk
index d1437fd3..c3fc59f2 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 dbb73119..b4d5386a 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 \
diff --git a/modules.mk b/modules.mk
index df0804ae..e50ec5d8 100644
--- a/modules.mk
+++ b/modules.mk
@@ -19,13 +19,13 @@
#
# Variables that describe dependencies
-LSP_COMMON_LIB_VERSION := 1.0.38
+LSP_COMMON_LIB_VERSION := 1.0.39
LSP_COMMON_LIB_NAME := lsp-common-lib
LSP_COMMON_LIB_TYPE := src
LSP_COMMON_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_COMMON_LIB_NAME).git
LSP_COMMON_LIB_URL_RW := git@github.com:lsp-plugins/$(LSP_COMMON_LIB_NAME).git
-LSP_TEST_FW_VERSION := 1.0.27
+LSP_TEST_FW_VERSION := 1.0.28
LSP_TEST_FW_NAME := lsp-test-fw
LSP_TEST_FW_TYPE := src
LSP_TEST_FW_URL_RO := https://github.com/lsp-plugins/$(LSP_TEST_FW_NAME).git
diff --git a/project.mk b/project.mk
index d60d636b..9f222839 100644
--- a/project.mk
+++ b/project.mk
@@ -23,4 +23,4 @@ ARTIFACT_ID = LSP_DSP_LIB
ARTIFACT_NAME = lsp-dsp-lib
ARTIFACT_DESC = DSP library for digital signal processing
ARTIFACT_HEADERS = lsp-plug.in
-ARTIFACT_VERSION = 1.0.26
+ARTIFACT_VERSION = 1.0.27
diff --git a/src/Makefile b/src/Makefile
index f5810ac8..cf1d7d74 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,6 +1,6 @@
#
-# Copyright (C) 2020 Linux Studio Plugins Project
-# (C) 2020 Vladimir Sadovnikov
+# Copyright (C) 2024 Linux Studio Plugins Project
+# (C) 2024 Vladimir Sadovnikov
#
# This file is part of lsp-dsp-lib
#
@@ -97,16 +97,14 @@ CXX_OBJ_ALL = \
$(CXX_OBJ_TEST) \
$(CXX_OBJ_NOTEST)
-ifneq ($(BUILD_HOST),1)
- ifeq ($(ARCHITECTURE_FAMILY),ia32)
- CXX_OBJ_EXT += $(CXX_OBJ_X86) $(CXX_OBJ_SSE) $(CXX_OBJ_SSE2) $(CXX_OBJ_SSE3) $(CXX_OBJ_SSE4) $(CXX_OBJ_AVX) $(CXX_OBJ_AVX2) $(CXX_OBJ_AVX512)
- else ifeq ($(ARCHITECTURE_FAMILY),x86_64)
- CXX_OBJ_EXT += $(CXX_OBJ_X86) $(CXX_OBJ_SSE) $(CXX_OBJ_SSE2) $(CXX_OBJ_SSE3) $(CXX_OBJ_SSE4) $(CXX_OBJ_AVX) $(CXX_OBJ_AVX2) $(CXX_OBJ_AVX512)
- else ifeq ($(ARCHITECTURE_FAMILY),arm32)
- CXX_OBJ_EXT += $(CXX_OBJ_ARM) $(CXX_OBJ_NEON_D32)
- else ifeq ($(ARCHITECTURE_FAMILY),aarch64)
- CXX_OBJ_EXT += $(CXX_OBJ_AARCH64) $(CXX_OBJ_ASIMD)
- endif
+ifeq ($($(HOST)ARCHITECTURE_FAMILY),ia32)
+ CXX_OBJ_EXT += $(CXX_OBJ_X86) $(CXX_OBJ_SSE) $(CXX_OBJ_SSE2) $(CXX_OBJ_SSE3) $(CXX_OBJ_SSE4) $(CXX_OBJ_AVX) $(CXX_OBJ_AVX2) $(CXX_OBJ_AVX512)
+else ifeq ($($(HOST)ARCHITECTURE_FAMILY),x86_64)
+ CXX_OBJ_EXT += $(CXX_OBJ_X86) $(CXX_OBJ_SSE) $(CXX_OBJ_SSE2) $(CXX_OBJ_SSE3) $(CXX_OBJ_SSE4) $(CXX_OBJ_AVX) $(CXX_OBJ_AVX2) $(CXX_OBJ_AVX512)
+else ifeq ($($(HOST)ARCHITECTURE_FAMILY),arm32)
+ CXX_OBJ_EXT += $(CXX_OBJ_ARM) $(CXX_OBJ_NEON_D32)
+else ifeq ($($(HOST)ARCHITECTURE_FAMILY),aarch64)
+ CXX_OBJ_EXT += $(CXX_OBJ_AARCH64) $(CXX_OBJ_ASIMD)
endif
ALL_HEADERS = $(call rwildcard, $(ARTIFACT_INC), *.h)
@@ -151,7 +149,7 @@ compile: $(ARTIFACT_OBJ)
$(CXX_OBJ_ALL):
echo " $($(HOST)CXX) [$(ARTIFACT_NAME)] $(CXX_FILE)"
mkdir -p $(dir $@)
- $($(HOST)CXX) -o $(@) -c $(CXX_FILE) -fPIC $($(HOST)CXXFLAGS) $(ARTIFACT_MFLAGS) $($(HOST)EXT_FLAGS) $(INCLUDE) $(ARTIFACT_CFLAGS) -MMD -MP -MF $(DEP_FILE) -MT $(@)
+ $($(HOST)CXX) -o $(@) -c $(CXX_FILE) -fPIC $($(HOST)CXXFLAGS) $(ARTIFACT_MFLAGS) $(EXT_FLAGS) $(INCLUDE) $(ARTIFACT_CFLAGS) -MMD -MP -MF $(DEP_FILE) -MT $(@)
# Producing large object files
$(ARTIFACT_OBJ): $(CXX_OBJ)