Imported Upstream version 1.8.3
[platform/upstream/jsoncpp.git] / meson.build
1 project(
2   'jsoncpp',
3   'cpp',
4   version : '1.8.3',
5   default_options : [
6     'buildtype=release',
7     'warning_level=1'],
8   license : 'Public Domain',
9   meson_version : '>= 0.41.1')
10
11 jsoncpp_ver_arr = meson.project_version().split('.')
12 jsoncpp_major_version = jsoncpp_ver_arr[0]
13 jsoncpp_minor_version = jsoncpp_ver_arr[1]
14 jsoncpp_patch_version = jsoncpp_ver_arr[2]
15
16 jsoncpp_cdata = configuration_data()
17 jsoncpp_cdata.set('JSONCPP_VERSION', meson.project_version())
18 jsoncpp_cdata.set('JSONCPP_VERSION_MAJOR', jsoncpp_major_version)
19 jsoncpp_cdata.set('JSONCPP_VERSION_MINOR', jsoncpp_minor_version)
20 jsoncpp_cdata.set('JSONCPP_VERSION_PATCH', jsoncpp_patch_version)
21
22 jsoncpp_gen_sources = configure_file(
23   input : 'src/lib_json/version.h.in',
24   output : 'version.h',
25   configuration : jsoncpp_cdata,
26   install : true,
27   install_dir : join_paths(get_option('prefix'), get_option('includedir'), 'json')
28 )
29
30 jsoncpp_headers = [
31   'include/json/allocator.h',
32   'include/json/assertions.h',
33   'include/json/autolink.h',
34   'include/json/config.h',
35   'include/json/features.h',
36   'include/json/forwards.h',
37   'include/json/json.h',
38   'include/json/reader.h',
39   'include/json/value.h',
40   'include/json/writer.h']
41 jsoncpp_include_directories = include_directories('include')
42
43 install_headers(
44   jsoncpp_headers,
45   subdir : 'json')
46
47 jsoncpp_lib = library(
48   'jsoncpp',
49   [ jsoncpp_gen_sources,
50     jsoncpp_headers,
51     'src/lib_json/json_tool.h',
52     'src/lib_json/json_reader.cpp',
53     'src/lib_json/json_value.cpp',
54     'src/lib_json/json_writer.cpp'],
55   soversion : 19,
56   install : true,
57   include_directories : jsoncpp_include_directories)
58
59 import('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
67 declare_dependency(
68   include_directories : jsoncpp_include_directories,
69   link_with : jsoncpp_lib,
70   version : meson.project_version(),
71   sources : jsoncpp_gen_sources)
72
73 # tests
74 python = import('python3').find_python()
75
76 jsoncpp_test = executable(
77   'jsoncpp_test',
78   [ 'src/test_lib_json/jsontest.cpp',
79     'src/test_lib_json/jsontest.h',
80     'src/test_lib_json/main.cpp'],
81   include_directories : jsoncpp_include_directories,
82   link_with : jsoncpp_lib,
83   install : false)
84 test(
85   'unittest_jsoncpp_test',
86   jsoncpp_test)
87
88 jsontestrunner = executable(
89   'jsontestrunner',
90   'src/jsontestrunner/main.cpp',
91   include_directories : jsoncpp_include_directories,
92   link_with : jsoncpp_lib,
93   install : false)
94 test(
95   'unittest_jsontestrunner',
96   python,
97   args : [
98     '-B',
99     join_paths(meson.current_source_dir(), 'test/runjsontests.py'),
100     jsontestrunner,
101     join_paths(meson.current_source_dir(), 'test/data')]
102   )