blob: 8531dcec42bf8a59d29318872d33fc1ce4ff1560 [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',
24 'include/json/autolink.h',
25 'include/json/config.h',
Jordan Bayles00b979f2019-09-25 14:04:53 -070026 'include/json/json_features.h',
David Seiferted258de2017-06-26 06:11:51 +020027 'include/json/forwards.h',
28 'include/json/json.h',
29 'include/json/reader.h',
30 'include/json/value.h',
Jordan Bayles7b286982019-08-13 22:41:43 -070031 'include/json/version.h',
David Seiferted258de2017-06-26 06:11:51 +020032 'include/json/writer.h']
33jsoncpp_include_directories = include_directories('include')
34
35install_headers(
36 jsoncpp_headers,
37 subdir : 'json')
38
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020039if get_option('default_library') == 'shared' and meson.get_compiler('cpp').get_id() == 'msvc'
40 dll_export_flag = '-DJSON_DLL_BUILD'
41 dll_import_flag = '-DJSON_DLL'
42else
Christopher Dunn59d41de2018-06-23 17:34:40 -050043 dll_export_flag = []
44 dll_import_flag = []
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020045endif
46
David Seiferted258de2017-06-26 06:11:51 +020047jsoncpp_lib = library(
48 'jsoncpp',
Jordan Bayles7b286982019-08-13 22:41:43 -070049 [ jsoncpp_headers,
David Seiferted258de2017-06-26 06:11:51 +020050 'src/lib_json/json_tool.h',
51 'src/lib_json/json_reader.cpp',
52 'src/lib_json/json_value.cpp',
53 'src/lib_json/json_writer.cpp'],
Jordan Bayles7b286982019-08-13 22:41:43 -070054 soversion : 22,
David Seiferted258de2017-06-26 06:11:51 +020055 install : true,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020056 include_directories : jsoncpp_include_directories,
57 cpp_args: dll_export_flag)
David Seiferted258de2017-06-26 06:11:51 +020058
59import('pkgconfig').generate(
60 libraries : jsoncpp_lib,
61 version : meson.project_version(),
62 name : 'jsoncpp',
63 filebase : 'jsoncpp',
64 description : 'A C++ library for interacting with JSON')
65
66# for libraries bundling jsoncpp
Jason S Zang43fd41d2017-09-16 11:19:30 +010067jsoncpp_dep = declare_dependency(
David Seiferted258de2017-06-26 06:11:51 +020068 include_directories : jsoncpp_include_directories,
69 link_with : jsoncpp_lib,
70 version : meson.project_version(),
Jordan Bayles7b286982019-08-13 22:41:43 -070071 )
David Seiferted258de2017-06-26 06:11:51 +020072
73# tests
Christopher Dunnec9302c2019-11-04 01:13:59 -080074python = import('python').find_installation()
David Seiferted258de2017-06-26 06:11:51 +020075
76jsoncpp_test = executable(
77 'jsoncpp_test',
78 [ 'src/test_lib_json/jsontest.cpp',
79 'src/test_lib_json/jsontest.h',
Google AutoFuzz Team879a5b82019-06-26 17:40:59 -040080 'src/test_lib_json/main.cpp',
81 'src/test_lib_json/fuzz.cpp'],
David Seiferted258de2017-06-26 06:11:51 +020082 include_directories : jsoncpp_include_directories,
83 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020084 install : false,
85 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020086test(
87 'unittest_jsoncpp_test',
88 jsoncpp_test)
89
90jsontestrunner = executable(
91 'jsontestrunner',
92 'src/jsontestrunner/main.cpp',
93 include_directories : jsoncpp_include_directories,
94 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020095 install : false,
96 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020097test(
98 'unittest_jsontestrunner',
99 python,
100 args : [
101 '-B',
102 join_paths(meson.current_source_dir(), 'test/runjsontests.py'),
103 jsontestrunner,
104 join_paths(meson.current_source_dir(), 'test/data')]
105 )