summaryrefslogtreecommitdiff
path: root/tomlplusplus/meson.build
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:05 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:05 +0300
commit0b24459ac12b6cf9fd5a401d647796ca254a8fa8 (patch)
treef2fd66e2476976a51e2a51330fd95dc6e87b24c1 /tomlplusplus/meson.build
parentb85e90fc3480da0e6a48da73201a0b22488cc650 (diff)
parent1c8b7466e4946fcc3bf20484c0e1d001202cca5a (diff)
downloadProject-Tick-0b24459ac12b6cf9fd5a401d647796ca254a8fa8.tar.gz
Project-Tick-0b24459ac12b6cf9fd5a401d647796ca254a8fa8.zip
Add 'tomlplusplus/' from commit '1c8b7466e4946fcc3bf20484c0e1d001202cca5a'
git-subtree-dir: tomlplusplus git-subtree-mainline: b85e90fc3480da0e6a48da73201a0b22488cc650 git-subtree-split: 1c8b7466e4946fcc3bf20484c0e1d001202cca5a
Diffstat (limited to 'tomlplusplus/meson.build')
-rw-r--r--tomlplusplus/meson.build212
1 files changed, 212 insertions, 0 deletions
diff --git a/tomlplusplus/meson.build b/tomlplusplus/meson.build
new file mode 100644
index 0000000000..4848773279
--- /dev/null
+++ b/tomlplusplus/meson.build
@@ -0,0 +1,212 @@
+# This file is a part of toml++ and is subject to the the terms of the MIT license.
+# Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
+# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
+# SPDX-License-Identifier: MIT
+
+project(
+ 'tomlplusplus',
+ 'cpp',
+ license: 'MIT',
+ version: '3.4.0',
+ meson_version: '>=0.61.0',
+ default_options: [
+ # https://mesonbuild.com/Builtin-options.html
+ # core options
+ 'buildtype=release',
+ 'default_library=shared',
+ # base options
+ 'b_lto=false',
+ 'b_ndebug=if-release',
+ # compiler options
+ 'cpp_std=c++17'
+ ]
+)
+
+#-----------------------------------------------------------------------------------------------------------------------
+# global vars + imports
+#-----------------------------------------------------------------------------------------------------------------------
+
+compiler = meson.get_compiler('cpp')
+message('target cpu_family: @0@'.format(host_machine.cpu_family()))
+message('target cpu: @0@'.format(host_machine.cpu()))
+message('target system: @0@'.format(host_machine.system()))
+message('target endian: @0@'.format(host_machine.endian()))
+
+is_devel = get_option('devel')
+is_debug = get_option('debug')
+is_release = not is_debug
+is_pedantic = get_option('pedantic') or is_devel
+is_permissive = get_option('permissive')
+is_windows = host_machine.system() == 'windows'
+is_x64 = host_machine.cpu_family() == 'x86_64'
+is_subproject = meson.is_subproject()
+
+cpp = meson.get_compiler('cpp')
+is_gcc = cpp.get_id() == 'gcc'
+is_clang = cpp.get_id() == 'clang'
+is_msvc = cpp.get_id() == 'msvc'
+is_icc_cl = cpp.get_id() == 'intel-cl'
+is_icc = is_icc_cl or cpp.get_id() == 'intel'
+is_lld = cpp.get_linker_id() == 'ld.lld'
+has_exceptions = get_option('cpp_eh') != 'none'
+unreleased_features = get_option('unreleased_features')
+
+build_tests = (get_option('build_tests') or is_devel) and not is_subproject
+build_examples = (get_option('build_examples') or is_devel) and not is_subproject
+build_tt = (get_option('build_tt') or is_devel) and not is_subproject and has_exceptions and not unreleased_features
+build_lib = get_option('build_lib') or get_option('compile_library') or build_tests or build_examples or build_tt
+
+#-----------------------------------------------------------------------------------------------------------------------
+# global_args
+#
+# these are the arguments common to everything in the project
+# *** they are not forwarded to dependents when using this as a submodule. ***
+#-----------------------------------------------------------------------------------------------------------------------
+
+global_args = cpp.get_supported_arguments(
+ # clang/gcc
+ '-ferror-limit=5',
+ '-fmax-errors=5',
+ '-Wno-unused-command-line-argument',
+ '-Wno-reserved-macro-identifier',
+ '-Wno-init-list-lifetime',
+ '-fchar8_t',
+ # msvc
+ '/bigobj',
+ '/Gy', # function-level linking
+ '/GF', # string pooling
+ '/openmp-',
+ '/utf-8',
+ '/volatile:iso',
+ '/Zc:__cplusplus',
+ '/Zc:inline',
+ '/Zc:externConstexpr',
+ '/Zc:preprocessor'
+)
+if has_exceptions
+ global_args += cpp.get_supported_arguments('/Zc:throwingNew', '-D_HAS_EXCEPTIONS=1')
+else
+ global_args += cpp.get_supported_arguments('-D_HAS_EXCEPTIONS=0')
+endif
+if is_permissive
+ global_args += cpp.get_supported_arguments('/permissive', '-DTOML_DISABLE_CONDITIONAL_NOEXCEPT_LAMBDA=1')
+else
+ global_args += cpp.get_supported_arguments('/permissive-')
+endif
+if is_pedantic
+ global_args += cpp.get_supported_arguments(
+ # clang
+ '-Weverything',
+ # gcc
+ '-Wcast-align',
+ '-Wcast-qual',
+ '-Wctor-dtor-privacy',
+ '-Wdisabled-optimization',
+ '-Wfloat-equal',
+ '-Wimport',
+ '-Winit-self',
+ '-Wlogical-op',
+ '-Wmissing-declarations',
+ '-Wmissing-field-initializers',
+ '-Wmissing-format-attribute',
+ '-Wmissing-include-dirs',
+ '-Wmissing-noreturn',
+ '-Wold-style-cast',
+ '-Woverloaded-virtual',
+ '-Wpacked',
+ '-Wpointer-arith',
+ '-Wredundant-decls',
+ '-Wshadow',
+ '-Wsign-conversion',
+ '-Wsign-promo',
+ '-Wstack-protector',
+ '-Wstrict-null-sentinel',
+ '-Wswitch-default',
+ '-Wswitch-enum',
+ '-Wundef',
+ '-Wunreachable-code',
+ '-Wunused',
+ '-Wunused-parameter',
+ '-Wuseless-cast',
+ '-Wvariadic-macros',
+ '-Wwrite-strings',
+ '-Wmissing-noreturn'
+ )
+endif
+# unnecessary pedantry:
+global_args += cpp.get_supported_arguments(
+ '-Wno-c++98-compat',
+ '-Wno-c++98-compat-pedantic',
+ '-Wno-documentation',
+ '-Wno-documentation-unknown-command',
+ '-Wno-switch-enum',
+ '-Wno-covered-switch-default',
+ '-Wno-padded',
+ '-Wno-float-equal'
+)
+if get_option('time_trace')
+ global_args += cpp.get_supported_arguments('-ftime-trace')
+endif
+
+#-----------------------------------------------------------------------------------------------------------------------
+# global_link_args
+#
+# these are the linker arguments common to everything in the projectwhen compiling shared libraries and executables.
+# *** they are not forwarded to dependents when using this as a submodule. ***
+#-----------------------------------------------------------------------------------------------------------------------
+
+global_link_args = []
+
+if is_release
+ global_link_args += cpp.get_supported_link_arguments(
+ # msvc
+ '/OPT:REF,ICF=3',
+ '/INCREMENTAL:NO',
+ )
+endif
+
+#-----------------------------------------------------------------------------------------------------------------------
+# global_overrides
+#
+# these are the meson overrides common to everything in the project
+# *** they are not forwarded to dependents when using this as a submodule. ***
+#-----------------------------------------------------------------------------------------------------------------------
+
+global_overrides = [ ]
+if is_pedantic
+ global_overrides += [
+ 'warning_level=3',
+ 'werror=true',
+ ]
+endif
+
+#-----------------------------------------------------------------------------------------------------------------------
+# subdirectories + files
+#-----------------------------------------------------------------------------------------------------------------------
+
+public_headers = []
+internal_headers = []
+
+# Empty dependency that will be filled either in src/ or include/
+tomlplusplus_dep = dependency('', required: false)
+
+subdir('include')
+
+if build_lib
+ subdir('src')
+endif
+
+if build_tests
+ subdir('tests')
+endif
+
+if build_examples
+ subdir('examples')
+endif
+
+if build_tt
+ subdir('toml-test')
+endif
+
+# Allow subproject usage
+meson.override_dependency(meson.project_name(), tomlplusplus_dep)