diff --git a/Makefile.base.mk b/Makefile.base.mk index cfbdad8..1b0e9b9 100644 --- a/Makefile.base.mk +++ b/Makefile.base.mk @@ -39,9 +39,149 @@ SYSDEPS ?= false endif ifeq ($(SYSDEPS),true) -RACK_DEP_PATH = $(abspath $(ROOT)/dep/sysroot) +RACK_DEP_PATH = $(abspath $(ROOT)/deps/sysroot) else RACK_DEP_PATH = $(abspath $(ROOT)/src/Rack/dep) endif # ----------------------------------------------------------------------------- +# Custom build flags + +BASE_FLAGS += -I$(abspath $(ROOT)/include) +BASE_FLAGS += -I$(abspath $(ROOT)/include/simd-compat) +BASE_FLAGS += -I$(RACK_DEP_PATH)/include + +ifeq ($(MOD_BUILD),true) +BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp +LINK_FLAGS += -fopenmp +endif + +ifeq ($(NOSIMD),true) +BASE_FLAGS += -DCARDINAL_NOSIMD +endif + +ifeq ($(SYSDEPS),true) +BASE_FLAGS += -DCARDINAL_SYSDEPS +BASE_FLAGS += $(shell $(PKG_CONFIG) --cflags jansson libarchive samplerate speexdsp) +else +BASE_FLAGS += -DZSTDLIB_VISIBILITY= +endif + +ifeq ($(BSD)$(HAIKU),true) +BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC +endif + +ifeq ($(BSD)$(WASM),true) +BASE_FLAGS += -D'aligned_alloc_16(ptr)'='aligned_alloc(16,ptr)' +BASE_FLAGS += -D'aligned_free_16(ptr)'='free(ptr)' +endif + +ifeq ($(HAIKU)$(WASM),true) +BASE_FLAGS += -I$(abspath $(ROOT)/include/linux-compat) +else +BASE_FLAGS += -pthread +endif + +ifeq ($(WINDOWS),true) +BASE_FLAGS += -D_USE_MATH_DEFINES +BASE_FLAGS += -DWIN32_LEAN_AND_MEAN +BASE_FLAGS += -D_WIN32_WINNT=0x0600 +BASE_FLAGS += -I$(abspath $(ROOT)/include/mingw-compat) +endif + +BASE_OPTS += -fno-finite-math-only +BASE_OPTS += -fno-strict-aliasing + +# ----------------------------------------------------------------------------- +# Rack build flags + +ifeq ($(BUILDING_RACK),true) + +# Rack code is not tested for this flag, unset it +BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS + +# Ignore bad behaviour from Rack API +BUILD_CXX_FLAGS += -Wno-format-security + +# Ignore warnings from simde +ifeq ($(MOD_BUILD),true) +BUILD_CXX_FLAGS += -Wno-overflow +endif + +# lots of warnings from VCV side +BASE_FLAGS += -Wno-unused-parameter +BASE_FLAGS += -Wno-unused-variable + +ifeq ($(CPU_ARM_OR_ARM64)$(CPU_RISCV64),true) +BASE_FLAGS += -Wno-attributes +endif + +ifeq ($(MACOS),true) +BASE_FLAGS += -DARCH_MAC +else ifeq ($(WINDOWS),true) +BASE_FLAGS += -DARCH_WIN +else +BASE_FLAGS += -DARCH_LIN +endif + +ifeq ($(DEBUG),true) +BASE_FLAGS += -UDEBUG +endif + +ifeq ($(HEADLESS),true) +BASE_FLAGS += -DHEADLESS +endif + +ifeq ($(USE_GLES2),true) +BASE_FLAGS += -DNANOVG_GLES2_FORCED +else ifeq ($(USE_GLES3),true) +BASE_FLAGS += -DNANOVG_GLES3_FORCED +endif + +# needed for enabling SSE in pffft +ifeq ($(CPU_I386),true) +BASE_FLAGS += -Di386 +endif + +# SIMD must always be enabled, even in debug builds +ifneq ($(NOSIMD),true) +ifeq ($(DEBUG),true) + +ifeq ($(WASM),true) +BASE_FLAGS += -msse -msse2 -msse3 -msimd128 +else ifeq ($(CPU_ARM32),true) +BASE_FLAGS += -mfpu=neon-vfpv4 -mfloat-abi=hard +else ifeq ($(CPU_I386_OR_X86_64),true) +BASE_FLAGS += -msse -msse2 -mfpmath=sse +endif + +endif +endif + +BASE_FLAGS += -I$(abspath $(ROOT)/dpf/dgl/src/nanovg) +BASE_FLAGS += -I$(abspath $(ROOT)/dpf/distrho) + +BASE_FLAGS += -I$(abspath $(ROOT)/include/simde) + +BASE_FLAGS += -I$(abspath $(ROOT)/src) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/include) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/include/dsp) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/filesystem/include) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/fuzzysearchdatabase/src) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/glfw/include) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/nanosvg/src) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/oui-blendish) +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/pffft) + +BUILD_C_FLAGS += -std=gnu11 + +ifneq ($(MACOS),true) +BUILD_CXX_FLAGS += -faligned-new -Wno-abi +ifeq ($(MOD_BUILD),true) +BUILD_CXX_FLAGS += -std=gnu++17 +endif +endif + +endif + +# ----------------------------------------------------------------------------- diff --git a/deps/Makefile b/deps/Makefile index ebe130c..97c986a 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -7,43 +7,6 @@ ROOT = .. include $(ROOT)/Makefile.base.mk -# -------------------------------------------------------------- -# custom build flags - -BASE_FLAGS += -I$(abspath ../include) -BASE_FLAGS += -I$(abspath ../include/simd-compat) - -ifeq ($(NOSIMD),true) -BASE_FLAGS += -DCARDINAL_NOSIMD -endif - -ifeq ($(HAIKU)$(WASM),true) -BASE_FLAGS += -I$(abspath ../include/linux-compat) -endif - -ifneq ($(SYSDEPS),true) -BASE_FLAGS += -DZSTDLIB_VISIBILITY= -endif - -ifneq ($(HAIKU),true) -ifneq ($(WASM),true) -BASE_FLAGS += -pthread -endif -endif - -ifeq ($(WINDOWS),true) -BASE_FLAGS += -D_USE_MATH_DEFINES -BASE_FLAGS += -DWIN32_LEAN_AND_MEAN -BASE_FLAGS += -D_WIN32_WINNT=0x0600 -BASE_FLAGS += -I$(abspath ../include/mingw-compat) -endif - -BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing -BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing - -# Rack code is not tested for this flag, unset it -BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS - # -------------------------------------------------------------- # override VCV arch.mk stuff so we can build more architectures diff --git a/plugins/Makefile b/plugins/Makefile index 3601ff6..43bce9f 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -4,6 +4,7 @@ # Created by falkTX # +BUILDING_RACK = true ROOT = .. include $(ROOT)/Makefile.base.mk @@ -1260,134 +1261,22 @@ else BUILD_DIR = ../build/plugins endif -ifeq ($(MACOS),true) -BASE_FLAGS += -DARCH_MAC -else ifeq ($(WINDOWS),true) -BASE_FLAGS += -DARCH_WIN -else -BASE_FLAGS += -DARCH_LIN -endif - BASE_FLAGS += -DBUILDING_PLUGIN_MODULES -BASE_FLAGS += -I../dpf/dgl/src/nanovg -BASE_FLAGS += -I../dpf/distrho - -BASE_FLAGS += -I../include -BASE_FLAGS += -I../include/osdialog-stub -BASE_FLAGS += -I../include/simd-compat -BASE_FLAGS += -I../include/simde - -ifeq ($(HAVE_X11),true) -BASE_FLAGS += -DHAVE_X11 -endif - -ifeq ($(SYSDEPS),true) -BASE_FLAGS += -DCARDINAL_SYSDEPS -BASE_FLAGS += $(shell $(PKG_CONFIG) --cflags jansson libarchive samplerate speexdsp) -BASE_FLAGS += -I../deps/sysroot/include -else -BASE_FLAGS += -DZSTDLIB_VISIBILITY= -BASE_FLAGS += -I../src/Rack/dep/include -endif - -BASE_FLAGS += -I../src -BASE_FLAGS += -I../src/Rack/include -BASE_FLAGS += -I../src/Rack/include/dsp -BASE_FLAGS += -I../src/Rack/dep/filesystem/include -# # BASE_FLAGS += -I../src/Rack/dep/fuzzysearchdatabase/src -BASE_FLAGS += -I../src/Rack/dep/glfw/include -BASE_FLAGS += -I../src/Rack/dep/nanosvg/src -BASE_FLAGS += -I../src/Rack/dep/oui-blendish -BASE_FLAGS += -I../src/Rack/dep/pffft - -ifeq ($(DEBUG),true) -BASE_FLAGS += -UDEBUG -endif - -ifeq ($(HEADLESS),true) -BASE_FLAGS += -DHEADLESS -endif - -# SIMD must always be enabled, even in debug builds -ifeq ($(NOSIMD),true) -BASE_FLAGS += -DCARDINAL_NOSIMD -else ifeq ($(DEBUG),true) -ifeq ($(WASM),true) -BASE_FLAGS += -msse -msse2 -msse3 -msimd128 -else ifeq ($(CPU_ARM32),true) -BASE_FLAGS += -mfpu=neon-vfpv4 -mfloat-abi=hard -else ifeq ($(CPU_I386_OR_X86_64),true) -BASE_FLAGS += -msse -msse2 -mfpmath=sse -endif -endif - -ifeq ($(BSD)$(WASM),true) -BASE_FLAGS += -D'aligned_alloc_16(ptr)'='aligned_alloc(16,ptr)' -BASE_FLAGS += -D'aligned_free_16(ptr)'='free(ptr)' -endif - -ifeq ($(MOD_BUILD),true) -BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp -endif - -ifneq ($(WASM),true) -ifneq ($(HAIKU),true) -BASE_FLAGS += -pthread -endif -endif - -ifeq ($(WINDOWS),true) -BASE_FLAGS += -D_USE_MATH_DEFINES -BASE_FLAGS += -DWIN32_LEAN_AND_MEAN -BASE_FLAGS += -D_WIN32_WINNT=0x0600 -BASE_FLAGS += -I../include/mingw-compat -endif - -ifeq ($(USE_GLES2),true) -BASE_FLAGS += -DNANOVG_GLES2_FORCED -else ifeq ($(USE_GLES3),true) -BASE_FLAGS += -DNANOVG_GLES3_FORCED -endif +BASE_FLAGS += -I$(abspath $(ROOT)/include/osdialog-stub) ifeq ($(shell $(PKG_CONFIG) --exists sndfile && echo true),true) BASE_FLAGS += -DHAVE_SNDFILE endif -BUILD_C_FLAGS += -std=gnu11 - -ifneq ($(MACOS),true) -BUILD_CXX_FLAGS += -faligned-new -Wno-abi -ifeq ($(MOD_BUILD),true) -BUILD_CXX_FLAGS += -std=gnu++17 -endif -endif - -# Rack code is not tested for this flag, unset it -BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS - -# Ignore bad behaviour from Rack API -BUILD_CXX_FLAGS += -Wno-format-security - -# Ignore warnings from simde -ifeq ($(MOD_BUILD),true) -BUILD_CXX_FLAGS += -Wno-overflow +ifeq ($(HAVE_X11),true) +BASE_FLAGS += -DHAVE_X11 endif # Use this for any plugins that rely on NaN presence NOFINITE_FLAGS = -fno-finite-math-only -fno-strict-aliasing # -------------------------------------------------------------- -# lots of warnings from VCV side - -BASE_FLAGS += -Wno-unused-parameter -BASE_FLAGS += -Wno-unused-variable - -ifeq ($(CPU_ARM_OR_ARM64)$(CPU_RISCV64),true) -BASE_FLAGS += -Wno-attributes -endif - -# -------------------------------------------------------------- -# also from plugins +# lots of warnings from plugins BASE_FLAGS += -Wno-deprecated-declarations diff --git a/src/Makefile b/src/Makefile index bcee861..9e7cf1b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,6 +4,7 @@ # Created by falkTX # +BUILDING_RACK = true ROOT = .. include $(ROOT)/Makefile.base.mk @@ -16,128 +17,17 @@ else BUILD_DIR = ../build/rack endif -ifeq ($(MACOS),true) -BASE_FLAGS += -DARCH_MAC -else ifeq ($(WINDOWS),true) -BASE_FLAGS += -DARCH_WIN -else -BASE_FLAGS += -DARCH_LIN -endif - -ifeq ($(HAIKU),true) -BASE_FLAGS += -I../include/linux-compat -else ifeq ($(WASM),true) -BASE_FLAGS += -I../include/linux-compat -endif - BASE_FLAGS += -DPRIVATE= -BASE_FLAGS += -I../dpf/dgl/src/nanovg -BASE_FLAGS += -I../dpf/distrho -BASE_FLAGS += -I../include -BASE_FLAGS += -I../include/simd-compat -BASE_FLAGS += -IRack/include -ifeq ($(SYSDEPS),true) -BASE_FLAGS += -DCARDINAL_SYSDEPS -BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp) -else -BASE_FLAGS += -DZSTDLIB_VISIBILITY= -BASE_FLAGS += -IRack/dep/include -endif -BASE_FLAGS += -IRack/dep/filesystem/include -BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src -BASE_FLAGS += -IRack/dep/glfw/include -BASE_FLAGS += -IRack/dep/nanosvg/src -BASE_FLAGS += -IRack/dep/osdialog -BASE_FLAGS += -IRack/dep/oui-blendish -BASE_FLAGS += -IRack/dep/pffft - -ifeq ($(CPU_I386),true) -# needed for enabling SSE in pffft -BASE_FLAGS += -Di386 -endif - -ifeq ($(DEBUG),true) -BASE_FLAGS += -UDEBUG -endif +BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/osdialog) ifeq ($(HAVE_LIBLO),true) BASE_FLAGS += -DHAVE_LIBLO $(LIBLO_FLAGS) endif -ifeq ($(HEADLESS),true) -BASE_FLAGS += -DHEADLESS -endif - -# SIMD must always be enabled, even in debug builds -ifeq ($(NOSIMD),true) -BASE_FLAGS += -DCARDINAL_NOSIMD -else ifeq ($(DEBUG),true) -ifeq ($(WASM),true) -BASE_FLAGS += -msse -msse2 -msse3 -msimd128 -else ifeq ($(CPU_ARM32),true) -BASE_FLAGS += -mfpu=neon-vfpv4 -mfloat-abi=hard -else ifeq ($(CPU_I386_OR_X86_64),true) -BASE_FLAGS += -msse -msse2 -mfpmath=sse -endif -endif - -ifeq ($(BSD),true) -BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC_PRECISE -endif - -ifeq ($(HAIKU),true) -BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC -endif - -ifeq ($(MOD_BUILD),true) -BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp -endif - -ifneq ($(WASM),true) -ifneq ($(HAIKU),true) -BASE_FLAGS += -pthread -endif -endif - -ifeq ($(WINDOWS),true) -BASE_FLAGS += -D_USE_MATH_DEFINES -BASE_FLAGS += -DWIN32_LEAN_AND_MEAN -BASE_FLAGS += -D_WIN32_WINNT=0x0600 -BASE_FLAGS += -I../include/mingw-compat -endif - -ifeq ($(USE_GLES2),true) -BASE_FLAGS += -DNANOVG_GLES2_FORCED -else ifeq ($(USE_GLES3),true) -BASE_FLAGS += -DNANOVG_GLES3_FORCED -endif - -BUILD_C_FLAGS += -std=gnu11 -BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing -BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing - -ifneq ($(MACOS),true) -BUILD_CXX_FLAGS += -faligned-new -Wno-abi -ifeq ($(MOD_BUILD),true) -BUILD_CXX_FLAGS += -std=gnu++17 -endif -endif - # use our custom function to invert some colors BUILD_CXX_FLAGS += -DnsvgDelete=nsvgDeleteCardinal BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal -# Rack code is not tested for this flag, unset it -BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS - -# Ignore bad behaviour from Rack API -BUILD_CXX_FLAGS += -Wno-format-security - -# Ignore warnings from simde -ifeq ($(MOD_BUILD),true) -BUILD_CXX_FLAGS += -Wno-overflow -endif - # -------------------------------------------------------------- # Rack files to build diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 6683307..0cc3b7f 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -4,6 +4,7 @@ # Created by falkTX # +BUILDING_RACK = true ROOT = ../.. include $(ROOT)/Makefile.base.mk @@ -62,11 +63,7 @@ endif # CARDINAL_VARIANT mini PREFIX ?= /usr/local -ifeq ($(SYSDEPS),true) -DEP_LIB_PATH = $(abspath ../../deps/sysroot/lib) -else -DEP_LIB_PATH = $(abspath ../Rack/dep/lib) -endif +DEP_LIB_PATH = $(RACK_DEP_PATH)/lib # -------------------------------------------------------------- # Files to build (DPF stuff) @@ -266,97 +263,15 @@ include ../../dpf/Makefile.plugins.mk # -------------------------------------------------------------- # Extra flags for VCV stuff -ifeq ($(MACOS),true) -BASE_FLAGS += -DARCH_MAC -else ifeq ($(WINDOWS),true) -BASE_FLAGS += -DARCH_WIN -else -BASE_FLAGS += -DARCH_LIN -endif - BASE_FLAGS += -DPRIVATE= -BASE_FLAGS += -I.. -BASE_FLAGS += -I../../dpf/dgl/src/nanovg -BASE_FLAGS += -I../../include -BASE_FLAGS += -I../../include/simd-compat -BASE_FLAGS += -I../Rack/include -ifeq ($(SYSDEPS),true) -BASE_FLAGS += -DCARDINAL_SYSDEPS -BASE_FLAGS += $(shell $(PKG_CONFIG) --cflags jansson libarchive samplerate speexdsp) -else -BASE_FLAGS += -DZSTDLIB_VISIBILITY= -BASE_FLAGS += -I../Rack/dep/include -endif -BASE_FLAGS += -I../Rack/dep/glfw/include -BASE_FLAGS += -I../Rack/dep/nanosvg/src -BASE_FLAGS += -I../Rack/dep/oui-blendish - -ifeq ($(HEADLESS),true) -BASE_FLAGS += -DHEADLESS -endif - -# SIMD must always be enabled, even in debug builds -ifeq ($(NOSIMD),true) -BASE_FLAGS += -DCARDINAL_NOSIMD -else ifeq ($(DEBUG),true) -ifeq ($(WASM),true) -BASE_FLAGS += -msse -msse2 -msse3 -msimd128 -else ifeq ($(CPU_ARM32),true) -BASE_FLAGS += -mfpu=neon-vfpv4 -mfloat-abi=hard -else ifeq ($(CPU_I386_OR_X86_64),true) -BASE_FLAGS += -msse -msse2 -mfpmath=sse -endif -endif ifeq ($(MOD_BUILD),true) BASE_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff BASE_FLAGS += -DDISTRHO_PLUGIN_USES_MODGUI=1 -BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp -LINK_FLAGS += -fopenmp else ifeq ($(CARDINAL_VARIANT),mini) -BUILD_CXX_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff -endif - -ifneq ($(WASM),true) -ifneq ($(HAIKU),true) -BASE_FLAGS += -pthread -endif -endif - -ifeq ($(WINDOWS),true) -BASE_FLAGS += -D_USE_MATH_DEFINES -BASE_FLAGS += -DWIN32_LEAN_AND_MEAN -BASE_FLAGS += -D_WIN32_WINNT=0x0600 -BASE_FLAGS += -I../../include/mingw-compat -endif - -ifeq ($(USE_GLES2),true) -BASE_FLAGS += -DNANOVG_GLES2_FORCED -else ifeq ($(USE_GLES3),true) -BASE_FLAGS += -DNANOVG_GLES3_FORCED -endif - -BUILD_C_FLAGS += -std=gnu11 - -ifneq ($(MACOS),true) -BUILD_CXX_FLAGS += -faligned-new -Wno-abi -ifeq ($(MOD_BUILD),true) -BUILD_CXX_FLAGS += -std=gnu++17 -endif +BASE_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff endif -# Rack code is not tested for this flag, unset it -BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS - -# Ignore bad behaviour from Rack API -BUILD_CXX_FLAGS += -Wno-format-security - -# -------------------------------------------------------------- -# FIXME lots of warnings from VCV side - -BASE_FLAGS += -Wno-unused-parameter -BASE_FLAGS += -Wno-unused-variable - # -------------------------------------------------------------- # extra linker flags @@ -407,9 +322,13 @@ endif LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) else ifeq ($(HAIKU),true) + LINK_FLAGS += -lpthread + else + LINK_FLAGS += -pthread + endif ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) @@ -418,11 +337,9 @@ LINK_FLAGS += -ldl endif endif -ifeq ($(BSD),true) -ifeq ($(DEBUG),true) +ifeq ($(BSD)$(DEBUG),true) LINK_FLAGS += -lexecinfo endif -endif ifeq ($(MACOS),true) LINK_FLAGS += -framework IOKit