project('wrenpp', 'cpp', version: '0.1.0', meson_version: '>=0.49.2', default_options: ['buildtype=release', 'cpp_std=c++17', 'b_ndebug=if-release'], ) wren_dep = dependency('wren', version: '>=0.2.0', fallback: ['wren', 'wren_dep'], default_options: [ 'default_library=static', 'build_testing=false', 'wren_with_cli=false', 'wren_with_rand=' + get_option('wren_with_rand').to_string(), 'wren_with_meta=' + get_option('wren_with_meta').to_string(), ], static: true, ) public_incl = include_directories('include') os = host_machine.system() if os == 'gnu' os = 'hurd' elif os == 'linux' os = 'gnu' endif arch = host_machine.cpu_family() if arch == 'x86_64' arch = 'amd64' endif ptr_size = 0 func_ptr_size = 0 conf = configuration_data() if os == 'gnu' and arch == 'amd64' ptr_size = 8 func_ptr_size = 8 endif conf.set('POINTER_SIZE', ptr_size) conf.set('FUNC_POINTER_SIZE', func_ptr_size) project_config_file = configure_file( input: 'src/config.h.in', output: 'config.h', configuration: conf ) wrenpp = library(meson.project_name(), project_config_file, 'src/vm.cpp', 'src/configuration.cpp', 'src/def_configuration.cpp', 'src/dynafunc_maker.cpp', 'src/dynafunc_' + arch + '_' + os + '.S', 'src/handle.cpp', 'src/vm_fun.cpp', dependencies: [wren_dep], include_directories: public_incl, install: true, ) wrenpp_dep = declare_dependency( link_with: wrenpp, include_directories: public_incl, ) if get_option('build_examples') subdir('examples') endif