tomlplusplus/meson.build
Mark Gillard 5ca6b29cb9 added support for implementations without <charconv> (fixes #21)
also:
- fixed some parsing and printing ops being locale-dependent (fixes #19)
- fixed pkgconfig subdir being wrong (fixes #23)
- fixed some parsing errors at EOF when `TOML_EXCEPTIONS = 0`
- fixed some unreferenced variable warnings on older compilers
- fixed some 'maybe-uninitialized' false-positives on GCC9
- added debug/release awareness to CI tests
- added locale awareness to catch test runner
2020-04-07 18:01:22 +03:00

112 lines
2.4 KiB
Meson

project(
'tomlplusplus',
'cpp',
version : '1.2.0',
license : 'MIT',
default_options : [
'cpp_std=c++17',
'warning_level=3',
'werror=true',
'cpp_eh=default',
'b_ndebug=if-release'
]
)
tomlplusplus_dep = declare_dependency(
include_directories : include_directories('include'),
version : meson.project_version(),
)
build_tests = false
if get_option('BUILD_TESTS').auto()
build_tests = (not meson.is_subproject())
else
build_tests = get_option('BUILD_TESTS').enabled()
endif
build_examples = false
if get_option('BUILD_EXAMPLES').auto()
build_examples = (not meson.is_subproject())
else
build_examples = get_option('BUILD_EXAMPLES').enabled()
endif
if build_tests or build_examples
compiler = meson.get_compiler('cpp')
message(['compiler ID: ', compiler.get_id()])
message(['compiler version: ', compiler.version()])
if compiler.get_id() == 'gcc'
add_project_arguments([
'-fmax-errors=5',
'-march=native',
'-Wno-init-list-lifetime'
],
language : 'cpp'
)
endif
if compiler.get_id() == 'clang'
add_project_arguments([
'-ferror-limit=5',
'-march=native',
'-fchar8_t',
# '-Weverything',
'-Wno-c++98-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-float-equal',
'-Wno-switch-enum',
'-Wno-documentation-unknown-command',
'-Wno-padded',
'-Wno-weak-vtables',
'-Wno-double-promotion'
#, '-ftime-trace'
],
language : 'cpp'
)
endif
if compiler.get_id() == 'intel-cl'
add_project_arguments([
'/Qoption,cpp,--unicode_source_kind,UTF-8',
'/std=c++latest',
'/wd82', # storage class is not first
'/wd280', # selector expression is constant (why the fuck is that a warning?)
'/wd411', # class provides no constructor (duh, it's an aggregate)
'/wd1011', # missing return statement (false negative)
'/wd1628', # function marked [[noreturn]] returns (false positive)
'/wd3280' # declaration hides member (triggered in Catch2)
],
language : 'cpp'
)
endif
inc = include_directories('include', 'extern')
if build_tests
subdir('tests')
else
message('Not building tests')
endif
if build_examples
subdir('examples')
else
message('Not building examples')
endif
endif
install_subdir('include/toml++/',
strip_directory: true,
install_dir: 'include/toml++'
)
pkgc = import('pkgconfig')
pkgc.generate (
name: 'toml++',
version: meson.project_version(),
description: 'Header-only TOML config file parser and serializer for modern C++'
)