|
- ###############################################################################
-
- if linux_embed
- # TODO deal with this later
- plugins = []
- else
- plugins = [
- 'chow',
- 'vitalium',
- ]
- endif
-
- plugin_include_dirs = [
- include_directories('../libs/juce-current'),
- include_directories('../libs/juce-current/source'),
- include_directories('../libs/juce-current/source/modules'),
- include_directories('../libs/juce-current/source/modules/juce_audio_processors/format_types/VST3_SDK'),
- include_directories('../libs/juce-plugin'),
- ]
-
- ###############################################################################
- # dependencies
-
- dependencies_plugin = [
- ]
-
- if os_windows
- dependencies_plugin += [
- cc.find_library('comdlg32'),
- cc.find_library('gdi32'),
- cc.find_library('imm32'),
- cc.find_library('ole32'),
- cc.find_library('oleaut32'),
- cc.find_library('shlwapi'),
- cc.find_library('uuid'),
- cc.find_library('version'),
- cc.find_library('winmm'),
- cc.find_library('wininet'),
- cc.find_library('ws2_32'),
- ]
- endif
-
- ###############################################################################
- # build flags for plugins
-
- build_flags_plugin = [
- '-Werror=deprecated-declarations',
- ]
-
- build_flags_plugin_debug = [
- ]
-
- build_flags_plugin_release = [
- '-ffast-math',
- ]
-
- build_flag_plugin_cpp = [
- '-std=gnu++14',
- ]
-
- if optimizations and not linux_embed
- build_flags_plugin_release += [
- '-mfpmath=sse',
- ]
- endif
-
- ###############################################################################
- # combine flags depending on build type
-
- if buildtype == 'debug'
- build_flags_plugin += build_flags_plugin_debug
- else
- build_flags_plugin += build_flags_plugin_release
- endif
-
- ###############################################################################
- # format-specific build flags
-
- build_flags_plugin_lv2 = [
- '-DJucePlugin_Build_AU=0',
- '-DJucePlugin_Build_LV2=1',
- '-DJucePlugin_Build_RTAS=0',
- '-DJucePlugin_Build_VST=0',
- '-DJucePlugin_Build_VST3=0',
- '-DJucePlugin_Build_Standalone=0',
- '-DBINTYPE=@0@LV2'.format(bintype_prefix),
- '-Wno-parentheses',
- '-Wno-deprecated-declarations', # FIXME
- ]
-
- build_flags_plugin_vst2 = [
- '-DJucePlugin_Build_AU=0',
- '-DJucePlugin_Build_LV2=0',
- '-DJucePlugin_Build_RTAS=0',
- '-DJucePlugin_Build_VST=1',
- '-DJucePlugin_Build_VST3=0',
- '-DJucePlugin_Build_Standalone=0',
- '-DBINTYPE=@0@VST2'.format(bintype_prefix),
- '-Wno-write-strings',
- ]
-
- build_flags_plugin_vst3 = [
- '-DJucePlugin_Build_AU=0',
- '-DJucePlugin_Build_LV2=0',
- '-DJucePlugin_Build_RTAS=0',
- '-DJucePlugin_Build_VST=0',
- '-DJucePlugin_Build_VST3=1',
- '-DJucePlugin_Build_Standalone=0',
- '-DBINTYPE=@0@VST3'.format(bintype_prefix),
- '-Wno-non-virtual-dtor',
- ]
-
- if os_windows
- build_flags_plugin_vst3 += [
- '-D_NATIVE_WCHAR_T_DEFINED',
- '-D__wchar_t=wchar_t',
- ]
- endif
-
- ###############################################################################
- # format-specific link flags
-
- link_flags_plugin_common = [
- ]
-
- if os_darwin
- link_flags_plugin_common += [
- '-framework', 'Accelerate',
- '-framework', 'AudioToolbox',
- '-framework', 'AudioUnit',
- '-framework', 'Carbon',
- '-framework', 'Cocoa',
- '-framework', 'CoreAudio',
- '-framework', 'CoreAudioKit',
- '-framework', 'CoreMIDI',
- '-framework', 'IOKit',
- '-framework', 'QuartzCore',
- '-framework', 'WebKit',
- ]
- link_flags_plugin_lv2 = [
- '-Wl,-exported_symbol,_lv2_generate_ttl',
- '-Wl,-exported_symbol,_lv2_descriptor',
- '-Wl,-exported_symbol,_lv2ui_descriptor',
- ]
- link_flags_plugin_vst2 = [
- '-Wl,-exported_symbol,_VSTPluginMain',
- ]
- link_flags_plugin_vst3 = [
- '-Wl,-exported_symbol,_bundleEntry',
- '-Wl,-exported_symbol,_bundleExit',
- '-Wl,-exported_symbol,_GetPluginFactory',
- ]
- else
- link_flags_plugin_lv2 = [
- '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols-lv2.version',
- ]
- link_flags_plugin_vst2 = [
- '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols-vst2.version',
- ]
- link_flags_plugin_vst3 = [
- '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols-vst3.version',
- ]
- endif
-
- ###############################################################################
-
- foreach plugin : plugins
- if plugin in get_option('plugins') and not build_legacy_only
- plugin_uses_opengl = false
- plugin_extra_dependencies = []
- plugin_extra_include_dirs = []
- plugin_extra_build_flags = []
- plugin_extra_link_flags = []
- plugin_extra_format_specific_srcs = []
-
- subdir(plugin)
-
- plugin_extra_format_specific_srcs += files([
- '../libs/juce-plugin/JucePluginMain.cpp',
- '../libs/juce-plugin/JucePluginUtils.cpp',
- ])
-
- if plugin_uses_opengl
- if os_darwin
- plugin_extra_link_flags += [
- '-framework', 'OpenGL',
- ]
- elif os_windows
- plugin_extra_dependencies += [
- cc.find_library('opengl32'),
- ]
- elif not linux_embed
- plugin_extra_dependencies += [
- dependency('gl')
- ]
- endif
- endif
-
- plugin_lib = static_library(plugin_name + '_lib',
- name_prefix: '',
- sources: plugin_srcs,
- include_directories: [
- include_directories(plugin),
- plugin_include_dirs,
- plugin_extra_include_dirs,
- ],
- c_args: build_flags + build_flags_plugin + plugin_extra_build_flags,
- cpp_args: build_flags_cpp + build_flags_plugin + build_flag_plugin_cpp + plugin_extra_build_flags,
- dependencies: dependencies_plugin + plugin_extra_dependencies,
- pic: true,
- install: false,
- )
-
- if build_lv2
- plugin_lv2_lib = shared_library(plugin_name + '_lv2',
- name_prefix: '',
- sources: plugin_extra_format_specific_srcs,
- include_directories: [
- include_directories(plugin),
- plugin_include_dirs,
- plugin_extra_include_dirs,
- ],
- c_args: build_flags + build_flags_plugin + build_flags_plugin_lv2 + plugin_extra_build_flags,
- cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_lv2 + build_flag_plugin_cpp + plugin_extra_build_flags,
- link_args: link_flags + link_flags_plugin_common + link_flags_plugin_lv2 + plugin_extra_link_flags,
- link_with: [ lib_juce_current, plugin_lib ],
- )
-
- plugin_lv2_dir = meson.current_build_dir() / plugin_name + '.lv2'
-
- plugin_lv2_ttl = custom_target(plugin_name + '_lv2-ttl',
- output: plugin_name + '.lv2',
- input: plugin_lv2_lib,
- command: [
- 'mkdir', '-p', plugin_lv2_dir, '&&',
- 'cd', plugin_lv2_dir, '&&',
- 'mv', plugin_lv2_lib.full_path(), plugin_lv2_dir / plugin_name + lib_suffix, '&&',
- (meson.is_cross_build() ? 'wine' : 'env'), lv2_ttl_generator, '.' / plugin_name + lib_suffix,
- ],
- install: true,
- install_dir: lv2dir,
- )
- endif
-
- if build_vst2
- plugin_vst2 = shared_library(plugin_name,
- name_prefix: '',
- sources: plugin_extra_format_specific_srcs,
- include_directories: [
- include_directories(plugin),
- plugin_include_dirs,
- plugin_extra_include_dirs,
- ],
- c_args: build_flags + build_flags_plugin + build_flags_plugin_vst2 + plugin_extra_build_flags,
- cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_vst2 + build_flag_plugin_cpp + plugin_extra_build_flags,
- link_args: link_flags + link_flags_plugin_common + link_flags_plugin_vst2 + plugin_extra_link_flags,
- link_with: [ lib_juce_current, plugin_lib ],
- install: true,
- install_dir: vst2dir,
- )
- endif
-
- if build_vst3
- plugin_vst3_lib = shared_library(plugin_name + '-vst3',
- name_prefix: '',
- sources: plugin_extra_format_specific_srcs,
- include_directories: [
- include_directories(plugin),
- plugin_include_dirs,
- plugin_extra_include_dirs,
- ],
- c_args: build_flags + build_flags_plugin + build_flags_plugin_vst3 + plugin_extra_build_flags,
- cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_vst3 + build_flag_plugin_cpp + plugin_extra_build_flags,
- link_args: link_flags + link_flags_plugin_common + link_flags_plugin_vst3 + plugin_extra_link_flags,
- link_with: [ lib_juce_current, plugin_lib ],
- )
-
- plugin_vst3_dir = meson.current_build_dir() / plugin_name + '.vst3' / 'Contents' / host_machine.cpu_family() + '-' + host_machine.system()
-
- plugin_vst3 = custom_target(plugin_name + '_vst3-bundle',
- output: plugin_name + '.vst3',
- input: plugin_vst3_lib,
- command: [
- 'mkdir', '-p', plugin_vst3_dir, '&&',
- 'cd', plugin_vst3_dir, '&&',
- 'mv', plugin_vst3_lib.full_path(), plugin_vst3_dir / plugin_name + lib_suffix,
- ],
- install: true,
- install_dir: vst3dir,
- )
- endif
- endif
- endforeach
-
- ###############################################################################
|