summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2018-12-15 12:18:04 +0100
committerChristoph Reiter <reiter.christoph@gmail.com>2018-12-18 21:39:33 +0000
commit60f78f7e9e984802290a483535db208152008472 (patch)
tree181e3d60c8c9fda5066b11119488f09b81838eee
parent5d00d872012a20ce3e7bd6421d81780fd9a09e52 (diff)
downloadgobject-introspection-60f78f7e9e984802290a483535db208152008472.tar.gz
meson: add default compiler warning flags and enable -Werror on CI
This enables various compiler warnings project wide and disables the triggered ones for each library/executable. This should give us roughly the same behaviour as with autotools. Tested with gcc8 and clang7.
-rw-r--r--.gitlab-ci.yml1
-rw-r--r--girepository/cmph/meson.build21
-rw-r--r--girepository/meson.build24
-rw-r--r--giscanner/meson.build8
-rw-r--r--meson.build46
-rw-r--r--tests/meson.build10
-rw-r--r--tests/repository/meson.build7
-rw-r--r--tools/meson.build12
8 files changed, 119 insertions, 10 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0ad627db..53abbde7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ fedora-x86_64-meson:
variables:
CCACHE_BASEDIR: "${CI_PROJECT_DIR}"
CCACHE_DIR: "${CI_PROJECT_DIR}/_ccache"
+ CFLAGS: "-Werror"
script:
- meson --prefix /usr --libdir /usr/lib64 --buildtype debug -Dgtk-doc=true -Dcairo=true -Dpython=python3 _build .
- cd _build
diff --git a/girepository/cmph/meson.build b/girepository/cmph/meson.build
index 368afc7b..77c6e696 100644
--- a/girepository/cmph/meson.build
+++ b/girepository/cmph/meson.build
@@ -29,9 +29,20 @@ cmph_deps = [
cc.find_library('m', required: false),
]
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-implicit-fallthrough',
+ '-Wno-old-style-definition',
+ '-Wno-strict-prototypes',
+ '-Wno-suggest-attribute=noreturn',
+ '-Wno-type-limits',
+ '-Wno-undef',
+ '-Wno-unused-parameter',
+ '-Wno-cast-align',
+ '-Wno-unused-function',
+])
cmph = static_library('cmph',
sources: cmph_sources,
- c_args: gi_hidden_visibility_cflags,
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
dependencies: cmph_deps,
)
@@ -40,11 +51,17 @@ cmph_dep = declare_dependency(
include_directories: include_directories('.'),
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-old-style-definition',
+ '-Wno-strict-prototypes',
+ '-Wno-type-limits',
+])
cmph_test = executable('cmph-bdz-test', '../cmph-bdz-test.c',
dependencies: [
cmph_dep,
glib_dep,
- ]
+ ],
+ c_args: custom_c_args,
)
test('cmph-bdz-test', cmph_test)
diff --git a/girepository/meson.build b/girepository/meson.build
index 64cd9ece..e0f224e7 100644
--- a/girepository/meson.build
+++ b/girepository/meson.build
@@ -1,9 +1,14 @@
subdir('cmph')
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-strict-prototypes',
+ '-Wno-old-style-definition',
+ '-Wno-cast-align',
+])
girepo_gthash_lib = static_library('girepository-gthash',
sources: 'gthash.c',
include_directories : configinc,
- c_args: gi_hidden_visibility_cflags,
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
dependencies: [
cmph_dep,
glib_dep,
@@ -17,6 +22,11 @@ girepo_gthash_dep = declare_dependency(
include_directories: include_directories('.'),
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-unused-parameter',
+ '-Wno-duplicated-branches',
+ '-Wno-cast-align',
+])
girepo_internals_lib = static_library('girepository-internals',
sources: [
'girmodule.c',
@@ -25,7 +35,7 @@ girepo_internals_lib = static_library('girepository-internals',
'girparser.c',
'girwriter.c',
],
- c_args: gi_hidden_visibility_cflags,
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
include_directories : configinc,
dependencies: [girepo_gthash_dep, libffi_dep],
)
@@ -136,10 +146,18 @@ girepo_gir_sources = files(
install_headers(girepo_headers, subdir: 'gobject-introspection-1.0')
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-unused-parameter',
+ '-Wno-duplicated-branches',
+ '-Wno-type-limits',
+ '-Wno-cast-align',
+ '-Wno-missing-field-initializers',
+])
girepo_lib = shared_library('girepository-1.0',
sources: girepo_sources,
include_directories : configinc,
- c_args: gi_hidden_visibility_cflags + ['-DG_IREPOSITORY_COMPILATION'],
+ c_args: gi_hidden_visibility_cflags + ['-DG_IREPOSITORY_COMPILATION'] +
+ custom_c_args,
dependencies: [glib_dep, gobject_dep, gmodule_dep,
gio_dep, girepo_internals_dep],
version: '1.0.0',
diff --git a/giscanner/meson.build b/giscanner/meson.build
index 6ac74aaf..4998865a 100644
--- a/giscanner/meson.build
+++ b/giscanner/meson.build
@@ -70,13 +70,17 @@ if not cc.has_header('unistd.h')
giscanner_args += '-DYY_NO_UNISTD_H'
endif
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-missing-field-initializers',
+ '-Wno-unused-parameter',
+])
giscanner_lib = static_library('giscanner',
sources: [
'sourcescanner.c',
scannerparser,
scannerlexer,
],
- c_args: giscanner_args,
+ c_args: giscanner_args + custom_c_args,
include_directories : configinc,
dependencies: [glib_dep, gobject_dep, gio_dep, gmodule_dep],
)
@@ -90,7 +94,7 @@ endif
giscanner_pymod = python.extension_module('_giscanner', ['giscannermodule.c'],
link_with: giscanner_lib,
- c_args: [gi_hidden_visibility_cflags],
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
include_directories : configinc,
dependencies: [glib_dep, gobject_dep, gio_dep, gmodule_dep,
python_ext_dep],
diff --git a/meson.build b/meson.build
index ea6e3ed7..79c76302 100644
--- a/meson.build
+++ b/meson.build
@@ -22,6 +22,52 @@ if not python_version.version_compare(python_version_req)
endif
cc = meson.get_compiler('c')
+
+project_c_args = []
+if cc.get_id() != 'msvc'
+ project_c_args += [
+ '-Wall',
+ '-Warray-bounds',
+ '-Wcast-align',
+ '-Wdeclaration-after-statement',
+ '-Wduplicated-branches',
+ '-Wextra',
+ '-Wformat=2',
+ '-Wformat-nonliteral',
+ '-Wformat-security',
+ '-Wimplicit-function-declaration',
+ '-Winit-self',
+ '-Wjump-misses-init',
+ '-Wlogical-op',
+ '-Wmissing-declarations',
+ '-Wmissing-format-attribute',
+ '-Wmissing-include-dirs',
+ '-Wmissing-noreturn',
+ '-Wmissing-prototypes',
+ '-Wnested-externs',
+ '-Wnull-dereference',
+ '-Wold-style-definition',
+ '-Wpacked',
+ '-Wpointer-arith',
+ '-Wrestrict',
+ '-Wreturn-type',
+ '-Wshadow',
+ '-Wsign-compare',
+ '-Wstrict-aliasing',
+ '-Wstrict-prototypes',
+ '-Wundef',
+ '-Wunused-but-set-variable',
+ '-Wwrite-strings',
+ ]
+
+ project_c_args += [
+ '-fno-strict-aliasing',
+ ]
+endif
+
+project_c_args = cc.get_supported_arguments(project_c_args)
+add_project_arguments(project_c_args, language: 'c')
+
config = configuration_data()
config.set('GI_MAJOR_VERSION', gi_versions[0])
diff --git a/tests/meson.build b/tests/meson.build
index 7e633f29..c11151dc 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -46,18 +46,24 @@ test_everything_files = custom_target('everything',
test_everything_headers = [test_everything_files[0]]
test_everything_sources = [test_everything_files[1]]
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-unused-parameter',
+])
everything_lib = shared_library('everything-1.0',
sources: test_everything_sources,
include_directories : configinc,
- c_args: gi_hidden_visibility_cflags,
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
dependencies: [glib_dep, gobject_dep],
version: '1.0.0',
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-unused-parameter',
+])
gimarshallingtests_lib = shared_library('gimarshallingtests-1.0',
sources: test_marshalling_sources,
include_directories : configinc,
- c_args: gi_hidden_visibility_cflags,
+ c_args: gi_hidden_visibility_cflags + custom_c_args,
dependencies: [glib_dep, gobject_dep],
version: '1.0.0',
)
diff --git a/tests/repository/meson.build b/tests/repository/meson.build
index 1281427e..3a51a0e3 100644
--- a/tests/repository/meson.build
+++ b/tests/repository/meson.build
@@ -13,10 +13,15 @@ repository_test_env.append(
join_paths(meson.build_root(), 'tests')
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-unused-parameter',
+])
if glib_dep.type_name() == 'pkgconfig'
foreach test_name : repository_tests
source = files(test_name + '.c')
- exe = executable(test_name, source, dependencies: [girepo_dep])
+ exe = executable(test_name, source,
+ dependencies: [girepo_dep],
+ c_args: custom_c_args)
test(test_name, exe, env: repository_test_env)
endforeach
endif
diff --git a/tools/meson.build b/tools/meson.build
index 65839c34..806441af 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -40,23 +40,35 @@ endforeach
girscanner = tool_output[0]
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-missing-field-initializers',
+])
gircompiler = executable('g-ir-compiler', 'compiler.c',
dependencies: [
girepo_internals_dep,
girepo_dep,
],
install: true,
+ c_args: custom_c_args,
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-missing-field-initializers',
+])
girgenerate = executable('g-ir-generate', 'generate.c',
dependencies: [
girepo_internals_dep,
girepo_dep,
],
install: true,
+ c_args: custom_c_args,
)
+custom_c_args = cc.get_supported_arguments([
+ '-Wno-missing-field-initializers',
+])
girinspect = executable('g-ir-inspect', 'g-ir-inspect.c',
dependencies: girepo_dep,
install: true,
+ c_args: custom_c_args,
)