Audio plugin host https://kx.studio/carla
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.

851 lines
24KB

  1. cmake_minimum_required(VERSION 3.15)
  2. project(carla)
  3. set(CMAKE_POLICY_DEFAULT_CMP0025 NEW)
  4. set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
  5. set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
  6. set(CMAKE_C_STANDARD 11)
  7. set(CMAKE_CXX_STANDARD 11)
  8. set(CMAKE_C_VISIBILITY_PRESET hidden)
  9. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  10. set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
  11. set_property(GLOBAL PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
  12. #######################################################################################################################
  13. # build options
  14. set(CARLA_USE_JACK TRUE CACHE BOOL "Enable JACK")
  15. set(CARLA_USE_OSC TRUE CACHE BOOL "Enable OSC")
  16. #######################################################################################################################
  17. # required dependencies
  18. find_package(Threads REQUIRED)
  19. if(NOT (APPLE OR HAIKU OR WIN32))
  20. set(CARLA_LIBDL dl)
  21. set(CARLA_LIBM m)
  22. set(CARLA_LIBRT rt)
  23. endif()
  24. #######################################################################################################################
  25. # optional dependencies
  26. find_package(PkgConfig)
  27. # homebrew does not support universal binaries, disable external deps if it is in use
  28. if(APPLE)
  29. find_program(HOMEBREW brew)
  30. if (HOMEBREW)
  31. set(PKGCONFIG_FOUND FALSE)
  32. mark_as_advanced(PKGCONFIG_FOUND)
  33. endif()
  34. endif()
  35. if(PKGCONFIG_FOUND)
  36. pkg_check_modules(FLUIDSYNTH IMPORTED_TARGET fluidsynth)
  37. pkg_check_modules(SNDFILE IMPORTED_TARGET sndfile)
  38. else()
  39. set(FLUIDSYNTH_FOUND FALSE)
  40. set(LIBLO_FOUND FALSE)
  41. set(SNDFILE_FOUND FALSE)
  42. endif()
  43. if(PKGCONFIG_FOUND AND CARLA_USE_OSC)
  44. pkg_check_modules(LIBLO IMPORTED_TARGET liblo)
  45. else()
  46. set(LIBLO_FOUND FALSE)
  47. endif()
  48. if(PKGCONFIG_FOUND AND NOT WIN32)
  49. pkg_check_modules(LIBMAGIC IMPORTED_TARGET libmagic)
  50. else()
  51. set(LIBMAGIC_FOUND FALSE)
  52. endif()
  53. if(PKGCONFIG_FOUND AND NOT (APPLE OR WIN32))
  54. pkg_check_modules(X11 IMPORTED_TARGET x11)
  55. else()
  56. set(X11_FOUND FALSE)
  57. endif()
  58. add_library(carla-none INTERFACE)
  59. if(NOT FLUIDSYNTH_FOUND)
  60. add_library(PkgConfig::FLUIDSYNTH ALIAS carla-none)
  61. endif()
  62. if(NOT LIBLO_FOUND)
  63. add_library(PkgConfig::LIBLO ALIAS carla-none)
  64. endif()
  65. if(NOT LIBMAGIC_FOUND)
  66. add_library(PkgConfig::LIBMAGIC ALIAS carla-none)
  67. endif()
  68. if(NOT SNDFILE_FOUND)
  69. add_library(PkgConfig::SNDFILE ALIAS carla-none)
  70. endif()
  71. if(NOT X11_FOUND)
  72. add_library(PkgConfig::X11 ALIAS carla-none)
  73. endif()
  74. #######################################################################################################################
  75. # utilities
  76. function(set_common_target_properties TARGET)
  77. target_compile_definitions(${TARGET}
  78. PRIVATE
  79. BUILDING_CARLA
  80. HAVE_YSFX
  81. $<$<BOOL:${CARLA_USE_JACK}>:HAVE_JACK>
  82. $<$<BOOL:${FLUIDSYNTH_FOUND}>:HAVE_FLUIDSYNTH>
  83. $<$<BOOL:${LIBLO_FOUND}>:HAVE_LIBLO>
  84. $<$<BOOL:${LIBMAGIC_FOUND}>:HAVE_LIBMAGIC>
  85. $<$<BOOL:${SNDFILE_FOUND}>:HAVE_SNDFILE>
  86. $<$<BOOL:${X11_FOUND}>:HAVE_X11>
  87. )
  88. target_compile_options(${TARGET}
  89. PRIVATE
  90. $<$<BOOL:${MSVC}>:/wd4244 /wd4267 /wd4273>
  91. )
  92. if(CMAKE_C_COMPILER_ID MATCHES "GNU")
  93. target_link_options(${TARGET}
  94. PRIVATE
  95. -Wl,--no-undefined
  96. )
  97. endif()
  98. set_property(TARGET ${TARGET} PROPERTY POSITION_INDEPENDENT_CODE ON)
  99. if(APPLE)
  100. set_property(TARGET ${TARGET} PROPERTY APPEND OSX_ARCHITECTURES arm64)
  101. set_property(TARGET ${TARGET} PROPERTY APPEND OSX_ARCHITECTURES x86_64)
  102. endif()
  103. endfunction()
  104. #######################################################################################################################
  105. # audio_decoder
  106. add_library(carla-audio-decoder STATIC)
  107. add_library(carla::audio-decoder ALIAS carla-audio-decoder)
  108. set_common_target_properties(carla-audio-decoder)
  109. target_include_directories(carla-audio-decoder
  110. PRIVATE
  111. ../source/includes
  112. ../source/modules
  113. ../source/utils
  114. )
  115. target_link_libraries(carla-audio-decoder
  116. PRIVATE
  117. PkgConfig::SNDFILE
  118. )
  119. target_sources(carla-audio-decoder
  120. PRIVATE
  121. ../source/modules/audio_decoder/ad_dr_mp3.c
  122. ../source/modules/audio_decoder/ad_ffmpeg.c
  123. ../source/modules/audio_decoder/ad_minimp3.c
  124. ../source/modules/audio_decoder/ad_plugin.c
  125. ../source/modules/audio_decoder/ad_soundfile.c
  126. )
  127. #######################################################################################################################
  128. # jackbridge
  129. add_library(carla-jackbridge STATIC)
  130. add_library(carla::jackbridge ALIAS carla-jackbridge)
  131. set_common_target_properties(carla-jackbridge)
  132. target_include_directories(carla-jackbridge
  133. PRIVATE
  134. ../source/includes
  135. ../source/utils
  136. )
  137. target_link_libraries(carla-jackbridge
  138. PRIVATE
  139. ${CARLA_LIBDL}
  140. ${CARLA_LIBRT}
  141. )
  142. target_sources(carla-jackbridge
  143. PRIVATE
  144. ../source/jackbridge/JackBridge1.cpp
  145. ../source/jackbridge/JackBridge2.cpp
  146. )
  147. #######################################################################################################################
  148. # lilv
  149. # serd
  150. add_library(carla-lilv_serd STATIC)
  151. set_common_target_properties(carla-lilv_serd)
  152. target_compile_options(carla-lilv_serd
  153. PRIVATE
  154. $<$<BOOL:${MSVC}>:/wd4005 /wd4090 /wd4133>
  155. $<$<C_COMPILER_ID:GNU>:-Wno-format-overflow>
  156. $<$<C_COMPILER_ID:GNU>:-Wno-implicit-fallthrough>
  157. )
  158. target_include_directories(carla-lilv_serd
  159. PRIVATE
  160. ../source/includes
  161. ../source/modules/lilv/config
  162. ../source/modules/lilv/serd-0.24.0
  163. )
  164. target_sources(carla-lilv_serd
  165. PRIVATE
  166. ../source/modules/lilv/serd.c
  167. )
  168. # sord
  169. add_library(carla-lilv_sord STATIC)
  170. set_common_target_properties(carla-lilv_sord)
  171. target_compile_options(carla-lilv_sord
  172. PRIVATE
  173. $<$<BOOL:${MSVC}>:/wd4005 /wd4090 /wd4133>
  174. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  175. # workaround compiler bug, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109585
  176. $<$<C_COMPILER_ID:GNU>:-fno-strict-aliasing>
  177. )
  178. target_include_directories(carla-lilv_sord
  179. PRIVATE
  180. ../source/includes
  181. ../source/modules/lilv/config
  182. ../source/modules/lilv/sord-0.16.0
  183. ../source/modules/lilv/sord-0.16.0/src
  184. )
  185. target_link_libraries(carla-lilv_sord
  186. PRIVATE
  187. carla-lilv_serd
  188. )
  189. target_sources(carla-lilv_sord
  190. PRIVATE
  191. ../source/modules/lilv/sord.c
  192. )
  193. # sratom
  194. add_library(carla-lilv_sratom STATIC)
  195. set_common_target_properties(carla-lilv_sratom)
  196. target_compile_options(carla-lilv_sratom
  197. PRIVATE
  198. $<$<BOOL:${MSVC}>:/wd4005 /wd4090 /wd4133>
  199. )
  200. target_include_directories(carla-lilv_sratom
  201. PRIVATE
  202. ../source/includes
  203. ../source/modules/lilv/config
  204. ../source/modules/lilv/sratom-0.6.0
  205. )
  206. target_link_libraries(carla-lilv_sratom
  207. PRIVATE
  208. carla-lilv_serd
  209. )
  210. target_sources(carla-lilv_sratom
  211. PRIVATE
  212. ../source/modules/lilv/sratom.c
  213. )
  214. # lilv
  215. add_library(carla-lilv_lilv STATIC)
  216. set_common_target_properties(carla-lilv_lilv)
  217. target_compile_options(carla-lilv_lilv
  218. PRIVATE
  219. $<$<BOOL:${MSVC}>:/wd4005 /wd4090 /wd4133>
  220. $<$<C_COMPILER_ID:AppleClang>:-Wno-incompatible-pointer-types-discards-qualifiers>
  221. $<$<C_COMPILER_ID:GNU>:-Wno-deprecated-declarations>
  222. $<$<C_COMPILER_ID:GNU>:-Wno-discarded-qualifiers>
  223. $<$<C_COMPILER_ID:GNU>:-Wno-format-overflow>
  224. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  225. )
  226. target_include_directories(carla-lilv_lilv
  227. PRIVATE
  228. ../source/includes
  229. ../source/modules/lilv/config
  230. ../source/modules/lilv/lilv-0.24.0
  231. ../source/modules/lilv/lilv-0.24.0/src
  232. )
  233. target_link_libraries(carla-lilv_lilv
  234. PRIVATE
  235. carla-lilv_serd
  236. carla-lilv_sord
  237. carla-lilv_sratom
  238. )
  239. target_sources(carla-lilv_lilv
  240. PRIVATE
  241. ../source/modules/lilv/lilv.c
  242. )
  243. # combined target
  244. add_library(carla-lilv INTERFACE)
  245. add_library(carla::lilv ALIAS carla-lilv)
  246. target_link_libraries(carla-lilv
  247. INTERFACE
  248. carla-lilv_serd
  249. carla-lilv_sord
  250. carla-lilv_sratom
  251. carla-lilv_lilv
  252. ${CARLA_LIBDL}
  253. ${CARLA_LIBM}
  254. ${CARLA_LIBRT}
  255. )
  256. #######################################################################################################################
  257. # native-plugins
  258. add_library(carla-native-plugins STATIC)
  259. add_library(carla::native-plugins ALIAS carla-native-plugins)
  260. set_common_target_properties(carla-native-plugins)
  261. target_include_directories(carla-native-plugins
  262. PRIVATE
  263. ../source/includes
  264. ../source/modules
  265. ../source/utils
  266. )
  267. target_sources(carla-native-plugins
  268. PRIVATE
  269. ../source/native-plugins/_all.c
  270. ../source/native-plugins/_data.cpp
  271. ../source/native-plugins/audio-gain.c
  272. ../source/native-plugins/bypass.c
  273. ../source/native-plugins/cv-to-audio.c
  274. ../source/native-plugins/lfo.c
  275. ../source/native-plugins/midi-channel-filter.c
  276. ../source/native-plugins/midi-channel-ab.c
  277. ../source/native-plugins/midi-channelize.c
  278. ../source/native-plugins/midi-gain.c
  279. ../source/native-plugins/midi-join.c
  280. ../source/native-plugins/midi-split.c
  281. ../source/native-plugins/midi-to-cv.c
  282. ../source/native-plugins/midi-through.c
  283. ../source/native-plugins/midi-transpose.c
  284. ../source/native-plugins/audio-file.cpp
  285. ../source/native-plugins/midi-file.cpp
  286. # these rely on PyQt, skip them
  287. # ../source/native-plugins/bigmeter.cpp
  288. # ../source/native-plugins/midi-pattern.cpp
  289. # ../source/native-plugins/notes.cpp
  290. # ../source/native-plugins/xycontroller.cpp
  291. )
  292. #######################################################################################################################
  293. # rtmempool
  294. add_library(carla-rtmempool STATIC)
  295. add_library(carla::rtmempool ALIAS carla-rtmempool)
  296. set_common_target_properties(carla-rtmempool)
  297. target_include_directories(carla-rtmempool
  298. PRIVATE
  299. ../source/includes
  300. ../source/utils
  301. )
  302. target_link_libraries(carla-rtmempool
  303. PRIVATE
  304. ${CARLA_LIBDL}
  305. ${CARLA_LIBRT}
  306. )
  307. target_sources(carla-rtmempool
  308. PRIVATE
  309. ../source/modules/rtmempool/rtmempool.c
  310. )
  311. #######################################################################################################################
  312. # sfzero
  313. add_library(carla-sfzero STATIC)
  314. add_library(carla::sfzero ALIAS carla-sfzero)
  315. set_common_target_properties(carla-sfzero)
  316. target_include_directories(carla-sfzero
  317. PRIVATE
  318. ../source/includes
  319. ../source/modules
  320. ../source/utils
  321. )
  322. target_link_libraries(carla-sfzero
  323. PRIVATE
  324. carla-audio-decoder
  325. )
  326. target_sources(carla-sfzero
  327. PRIVATE
  328. ../source/modules/sfzero/SFZero.cpp
  329. )
  330. #######################################################################################################################
  331. # water
  332. add_library(carla-water STATIC)
  333. add_library(carla::water ALIAS carla-water)
  334. set_common_target_properties(carla-water)
  335. target_compile_options(carla-water
  336. PRIVATE
  337. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-deprecated-copy>
  338. )
  339. target_include_directories(carla-water
  340. PRIVATE
  341. ../source/includes
  342. ../source/utils
  343. )
  344. target_link_libraries(carla-water
  345. PRIVATE
  346. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
  347. $<$<BOOL:${WIN32}>:comdlg32>
  348. $<$<BOOL:${WIN32}>:ole32>
  349. $<$<BOOL:${WIN32}>:winmm>
  350. ${CARLA_LIBDL}
  351. ${CARLA_LIBRT}
  352. )
  353. target_sources(carla-water
  354. PRIVATE
  355. ../source/modules/water/water.cpp
  356. )
  357. #######################################################################################################################
  358. # water-files
  359. add_library(carla-water-files STATIC)
  360. add_library(carla::water-files ALIAS carla-water-files)
  361. set_common_target_properties(carla-water-files)
  362. target_compile_options(carla-water-files
  363. PRIVATE
  364. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-deprecated-copy>
  365. )
  366. target_include_directories(carla-water-files
  367. PRIVATE
  368. ../source/includes
  369. ../source/utils
  370. )
  371. target_link_libraries(carla-water-files
  372. PRIVATE
  373. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
  374. $<$<BOOL:${WIN32}>:ole32>
  375. $<$<BOOL:${WIN32}>:winmm>
  376. ${CARLA_LIBDL}
  377. )
  378. target_sources(carla-water-files
  379. PRIVATE
  380. ../source/modules/water/water.files.cpp
  381. )
  382. #######################################################################################################################
  383. # ysfx
  384. add_library(carla-ysfx STATIC)
  385. add_library(carla::ysfx ALIAS carla-ysfx)
  386. set_common_target_properties(carla-ysfx)
  387. # YSFX_FTS_LACKS_LFS_SUPPORT
  388. target_compile_definitions(carla-ysfx
  389. PRIVATE
  390. EEL_TARGET_PORTABLE
  391. EELSCRIPT_NO_NET
  392. EELSCRIPT_NO_LICE
  393. NSEEL_ATOF=ysfx_wdl_atof
  394. WDL_FFT_REALSIZE=8
  395. WDL_LINEPARSE_ATOF=ysfx_wdl_atof
  396. WDL_WIN32_UTF8_NO_UI_IMPL
  397. YSFX_API=
  398. YSFX_NO_GFX
  399. YSFX_NO_STANDARD_MUTEX
  400. $<$<BOOL:${WIN32}>:NOMINMAX>
  401. $<$<NOT:$<BOOL:${MINGW}>>:_FILE_OFFSET_BITS=64>
  402. )
  403. # NOTE ugly -U /U due to cmake not supporting `target_remove_definitions`
  404. # see https://gitlab.kitware.com/cmake/cmake/-/issues/19796
  405. target_compile_options(carla-ysfx
  406. PRIVATE
  407. $<$<BOOL:${MINGW}>:-UUNICODE>
  408. $<$<BOOL:${MINGW}>:-U_UNICODE>
  409. $<$<BOOL:${MSVC}>:/wd4297>
  410. $<$<BOOL:${MSVC}>:/UUNICODE>
  411. $<$<BOOL:${MSVC}>:/U_UNICODE>
  412. $<$<C_COMPILER_ID:GNU>:-Wno-extra>
  413. $<$<C_COMPILER_ID:GNU>:-Wno-ignored-attributes>
  414. $<$<C_COMPILER_ID:GNU>:-Wno-unused-function>
  415. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-fsigned-char>
  416. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-sign-compare>
  417. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  418. $<$<AND:$<COMPILE_LANGUAGE:C>,$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>>:-Wno-missing-field-initializers>
  419. $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:GNU>>:-Wno-deprecated-copy>
  420. )
  421. target_include_directories(carla-ysfx
  422. PRIVATE
  423. ../source/modules/ysfx/include
  424. ../source/modules/ysfx/sources
  425. ../source/modules/ysfx/thirdparty/dr_libs
  426. ../source/modules/ysfx/thirdparty/stb
  427. ../source/modules/ysfx/thirdparty/WDL/source
  428. )
  429. target_link_libraries(carla-ysfx
  430. PRIVATE
  431. )
  432. target_sources(carla-ysfx
  433. PRIVATE
  434. ../source/modules/ysfx/sources/ysfx.cpp
  435. ../source/modules/ysfx/sources/ysfx_api_eel.cpp
  436. ../source/modules/ysfx/sources/ysfx_api_file.cpp
  437. ../source/modules/ysfx/sources/ysfx_api_gfx.cpp
  438. ../source/modules/ysfx/sources/ysfx_api_reaper.cpp
  439. ../source/modules/ysfx/sources/ysfx_audio_flac.cpp
  440. ../source/modules/ysfx/sources/ysfx_audio_wav.cpp
  441. ../source/modules/ysfx/sources/ysfx_config.cpp
  442. ../source/modules/ysfx/sources/ysfx_eel_utils.cpp
  443. ../source/modules/ysfx/sources/ysfx_midi.cpp
  444. ../source/modules/ysfx/sources/ysfx_parse.cpp
  445. ../source/modules/ysfx/sources/ysfx_reader.cpp
  446. ../source/modules/ysfx/sources/ysfx_utils.cpp
  447. ../source/modules/ysfx/sources/ysfx_utils_fts.cpp
  448. ../source/modules/ysfx/sources/eel2-gas/sources/asm-nseel-x64-sse.S
  449. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-caltab.c
  450. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-cfunc.c
  451. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-compiler.c
  452. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-eval.c
  453. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-lextab.c
  454. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-ram.c
  455. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-yylex.c
  456. ../source/modules/ysfx/thirdparty/WDL/source/WDL/fft.c
  457. $<$<BOOL:${WIN32}>:../source/modules/ysfx/thirdparty/WDL/source/WDL/win32_utf8.c>
  458. )
  459. #######################################################################################################################
  460. # zita-resampler
  461. add_library(carla-zita-resampler STATIC)
  462. add_library(carla::zita-resampler ALIAS carla-zita-resampler)
  463. set_common_target_properties(carla-zita-resampler)
  464. target_include_directories(carla-zita-resampler
  465. PRIVATE
  466. ../source/includes
  467. )
  468. target_sources(carla-zita-resampler
  469. PRIVATE
  470. ../source/modules/zita-resampler/cresampler.cc
  471. ../source/modules/zita-resampler/resampler-table.cc
  472. ../source/modules/zita-resampler/resampler.cc
  473. ../source/modules/zita-resampler/vresampler.cc
  474. )
  475. #######################################################################################################################
  476. # carla bridge
  477. add_executable(carla-bridge-native)
  478. set_common_target_properties(carla-bridge-native)
  479. target_compile_definitions(carla-bridge-native
  480. PRIVATE
  481. BUILD_BRIDGE
  482. CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
  483. )
  484. # FIXME
  485. target_compile_options(carla-bridge-native
  486. PRIVATE
  487. $<$<C_COMPILER_ID:AppleClang>:-Wno-unused-but-set-variable>
  488. $<$<C_COMPILER_ID:GNU>:-Wno-format-truncation>
  489. $<$<C_COMPILER_ID:GNU>:-Wno-stringop-overflow>
  490. $<$<C_COMPILER_ID:GNU>:-Wno-unused-parameter>
  491. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  492. )
  493. target_include_directories(carla-bridge-native
  494. PRIVATE
  495. ../source
  496. ../source/backend
  497. ../source/backend/engine
  498. ../source/backend/plugin
  499. ../source/includes
  500. ../source/modules
  501. ../source/utils
  502. )
  503. target_link_libraries(carla-bridge-native
  504. PRIVATE
  505. carla-audio-decoder
  506. carla-jackbridge
  507. carla-lilv
  508. carla-native-plugins
  509. carla-rtmempool
  510. carla-sfzero
  511. carla-water
  512. carla-ysfx
  513. carla-zita-resampler
  514. PkgConfig::FLUIDSYNTH
  515. PkgConfig::LIBLO
  516. PkgConfig::LIBMAGIC
  517. PkgConfig::X11
  518. ${CMAKE_THREAD_LIBS_INIT}
  519. )
  520. target_sources(carla-bridge-native
  521. PRIVATE
  522. ../source/bridges-plugin/CarlaBridgePlugin.cpp
  523. ../source/backend/CarlaStandalone.cpp
  524. ../source/backend/engine/CarlaEngine.cpp
  525. ../source/backend/engine/CarlaEngineBridge.cpp
  526. ../source/backend/engine/CarlaEngineClient.cpp
  527. ../source/backend/engine/CarlaEngineDummy.cpp
  528. ../source/backend/engine/CarlaEngineData.cpp
  529. ../source/backend/engine/CarlaEngineGraph.cpp
  530. ../source/backend/engine/CarlaEngineInternal.cpp
  531. ../source/backend/engine/CarlaEnginePorts.cpp
  532. ../source/backend/engine/CarlaEngineRunner.cpp
  533. ../source/backend/plugin/CarlaPlugin.cpp
  534. ../source/backend/plugin/CarlaPluginBridge.cpp
  535. ../source/backend/plugin/CarlaPluginInternal.cpp
  536. ../source/backend/plugin/CarlaPluginAU.cpp
  537. ../source/backend/plugin/CarlaPluginCLAP.cpp
  538. ../source/backend/plugin/CarlaPluginFluidSynth.cpp
  539. ../source/backend/plugin/CarlaPluginJuce.cpp
  540. ../source/backend/plugin/CarlaPluginJSFX.cpp
  541. ../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
  542. ../source/backend/plugin/CarlaPluginLV2.cpp
  543. ../source/backend/plugin/CarlaPluginNative.cpp
  544. ../source/backend/plugin/CarlaPluginSFZero.cpp
  545. ../source/backend/plugin/CarlaPluginVST2.cpp
  546. ../source/backend/plugin/CarlaPluginVST3.cpp
  547. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/engine/CarlaEngineJack.cpp>
  548. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
  549. )
  550. #######################################################################################################################
  551. # carla discovery
  552. add_executable(carla-discovery-native)
  553. set_common_target_properties(carla-discovery-native)
  554. target_include_directories(carla-discovery-native
  555. PRIVATE
  556. ../source/backend
  557. ../source/includes
  558. ../source/modules
  559. ../source/utils
  560. )
  561. target_link_libraries(carla-discovery-native
  562. PRIVATE
  563. carla-lilv
  564. carla-water-files
  565. carla-ysfx
  566. PkgConfig::FLUIDSYNTH
  567. ${CMAKE_THREAD_LIBS_INIT}
  568. )
  569. target_sources(carla-discovery-native
  570. PRIVATE
  571. ../source/discovery/carla-discovery.cpp
  572. )
  573. #######################################################################################################################
  574. # carla standalone
  575. add_library(carla-standalone SHARED)
  576. add_library(carla::standalone ALIAS carla-standalone)
  577. set_common_target_properties(carla-standalone)
  578. set_target_properties(carla-standalone
  579. PROPERTIES
  580. OUTPUT_NAME carla_standalone2
  581. )
  582. target_compile_definitions(carla-standalone
  583. PRIVATE
  584. CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
  585. )
  586. # FIXME
  587. target_compile_options(carla-standalone
  588. PRIVATE
  589. $<$<C_COMPILER_ID:AppleClang>:-Wno-unused-but-set-variable>
  590. $<$<C_COMPILER_ID:GNU>:-Wno-format-truncation>
  591. $<$<C_COMPILER_ID:GNU>:-Wno-stringop-overflow>
  592. $<$<C_COMPILER_ID:GNU>:-Wno-error=cpp>
  593. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  594. )
  595. target_include_directories(carla-standalone
  596. PRIVATE
  597. ../source
  598. ../source/backend
  599. ../source/includes
  600. ../source/modules
  601. ../source/utils
  602. )
  603. target_link_libraries(carla-standalone
  604. PRIVATE
  605. carla-jackbridge
  606. carla-lilv
  607. carla-native-plugins
  608. carla-rtmempool
  609. carla-sfzero
  610. carla-water
  611. carla-ysfx
  612. carla-zita-resampler
  613. PkgConfig::FLUIDSYNTH
  614. PkgConfig::LIBLO
  615. PkgConfig::LIBMAGIC
  616. PkgConfig::X11
  617. ${CMAKE_THREAD_LIBS_INIT}
  618. )
  619. target_sources(carla-standalone
  620. PRIVATE
  621. ../source/backend/CarlaStandalone.cpp
  622. ../source/backend/CarlaStandaloneNSM.cpp
  623. ../source/backend/engine/CarlaEngine.cpp
  624. ../source/backend/engine/CarlaEngineClient.cpp
  625. ../source/backend/engine/CarlaEngineDummy.cpp
  626. ../source/backend/engine/CarlaEngineData.cpp
  627. ../source/backend/engine/CarlaEngineGraph.cpp
  628. ../source/backend/engine/CarlaEngineInternal.cpp
  629. ../source/backend/engine/CarlaEngineNative.cpp
  630. ../source/backend/engine/CarlaEngineOsc.cpp
  631. ../source/backend/engine/CarlaEngineOscHandlers.cpp
  632. ../source/backend/engine/CarlaEngineOscSend.cpp
  633. ../source/backend/engine/CarlaEnginePorts.cpp
  634. ../source/backend/engine/CarlaEngineRunner.cpp
  635. ../source/backend/plugin/CarlaPlugin.cpp
  636. ../source/backend/plugin/CarlaPluginBridge.cpp
  637. ../source/backend/plugin/CarlaPluginInternal.cpp
  638. ../source/backend/plugin/CarlaPluginAU.cpp
  639. ../source/backend/plugin/CarlaPluginCLAP.cpp
  640. ../source/backend/plugin/CarlaPluginFluidSynth.cpp
  641. ../source/backend/plugin/CarlaPluginJuce.cpp
  642. ../source/backend/plugin/CarlaPluginJSFX.cpp
  643. ../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
  644. ../source/backend/plugin/CarlaPluginLV2.cpp
  645. ../source/backend/plugin/CarlaPluginNative.cpp
  646. ../source/backend/plugin/CarlaPluginSFZero.cpp
  647. ../source/backend/plugin/CarlaPluginVST2.cpp
  648. ../source/backend/plugin/CarlaPluginVST3.cpp
  649. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/engine/CarlaEngineJack.cpp>
  650. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
  651. )
  652. #######################################################################################################################
  653. # carla utils
  654. add_library(carla-utils SHARED)
  655. add_library(carla::utils ALIAS carla-utils)
  656. set_common_target_properties(carla-utils)
  657. set_target_properties(carla-standalone
  658. PROPERTIES
  659. OUTPUT_NAME carla_utils
  660. )
  661. target_include_directories(carla-utils
  662. PRIVATE
  663. ../source
  664. ../source/backend
  665. ../source/includes
  666. ../source/modules
  667. ../source/utils
  668. )
  669. target_link_libraries(carla-utils
  670. PRIVATE
  671. carla-jackbridge
  672. carla-lilv
  673. carla-water-files
  674. carla-ysfx
  675. PkgConfig::FLUIDSYNTH
  676. PkgConfig::X11
  677. ${CMAKE_THREAD_LIBS_INIT}
  678. )
  679. target_sources(carla-utils
  680. PRIVATE
  681. ../source/backend/utils/CachedPlugins.cpp
  682. ../source/backend/utils/CarlaUtils.cpp
  683. ../source/backend/utils/Information.cpp
  684. ../source/backend/utils/JUCE.cpp
  685. ../source/backend/utils/PipeClient.cpp
  686. ../source/backend/utils/PluginDiscovery.cpp
  687. ../source/backend/utils/System.cpp
  688. ../source/backend/utils/Windows.cpp
  689. )
  690. #######################################################################################################################
  691. if (APPLE)
  692. set_source_files_properties(
  693. ../source/backend/CarlaStandalone.cpp
  694. ../source/backend/plugin/CarlaPluginCLAP.cpp
  695. ../source/backend/plugin/CarlaPluginVST2.cpp
  696. ../source/backend/plugin/CarlaPluginVST3.cpp
  697. ../source/backend/utils/CarlaUtils.cpp
  698. ../source/backend/utils/Windows.cpp
  699. ../source/bridges-plugin/CarlaBridgePlugin.cpp
  700. ../source/discovery/carla-discovery.cpp
  701. ../source/modules/water/water.cpp
  702. ../source/modules/water/water.files.cpp
  703. PROPERTIES COMPILE_FLAGS -ObjC++)
  704. endif()
  705. #######################################################################################################################