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.

1568 lines
46KB

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