blob: b2560af295a390359ffbda34acb86636b0fbd873 [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 Bayles185dfd52019-06-24 13:38:00 -070018 meson_version : '>= 0.50.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 Dunnfb9aaf82019-11-04 00:27:02 -080074#python = import('python3').find_python()
75python = find_program('python3', 'python')
David Seiferted258de2017-06-26 06:11:51 +020076
77jsoncpp_test = executable(
78 'jsoncpp_test',
79 [ 'src/test_lib_json/jsontest.cpp',
80 'src/test_lib_json/jsontest.h',
Google AutoFuzz Team879a5b82019-06-26 17:40:59 -040081 'src/test_lib_json/main.cpp',
82 'src/test_lib_json/fuzz.cpp'],
David Seiferted258de2017-06-26 06:11:51 +020083 include_directories : jsoncpp_include_directories,
84 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020085 install : false,
86 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020087test(
88 'unittest_jsoncpp_test',
89 jsoncpp_test)
90
91jsontestrunner = executable(
92 'jsontestrunner',
93 'src/jsontestrunner/main.cpp',
94 include_directories : jsoncpp_include_directories,
95 link_with : jsoncpp_lib,
Peter Spiess-Knaflb87f6db2018-06-18 11:28:56 +020096 install : false,
97 cpp_args: dll_import_flag)
David Seiferted258de2017-06-26 06:11:51 +020098test(
99 'unittest_jsontestrunner',
100 python,
101 args : [
102 '-B',
103 join_paths(meson.current_source_dir(), 'test/runjsontests.py'),
104 jsontestrunner,
105 join_paths(meson.current_source_dir(), 'test/data')]
106 )