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.

1316 lines
39KB

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