project('canvas_display.lv2', 'c', default_options : [ 'buildtype=release', 'warning_level=1', 'werror=false', 'b_lto=true', 'c_std=c11']) cc = meson.get_compiler('c') m_dep = cc.find_library('m') lv2_dep = dependency('lv2', version : '>=1.14.0') cairo_dep = dependency('cairo', version : '>=1.0.0', static : meson.is_cross_build() and false) #FIXME dsp_deps = [m_dep, lv2_dep, cairo_dep] ui_deps = [m_dep, lv2_dep] pugl_inc = include_directories('pugl') nanovg_inc = include_directories('nanovg/src') glew_inc = include_directories('glew-2.1.0') canvas_inc = include_directories('canvas.lv2') ardour_inc = include_directories('ardour.lv2') inc_dir = [pugl_inc, nanovg_inc, glew_inc, canvas_inc, ardour_inc] inst_dir = join_paths(get_option('libdir'), 'lv2', meson.project_name()) rawvers = run_command('cat', 'VERSION').stdout().strip() version = rawvers.split('.') conf_data = configuration_data() conf_data.set('MAJOR_VERSION', version[0]) conf_data.set('MINOR_VERSION', version[1]) conf_data.set('MICRO_VERSION', version[2]) add_project_arguments('-D_GNU_SOURCE', language : 'c') add_project_arguments('-DPUGL_HAVE_GL', language : 'c') cp = find_program('cp') clone = [cp, '@INPUT@', '@OUTPUT@'] dsp_srcs = ['canvas.c'] ui_srcs = [ 'canvas_ui.c', join_paths('nanovg', 'src', 'nanovg.c'), join_paths('glew-2.1.0', 'glew.c') ] ui_links = [] c_args = ['-fvisibility=hidden', '-ffast-math'] if host_machine.system() == 'windows' add_languages('cpp') conf_data.set('UI_TYPE', 'WindowsUI') ui_deps += cc.find_library('opengl32') ui_deps += cc.find_library('gdi32') ui_deps += cc.find_library('ws2_32') ui_srcs += 'pugl/pugl/pugl_win.cpp' elif host_machine.system() == 'darwin' add_languages('objc') conf_data.set('UI_TYPE', 'CocoaUI') ui_links += ['-framework', 'OpenGL'] ui_links += ['-framework', 'Cocoa'] ui_srcs += 'pugl/pugl/pugl_osx.m' else conf_data.set('UI_TYPE', 'X11UI') ui_deps += dependency('gl') ui_deps += dependency('x11', version : '>=1.6.0') ui_deps += dependency('xext', version : '>=1.3.0') ui_srcs += 'pugl/pugl/pugl_x11.c' endif mod = shared_module('canvas_display', dsp_srcs, c_args : c_args, include_directories : inc_dir, name_prefix : '', dependencies : dsp_deps, install : true, install_dir : inst_dir) ui = shared_module('canvas_display_ui', ui_srcs, c_args : c_args, include_directories : inc_dir, name_prefix : '', dependencies : ui_deps, link_args : ui_links, install : true, install_dir : inst_dir) suffix = mod.full_path().strip().split('.')[-1] conf_data.set('MODULE_SUFFIX', '.' + suffix) configure_file(input : 'manifest.ttl.in', output : 'manifest.ttl', configuration : conf_data, install : true, install_dir : inst_dir) custom_target('dsp_ttl', input : 'canvas_display.ttl', output : 'canvas_display.ttl', command : clone, install : true, install_dir : inst_dir) custom_target('ui_ttl', input : 'canvas_display_ui.ttl', output : 'canvas_display_ui.ttl', command : clone, install : true, install_dir : inst_dir)