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.

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