From 27ebd9a28e27b9d6c4cebebb480114c4169c4a55 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev <0x416b617269@gmail.com> Date: Sun, 7 Apr 2019 04:09:54 +0300 Subject: [PATCH] add a basic Meson build system for use as a subproject --- get_version.py | 12 +++++++ meson.build | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100755 get_version.py create mode 100644 meson.build diff --git a/get_version.py b/get_version.py new file mode 100755 index 00000000..0ef89c6b --- /dev/null +++ b/get_version.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python + +from __future__ import print_function + +import subprocess + +try: + v = subprocess.check_output(['git', 'describe', '--tags'], universal_newlines=True) +except Exception: + print('unknown') +else: + print(v.strip().replace('-', '.')) diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..b16b3f93 --- /dev/null +++ b/meson.build @@ -0,0 +1,85 @@ +project('SPIRV-Cross', 'cpp', + license : 'Apache-2.0', + version : run_command(files('get_version.py')).stdout().strip(), + meson_version : '>=0.48.0', + default_options : [ + 'cpp_std=c++11', + ] +) + +add_project_arguments( + meson.get_compiler('cpp').get_supported_arguments( + '-fno-exceptions', + '-fno-rtti', + ), + language : 'cpp', +) + +spvc_install = not meson.is_subproject() + +spvc_defs = [ + '-DSPIRV_CROSS_C_API_CPP=1', + '-DSPIRV_CROSS_C_API_GLSL=1', + '-DSPIRV_CROSS_C_API_HLSL=1', + '-DSPIRV_CROSS_C_API_MSL=1', + '-DSPIRV_CROSS_C_API_REFLECT=1', + '-DSPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS', +] + +spvc_src = files( + 'spirv_cfg.cpp', + 'spirv_cpp.cpp', + 'spirv_cross.cpp', + 'spirv_cross_c.cpp', + 'spirv_cross_parsed_ir.cpp', + 'spirv_cross_util.cpp', + 'spirv_glsl.cpp', + 'spirv_hlsl.cpp', + 'spirv_msl.cpp', + 'spirv_parser.cpp', + 'spirv_reflect.cpp', +) + +spvc_hdr = files( + 'GLSL.std.450.h', + 'spirv_cfg.hpp', + 'spirv_common.hpp', + 'spirv_cpp.hpp', + 'spirv_cross_c.h', + 'spirv_cross.hpp', + 'spirv_cross_parsed_ir.hpp', + 'spirv_cross_util.hpp', + 'spirv_glsl.hpp', + 'spirv.h', + 'spirv_hlsl.hpp', + 'spirv.hpp', + 'spirv_msl.hpp', + 'spirv_parser.hpp', + 'spirv_reflect.hpp', +) + +spvc_incdirs = include_directories('.', 'include') + +libspirv_cross = library('spirv-cross', + spvc_src, + cpp_args : spvc_defs, + build_by_default : not meson.is_subproject(), + include_directories : spvc_incdirs, + gnu_symbol_visibility : 'hidden', + install : spvc_install, +) + +spirv_cross_dep = declare_dependency( + link_with : libspirv_cross, + include_directories : spvc_incdirs, +) + +if spvc_install + install_headers(spvc_hdr, subdir : 'spirv_cross') + + pkg = import('pkgconfig') + pkg.generate(libspirv_cross, + subdirs : 'spirv_cross', + version : '0.13.0' + ) +endif -- 2.33.0