[gtkmm] meson.build: Avoid configuration warnings
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm] meson.build: Avoid configuration warnings
- Date: Sat, 21 May 2022 11:09:48 +0000 (UTC)
commit 8695ef9bc77679a05f462a6f7f7e1de6ab3980eb
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Sat May 21 12:45:08 2022 +0200
meson.build: Avoid configuration warnings
.gitlab-ci.yml | 6 +++---
meson.build | 49 ++++++++++++++++++++++++++++++-------------------
2 files changed, 33 insertions(+), 22 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 990ea677..3679c852 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -77,7 +77,7 @@ build_deps:
- cp -r installdir/usr /
# Build glibmm-2.68
- if test ! -d glibmm; then
- - git clone --branch 2.70.0 --depth 1 https://gitlab.gnome.org/GNOME/glibmm.git glibmm
+ - git clone --branch 2.72.1 --depth 1 https://gitlab.gnome.org/GNOME/glibmm.git glibmm
- cd glibmm
- mkdir _build && cd _build
- meson --prefix=/usr --libdir=lib -Dbuild-examples=false -Dbuildtype=release
@@ -131,7 +131,7 @@ release_gcc_build:
- cp -r installdir/usr /
- mkdir _build && cd _build
# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
- - meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
+ - meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal -Dwarning_level=3
-Dwerror=true
- meson compile
# Some tests fail with
# Unable to init Broadway server: Could not connect: No such file or directory
@@ -155,7 +155,7 @@ release_clang_build:
- cp -r installdir/usr /
- mkdir _build && cd _build
# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
- - CC=clang CXX=clang++ meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
+ - CC=clang CXX=clang++ meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
-Dwarning_level=3 -Dwerror=true
- meson compile
# See comment in the release_gcc_build job.
# - meson test
diff --git a/meson.build b/meson.build
index 26808fbb..3f4973d3 100644
--- a/meson.build
+++ b/meson.build
@@ -5,7 +5,8 @@ project('gtkmm', 'c', 'cpp',
version: '4.6.1',
license: 'LGPLv2.1+',
default_options: [
- 'cpp_std=c++17'
+ 'cpp_std=c++17',
+ 'warning_level=1',
],
meson_version: '>= 0.56.0', # required for executable(win_subsystem:)
)
@@ -42,6 +43,7 @@ macos_darwin_versions = [
project_source_root = meson.current_source_dir()
project_build_root = meson.current_build_dir()
+c_compiler = meson.get_compiler('c')
cpp_compiler = meson.get_compiler('cpp')
is_msvc = cpp_compiler.get_id() == 'msvc'
is_host_windows = host_machine.system() == 'windows'
@@ -74,10 +76,12 @@ maintainer_mode = maintainer_mode_opt == 'true' or \
if is_dist_check
message('Looks like a tarball is being tested. ' + \
'Option "dist-warnings" is used instead of "warnings".')
- warning_level = get_option('dist-warnings')
+ cpp_warnings = get_option('dist-warnings')
else
- warning_level = get_option('warnings')
+ cpp_warnings = get_option('warnings')
endif
+warning_level = get_option('warning_level').to_int()
+werror = get_option('werror')
build_deprecated_api = get_option('build-deprecated-api')
build_documentation_opt = get_option('build-documentation')
build_documentation = build_documentation_opt == 'true' or \
@@ -240,24 +244,25 @@ endif
gtkmm_libname = meson.project_name() + msvc14x_toolset_ver + '-' + gtkmm_api_version
# Set compiler warnings.
+# Meson warns if any of the /W1, /W2, /W3, /W4, /Wall, -Wall, -Wextra, -Werror
+# compiler options are added with add_project_arguments().
+# Avoid such warnings, when possible.
+# See _warn_about_builtin_args() in meson/mesonbuild/interpreter/interpreter.py.
warning_flags = []
-if warning_level == 'min'
- if is_msvc
- warning_flags = ['/W3']
- else
- warning_flags = ['-Wall']
+if cpp_warnings == 'min'
+ if warning_level == 0
+ warning_flags = is_msvc ? ['/W2'] : ['-Wall']
endif
-elif warning_level == 'max' or warning_level == 'fatal'
- if is_msvc
- warning_flags = ['/W4']
- else
- warning_flags = '-pedantic -Wall -Wextra -Wformat-security -Wsuggest-override -Wshadow
-Wno-long-long'.split()
+elif cpp_warnings == 'max' or cpp_warnings == 'fatal'
+ if warning_level < 3
+ warning_flags = is_msvc ? ['/W4'] : ['-pedantic', '-Wall', '-Wextra']
endif
- if warning_level == 'fatal'
- if is_msvc
- warning_flags += ['/WX']
- else
- warning_flags += ['-Werror']
+ if not is_msvc
+ warning_flags += '-Wformat-security -Wsuggest-override -Wshadow -Wno-long-long'.split()
+ endif
+ if cpp_warnings == 'fatal'
+ if not werror
+ warning_flags += is_msvc ? ['/WX'] : ['-Werror']
endif
deprecations = 'G PANGO GDK GDK_PIXBUF GTK GLIBMM PANGOMM CAIROMM SIGCXX'.split()
foreach d : deprecations
@@ -269,6 +274,11 @@ endif
warning_flags = cpp_compiler.get_supported_arguments(warning_flags)
add_project_arguments(warning_flags, language: 'cpp')
+# Don't warn about a long string in a C file.
+# gnome.compile_resources() generates such a file.
+c_warning_flags = is_msvc ? [] : ['-Wno-overlength-strings']
+add_project_arguments(c_compiler.get_supported_arguments(c_warning_flags), language: 'c')
+
gui_app_ldflags = []
# MSVC: Ignore warnings that aren't really harmful, but make those
@@ -361,7 +371,8 @@ summary = [
meson.project_name() + ' ' + meson.project_version(),
'',
' Maintainer mode: @0@@1@'.format(maintainer_mode_opt, real_maintainer_mode),
- ' Compiler warnings: @0@'.format(warning_level),
+ ' Compiler warnings: @0@ (warning_level: @1@, werror: @2@)'. \
+ format(cpp_warnings, warning_level, werror),
' Build deprecated API: @0@'.format(build_deprecated_api),
'Build HTML documentation: @0@@1@'.format(build_documentation_opt, real_build_documentation),
' Build demo programs: @0@'.format(build_demos),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]