project('mauri', ['cpp', 'c'], version: '0.14', default_options: ['warning_level=2', 'cpp_std=c++17', 'c_std=c99'], license: 'GPL-3.0-only') compiler = meson.get_compiler('cpp') cmake = import('cmake') is_debug = get_option('debug') is_windows = host_machine.system() == 'windows' mauri_src = [ 'src/mauri.cc', 'src/assets.cc', 'src/context.cc', 'src/gl.cc', 'src/shader.cc', 'src/engine.cc', 'src/texture.cc', 'src/objects/scene.cc', 'src/objects/object.cc', 'src/objects/model.cc', 'src/objects/effect.cc', 'src/objects/material.cc', 'src/objects/pass.cc' ] mauri_deps = [] mauri_cpp_args = [] mauri_link_args = [] alabaster = subproject('libalabaster').get_variable('alabaster') naunet = subproject('libnaunet', default_options: [ get_option('taro').enabled() ? 'event-loop=enabled' : 'event-loop=disabled', 'curl=disabled', 'json=enabled' ]).get_variable('naunet') stela = subproject('stela', default_options: [ 'api=gl', 'window='+get_option('window'), 'poll=inline', 'event-buffer=false', 'pause=false' ]).get_variable('stela') mauri_deps += [alabaster, naunet, stela] janus = subproject('janus').get_variable('janus') json = dependency('nlohmann_json') lz4 = dependency('liblz4') if not (compiler.check_header('stb/stb_image.h') and compiler.check_header('stb/stb_image_write.h')) stb = subproject('stb').get_variable('stb') mauri_deps += [stb] mauri_cpp_args += ['-DMAURI_LOCAL_STB'] endif s3tc = subproject('s3tc-dxt-decompression').get_variable('s3tc') glm = dependency('glm', required: false, allow_fallback: false) if not glm.found() glm_opts = cmake.subproject_options() glm_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : 'Release' }) glm = cmake.subproject('glm', options: glm_opts).dependency('glm') endif mauri_deps += [janus, json, lz4, s3tc, glm] if get_option('audio').enabled() error('Audio support currently unimplemented.') fftw3 = dependency('fftw3') mauri_deps += [fftw3] mauri_cpp_args += ['-DMAURI_HAVE_AUDIO'] endif if is_windows and meson.is_cross_build() mauri_link_args += ['-static', '-static-libgcc', '-static-libstdc++', '-municode', '-mwindows'] endif executable('mauri', mauri_src, dependencies: mauri_deps, cpp_args: mauri_cpp_args, link_args: mauri_link_args, install: true) if get_option('taro').enabled() subdir('taro') endif