1project('espressivo.lv2', 'c', default_options : [ 2 'buildtype=release', 3 'warning_level=1', 4 'werror=true', 5 'b_lto=false', 6 'c_std=c11']) 7 8add_project_arguments('-D_GNU_SOURCE', language : 'c') 9 10conf_data = configuration_data() 11cc = meson.get_compiler('c') 12 13cp = find_program('cp') 14lv2_validate = find_program('lv2_validate', native : true, required : false) 15sord_validate = find_program('sord_validate', native : true, required : false) 16lv2lint = find_program('lv2lint', required : false) 17clone = [cp, '@INPUT@', '@OUTPUT@'] 18 19m_dep = cc.find_library('m') 20lv2_dep = dependency('lv2', version : '>=1.14.0') 21deps = [m_dep, lv2_dep] 22 23props_inc = include_directories('props.lv2') 24osc_inc = include_directories('osc.lv2') 25canvas_inc = include_directories('canvas.lv2') 26xpress_inc = include_directories('xpress.lv2') 27inc_dir = [props_inc, osc_inc, canvas_inc, xpress_inc] 28 29inst_dir = join_paths(get_option('libdir'), 'lv2', meson.project_name()) 30 31dsp_srcs = ['espressivo.c', 32 'chord_flt.c', 33 'discreto_flt.c', 34 'midi_in.c', 35 'midi_out.c', 36 'modulator_flt.c', 37 'monitor_out.c', 38 'mpe_in.c', 39 'mpe_out.c', 40 'redirector_flt.c', 41 'reducto_flt.c', 42 'sampleandhold_flt.c', 43 'sc_out.c', 44 'sqew_flt.c', 45 'through_flt.c', 46 'tuio2_in.c', 47 'tuio2_out.c'] 48 49c_args = ['-fvisibility=hidden', 50 '-ffast-math'] 51 52if host_machine.system() == 'windows' 53 # nothing 54elif host_machine.system() == 'darwin' 55 # nothing 56else 57 rt_dep = cc.find_library('rt') 58 deps += rt_dep 59endif 60 61mod = shared_module('espressivo', dsp_srcs, 62 c_args : c_args, 63 include_directories : inc_dir, 64 name_prefix : '', 65 dependencies : deps, 66 install : true, 67 install_dir : inst_dir) 68 69version = run_command('cat', 'VERSION').stdout().strip().split('.') 70conf_data.set('MAJOR_VERSION', version[0]) 71conf_data.set('MINOR_VERSION', version[1]) 72conf_data.set('MICRO_VERSION', version[2]) 73 74suffix = mod.full_path().strip().split('.')[-1] 75conf_data.set('MODULE_SUFFIX', '.' + suffix) 76 77manifest_ttl = configure_file(input : 'manifest.ttl.in', output : 'manifest.ttl', 78 configuration : conf_data, 79 install : true, 80 install_dir : inst_dir) 81dsp_ttl = custom_target('espressivo_ttl', 82 input : 'espressivo.ttl', 83 output : 'espressivo.ttl', 84 command : clone, 85 install : true, 86 install_dir : inst_dir) 87 88if lv2_validate.found() and sord_validate.found() 89 test('LV2 validate', lv2_validate, 90 args : [manifest_ttl, dsp_ttl]) 91endif 92 93if lv2lint.found() 94 test('LV2 lint', lv2lint, 95 args : ['-Ewarn', 96 'http://open-music-kontrollers.ch/lv2/espressivo#chord', 97 'http://open-music-kontrollers.ch/lv2/espressivo#discreto', 98 'http://open-music-kontrollers.ch/lv2/espressivo#midi_in', 99 'http://open-music-kontrollers.ch/lv2/espressivo#modulator', 100 'http://open-music-kontrollers.ch/lv2/espressivo#monitor_out', 101 'http://open-music-kontrollers.ch/lv2/espressivo#mpe_in', 102 'http://open-music-kontrollers.ch/lv2/espressivo#mpe_out', 103 'http://open-music-kontrollers.ch/lv2/espressivo#redirector', 104 'http://open-music-kontrollers.ch/lv2/espressivo#reducto', 105 'http://open-music-kontrollers.ch/lv2/espressivo#sc_out', 106 'http://open-music-kontrollers.ch/lv2/espressivo#snh', 107 'http://open-music-kontrollers.ch/lv2/espressivo#sqew', 108 'http://open-music-kontrollers.ch/lv2/espressivo#through', 109 'http://open-music-kontrollers.ch/lv2/espressivo#tuio2_in', 110 'http://open-music-kontrollers.ch/lv2/espressivo#tuio2_out']) 111endif 112