diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a49dc47ea..967e881d69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ endif() option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ${JSON_BuildTests_INIT}) option(JSON_CI "Enable CI build targets." OFF) option(JSON_Diagnostics "Use extended diagnostic messages." OFF) -option(JSON_GlobalUDLs "Place use-defined string literals in the global namespace." ON) +option(JSON_GlobalUDLs "Place user-defined string literals in the global namespace." ON) option(JSON_ImplicitConversions "Enable implicit conversions." ON) option(JSON_DisableEnumSerialization "Disable default integer enum serialization." OFF) option(JSON_LegacyDiscardedValueComparison "Enable legacy discarded value comparison." OFF) diff --git a/meson.build b/meson.build index 7a9c5ec851..a8b92f30fa 100644 --- a/meson.build +++ b/meson.build @@ -2,23 +2,39 @@ project('nlohmann_json', 'cpp', version : '3.11.3', license : 'MIT', + meson_version : '>= 0.64', + default_options: ['cpp_std=c++11'], ) -nlohmann_json_dep = declare_dependency( - include_directories: include_directories('single_include') -) +if get_option('MultipleHeaders') + incdir = 'include' +else + incdir = 'single_include' +endif -nlohmann_json_multiple_headers = declare_dependency( - include_directories: include_directories('include') +cpp_args = [ + '-DJSON_USE_GLOBAL_UDLS=@0@'.format( + (not get_option('GlobalUDLs')).to_int()), + '-DJSON_USE_IMPLICIT_CONVERSIONS=@0@'.format( + (not get_option('ImplicitConversions')).to_int()), +] + +nlohmann_json_dep = declare_dependency( + compile_args: cpp_args, + include_directories: include_directories(incdir) ) +meson.override_dependency('nlohmann_json', nlohmann_json_dep) if not meson.is_subproject() -install_headers('single_include/nlohmann/json.hpp', subdir: 'nlohmann') -install_headers('single_include/nlohmann/json_fwd.hpp', subdir: 'nlohmann') + install_subdir( + incdir / 'nlohmann', + install_dir: get_option('includedir'), + install_tag: 'devel', + ) -pkgc = import('pkgconfig') -pkgc.generate(name: 'nlohmann_json', - version: meson.project_version(), - description: 'JSON for Modern C++' -) + pkgc = import('pkgconfig') + pkgc.generate(name: 'nlohmann_json', + version: meson.project_version(), + description: 'JSON for Modern C++' + ) endif diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000000..770fc722fd --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,18 @@ +option( + 'MultipleHeaders', + type: 'boolean', + value: true, + description: 'Use non-amalgomated version of the library', +) +option( + 'GlobalUDLs', + type: 'boolean', + value: true, + description: 'Place user-defined string literals in the global namespace', +) +option( + 'ImplicitConversions', + type: 'boolean', + value: true, + description: 'Enable implicit conversions', +)