197 lines
5.2 KiB
Makefile
197 lines
5.2 KiB
Makefile
#!/usr/bin/make -f
|
|
# Makefile for Cardinal #
|
|
# --------------------- #
|
|
# Created by falkTX
|
|
#
|
|
|
|
ifeq ($(ROOT),)
|
|
$(error invalid usage)
|
|
endif
|
|
|
|
ifeq ($(NOSIMD),true)
|
|
ifneq (,$(findstring -msse,$(CXXFLAGS)))
|
|
$(error NOSIMD build requested but -msse compiler flag is present in CXXFLAGS)
|
|
endif
|
|
endif
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Import base definitions
|
|
|
|
export DISTRHO_NAMESPACE = CardinalDISTRHO
|
|
export DGL_NAMESPACE = CardinalDGL
|
|
export NVG_DISABLE_SKIPPING_WHITESPACE = true
|
|
export NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
|
|
export USE_FILE_BROWSER = true
|
|
export USE_NANOVG_FBO = true
|
|
export WASM_EXCEPTIONS = true
|
|
export WINDOWS_ICON_ID = 401
|
|
export X11_WINDOW_ICON_NAME = gCardinalX11Icon
|
|
export X11_WINDOW_ICON_SIZE = 18950
|
|
include $(ROOT)/dpf/Makefile.base.mk
|
|
|
|
DGL_EXTRA_ARGS = \
|
|
DISTRHO_NAMESPACE=$(DISTRHO_NAMESPACE) \
|
|
DGL_NAMESPACE=$(DGL_NAMESPACE) \
|
|
NVG_DISABLE_SKIPPING_WHITESPACE=$(NVG_DISABLE_SKIPPING_WHITESPACE) \
|
|
NVG_FONT_TEXTURE_FLAGS=$(NVG_FONT_TEXTURE_FLAGS) \
|
|
USE_FILE_BROWSER=$(USE_FILE_BROWSER) \
|
|
USE_NANOVG_FBO=$(USE_NANOVG_FBO) \
|
|
WASM_EXCEPTIONS=$(WASM_EXCEPTIONS) \
|
|
WINDOWS_ICON_ID=$(WINDOWS_ICON_ID) \
|
|
X11_WINDOW_ICON_NAME=$(X11_WINDOW_ICON_NAME) \
|
|
X11_WINDOW_ICON_SIZE=$(X11_WINDOW_ICON_SIZE)
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Build config
|
|
|
|
ifeq ($(BSD),true)
|
|
SYSDEPS ?= true
|
|
else
|
|
SYSDEPS ?= false
|
|
endif
|
|
|
|
ifeq ($(SYSDEPS),true)
|
|
RACK_DEP_PATH = $(abspath $(ROOT)/deps/sysroot)
|
|
else
|
|
RACK_DEP_PATH = $(abspath $(ROOT)/src/Rack/dep)
|
|
endif
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Custom build flags
|
|
|
|
BASE_FLAGS += -DUSING_CARDINAL_NOT_RACK
|
|
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
|
|
else 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 -msse3
|
|
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 ($(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
|
|
|
|
# make sure these flags always end up last
|
|
BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing
|
|
BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# simde flags
|
|
|
|
BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/simde)
|
|
BASE_FLAGS += -DSIMDE_ACCURACY_PREFERENCE=0
|
|
BASE_FLAGS += -DSIMDE_FAST_CONVERSION_RANGE
|
|
BASE_FLAGS += -DSIMDE_FAST_MATH
|
|
BASE_FLAGS += -DSIMDE_FAST_NANS
|
|
BASE_FLAGS += -DSIMDE_FAST_ROUND_MODE
|
|
BASE_FLAGS += -DSIMDE_FAST_ROUND_TIES
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# 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_GLES3),true)
|
|
BASE_FLAGS += -DNANOVG_GLES3_FORCED
|
|
else ifeq ($(USE_GLES2),true)
|
|
BASE_FLAGS += -DNANOVG_GLES2_FORCED
|
|
endif
|
|
|
|
# needed for enabling SSE in pffft
|
|
ifeq ($(CPU_I386),true)
|
|
BASE_FLAGS += -Di386
|
|
endif
|
|
|
|
BASE_FLAGS += -I$(abspath $(ROOT)/dpf/dgl/src/nanovg)
|
|
BASE_FLAGS += -I$(abspath $(ROOT)/dpf/distrho)
|
|
|
|
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)
|
|
BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/tinyexpr)
|
|
|
|
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
|
|
|
|
# -----------------------------------------------------------------------------
|