Initial support for the Meson build system

This commit is contained in:
Max Bruckner 2017-05-04 18:36:14 +02:00
parent b26e71f960
commit ae80f5ef57
3 changed files with 118 additions and 0 deletions

58
meson.build Normal file
View File

@ -0,0 +1,58 @@
project('cJSON', 'c', default_options: ['c_std=c89'])
version = '1.6.0'
soversion = '0'
compiler = meson.get_compiler('c')
compiler_flags = []
if (compiler.get_id() == 'clang') or (compiler.get_id() == 'gcc')
compiler_flags += [
'-pedantic',
'-Wall',
'-Wextra',
'-Werror',
'-Wstrict-prototypes',
'-Wwrite-strings',
'-Wshadow',
'-Winit-self',
'-Wcast-align',
'-Wformat=2',
'-Wmissing-prototypes',
'-Wstrict-overflow=2',
'-Wcast-qual',
'-Wundef',
'-Wswitch-default',
'-Wconversion',
'-Wc++-compat',
'-fstack-protector-strong',
'-Wcomma',
'-Wdouble-promotion',
'-Wparentheses',
'-Wformat-overflow',
'-Wunused-macros',
'-Wmissing-variable-declarations',
'-Wused-but-marked-unused',
'-Wswitch-enum'
]
endif
foreach flag : compiler_flags
if compiler.has_argument(flag)
add_project_arguments(flag, language: 'c')
endif
endforeach
math = compiler.find_library('m', required: false)
cjson = shared_library('cjson', 'cJSON.c', dependencies: math, version: version, soversion: soversion, install: true)
if get_option('enable_cjson_utils')
cjson_utils = shared_library('cjson_utils', 'cJSON_Utils.c', link_with: cjson, version: version, soversion: soversion, install: true)
endif
if get_option('enable_cjson_tests')
cjson_test = executable('cjson_test', 'test.c', link_with: cjson)
test('cjson_test', cjson_test)
endif
subdir('tests')

2
meson_options.txt Normal file
View File

@ -0,0 +1,2 @@
option('enable_cjson_utils', type: 'boolean', value: true)
option('enable_cjson_tests', type: 'boolean', value: true)

58
tests/meson.build Normal file
View File

@ -0,0 +1,58 @@
if get_option('enable_cjson_tests')
unity_flags = []
if (compiler.get_id() == 'clang') or (compiler.get_id() == 'gcc')
unity_flags += [
'-Wno-switch-enum',
'-Wno-error',
'-fvisibility=default',
'-fno-sanitize=float-divide-by-zero'
]
endif
unity_c_args = []
foreach flag : unity_flags
if compiler.has_argument(flag)
unity_c_args += flag
endif
endforeach
unity = library('unity', 'unity/src/unity.c', c_args: unity_c_args)
common = library('test_common', 'common.c')
cjson_tests = [
'parse_examples',
'parse_number',
'parse_hex4',
'parse_string',
'parse_array',
'parse_object',
'parse_value',
'print_string',
'print_number',
'print_array',
'print_object',
'print_value',
'misc_tests',
'parse_with_opts',
'compare_tests'
]
foreach cjson_test : cjson_tests
exe = executable(cjson_test, cjson_test + '.c', link_with: [common, cjson, unity])
test(cjson_test, exe, workdir: meson.current_source_dir())
endforeach
if get_option('enable_cjson_utils')
cjson_utils_tests = [
'json_patch_tests',
'old_utils_tests',
'misc_utils_tests'
]
foreach cjson_utils_test : cjson_utils_tests
exe = executable(cjson_utils_test, cjson_utils_test + '.c', link_with: [common, cjson_utils, unity, cjson])
test(cjson_utils_test, exe, workdir: meson.current_source_dir())
endforeach
endif
endif