1*44844408SAndroid Build Coastguard Workerproject( 2*44844408SAndroid Build Coastguard Worker 'jsoncpp', 3*44844408SAndroid Build Coastguard Worker 'cpp', 4*44844408SAndroid Build Coastguard Worker 5*44844408SAndroid Build Coastguard Worker # Note: version must be updated in three places when doing a release. This 6*44844408SAndroid Build Coastguard Worker # annoying process ensures that amalgamate, CMake, and meson all report the 7*44844408SAndroid Build Coastguard Worker # correct version. 8*44844408SAndroid Build Coastguard Worker # 1. /meson.build 9*44844408SAndroid Build Coastguard Worker # 2. /include/json/version.h 10*44844408SAndroid Build Coastguard Worker # 3. /CMakeLists.txt 11*44844408SAndroid Build Coastguard Worker # IMPORTANT: also update the SOVERSION!! 12*44844408SAndroid Build Coastguard Worker version : '1.9.4', 13*44844408SAndroid Build Coastguard Worker default_options : [ 14*44844408SAndroid Build Coastguard Worker 'buildtype=release', 15*44844408SAndroid Build Coastguard Worker 'cpp_std=c++11', 16*44844408SAndroid Build Coastguard Worker 'warning_level=1'], 17*44844408SAndroid Build Coastguard Worker license : 'Public Domain', 18*44844408SAndroid Build Coastguard Worker meson_version : '>= 0.49.0') 19*44844408SAndroid Build Coastguard Worker 20*44844408SAndroid Build Coastguard Worker 21*44844408SAndroid Build Coastguard Workerjsoncpp_headers = files([ 22*44844408SAndroid Build Coastguard Worker 'include/json/allocator.h', 23*44844408SAndroid Build Coastguard Worker 'include/json/assertions.h', 24*44844408SAndroid Build Coastguard Worker 'include/json/config.h', 25*44844408SAndroid Build Coastguard Worker 'include/json/json_features.h', 26*44844408SAndroid Build Coastguard Worker 'include/json/forwards.h', 27*44844408SAndroid Build Coastguard Worker 'include/json/json.h', 28*44844408SAndroid Build Coastguard Worker 'include/json/reader.h', 29*44844408SAndroid Build Coastguard Worker 'include/json/value.h', 30*44844408SAndroid Build Coastguard Worker 'include/json/version.h', 31*44844408SAndroid Build Coastguard Worker 'include/json/writer.h', 32*44844408SAndroid Build Coastguard Worker]) 33*44844408SAndroid Build Coastguard Workerjsoncpp_include_directories = include_directories('include') 34*44844408SAndroid Build Coastguard Worker 35*44844408SAndroid Build Coastguard Workerinstall_headers( 36*44844408SAndroid Build Coastguard Worker jsoncpp_headers, 37*44844408SAndroid Build Coastguard Worker subdir : 'json') 38*44844408SAndroid Build Coastguard Worker 39*44844408SAndroid Build Coastguard Workerif get_option('default_library') == 'shared' and meson.get_compiler('cpp').get_id() == 'msvc' 40*44844408SAndroid Build Coastguard Worker dll_export_flag = '-DJSON_DLL_BUILD' 41*44844408SAndroid Build Coastguard Worker dll_import_flag = '-DJSON_DLL' 42*44844408SAndroid Build Coastguard Workerelse 43*44844408SAndroid Build Coastguard Worker dll_export_flag = [] 44*44844408SAndroid Build Coastguard Worker dll_import_flag = [] 45*44844408SAndroid Build Coastguard Workerendif 46*44844408SAndroid Build Coastguard Worker 47*44844408SAndroid Build Coastguard Workerjsoncpp_lib = library( 48*44844408SAndroid Build Coastguard Worker 'jsoncpp', files([ 49*44844408SAndroid Build Coastguard Worker 'src/lib_json/json_reader.cpp', 50*44844408SAndroid Build Coastguard Worker 'src/lib_json/json_value.cpp', 51*44844408SAndroid Build Coastguard Worker 'src/lib_json/json_writer.cpp', 52*44844408SAndroid Build Coastguard Worker ]), 53*44844408SAndroid Build Coastguard Worker soversion : 25, 54*44844408SAndroid Build Coastguard Worker install : true, 55*44844408SAndroid Build Coastguard Worker include_directories : jsoncpp_include_directories, 56*44844408SAndroid Build Coastguard Worker cpp_args: dll_export_flag) 57*44844408SAndroid Build Coastguard Worker 58*44844408SAndroid Build Coastguard Workerimport('pkgconfig').generate( 59*44844408SAndroid Build Coastguard Worker libraries : jsoncpp_lib, 60*44844408SAndroid Build Coastguard Worker version : meson.project_version(), 61*44844408SAndroid Build Coastguard Worker name : 'jsoncpp', 62*44844408SAndroid Build Coastguard Worker filebase : 'jsoncpp', 63*44844408SAndroid Build Coastguard Worker description : 'A C++ library for interacting with JSON') 64*44844408SAndroid Build Coastguard Worker 65*44844408SAndroid Build Coastguard Worker# for libraries bundling jsoncpp 66*44844408SAndroid Build Coastguard Workerjsoncpp_dep = declare_dependency( 67*44844408SAndroid Build Coastguard Worker include_directories : jsoncpp_include_directories, 68*44844408SAndroid Build Coastguard Worker link_with : jsoncpp_lib, 69*44844408SAndroid Build Coastguard Worker version : meson.project_version()) 70*44844408SAndroid Build Coastguard Worker 71*44844408SAndroid Build Coastguard Worker# tests 72*44844408SAndroid Build Coastguard Workerif meson.is_subproject() or not get_option('tests') 73*44844408SAndroid Build Coastguard Worker subdir_done() 74*44844408SAndroid Build Coastguard Workerendif 75*44844408SAndroid Build Coastguard Worker 76*44844408SAndroid Build Coastguard Workerpython = import('python').find_installation() 77*44844408SAndroid Build Coastguard Worker 78*44844408SAndroid Build Coastguard Workerjsoncpp_test = executable( 79*44844408SAndroid Build Coastguard Worker 'jsoncpp_test', files([ 80*44844408SAndroid Build Coastguard Worker 'src/test_lib_json/jsontest.cpp', 81*44844408SAndroid Build Coastguard Worker 'src/test_lib_json/main.cpp', 82*44844408SAndroid Build Coastguard Worker 'src/test_lib_json/fuzz.cpp', 83*44844408SAndroid Build Coastguard Worker ]), 84*44844408SAndroid Build Coastguard Worker include_directories : jsoncpp_include_directories, 85*44844408SAndroid Build Coastguard Worker link_with : jsoncpp_lib, 86*44844408SAndroid Build Coastguard Worker install : false, 87*44844408SAndroid Build Coastguard Worker cpp_args: dll_import_flag) 88*44844408SAndroid Build Coastguard Workertest( 89*44844408SAndroid Build Coastguard Worker 'unittest_jsoncpp_test', 90*44844408SAndroid Build Coastguard Worker jsoncpp_test) 91*44844408SAndroid Build Coastguard Worker 92*44844408SAndroid Build Coastguard Workerjsontestrunner = executable( 93*44844408SAndroid Build Coastguard Worker 'jsontestrunner', 94*44844408SAndroid Build Coastguard Worker 'src/jsontestrunner/main.cpp', 95*44844408SAndroid Build Coastguard Worker include_directories : jsoncpp_include_directories, 96*44844408SAndroid Build Coastguard Worker link_with : jsoncpp_lib, 97*44844408SAndroid Build Coastguard Worker install : false, 98*44844408SAndroid Build Coastguard Worker cpp_args: dll_import_flag) 99*44844408SAndroid Build Coastguard Workertest( 100*44844408SAndroid Build Coastguard Worker 'unittest_jsontestrunner', 101*44844408SAndroid Build Coastguard Worker python, 102*44844408SAndroid Build Coastguard Worker args : [ 103*44844408SAndroid Build Coastguard Worker '-B', 104*44844408SAndroid Build Coastguard Worker join_paths(meson.current_source_dir(), 'test/runjsontests.py'), 105*44844408SAndroid Build Coastguard Worker jsontestrunner, 106*44844408SAndroid Build Coastguard Worker join_paths(meson.current_source_dir(), 'test/data')], 107*44844408SAndroid Build Coastguard Worker ) 108*44844408SAndroid Build Coastguard Workertest( 109*44844408SAndroid Build Coastguard Worker 'jsonchecker_jsontestrunner', 110*44844408SAndroid Build Coastguard Worker python, 111*44844408SAndroid Build Coastguard Worker is_parallel : false, 112*44844408SAndroid Build Coastguard Worker args : [ 113*44844408SAndroid Build Coastguard Worker '-B', 114*44844408SAndroid Build Coastguard Worker join_paths(meson.current_source_dir(), 'test/runjsontests.py'), 115*44844408SAndroid Build Coastguard Worker '--with-json-checker', 116*44844408SAndroid Build Coastguard Worker jsontestrunner, 117*44844408SAndroid Build Coastguard Worker join_paths(meson.current_source_dir(), 'test/data')], 118*44844408SAndroid Build Coastguard Worker workdir : join_paths(meson.current_source_dir(), 'test/data'), 119*44844408SAndroid Build Coastguard Worker ) 120