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.

279 lines
8.7KB

  1. cmake_minimum_required(VERSION 3.15)
  2. project(Cardinal VERSION 22.03)
  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(sCardinalFX STATIC IMPORTED)
  33. set_property(TARGET sCardinalFX PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/CardinalFX.a")
  34. add_library(sCardinalSynth STATIC IMPORTED)
  35. set_property(TARGET sCardinalSynth PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/CardinalSynth.a")
  36. add_library(sPlugins STATIC IMPORTED)
  37. set_property(TARGET sPlugins PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../plugins/plugins.a")
  38. add_library(sRack STATIC IMPORTED)
  39. set_property(TARGET sRack PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/rack.a")
  40. add_library(libarchive STATIC IMPORTED)
  41. if (WIN32)
  42. set_property(TARGET libarchive PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libarchive_static.a")
  43. else (WIN32)
  44. set_property(TARGET libarchive PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libarchive.a")
  45. endif (WIN32)
  46. add_library(libjansson STATIC IMPORTED)
  47. set_property(TARGET libjansson PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libjansson.a")
  48. add_library(libquickjs STATIC IMPORTED)
  49. set_property(TARGET libquickjs PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libquickjs.a")
  50. add_library(libsamplerate STATIC IMPORTED)
  51. set_property(TARGET libsamplerate PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libsamplerate.a")
  52. add_library(libspeexdsp STATIC IMPORTED)
  53. set_property(TARGET libspeexdsp PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libspeexdsp.a")
  54. add_library(libzstd STATIC IMPORTED)
  55. set_property(TARGET libzstd PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../src/Rack/dep/lib/libzstd.a")
  56. # dependencies
  57. find_package(PkgConfig REQUIRED)
  58. pkg_check_modules(LIBLO REQUIRED liblo)
  59. pkg_check_modules(SNDFILE REQUIRED sndfile)
  60. if (APPLE)
  61. set(EXTRA_LIBS "-lz")
  62. set(GL_LIBRARIES "-framework OpenGL")
  63. set(PLUGIN_FORMATS AU)
  64. else (APPLE)
  65. pkg_check_modules(DBUS REQUIRED dbus-1)
  66. pkg_check_modules(GL REQUIRED gl)
  67. pkg_check_modules(X11 REQUIRED x11)
  68. pkg_check_modules(XCURSOR REQUIRED xcursor)
  69. pkg_check_modules(XEXT REQUIRED xext)
  70. pkg_check_modules(XRANDR REQUIRED xrandr)
  71. set(EXTRA_LIBS "-lrt")
  72. set(STATIC_LIBS_START "-Wl,--whole-archive")
  73. set(STATIC_LIBS_END "-Wl,--no-whole-archive")
  74. set(PLUGIN_FORMATS Standalone VST3)
  75. endif (APPLE)
  76. # FX variant
  77. juce_add_plugin(CardinalFX
  78. AU_MAIN_TYPE kAudioUnitType_MusicEffect
  79. COMPANY_COPYRIGHT "GPL-3.0-or-later"
  80. COMPANY_NAME "DISTRHO"
  81. COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal"
  82. DESCRIPTION "Virtual modular synthesizer plugin"
  83. EDITOR_WANTS_KEYBOARD_FOCUS TRUE
  84. FORMATS ${PLUGIN_FORMATS}
  85. IS_MIDI_EFFECT FALSE
  86. IS_SYNTH FALSE
  87. NEEDS_MIDI_INPUT TRUE
  88. NEEDS_MIDI_OUTPUT TRUE
  89. PLUGIN_CODE DcnF
  90. PLUGIN_MANUFACTURER_CODE Dstr
  91. PRODUCT_NAME "CardinalFX")
  92. target_sources(CardinalFX
  93. PRIVATE
  94. CardinalWrapper.cpp)
  95. target_include_directories(CardinalFX
  96. PRIVATE
  97. ../dpf/distrho
  98. ../src/CardinalFX)
  99. target_compile_definitions(CardinalFX
  100. PUBLIC
  101. JucePlugin_PreferredChannelConfigurations=2,2
  102. JUCE_CHECK_MEMORY_LEAKS=0
  103. JUCE_DISABLE_NATIVE_FILECHOOSERS=0
  104. JUCE_DISPLAY_SPLASH_SCREEN=0
  105. JUCE_MODAL_LOOPS_PERMITTED=0
  106. JUCE_USE_CURL=0
  107. JUCE_USE_FLAC=0
  108. JUCE_USE_OGGVORBIS=0
  109. JUCE_USE_XINERAMA=0
  110. JUCE_VST3_CAN_REPLACE_VST2=0
  111. JUCE_ALSA=1
  112. JUCE_DIRECTSOUND=0
  113. JUCE_JACK=1
  114. JUCE_WASAPI=0
  115. JUCE_WEB_BROWSER=0)
  116. target_link_libraries(CardinalFX
  117. PRIVATE
  118. juce::juce_audio_utils
  119. ${STATIC_LIBS_START}
  120. sCardinalFX
  121. sPlugins
  122. sRack
  123. carla_host_plugin
  124. carla_engine_plugin
  125. carla_plugin
  126. native_plugins
  127. audio_decoder
  128. jackbridge
  129. lilv
  130. rtmempool
  131. sfzero
  132. water
  133. zita_resampler
  134. dgl
  135. libarchive
  136. libjansson
  137. libquickjs
  138. libsamplerate
  139. libspeexdsp
  140. libzstd
  141. ${STATIC_LIBS_END}
  142. ${GL_LIBRARIES}
  143. ${DBUS_LIBRARIES}
  144. -L${LIBLO_LIBRARY_DIRS}
  145. ${LIBLO_LIBRARIES}
  146. ${SNDFILE_LIBRARIES}
  147. ${X11_LIBRARIES}
  148. ${XCURSOR_LIBRARIES}
  149. ${XEXT_LIBRARIES}
  150. ${XRANDR_LIBRARIES}
  151. ${EXTRA_LIBS}
  152. -lmagic
  153. PUBLIC
  154. juce::juce_recommended_config_flags
  155. juce::juce_recommended_lto_flags
  156. juce::juce_recommended_warning_flags)
  157. # Synth variant
  158. juce_add_plugin(CardinalSynth
  159. AU_MAIN_TYPE kAudioUnitType_MusicDevice
  160. COMPANY_COPYRIGHT "GPL-3.0-or-later"
  161. COMPANY_NAME "DISTRHO"
  162. COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal"
  163. DESCRIPTION "Virtual modular synthesizer plugin"
  164. EDITOR_WANTS_KEYBOARD_FOCUS TRUE
  165. FORMATS Standalone VST3 AU
  166. IS_MIDI_EFFECT FALSE
  167. IS_SYNTH TRUE
  168. NEEDS_MIDI_INPUT TRUE
  169. NEEDS_MIDI_OUTPUT TRUE
  170. PLUGIN_CODE DcnS
  171. PLUGIN_MANUFACTURER_CODE Dstr
  172. PRODUCT_NAME "CardinalSynth")
  173. target_sources(CardinalSynth
  174. PRIVATE
  175. CardinalWrapper.cpp)
  176. target_include_directories(CardinalSynth
  177. PRIVATE
  178. ../dpf/distrho
  179. ../src/CardinalSynth)
  180. target_compile_definitions(CardinalSynth
  181. PUBLIC
  182. JucePlugin_PreferredChannelConfigurations=0,2
  183. JUCE_CHECK_MEMORY_LEAKS=0
  184. JUCE_DISABLE_NATIVE_FILECHOOSERS=0
  185. JUCE_DISPLAY_SPLASH_SCREEN=0
  186. JUCE_MODAL_LOOPS_PERMITTED=0
  187. JUCE_USE_CURL=0
  188. JUCE_USE_FLAC=0
  189. JUCE_USE_OGGVORBIS=0
  190. JUCE_USE_XINERAMA=0
  191. JUCE_VST3_CAN_REPLACE_VST2=0
  192. JUCE_ALSA=1
  193. JUCE_DIRECTSOUND=0
  194. JUCE_JACK=1
  195. JUCE_WASAPI=0
  196. JUCE_WEB_BROWSER=0)
  197. target_link_libraries(CardinalSynth
  198. PRIVATE
  199. juce::juce_audio_utils
  200. ${STATIC_LIBS_START}
  201. sCardinalSynth
  202. sPlugins
  203. sRack
  204. carla_host_plugin
  205. carla_engine_plugin
  206. carla_plugin
  207. native_plugins
  208. audio_decoder
  209. jackbridge
  210. lilv
  211. rtmempool
  212. sfzero
  213. water
  214. zita_resampler
  215. dgl
  216. libarchive
  217. libjansson
  218. libquickjs
  219. libsamplerate
  220. libspeexdsp
  221. libzstd
  222. ${STATIC_LIBS_END}
  223. ${GL_LIBRARIES}
  224. ${DBUS_LIBRARIES}
  225. -L${LIBLO_LIBRARY_DIRS}
  226. ${LIBLO_LIBRARIES}
  227. ${SNDFILE_LIBRARIES}
  228. ${X11_LIBRARIES}
  229. ${XCURSOR_LIBRARIES}
  230. ${XEXT_LIBRARIES}
  231. ${XRANDR_LIBRARIES}
  232. ${EXTRA_LIBS}
  233. -lmagic
  234. PUBLIC
  235. juce::juce_recommended_config_flags
  236. juce::juce_recommended_lto_flags
  237. juce::juce_recommended_warning_flags)