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.

1410 lines
41KB

  1. cmake_minimum_required(VERSION 3.15)
  2. # adjust for last compatible macOS version
  3. if(APPLE)
  4. set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8" CACHE STRING "Minimum macOS deployment version")
  5. set(CARLA_OSX_DEPLOYMENT_TARGET ${CMAKE_OSX_DEPLOYMENT_TARGET})
  6. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
  7. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
  8. endif()
  9. project(carla)
  10. set(PROJECT_VERSION 2.6.0-alpha1)
  11. set(PROJECT_SHORT_VERSION 2.5.91)
  12. set(CMAKE_POLICY_DEFAULT_CMP0025 NEW)
  13. set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
  14. set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
  15. set(CMAKE_C_STANDARD 11)
  16. set(CMAKE_CXX_STANDARD 11)
  17. set(CMAKE_C_VISIBILITY_PRESET hidden)
  18. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  19. set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
  20. set_property(GLOBAL PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
  21. #######################################################################################################################
  22. # fix compat with cmake < 3.26
  23. if(CMAKE_VERSION VERSION_LESS 3.26)
  24. if(MSVC)
  25. set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
  26. else()
  27. set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
  28. endif()
  29. mark_as_advanced(CMAKE_C_COMPILER_FRONTEND_VARIANT)
  30. endif()
  31. #######################################################################################################################
  32. # build options
  33. if(MSVC)
  34. set(CARLA_USE_JACK_DEFAULT FALSE)
  35. set(CARLA_USE_OSC_DEFAULT FALSE)
  36. else()
  37. set(CARLA_USE_JACK_DEFAULT TRUE)
  38. set(CARLA_USE_OSC_DEFAULT TRUE)
  39. endif()
  40. if(WIN32)
  41. set(CARLA_SKIP_LIBDIR_SUFFIX_DEFAULT TRUE)
  42. else()
  43. set(CARLA_SKIP_LIBDIR_SUFFIX_DEFAULT FALSE)
  44. endif()
  45. set(CARLA_BUILD_FRAMEWORKS FALSE CACHE BOOL "Build libraries as macOS frameworks")
  46. set(CARLA_ENABLE_JSFX TRUE CACHE BOOL "Enable JSFX")
  47. set(CARLA_SKIP_LIBDIR_SUFFIX ${CARLA_SKIP_LIBDIR_SUFFIX_DEFAULT} CACHE BOOL "Skip $LIBDIR/carla suffix")
  48. set(CARLA_USE_JACK ${CARLA_USE_JACK_DEFAULT} CACHE BOOL "Enable JACK")
  49. set(CARLA_USE_OSC ${CARLA_USE_OSC_DEFAULT} CACHE BOOL "Enable OSC")
  50. if(${CARLA_BUILD_FRAMEWORKS} AND NOT APPLE)
  51. set(CARLA_BUILD_FRAMEWORKS FALSE)
  52. mark_as_advanced(CARLA_BUILD_FRAMEWORKS)
  53. endif()
  54. if(${CARLA_BUILD_FRAMEWORKS})
  55. execute_process(COMMAND date -u +%y%m%d%H%M%S OUTPUT_VARIABLE CARLA_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
  56. endif()
  57. #######################################################################################################################
  58. # required dependencies
  59. include(GNUInstallDirs)
  60. find_package(Threads REQUIRED)
  61. if(NOT (APPLE OR HAIKU OR WIN32))
  62. set(CARLA_LIBDL dl)
  63. set(CARLA_LIBM m)
  64. set(CARLA_LIBRT rt)
  65. endif()
  66. #######################################################################################################################
  67. # optional dependencies
  68. find_package(PkgConfig QUIET)
  69. # homebrew does not support universal binaries, disable external deps if it is in use
  70. if(APPLE)
  71. find_program(HOMEBREW brew)
  72. if(HOMEBREW)
  73. set(PKGCONFIG_FOUND FALSE)
  74. mark_as_advanced(PKGCONFIG_FOUND)
  75. endif()
  76. endif()
  77. if(PKGCONFIG_FOUND)
  78. pkg_check_modules(FLUIDSYNTH IMPORTED_TARGET fluidsynth)
  79. pkg_check_modules(SNDFILE IMPORTED_TARGET sndfile)
  80. else()
  81. set(FLUIDSYNTH_FOUND FALSE)
  82. set(SNDFILE_FOUND FALSE)
  83. endif()
  84. if(PKGCONFIG_FOUND AND CARLA_USE_OSC)
  85. pkg_check_modules(LIBLO IMPORTED_TARGET liblo)
  86. else()
  87. set(LIBLO_FOUND FALSE)
  88. endif()
  89. if(PKGCONFIG_FOUND AND NOT WIN32)
  90. pkg_check_modules(LIBMAGIC IMPORTED_TARGET libmagic)
  91. else()
  92. set(LIBMAGIC_FOUND FALSE)
  93. endif()
  94. if(PKGCONFIG_FOUND AND NOT (APPLE OR WIN32))
  95. pkg_check_modules(X11 IMPORTED_TARGET x11)
  96. else()
  97. set(X11_FOUND FALSE)
  98. endif()
  99. add_library(carla-none INTERFACE)
  100. if(NOT FLUIDSYNTH_FOUND)
  101. add_library(PkgConfig::FLUIDSYNTH ALIAS carla-none)
  102. endif()
  103. if(NOT LIBLO_FOUND)
  104. add_library(PkgConfig::LIBLO ALIAS carla-none)
  105. endif()
  106. if(NOT LIBMAGIC_FOUND)
  107. add_library(PkgConfig::LIBMAGIC ALIAS carla-none)
  108. endif()
  109. if(NOT SNDFILE_FOUND)
  110. add_library(PkgConfig::SNDFILE ALIAS carla-none)
  111. endif()
  112. if(NOT X11_FOUND)
  113. add_library(PkgConfig::X11 ALIAS carla-none)
  114. endif()
  115. # TODO
  116. set(PYQT_FOUND FALSE)
  117. #######################################################################################################################
  118. # utilities
  119. if(${CARLA_SKIP_LIBDIR_SUFFIX})
  120. set(CARLA_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
  121. else()
  122. set(CARLA_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/carla)
  123. endif()
  124. mark_as_advanced(CARLA_INSTALL_LIBDIR)
  125. function(set_common_target_properties TARGET)
  126. target_compile_definitions(${TARGET}
  127. PRIVATE
  128. BUILDING_CARLA
  129. $<$<BOOL:${CARLA_ENABLE_JSFX}>:HAVE_YSFX>
  130. $<$<BOOL:${CARLA_USE_JACK}>:HAVE_JACK>
  131. $<$<BOOL:${FLUIDSYNTH_FOUND}>:HAVE_FLUIDSYNTH>
  132. $<$<BOOL:${LIBLO_FOUND}>:HAVE_LIBLO>
  133. $<$<BOOL:${LIBMAGIC_FOUND}>:HAVE_LIBMAGIC>
  134. $<$<BOOL:${PYQT_FOUND}>:HAVE_PYQT>
  135. $<$<BOOL:${SNDFILE_FOUND}>:HAVE_SNDFILE>
  136. $<$<BOOL:${X11_FOUND}>:HAVE_X11>
  137. $<$<BOOL:${MSVC}>:_USE_MATH_DEFINES>
  138. )
  139. target_compile_options(${TARGET}
  140. PRIVATE
  141. $<$<BOOL:${MSVC}>:/wd4244>
  142. $<$<BOOL:${MSVC}>:/wd4267>
  143. $<$<BOOL:${MSVC}>:/wd4273>
  144. )
  145. target_link_options(${TARGET}
  146. PRIVATE
  147. $<$<C_COMPILER_ID:GNU>:-Wl,--no-undefined>
  148. )
  149. set_property(TARGET ${TARGET} PROPERTY POSITION_INDEPENDENT_CODE ON)
  150. if(APPLE)
  151. set_property(TARGET ${TARGET} APPEND PROPERTY OSX_ARCHITECTURES arm64)
  152. set_property(TARGET ${TARGET} APPEND PROPERTY OSX_ARCHITECTURES x86_64)
  153. endif()
  154. endfunction()
  155. #######################################################################################################################
  156. # setup pthreads for msvc
  157. if(MSVC)
  158. include(FetchContent)
  159. FetchContent_Declare(pthreads4w
  160. GIT_REPOSITORY https://git.code.sf.net/p/pthreads4w/code
  161. GIT_TAG f12b445b336ee0117b43fca1d4b9f22c9af82c36
  162. )
  163. FetchContent_MakeAvailable(pthreads4w)
  164. add_library(pthreads4w STATIC)
  165. add_library(carla::pthreads4w ALIAS pthreads4w)
  166. target_sources(pthreads4w PRIVATE ${pthreads4w_SOURCE_DIR}/pthread.c)
  167. target_compile_definitions(pthreads4w
  168. PRIVATE
  169. HAVE_CONFIG_H
  170. HAVE_STDINT_H=1
  171. _POSIX_C_SOURCE=200112L
  172. PUBLIC
  173. INCLUDE_NP
  174. PTW32_DLLPORT
  175. __PTW32_STATIC_LIB
  176. )
  177. target_include_directories(pthreads4w
  178. PUBLIC
  179. ${pthreads4w_SOURCE_DIR}
  180. )
  181. set(CARLA_PTHREADS carla::pthreads4w)
  182. else()
  183. set(CARLA_PTHREADS ${CMAKE_THREAD_LIBS_INIT})
  184. endif()
  185. #######################################################################################################################
  186. # audio_decoder
  187. add_library(carla-audio-decoder STATIC)
  188. add_library(carla::audio-decoder ALIAS carla-audio-decoder)
  189. set_common_target_properties(carla-audio-decoder)
  190. target_include_directories(carla-audio-decoder
  191. PRIVATE
  192. ../source/includes
  193. ../source/modules
  194. ../source/utils
  195. )
  196. target_link_libraries(carla-audio-decoder
  197. PRIVATE
  198. PkgConfig::SNDFILE
  199. )
  200. target_sources(carla-audio-decoder
  201. PRIVATE
  202. ../source/modules/audio_decoder/ad_dr_mp3.c
  203. ../source/modules/audio_decoder/ad_ffmpeg.c
  204. ../source/modules/audio_decoder/ad_minimp3.c
  205. ../source/modules/audio_decoder/ad_plugin.c
  206. ../source/modules/audio_decoder/ad_soundfile.c
  207. )
  208. #######################################################################################################################
  209. # jackbridge
  210. add_library(carla-jackbridge STATIC)
  211. add_library(carla::jackbridge ALIAS carla-jackbridge)
  212. set_common_target_properties(carla-jackbridge)
  213. target_include_directories(carla-jackbridge
  214. PRIVATE
  215. ../source/includes
  216. ../source/utils
  217. )
  218. target_link_libraries(carla-jackbridge
  219. PRIVATE
  220. ${CARLA_LIBDL}
  221. ${CARLA_LIBRT}
  222. )
  223. target_sources(carla-jackbridge
  224. PRIVATE
  225. ../source/jackbridge/JackBridge1.cpp
  226. ../source/jackbridge/JackBridge2.cpp
  227. )
  228. #######################################################################################################################
  229. # lilv
  230. # serd
  231. add_library(carla-lilv_serd STATIC)
  232. set_common_target_properties(carla-lilv_serd)
  233. target_compile_options(carla-lilv_serd
  234. PRIVATE
  235. $<$<BOOL:${MSVC}>:/wd4005>
  236. $<$<BOOL:${MSVC}>:/wd4090>
  237. $<$<BOOL:${MSVC}>:/wd4133>
  238. $<$<C_COMPILER_ID:GNU>:-Wno-format-overflow>
  239. $<$<C_COMPILER_ID:GNU>:-Wno-implicit-fallthrough>
  240. )
  241. target_include_directories(carla-lilv_serd
  242. PRIVATE
  243. ../source/includes
  244. ../source/modules/lilv/config
  245. ../source/modules/lilv/serd-0.24.0
  246. )
  247. target_sources(carla-lilv_serd
  248. PRIVATE
  249. ../source/modules/lilv/serd.c
  250. )
  251. # sord
  252. add_library(carla-lilv_sord STATIC)
  253. set_common_target_properties(carla-lilv_sord)
  254. target_compile_options(carla-lilv_sord
  255. PRIVATE
  256. $<$<BOOL:${MSVC}>:/wd4005>
  257. $<$<BOOL:${MSVC}>:/wd4090>
  258. $<$<BOOL:${MSVC}>:/wd4133>
  259. $<$<C_COMPILER_ID:GNU>:-Wno-maybe-uninitialized>
  260. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  261. # workaround compiler bug, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109585
  262. $<$<C_COMPILER_ID:GNU>:-fno-strict-aliasing>
  263. )
  264. target_include_directories(carla-lilv_sord
  265. PRIVATE
  266. ../source/includes
  267. ../source/modules/lilv/config
  268. ../source/modules/lilv/sord-0.16.0
  269. ../source/modules/lilv/sord-0.16.0/src
  270. )
  271. target_link_libraries(carla-lilv_sord
  272. PRIVATE
  273. carla-lilv_serd
  274. )
  275. target_sources(carla-lilv_sord
  276. PRIVATE
  277. ../source/modules/lilv/sord.c
  278. )
  279. # sratom
  280. add_library(carla-lilv_sratom STATIC)
  281. set_common_target_properties(carla-lilv_sratom)
  282. target_compile_options(carla-lilv_sratom
  283. PRIVATE
  284. $<$<BOOL:${MSVC}>:/wd4005>
  285. $<$<BOOL:${MSVC}>:/wd4090>
  286. $<$<BOOL:${MSVC}>:/wd4133>
  287. )
  288. target_include_directories(carla-lilv_sratom
  289. PRIVATE
  290. ../source/includes
  291. ../source/modules/lilv/config
  292. ../source/modules/lilv/sratom-0.6.0
  293. )
  294. target_link_libraries(carla-lilv_sratom
  295. PRIVATE
  296. carla-lilv_serd
  297. )
  298. target_sources(carla-lilv_sratom
  299. PRIVATE
  300. ../source/modules/lilv/sratom.c
  301. )
  302. # lilv
  303. add_library(carla-lilv_lilv STATIC)
  304. set_common_target_properties(carla-lilv_lilv)
  305. target_compile_options(carla-lilv_lilv
  306. PRIVATE
  307. $<$<BOOL:${MSVC}>:/wd4005>
  308. $<$<BOOL:${MSVC}>:/wd4090>
  309. $<$<BOOL:${MSVC}>:/wd4133>
  310. $<$<C_COMPILER_ID:AppleClang>:-Wno-incompatible-pointer-types-discards-qualifiers>
  311. $<$<C_COMPILER_ID:GNU>:-Wno-deprecated-declarations>
  312. $<$<C_COMPILER_ID:GNU>:-Wno-discarded-qualifiers>
  313. $<$<C_COMPILER_ID:GNU>:-Wno-format-overflow>
  314. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  315. )
  316. target_include_directories(carla-lilv_lilv
  317. PRIVATE
  318. ../source/includes
  319. ../source/modules/lilv/config
  320. ../source/modules/lilv/lilv-0.24.0
  321. ../source/modules/lilv/lilv-0.24.0/src
  322. )
  323. target_link_libraries(carla-lilv_lilv
  324. PRIVATE
  325. carla-lilv_serd
  326. carla-lilv_sord
  327. carla-lilv_sratom
  328. )
  329. target_sources(carla-lilv_lilv
  330. PRIVATE
  331. ../source/modules/lilv/lilv.c
  332. )
  333. # combined target
  334. add_library(carla-lilv INTERFACE)
  335. add_library(carla::lilv ALIAS carla-lilv)
  336. target_link_libraries(carla-lilv
  337. INTERFACE
  338. carla-lilv_serd
  339. carla-lilv_sord
  340. carla-lilv_sratom
  341. carla-lilv_lilv
  342. ${CARLA_LIBDL}
  343. ${CARLA_LIBM}
  344. ${CARLA_LIBRT}
  345. )
  346. #######################################################################################################################
  347. # native-plugins
  348. add_library(carla-native-plugins STATIC)
  349. add_library(carla::native-plugins ALIAS carla-native-plugins)
  350. set_common_target_properties(carla-native-plugins)
  351. target_include_directories(carla-native-plugins
  352. PRIVATE
  353. ../source/includes
  354. ../source/modules
  355. ../source/utils
  356. )
  357. target_link_libraries(carla-native-plugins
  358. PRIVATE
  359. ${CARLA_PTHREADS}
  360. )
  361. target_sources(carla-native-plugins
  362. PRIVATE
  363. ../source/native-plugins/_all.c
  364. ../source/native-plugins/_data.cpp
  365. ../source/native-plugins/audio-gain.c
  366. ../source/native-plugins/bypass.c
  367. ../source/native-plugins/cv-to-audio.c
  368. ../source/native-plugins/lfo.c
  369. ../source/native-plugins/midi-channel-filter.c
  370. ../source/native-plugins/midi-channel-ab.c
  371. ../source/native-plugins/midi-channelize.c
  372. ../source/native-plugins/midi-gain.c
  373. ../source/native-plugins/midi-join.c
  374. ../source/native-plugins/midi-split.c
  375. ../source/native-plugins/midi-to-cv.c
  376. ../source/native-plugins/midi-through.c
  377. ../source/native-plugins/midi-transpose.c
  378. ../source/native-plugins/audio-file.cpp
  379. ../source/native-plugins/midi-file.cpp
  380. # these rely on PyQt
  381. $<$<BOOL:${PYQT_FOUND}>:../source/native-plugins/bigmeter.cpp>
  382. $<$<BOOL:${PYQT_FOUND}>:../source/native-plugins/midi-pattern.cpp>
  383. $<$<BOOL:${PYQT_FOUND}>:../source/native-plugins/notes.cpp>
  384. $<$<BOOL:${PYQT_FOUND}>:../source/native-plugins/xycontroller.cpp>
  385. )
  386. #######################################################################################################################
  387. # rtmempool
  388. add_library(carla-rtmempool STATIC)
  389. add_library(carla::rtmempool ALIAS carla-rtmempool)
  390. set_common_target_properties(carla-rtmempool)
  391. target_include_directories(carla-rtmempool
  392. PRIVATE
  393. ../source/includes
  394. ../source/utils
  395. )
  396. target_link_libraries(carla-rtmempool
  397. PRIVATE
  398. ${CARLA_LIBDL}
  399. ${CARLA_LIBRT}
  400. ${CARLA_PTHREADS}
  401. )
  402. target_sources(carla-rtmempool
  403. PRIVATE
  404. ../source/modules/rtmempool/rtmempool.c
  405. )
  406. #######################################################################################################################
  407. # sfzero
  408. add_library(carla-sfzero STATIC)
  409. add_library(carla::sfzero ALIAS carla-sfzero)
  410. set_common_target_properties(carla-sfzero)
  411. target_include_directories(carla-sfzero
  412. PRIVATE
  413. ../source/includes
  414. ../source/modules
  415. ../source/utils
  416. )
  417. target_link_libraries(carla-sfzero
  418. PRIVATE
  419. carla-audio-decoder
  420. ${CARLA_PTHREADS}
  421. )
  422. target_sources(carla-sfzero
  423. PRIVATE
  424. ../source/modules/sfzero/SFZero.cpp
  425. )
  426. #######################################################################################################################
  427. # water
  428. add_library(carla-water STATIC)
  429. add_library(carla::water ALIAS carla-water)
  430. set_common_target_properties(carla-water)
  431. target_compile_options(carla-water
  432. PRIVATE
  433. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-deprecated-copy>
  434. )
  435. target_include_directories(carla-water
  436. PRIVATE
  437. ../source/includes
  438. ../source/utils
  439. )
  440. target_link_libraries(carla-water
  441. PRIVATE
  442. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
  443. $<$<BOOL:${WIN32}>:comdlg32>
  444. $<$<BOOL:${WIN32}>:ole32>
  445. $<$<BOOL:${WIN32}>:winmm>
  446. ${CARLA_LIBDL}
  447. ${CARLA_LIBRT}
  448. ${CARLA_PTHREADS}
  449. )
  450. target_sources(carla-water
  451. PRIVATE
  452. ../source/modules/water/water.cpp
  453. )
  454. #######################################################################################################################
  455. # water-files
  456. add_library(carla-water-files STATIC)
  457. add_library(carla::water-files ALIAS carla-water-files)
  458. set_common_target_properties(carla-water-files)
  459. target_compile_options(carla-water-files
  460. PRIVATE
  461. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-deprecated-copy>
  462. )
  463. target_include_directories(carla-water-files
  464. PRIVATE
  465. ../source/includes
  466. ../source/utils
  467. )
  468. target_link_libraries(carla-water-files
  469. PRIVATE
  470. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
  471. $<$<BOOL:${WIN32}>:ole32>
  472. $<$<BOOL:${WIN32}>:winmm>
  473. ${CARLA_LIBDL}
  474. )
  475. target_sources(carla-water-files
  476. PRIVATE
  477. ../source/modules/water/water.files.cpp
  478. )
  479. #######################################################################################################################
  480. # ysfx
  481. if(${CARLA_ENABLE_JSFX})
  482. add_library(carla-ysfx STATIC)
  483. add_library(carla::ysfx ALIAS carla-ysfx)
  484. set_common_target_properties(carla-ysfx)
  485. # YSFX_FTS_LACKS_LFS_SUPPORT
  486. target_compile_definitions(carla-ysfx
  487. PRIVATE
  488. EEL_TARGET_PORTABLE
  489. EELSCRIPT_NO_NET
  490. EELSCRIPT_NO_LICE
  491. NSEEL_ATOF=ysfx_wdl_atof
  492. WDL_FFT_REALSIZE=8
  493. WDL_LINEPARSE_ATOF=ysfx_wdl_atof
  494. WDL_WIN32_UTF8_NO_UI_IMPL
  495. YSFX_API=
  496. YSFX_NO_GFX
  497. YSFX_NO_STANDARD_MUTEX
  498. $<$<BOOL:${WIN32}>:NOMINMAX>
  499. $<$<NOT:$<BOOL:${MINGW}>>:_FILE_OFFSET_BITS=64>
  500. )
  501. # NOTE ugly -U /U due to cmake not supporting `target_remove_definitions`
  502. # see https://gitlab.kitware.com/cmake/cmake/-/issues/19796
  503. target_compile_options(carla-ysfx
  504. PRIVATE
  505. $<$<BOOL:${MINGW}>:-UUNICODE>
  506. $<$<BOOL:${MINGW}>:-U_UNICODE>
  507. $<$<BOOL:${MSVC}>:/wd4018>
  508. $<$<BOOL:${MSVC}>:/wd4297>
  509. $<$<BOOL:${MSVC}>:/UUNICODE>
  510. $<$<BOOL:${MSVC}>:/U_UNICODE>
  511. $<$<C_COMPILER_ID:AppleClang>:-Wno-newline-eof>
  512. $<$<C_COMPILER_ID:GNU>:-Wno-extra>
  513. $<$<C_COMPILER_ID:GNU>:-Wno-ignored-attributes>
  514. $<$<C_COMPILER_ID:GNU>:-Wno-unused-function>
  515. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-fsigned-char>
  516. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-sign-compare>
  517. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  518. $<$<AND:$<COMPILE_LANGUAGE:C>,$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>>:-Wno-missing-field-initializers>
  519. $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:GNU>>:-Wno-deprecated-copy>
  520. )
  521. target_include_directories(carla-ysfx
  522. PRIVATE
  523. ../source/modules/ysfx/include
  524. ../source/modules/ysfx/sources
  525. ../source/modules/ysfx/thirdparty/dr_libs
  526. ../source/modules/ysfx/thirdparty/stb
  527. ../source/modules/ysfx/thirdparty/WDL/source
  528. )
  529. target_sources(carla-ysfx
  530. PRIVATE
  531. ../source/modules/ysfx/sources/ysfx.cpp
  532. ../source/modules/ysfx/sources/ysfx_api_eel.cpp
  533. ../source/modules/ysfx/sources/ysfx_api_file.cpp
  534. ../source/modules/ysfx/sources/ysfx_api_gfx.cpp
  535. ../source/modules/ysfx/sources/ysfx_api_reaper.cpp
  536. ../source/modules/ysfx/sources/ysfx_audio_flac.cpp
  537. ../source/modules/ysfx/sources/ysfx_audio_wav.cpp
  538. ../source/modules/ysfx/sources/ysfx_config.cpp
  539. ../source/modules/ysfx/sources/ysfx_eel_utils.cpp
  540. ../source/modules/ysfx/sources/ysfx_midi.cpp
  541. ../source/modules/ysfx/sources/ysfx_parse.cpp
  542. ../source/modules/ysfx/sources/ysfx_reader.cpp
  543. ../source/modules/ysfx/sources/ysfx_utils.cpp
  544. ../source/modules/ysfx/sources/ysfx_utils_fts.cpp
  545. ../source/modules/ysfx/sources/eel2-gas/sources/asm-nseel-x64-sse.S
  546. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-caltab.c
  547. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-cfunc.c
  548. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-compiler.c
  549. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-eval.c
  550. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-lextab.c
  551. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-ram.c
  552. ../source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-yylex.c
  553. ../source/modules/ysfx/thirdparty/WDL/source/WDL/fft.c
  554. $<$<BOOL:${WIN32}>:../source/modules/ysfx/thirdparty/WDL/source/WDL/win32_utf8.c>
  555. )
  556. endif(${CARLA_ENABLE_JSFX})
  557. #######################################################################################################################
  558. # zita-resampler
  559. add_library(carla-zita-resampler STATIC)
  560. add_library(carla::zita-resampler ALIAS carla-zita-resampler)
  561. set_common_target_properties(carla-zita-resampler)
  562. target_include_directories(carla-zita-resampler
  563. PRIVATE
  564. ../source/includes
  565. )
  566. target_link_libraries(carla-zita-resampler
  567. PRIVATE
  568. ${CARLA_PTHREADS}
  569. )
  570. target_sources(carla-zita-resampler
  571. PRIVATE
  572. ../source/modules/zita-resampler/cresampler.cc
  573. ../source/modules/zita-resampler/resampler-table.cc
  574. ../source/modules/zita-resampler/resampler.cc
  575. ../source/modules/zita-resampler/vresampler.cc
  576. )
  577. #######################################################################################################################
  578. # carla bridge-native
  579. add_executable(carla-bridge-native)
  580. set_common_target_properties(carla-bridge-native)
  581. if(NOT ${CARLA_BUILD_FRAMEWORKS})
  582. install(TARGETS carla-bridge-native
  583. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  584. )
  585. endif()
  586. target_compile_definitions(carla-bridge-native
  587. PRIVATE
  588. BUILD_BRIDGE
  589. CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
  590. )
  591. # FIXME
  592. target_compile_options(carla-bridge-native
  593. PRIVATE
  594. $<$<C_COMPILER_ID:GNU>:-Wno-format-truncation>
  595. $<$<C_COMPILER_ID:GNU>:-Wno-stringop-overflow>
  596. $<$<C_COMPILER_ID:GNU>:-Wno-unused-but-set-variable>
  597. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  598. )
  599. target_include_directories(carla-bridge-native
  600. PRIVATE
  601. ../source
  602. ../source/backend
  603. ../source/backend/engine
  604. ../source/backend/plugin
  605. ../source/includes
  606. ../source/modules
  607. ../source/utils
  608. )
  609. target_link_libraries(carla-bridge-native
  610. PRIVATE
  611. carla-audio-decoder
  612. carla-jackbridge
  613. carla-lilv
  614. carla-native-plugins
  615. carla-rtmempool
  616. carla-sfzero
  617. carla-water
  618. $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
  619. carla-zita-resampler
  620. PkgConfig::FLUIDSYNTH
  621. PkgConfig::LIBLO
  622. PkgConfig::LIBMAGIC
  623. PkgConfig::X11
  624. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
  625. ${CARLA_PTHREADS}
  626. )
  627. target_sources(carla-bridge-native
  628. PRIVATE
  629. ../source/bridges-plugin/CarlaBridgePlugin.cpp
  630. ../source/backend/CarlaStandalone.cpp
  631. ../source/backend/engine/CarlaEngine.cpp
  632. ../source/backend/engine/CarlaEngineBridge.cpp
  633. ../source/backend/engine/CarlaEngineClient.cpp
  634. ../source/backend/engine/CarlaEngineDummy.cpp
  635. ../source/backend/engine/CarlaEngineData.cpp
  636. ../source/backend/engine/CarlaEngineGraph.cpp
  637. ../source/backend/engine/CarlaEngineInternal.cpp
  638. ../source/backend/engine/CarlaEnginePorts.cpp
  639. ../source/backend/engine/CarlaEngineRunner.cpp
  640. ../source/backend/plugin/CarlaPlugin.cpp
  641. ../source/backend/plugin/CarlaPluginBridge.cpp
  642. ../source/backend/plugin/CarlaPluginInternal.cpp
  643. ../source/backend/plugin/CarlaPluginAU.cpp
  644. ../source/backend/plugin/CarlaPluginCLAP.cpp
  645. ../source/backend/plugin/CarlaPluginFluidSynth.cpp
  646. ../source/backend/plugin/CarlaPluginJuce.cpp
  647. ../source/backend/plugin/CarlaPluginJSFX.cpp
  648. ../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
  649. ../source/backend/plugin/CarlaPluginLV2.cpp
  650. ../source/backend/plugin/CarlaPluginNative.cpp
  651. ../source/backend/plugin/CarlaPluginSFZero.cpp
  652. ../source/backend/plugin/CarlaPluginVST2.cpp
  653. ../source/backend/plugin/CarlaPluginVST3.cpp
  654. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/engine/CarlaEngineJack.cpp>
  655. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
  656. )
  657. #######################################################################################################################
  658. # carla bridge-lv2-gtk2
  659. add_executable(carla-bridge-lv2-gtk2)
  660. set_common_target_properties(carla-bridge-lv2-gtk2)
  661. if(NOT ${CARLA_BUILD_FRAMEWORKS})
  662. install(TARGETS carla-bridge-lv2-gtk2
  663. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  664. )
  665. endif()
  666. target_compile_definitions(carla-bridge-lv2-gtk2
  667. PRIVATE
  668. BUILD_BRIDGE
  669. BUILD_BRIDGE_UI
  670. BRIDGE_GTK2
  671. )
  672. target_include_directories(carla-bridge-lv2-gtk2
  673. PRIVATE
  674. ../source/backend
  675. ../source/includes
  676. ../source/modules
  677. ../source/utils
  678. )
  679. target_link_libraries(carla-bridge-lv2-gtk2
  680. PRIVATE
  681. carla-lilv
  682. carla-water-files
  683. PkgConfig::X11
  684. ${CARLA_PTHREADS}
  685. )
  686. target_sources(carla-bridge-lv2-gtk2
  687. PRIVATE
  688. ../source/bridges-ui/CarlaBridgeFormat.cpp
  689. ../source/bridges-ui/CarlaBridgeFormatLV2.cpp
  690. ../source/bridges-ui/CarlaBridgeToolkitGtk.cpp
  691. )
  692. #######################################################################################################################
  693. # carla bridge-lv2-gtk2
  694. add_executable(carla-bridge-lv2-gtk3)
  695. set_common_target_properties(carla-bridge-lv2-gtk3)
  696. if(NOT ${CARLA_BUILD_FRAMEWORKS})
  697. install(TARGETS carla-bridge-lv2-gtk3
  698. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  699. )
  700. endif()
  701. target_compile_definitions(carla-bridge-lv2-gtk3
  702. PRIVATE
  703. BUILD_BRIDGE
  704. BUILD_BRIDGE_UI
  705. BRIDGE_GTK3
  706. )
  707. target_include_directories(carla-bridge-lv2-gtk3
  708. PRIVATE
  709. ../source/backend
  710. ../source/includes
  711. ../source/modules
  712. ../source/utils
  713. )
  714. target_link_libraries(carla-bridge-lv2-gtk3
  715. PRIVATE
  716. carla-lilv
  717. carla-water-files
  718. PkgConfig::X11
  719. ${CARLA_PTHREADS}
  720. )
  721. target_sources(carla-bridge-lv2-gtk3
  722. PRIVATE
  723. ../source/bridges-ui/CarlaBridgeFormat.cpp
  724. ../source/bridges-ui/CarlaBridgeFormatLV2.cpp
  725. ../source/bridges-ui/CarlaBridgeToolkitGtk.cpp
  726. )
  727. #######################################################################################################################
  728. # carla discovery-native
  729. add_executable(carla-discovery-native)
  730. set_common_target_properties(carla-discovery-native)
  731. if(NOT ${CARLA_BUILD_FRAMEWORKS})
  732. install(TARGETS carla-discovery-native
  733. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  734. )
  735. endif()
  736. target_include_directories(carla-discovery-native
  737. PRIVATE
  738. ../source/backend
  739. ../source/includes
  740. ../source/modules
  741. ../source/utils
  742. )
  743. target_link_libraries(carla-discovery-native
  744. PRIVATE
  745. carla-lilv
  746. carla-water-files
  747. $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
  748. PkgConfig::FLUIDSYNTH
  749. ${CARLA_PTHREADS}
  750. )
  751. target_sources(carla-discovery-native
  752. PRIVATE
  753. ../source/discovery/carla-discovery.cpp
  754. )
  755. #######################################################################################################################
  756. # carla native-plugin
  757. add_library(carla-native-plugin SHARED)
  758. add_library(carla::standalone ALIAS carla-native-plugin)
  759. set_common_target_properties(carla-native-plugin)
  760. if(${CARLA_BUILD_FRAMEWORKS})
  761. set(carla-native-plugin-public-headers
  762. ../source/backend/CarlaBackend.h
  763. ../source/backend/CarlaHost.h
  764. ../source/backend/CarlaUtils.h
  765. ../source/includes/CarlaDefines.h
  766. ../source/includes/CarlaNative.h
  767. ../source/includes/CarlaNativePlugin.h
  768. )
  769. set_target_properties(carla-native-plugin
  770. PROPERTIES
  771. FRAMEWORK TRUE
  772. FRAMEWORK_VERSION A
  773. OUTPUT_NAME carla-native-plugin
  774. PUBLIC_HEADER "${carla-native-plugin-public-headers}"
  775. MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-framework.plist.in"
  776. MACOSX_FRAMEWORK_IDENTIFIER "studio.kx.carla.native-plugin"
  777. MACOSX_FRAMEWORK_BUNDLE_VERSION "${CARLA_DATE}"
  778. MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PROJECT_SHORT_VERSION}"
  779. )
  780. else()
  781. set_target_properties(carla-native-plugin
  782. PROPERTIES
  783. OUTPUT_NAME carla_native-plugin
  784. IMPORT_PREFIX lib
  785. PREFIX lib
  786. )
  787. endif()
  788. target_compile_definitions(carla-native-plugin
  789. PRIVATE
  790. CARLA_PLUGIN_BUILD
  791. CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
  792. )
  793. # FIXME
  794. # target_compile_options(carla-native-plugin
  795. # PRIVATE
  796. # $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  797. # )
  798. target_include_directories(carla-native-plugin
  799. PRIVATE
  800. ../source
  801. ../source/backend
  802. ../source/includes
  803. ../source/modules
  804. ../source/utils
  805. )
  806. if(APPLE)
  807. target_link_options(carla-native-plugin
  808. PRIVATE
  809. -Wl,-exported_symbol,_carla_get_native_patchbay_plugin
  810. -Wl,-exported_symbol,_carla_get_native_patchbay16_plugin
  811. -Wl,-exported_symbol,_carla_get_native_patchbay32_plugin
  812. -Wl,-exported_symbol,_carla_get_native_patchbay64_plugin
  813. -Wl,-exported_symbol,_carla_get_native_patchbay_cv_plugin
  814. -Wl,-exported_symbol,_carla_get_native_patchbay_cv8_plugin
  815. -Wl,-exported_symbol,_carla_get_native_patchbay_cv32_plugin
  816. -Wl,-exported_symbol,_carla_get_native_patchbay_obs_plugin
  817. -Wl,-exported_symbol,_carla_create_native_plugin_host_handle
  818. -Wl,-exported_symbol,_carla_host_handle_free
  819. -Wl,-exported_symbol,_carla_get_native_plugin_engine
  820. -Wl,-exported_symbol,_carla_get_complete_license_text
  821. -Wl,-exported_symbol,_carla_get_juce_version
  822. -Wl,-exported_symbol,_carla_get_supported_file_extensions
  823. -Wl,-exported_symbol,_carla_get_supported_features
  824. -Wl,-exported_symbol,_carla_get_library_filename
  825. -Wl,-exported_symbol,_carla_get_library_folder
  826. )
  827. elseif(EMSCRIPTEN)
  828. target_link_options(carla-native-plugin
  829. PRIVATE
  830. -sSIDE_MODULE=2
  831. -sEXPORTED_FUNCTIONS="['carla_get_native_rack_plugin','carla_get_native_patchbay_plugin','carla_get_native_patchbay16_plugin','carla_get_native_patchbay32_plugin','carla_get_native_patchbay64_plugin','carla_get_native_patchbay_cv_plugin','carla_get_native_patchbay_cv8_plugin','carla_get_native_patchbay_cv32_plugin','carla_get_native_patchbay_obs_plugin','carla_create_native_plugin_host_handle','carla_host_handle_free','carla_get_native_plugin_engine','carla_get_complete_license_text','carla_get_juce_version','carla_get_supported_file_extensions','carla_get_supported_features','carla_get_library_filename','carla_get_library_folder']"
  832. )
  833. elseif(MSVC)
  834. target_link_options(carla-native-plugin
  835. PRIVATE
  836. /DEF:${CMAKE_CURRENT_SOURCE_DIR}/../source/plugin/symbols/carla-native-plugin.def
  837. )
  838. elseif(WIN32)
  839. target_link_options(carla-native-plugin
  840. PRIVATE
  841. ${CMAKE_CURRENT_SOURCE_DIR}/../source/plugin/symbols/carla-native-plugin.def
  842. )
  843. else()
  844. target_link_options(carla-native-plugin
  845. PRIVATE
  846. -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../source/plugin/symbols/carla-native-plugin.version
  847. )
  848. endif()
  849. target_link_libraries(carla-native-plugin
  850. PRIVATE
  851. carla-jackbridge
  852. carla-lilv
  853. carla-native-plugins
  854. carla-rtmempool
  855. carla-sfzero
  856. carla-water
  857. $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
  858. carla-zita-resampler
  859. PkgConfig::FLUIDSYNTH
  860. PkgConfig::LIBLO
  861. PkgConfig::LIBMAGIC
  862. PkgConfig::X11
  863. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
  864. ${CARLA_PTHREADS}
  865. )
  866. target_sources(carla-native-plugin
  867. PRIVATE
  868. ../source/backend/engine/CarlaEngine.cpp
  869. ../source/backend/engine/CarlaEngineClient.cpp
  870. ../source/backend/engine/CarlaEngineData.cpp
  871. ../source/backend/engine/CarlaEngineGraph.cpp
  872. ../source/backend/engine/CarlaEngineInternal.cpp
  873. ../source/backend/engine/CarlaEngineNative.cpp
  874. ../source/backend/engine/CarlaEngineOsc.cpp
  875. ../source/backend/engine/CarlaEngineOscHandlers.cpp
  876. ../source/backend/engine/CarlaEngineOscSend.cpp
  877. ../source/backend/engine/CarlaEnginePorts.cpp
  878. ../source/backend/engine/CarlaEngineRunner.cpp
  879. ../source/backend/plugin/CarlaPlugin.cpp
  880. ../source/backend/plugin/CarlaPluginBridge.cpp
  881. ../source/backend/plugin/CarlaPluginInternal.cpp
  882. ../source/backend/plugin/CarlaPluginAU.cpp
  883. ../source/backend/plugin/CarlaPluginCLAP.cpp
  884. ../source/backend/plugin/CarlaPluginFluidSynth.cpp
  885. ../source/backend/plugin/CarlaPluginJuce.cpp
  886. ../source/backend/plugin/CarlaPluginJSFX.cpp
  887. ../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
  888. ../source/backend/plugin/CarlaPluginLV2.cpp
  889. ../source/backend/plugin/CarlaPluginNative.cpp
  890. ../source/backend/plugin/CarlaPluginSFZero.cpp
  891. ../source/backend/plugin/CarlaPluginVST2.cpp
  892. ../source/backend/plugin/CarlaPluginVST3.cpp
  893. ../source/plugin/carla-native-plugin.cpp
  894. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
  895. PUBLIC
  896. ${carla-native-plugin-public-headers}
  897. )
  898. install(TARGETS carla-native-plugin
  899. ARCHIVE DESTINATION ${CARLA_INSTALL_LIBDIR}
  900. LIBRARY DESTINATION ${CARLA_INSTALL_LIBDIR}
  901. FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
  902. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  903. )
  904. # if(${CARLA_BUILD_FRAMEWORKS})
  905. # install(TARGETS
  906. # carla-bridge-native
  907. # carla-discovery-native
  908. # DESTINATION ${CMAKE_INSTALL_LIBDIR}/carla-native-plugin.framework)
  909. # endif()
  910. #######################################################################################################################
  911. # carla standalone
  912. add_library(carla-standalone SHARED)
  913. add_library(carla::standalone ALIAS carla-standalone)
  914. set_common_target_properties(carla-standalone)
  915. if(${CARLA_BUILD_FRAMEWORKS})
  916. set(carla-standalone-public-headers
  917. ../source/backend/CarlaBackend.h
  918. ../source/backend/CarlaHost.h
  919. ../source/backend/CarlaEngine.hpp
  920. ../source/backend/CarlaPlugin.hpp
  921. ../source/backend/CarlaPluginPtr.hpp
  922. ../source/includes/CarlaDefines.h
  923. ../source/utils/CarlaUtils.hpp
  924. )
  925. set_target_properties(carla-standalone
  926. PROPERTIES
  927. FRAMEWORK TRUE
  928. FRAMEWORK_VERSION A
  929. OUTPUT_NAME carla-standalone
  930. PUBLIC_HEADER "${carla-standalone-public-headers}"
  931. MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-framework.plist.in"
  932. MACOSX_FRAMEWORK_IDENTIFIER "studio.kx.carla.standalone"
  933. MACOSX_FRAMEWORK_BUNDLE_VERSION "${CARLA_DATE}"
  934. MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PROJECT_SHORT_VERSION}"
  935. )
  936. else()
  937. set_target_properties(carla-standalone
  938. PROPERTIES
  939. OUTPUT_NAME carla_standalone2
  940. IMPORT_PREFIX lib
  941. PREFIX lib
  942. )
  943. endif()
  944. target_compile_definitions(carla-standalone
  945. PRIVATE
  946. CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
  947. )
  948. # FIXME
  949. target_compile_options(carla-standalone
  950. PRIVATE
  951. $<$<C_COMPILER_ID:GNU>:-Wno-error=cpp>
  952. $<$<C_COMPILER_ID:GNU>:-Wno-format-truncation>
  953. $<$<C_COMPILER_ID:GNU>:-Wno-stringop-overflow>
  954. $<$<C_COMPILER_ID:GNU>:-Wno-unused-but-set-variable>
  955. $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
  956. )
  957. target_include_directories(carla-standalone
  958. PRIVATE
  959. ../source
  960. ../source/backend
  961. ../source/includes
  962. ../source/modules
  963. ../source/utils
  964. )
  965. target_link_libraries(carla-standalone
  966. PRIVATE
  967. carla-jackbridge
  968. carla-lilv
  969. carla-native-plugins
  970. carla-rtmempool
  971. carla-sfzero
  972. carla-water
  973. $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
  974. carla-zita-resampler
  975. PkgConfig::FLUIDSYNTH
  976. PkgConfig::LIBLO
  977. PkgConfig::LIBMAGIC
  978. PkgConfig::X11
  979. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
  980. ${CARLA_PTHREADS}
  981. )
  982. target_sources(carla-standalone
  983. PRIVATE
  984. ../source/backend/CarlaStandalone.cpp
  985. ../source/backend/CarlaStandaloneNSM.cpp
  986. ../source/backend/engine/CarlaEngine.cpp
  987. ../source/backend/engine/CarlaEngineClient.cpp
  988. ../source/backend/engine/CarlaEngineDummy.cpp
  989. ../source/backend/engine/CarlaEngineData.cpp
  990. ../source/backend/engine/CarlaEngineGraph.cpp
  991. ../source/backend/engine/CarlaEngineInternal.cpp
  992. ../source/backend/engine/CarlaEngineNative.cpp
  993. ../source/backend/engine/CarlaEngineOsc.cpp
  994. ../source/backend/engine/CarlaEngineOscHandlers.cpp
  995. ../source/backend/engine/CarlaEngineOscSend.cpp
  996. ../source/backend/engine/CarlaEnginePorts.cpp
  997. ../source/backend/engine/CarlaEngineRunner.cpp
  998. ../source/backend/plugin/CarlaPlugin.cpp
  999. ../source/backend/plugin/CarlaPluginBridge.cpp
  1000. ../source/backend/plugin/CarlaPluginInternal.cpp
  1001. ../source/backend/plugin/CarlaPluginAU.cpp
  1002. ../source/backend/plugin/CarlaPluginCLAP.cpp
  1003. ../source/backend/plugin/CarlaPluginFluidSynth.cpp
  1004. ../source/backend/plugin/CarlaPluginJuce.cpp
  1005. ../source/backend/plugin/CarlaPluginJSFX.cpp
  1006. ../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
  1007. ../source/backend/plugin/CarlaPluginLV2.cpp
  1008. ../source/backend/plugin/CarlaPluginNative.cpp
  1009. ../source/backend/plugin/CarlaPluginSFZero.cpp
  1010. ../source/backend/plugin/CarlaPluginVST2.cpp
  1011. ../source/backend/plugin/CarlaPluginVST3.cpp
  1012. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/engine/CarlaEngineJack.cpp>
  1013. $<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
  1014. PUBLIC
  1015. ${carla-standalone-public-headers}
  1016. )
  1017. install(TARGETS carla-standalone
  1018. ARCHIVE DESTINATION ${CARLA_INSTALL_LIBDIR}
  1019. LIBRARY DESTINATION ${CARLA_INSTALL_LIBDIR}
  1020. FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
  1021. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  1022. )
  1023. if(${CARLA_BUILD_FRAMEWORKS})
  1024. install(TARGETS
  1025. carla-bridge-native
  1026. carla-discovery-native
  1027. DESTINATION ${CMAKE_INSTALL_LIBDIR}/carla-standalone.framework)
  1028. endif()
  1029. #######################################################################################################################
  1030. # carla utils
  1031. add_library(carla-utils SHARED)
  1032. add_library(carla::utils ALIAS carla-utils)
  1033. set_common_target_properties(carla-utils)
  1034. if(${CARLA_BUILD_FRAMEWORKS})
  1035. set(carla-utils-public-headers
  1036. ../source/backend/CarlaBackend.h
  1037. ../source/backend/CarlaUtils.h
  1038. ../source/includes/CarlaDefines.h
  1039. ../source/includes/CarlaMIDI.h
  1040. ../source/utils/CarlaBackendUtils.hpp
  1041. ../source/utils/CarlaBase64Utils.hpp
  1042. ../source/utils/CarlaBinaryUtils.hpp
  1043. ../source/utils/CarlaBridgeDefines.hpp
  1044. ../source/utils/CarlaBridgeUtils.hpp
  1045. ../source/utils/CarlaMacUtils.hpp
  1046. ../source/utils/CarlaMathUtils.hpp
  1047. ../source/utils/CarlaMutex.hpp
  1048. ../source/utils/CarlaRingBuffer.hpp
  1049. ../source/utils/CarlaProcessUtils.hpp
  1050. ../source/utils/CarlaRunner.hpp
  1051. ../source/utils/CarlaScopeUtils.hpp
  1052. ../source/utils/CarlaSemUtils.hpp
  1053. ../source/utils/CarlaSha1Utils.hpp
  1054. ../source/utils/CarlaShmUtils.hpp
  1055. ../source/utils/CarlaString.hpp
  1056. ../source/utils/CarlaThread.hpp
  1057. ../source/utils/CarlaTimeUtils.hpp
  1058. ../source/utils/CarlaUtils.hpp
  1059. )
  1060. set_target_properties(carla-utils
  1061. PROPERTIES
  1062. FRAMEWORK TRUE
  1063. FRAMEWORK_VERSION A
  1064. OUTPUT_NAME carla-utils
  1065. PUBLIC_HEADER "${carla-utils-public-headers}"
  1066. MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-framework.plist.in"
  1067. MACOSX_FRAMEWORK_IDENTIFIER "studio.kx.carla.utils"
  1068. MACOSX_FRAMEWORK_BUNDLE_VERSION "${CARLA_DATE}"
  1069. MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PROJECT_SHORT_VERSION}"
  1070. )
  1071. else()
  1072. set_target_properties(carla-utils
  1073. PROPERTIES
  1074. OUTPUT_NAME carla_utils
  1075. IMPORT_PREFIX lib
  1076. PREFIX lib
  1077. )
  1078. endif()
  1079. target_include_directories(carla-utils
  1080. PRIVATE
  1081. ../source
  1082. ../source/backend
  1083. ../source/includes
  1084. ../source/modules
  1085. ../source/utils
  1086. )
  1087. target_link_libraries(carla-utils
  1088. PRIVATE
  1089. carla-jackbridge
  1090. carla-lilv
  1091. carla-water-files
  1092. $<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
  1093. PkgConfig::FLUIDSYNTH
  1094. PkgConfig::X11
  1095. $<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
  1096. ${CARLA_PTHREADS}
  1097. PUBLIC
  1098. $<$<BOOL:${WIN32}>:winmm>
  1099. )
  1100. target_sources(carla-utils
  1101. PRIVATE
  1102. ../source/backend/utils/CachedPlugins.cpp
  1103. ../source/backend/utils/CarlaUtils.cpp
  1104. ../source/backend/utils/Information.cpp
  1105. ../source/backend/utils/JUCE.cpp
  1106. ../source/backend/utils/PipeClient.cpp
  1107. ../source/backend/utils/PluginDiscovery.cpp
  1108. ../source/backend/utils/System.cpp
  1109. ../source/backend/utils/Windows.cpp
  1110. PUBLIC
  1111. ${carla-utils-public-headers}
  1112. )
  1113. install(TARGETS carla-utils
  1114. ARCHIVE DESTINATION ${CARLA_INSTALL_LIBDIR}
  1115. LIBRARY DESTINATION ${CARLA_INSTALL_LIBDIR}
  1116. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  1117. FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
  1118. )
  1119. if(${CARLA_BUILD_FRAMEWORKS})
  1120. install(TARGETS
  1121. carla-bridge-native
  1122. carla-discovery-native
  1123. DESTINATION ${CMAKE_INSTALL_LIBDIR}/carla-utils.framework)
  1124. endif()
  1125. #######################################################################################################################
  1126. if(APPLE)
  1127. set_source_files_properties(
  1128. ../source/backend/CarlaStandalone.cpp
  1129. ../source/backend/engine/CarlaEngineNative.cpp
  1130. ../source/backend/plugin/CarlaPluginCLAP.cpp
  1131. ../source/backend/plugin/CarlaPluginVST2.cpp
  1132. ../source/backend/plugin/CarlaPluginVST3.cpp
  1133. ../source/backend/utils/CarlaUtils.cpp
  1134. ../source/backend/utils/Windows.cpp
  1135. ../source/bridges-plugin/CarlaBridgePlugin.cpp
  1136. ../source/bridges-ui/CarlaBridgeFormatLV2.cpp
  1137. ../source/discovery/carla-discovery.cpp
  1138. ../source/modules/water/water.cpp
  1139. ../source/modules/water/water.files.cpp
  1140. PROPERTIES COMPILE_FLAGS -ObjC++)
  1141. endif()
  1142. #######################################################################################################################
  1143. # install code headers
  1144. add_library(carla-headers-backend INTERFACE)
  1145. add_library(carla-headers-includes INTERFACE)
  1146. add_library(carla-headers-utils INTERFACE)
  1147. set_property(TARGET carla-headers-backend
  1148. PROPERTY PUBLIC_HEADER
  1149. ../source/backend/CarlaBackend.h
  1150. ../source/backend/CarlaHost.h
  1151. ../source/backend/CarlaUtils.h
  1152. ../source/backend/CarlaEngine.hpp
  1153. ../source/backend/CarlaPlugin.hpp
  1154. ../source/backend/CarlaPluginPtr.hpp
  1155. )
  1156. set_property(TARGET carla-headers-includes
  1157. PROPERTY PUBLIC_HEADER
  1158. ../source/includes/CarlaDefines.h
  1159. ../source/includes/CarlaMIDI.h
  1160. ../source/includes/CarlaNative.h
  1161. ../source/includes/CarlaNativePlugin.h
  1162. )
  1163. set_property(TARGET carla-headers-utils
  1164. PROPERTY PUBLIC_HEADER
  1165. ../source/utils/CarlaBackendUtils.hpp
  1166. ../source/utils/CarlaBase64Utils.hpp
  1167. ../source/utils/CarlaBinaryUtils.hpp
  1168. ../source/utils/CarlaBridgeDefines.hpp
  1169. ../source/utils/CarlaBridgeUtils.hpp
  1170. ../source/utils/CarlaMacUtils.hpp
  1171. ../source/utils/CarlaMathUtils.hpp
  1172. ../source/utils/CarlaMutex.hpp
  1173. ../source/utils/CarlaRingBuffer.hpp
  1174. ../source/utils/CarlaProcessUtils.hpp
  1175. ../source/utils/CarlaRunner.hpp
  1176. ../source/utils/CarlaScopeUtils.hpp
  1177. ../source/utils/CarlaSemUtils.hpp
  1178. ../source/utils/CarlaSha1Utils.hpp
  1179. ../source/utils/CarlaShmUtils.hpp
  1180. ../source/utils/CarlaString.hpp
  1181. ../source/utils/CarlaThread.hpp
  1182. ../source/utils/CarlaTimeUtils.hpp
  1183. ../source/utils/CarlaUtils.hpp
  1184. )
  1185. install(TARGETS carla-headers-backend PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/carla)
  1186. install(TARGETS carla-headers-includes PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/carla/includes)
  1187. install(TARGETS carla-headers-utils PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/carla/utils)
  1188. #######################################################################################################################
  1189. # pkg-config stuff
  1190. if(NOT ${CARLA_BUILD_FRAMEWORKS})
  1191. configure_file(carla-utils.pc.in carla-utils.pc @ONLY)
  1192. install(FILES
  1193. ${CMAKE_CURRENT_BINARY_DIR}/carla-utils.pc
  1194. DESTINATION
  1195. ${CMAKE_INSTALL_LIBDIR}/pkgconfig
  1196. )
  1197. endif()
  1198. #######################################################################################################################