Skip to content
Snippets Groups Projects
Commit 4488fd5a5b82 authored by Max Bruckner's avatar Max Bruckner
Browse files

Initial support for the Meson build system

parent 35aaf3546d52
No related branches found
No related tags found
No related merge requests found
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')
option('enable_cjson_utils', type: 'boolean', value: true)
option('enable_cjson_tests', type: 'boolean', value: true)
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment