|
Packit |
4c4d6b |
project('json-glib', 'c', version: '1.4.4',
|
|
Packit |
4c4d6b |
license: 'LGPLv2.1+',
|
|
Packit |
4c4d6b |
default_options: [
|
|
Packit |
4c4d6b |
'warning_level=1',
|
|
Packit |
4c4d6b |
'buildtype=debugoptimized',
|
|
Packit |
4c4d6b |
'c_std=c99',
|
|
Packit |
4c4d6b |
],
|
|
Packit |
4c4d6b |
meson_version: '>= 0.40.1')
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Versioning
|
|
Packit |
4c4d6b |
json_version = meson.project_version()
|
|
Packit |
4c4d6b |
version_arr = json_version.split('.')
|
|
Packit |
4c4d6b |
json_version_major = version_arr[0].to_int()
|
|
Packit |
4c4d6b |
json_version_minor = version_arr[1].to_int()
|
|
Packit |
4c4d6b |
json_version_micro = version_arr[2].to_int()
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
json_interface_age = json_version_minor.is_even() ? json_version_micro : 0
|
|
Packit |
4c4d6b |
json_binary_age = 100 * json_version_minor + json_version_micro
|
|
Packit |
4c4d6b |
json_api_version = '1.0'
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
json_api_name = '@0@-@1@'.format(meson.project_name(), json_api_version)
|
|
Packit |
4c4d6b |
json_gettext_domain = json_api_name
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Maintain compatibility with the old soname versioning
|
|
Packit |
4c4d6b |
soversion = 0
|
|
Packit |
4c4d6b |
libversion = '@0@.@1@.@2@'.format(soversion, json_binary_age - json_interface_age, json_interface_age)
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Paths
|
|
Packit |
4c4d6b |
json_includedir = join_paths(get_option('prefix'), get_option('includedir'))
|
|
Packit |
4c4d6b |
json_datadir = join_paths(get_option('prefix'), get_option('datadir'))
|
|
Packit |
4c4d6b |
json_mandir = join_paths(get_option('prefix'), get_option('mandir'))
|
|
Packit |
4c4d6b |
json_localedir = join_paths(get_option('prefix'), get_option('localedir'))
|
|
Packit |
4c4d6b |
json_libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'))
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Dependencies
|
|
Packit |
4c4d6b |
glib_req_version = '>= 2.44.0'
|
|
Packit |
4c4d6b |
gobject_dep = dependency('gobject-2.0', version: glib_req_version)
|
|
Packit |
4c4d6b |
gio_dep = dependency('gio-2.0', version: glib_req_version)
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Configurations
|
|
Packit |
4c4d6b |
cc = meson.get_compiler('c')
|
|
Packit |
4c4d6b |
host_system = host_machine.system()
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
cdata = configuration_data()
|
|
Packit |
4c4d6b |
check_headers = [
|
|
Packit |
4c4d6b |
['unistd.h', 'HAVE_UNISTD_H'],
|
|
Packit |
4c4d6b |
]
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
foreach h: check_headers
|
|
Packit |
4c4d6b |
if cc.has_header(h.get(0))
|
|
Packit |
4c4d6b |
cdata.set(h.get(1), 1)
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
endforeach
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
cdata.set_quoted('GETTEXT_PACKAGE', json_gettext_domain)
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
if cc.get_id() == 'msvc'
|
|
Packit |
4c4d6b |
# Compiler options taken from msvc_recommended_pragmas.h
|
|
Packit |
4c4d6b |
# in GLib, based on _Win32_Programming_ by Rector and Newcomer
|
|
Packit |
4c4d6b |
test_cflags = [
|
|
Packit |
4c4d6b |
'-we4002', # too many actual parameters for macro
|
|
Packit |
4c4d6b |
'-we4003', # not enough actual parameters for macro
|
|
Packit |
4c4d6b |
'-w14010', # single-line comment contains line-continuation character
|
|
Packit |
4c4d6b |
'-we4013', # 'function' undefined; assuming extern returning int
|
|
Packit |
4c4d6b |
'-w14016', # no function return type; using int as default
|
|
Packit |
4c4d6b |
'-we4020', # too many actual parameters
|
|
Packit |
4c4d6b |
'-we4021', # too few actual parameters
|
|
Packit |
4c4d6b |
'-we4027', # function declared without formal parameter list
|
|
Packit |
4c4d6b |
'-we4029', # declared formal parameter list different from definition
|
|
Packit |
4c4d6b |
'-we4033', # 'function' must return a value
|
|
Packit |
4c4d6b |
'-we4035', # 'function' : no return value
|
|
Packit |
4c4d6b |
'-we4045', # array bounds overflow
|
|
Packit |
4c4d6b |
'-we4047', # different levels of indirection
|
|
Packit |
4c4d6b |
'-we4049', # terminating line number emission
|
|
Packit |
4c4d6b |
'-we4053', # an expression of type void was used as an operand
|
|
Packit |
4c4d6b |
'-we4071', # no function prototype given
|
|
Packit |
4c4d6b |
'-we4819', # the file contains a character that cannot be represented in the current code page
|
|
Packit |
4c4d6b |
]
|
|
Packit |
4c4d6b |
elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
|
|
Packit |
4c4d6b |
test_cflags = [
|
|
Packit |
4c4d6b |
'-Wcast-align',
|
|
Packit |
4c4d6b |
'-Wlogical-op',
|
|
Packit |
4c4d6b |
'-Wmissing-declarations',
|
|
Packit |
4c4d6b |
'-Wmissing-format-attribute',
|
|
Packit |
4c4d6b |
'-Wmissing-prototypes',
|
|
Packit |
4c4d6b |
'-Wmissing-noreturn',
|
|
Packit |
4c4d6b |
'-Wold-style-definition',
|
|
Packit |
4c4d6b |
'-Wpointer-arith',
|
|
Packit |
4c4d6b |
'-Wshadow',
|
|
Packit |
4c4d6b |
'-Wstrict-prototypes',
|
|
Packit |
4c4d6b |
'-Wunused',
|
|
Packit |
4c4d6b |
'-Wno-discarded-qualifiers',
|
|
Packit |
4c4d6b |
'-Wno-int-conversion',
|
|
Packit |
4c4d6b |
'-fno-strict-aliasing',
|
|
Packit |
4c4d6b |
'-Wno-uninitialized',
|
|
Packit |
4c4d6b |
'-Werror=address',
|
|
Packit |
4c4d6b |
'-Werror=array-bounds',
|
|
Packit |
4c4d6b |
'-Werror=empty-body',
|
|
Packit |
4c4d6b |
'-Werror=format=2',
|
|
Packit |
4c4d6b |
'-Werror=implicit',
|
|
Packit |
4c4d6b |
'-Werror=init-self',
|
|
Packit |
4c4d6b |
'-Werror=int-to-pointer-cast',
|
|
Packit |
4c4d6b |
'-Werror=main',
|
|
Packit |
4c4d6b |
'-Werror=missing-braces',
|
|
Packit |
4c4d6b |
'-Werror=nested-externs',
|
|
Packit |
4c4d6b |
'-Werror=nonnull',
|
|
Packit |
4c4d6b |
'-Werror=pointer-to-int-cast',
|
|
Packit |
4c4d6b |
'-Werror=return-type',
|
|
Packit |
4c4d6b |
'-Werror=sequence-point',
|
|
Packit |
4c4d6b |
'-Werror=trigraphs',
|
|
Packit |
4c4d6b |
'-Werror=undef',
|
|
Packit |
4c4d6b |
'-Werror=write-strings',
|
|
Packit |
4c4d6b |
]
|
|
Packit |
4c4d6b |
else
|
|
Packit |
4c4d6b |
test_cflags = []
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
if get_option('default_library') != 'static'
|
|
Packit |
4c4d6b |
if host_system == 'windows'
|
|
Packit |
4c4d6b |
cdata.set('DLL_EXPORT', true)
|
|
Packit |
4c4d6b |
cdata.set('_JSON_EXTERN', '__declspec(dllexport) extern')
|
|
Packit |
4c4d6b |
if cc.get_id() != 'msvc'
|
|
Packit |
4c4d6b |
test_cflags += '-fvisibility=hidden'
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
else
|
|
Packit |
4c4d6b |
cdata.set('_JSON_EXTERN', '__attribute__((visibility("default"))) extern')
|
|
Packit |
4c4d6b |
test_cflags += '-fvisibility=hidden'
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
common_cflags = []
|
|
Packit |
4c4d6b |
foreach cflag: test_cflags
|
|
Packit |
4c4d6b |
if cc.has_argument(cflag)
|
|
Packit |
4c4d6b |
common_cflags += cflag
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
endforeach
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
common_ldflags = []
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
if host_system == 'linux'
|
|
Packit |
4c4d6b |
foreach ldflag: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ]
|
|
Packit |
4c4d6b |
if cc.has_argument(ldflag)
|
|
Packit |
4c4d6b |
common_ldflags += ldflag
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
endforeach
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
# Maintain compatibility with autotools
|
|
Packit |
4c4d6b |
if host_system == 'darwin'
|
|
Packit |
4c4d6b |
common_ldflags += [
|
|
Packit |
4c4d6b |
'-compatibility_version 1',
|
|
Packit |
4c4d6b |
'-current_version @0@.@1@'.format(json_binary_age - json_interface_age, json_interface_age),
|
|
Packit |
4c4d6b |
]
|
|
Packit |
4c4d6b |
endif
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
root_dir = include_directories('.')
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
gnome = import('gnome')
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
python3 = import('python3').find_python()
|
|
Packit |
4c4d6b |
gen_installed_test = files('build-aux/gen-installed-test.py')
|
|
Packit |
4c4d6b |
|
|
Packit |
4c4d6b |
subdir('json-glib')
|
|
Packit |
4c4d6b |
subdir('po')
|
|
Packit |
4c4d6b |
subdir('doc')
|