Browse Source

add meson build config for host plugin and discovery

pull/1690/head
Alexandros Theodotou 2 years ago
parent
commit
39033669f8
No known key found for this signature in database GPG Key ID: 22EAE42313D70F3
2 changed files with 715 additions and 0 deletions
  1. +714
    -0
      meson.build
  2. +1
    -0
      source/modules/ysfx/thirdparty/WDL/source/WDL/wdlutf8.h

+ 714
- 0
meson.build View File

@@ -0,0 +1,714 @@
project (
'carla', ['c', 'cpp',],
license: 'GPL-2.0-or-later',
default_options: [
'cpp_std=c++14',
'buildtype=debugoptimized',
'warning_level=1',
],
# see also source/frontend/carla_shared.py and source/includes/CarlaDefines.h
version: '2.5.1',
)

pkgconfig_mod = import ('pkgconfig')

is_darwin = false
is_linux = false
is_freebsd = false
is_windows = false
bin_suffix = ''
lib_suffix = '.so'

if host_machine.system() == 'darwin'
is_darwin = true
lib_suffix = '.dylib'
elif host_machine.system() == 'linux'
is_linux = true
elif host_machine.system() == 'freebsd'
is_freebsd = true
elif host_machine.system() == 'windows'
is_windows = true
bin_suffix = '.exe'
lib_suffix = '.dll'
else
error ('unknown host system ' + host_machine.system ())
endif

if is_darwin
add_languages ('objc')
endif

cpp = meson.get_compiler('cpp')
is_gcc = cpp.get_id () == 'gcc'

# === Dependencies ===

add_project_arguments (
'-DREAL_BUILD',
'-DCARLA_LIB_EXT="' + lib_suffix + '"',
'-DHAVE_FLUIDSYNTH=1',
'-DHAVE_LIBLO=1',
'-DUSING_JUCE',
'-DJUCE_APP_CONFIG_HEADER="AppConfig.h"',
'-mtune=generic',
'-msse',
'-msse2',
'-mfpmath=sse',
language: [ 'c', 'cpp', ],
)

if is_linux or is_freebsd
add_project_arguments (
'-DHAVE_X11=1',
'-ffast-math',
language: ['c', 'cpp',],
)
endif

if is_windows
add_project_arguments (
'-D_WIN32_WINNT=0x0600',
language: ['c', 'cpp',],
)
endif

if get_option ('buildtype') == 'debug'
add_project_arguments (
'-DDEBUG',
language: ['c', 'cpp',],
)
endif

# === Libraries ===

carla_engine_plugin_srcs = []
carla_plugin_srcs = []
native_plugins_srcs = []

source_backend_inc = include_directories ('source/backend')
source_includes_inc = include_directories ('source/includes')
source_includes_vst3sdk_inc = include_directories ('source/includes/vst3sdk')
source_modules_inc = include_directories ('source/modules')
source_utils_inc = include_directories ('source/utils')
source_inc = include_directories ('source')

lilv_config_inc = include_directories ('source/modules/lilv/config')

serd_lib = static_library ('serd',
'source/modules/lilv/serd.c',
include_directories: [
'source/modules/lilv/serd-0.24.0',
lilv_config_inc,
],
gnu_symbol_visibility: 'inlineshidden',
)
serd_dep = declare_dependency (
include_directories: 'source/modules/lilv/serd-0.24.0',
link_with: serd_lib)

sord_lib = static_library ('sord',
'source/modules/lilv/sord.c',
include_directories: [
'source/modules/lilv/sord-0.16.0',
'source/modules/lilv/sord-0.16.0/src',
lilv_config_inc,
],
dependencies: serd_dep,
gnu_symbol_visibility: 'inlineshidden',
)
sord_dep = declare_dependency (
include_directories: 'source/modules/lilv/sord-0.16.0',
dependencies: serd_dep,
link_with: sord_lib)

sratom_lib = static_library ('sratom',
'source/modules/lilv/sratom.c',
include_directories: [
'source/modules/lilv/sratom-0.6.0',
lilv_config_inc,
source_includes_inc,
],
gnu_symbol_visibility: 'inlineshidden',
dependencies: sord_dep,
)
sratom_dep = declare_dependency (
include_directories: 'source/modules/lilv/sratom-0.6.0',
dependencies: sord_dep,
link_with: sratom_lib)

lilv_lib = static_library ('lilv',
'source/modules/lilv/lilv.c',
include_directories: [
'source/modules/lilv/lilv-0.24.0',
'source/modules/lilv/lilv-0.24.0/src',
lilv_config_inc,
source_includes_inc,
],
dependencies: sratom_dep,
gnu_symbol_visibility: 'inlineshidden',
)

rtmempool_lib = static_library ('rtmempool',
'source/modules/rtmempool/rtmempool.c',
include_directories: [
source_includes_inc,
],
)

audio_decoder_srcs = [
'source/modules/audio_decoder/ad_dr_mp3.c',
'source/modules/audio_decoder/ad_ffmpeg.c',
'source/modules/audio_decoder/ad_minimp3.c',
'source/modules/audio_decoder/ad_plugin.c',
'source/modules/audio_decoder/ad_soundfile.c',
]
audio_decoder_lib = static_library ('audio_decoder',
audio_decoder_srcs,
include_directories: [
source_includes_inc,
],
)

sfzero_lib = static_library ('sfzero',
'source/modules/sfzero/SFZero.cpp',
include_directories: [
source_includes_inc,
source_modules_inc,
source_utils_inc,
],
link_with: audio_decoder_lib,
dependencies: [
dependency ('threads'),
],
)

water_lib = static_library ('water',
'source/modules/water/water.cpp',
include_directories: [
source_includes_inc,
source_utils_inc,
],
gnu_symbol_visibility: 'inlineshidden',
)

ysfx_flags = [
'-fsigned-char',
'-DEELSCRIPT_NO_NET',
'-DEELSCRIPT_NO_LICE',
'-DNSEEL_ATOF=ysfx_wdl_atof',
'-DWDL_FFT_REALSIZE=8',
'-DWDL_LINEPARSE_ATOF=ysfx_wdl_atof',
'-DYSFX_API=',
'-DYSFX_NO_STANDARD_MUTEX',
'-Wno-sign-compare',
'-Wno-unused-function',
'-Wno-unused-parameter',
]

if is_windows
ysfx_flags += [
'-DNOMINMAX',
]
elif is_darwin
else
ysfx_flags += [
'-DSWELL_LICE_GDI',
'-DSWELL_FONTCONFIG',
'-DSWELL_FREETYPE',
]
endif

ysfx_srcs = [
'source/modules/ysfx/sources/lice_stb/lice_stb_bmp.cpp',
'source/modules/ysfx/sources/lice_stb/lice_stb_gif.cpp',
'source/modules/ysfx/sources/lice_stb/lice_stb_jpg.cpp',
'source/modules/ysfx/sources/lice_stb/lice_stb_loaders.cpp',
'source/modules/ysfx/sources/lice_stb/lice_stb_png.cpp',
'source/modules/ysfx/sources/lice_stb/lice_stb_write.cpp',
'source/modules/ysfx/sources/ysfx.cpp',
'source/modules/ysfx/sources/ysfx_api_eel.cpp',
'source/modules/ysfx/sources/ysfx_api_file.cpp',
'source/modules/ysfx/sources/ysfx_api_gfx.cpp',
'source/modules/ysfx/sources/ysfx_api_reaper.cpp',
'source/modules/ysfx/sources/ysfx_audio_flac.cpp',
'source/modules/ysfx/sources/ysfx_audio_wav.cpp',
'source/modules/ysfx/sources/ysfx_config.cpp',
'source/modules/ysfx/sources/ysfx_eel_utils.cpp',
'source/modules/ysfx/sources/ysfx_midi.cpp',
'source/modules/ysfx/sources/ysfx_parse.cpp',
'source/modules/ysfx/sources/ysfx_parse_menu.cpp',
'source/modules/ysfx/sources/ysfx_preset.cpp',
'source/modules/ysfx/sources/ysfx_reader.cpp',
'source/modules/ysfx/sources/ysfx_utils.cpp',
'source/modules/ysfx/sources/ysfx_utils_fts.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/fft.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-caltab.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-cfunc.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-compiler.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-eval.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-lextab.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-ram.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/nseel-yylex.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/eel2/y.tab.c',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_arc.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_colorspace.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_image.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_line.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_palette.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_texgen.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_text.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/lice/lice_textnew.cpp',
]

if is_gcc
ysfx_srcs += [
'source/modules/ysfx/sources/eel2-gas/sources/asm-nseel-x64-sse.S',
]
endif

if is_windows
ysfx_srcs += [
'source/modules/ysfx/thirdparty/WDL/source/WDL/win32_utf8.c',
]
else # windows
ysfx_srcs += [
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-ini.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell.cpp',
]
if is_darwin
ysfx_srcs += [
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-appstub.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-dlg.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-kb.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-menu.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-misc.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-miscdlg.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-modstub.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-wnd.mm',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swellappmain.mm',
]
else # macos
ysfx_srcs += [
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-appstub-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-dlg-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-gdi-lice.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-generic-gdk.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-generic-headless.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-kb-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-menu-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-misc-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-miscdlg-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-modstub-generic.cpp',
'source/modules/ysfx/thirdparty/WDL/source/WDL/swell/swell-wnd-generic.cpp',
]
endif # macos
endif # windows

ysfx_lib = static_library ('ysfx',
ysfx_srcs,
cpp_args: ysfx_flags,
include_directories: [
'source/modules/ysfx/include',
'source/modules/ysfx/sources',
'source/modules/ysfx/thirdparty/WDL/source',
'source/modules/ysfx/thirdparty/dr_libs',
'source/modules/ysfx/thirdparty/stb',
],
dependencies: [
dependency('threads'),
dependency('fontconfig'),
dependency('freetype2'),
],
gnu_symbol_visibility: 'inlineshidden',
)

zita_resampler_srcs = [
'source/modules/zita-resampler/cresampler.cc',
'source/modules/zita-resampler/resampler-table.cc',
'source/modules/zita-resampler/resampler.cc',
'source/modules/zita-resampler/vresampler.cc',
]
zita_resampler_lib = static_library ('zita_resampler',
zita_resampler_srcs,
include_directories: [
source_includes_inc,
],
)

juce_core_lib = static_library ('juce_core',
'source/modules/juce_core/juce_core.cpp',
include_directories: [
source_modules_inc,
],
gnu_symbol_visibility: 'inlineshidden',
)

juce_data_structures_lib = static_library ('juce_data_structures',
'source/modules/juce_data_structures/juce_data_structures.cpp',
include_directories: [
source_modules_inc,
source_includes_vst3sdk_inc,
],
cpp_args: [
'-DRELEASE',
],
gnu_symbol_visibility: 'inlineshidden',
)

juce_gui_extra_lib = static_library ('juce_gui_extra',
'source/modules/juce_gui_extra/juce_gui_extra.cpp',
include_directories: [
source_modules_inc,
source_includes_vst3sdk_inc,
],
cpp_args: [
'-DRELEASE',
],
gnu_symbol_visibility: 'inlineshidden',
)

# needed for older mingw, crashes on optimized float operations
juce_audio_basics_args = []
if is_windows
juce_audio_basics_args += [
'-mpreferred-stack-boundary=2',
]
endif

juce_audio_basics_lib = static_library ('juce_audio_basics',
'source/modules/juce_audio_basics/juce_audio_basics.cpp',
include_directories: [
source_modules_inc,
],
cpp_args: juce_audio_basics_args,
gnu_symbol_visibility: 'inlineshidden',
)

juce_audio_processors_lib = static_library ('juce_audio_processors',
'source/modules/juce_audio_processors/juce_audio_processors.cpp',
include_directories: [
source_modules_inc,
source_includes_vst3sdk_inc,
],
cpp_args: [
'-DRELEASE',
],
link_with: [
juce_data_structures_lib,
juce_gui_extra_lib,
],
gnu_symbol_visibility: 'inlineshidden',
)

juce_events_lib = static_library ('juce_events',
'source/modules/juce_events/juce_events.cpp',
include_directories: [
source_modules_inc,
],
link_with: [
juce_core_lib,
],
gnu_symbol_visibility: 'inlineshidden',
)

juce_graphics_deps = []
if is_linux
juce_graphics_deps += dependency ('freetype2')
endif

juce_graphics_lib = static_library ('juce_graphics',
'source/modules/juce_graphics/juce_graphics.cpp',
include_directories: [
source_modules_inc,
source_includes_vst3sdk_inc,
],
cpp_args: [
'-DRELEASE',
],
dependencies: [
juce_graphics_deps,
],
gnu_symbol_visibility: 'inlineshidden',
)

juce_gui_basics_lib = static_library ('juce_gui_basics',
'source/modules/juce_gui_basics/juce_gui_basics.cpp',
include_directories: [
source_modules_inc,
],
gnu_symbol_visibility: 'inlineshidden',
)

carla_juce_lib = static_library ('carla_juce',
'source/modules/carla_juce/carla_juce.cpp',
include_directories: [
source_includes_inc,
source_modules_inc,
source_utils_inc,
],
link_with: [
juce_events_lib,
],
gnu_symbol_visibility: 'inlineshidden',
)

source_utils_srcs = [
'source/utils/CarlaPipeUtils.cpp',
]
source_utils_lib = static_library ('source_utils',
source_utils_srcs,
include_directories: [
source_includes_inc,
source_modules_inc,
source_utils_inc,
],
link_with: [
water_lib,
],
)

jackbridge_srcs = [
'source/jackbridge/JackBridge1.cpp',
'source/jackbridge/JackBridge2.cpp',
'source/jackbridge/JackBridge3.cpp',
'source/jackbridge/JackBridgeExport.cpp',
]
jackbridge_lib = static_library ('jackbridge',
jackbridge_srcs,
include_directories: [
source_includes_inc,
source_utils_inc,
],
)

backend_utils_srcs = [
'source/backend/utils/CachedPlugins.cpp',
'source/backend/utils/Information.cpp',
'source/backend/utils/JUCE.cpp',
'source/backend/utils/PipeClient.cpp',
'source/backend/utils/System.cpp',
'source/backend/utils/Windows.cpp',
]
backend_utils_lib = static_library ('backend_utils',
backend_utils_srcs,
include_directories: [
source_backend_inc,
source_includes_inc,
source_modules_inc,
source_utils_inc,
source_inc,
],
)

carla_engine_srcs = [
'source/backend/engine/CarlaEngine.cpp',
'source/backend/engine/CarlaEngineClient.cpp',
'source/backend/engine/CarlaEngineData.cpp',
'source/backend/engine/CarlaEngineGraph.cpp',
'source/backend/engine/CarlaEngineInternal.cpp',
'source/backend/engine/CarlaEngineNative.cpp',
'source/backend/engine/CarlaEnginePorts.cpp',
'source/backend/engine/CarlaEngineRunner.cpp',
'source/backend/engine/CarlaEngineDummy.cpp',
]

backend_engine_lib = static_library ('carla_engine',
carla_engine_srcs,
include_directories: [
source_backend_inc,
source_includes_inc,
source_modules_inc,
source_utils_inc,
source_inc,
],
link_with: [
water_lib,
jackbridge_lib,
],
)

backend_plugin_srcs = files([
'source/backend/plugin/CarlaPlugin.cpp',
'source/backend/plugin/CarlaPluginAU.cpp',
'source/backend/plugin/CarlaPluginBridge.cpp',
'source/backend/plugin/CarlaPluginCLAP.cpp',
'source/backend/plugin/CarlaPluginFluidSynth.cpp',
'source/backend/plugin/CarlaPluginInternal.cpp',
'source/backend/plugin/CarlaPluginJack.cpp',
'source/backend/plugin/CarlaPluginJSFX.cpp',
'source/backend/plugin/CarlaPluginJuce.cpp',
'source/backend/plugin/CarlaPluginLADSPADSSI.cpp',
'source/backend/plugin/CarlaPluginLV2.cpp',
'source/backend/plugin/CarlaPluginNative.cpp',
'source/backend/plugin/CarlaPluginSFZero.cpp',
'source/backend/plugin/CarlaPluginVST2.cpp',
'source/backend/plugin/CarlaPluginVST3.cpp',
])

backend_plugin_lib = static_library ('backend_plugin',
backend_plugin_srcs,
include_directories: [
source_backend_inc,
source_includes_inc,
source_modules_inc,
source_utils_inc,
source_inc,
],
link_with: [
water_lib,
jackbridge_lib,
rtmempool_lib,
ysfx_lib,
],
dependencies: [
dependency ('threads'),
],
)

carla_discovery_exe = executable ('carla-discovery-native',
'source/discovery/carla-discovery.cpp',
include_directories: [
source_backend_inc,
source_includes_inc,
source_modules_inc,
source_utils_inc,
source_inc,
],
link_with: [
carla_juce_lib,
backend_plugin_lib,
water_lib,
lilv_lib,
juce_audio_basics_lib,
juce_audio_processors_lib,
juce_graphics_lib,
juce_gui_basics_lib,
],
dependencies: [
dependency ('fluidsynth'),
],
install: true,
install_dir: get_option('libdir') / 'carla',
)

source_native_plugins_srcs = [
'source/native-plugins/audio-file.cpp',
'source/native-plugins/audio-gain.c',
'source/native-plugins/bypass.c',
'source/native-plugins/cv-to-audio.c',
'source/native-plugins/lfo.c',
'source/native-plugins/midi-to-cv.c',
'source/native-plugins/midi-channel-ab.c',
'source/native-plugins/midi-channelize.c',
'source/native-plugins/midi-channel-filter.c',
'source/native-plugins/midi-file.cpp',
'source/native-plugins/midi-gain.c',
'source/native-plugins/midi-join.c',
'source/native-plugins/midi-split.c',
'source/native-plugins/midi-through.c',
'source/native-plugins/midi-transpose.c',
]

source_native_plugins_lib = static_library ('source_native_plugins',
source_native_plugins_srcs,
include_directories: [
source_includes_inc,
source_modules_inc,
source_utils_inc,
],
link_with: [
zita_resampler_lib,
],
)

carla_plugin_deps = [
dependency ('fluidsynth'),
dependency ('liblo'),
dependency ('threads'),
]
if is_linux or is_freebsd
carla_plugin_deps += [
dependency ('x11'),
dependency ('xcursor'),
dependency ('xext'),
]
endif

carla_host_plugin_srcs = [
'source/plugin/carla-host-plugin.cpp',
'source/native-plugins/_all.c',
'source/native-plugins/_data.cpp',
'source/backend/engine/CarlaEngineOsc.cpp',
'source/backend/engine/CarlaEngineOscSend.cpp',
'source/backend/engine/CarlaEngineOscHandlers.cpp',
'source/backend/engine/CarlaEngineNative.cpp',
'source/backend/plugin/CarlaPlugin.cpp',
'source/utils/CarlaDssiUtils.cpp',
'source/utils/CarlaPluginUI.cpp',
'source/utils/CarlaStateUtils.cpp',
'source/utils/CarlaProcessUtils.cpp',
]

carla_host_plugin_lib = both_libraries ('carla_host-plugin',
carla_host_plugin_srcs,
include_directories: [
source_backend_inc,
source_includes_inc,
source_modules_inc,
source_utils_inc,
],
cpp_args: [
'-DCARLA_PLUGIN_UI_CLASS_PREFIX=Plugin',
],
dependencies: carla_plugin_deps,
link_with: [
lilv_lib,
backend_plugin_lib,
backend_engine_lib,
source_utils_lib,
source_native_plugins_lib,
ysfx_lib,
water_lib,
jackbridge_lib,
sfzero_lib,
carla_juce_lib,
juce_audio_basics_lib,
juce_audio_processors_lib,
juce_graphics_lib,
juce_gui_basics_lib,
],
gnu_symbol_visibility: 'hidden',
install: true,
install_dir: get_option('libdir') / 'carla',
)

carla_host_plugin_dep = declare_dependency (
link_with: carla_host_plugin_lib)

pkgconfig_mod.generate (
carla_host_plugin_lib,
subdirs: 'carla',
extra_cflags: [
'-DREAL_BUILD',
'-I${includedir}/carla/includes',
],
filebase: 'carla-host-plugin',
name: 'carla-host-plugin',
install_dir: get_option('libdir') / 'pkgconfig',
description: 'Carla Host as Native Plugin')

install_headers (
'source/includes/CarlaDefines.h',
'source/includes/CarlaMIDI.h',
'source/includes/CarlaNative.h',
'source/includes/CarlaNativePlugin.h',
subdir: 'carla/includes')

install_headers (
'source/backend/CarlaBackend.h',
'source/backend/CarlaHost.h',
'source/backend/CarlaUtils.h',
subdir: 'carla')

+ 1
- 0
source/modules/ysfx/thirdparty/WDL/source/WDL/wdlutf8.h View File

@@ -27,6 +27,7 @@ misrepresented as being the original software.
* todo: handle multi-byte (make WideStr support UTF-16)
*/

#include <stddef.h>
#include "wdltypes.h"

#ifndef WDL_WCHAR


Loading…
Cancel
Save