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', +)