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.

715 lines
20KB

  1. project (
  2. 'carla', ['c', 'cpp',],
  3. license: 'GPL-2.0-or-later',
  4. default_options: [
  5. 'cpp_std=c++14',
  6. 'buildtype=debugoptimized',
  7. 'warning_level=1',
  8. ],
  9. # see also source/frontend/carla_shared.py and source/includes/CarlaDefines.h
  10. version: '2.5.1',
  11. )
  12. pkgconfig_mod = import ('pkgconfig')
  13. is_darwin = false
  14. is_linux = false
  15. is_freebsd = false
  16. is_windows = false
  17. bin_suffix = ''
  18. lib_suffix = '.so'
  19. if host_machine.system() == 'darwin'
  20. is_darwin = true
  21. lib_suffix = '.dylib'
  22. elif host_machine.system() == 'linux'
  23. is_linux = true
  24. elif host_machine.system() == 'freebsd'
  25. is_freebsd = true
  26. elif host_machine.system() == 'windows'
  27. is_windows = true
  28. bin_suffix = '.exe'
  29. lib_suffix = '.dll'
  30. else
  31. error ('unknown host system ' + host_machine.system ())
  32. endif
  33. if is_darwin
  34. add_languages ('objc')
  35. endif
  36. cpp = meson.get_compiler('cpp')
  37. is_gcc = cpp.get_id () == 'gcc'
  38. # === Dependencies ===
  39. add_project_arguments (
  40. '-DREAL_BUILD',
  41. '-DCARLA_LIB_EXT="' + lib_suffix + '"',
  42. '-DHAVE_FLUIDSYNTH=1',
  43. '-DHAVE_LIBLO=1',
  44. '-DUSING_JUCE',
  45. '-DJUCE_APP_CONFIG_HEADER="AppConfig.h"',
  46. '-mtune=generic',
  47. '-msse',
  48. '-msse2',
  49. '-mfpmath=sse',
  50. language: [ 'c', 'cpp', ],
  51. )
  52. if is_linux or is_freebsd
  53. add_project_arguments (
  54. '-DHAVE_X11=1',
  55. '-ffast-math',
  56. language: ['c', 'cpp',],
  57. )
  58. endif
  59. if is_windows
  60. add_project_arguments (
  61. '-D_WIN32_WINNT=0x0600',
  62. language: ['c', 'cpp',],
  63. )
  64. endif
  65. if get_option ('buildtype') == 'debug'
  66. add_project_arguments (
  67. '-DDEBUG',
  68. language: ['c', 'cpp',],
  69. )
  70. endif
  71. # === Libraries ===
  72. carla_engine_plugin_srcs = []
  73. carla_plugin_srcs = []
  74. native_plugins_srcs = []
  75. source_backend_inc = include_directories ('source/backend')
  76. source_includes_inc = include_directories ('source/includes')
  77. source_includes_vst3sdk_inc = include_directories ('source/includes/vst3sdk')
  78. source_modules_inc = include_directories ('source/modules')
  79. source_utils_inc = include_directories ('source/utils')
  80. source_inc = include_directories ('source')
  81. lilv_config_inc = include_directories ('source/modules/lilv/config')
  82. serd_lib = static_library ('serd',
  83. 'source/modules/lilv/serd.c',
  84. include_directories: [
  85. 'source/modules/lilv/serd-0.24.0',
  86. lilv_config_inc,
  87. ],
  88. gnu_symbol_visibility: 'inlineshidden',
  89. )
  90. serd_dep = declare_dependency (
  91. include_directories: 'source/modules/lilv/serd-0.24.0',
  92. link_with: serd_lib)
  93. sord_lib = static_library ('sord',
  94. 'source/modules/lilv/sord.c',
  95. include_directories: [
  96. 'source/modules/lilv/sord-0.16.0',
  97. 'source/modules/lilv/sord-0.16.0/src',
  98. lilv_config_inc,
  99. ],
  100. dependencies: serd_dep,
  101. gnu_symbol_visibility: 'inlineshidden',
  102. )
  103. sord_dep = declare_dependency (
  104. include_directories: 'source/modules/lilv/sord-0.16.0',
  105. dependencies: serd_dep,
  106. link_with: sord_lib)
  107. sratom_lib = static_library ('sratom',
  108. 'source/modules/lilv/sratom.c',
  109. include_directories: [
  110. 'source/modules/lilv/sratom-0.6.0',
  111. lilv_config_inc,
  112. source_includes_inc,
  113. ],
  114. gnu_symbol_visibility: 'inlineshidden',
  115. dependencies: sord_dep,
  116. )
  117. sratom_dep = declare_dependency (
  118. include_directories: 'source/modules/lilv/sratom-0.6.0',
  119. dependencies: sord_dep,
  120. link_with: sratom_lib)
  121. lilv_lib = static_library ('lilv',
  122. 'source/modules/lilv/lilv.c',
  123. include_directories: [
  124. 'source/modules/lilv/lilv-0.24.0',
  125. 'source/modules/lilv/lilv-0.24.0/src',
  126. lilv_config_inc,
  127. source_includes_inc,
  128. ],
  129. dependencies: sratom_dep,
  130. gnu_symbol_visibility: 'inlineshidden',
  131. )
  132. rtmempool_lib = static_library ('rtmempool',
  133. 'source/modules/rtmempool/rtmempool.c',
  134. include_directories: [
  135. source_includes_inc,
  136. ],
  137. )
  138. audio_decoder_srcs = [
  139. 'source/modules/audio_decoder/ad_dr_mp3.c',
  140. 'source/modules/audio_decoder/ad_ffmpeg.c',
  141. 'source/modules/audio_decoder/ad_minimp3.c',
  142. 'source/modules/audio_decoder/ad_plugin.c',
  143. 'source/modules/audio_decoder/ad_soundfile.c',
  144. ]
  145. audio_decoder_lib = static_library ('audio_decoder',
  146. audio_decoder_srcs,
  147. include_directories: [
  148. source_includes_inc,
  149. ],
  150. )
  151. sfzero_lib = static_library ('sfzero',
  152. 'source/modules/sfzero/SFZero.cpp',
  153. include_directories: [
  154. source_includes_inc,
  155. source_modules_inc,
  156. source_utils_inc,
  157. ],
  158. link_with: audio_decoder_lib,
  159. dependencies: [
  160. dependency ('threads'),
  161. ],
  162. )
  163. water_lib = static_library ('water',
  164. 'source/modules/water/water.cpp',
  165. include_directories: [
  166. source_includes_inc,
  167. source_utils_inc,
  168. ],
  169. gnu_symbol_visibility: 'inlineshidden',
  170. )
  171. ysfx_flags = [
  172. '-fsigned-char',
  173. '-DEELSCRIPT_NO_NET',
  174. '-DEELSCRIPT_NO_LICE',
  175. '-DNSEEL_ATOF=ysfx_wdl_atof',
  176. '-DWDL_FFT_REALSIZE=8',
  177. '-DWDL_LINEPARSE_ATOF=ysfx_wdl_atof',
  178. '-DYSFX_API=',
  179. '-DYSFX_NO_STANDARD_MUTEX',
  180. '-Wno-sign-compare',
  181. '-Wno-unused-function',
  182. '-Wno-unused-parameter',
  183. ]
  184. if is_windows
  185. ysfx_flags += [
  186. '-DNOMINMAX',
  187. ]
  188. elif is_darwin
  189. else
  190. ysfx_flags += [
  191. '-DSWELL_LICE_GDI',
  192. '-DSWELL_FONTCONFIG',
  193. '-DSWELL_FREETYPE',
  194. ]
  195. endif
  196. ysfx_srcs = [
  197. 'source/modules/ysfx/sources/lice_stb/lice_stb_bmp.cpp',
  198. 'source/modules/ysfx/sources/lice_stb/lice_stb_gif.cpp',
  199. 'source/modules/ysfx/sources/lice_stb/lice_stb_jpg.cpp',
  200. 'source/modules/ysfx/sources/lice_stb/lice_stb_loaders.cpp',
  201. 'source/modules/ysfx/sources/lice_stb/lice_stb_png.cpp',
  202. 'source/modules/ysfx/sources/lice_stb/lice_stb_write.cpp',
  203. 'source/modules/ysfx/sources/ysfx.cpp',
  204. 'source/modules/ysfx/sources/ysfx_api_eel.cpp',
  205. 'source/modules/ysfx/sources/ysfx_api_file.cpp',
  206. 'source/modules/ysfx/sources/ysfx_api_gfx.cpp',
  207. 'source/modules/ysfx/sources/ysfx_api_reaper.cpp',
  208. 'source/modules/ysfx/sources/ysfx_audio_flac.cpp',
  209. 'source/modules/ysfx/sources/ysfx_audio_wav.cpp',
  210. 'source/modules/ysfx/sources/ysfx_config.cpp',
  211. 'source/modules/ysfx/sources/ysfx_eel_utils.cpp',
  212. 'source/modules/ysfx/sources/ysfx_midi.cpp',
  213. 'source/modules/ysfx/sources/ysfx_parse.cpp',
  214. 'source/modules/ysfx/sources/ysfx_parse_menu.cpp',
  215. 'source/modules/ysfx/sources/ysfx_preset.cpp',
  216. 'source/modules/ysfx/sources/ysfx_reader.cpp',
  217. 'source/modules/ysfx/sources/ysfx_utils.cpp',
  218. 'source/modules/ysfx/sources/ysfx_utils_fts.cpp',
  219. 'source/modules/ysfx/thirdparty/WDL/source/WDL/fft.c',
  220. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-caltab.c',
  221. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-cfunc.c',
  222. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-compiler.c',
  223. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-eval.c',
  224. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-lextab.c',
  225. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-ram.c',
  226. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-yylex.c',
  227. 'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/y.tab.c',
  228. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice.cpp',
  229. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_arc.cpp',
  230. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_colorspace.cpp',
  231. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_image.cpp',
  232. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_line.cpp',
  233. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_palette.cpp',
  234. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_texgen.cpp',
  235. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_text.cpp',
  236. 'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_textnew.cpp',
  237. ]
  238. if is_gcc
  239. ysfx_srcs += [
  240. 'source/modules/ysfx/sources/eel2-gas/sources/asm-nseel-x64-sse.S',
  241. ]
  242. endif
  243. if is_windows
  244. ysfx_srcs += [
  245. 'source/modules/ysfx/thirdparty/WDL/source/WDL/win32_utf8.c',
  246. ]
  247. else # windows
  248. ysfx_srcs += [
  249. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-ini.cpp',
  250. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell.cpp',
  251. ]
  252. if is_darwin
  253. ysfx_srcs += [
  254. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-appstub.mm',
  255. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-dlg.mm',
  256. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi.mm',
  257. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-kb.mm',
  258. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-menu.mm',
  259. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-misc.mm',
  260. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-miscdlg.mm',
  261. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-modstub.mm',
  262. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-wnd.mm',
  263. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swellappmain.mm',
  264. ]
  265. else # macos
  266. ysfx_srcs += [
  267. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-appstub-generic.cpp',
  268. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-dlg-generic.cpp',
  269. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi-generic.cpp',
  270. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi-lice.cpp',
  271. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-generic-gdk.cpp',
  272. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-generic-headless.cpp',
  273. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-kb-generic.cpp',
  274. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-menu-generic.cpp',
  275. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-misc-generic.cpp',
  276. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-miscdlg-generic.cpp',
  277. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-modstub-generic.cpp',
  278. 'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-wnd-generic.cpp',
  279. ]
  280. endif # macos
  281. endif # windows
  282. ysfx_lib = static_library ('ysfx',
  283. ysfx_srcs,
  284. cpp_args: ysfx_flags,
  285. include_directories: [
  286. 'source/modules/ysfx/include',
  287. 'source/modules/ysfx/sources',
  288. 'source/modules/ysfx/thirdparty/WDL/source',
  289. 'source/modules/ysfx/thirdparty/dr_libs',
  290. 'source/modules/ysfx/thirdparty/stb',
  291. ],
  292. dependencies: [
  293. dependency('threads'),
  294. dependency('fontconfig'),
  295. dependency('freetype2'),
  296. ],
  297. gnu_symbol_visibility: 'inlineshidden',
  298. )
  299. zita_resampler_srcs = [
  300. 'source/modules/zita-resampler/cresampler.cc',
  301. 'source/modules/zita-resampler/resampler-table.cc',
  302. 'source/modules/zita-resampler/resampler.cc',
  303. 'source/modules/zita-resampler/vresampler.cc',
  304. ]
  305. zita_resampler_lib = static_library ('zita_resampler',
  306. zita_resampler_srcs,
  307. include_directories: [
  308. source_includes_inc,
  309. ],
  310. )
  311. juce_core_lib = static_library ('juce_core',
  312. 'source/modules/juce_core/juce_core.cpp',
  313. include_directories: [
  314. source_modules_inc,
  315. ],
  316. gnu_symbol_visibility: 'inlineshidden',
  317. )
  318. juce_data_structures_lib = static_library ('juce_data_structures',
  319. 'source/modules/juce_data_structures/juce_data_structures.cpp',
  320. include_directories: [
  321. source_modules_inc,
  322. source_includes_vst3sdk_inc,
  323. ],
  324. cpp_args: [
  325. '-DRELEASE',
  326. ],
  327. gnu_symbol_visibility: 'inlineshidden',
  328. )
  329. juce_gui_extra_lib = static_library ('juce_gui_extra',
  330. 'source/modules/juce_gui_extra/juce_gui_extra.cpp',
  331. include_directories: [
  332. source_modules_inc,
  333. source_includes_vst3sdk_inc,
  334. ],
  335. cpp_args: [
  336. '-DRELEASE',
  337. ],
  338. gnu_symbol_visibility: 'inlineshidden',
  339. )
  340. # needed for older mingw, crashes on optimized float operations
  341. juce_audio_basics_args = []
  342. if is_windows
  343. juce_audio_basics_args += [
  344. '-mpreferred-stack-boundary=2',
  345. ]
  346. endif
  347. juce_audio_basics_lib = static_library ('juce_audio_basics',
  348. 'source/modules/juce_audio_basics/juce_audio_basics.cpp',
  349. include_directories: [
  350. source_modules_inc,
  351. ],
  352. cpp_args: juce_audio_basics_args,
  353. gnu_symbol_visibility: 'inlineshidden',
  354. )
  355. juce_audio_processors_lib = static_library ('juce_audio_processors',
  356. 'source/modules/juce_audio_processors/juce_audio_processors.cpp',
  357. include_directories: [
  358. source_modules_inc,
  359. source_includes_vst3sdk_inc,
  360. ],
  361. cpp_args: [
  362. '-DRELEASE',
  363. ],
  364. link_with: [
  365. juce_data_structures_lib,
  366. juce_gui_extra_lib,
  367. ],
  368. gnu_symbol_visibility: 'inlineshidden',
  369. )
  370. juce_events_lib = static_library ('juce_events',
  371. 'source/modules/juce_events/juce_events.cpp',
  372. include_directories: [
  373. source_modules_inc,
  374. ],
  375. link_with: [
  376. juce_core_lib,
  377. ],
  378. gnu_symbol_visibility: 'inlineshidden',
  379. )
  380. juce_graphics_deps = []
  381. if is_linux
  382. juce_graphics_deps += dependency ('freetype2')
  383. endif
  384. juce_graphics_lib = static_library ('juce_graphics',
  385. 'source/modules/juce_graphics/juce_graphics.cpp',
  386. include_directories: [
  387. source_modules_inc,
  388. source_includes_vst3sdk_inc,
  389. ],
  390. cpp_args: [
  391. '-DRELEASE',
  392. ],
  393. dependencies: [
  394. juce_graphics_deps,
  395. ],
  396. gnu_symbol_visibility: 'inlineshidden',
  397. )
  398. juce_gui_basics_lib = static_library ('juce_gui_basics',
  399. 'source/modules/juce_gui_basics/juce_gui_basics.cpp',
  400. include_directories: [
  401. source_modules_inc,
  402. ],
  403. gnu_symbol_visibility: 'inlineshidden',
  404. )
  405. carla_juce_lib = static_library ('carla_juce',
  406. 'source/modules/carla_juce/carla_juce.cpp',
  407. include_directories: [
  408. source_includes_inc,
  409. source_modules_inc,
  410. source_utils_inc,
  411. ],
  412. link_with: [
  413. juce_events_lib,
  414. ],
  415. gnu_symbol_visibility: 'inlineshidden',
  416. )
  417. source_utils_srcs = [
  418. 'source/utils/CarlaPipeUtils.cpp',
  419. ]
  420. source_utils_lib = static_library ('source_utils',
  421. source_utils_srcs,
  422. include_directories: [
  423. source_includes_inc,
  424. source_modules_inc,
  425. source_utils_inc,
  426. ],
  427. link_with: [
  428. water_lib,
  429. ],
  430. )
  431. jackbridge_srcs = [
  432. 'source/jackbridge/JackBridge1.cpp',
  433. 'source/jackbridge/JackBridge2.cpp',
  434. 'source/jackbridge/JackBridge3.cpp',
  435. 'source/jackbridge/JackBridgeExport.cpp',
  436. ]
  437. jackbridge_lib = static_library ('jackbridge',
  438. jackbridge_srcs,
  439. include_directories: [
  440. source_includes_inc,
  441. source_utils_inc,
  442. ],
  443. )
  444. backend_utils_srcs = [
  445. 'source/backend/utils/CachedPlugins.cpp',
  446. 'source/backend/utils/Information.cpp',
  447. 'source/backend/utils/JUCE.cpp',
  448. 'source/backend/utils/PipeClient.cpp',
  449. 'source/backend/utils/System.cpp',
  450. 'source/backend/utils/Windows.cpp',
  451. ]
  452. backend_utils_lib = static_library ('backend_utils',
  453. backend_utils_srcs,
  454. include_directories: [
  455. source_backend_inc,
  456. source_includes_inc,
  457. source_modules_inc,
  458. source_utils_inc,
  459. source_inc,
  460. ],
  461. )
  462. carla_engine_srcs = [
  463. 'source/backend/engine/CarlaEngine.cpp',
  464. 'source/backend/engine/CarlaEngineClient.cpp',
  465. 'source/backend/engine/CarlaEngineData.cpp',
  466. 'source/backend/engine/CarlaEngineGraph.cpp',
  467. 'source/backend/engine/CarlaEngineInternal.cpp',
  468. 'source/backend/engine/CarlaEngineNative.cpp',
  469. 'source/backend/engine/CarlaEnginePorts.cpp',
  470. 'source/backend/engine/CarlaEngineRunner.cpp',
  471. 'source/backend/engine/CarlaEngineDummy.cpp',
  472. ]
  473. backend_engine_lib = static_library ('carla_engine',
  474. carla_engine_srcs,
  475. include_directories: [
  476. source_backend_inc,
  477. source_includes_inc,
  478. source_modules_inc,
  479. source_utils_inc,
  480. source_inc,
  481. ],
  482. link_with: [
  483. water_lib,
  484. jackbridge_lib,
  485. ],
  486. )
  487. backend_plugin_srcs = files([
  488. 'source/backend/plugin/CarlaPlugin.cpp',
  489. 'source/backend/plugin/CarlaPluginAU.cpp',
  490. 'source/backend/plugin/CarlaPluginBridge.cpp',
  491. 'source/backend/plugin/CarlaPluginCLAP.cpp',
  492. 'source/backend/plugin/CarlaPluginFluidSynth.cpp',
  493. 'source/backend/plugin/CarlaPluginInternal.cpp',
  494. 'source/backend/plugin/CarlaPluginJack.cpp',
  495. 'source/backend/plugin/CarlaPluginJSFX.cpp',
  496. 'source/backend/plugin/CarlaPluginJuce.cpp',
  497. 'source/backend/plugin/CarlaPluginLADSPADSSI.cpp',
  498. 'source/backend/plugin/CarlaPluginLV2.cpp',
  499. 'source/backend/plugin/CarlaPluginNative.cpp',
  500. 'source/backend/plugin/CarlaPluginSFZero.cpp',
  501. 'source/backend/plugin/CarlaPluginVST2.cpp',
  502. 'source/backend/plugin/CarlaPluginVST3.cpp',
  503. ])
  504. backend_plugin_lib = static_library ('backend_plugin',
  505. backend_plugin_srcs,
  506. include_directories: [
  507. source_backend_inc,
  508. source_includes_inc,
  509. source_modules_inc,
  510. source_utils_inc,
  511. source_inc,
  512. ],
  513. link_with: [
  514. water_lib,
  515. jackbridge_lib,
  516. rtmempool_lib,
  517. ysfx_lib,
  518. ],
  519. dependencies: [
  520. dependency ('threads'),
  521. ],
  522. )
  523. carla_discovery_exe = executable ('carla-discovery-native',
  524. 'source/discovery/carla-discovery.cpp',
  525. include_directories: [
  526. source_backend_inc,
  527. source_includes_inc,
  528. source_modules_inc,
  529. source_utils_inc,
  530. source_inc,
  531. ],
  532. link_with: [
  533. carla_juce_lib,
  534. backend_plugin_lib,
  535. water_lib,
  536. lilv_lib,
  537. juce_audio_basics_lib,
  538. juce_audio_processors_lib,
  539. juce_graphics_lib,
  540. juce_gui_basics_lib,
  541. ],
  542. dependencies: [
  543. dependency ('fluidsynth'),
  544. ],
  545. install: true,
  546. install_dir: get_option('libdir') / 'carla',
  547. )
  548. source_native_plugins_srcs = [
  549. 'source/native-plugins/audio-file.cpp',
  550. 'source/native-plugins/audio-gain.c',
  551. 'source/native-plugins/bypass.c',
  552. 'source/native-plugins/cv-to-audio.c',
  553. 'source/native-plugins/lfo.c',
  554. 'source/native-plugins/midi-to-cv.c',
  555. 'source/native-plugins/midi-channel-ab.c',
  556. 'source/native-plugins/midi-channelize.c',
  557. 'source/native-plugins/midi-channel-filter.c',
  558. 'source/native-plugins/midi-file.cpp',
  559. 'source/native-plugins/midi-gain.c',
  560. 'source/native-plugins/midi-join.c',
  561. 'source/native-plugins/midi-split.c',
  562. 'source/native-plugins/midi-through.c',
  563. 'source/native-plugins/midi-transpose.c',
  564. ]
  565. source_native_plugins_lib = static_library ('source_native_plugins',
  566. source_native_plugins_srcs,
  567. include_directories: [
  568. source_includes_inc,
  569. source_modules_inc,
  570. source_utils_inc,
  571. ],
  572. link_with: [
  573. zita_resampler_lib,
  574. ],
  575. )
  576. carla_plugin_deps = [
  577. dependency ('fluidsynth'),
  578. dependency ('liblo'),
  579. dependency ('threads'),
  580. ]
  581. if is_linux or is_freebsd
  582. carla_plugin_deps += [
  583. dependency ('x11'),
  584. dependency ('xcursor'),
  585. dependency ('xext'),
  586. ]
  587. endif
  588. carla_host_plugin_srcs = [
  589. 'source/plugin/carla-host-plugin.cpp',
  590. 'source/native-plugins/_all.c',
  591. 'source/native-plugins/_data.cpp',
  592. 'source/backend/engine/CarlaEngineOsc.cpp',
  593. 'source/backend/engine/CarlaEngineOscSend.cpp',
  594. 'source/backend/engine/CarlaEngineOscHandlers.cpp',
  595. 'source/backend/engine/CarlaEngineNative.cpp',
  596. 'source/backend/plugin/CarlaPlugin.cpp',
  597. 'source/utils/CarlaDssiUtils.cpp',
  598. 'source/utils/CarlaPluginUI.cpp',
  599. 'source/utils/CarlaStateUtils.cpp',
  600. 'source/utils/CarlaProcessUtils.cpp',
  601. ]
  602. carla_host_plugin_lib = both_libraries ('carla_host-plugin',
  603. carla_host_plugin_srcs,
  604. include_directories: [
  605. source_backend_inc,
  606. source_includes_inc,
  607. source_modules_inc,
  608. source_utils_inc,
  609. ],
  610. cpp_args: [
  611. '-DCARLA_PLUGIN_UI_CLASS_PREFIX=Plugin',
  612. ],
  613. dependencies: carla_plugin_deps,
  614. link_with: [
  615. lilv_lib,
  616. backend_plugin_lib,
  617. backend_engine_lib,
  618. source_utils_lib,
  619. source_native_plugins_lib,
  620. ysfx_lib,
  621. water_lib,
  622. jackbridge_lib,
  623. sfzero_lib,
  624. carla_juce_lib,
  625. juce_audio_basics_lib,
  626. juce_audio_processors_lib,
  627. juce_graphics_lib,
  628. juce_gui_basics_lib,
  629. ],
  630. gnu_symbol_visibility: 'hidden',
  631. install: true,
  632. install_dir: get_option('libdir') / 'carla',
  633. )
  634. carla_host_plugin_dep = declare_dependency (
  635. link_with: carla_host_plugin_lib)
  636. pkgconfig_mod.generate (
  637. carla_host_plugin_lib,
  638. subdirs: 'carla',
  639. extra_cflags: [
  640. '-DREAL_BUILD',
  641. '-I${includedir}/carla/includes',
  642. ],
  643. filebase: 'carla-host-plugin',
  644. name: 'carla-host-plugin',
  645. install_dir: get_option('libdir') / 'pkgconfig',
  646. description: 'Carla Host as Native Plugin')
  647. install_headers (
  648. 'source/includes/CarlaDefines.h',
  649. 'source/includes/CarlaMIDI.h',
  650. 'source/includes/CarlaNative.h',
  651. 'source/includes/CarlaNativePlugin.h',
  652. subdir: 'carla/includes')
  653. install_headers (
  654. 'source/backend/CarlaBackend.h',
  655. 'source/backend/CarlaHost.h',
  656. 'source/backend/CarlaUtils.h',
  657. subdir: 'carla')