summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build138
1 files changed, 138 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..f209f60
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,138 @@
+project('libproxy', 'c',
+ version: '0.5.0',
+ meson_version: '>= 0.59.0',
+ default_options: [ 'warning_level=2', 'werror=false', 'c_std=gnu11', ],
+)
+
+version_arr = meson.project_version().split('-')[0].split('.')
+libproxy_version_major = version_arr[0].to_int()
+libproxy_version_minor = version_arr[1].to_int()
+
+root_dir = include_directories('.')
+
+px_prefix = get_option('prefix')
+datadir = get_option('datadir')
+px_libdir = join_paths(px_prefix, get_option('libdir'))
+girdir = get_option('datadir') / 'gir-1.0'
+typelibdir = get_option('libdir') / 'girepository-1.0'
+vapidir = get_option('datadir') / 'vala' / 'vapi'
+
+add_project_arguments(['-I' + meson.project_build_root()], language: 'c')
+
+# The major api version as encoded in the libraries name
+api_version = '1.0'
+package_api_name = '@0@-@1@'.format(meson.project_name(), api_version)
+
+cc = meson.get_compiler('c')
+
+project_c_args = []
+test_c_args = [
+ '-Wcast-align',
+ '-Wdeclaration-after-statement',
+ '-Werror=address',
+ '-Werror=array-bounds',
+ '-Werror=empty-body',
+ '-Werror=implicit',
+ '-Werror=implicit-function-declaration',
+ '-Werror=incompatible-pointer-types',
+ '-Werror=init-self',
+ '-Werror=int-conversion',
+ '-Werror=int-to-pointer-cast',
+ '-Werror=main',
+ '-Werror=misleading-indentation',
+ '-Werror=missing-braces',
+ '-Werror=missing-include-dirs',
+ '-Werror=nonnull',
+ '-Werror=overflow',
+ '-Werror=parenthesis',
+ '-Werror=pointer-arith',
+ '-Werror=pointer-to-int-cast',
+ '-Werror=redundant-decls',
+ '-Werror=return-type',
+ '-Werror=sequence-point',
+ '-Werror=shadow',
+ '-Werror=strict-prototypes',
+ '-Werror=trigraphs',
+ '-Werror=undef',
+ '-Werror=write-strings',
+ '-Wformat-nonliteral',
+ '-Wignored-qualifiers',
+ '-Wimplicit-function-declaration',
+ '-Wlogical-op',
+ '-Wmissing-declarations',
+ '-Wmissing-format-attribute',
+ '-Wmissing-include-dirs',
+ '-Wmissing-noreturn',
+ '-Wnested-externs',
+ '-Wno-cast-function-type',
+ '-Wno-dangling-pointer',
+ '-Wno-missing-field-initializers',
+ '-Wno-sign-compare',
+ '-Wno-unused-parameter',
+ '-Wold-style-definition',
+ '-Wpointer-arith',
+ '-Wredundant-decls',
+ '-Wstrict-prototypes',
+ '-Wswitch-default',
+ '-Wswitch-enum',
+ '-Wundef',
+ '-Wuninitialized',
+ '-Wunused',
+ '-fno-strict-aliasing',
+ ['-Werror=format-security', '-Werror=format=2'],
+]
+
+foreach arg: test_c_args
+ if cc.has_multi_arguments(arg)
+ project_c_args += arg
+ endif
+endforeach
+add_project_arguments(project_c_args, language: 'c')
+
+_platforms = []
+host_system = host_machine.system()
+if host_machine.system() == 'windows'
+ _platforms = ['windows']
+endif
+with_platform_windows = _platforms.contains('windows')
+with_platform_darwin = ['darwin', 'ios'].contains(host_system)
+
+module_suffix = []
+# Keep the autotools convention for shared module suffix because GModule
+# depends on it.
+if with_platform_darwin
+ module_suffix = 'so'
+endif
+
+glib_dep = dependency('glib-2.0', version: '>= 2.71.3')
+gio_dep = dependency('gio-2.0', version: '>= 2.71.3')
+soup_dep = dependency('libsoup-3.0', required: get_option('tests'))
+curl_dep = dependency('libcurl', required: get_option('curl'))
+ws2_32_dep = cc.find_library('ws2_32', required : with_platform_windows)
+gsettings_desktop_schema = dependency('gsettings-desktop-schemas', required: get_option('config-gnome'))
+
+config_h = configuration_data()
+config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
+config_h.set('HAVE_CURL', get_option('curl'))
+configure_file(output: 'config.h', configuration: config_h)
+
+subdir('src')
+subdir('tests')
+subdir('docs')
+
+summary({
+ 'host cpu' : host_machine.cpu_family(),
+ 'host endian' : host_machine.endian(),
+ 'host system' : host_system,
+ 'C Compiler' : cc.get_id(),
+}, section: 'Build environment')
+
+summary({
+ 'Vapi' : get_option('vapi'),
+}, section: 'Options')
+
+# Install pre-commit hook
+hook = run_command(join_paths(meson.project_source_root(), 'data/install-git-hook.sh'), check: false)
+if hook.returncode() == 0
+ message(hook.stdout().strip())
+endif