128 lines
3.5 KiB
Meson
128 lines
3.5 KiB
Meson
project(
|
|
'pycairo', 'c',
|
|
version: '1.18.3',
|
|
meson_version: '>= 0.47.0',
|
|
default_options: [
|
|
'warning_level=1',
|
|
'buildtype=debugoptimized',
|
|
],
|
|
)
|
|
|
|
cair_version_req = '>=1.13.1'
|
|
|
|
pymod = import('python')
|
|
python = pymod.find_installation(get_option('python'))
|
|
|
|
configure_file(
|
|
input: 'setup.cfg',
|
|
output: 'setup.cfg',
|
|
copy: true,
|
|
)
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
main_c_args = []
|
|
if cc.get_id() == 'msvc'
|
|
# Adapted from msvc_recommended_pragmas.h, since we don't depend on GLib here
|
|
# Warnings that we want to look out for
|
|
main_c_args += [
|
|
'-we4002', # too many actual parameters for macro
|
|
'-we4003', # not enough actual parameters for macro
|
|
'-w14010', # single-line comment contains line-continuation character
|
|
'-we4013', # 'function' undefined; assuming extern returning int
|
|
'-w14016', # no function return type; using int as default
|
|
'-we4020', # too many actual parameters
|
|
'-we4021', # too few actual parameters
|
|
'-we4027', # function declared without formal parameter list
|
|
'-we4029', # declared formal parameter list different from definition
|
|
'-we4033', # 'function' must return a value
|
|
'-we4035', # 'function' : no return value
|
|
'-we4045', # array bounds overflow
|
|
'-we4047', # different levels of indirection
|
|
'-we4049', # terminating line number emission
|
|
'-we4053', # An expression of type void was used as an operand
|
|
'-we4071', # no function prototype given
|
|
'-we4150',
|
|
'-we4819', # The file contains a character that cannot be represented in the current code page
|
|
]
|
|
|
|
# Silence warnings for stuff that should not really raise concern
|
|
main_c_args += [
|
|
'-wd4101', # unreferenced local variable
|
|
'-wd4244', # No possible loss of data warnings
|
|
'-wd4305', # No truncation from int to char warnings
|
|
]
|
|
|
|
# Silence warnings for using non-MS CRT stuff
|
|
main_c_args += [
|
|
'-D_CRT_SECURE_NO_WARNINGS',
|
|
'-D_CRT_NONSTDC_NO_WARNINGS'
|
|
]
|
|
else
|
|
main_c_args += [
|
|
'-Wall',
|
|
'-Warray-bounds',
|
|
'-Wcast-align',
|
|
'-Wconversion',
|
|
'-Wextra',
|
|
'-Wformat=2',
|
|
'-Wformat-nonliteral',
|
|
'-Wformat-security',
|
|
'-Wimplicit-function-declaration',
|
|
'-Winit-self',
|
|
'-Winline',
|
|
'-Wmissing-format-attribute',
|
|
'-Wmissing-noreturn',
|
|
'-Wnested-externs',
|
|
'-Wold-style-definition',
|
|
'-Wpacked',
|
|
'-Wpointer-arith',
|
|
'-Wreturn-type',
|
|
'-Wshadow',
|
|
'-Wsign-compare',
|
|
'-Wstrict-aliasing',
|
|
'-Wundef',
|
|
'-Wunused-but-set-variable',
|
|
]
|
|
|
|
main_c_args += [
|
|
'-Wno-missing-field-initializers',
|
|
'-Wno-unused-parameter',
|
|
]
|
|
|
|
main_c_args += [
|
|
'-fno-strict-aliasing',
|
|
'-fvisibility=hidden',
|
|
]
|
|
|
|
if not ['3.3', '3.4'].contains(python.language_version())
|
|
main_c_args += [
|
|
'-Wswitch-default',
|
|
]
|
|
endif
|
|
endif
|
|
|
|
main_c_args = cc.get_supported_arguments(main_c_args)
|
|
|
|
pycairo_version = meson.project_version()
|
|
version_arr = pycairo_version.split('.')
|
|
pycairo_version_major = version_arr[0].to_int()
|
|
pycairo_version_minor = version_arr[1].to_int()
|
|
pycairo_version_micro = version_arr[2].to_int()
|
|
|
|
pyext_c_args = [
|
|
'-DPYCAIRO_VERSION_MAJOR=@0@'.format(pycairo_version_major),
|
|
'-DPYCAIRO_VERSION_MINOR=@0@'.format(pycairo_version_minor),
|
|
'-DPYCAIRO_VERSION_MICRO=@0@'.format(pycairo_version_micro),
|
|
]
|
|
|
|
pkginfo_conf = configuration_data()
|
|
pkginfo_conf.set('VERSION', pycairo_version)
|
|
configure_file(input : 'PKG-INFO.in',
|
|
output : 'pycairo-@0@.egg-info'.format(pycairo_version),
|
|
configuration : pkginfo_conf,
|
|
install_dir : python.get_install_dir(pure : false))
|
|
|
|
subdir('cairo')
|
|
subdir('tests')
|