project('grino', 'cpp', version: '0.0.0', default_options: [ 'warning_level=3', 'cpp_std=c++17', 'prefix=/usr' ]) grino_libdir = get_option('prefix') / get_option('libdir') / 'grino' conf = configuration_data() conf.set('version', meson.project_version()) conf.set('libdir', grino_libdir) configure_file(input: 'src/config.in.hpp', output: 'config.hpp', configuration: conf) grino_src = shared_library('grino', sources: [ 'src/Compiler.cpp', 'src/Lexer.cpp', 'src/Loc.cpp', 'src/Logger.cpp', 'src/Node.cpp', 'src/Parser.cpp', 'src/Program.cpp', 'src/VM.cpp', 'src/Value.cpp', 'src/Function.cpp', 'src/StaticFunction.cpp', 'src/SymTable.cpp', 'src/Loader.cpp', 'src/Addr.cpp', 'src/Module.cpp', 'src/StaticPass.cpp', 'src/Prototype.cpp', ], install: true) pkg = import('pkgconfig') pkg.generate(grino_src, subdirs: 'grino') install_headers( [ 'build/config.hpp', 'src/commons.hpp', 'src/mutils.hpp', 'src/opcodes.hpp', 'src/types.hpp', 'src/Compiler.hpp', 'src/Lexer.hpp', 'src/Loc.hpp', 'src/Logger.hpp', 'src/Node.hpp', 'src/Parser.hpp', 'src/Program.hpp', 'src/VM.hpp', 'src/Value.hpp', 'src/Function.hpp', 'src/StaticFunction.hpp', 'src/SymTable.hpp', 'src/Loader.hpp', 'src/Addr.hpp', 'src/Module.hpp', 'src/StaticPass.hpp', 'src/Prototype.hpp', ], subdir: 'grino' ) grino_dep = declare_dependency(link_with: grino_src) shared_library('grino_core', sources: [ 'lib/core.cpp' ], dependencies: [ grino_dep ], install: true, install_dir: grino_libdir) shared_library('grino_std', sources: [ 'lib/std/std.cpp' ], dependencies: [ grino_dep ], install: true, install_dir: grino_libdir) executable('grino', sources: [ 'src/main.cpp' ], dependencies: [ grino_dep ], install: true) executable('grino-tests', sources: [ 'tests/main.cpp', 'tests/Lexer.cpp', 'tests/Parser.cpp', 'tests/StaticPass.cpp', ], dependencies: [ grino_dep, dependency('catch2') ])