[sysprof] build: add more GCC warnings
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] build: add more GCC warnings
- Date: Wed, 14 Feb 2018 04:35:46 +0000 (UTC)
commit 0ee8a38fcaa8c0a9a91c04ad4c76dadc5e55fd4a
Author: Christian Hergert <chergert redhat com>
Date: Tue Feb 13 20:35:02 2018 -0800
build: add more GCC warnings
Adds the set we use in various other GNOME projects.
meson.build | 106 ++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 77 insertions(+), 29 deletions(-)
---
diff --git a/meson.build b/meson.build
index 50fb40b..24858e2 100644
--- a/meson.build
+++ b/meson.build
@@ -10,54 +10,99 @@ project('sysprof', ['c', 'cpp'],
)
cc = meson.get_compiler('c')
-config = configuration_data()
-
-config.set_quoted('PACKAGE_NAME', 'sysprof')
-config.set_quoted('PACKAGE_VERSION', meson.project_version())
-config.set_quoted('PACKAGE_STRING', 'sysprof-' + meson.project_version())
-config.set_quoted('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=sysprof')
-config.set('PACKAGE_TARNAME', 'PACKAGE_STRING')
-config.set('PACKAGE', 'PACKAGE_NAME')
-config.set('VERSION', 'PACKAGE_VERSION')
+config_h = configuration_data()
+
+config_h.set_quoted('PACKAGE_NAME', 'sysprof')
+config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
+config_h.set_quoted('PACKAGE_STRING', 'sysprof-' + meson.project_version())
+config_h.set_quoted('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=sysprof')
+config_h.set('PACKAGE_TARNAME', 'PACKAGE_STRING')
+config_h.set('PACKAGE', 'PACKAGE_NAME')
+config_h.set('VERSION', 'PACKAGE_VERSION')
# PACKAGE_URL
debugdir = get_option('debugdir')
if debugdir == ''
debugdir = join_paths(get_option('prefix'), get_option('libdir'), 'debug')
endif
-config.set_quoted('DEBUGDIR', debugdir)
+config_h.set_quoted('DEBUGDIR', debugdir)
-config.set_quoted('GETTEXT_PACKAGE', 'sysprof')
-config.set10('ENABLE_NLS', true)
+config_h.set_quoted('GETTEXT_PACKAGE', 'sysprof')
+config_h.set10('ENABLE_NLS', true)
has_use_clockid = cc.has_member('struct perf_event_attr', 'use_clockid', prefix: '#include
<linux/perf_event.h>')
has_clockid = cc.has_member('struct perf_event_attr', 'clockid', prefix: '#include <linux/perf_event.h>')
if has_use_clockid and has_clockid
- config.set10('HAVE_PERF_CLOCKID', true)
+ config_h.set10('HAVE_PERF_CLOCKID', true)
endif
-configure_file(
- input: 'config.h.meson',
- output: 'config.h',
- configuration: config
-)
-
add_global_arguments([
'-DHAVE_CONFIG_H',
'-I' + meson.build_root(), # config.h
], language: 'c')
-
-c_args_tests = [
- '-Wno-unused-parameter',
+global_c_args = []
+test_c_args = [
+ '-Wcast-align',
+ '-Wdeclaration-after-statement',
+ '-Wformat-nonliteral',
+ '-Wformat-security',
+ '-Wmissing-include-dirs',
+ '-Wnested-externs',
'-Wno-missing-field-initializers',
+ '-Wno-sign-compare',
+ '-Wno-unused-parameter',
+ '-Wno-cast-function-type',
+ '-Wpointer-arith',
+ '-Wredundant-decls',
+ '-Wswitch-default',
+ '-Wswitch-enum',
+ '-Wuninitialized',
+ ['-Werror=format-security', '-Werror=format=2' ],
+ '-Werror=empty-body',
+ '-Werror=implicit-function-declaration',
+ '-Werror=incompatible-pointer-types',
+ '-Werror=pointer-arith',
+ '-Werror=init-self',
+ '-Werror=int-conversion',
+ '-Werror=misleading-indentation',
+ '-Werror=missing-include-dirs',
+ '-Werror=overflow',
+ '-Werror=parenthesis',
+ '-Werror=return-type',
+ '-Werror=shadow',
+ '-Werror=strict-prototypes',
+ '-Werror=undef',
]
-foreach arg: c_args_tests
- if cc.has_argument(arg)
- add_global_arguments(arg, language: 'c')
+if get_option('buildtype') != 'plain'
+ test_c_args += '-fstack-protector-strong'
+endif
+
+foreach arg: test_c_args
+ if cc.has_multi_arguments(arg)
+ global_c_args += arg
endif
endforeach
+# Detect and set symbol visibility
+hidden_visibility_args = []
+if get_option('default_library') != 'static'
+ if host_machine.system() == 'windows'
+ config_h.set('DLL_EXPORT', true)
+ if cc.get_id() == 'msvc'
+ config_h.set('_SP_EXTERN', '__declspec(dllexport) extern')
+ elif cc.has_argument('-fvisibility=hidden')
+ config_h.set('_SP_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
+ hidden_visibility_args = ['-fvisibility=hidden']
+ endif
+ elif cc.has_argument('-fvisibility=hidden')
+ config_h.set('_SP_EXTERN', '__attribute__((visibility("default"))) extern')
+ hidden_visibility_args = ['-fvisibility=hidden']
+ endif
+endif
+
+add_project_arguments(global_c_args, language: 'c')
+
global_link_args = []
test_link_args = [
'-Wl,-z,relro',
@@ -84,10 +129,7 @@ foreach arg: test_link_args
global_link_args += arg
endif
endforeach
-add_global_link_arguments(
- global_link_args,
- language: 'c'
-)
+add_global_link_arguments(global_link_args, language: 'c')
if not cc.links('''
#include <stdatomic.h>
@@ -107,6 +149,12 @@ if cc.has_argument('-fPIE')
exe_link_args += '-fpie'
endif
+configure_file(
+ input: 'config.h.meson',
+ output: 'config.h',
+ configuration: config_h
+)
+
gnome = import('gnome')
subdir('lib')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]