diff --git a/CHANGELOG b/CHANGELOG index 5aca3e8..775fbdd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,9 @@ * RECENT CHANGES ******************************************************************************* +=== 1.0.21 === +* Updated build scripts and dependencies. + === 1.0.20 === * Updated build scripts and dependencies. diff --git a/Makefile b/Makefile index 5cc3bc2..d4ae74f 100644 --- a/Makefile +++ b/Makefile @@ -141,10 +141,13 @@ help: echo "Available FEATURES:" echo " clap CLAP plugin format binaries" echo " doc Generate standalone HTML documentation" + echo " gst GStreamer plugins" echo " jack Standalone JACK plugins" echo " ladspa LADSPA plugins" echo " lv2 LV2 plugins" + echo " ui Build plugins with UI" echo " vst2 VST 2.x plugin binaries" + echo " vst3 VST 3.x plugin binaries" echo " xdg Desktop integration icons" \ No newline at end of file diff --git a/make/configure.mk b/make/configure.mk index a7b96fc..19944fc 100644 --- a/make/configure.mk +++ b/make/configure.mk @@ -127,6 +127,10 @@ define _modconfig = $(if $($(name)_OBJ_TEST),, $(eval $(name)_OBJ_TEST := "$($(name)_BIN)/$($(name)_NAME)-test.o")) $(if $($(name)_MFLAGS),, $(eval $(name)_MFLAGS := $(if $(publisher),,"-D$(name)_BUILTIN -fvisibility=hidden"))) + $(if $(HOST_$(name)_NAME),, $(eval HOST_$(name)_NAME := $($(name)_NAME))) + $(if $(HOST_$(name)_DESC),, $(eval HOST_$(name)_DESC := $($(name)_DESC))) + $(if $(HOST_$(name)_URL),, $(eval HOST_$(name)_URL := $($(name)_URL$(X_URL_SUFFIX)))) + $(if $(HOST_$(name)_PATH),, $(eval HOST_$(name)_PATH := $(MODULES)/$($(name)_NAME))) $(if $(HOST_$(name)_INC),, $(eval HOST_$(name)_INC := $(HOST_$(name)_PATH)/include)) $(if $(HOST_$(name)_SRC),, $(eval HOST_$(name)_SRC := $(HOST_$(name)_PATH)/src)) @@ -164,6 +168,10 @@ define hdrconfig = $(if $($(name)_TESTING),, $(eval $(name)_TESTING := 0)) $(if $($(name)_CFLAGS),, $(eval $(name)_CFLAGS := "$(if $($(name)_INC_OPT),$($(name)_INC_OPT) ,-I )\"$($(name)_INC)\""$(if $(publisher), "-D$(name)_PUBLISHER"))) $(if $($(name)_MFLAGS),, $(eval $(name)_MFLAGS := "-D$(name)_BUILTIN -fvisibility=hidden")) + + $(if $(HOST_$(name)_NAME),, $(eval HOST_$(name)_NAME := $($(name)_NAME))) + $(if $(HOST_$(name)_DESC),, $(eval HOST_$(name)_DESC := $($(name)_DESC))) + $(if $(HOST_$(name)_URL),, $(eval HOST_$(name)_URL := $($(name)_URL$(X_URL_SUFFIX)))) $(if $(HOST_$(name)_PATH),, $(eval HOST_$(name)_PATH := $(MODULES)/$($(name)_NAME))) $(if $(HOST_$(name)_INC),, $(eval HOST_$(name)_INC := $(HOST_$(name)_PATH)/include)) @@ -192,6 +200,9 @@ define plugconfig = $(if $($(name)_OBJ_UI),, $(eval $(name)_OBJ_UI := "$($(name)_BIN)/$($(name)_NAME)-ui.o")) $(if $($(name)_OBJ_TEST),, $(eval $(name)_OBJ_TEST := "$($(name)_BIN)/$($(name)_NAME)-test.o")) $(if $($(name)_MFLAGS),, $(eval $(name)_MFLAGS := $(if $(publisher),,"-D$(name)_BUILTIN -fvisibility=hidden"))) + + $(if $(HOST_$(name)_NAME),, $(eval HOST_$(name)_NAME := $($(name)_NAME))) + $(if $(HOST_$(name)_DESC),, $(eval HOST_$(name)_DESC := $($(name)_DESC))) $(if $(HOST_$(name)_PATH),, $(eval HOST_$(name)_PATH := $(MODULES)/$($(name)_NAME))) $(if $(HOST_$(name)_INC),, $(eval HOST_$(name)_INC := $(HOST_$(name)_PATH)/include)) @@ -277,6 +288,8 @@ CONFIG_VARS = \ $(name)_OBJ_UI \ $(name)_OBJ_TEST \ \ + HOST_$(name)_NAME \ + HOST_$(name)_DESC \ HOST_$(name)_PATH \ HOST_$(name)_INC \ HOST_$(name)_SRC \ @@ -305,8 +318,9 @@ $(CONFIG_VARS): prepare echo "$(@)=$($(@))" >> "$(CONFIG)" config: $(CONFIG_VARS) - echo "Architecture: $(ARCHITECTURE_FAMILY)/$(ARCHITECTURE) ($(ARCHITECTURE_CFLAGS))" - echo "Features: $(FEATURES)" + echo "Host architecture: $(HOST_ARCHITECTURE_FAMILY)/$(HOST_ARCHITECTURE) ($(HOST_ARCHITECTURE_CFLAGS))" + echo "Architecture: $(ARCHITECTURE_FAMILY)/$(ARCHITECTURE) ($(ARCHITECTURE_CFLAGS))" + echo "Features: $(FEATURES)" echo "Configured OK" help: | pathvars toolvars sysvars diff --git a/make/modules.mk b/make/modules.mk index 120edbe..182d13f 100644 --- a/make/modules.mk +++ b/make/modules.mk @@ -48,9 +48,15 @@ UNIQ_ALL_DEPENDENCIES := $(filter-out $(ARTIFACT_ID),$(call uniq, $(ALL_DEP MODULES ?= $(BASEDIR)/modules GIT ?= git +ifeq ($(DEVEL),1) + X_URL_SUFFIX = _RW +else + X_URL_SUFFIX = _RO +endif + ifeq ($(TREE),1) $(foreach dep,$(UNIQ_ALL_DEPENDENCIES), \ - $(eval $(dep)_URL=$($(dep)_URL_RO)) \ + $(eval $(dep)_URL=$($(dep)_URL$(X_URL_SUFFIX))) \ ) ifeq ($(findstring -devel,$(ARTIFACT_VERSION)),-devel) diff --git a/make/paths.mk b/make/paths.mk index 374807d..256a5c1 100644 --- a/make/paths.mk +++ b/make/paths.mk @@ -22,6 +22,8 @@ ifndef PREFIX ifeq ($(PLATFORM),Windows) PREFIX := $(BASEDIR)/INSTALL + else ifeq ($(CROSS_COMPILE),1) + PREFIX := $(BASEDIR)/INSTALL else PREFIX := /usr/local endif @@ -42,7 +44,11 @@ SHAREDDIR := $(PREFIX)/share INCDIR := $(PREFIX)/include BUILDDIR := $(BASEDIR)/.build TARGET_BUILDDIR := $(BUILDDIR)/target -HOST_BUILDDIR := $(BUILDDIR)/host +ifeq ($(CROSS_COMPILE),1) + HOST_BUILDDIR := $(BUILDDIR)/host +else + HOST_BUILDDIR := $(TARGET_BUILDDIR) +endif MODULES := $(BASEDIR)/modules CONFIG := $(BASEDIR)/.config.mk @@ -61,6 +67,15 @@ ifndef INCDIR INCDIR := $(PREFIX)/include endif +# Shared resources +ifndef SHAREDDIR + ifeq ($(PLATFORM),Haiku) + SHAREDDIR := $(PREFIX)/data + else + SHAREDDIR := $(PREFIX)/share + endif +endif + # Temporary directory ifndef TEMPDIR ifeq ($(PLATFORM),Windows) diff --git a/make/system.mk b/make/system.mk index 2b07b47..45665d7 100644 --- a/make/system.mk +++ b/make/system.mk @@ -38,108 +38,119 @@ ifndef PLATFORM PLATFORM := Linux else ifeq ($(findstring SunOS,$(BUILD_SYSTEM)),SunOS) PLATFORM := Solaris + else ifeq ($(findstring Darwin,$(BUILD_SYSTEM)),Darwin) + PLATFORM := MacOS + else ifeq ($(findstring Haiku,$(BUILD_SYSTEM)),Haiku) + PLATFORM := Haiku endif endif # Detect system processor architecture -ifndef ARCHITECTURE - ifeq ($(PLATFORM),Windows) - BUILD_ARCH := $(PROCESSOR_ARCHITECTURE) - else - BUILD_ARCH := $(shell uname -m) - endif +ifeq ($(PLATFORM),Windows) + HOST_BUILD_ARCH := $(PROCESSOR_ARCHITECTURE) else - BUILD_ARCH := $(ARCHITECTURE) + HOST_BUILD_ARCH := $(shell uname -m) endif +BUILD_ARCH := $(if $(ARCHITECTURE),$(ARCHITECTURE),$(HOST_BUILD_ARCH)) -# Set actual architecture +# Set actual architecture for HOST and TARGET builds # The current architecture can be obtained by: gcc -Q --help=target -ifeq ($(BUILD_ARCH),armel) - override ARCHITECTURE = $(BUILD_ARCH) - ARCHITECTURE_FAMILY = generic - ARCHITECTURE_CFLAGS := -else ifeq ($(BUILD_ARCH),armhf) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv7-a+fp -marm -else ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)),armv6) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv6 -marm -else ifeq ($(patsubst armv7ve%,armv7ve,$(BUILD_ARCH)),armv7ve) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv7ve -marm -else ifeq ($(patsubst armv7%,armv7,$(BUILD_ARCH)),armv7) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv7-a -marm -else ifeq ($(patsubst armv8%,armv8,$(BUILD_ARCH)),armv8) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv7-a -marm -else ifeq ($(patsubst aarch64%,aarch64,$(BUILD_ARCH)),aarch64) - override ARCHITECTURE = aarch64 - ARCHITECTURE_FAMILY = aarch64 - ARCHITECTURE_CFLAGS := -march=armv8-a -else ifeq ($(BUILD_ARCH),arm64) - override ARCHITECTURE = aarch64 - ARCHITECTURE_FAMILY = aarch64 - ARCHITECTURE_CFLAGS := -march=armv8-a -else ifeq ($(BUILD_ARCH),arm32) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv6 -marm -else ifeq ($(BUILD_ARCH),arm) - override ARCHITECTURE = arm32 - ARCHITECTURE_FAMILY = arm32 - ARCHITECTURE_CFLAGS := -march=armv6 -marm -else ifeq ($(patsubst %x86_64%,x86_64,$(BUILD_ARCH)),x86_64) - override ARCHITECTURE = x86_64 - ARCHITECTURE_FAMILY = x86_64 - ARCHITECTURE_CFLAGS := -march=x86-64 -m64 -else ifeq ($(patsubst %amd64%,amd64,$(BUILD_ARCH)),amd64) - override ARCHITECTURE = x86_64 - ARCHITECTURE_FAMILY = x86_64 - ARCHITECTURE_CFLAGS := -march=x86-64 -m64 -else ifeq ($(patsubst %AMD64%,AMD64,$(BUILD_ARCH)),AMD64) - override ARCHITECTURE = x86_64 - ARCHITECTURE_FAMILY = x86_64 - ARCHITECTURE_CFLAGS := -march=x86-64 -m64 -else ifeq ($(BUILD_ARCH),i86pc) - override ARCHITECTURE = x86_64 - ARCHITECTURE_FAMILY = x86_64 - ARCHITECTURE_CFLAGS := -march=x86-64 -m64 -else ifeq ($(patsubst %i686%,i686,$(BUILD_ARCH)),i686) - override ARCHITECTURE = i686 - ARCHITECTURE_FAMILY = ia32 - ARCHITECTURE_CFLAGS := -march=i686 -m32 -else ifeq ($(patsubst i%86,i586,$(BUILD_ARCH)),i586) - override ARCHITECTURE = i586 - ARCHITECTURE_FAMILY = ia32 - ARCHITECTURE_CFLAGS := -march=i586 -m32 -else ifeq ($(BUILD_ARCH),x86) - override ARCHITECTURE = i686 - ARCHITECTURE_FAMILY = ia32 - ARCHITECTURE_CFLAGS := -march=i686 -m32 -else ifeq ($(BUILD_ARCH),riscv32) - override ARCHITECTURE = riscv32 - ARCHITECTURE_FAMILY = riscv32 - ARCHITECTURE_CFLAGS := -march=rv32imafdc -mabi=lp32d -else ifeq ($(BUILD_ARCH),riscv64) - override ARCHITECTURE = riscv64 - ARCHITECTURE_FAMILY = riscv64 - ARCHITECTURE_CFLAGS := -march=rv64imafdc -mabi=lp64d -else - override ARCHITECTURE = $(BUILD_ARCH) - ARCHITECTURE_FAMILY = generic - ARCHITECTURE_CFLAGS := -endif +define detect_architecture = + ifeq ($(1),armel) + $(2)_NAME = $(1) + $(2)_FAMILY = generic + $(2)_CFLAGS := + else ifeq ($(1),armhf) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv7-a+fp -marm + else ifeq ($(patsubst armv6%,armv6,$(1)),armv6) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv6 -marm + else ifeq ($(patsubst armv7ve%,armv7ve,$(1)),armv7ve) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv7ve -marm + else ifeq ($(patsubst armv7%,armv7,$(1)),armv7) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv7-a -marm + else ifeq ($(patsubst armv8%,armv8,$(1)),armv8) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv7-a -marm + else ifeq ($(patsubst aarch64%,aarch64,$(1)),aarch64) + $(2)_NAME = aarch64 + $(2)_FAMILY = aarch64 + $(2)_CFLAGS := -march=armv8-a + else ifeq ($(1),arm64) + $(2)_NAME = aarch64 + $(2)_FAMILY = aarch64 + $(2)_CFLAGS := -march=armv8-a + else ifeq ($(1),arm32) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv6 -marm + else ifeq ($(1),arm) + $(2)_NAME = arm32 + $(2)_FAMILY = arm32 + $(2)_CFLAGS := -march=armv6 -marm + else ifeq ($(patsubst %x86_64%,x86_64,$(1)),x86_64) + $(2)_NAME = x86_64 + $(2)_FAMILY = x86_64 + $(2)_CFLAGS := -march=x86-64 -m64 + else ifeq ($(patsubst %amd64%,amd64,$(1)),amd64) + $(2)_NAME = x86_64 + $(2)_FAMILY = x86_64 + $(2)_CFLAGS := -march=x86-64 -m64 + else ifeq ($(patsubst %AMD64%,AMD64,$(1)),AMD64) + $(2)_NAME = x86_64 + $(2)_FAMILY = x86_64 + $(2)_CFLAGS := -march=x86-64 -m64 + else ifeq ($(1),i86pc) + $(2)_NAME = x86_64 + $(2)_FAMILY = x86_64 + $(2)_CFLAGS := -march=x86-64 -m64 + else ifeq ($(patsubst %i686%,i686,$(1)),i686) + $(2)_NAME = i686 + $(2)_FAMILY = ia32 + $(2)_CFLAGS := -march=i686 -m32 + else ifeq ($(patsubst i%86,i586,$(1)),i586) + $(2)_NAME = i586 + $(2)_FAMILY = ia32 + $(2)_CFLAGS := -march=i586 -m32 + else ifeq ($(1),x86) + $(2)_NAME = i686 + $(2)_FAMILY = ia32 + $(2)_CFLAGS := -march=i686 -m32 + else ifeq ($(1),riscv32) + $(2)_NAME = riscv32 + $(2)_FAMILY = riscv32 + $(2)_CFLAGS := -march=rv32imafdc -mabi=lp32d + else ifeq ($(1),riscv64) + $(2)_NAME = riscv64 + $(2)_FAMILY = riscv64 + $(2)_CFLAGS := -march=rv64imafdc -mabi=lp64d + else + $(2)_NAME = $(1) + $(2)_FAMILY = generic + $(2)_CFLAGS := + endif +endef + +$(eval $(call detect_architecture,$(BUILD_ARCH),ARCHITECTURE)) +$(eval $(call detect_architecture,$(HOST_BUILD_ARCH),HOST_ARCHITECTURE)) + +override ARCHITECTURE = $(ARCHITECTURE_NAME) +override HOST_ARCHITECTURE = $(HOST_ARCHITECTURE_NAME) # Extension of libraries ifndef LIBRARY_EXT ifeq ($(PLATFORM),Windows) LIBRARY_EXT := .dll + else ifeq ($(PLATFORM),MacOS) + LIBRARY_EXT := .dylib else LIBRARY_EXT := .so endif @@ -180,10 +191,14 @@ COMMON_VARS = \ ARCHITECTURE \ ARCHITECTURE_FAMILY \ ARCHITECTURE_CFLAGS \ + CROSS_COMPILE \ DEBUG \ EXECUTABLE_EXT \ EXPORT_SYMBOLS \ FEATURES \ + HOST_ARCHITECTURE \ + HOST_ARCHITECTURE_FAMILY \ + HOST_ARCHITECTURE_CFLAGS \ INSTALL_HEADERS \ LIBRARY_EXT \ LIBRARY_PREFIX \ @@ -205,6 +220,7 @@ sysvars: echo " ARCHITECTURE_CFLAGS compiler flags to specify architecture" echo " ARCHITECTURE_FAMILY compiler flags to specify architecture family" echo " ARCHITECTURE_LDFLAGS linker flags to specify architecture" + echo " CROSS_COMPILE enable/disable cross-compilation" echo " DEBUG build with debug options" echo " DEVEL build with modules checked out for read/write URL" echo " EXECUTABLE_EXT file extension for executable files" diff --git a/make/tools.mk b/make/tools.mk index 9dcf9e9..607412d 100644 --- a/make/tools.mk +++ b/make/tools.mk @@ -27,6 +27,20 @@ ifeq ($(PLATFORM),OpenBSD) X_AR_TOOL := ar X_LD_TOOL := ld X_PKG_CONFIG := pkg-config +else ifeq ($(PLATFORM),BSD) + X_CC_TOOL := clang + X_CXX_TOOL := clang++ + X_AS_TOOL := as + X_AR_TOOL := ar + X_LD_TOOL := ld + X_PKG_CONFIG := pkg-config +else ifeq ($(PLATFORM),MacOS) + X_CC_TOOL := clang + X_CXX_TOOL := clang++ + X_AS_TOOL := as + X_AR_TOOL := ar + X_LD_TOOL := ld + X_PKG_CONFIG := pkg-config else X_CC_TOOL := gcc X_CXX_TOOL := g++ @@ -49,26 +63,36 @@ PHP ?= $(X_PHP_TOOL) PKG_CONFIG ?= $(X_PKG_CONFIG) # Define tool variables for host build -HOST_CC ?= $(CC) -HOST_CXX ?= $(CXX) -HOST_AS ?= $(AS) -HOST_AR ?= $(AR) -HOST_LD ?= $(LD) -HOST_PHP ?= $(PHP) -HOST_PKG_CONFIG ?= $(PKG_CONFIG) +ifeq ($(CROSS_COMPILE),1) + HOST_CC ?= $(X_CC_TOOL) + HOST_CXX ?= $(X_CXX_TOOL) + HOST_AS ?= $(X_AS_TOOL) + HOST_AR ?= $(X_AR_TOOL) + HOST_LD ?= $(X_LD_TOOL) + HOST_PHP ?= $(X_PHP_TOOL) + HOST_PKG_CONFIG ?= $(X_PKG_CONFIG) +else + HOST_CC ?= $(CC) + HOST_CXX ?= $(CXX) + HOST_AS ?= $(AS) + HOST_AR ?= $(AR) + HOST_LD ?= $(LD) + HOST_PHP ?= $(PHP) + HOST_PKG_CONFIG ?= $(PKG_CONFIG) +endif # Miscellaneous tools GIT ?= $(X_GIT_TOOL) INSTALL ?= $(X_INSTALL_TOOL) # Patch flags and tools for (cross) build -FLAG_RELRO = -Wl,-z,relro,-z,now -FLAG_STDLIB = -CFLAGS_EXT = $(ARCHITECTURE_CFLAGS) -CXXFLAGS_EXT = $(ARCHITECTURE_CFLAGS) -EXE_FLAGS_EXT = $(ARCHITECTURE_CFLAGS) -SO_FLAGS_EXT = $(ARCHITECTURE_CFLAGS) -LDFLAGS_EXT = $(ARCHITECTURE_LDFLAGS) +FLAG_RELRO := -Wl,-z,relro,-z,now +FLAG_STDLIB := +NOARCH_CFLAGS := +NOARCH_CXXFLAGS := +NOARCH_EXE_FLAGS := +NOARCH_SO_FLAGS := +NOARCH_LDFLAGS := ifeq ($(PLATFORM),Solaris) FLAG_RELRO = @@ -76,49 +100,49 @@ ifeq ($(PLATFORM),Solaris) else ifeq ($(PLATFORM),Windows) FLAG_RELRO = FLAG_STDLIB = - CFLAGS_EXT += -DWINVER=0x600 -D_WIN32_WINNT=0x600 - CXXFLAGS_EXT += -DWINVER=0x600 -D_WIN32_WINNT=0x600 - EXE_FLAGS_EXT += -static-libgcc -static-libstdc++ - SO_FLAGS_EXT += -static-libgcc -static-libstdc++ - LDFLAGS_EXT += -T $(CURDIR)/make/ld-windows.script + NOARCH_CFLAGS += -DWINVER=0x600 -D_WIN32_WINNT=0x600 + NOARCH_CXXFLAGS += -DWINVER=0x600 -D_WIN32_WINNT=0x600 + NOARCH_EXE_FLAGS += -static-libgcc -static-libstdc++ + NOARCH_SO_FLAGS += -static-libgcc -static-libstdc++ + NOARCH_LDFLAGS += -T $(CURDIR)/make/ld-windows.script else ifeq ($(PLATFORM),BSD) - EXE_FLAGS_EXT += -L/usr/local/lib - SO_FLAGS_EXT += -L/usr/local/lib + NOARCH_EXE_FLAGS += -L/usr/local/lib + NOARCH_SO_FLAGS += -L/usr/local/lib endif ifeq ($(DEBUG),1) - CFLAGS_EXT += -Og -g3 -DLSP_DEBUG -falign-functions=16 - CXXFLAGS_EXT += -Og -g3 -DLSP_DEBUG -falign-functions=16 + NOARCH_CFLAGS += -Og -g3 -DLSP_DEBUG -falign-functions=16 + NOARCH_CXXFLAGS += -Og -g3 -DLSP_DEBUG -falign-functions=16 else - CFLAGS_EXT += -O2 - CXXFLAGS_EXT += -O2 + NOARCH_CFLAGS += -O2 + NOARCH_CXXFLAGS += -O2 endif ifeq ($(ASAN),1) - CFLAGS_EXT += -fsanitize=address - CXXFLAGS_EXT += -fsanitize=address - EXE_FLAGS_EXT += -fsanitize=address - SO_FLAGS_EXT += -fsanitize=address + NOARCH_CFLAGS += -fsanitize=address + NOARCH_CXXFLAGS += -fsanitize=address + NOARCH_EXE_FLAGS += -fsanitize=address + NOARCH_SO_FLAGS += -fsanitize=address endif ifeq ($(PROFILE),1) - CFLAGS_EXT += -pg -DLSP_PROFILE - CXXFLAGS_EXT += -pg -DLSP_PROFILE + NOARCH_CFLAGS += -pg -DLSP_PROFILE + NOARCH_CXXFLAGS += -pg -DLSP_PROFILE endif ifeq ($(TRACE),1) - CFLAGS_EXT += -DLSP_TRACE - CXXFLAGS_EXT += -DLSP_TRACE + NOARCH_CFLAGS += -DLSP_TRACE + NOARCH_CXXFLAGS += -DLSP_TRACE endif ifeq ($(STRICT),1) - CFLAGS_EXT += -Werror - CXXFLAGS_EXT += -Werror + NOARCH_CFLAGS += -Werror + NOARCH_CXXFLAGS += -Werror endif ifeq ($(TEST),1) - CFLAGS_EXT += -DLSP_TESTING - CXXFLAGS_EXT += -DLSP_TESTING + NOARCH_CFLAGS += -DLSP_TESTING + NOARCH_CXXFLAGS += -DLSP_TESTING EXPORT_SYMBOLS ?= 1 else ifeq ($(ARTIFACT_EXPORT_SYMBOLS),1) @@ -129,8 +153,8 @@ else endif ifneq ($(EXPORT_SYMBOLS),1) - CFLAGS_EXT += -fvisibility=hidden - CXXFLAGS_EXT += -fvisibility=hidden + NOARCH_CFLAGS += -fvisibility=hidden + NOARCH_CXXFLAGS += -fvisibility=hidden endif ifneq ($(ARTIFACT_EXPORT_HEADERS),0) @@ -140,18 +164,18 @@ else endif # Define flags for (cross) build -CFLAGS += \ - $(CFLAGS_EXT) \ +NOARCH_CFLAGS += \ -fdata-sections \ -ffunction-sections \ -fno-asynchronous-unwind-tables \ -pipe \ -Wall +CFLAGS += $(ARCHITECTURE_CFLAGS) $(NOARCH_CFLAGS) +HOST_CFLAGS += $(HOST_ARCHITECTURE_CFLAGS) $(NOARCH_CFLAGS) CDEFS += -DLSP_INSTALL_PREFIX=\\\"$(PREFIX)\\\" -CXXFLAGS += \ - $(CXXFLAGS_EXT) \ +NOARCH_CXXFLAGS += \ -fno-exceptions \ -fno-rtti \ -fdata-sections \ @@ -159,22 +183,24 @@ CXXFLAGS += \ -fno-asynchronous-unwind-tables \ -pipe \ -Wall +CXXFLAGS += $(ARCHITECTURE_CFLAGS) $(NOARCH_CXXFLAGS) +HOST_CXXFLAGS += $(HOST_ARCHITECTURE_CFLAGS) $(NOARCH_CXXFLAGS) CXXDEFS += -DLSP_INSTALL_PREFIX=\\\"$(PREFIX)\\\" INCLUDE := -LDFLAGS := $(LDFLAGS_EXT) -r -EXE_FLAGS := $(EXE_FLAGS_EXT) $(FLAG_RELRO) -Wl,--gc-sections -SO_FLAGS := $(SO_FLAGS_EXT) $(FLAG_RELRO) -Wl,--gc-sections -shared $(FLAG_STDLIB) -fPIC - -# Define flags for host build -HOST_CFLAGS := $(CFLAGS) -HOST_CDEFS := $(CDEFS) -HOST_CXXFLAGS := $(CXXFLAGS) -HOST_CXXDEFS := $(CXXDEFS) -HOST_LDFLAGS := $(LDFLAGS) -HOST_EXE_FLAGS := $(EXE_FLAGS) -HOST_SO_FLAGS := $(SO_FLAGS) + +NOARCH_LDFLAGS += -r +LDFLAGS := $(ARCHITECTURE_LDFLAGS) $(NOARCH_LDFLAGS) +HOST_LDFLAGS := $(HOST_ARCHITECTURE_LDFLAGS) $(NOARCH_LDFLAGS) + +NOARCH_EXE_FLAGS += $(FLAG_RELRO) -Wl,--gc-sections +EXE_FLAGS := $(ARCHITECTURE_CFLAGS) $(NOARCH_EXE_FLAGS) +HOST_EXE_FLAGS := $(HOST_ARCHITECTURE_CFLAGS) $(NOARCH_EXE_FLAGS) + +NOARCH_SO_FLAGS += $(FLAG_RELRO) -Wl,--gc-sections -shared $(FLAG_STDLIB) -fPIC +SO_FLAGS := $(ARCHITECTURE_CFLAGS) $(NOARCH_SO_FLAGS) +HOST_SO_FLAGS := $(HOST_ARCHITECTURE_CFLAGS) $(NOARCH_SO_FLAGS) # The overall list of exported variables TOOL_VARS := \ diff --git a/project.mk b/project.mk index 144684d..8b38690 100644 --- a/project.mk +++ b/project.mk @@ -25,7 +25,7 @@ ARTIFACT_TYPE = plug ARTIFACT_DESC = LSP Profiler Plugin Series ARTIFACT_HEADERS = lsp-plug.in ARTIFACT_EXPORT_HEADERS = 0 -ARTIFACT_VERSION = 1.0.20 +ARTIFACT_VERSION = 1.0.21 diff --git a/src/Makefile b/src/Makefile index e495049..27c07f5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -51,7 +51,7 @@ endif DEPENDENCIES = $(UNIQ_DEPENDENCIES) -ARTIFACT_BIN = $($(ARTIFACT_ID)_BIN) +ARTIFACT_BIN = $($(HOST)$(ARTIFACT_ID)_BIN) ARTIFACT_NAME = $($(ARTIFACT_ID)_NAME) ARTIFACT_OBJ_META = $(ARTIFACT_BIN)/$($(ARTIFACT_ID)_NAME)-meta.o ARTIFACT_OBJ_DSP = $(ARTIFACT_BIN)/$($(ARTIFACT_ID)_NAME)-dsp.o @@ -90,7 +90,7 @@ XOBJ_TEST = $(if $(OBJ_TEST),$(OBJ_TEST),$(OBJ_STUB)) CXX_FILE = $(patsubst $(ARTIFACT_BIN)/%.o,%.cpp, $(@)) DEP_FILE = $(patsubst %.o,%.d, $(@)) -CFLAGS_DEPS = $(foreach dep, $(call uniq, $(DEPENDENCIES)), $(if $($(dep)_CFLAGS), $($(dep)_CFLAGS))) +CFLAGS_DEPS = $(foreach dep, $(call uniq, $(DEPENDENCIES)), $(if $($(HOST)$(dep)_CFLAGS), $($(HOST)$(dep)_CFLAGS))) BUILD_ALL = $(ARTIFACT_LIB) $(ARTIFACT_SLIB) $(ARTIFACT_PC) ifeq ($(TEST), 1) @@ -114,14 +114,14 @@ $(CXX_SRC_STUB): echo "#include " > $(CXX_SRC_STUB) $(OBJ_STUB): $(CXX_SRC_STUB) - echo " $(CXX) [$(ARTIFACT_NAME)] $(CXX_FILE)" + echo " $($(HOST)CXX) [$(ARTIFACT_NAME)] $(CXX_FILE)" mkdir -p $(dir $@) - $(CXX) -o $(@) -c $(CXX_SRC_STUB) -fPIC $(CXXFLAGS) $(ARTIFACT_MFLAGS) $(EXT_FLAGS) $(INCLUDE) $(CFLAGS_DEPS) -MMD -MP -MF $(DEP_FILE) -MT $(@) + $($(HOST)CXX) -o $(@) -c $(CXX_SRC_STUB) -fPIC $($(HOST)CXXFLAGS) $(ARTIFACT_MFLAGS) $(EXT_FLAGS) $(INCLUDE) $(CFLAGS_DEPS) -MMD -MP -MF $(DEP_FILE) -MT $(@) $(OBJ): - echo " $(CXX) [$(ARTIFACT_NAME)] $(CXX_FILE)" + echo " $($(HOST)CXX) [$(ARTIFACT_NAME)] $(CXX_FILE)" mkdir -p $(dir $@) - $(CXX) -o $(@) -c $(CXX_FILE) -fPIC $(CXXFLAGS) $(ARTIFACT_MFLAGS) $(EXT_FLAGS) $(INCLUDE) $(CFLAGS_DEPS) -MMD -MP -MF $(DEP_FILE) -MT $(@) + $($(HOST)CXX) -o $(@) -c $(CXX_FILE) -fPIC $($(HOST)CXXFLAGS) $(ARTIFACT_MFLAGS) $(EXT_FLAGS) $(INCLUDE) $(CFLAGS_DEPS) -MMD -MP -MF $(DEP_FILE) -MT $(@) # Linking targets $(ARTIFACT_OBJ_META): $(XOBJ_MAIN_META) diff --git a/src/main/meta/profiler.cpp b/src/main/meta/profiler.cpp index 36394b9..a6a34e5 100644 --- a/src/main/meta/profiler.cpp +++ b/src/main/meta/profiler.cpp @@ -26,7 +26,7 @@ #define LSP_PLUGINS_PROFILER_VERSION_MAJOR 1 #define LSP_PLUGINS_PROFILER_VERSION_MINOR 0 -#define LSP_PLUGINS_PROFILER_VERSION_MICRO 20 +#define LSP_PLUGINS_PROFILER_VERSION_MICRO 21 #define LSP_PLUGINS_PROFILER_VERSION \ LSP_MODULE_VERSION( \