project('wrenpp', 'cpp', version: '0.1.1', meson_version: '>=0.49.2', default_options: ['buildtype=release', 'cpp_std=c++17', 'b_ndebug=if-release'], ) pymod = import('python') wren_dep = dependency('wren', version: '>=0.2.0', fallback: ['wren', 'wren_dep'], default_options: [ 'default_library=static', 'build_testing=false', 'wren_with_rand=' + get_option('wren_with_rand').to_string(), 'wren_with_meta=' + get_option('wren_with_meta').to_string(), ], static: true, ) python = pymod.find_installation('python3', required: get_option('wrenpp_with_python'), disabler: 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) conf.set('WRENPP_NAME', meson.project_name()) 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, ) python.extension_module('py' + meson.project_name(), sources: [ 'src/pywrenppmodule.cpp', ], dependencies: [ python.dependency( version: '>=3.6.0', required: get_option('wrenpp_with_python'), ), wrenpp_dep, ], install: true, ) if get_option('build_examples') subdir('examples') endif if get_option('build_testing') subdir('test') endif