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.

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