project( 'evk', ['c', 'cpp'], version: '0.1', default_options: { 'c_std': 'c23', 'default_library': 'static', 'c_args': '-fcolor-diagnostics -fansi-escape-codes', 'cpp_args': '-fcolor-diagnostics -fansi-escape-codes', }, meson_version: '>=1.2', ) build_config = configuration_data() buildtype = get_option('buildtype') if buildtype == 'debug' build_config.set('EV_BUILDTYPE_DEBUG', 1) elif buildtype == 'debugoptimized' build_config.set('EV_BUILDTYPE_DEBUGOPT', 1) else build_config.set('EV_BUILDTYPE_RELEASE', 1) endif configure_file(output: 'evk_buildconfig.h', configuration: build_config) disabled_warnings = { 'clang': [ 'microsoft-anon-tag', ], } subproject('evol-headers', default_options: {'build_tests': false}) subproject('volk') subproject('shaderc') evk_c_args = [] cc = meson.get_compiler('c') if cc.get_id() == 'msvc' evk_c_args += '/Zc:preprocessor' elif cc.get_id() == 'clang' evk_c_args += '-DEV_CC_CLANG=1' evk_c_args += '-fms-extensions' endif foreach w : disabled_warnings[cc.get_id()] evk_c_args += '-Wno-' + w endforeach evk_incdir = include_directories( [ '.', ], ) evk_src = [ 'evk/evkInstance.c', 'evk/evkDevice.c', 'evk/evkAllocator.c', 'evk/evkSync.c', 'evk/evkShader.c', 'evk/evkSwapChain.c', 'evk/evkAllocator.c', 'evk/evkCommand.c', 'evk/evkPipeline.c', 'evk/evkDescriptor.c', 'evk/evkRender.c', 'evk/evkImage.c', 'evk/evkBuffer.c', 'evk/evkMemory.c', ] evk_lib = library( 'evk', evk_src, include_directories: evk_incdir, dependencies: [ dependency('evol-headers'), dependency('vma'), dependency('volk'), dependency('shaderc'), dependency('spvref'), ], c_args: evk_c_args, ) evk_dep = declare_dependency( link_with: evk_lib, include_directories: evk_incdir, dependencies: [ dependency('volk').partial_dependency(includes: true, compile_args: true), dependency('vma').partial_dependency(includes: true), dependency('evol-headers').partial_dependency(includes: true), ], ) meson.override_dependency('evk', evk_dep) if get_option('build_samples') subdir('samples') endif