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.

378 lines
11KB

  1. cmake_minimum_required(VERSION 3.15)
  2. project(Cardinal VERSION 22.05)
  3. add_subdirectory(JUCE)
  4. # Config
  5. set(CMAKE_C_VISIBILITY_PRESET hidden)
  6. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  7. # Define static libs
  8. add_library(dgl STATIC IMPORTED)
  9. set_property(TARGET dgl PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../dpf/build/libdgl-opengl.a")
  10. add_library(carla_host_plugin STATIC IMPORTED)
  11. set_property(TARGET carla_host_plugin PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/plugin/Release/carla-host-plugin.cpp.o")
  12. add_library(carla_engine_plugin STATIC IMPORTED)
  13. set_property(TARGET carla_engine_plugin PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/carla_engine_plugin.a")
  14. add_library(carla_plugin STATIC IMPORTED)
  15. set_property(TARGET carla_plugin PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/carla_plugin.a")
  16. add_library(native_plugins STATIC IMPORTED)
  17. set_property(TARGET native_plugins PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/native-plugins.a")
  18. add_library(audio_decoder STATIC IMPORTED)
  19. set_property(TARGET audio_decoder PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/audio_decoder.a")
  20. add_library(jackbridge STATIC IMPORTED)
  21. set_property(TARGET jackbridge PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/jackbridge.min.a")
  22. add_library(lilv STATIC IMPORTED)
  23. set_property(TARGET lilv PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/lilv.a")
  24. add_library(rtmempool STATIC IMPORTED)
  25. set_property(TARGET rtmempool PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/rtmempool.a")
  26. add_library(sfzero STATIC IMPORTED)
  27. set_property(TARGET sfzero PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/sfzero.a")
  28. add_library(water STATIC IMPORTED)
  29. set_property(TARGET water PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/water.a")
  30. add_library(zita_resampler STATIC IMPORTED)
  31. set_property(TARGET zita_resampler PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/zita-resampler.a")
  32. add_library(sCardinal STATIC IMPORTED)
  33. set_property(TARGET sCardinal PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/Cardinal.a")
  34. add_library(sCardinalFX STATIC IMPORTED)
  35. set_property(TARGET sCardinalFX PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/CardinalFX.a")
  36. add_library(sCardinalSynth STATIC IMPORTED)
  37. set_property(TARGET sCardinalSynth PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/CardinalSynth.a")
  38. add_library(sPlugins STATIC IMPORTED)
  39. set_property(TARGET sPlugins PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../plugins/plugins.a")
  40. add_library(sRack STATIC IMPORTED)
  41. set_property(TARGET sRack PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/rack.a")
  42. add_library(libaubio STATIC IMPORTED)
  43. set_property(TARGET libaubio PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../deps/aubio/libaubio.a")
  44. add_library(libarchive STATIC IMPORTED)
  45. if (WIN32)
  46. set_property(TARGET libarchive PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libarchive_static.a")
  47. else (WIN32)
  48. set_property(TARGET libarchive PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libarchive.a")
  49. endif (WIN32)
  50. add_library(libjansson STATIC IMPORTED)
  51. set_property(TARGET libjansson PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libjansson.a")
  52. add_library(libquickjs STATIC IMPORTED)
  53. set_property(TARGET libquickjs PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libquickjs.a")
  54. add_library(libsamplerate STATIC IMPORTED)
  55. set_property(TARGET libsamplerate PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libsamplerate.a")
  56. add_library(libspeexdsp STATIC IMPORTED)
  57. set_property(TARGET libspeexdsp PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libspeexdsp.a")
  58. add_library(libzstd STATIC IMPORTED)
  59. set_property(TARGET libzstd PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libzstd.a")
  60. # dependencies
  61. find_package(PkgConfig REQUIRED)
  62. pkg_check_modules(FFTW3F REQUIRED fftw3f)
  63. pkg_check_modules(LIBLO REQUIRED liblo)
  64. pkg_check_modules(SNDFILE REQUIRED sndfile)
  65. if (APPLE)
  66. set(EXTRA_LIBS "-lz")
  67. set(GL_LIBRARIES "-framework OpenGL")
  68. set(PLUGIN_FORMATS AU)
  69. else (APPLE)
  70. pkg_check_modules(DBUS REQUIRED dbus-1)
  71. pkg_check_modules(GL REQUIRED gl)
  72. pkg_check_modules(X11 REQUIRED x11)
  73. pkg_check_modules(XCURSOR REQUIRED xcursor)
  74. pkg_check_modules(XEXT REQUIRED xext)
  75. pkg_check_modules(XRANDR REQUIRED xrandr)
  76. set(EXTRA_LIBS "-lrt")
  77. set(STATIC_LIBS_START "-Wl,--whole-archive")
  78. set(STATIC_LIBS_END "-Wl,--no-whole-archive")
  79. set(PLUGIN_FORMATS Standalone VST3)
  80. endif (APPLE)
  81. # Main variant
  82. juce_add_plugin(Cardinal
  83. AU_MAIN_TYPE kAudioUnitType_MusicEffect
  84. COMPANY_COPYRIGHT "GPL-3.0-or-later"
  85. COMPANY_NAME "DISTRHO"
  86. COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal"
  87. DESCRIPTION "Virtual modular synthesizer plugin"
  88. EDITOR_WANTS_KEYBOARD_FOCUS FALSE
  89. FORMATS ${PLUGIN_FORMATS}
  90. IS_MIDI_EFFECT FALSE
  91. IS_SYNTH FALSE
  92. NEEDS_MIDI_INPUT TRUE
  93. NEEDS_MIDI_OUTPUT TRUE
  94. PLUGIN_CODE DcnM
  95. PLUGIN_MANUFACTURER_CODE Dstr
  96. PRODUCT_NAME "Cardinal")
  97. target_sources(Cardinal
  98. PRIVATE
  99. CardinalWrapper.cpp)
  100. target_include_directories(Cardinal
  101. PRIVATE
  102. ../dpf/distrho
  103. ../src/CardinalFX)
  104. target_compile_definitions(Cardinal
  105. PUBLIC
  106. JucePlugin_PreferredChannelConfigurations=8,8
  107. JUCE_CHECK_MEMORY_LEAKS=0
  108. JUCE_DISABLE_NATIVE_FILECHOOSERS=1
  109. JUCE_DISPLAY_SPLASH_SCREEN=0
  110. JUCE_MODAL_LOOPS_PERMITTED=0
  111. JUCE_USE_CURL=0
  112. JUCE_USE_FLAC=0
  113. JUCE_USE_OGGVORBIS=0
  114. JUCE_USE_XINERAMA=0
  115. JUCE_VST3_CAN_REPLACE_VST2=0
  116. JUCE_ALSA=1
  117. JUCE_DIRECTSOUND=0
  118. JUCE_JACK=1
  119. JUCE_WASAPI=0
  120. JUCE_WEB_BROWSER=0)
  121. target_link_libraries(Cardinal
  122. PRIVATE
  123. juce::juce_audio_utils
  124. ${STATIC_LIBS_START}
  125. sCardinal
  126. sPlugins
  127. sRack
  128. carla_host_plugin
  129. carla_engine_plugin
  130. carla_plugin
  131. native_plugins
  132. audio_decoder
  133. jackbridge
  134. lilv
  135. rtmempool
  136. sfzero
  137. water
  138. zita_resampler
  139. dgl
  140. libaubio
  141. libarchive
  142. libjansson
  143. libquickjs
  144. libsamplerate
  145. libspeexdsp
  146. libzstd
  147. ${STATIC_LIBS_END}
  148. ${GL_LIBRARIES}
  149. ${DBUS_LIBRARIES}
  150. -L${LIBLO_LIBRARY_DIRS}
  151. ${FFTW3F_LIBRARIES}
  152. ${LIBLO_LIBRARIES}
  153. ${SNDFILE_LIBRARIES}
  154. ${X11_LIBRARIES}
  155. ${XCURSOR_LIBRARIES}
  156. ${XEXT_LIBRARIES}
  157. ${XRANDR_LIBRARIES}
  158. ${EXTRA_LIBS}
  159. PUBLIC
  160. juce::juce_recommended_config_flags
  161. juce::juce_recommended_lto_flags
  162. juce::juce_recommended_warning_flags)
  163. # FX variant
  164. juce_add_plugin(CardinalFX
  165. AU_MAIN_TYPE kAudioUnitType_MusicEffect
  166. COMPANY_COPYRIGHT "GPL-3.0-or-later"
  167. COMPANY_NAME "DISTRHO"
  168. COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal"
  169. DESCRIPTION "Virtual modular synthesizer plugin"
  170. EDITOR_WANTS_KEYBOARD_FOCUS FALSE
  171. FORMATS ${PLUGIN_FORMATS}
  172. IS_MIDI_EFFECT FALSE
  173. IS_SYNTH FALSE
  174. NEEDS_MIDI_INPUT TRUE
  175. NEEDS_MIDI_OUTPUT TRUE
  176. PLUGIN_CODE DcnF
  177. PLUGIN_MANUFACTURER_CODE Dstr
  178. PRODUCT_NAME "CardinalFX")
  179. target_sources(CardinalFX
  180. PRIVATE
  181. CardinalWrapper.cpp)
  182. target_include_directories(CardinalFX
  183. PRIVATE
  184. ../dpf/distrho
  185. ../src/CardinalFX)
  186. target_compile_definitions(CardinalFX
  187. PUBLIC
  188. JucePlugin_PreferredChannelConfigurations=2,2
  189. JUCE_CHECK_MEMORY_LEAKS=0
  190. JUCE_DISABLE_NATIVE_FILECHOOSERS=1
  191. JUCE_DISPLAY_SPLASH_SCREEN=0
  192. JUCE_MODAL_LOOPS_PERMITTED=0
  193. JUCE_USE_CURL=0
  194. JUCE_USE_FLAC=0
  195. JUCE_USE_OGGVORBIS=0
  196. JUCE_USE_XINERAMA=0
  197. JUCE_VST3_CAN_REPLACE_VST2=0
  198. JUCE_ALSA=1
  199. JUCE_DIRECTSOUND=0
  200. JUCE_JACK=1
  201. JUCE_WASAPI=0
  202. JUCE_WEB_BROWSER=0)
  203. target_link_libraries(CardinalFX
  204. PRIVATE
  205. juce::juce_audio_utils
  206. ${STATIC_LIBS_START}
  207. sCardinalFX
  208. sPlugins
  209. sRack
  210. carla_host_plugin
  211. carla_engine_plugin
  212. carla_plugin
  213. native_plugins
  214. audio_decoder
  215. jackbridge
  216. lilv
  217. rtmempool
  218. sfzero
  219. water
  220. zita_resampler
  221. dgl
  222. libaubio
  223. libarchive
  224. libjansson
  225. libquickjs
  226. libsamplerate
  227. libspeexdsp
  228. libzstd
  229. ${STATIC_LIBS_END}
  230. ${GL_LIBRARIES}
  231. ${DBUS_LIBRARIES}
  232. -L${LIBLO_LIBRARY_DIRS}
  233. ${FFTW3F_LIBRARIES}
  234. ${LIBLO_LIBRARIES}
  235. ${SNDFILE_LIBRARIES}
  236. ${X11_LIBRARIES}
  237. ${XCURSOR_LIBRARIES}
  238. ${XEXT_LIBRARIES}
  239. ${XRANDR_LIBRARIES}
  240. ${EXTRA_LIBS}
  241. -lmagic
  242. PUBLIC
  243. juce::juce_recommended_config_flags
  244. juce::juce_recommended_lto_flags
  245. juce::juce_recommended_warning_flags)
  246. # Synth variant
  247. juce_add_plugin(CardinalSynth
  248. AU_MAIN_TYPE kAudioUnitType_MusicDevice
  249. COMPANY_COPYRIGHT "GPL-3.0-or-later"
  250. COMPANY_NAME "DISTRHO"
  251. COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal"
  252. DESCRIPTION "Virtual modular synthesizer plugin"
  253. EDITOR_WANTS_KEYBOARD_FOCUS FALSE
  254. FORMATS ${PLUGIN_FORMATS}
  255. IS_MIDI_EFFECT FALSE
  256. IS_SYNTH TRUE
  257. NEEDS_MIDI_INPUT TRUE
  258. NEEDS_MIDI_OUTPUT TRUE
  259. PLUGIN_CODE DcnS
  260. PLUGIN_MANUFACTURER_CODE Dstr
  261. PRODUCT_NAME "CardinalSynth")
  262. target_sources(CardinalSynth
  263. PRIVATE
  264. CardinalWrapper.cpp)
  265. target_include_directories(CardinalSynth
  266. PRIVATE
  267. ../dpf/distrho
  268. ../src/CardinalSynth)
  269. target_compile_definitions(CardinalSynth
  270. PUBLIC
  271. JucePlugin_PreferredChannelConfigurations=0,2
  272. JUCE_CHECK_MEMORY_LEAKS=0
  273. JUCE_DISABLE_NATIVE_FILECHOOSERS=1
  274. JUCE_DISPLAY_SPLASH_SCREEN=0
  275. JUCE_MODAL_LOOPS_PERMITTED=0
  276. JUCE_USE_CURL=0
  277. JUCE_USE_FLAC=0
  278. JUCE_USE_OGGVORBIS=0
  279. JUCE_USE_XINERAMA=0
  280. JUCE_VST3_CAN_REPLACE_VST2=0
  281. JUCE_ALSA=1
  282. JUCE_DIRECTSOUND=0
  283. JUCE_JACK=1
  284. JUCE_WASAPI=0
  285. JUCE_WEB_BROWSER=0)
  286. target_link_libraries(CardinalSynth
  287. PRIVATE
  288. juce::juce_audio_utils
  289. ${STATIC_LIBS_START}
  290. sCardinalSynth
  291. sPlugins
  292. sRack
  293. carla_host_plugin
  294. carla_engine_plugin
  295. carla_plugin
  296. native_plugins
  297. audio_decoder
  298. jackbridge
  299. lilv
  300. rtmempool
  301. sfzero
  302. water
  303. zita_resampler
  304. dgl
  305. libaubio
  306. libarchive
  307. libjansson
  308. libquickjs
  309. libsamplerate
  310. libspeexdsp
  311. libzstd
  312. ${STATIC_LIBS_END}
  313. ${GL_LIBRARIES}
  314. ${DBUS_LIBRARIES}
  315. -L${LIBLO_LIBRARY_DIRS}
  316. ${FFTW3F_LIBRARIES}
  317. ${LIBLO_LIBRARIES}
  318. ${SNDFILE_LIBRARIES}
  319. ${X11_LIBRARIES}
  320. ${XCURSOR_LIBRARIES}
  321. ${XEXT_LIBRARIES}
  322. ${XRANDR_LIBRARIES}
  323. ${EXTRA_LIBS}
  324. -lmagic
  325. PUBLIC
  326. juce::juce_recommended_config_flags
  327. juce::juce_recommended_lto_flags
  328. juce::juce_recommended_warning_flags)