blob: 1bc94a8af8b33a1a2dca3257d65a0fc14c0f885b [file] [log] [blame]
David Seiferted258de2017-06-26 06:11:51 +02001project(
2 'jsoncpp',
3 'cpp',
Jordan Bayles7b286982019-08-13 22:41:43 -07004
5 # Note: version must be updated in three places when doing a release. This
6 # annoying process ensures that amalgamate, CMake, and meson all report the
7 # correct version.
8 # 1. /meson.build
9 # 2. /include/json/version.h
10 # 3. /CMakeLists.txt
11 # IMPORTANT: also update the SOVERSION!!
12 version : '1.9.2',
David Seiferted258de2017-06-26 06:11:51 +020013 default_options : [
14 'buildtype=release',
Christopher Dunn899894f2017-12-21 01:22:40 -060015 'cpp_std=c++11',
David Seiferted258de2017-06-26 06:11:51 +020016 'warning_level=1'],
17 license : 'Public Domain',
Jordan Bayles645cd042019-11-08 19:49:16 -080018 meson_version : '>= 0.49.0')
David Seiferted258de2017-06-26 06:11:51 +020019
David Seiferted258de2017-06-26 06:11:51 +020020
21jsoncpp_headers = [
22 'include/json/allocator.h',
23 'include/json/assertions.h',
David Seiferted258de2017-06-26 06:11:51 +020024 'include/json/config.h',
Jordan Bayles00b979f2019-09-25 14:04:53 -070025 'include/json/json_features.h',
David Seiferted258de2017-06-26 06:11:51 +020026 'include/json/forwards.h',
27 'include/json/json.h',
28 'include/json/reader.h',
29 'include/json/value.h',
Jordan Bayles7b286982019-08-13 22:41:43 -070030 'include/json/version.h',
David Seiferted258de2017-06-26 06:11:51 +020031 'include/json/writer.h']
32jsoncpp_include_directories = include_directories('include')
33
34install_headers(
35 jsoncpp_headers,
36 subdir : 'json')
37
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020038if get_option('default_library') == 'shared' and meson.get_compiler('cpp').get_id() == 'msvc'
39 dll_export_flag = '-DJSON_DLL_BUILD'
40 dll_import_flag = '-DJSON_DLL'
41else
Christopher Dunn59d41de2018-06-23 17:34:40 -050042 dll_export_flag = []
43 dll_import_flag = []
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020044endif
45
David Seiferted258de2017-06-26 06:11:51 +020046jsoncpp_lib = library(
47 'jsoncpp',
Jordan Bayles7b286982019-08-13 22:41:43 -070048 [ jsoncpp_headers,
David Seiferted258de2017-06-26 06:11:51 +020049 'src/lib_json/json_tool.h',
50 'src/lib_json/json_reader.cpp',
51 'src/lib_json/json_value.cpp',
52 'src/lib_json/json_writer.cpp'],
Jordan Bayles7b286982019-08-13 22:41:43 -070053 soversion : 22,
David Seiferted258de2017-06-26 06:11:51 +020054 install : true,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020055 include_directories : jsoncpp_include_directories,
56 cpp_args: dll_export_flag)
David Seiferted258de2017-06-26 06:11:51 +020057
58import('pkgconfig').generate(
59 libraries : jsoncpp_lib,
60 version : meson.project_version(),
61 name : 'jsoncpp',
62 filebase : 'jsoncpp',
63 description : 'A C++ library for interacting with JSON')
64
65# for libraries bundling jsoncpp
Jason S Zang43fd41d2017-09-16 11:19:30 +010066jsoncpp_dep = declare_dependency(
David Seiferted258de2017-06-26 06:11:51 +020067 include_directories : jsoncpp_include_directories,
68 link_with : jsoncpp_lib,
69 version : meson.project_version(),
Jordan Bayles7b286982019-08-13 22:41:43 -070070 )
David Seiferted258de2017-06-26 06:11:51 +020071
72# tests
Christopher Dunnec9302c2019-11-04 01:13:59 -080073python = import('python').find_installation()
David Seiferted258de2017-06-26 06:11:51 +020074
75jsoncpp_test = executable(
76 'jsoncpp_test',
77 [ 'src/test_lib_json/jsontest.cpp',
78 'src/test_lib_json/jsontest.h',
Google AutoFuzz Team879a5b82019-06-26 17:40:59 -040079 'src/test_lib_json/main.cpp',
80 'src/test_lib_json/fuzz.cpp'],
David Seiferted258de2017-06-26 06:11:51 +020081 include_directories : jsoncpp_include_directories,
82 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020083 install : false,
84 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020085test(
86 'unittest_jsoncpp_test',
87 jsoncpp_test)
88
89jsontestrunner = executable(
90 'jsontestrunner',
91 'src/jsontestrunner/main.cpp',
92 include_directories : jsoncpp_include_directories,
93 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020094 install : false,
95 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020096test(
97 'unittest_jsontestrunner',
98 python,
99 args : [
100 '-B',
101 join_paths(meson.current_source_dir(), 'test/runjsontests.py'),
102 jsontestrunner,
103 join_paths(meson.current_source_dir(), 'test/data')]
104 )