You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
5.4KB

  1. #!/usr/bin/make -f
  2. # Makefile for Cardinal #
  3. # --------------------- #
  4. # Created by falkTX
  5. #
  6. ifeq ($(ROOT),)
  7. $(error invalid usage)
  8. endif
  9. ifeq ($(NOSIMD),true)
  10. ifneq (,$(findstring -msse,$(CXXFLAGS)))
  11. $(error NOSIMD build requested but -msse compiler flag is present in CXXFLAGS)
  12. endif
  13. endif
  14. # -----------------------------------------------------------------------------
  15. # Import base definitions
  16. export DISTRHO_NAMESPACE = CardinalDISTRHO
  17. export DGL_NAMESPACE = CardinalDGL
  18. export NVG_DISABLE_SKIPPING_WHITESPACE = true
  19. export NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST
  20. export USE_NANOVG_FBO = true
  21. export WASM_EXCEPTIONS = true
  22. export WINDOWS_ICON_ID = 401
  23. export X11_WINDOW_ICON_NAME = gCardinalX11Icon
  24. export X11_WINDOW_ICON_SIZE = 18950
  25. include $(ROOT)/dpf/Makefile.base.mk
  26. DGL_EXTRA_ARGS = \
  27. DISTRHO_NAMESPACE=$(DISTRHO_NAMESPACE) \
  28. DGL_NAMESPACE=$(DGL_NAMESPACE) \
  29. NVG_DISABLE_SKIPPING_WHITESPACE=$(NVG_DISABLE_SKIPPING_WHITESPACE) \
  30. NVG_FONT_TEXTURE_FLAGS=$(NVG_FONT_TEXTURE_FLAGS) \
  31. USE_NANOVG_FBO=$(USE_NANOVG_FBO) \
  32. WASM_EXCEPTIONS=$(WASM_EXCEPTIONS) \
  33. WINDOWS_ICON_ID=$(WINDOWS_ICON_ID) \
  34. X11_WINDOW_ICON_NAME=$(X11_WINDOW_ICON_NAME) \
  35. X11_WINDOW_ICON_SIZE=$(X11_WINDOW_ICON_SIZE)
  36. # -----------------------------------------------------------------------------
  37. # Build config
  38. ifeq ($(BSD),true)
  39. SYSDEPS ?= true
  40. else
  41. SYSDEPS ?= false
  42. endif
  43. ifeq ($(SYSDEPS),true)
  44. RACK_DEP_PATH = $(abspath $(ROOT)/deps/sysroot)
  45. else
  46. RACK_DEP_PATH = $(abspath $(ROOT)/src/Rack/dep)
  47. endif
  48. # -----------------------------------------------------------------------------
  49. # Custom build flags
  50. BASE_FLAGS += -I$(abspath $(ROOT)/include)
  51. BASE_FLAGS += -I$(abspath $(ROOT)/include/simd-compat)
  52. BASE_FLAGS += -I$(RACK_DEP_PATH)/include
  53. ifeq ($(MOD_BUILD),true)
  54. BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp
  55. LINK_FLAGS += -fopenmp
  56. endif
  57. ifeq ($(NOSIMD),true)
  58. BASE_FLAGS += -DCARDINAL_NOSIMD
  59. endif
  60. ifeq ($(SYSDEPS),true)
  61. BASE_FLAGS += -DCARDINAL_SYSDEPS
  62. BASE_FLAGS += $(shell $(PKG_CONFIG) --cflags jansson libarchive samplerate speexdsp)
  63. else
  64. BASE_FLAGS += -DZSTDLIB_VISIBILITY=
  65. endif
  66. ifeq ($(BSD)$(HAIKU),true)
  67. BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC
  68. endif
  69. ifeq ($(HAIKU)$(WASM),true)
  70. BASE_FLAGS += -I$(abspath $(ROOT)/include/linux-compat)
  71. else
  72. BASE_FLAGS += -pthread
  73. endif
  74. ifeq ($(WINDOWS),true)
  75. BASE_FLAGS += -D_USE_MATH_DEFINES
  76. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  77. BASE_FLAGS += -D_WIN32_WINNT=0x0600
  78. BASE_FLAGS += -I$(abspath $(ROOT)/include/mingw-compat)
  79. endif
  80. # make sure these flags always end up last
  81. BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing
  82. BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing
  83. # -----------------------------------------------------------------------------
  84. # simde flags
  85. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/simde)
  86. BASE_FLAGS += -DSIMDE_ACCURACY_PREFERENCE=0
  87. BASE_FLAGS += -DSIMDE_FAST_CONVERSION_RANGE
  88. BASE_FLAGS += -DSIMDE_FAST_MATH
  89. BASE_FLAGS += -DSIMDE_FAST_NANS
  90. BASE_FLAGS += -DSIMDE_FAST_ROUND_MODE
  91. BASE_FLAGS += -DSIMDE_FAST_ROUND_TIES
  92. # unwanted
  93. BASE_FLAGS += -DSIMDE_X86_SSE4_1_H
  94. BASE_FLAGS += -DSIMDE_X86_SSE4_2_H
  95. # -----------------------------------------------------------------------------
  96. # Rack build flags
  97. ifeq ($(BUILDING_RACK),true)
  98. # Rack code is not tested for this flag, unset it
  99. BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
  100. # Ignore bad behaviour from Rack API
  101. BUILD_CXX_FLAGS += -Wno-format-security
  102. # Ignore warnings from simde
  103. ifeq ($(MOD_BUILD),true)
  104. BUILD_CXX_FLAGS += -Wno-overflow
  105. endif
  106. # lots of warnings from VCV side
  107. BASE_FLAGS += -Wno-unused-parameter
  108. BASE_FLAGS += -Wno-unused-variable
  109. ifeq ($(CPU_ARM_OR_ARM64)$(CPU_RISCV64),true)
  110. BASE_FLAGS += -Wno-attributes
  111. endif
  112. ifeq ($(MACOS),true)
  113. BASE_FLAGS += -DARCH_MAC
  114. else ifeq ($(WINDOWS),true)
  115. BASE_FLAGS += -DARCH_WIN
  116. else
  117. BASE_FLAGS += -DARCH_LIN
  118. endif
  119. ifeq ($(DEBUG),true)
  120. BASE_FLAGS += -UDEBUG
  121. endif
  122. ifeq ($(HEADLESS),true)
  123. BASE_FLAGS += -DHEADLESS
  124. endif
  125. ifeq ($(USE_GLES2),true)
  126. BASE_FLAGS += -DNANOVG_GLES2_FORCED
  127. else ifeq ($(USE_GLES3),true)
  128. BASE_FLAGS += -DNANOVG_GLES3_FORCED
  129. endif
  130. # needed for enabling SSE in pffft
  131. ifeq ($(CPU_I386),true)
  132. ifneq ($(NOSIMD),true)
  133. BASE_FLAGS += -Di386
  134. endif
  135. endif
  136. # SIMD must always be enabled, even in debug builds
  137. ifneq ($(NOSIMD),true)
  138. ifeq ($(DEBUG),true)
  139. ifeq ($(WASM),true)
  140. BASE_FLAGS += -msse -msse2 -msse3 -msimd128
  141. else ifeq ($(CPU_ARM32),true)
  142. BASE_FLAGS += -mfpu=neon-vfpv4 -mfloat-abi=hard
  143. else ifeq ($(CPU_I386_OR_X86_64),true)
  144. BASE_FLAGS += -msse -msse2 -mfpmath=sse
  145. endif
  146. endif
  147. endif
  148. BASE_FLAGS += -I$(abspath $(ROOT)/dpf/dgl/src/nanovg)
  149. BASE_FLAGS += -I$(abspath $(ROOT)/dpf/distrho)
  150. BASE_FLAGS += -I$(abspath $(ROOT)/src)
  151. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/include)
  152. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/include/dsp)
  153. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/filesystem/include)
  154. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/fuzzysearchdatabase/src)
  155. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/glfw/include)
  156. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/nanosvg/src)
  157. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/oui-blendish)
  158. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/pffft)
  159. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/tinyexpr)
  160. BUILD_C_FLAGS += -std=gnu11
  161. ifneq ($(MACOS),true)
  162. BUILD_CXX_FLAGS += -faligned-new -Wno-abi
  163. ifeq ($(MOD_BUILD),true)
  164. BUILD_CXX_FLAGS += -std=gnu++17
  165. endif
  166. endif
  167. endif
  168. # -----------------------------------------------------------------------------