[gobject-introspection/meson-cairo-feature-option] meson: change "cairo" from a boolean to a feature option
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection/meson-cairo-feature-option] meson: change "cairo" from a boolean to a feature option
- Date: Sat, 28 Sep 2019 10:34:06 +0000 (UTC)
commit 1cb3b2b27f824f3bbdab1a2e3fedf45a39689019
Author: Christoph Reiter <reiter christoph gmail com>
Date: Sat Sep 28 12:27:13 2019 +0200
meson: change "cairo" from a boolean to a feature option
We require cairo only to run all tests and thus default it to false.
This usually results in developers not using it when working on changes and
tests depending on cairo then failing in CI.
This changes it to a feature option that defaults to auto, so that devs that
have cairo headers installed will automatically use it.
.gitlab-ci.yml | 4 ++--
.gitlab-ci/test-msys2-meson.sh | 2 +-
meson.build | 26 +++++++++++++++++++-------
meson_options.txt | 2 +-
tests/scanner/meson.build | 14 +++++++-------
5 files changed, 30 insertions(+), 18 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 72d6f7a1..800f07bc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,7 @@ fedora-x86_64-meson:
CFLAGS: "-Werror"
script:
- python3 -m pip install --user mako markdown
- - meson --prefix /usr --libdir /usr/lib64 --buildtype debug -Ddoctool=true -Dgtk_doc=true -Dcairo=true
-Dpython=python3 _build .
+ - meson --prefix /usr --libdir /usr/lib64 --buildtype debug -Ddoctool=true -Dgtk_doc=true
-Dcairo=enabled -Dpython=python3 _build .
- cd _build
- ninja
- meson test --print-errorlogs --suite=gobject-introspection --no-suite=glib
@@ -43,7 +43,7 @@ fedora-x86_64-python3.5:
PYENV_VERSION: "3.5.6"
script:
- python3 -m pip install --user mako markdown
- - meson --prefix /usr --libdir /usr/lib64 --buildtype debug -Ddoctool=true -Dgtk_doc=true -Dcairo=true
-Dpython=python3 _build .
+ - meson --prefix /usr --libdir /usr/lib64 --buildtype debug -Ddoctool=true -Dgtk_doc=true
-Dcairo=enabled -Dpython=python3 _build .
- cd _build
- ninja
- meson test --print-errorlogs --suite=gobject-introspection --no-suite=glib
diff --git a/.gitlab-ci/test-msys2-meson.sh b/.gitlab-ci/test-msys2-meson.sh
index ce1768c4..37a0f913 100644
--- a/.gitlab-ci/test-msys2-meson.sh
+++ b/.gitlab-ci/test-msys2-meson.sh
@@ -38,7 +38,7 @@ export PATH="$HOME/.local/bin:$PATH"
# Passing the full interpreter path works around the issue
PYTHON="$(which python3)"
export CFLAGS="-Werror"
-meson -Dcairo=true -Ddoctool=true -Dpython="${PYTHON}" --buildtype debug _build
+meson -Dcairo=enabled -Ddoctool=true -Dpython="${PYTHON}" --buildtype debug _build
cd _build
ninja
diff --git a/meson.build b/meson.build
index 9025388f..c71d2d84 100644
--- a/meson.build
+++ b/meson.build
@@ -144,19 +144,31 @@ endif
libffi_dep = dependency('libffi',
fallback : ['libffi', 'ffi_dep'])
-with_cairo = get_option('cairo')
+# cairo
+cairo_option = get_option('cairo')
+if cc.get_id() == 'msvc'
+ if cairo_option.disabled()
+ req = cairo_option
+ else
+ req = false
+ endif
-if with_cairo
- cairo_dep = dependency('cairo', required: cc.get_id() != 'msvc')
- cairo_gobject_dep = dependency('cairo-gobject', required: cc.get_id() != 'msvc')
+ cairo_dep = dependency('cairo', required: req)
+ cairo_gobject_dep = dependency('cairo-gobject', required: req)
- if cc.get_id() == 'msvc' and (not cairo_gobject_dep.found() or not cairo_dep.found())
+ if not cairo_gobject_dep.found() or not cairo_dep.found()
if cc.has_header('cairo.h') and cc.has_header ('cairo-gobject.h')
- cairo_dep = cc.find_library ('cairo')
- cairo_gobject_dep = cc.find_library ('cairo-gobject')
+ cairo_dep = cc.find_library('cairo', required: cairo_option)
+ cairo_gobject_dep = cc.find_library('cairo-gobject', required: cairo_option)
endif
endif
else
+ cairo_dep = dependency('cairo', required: cairo_option)
+ cairo_gobject_dep = dependency('cairo-gobject', required: cairo_option)
+endif
+cairo_deps_found = cairo_gobject_dep.found() and cairo_dep.found()
+
+if not cairo_deps_found
warning('Not building with cairo support, not all tests will be run')
endif
diff --git a/meson_options.txt b/meson_options.txt
index 445a68a4..2bf2876f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,4 @@
-option('cairo', type: 'boolean', value : false,
+option('cairo', type: 'feature', value : 'auto',
description: 'Use cairo for tests'
)
diff --git a/tests/scanner/meson.build b/tests/scanner/meson.build
index a028e3d2..022d1829 100644
--- a/tests/scanner/meson.build
+++ b/tests/scanner/meson.build
@@ -87,7 +87,7 @@ if cc.get_id() != 'msvc'
])
endif
-if with_cairo
+if cairo_deps_found
regress_deps = [cairo_dep, cairo_gobject_dep]
regress_c_args = []
else
@@ -455,7 +455,7 @@ if glib_dep.type_name() == 'pkgconfig'
command: gircompiler_command,
)
- if with_cairo
+ if cairo_deps_found
regress_scanner_cairo_args = ['--include=cairo-1.0']
else
regress_scanner_cairo_args = ['-D_GI_DISABLE_CAIRO',]
@@ -492,7 +492,7 @@ if glib_dep.type_name() == 'pkgconfig'
# The reference gir is generated with cairo support, so we can only compare
# things if we build with cairo as well
- if with_cairo
+ if cairo_deps_found
test_girs += regress_gir
endif
@@ -527,7 +527,7 @@ if with_doctool and glib_dep.type_name() == 'pkgconfig'
'generate-docs-' + language,
input: regress_gir,
depends: [doc_templates],
- build_by_default: not with_cairo,
+ build_by_default: not cairo_deps_found,
output: 'Regress-1.0-' + language,
command: [
python, girdoctool,
@@ -537,7 +537,7 @@ if with_doctool and glib_dep.type_name() == 'pkgconfig'
'@INPUT@', '-o', '@OUTPUT@'],
)
- if with_cairo
+ if cairo_deps_found
test(
'gi-tester-docs-Regress-1.0-' + language,
python,
@@ -555,7 +555,7 @@ if with_doctool and glib_dep.type_name() == 'pkgconfig'
'generate-docs-sections',
input: regress_gir,
depends: [doc_templates],
- build_by_default: not with_cairo,
+ build_by_default: not cairo_deps_found,
output: 'Regress-1.0-sections.txt',
command: [
python, girdoctool,
@@ -565,7 +565,7 @@ if with_doctool and glib_dep.type_name() == 'pkgconfig'
'@INPUT@', '-o', '@OUTPUT@'],
)
- if with_cairo
+ if cairo_deps_found
test(
'gi-tester-docs-Regress-1.0-sections.txt',
python,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]