From 0d3c2c2be3fa49aa7d802f64b996fb4ae8b5dd2d Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:16:04 +0100 Subject: [PATCH 01/19] .travis.yml: define simple freebsd scenarios --- .travis.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.travis.yml b/.travis.yml index 794d7ffb8b..2fa971ccb6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -589,6 +589,23 @@ _matrix_linux_cstd_warn: packages: - *deps_driverlibs +_matrix_freebsd_gnustd_nowarn: + include: &_matrix_freebsd_gnustd_nowarn + - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ + os: freebsd + compiler: gcc + cache: + directories: + - $HOME/.ccache + + - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ + os: freebsd + compiler: clang + cache: + directories: + - $HOME/.ccache + + # Try also a range of platforms for MacOS X builds # Inspired by https://github.com/taocpp/operators/blob/master/.travis.yml _matrix_osx_gnustd_nowarn: @@ -785,6 +802,14 @@ _matrix_linux: - *_matrix_required_linux - *_matrix_allowfail_linux +_matrix_freebsd: + include: &_matrix_freebsd + - *_matrix_freebsd_gnustd_nowarn + +_matrix_allowfail_freebsd: + include: &_matrix_allowfail_freebsd + - *_matrix_freebsd_gnustd_nowarn + _matrix_allowfail_osx: include: &_matrix_allowfail_osx - *_matrix_osx_cstd_nowarn @@ -826,6 +851,7 @@ _matrix_gnustd_nowarn: include: &_matrix_gnustd_nowarn - *_matrix_osx_gnustd_nowarn - *_matrix_linux_gnustd_nowarn + - *_matrix_freebsd_gnustd_nowarn _matrix_warn: include: &_matrix_warn @@ -845,6 +871,7 @@ _matrix_required: _matrix_all: include: &_matrix_all - *_matrix_linux + - *_matrix_freebsd - *_matrix_osx - *_matrix_windows @@ -856,6 +883,7 @@ _matrix_master: ### following items from becoming green: - *_matrix_allowfail_linux - *_matrix_allowfail_osx + - *_matrix_allowfail_freebsd - *_matrix_windows _matrix_fixbugs: @@ -906,6 +934,9 @@ jobs: #OK# - env: NUT_MATRIX_TAG="gnu89-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu89" CXXFLAGS="-std=gnu++89" - env: NUT_MATRIX_TAG="c89-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=c89" CXXFLAGS="-Wall -Wextra -Werror -std=c++89" - env: NUT_MATRIX_TAG="gnu89-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu89" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++89" +### FreeBSD + - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ + - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ ### macosx #OK# - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ #OK# - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++ From 80d3cc84d780b08924a1a4ab0b9b126a64f05587 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:57:09 +0100 Subject: [PATCH 02/19] ci_build.sh: as of now, skip building cgi (needs libgd) on freebsd too, for "default-all-errors" test cases --- ci_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci_build.sh b/ci_build.sh index e30b4e792f..c95918f1d6 100755 --- a/ci_build.sh +++ b/ci_build.sh @@ -194,7 +194,7 @@ default|default-alldrv|default-all-errors|default-spellcheck|default-shellcheck| CONFIG_OPTS+=("--with-doc=skip") # Enable as many binaries to build as current worker setup allows CONFIG_OPTS+=("--with-all=auto") - if [[ "$TRAVIS_OS_NAME" != "windows" ]] ; then + if [[ "$TRAVIS_OS_NAME" != "windows" ]] && [[ "$TRAVIS_OS_NAME" != "freebsd" ]] ; then # Currently --with-all implies this, but better be sure to # really build everything we can to be certain it builds: CONFIG_OPTS+=("--with-cgi=yes") From 048ca179287974462f92c725a6a1c38692ee4dce Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 03:26:49 +0100 Subject: [PATCH 03/19] .travis.yml: mark "gnu99-gcc-freebsd-nowarn" and "gnu99-clang-freebsd-nowarn" as required --- .travis.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2fa971ccb6..80fbf0e15f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -806,6 +806,10 @@ _matrix_freebsd: include: &_matrix_freebsd - *_matrix_freebsd_gnustd_nowarn +_matrix_required_freebsd: + include: &_matrix_required_freebsd + - *_matrix_freebsd_gnustd_nowarn + _matrix_allowfail_freebsd: include: &_matrix_allowfail_freebsd - *_matrix_freebsd_gnustd_nowarn @@ -865,6 +869,7 @@ _matrix_warn: _matrix_required: include: &_matrix_required - *_matrix_required_linux + - *_matrix_required_freebsd - *_matrix_required_osx # - *_matrix_required_windows @@ -935,8 +940,8 @@ jobs: - env: NUT_MATRIX_TAG="c89-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=c89" CXXFLAGS="-Wall -Wextra -Werror -std=c++89" - env: NUT_MATRIX_TAG="gnu89-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu89" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++89" ### FreeBSD - - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ - - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ +#OK# - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ +#OK# - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ ### macosx #OK# - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ #OK# - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++ From 014682423884246aebd557f21e9c84545a683ac8 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 03:32:30 +0100 Subject: [PATCH 04/19] .travis.yml: introduce freebsd test cases with warnings --- .travis.yml | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 80fbf0e15f..769131563f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -605,6 +605,40 @@ _matrix_freebsd_gnustd_nowarn: directories: - $HOME/.ccache +_matrix_freebsd_gnustd_warn: + include: &_matrix_freebsd_gnustd_warn + - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc CXX=g++ + os: freebsd + compiler: gcc + if: branch =~ fightwarn + cache: + directories: + - $HOME/.ccache + + - env: NUT_MATRIX_TAG="gnu17-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu17" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++17" CC=gcc CXX=g++ + os: freebsd + compiler: gcc + if: branch =~ fightwarn + cache: + directories: + - $HOME/.ccache + + - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=gnu++99" CC=clang CXX=clang++ + os: freebsd + compiler: clang + if: branch =~ fightwarn + cache: + directories: + - $HOME/.ccache + + - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=gnu17" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=gnu++17" CC=clang CXX=clang++ + os: freebsd + compiler: clang + if: branch =~ fightwarn + cache: + directories: + - $HOME/.ccache + # Try also a range of platforms for MacOS X builds # Inspired by https://github.com/taocpp/operators/blob/master/.travis.yml @@ -812,7 +846,7 @@ _matrix_required_freebsd: _matrix_allowfail_freebsd: include: &_matrix_allowfail_freebsd - - *_matrix_freebsd_gnustd_nowarn + - *_matrix_freebsd_gnustd_warn _matrix_allowfail_osx: include: &_matrix_allowfail_osx @@ -861,6 +895,7 @@ _matrix_warn: include: &_matrix_warn - *_matrix_linux_gnustd_warn - *_matrix_linux_cstd_warn + - *_matrix_freebsd_gnustd_warn - *_matrix_osx_gnustd_warn - *_matrix_osx_cstd_warn - *_matrix_windows_cstd_warn @@ -942,6 +977,10 @@ jobs: ### FreeBSD #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ #OK# - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ + - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc CXX=g++ + - env: NUT_MATRIX_TAG="gnu17-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu17" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++17" CC=gcc CXX=g++ + - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=gnu++99" CC=clang CXX=clang++ + - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=gnu17" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=gnu++17" CC=clang CXX=clang++ ### macosx #OK# - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ #OK# - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++ From d72ee178df33643bff6d887d9eb9d20edbb637de Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 03:33:27 +0100 Subject: [PATCH 05/19] .travis.yml: introduce freebsd test cases with nowarn and gnu17 --- .travis.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.travis.yml b/.travis.yml index 769131563f..a2866f7e57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -605,6 +605,20 @@ _matrix_freebsd_gnustd_nowarn: directories: - $HOME/.ccache + - env: NUT_MATRIX_TAG="gnu17-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++ + os: freebsd + compiler: gcc + cache: + directories: + - $HOME/.ccache + + - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++ + os: freebsd + compiler: clang + cache: + directories: + - $HOME/.ccache + _matrix_freebsd_gnustd_warn: include: &_matrix_freebsd_gnustd_warn - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc CXX=g++ @@ -977,6 +991,8 @@ jobs: ### FreeBSD #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc CXX=g++ #OK# - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ +#OK# - env: NUT_MATRIX_TAG="gnu17-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++ +#OK# - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++ - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc CXX=g++ - env: NUT_MATRIX_TAG="gnu17-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu17" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++17" CC=gcc CXX=g++ - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=gnu++99" CC=clang CXX=clang++ From 2e44273b6f555ef0b69fd65663612d20f87e9d27 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 03:49:05 +0100 Subject: [PATCH 06/19] .travis.yml: add _matrix_freebsd_gnustd_warn to _matrix_freebsd --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a2866f7e57..d329d7f93c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -853,6 +853,7 @@ _matrix_linux: _matrix_freebsd: include: &_matrix_freebsd - *_matrix_freebsd_gnustd_nowarn + - *_matrix_freebsd_gnustd_warn _matrix_required_freebsd: include: &_matrix_required_freebsd From 61c4de9788352cfa16c8881e74d1dd9748d733e8 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Thu, 19 Nov 2020 13:37:06 +0100 Subject: [PATCH 07/19] .travis.yml: define a NUT_MATRIX_TAG="gnu99-clang-win-warn" test case for completeness --- .travis.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.travis.yml b/.travis.yml index d329d7f93c..06248535ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -782,6 +782,18 @@ _matrix_windows_gnustd_nowarn: - $HOME/.ccache - /C/tools +_matrix_windows_gnustd_warn: + include: &_matrix_windows_gnustd_warn + - env: NUT_MATRIX_TAG="gnu99-clang-win-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++99" CC=clang CXX=clang++ + os: windows + compiler: clang + if: branch =~ fightwarn + cache: + directories: + - $HOME/AppData/Local/Temp/chocolatey + - $HOME/.ccache + - /C/tools + _matrix_windows_cstd_nowarn: include: &_matrix_windows_cstd_nowarn - env: NUT_MATRIX_TAG="c99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++ @@ -885,6 +897,7 @@ _matrix_osx: _matrix_allowfail_windows: include: &_matrix_allowfail_windows - *_matrix_windows_gnustd_nowarn + - *_matrix_windows_gnustd_warn - *_matrix_windows_cstd_nowarn - *_matrix_windows_cstd_warn @@ -905,6 +918,7 @@ _matrix_gnustd_nowarn: - *_matrix_osx_gnustd_nowarn - *_matrix_linux_gnustd_nowarn - *_matrix_freebsd_gnustd_nowarn +# -*_matrix_windows_gnustd_nowarn _matrix_warn: include: &_matrix_warn @@ -913,6 +927,7 @@ _matrix_warn: - *_matrix_freebsd_gnustd_warn - *_matrix_osx_gnustd_warn - *_matrix_osx_cstd_warn + - *_matrix_windows_gnustd_warn - *_matrix_windows_cstd_warn # Default "jobs:" matrix should reference at least this for master branches @@ -1011,6 +1026,7 @@ jobs: - env: NUT_MATRIX_TAG="c11-clang-xcode7.3-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c11" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++11" CC=clang CXX=clang++ ### windows - env: NUT_MATRIX_TAG="gnu99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++ + - env: NUT_MATRIX_TAG="gnu99-clang-win-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++99" CC=clang CXX=clang++ - env: NUT_MATRIX_TAG="c99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++ - env: NUT_MATRIX_TAG="c99-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++99" CC=clang CXX=clang++ - env: NUT_MATRIX_TAG="c20-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c20" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++20" CC=clang CXX=clang++ From 73e81420a53d482dff326ce2fb856d443270d818 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Thu, 19 Nov 2020 13:38:51 +0100 Subject: [PATCH 08/19] .travis.yml: for windows builds, add /C/tools/cygwin/bin to PATH --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 06248535ba..6439317321 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1061,7 +1061,7 @@ before_install: rm -f ccache-3.7.12-windows-64.zip popd fi - export PATH=/C/tools/bin:$PATH + export PATH=/C/tools/bin:/C/tools/cygwin/bin:$PATH CI_TRACE=true CI_TIME=false export CI_TRACE CI_TIME From 0d4da451517ab2d9fcfe4b02e4a1ac47df31b06b Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sat, 21 Nov 2020 16:57:41 +0100 Subject: [PATCH 09/19] Revert ".travis.yml: run Windows test cases with cygwin bash" This reverts commit 4592860aa82a208969eb1ae3ac2ec1f96e77bc07. --- .travis.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6439317321..6e262e9cbf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1069,10 +1069,4 @@ before_install: - if [ -n "${NUT_MATRIX_TAG}" ] ; then export CFLAGS CXXFLAGS ; [ -z "$CC" ] || export CC ; [ -z "$CXX" ] || export CXX ; fi # Hand off to generated script for each BUILD_TYPE -script: -- |- - if [[ $OS_BUILD == "windows" ]]; then - powershell -Command "C:\tools\cygwin\bin\bash.exe -c './ci_build.sh'"; - else - ./ci_build.sh - fi +script: ./ci_build.sh From 72f1d9525565a13a4ff5703a6065f1811f47fc0c Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sat, 21 Nov 2020 16:58:45 +0100 Subject: [PATCH 10/19] .travis.yml: use cygwin bins as last resort (e.g. for autoconf) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e262e9cbf..39c2a71364 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1061,7 +1061,7 @@ before_install: rm -f ccache-3.7.12-windows-64.zip popd fi - export PATH=/C/tools/bin:/C/tools/cygwin/bin:$PATH + export PATH=/C/tools/bin:$PATH:/C/tools/cygwin/bin CI_TRACE=true CI_TIME=false export CI_TRACE CI_TIME From 286fa13e00fb8d7ed0dc62004be75765009abd6e Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 00:24:55 +0100 Subject: [PATCH 11/19] .travis.yml: allow to skip cygwin autotools install if it was done earlier and cached --- .travis.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 39c2a71364..7a4a64d6e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1051,8 +1051,12 @@ before_install: fi - |- if [[ $TRAVIS_OS_NAME == "windows" ]] ; then - choco install cygwin - C:\\tools\\cygwin\\cygwinsetup.exe -q -P make,unzip,automake,autoconf,zip + if [[ ! -s C:/tools/cygwin/bin/autoreconf.exe ]] ; then + if [[ ! -s C:/tools/cygwin/bin/autoreconf ]] ; then + choco install cygwin + C:\\tools\\cygwin\\cygwinsetup.exe -q -P make,unzip,automake,autoconf,zip + fi + fi if [[ ! -s C:/tools/bin/ccache.exe ]] ; then mkdir -p C:/tools/bin/ pushd C:/tools/bin/ || exit From 34f633eb143b2ebc3360a287f310e8f0381d13ce Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 00:27:38 +0100 Subject: [PATCH 12/19] .travis.yml: use cygwin bins in PATH also with /cygdrive/ prefix just in case --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7a4a64d6e8..8ab834b40a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1065,7 +1065,7 @@ before_install: rm -f ccache-3.7.12-windows-64.zip popd fi - export PATH=/C/tools/bin:$PATH:/C/tools/cygwin/bin + export PATH=/C/tools/bin:$PATH:/C/tools/cygwin/bin:/cygdrive/c/tools/cygwin/bin CI_TRACE=true CI_TIME=false export CI_TRACE CI_TIME From 9ba5804b229b59a5ca251c3b2357795d95343fa7 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 00:28:10 +0100 Subject: [PATCH 13/19] .travis.yml: use choco bins in PATH also with /cygdrive/ prefix just in case --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8ab834b40a..202c0a6c2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1065,7 +1065,7 @@ before_install: rm -f ccache-3.7.12-windows-64.zip popd fi - export PATH=/C/tools/bin:$PATH:/C/tools/cygwin/bin:/cygdrive/c/tools/cygwin/bin + export PATH=/C/tools/bin:/cygdrive/c/tools/bin:$PATH:/C/tools/cygwin/bin:/cygdrive/c/tools/cygwin/bin CI_TRACE=true CI_TIME=false export CI_TRACE CI_TIME From c8691b605188fb111d43ab8eafebf97981c383af Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 00:28:35 +0100 Subject: [PATCH 14/19] .travis.yml: amend cygwin bin files ACLs to let them execute Thanks https://stackoverflow.com/a/4493653/4715872 for the hint --- .travis.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 202c0a6c2a..7a05baad10 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1049,6 +1049,9 @@ before_install: export XML_CATALOG_FILES fi fi + +# Please forgive the funny syntax below to dance around +# both YAML escaping and windows-acceptable shell syntax - |- if [[ $TRAVIS_OS_NAME == "windows" ]] ; then if [[ ! -s C:/tools/cygwin/bin/autoreconf.exe ]] ; then @@ -1068,7 +1071,14 @@ before_install: export PATH=/C/tools/bin:/cygdrive/c/tools/bin:$PATH:/C/tools/cygwin/bin:/cygdrive/c/tools/cygwin/bin CI_TRACE=true CI_TIME=false - export CI_TRACE CI_TIME + ( echo "user::rwx" + echo "group::r--" + echo "mask:rwx" + echo "other:r--" + ) > /tmp/faclx + if ! setfacl -f /tmp/faclx /cygdrive/c/tools/cygwin/*bin/* ; then + setfacl -f /tmp/faclx /C/tools/cygwin/*bin/* + fi fi - if [ -n "${NUT_MATRIX_TAG}" ] ; then export CFLAGS CXXFLAGS ; [ -z "$CC" ] || export CC ; [ -z "$CXX" ] || export CXX ; fi From 681dfcfc7a4b758549662879adb2dfe07183abfe Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:06:49 +0100 Subject: [PATCH 15/19] ci_build.sh: parameterize $CONFIGURE_SCRIPT as it may be called differently on some platforms --- ci_build.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ci_build.sh b/ci_build.sh index c95918f1d6..eb3c7cacec 100755 --- a/ci_build.sh +++ b/ci_build.sh @@ -25,9 +25,15 @@ case "$CI_TRACE" in esac configure_nut() { - echo "=== CONFIGURING NUT: ./configure ${CONFIG_OPTS[*]}" + local CONFIGURE_SCRIPT=./configure + if [[ "$TRAVIS_OS_NAME" == "windows" ]] ; then + find . -ls + CONFIGURE_SCRIPT=./configure.bat + fi + + echo "=== CONFIGURING NUT: $CONFIGURE_SCRIPT ${CONFIG_OPTS[*]}" echo "=== CC='$CC' CXX='$CXX' CPP='$CPP'" - $CI_TIME ./configure "${CONFIG_OPTS[@]}" \ + $CI_TIME $CONFIGURE_SCRIPT "${CONFIG_OPTS[@]}" \ || { RES=$? echo "FAILED ($RES) to configure nut, will dump config.log in a second to help troubleshoot CI" >&2 echo " (or press Ctrl+C to abort now if running interactively)" >&2 From 3a5e99067df86811056075783fed938e5ac88ef8 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:06:59 +0100 Subject: [PATCH 16/19] ci_build.sh: fix whitespace --- ci_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci_build.sh b/ci_build.sh index eb3c7cacec..6a8f966136 100755 --- a/ci_build.sh +++ b/ci_build.sh @@ -52,7 +52,7 @@ build_to_only_catch_errors() { echo "`date`: Starting a 'make check' for quick sanity test of the products built with the current compiler and standards" $CI_TIME make VERBOSE=0 check \ - && echo "`date`: SUCCESS" \ + && echo "`date`: SUCCESS" \ || return $? return 0 From 225e4720868e39af2fb12c6f89c7bf17817ae9b1 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:22:17 +0100 Subject: [PATCH 17/19] autogen.sh: do not hide the progress of autoreconf --- autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autogen.sh b/autogen.sh index e152fa453a..a401914f0d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -41,4 +41,4 @@ fi # now we can safely call autoreconf echo "Calling autoreconf..." -autoreconf -i +autoreconf -iv From 2fd807adb1e6ccf9d27ecab60f1801006ea40cf7 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 01:29:36 +0100 Subject: [PATCH 18/19] .travis.yml: curiously, gcc-7 in Travis does not alias -std=gnu++99 to canonic gnu++98 --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7a05baad10..5871227f6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -251,7 +251,7 @@ _matrix_linux_gnustd_nowarn: packages: - *deps_driverlibs - - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc-7 CXX=g++-7 + - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7 os: linux sudo: false services: @@ -451,7 +451,7 @@ _matrix_linux_gnustd_warn_viable: packages: - *deps_driverlibs - - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc-7 CXX=g++-7 + - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++98" CC=gcc-7 CXX=g++-7 os: linux sudo: false services: @@ -982,7 +982,7 @@ jobs: # Note: "env" lines below must exactly describe a matrix option defined above allow_failures: #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" -#OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=gcc-7 CXX=g++-7 +#OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7 #OK# - env: NUT_MATRIX_TAG="gnu11-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu11" CXXFLAGS="-std=gnu++11" CC=gcc-7 CXX=g++-7 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9 #OK# - env: NUT_MATRIX_TAG="gnu99-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang-5.0 CXX=clang++-5.0 @@ -996,7 +996,7 @@ jobs: #OK# - env: NUT_MATRIX_TAG="cDefault-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic" CXXFLAGS="-Wall -Wextra -Werror" #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" - env: NUT_MATRIX_TAG="c99-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=c99" CXXFLAGS="-Wall -Wextra -Werror -std=c++99" -#OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++99" CC=gcc-7 CXX=g++-7 +#OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=gnu99" CXXFLAGS="-Wall -Wextra -Werror -std=gnu++98" CC=gcc-7 CXX=g++-7 - env: NUT_MATRIX_TAG="c99-clang-5.0-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c99" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++99" CC=clang-5.0 CXX=clang++-5.0 - env: NUT_MATRIX_TAG="c11-clang-5.0-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -pedantic -std=c11" CXXFLAGS="-Wall -Wextra -Werror -Weverything -Wno-unused-macros -Wno-reserved-id-macro -Wno-padded -std=c++11" CC=clang-5.0 CXX=clang++-5.0 - env: NUT_MATRIX_TAG="c11-gcc-default-warn" BUILD_TYPE=default-all-errors CFLAGS="-Wall -Wextra -Werror -pedantic -std=c11" CXXFLAGS="-Wall -Wextra -Werror -std=c++11" From 93776dba4fa9d46a83a401b941b6dba5a3ee6cd2 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Sun, 22 Nov 2020 02:23:45 +0100 Subject: [PATCH 19/19] Introduce m4/ax_c_pragmas.m4 --- configure.ac | 1 + m4/ax_c_pragmas.m4 | 104 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 m4/ax_c_pragmas.m4 diff --git a/configure.ac b/configure.ac index b3d6845e62..5279a19bb2 100644 --- a/configure.ac +++ b/configure.ac @@ -138,6 +138,7 @@ AC_C_BIGENDIAN AC_C_INLINE AC_C_FLEXIBLE_ARRAY_MEMBER AC_C_VARARRAYS +AX_C_PRAGMAS AX_C___ATTRIBUTE__ AC_CHECK_FUNCS(flock lockf fcvt fcvtl pow10 round abs_val abs) AC_CHECK_FUNCS(fabs, [], [], [#include ]) diff --git a/m4/ax_c_pragmas.m4 b/m4/ax_c_pragmas.m4 new file mode 100644 index 0000000000..8ded0de5fb --- /dev/null +++ b/m4/ax_c_pragmas.m4 @@ -0,0 +1,104 @@ +dnl Check for current compiler support of specific pragmas we use, +dnl e.g. diagnostics management to keep warnings quiet sometimes + +AC_DEFUN([AX_C_PRAGMAS], [ + CFLAGS_SAVED="${CFLAGS}" + AS_IF([test "${GCC}" = "yes"], + [dnl # This is expected to fail builds with unknown pragma names on GCC or CLANG at least + CFLAGS="${CFLAGS_SAVED} -Werror=pragmas -Werror=unknown-warning-option"], + [CFLAGS="${CFLAGS_SAVED} -Wall -Wextra -Werror"]) + + AC_CACHE_CHECK([for pragma GCC diagnostic push and pop], + [ax_cv__pragma__gcc__diags_push_pop], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#pragma GCC diagnostic push +#pragma GCC diagnostic pop + ]], [])], + [ax_cv__pragma__gcc__diags_push_pop=yes], + [ax_cv__pragma__gcc__diags_push_pop=no] + )] + ) + AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop" = "yes"],[ + AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_PUSH_POP], 1, [define if your compiler has #pragma GCC diagnostic push and pop]) + ]) + + AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-nonliteral"], + [ax_cv__pragma__gcc__diags_ignored_format_nonliteral], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-nonliteral"]], [])], + [ax_cv__pragma__gcc__diags_ignored_format_nonliteral=yes], + [ax_cv__pragma__gcc__diags_ignored_format_nonliteral=no] + )] + ) + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral" = "yes"],[ + AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-nonliteral"]) + ]) + + AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-security"], + [ax_cv__pragma__gcc__diags_ignored_format_security], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-security"]], [])], + [ax_cv__pragma__gcc__diags_ignored_format_security=yes], + [ax_cv__pragma__gcc__diags_ignored_format_security=no] + )] + ) + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security" = "yes"],[ + AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_SECURITY], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-security"]) + ]) + + AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code-break"], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code_break], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wunreachable-code-break"]], [])], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code_break=yes], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code_break=no] + )] + ) + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break" = "yes"],[ + AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_BREAK], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code-break"]) + ]) + + AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code"], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wunreachable-code"]], [])], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code=yes], + [ax_cv__pragma__gcc__diags_ignored_unreachable_code=no] + )] + ) + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code" = "yes"],[ + AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code"]) + ]) + + dnl # Meta-macros for simpler use-cases where we pick + dnl # equivalent-effect macros for different compiler versions + AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop" = "yes"],[ + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral" = "yes" ],[ + AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wformat-nonliteral" or "-Wformat-security" and for push-pop support]) + ]) + AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break" = "yes" ],[ + AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wunreachable-code(-break)" and for push-pop support]) + ]) + ]) + + AC_CACHE_CHECK([for pragma BOGUSforTest], + [ax_cv__pragma__bogus], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma BOGUSforTest]], [])], + [ax_cv__pragma__bogus=yes], + [ax_cv__pragma__bogus=no] + )] + ) + + AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-WBOGUSforTest"], + [ax_cv__pragma__bogus_diag], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-WBOGUSforTest"]], [])], + [ax_cv__pragma__bogus_diag=yes], + [ax_cv__pragma__bogus_diag=no] + )] + ) + + CFLAGS="${CFLAGS_SAVED}" +])