From 3683e512c89d74331f122368e16af999acc2fdba Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 20:01:19 +0200 Subject: [PATCH 1/6] runtests.sh: avoid redundant `pkg-config` checks and simplified the check --- test/cfg/runtests.sh | 99 ++++++++++---------------------------------- 1 file changed, 21 insertions(+), 78 deletions(-) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index 6897e9329d2..4032cb43cde 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -2,6 +2,16 @@ set -e # abort on error #set -x # be verbose +echo "Checking for pkg-config..." +if pkg-config --version; then + HAS_PKG_CONFIG=1 + echo "pkg-config found." +else + HAS_PKG_CONFIG=0 + echo "pkg-config is not available, skipping all syntax checks." +fi + + if [[ $(pwd) == */test/cfg ]] ; then # we are in test/cfg CPPCHECK="../../cppcheck" DIR="" @@ -30,13 +40,7 @@ ${CC} ${CC_OPT} -D_GNU_SOURCE ${DIR}gnu.c ${CPPCHECK} ${CPPCHECK_OPT} --library=posix,gnu ${DIR}gnu.c # qt.cpp -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve Qt configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; the set +e QTCONFIG=$(pkg-config --cflags Qt5Core) QTCONFIG_RETURNCODE=$? @@ -96,13 +100,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=wxwidgets,windows -f ${DIR}wxwidgets.cpp # gtk.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve GTK+ configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e GTKCONFIG=$(pkg-config --cflags gtk+-3.0) GTKCONFIG_RETURNCODE=$? @@ -142,13 +140,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=boost ${DIR}boost.cpp # sqlite3.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve SQLite3 configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e SQLITE3CONFIG=$(pkg-config --cflags sqlite3) SQLITE3CONFIG_RETURNCODE=$? @@ -173,13 +165,7 @@ ${CC} ${CC_OPT} -fopenmp ${DIR}openmp.c ${CPPCHECK} ${CPPCHECK_OPT} --library=openmp ${DIR}openmp.c # python.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve Python 3 configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e PYTHON3CONFIG=$(pkg-config --cflags python3) PYTHON3CONFIG_RETURNCODE=$? @@ -200,13 +186,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=python ${DIR}python.c # lua.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve Lua configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e LUACONFIG=$(pkg-config --cflags lua-5.3) LUACONFIG_RETURNCODE=$? @@ -227,13 +207,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=lua ${DIR}lua.c # libcurl.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve libcurl configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e LIBCURLCONFIG=$(pkg-config --cflags libcurl) LIBCURLCONFIG_RETURNCODE=$? @@ -254,13 +228,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=libcurl ${DIR}libcurl.c # cairo.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve cairo configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e CAIROCONFIG=$(pkg-config --cflags cairo) CAIROCONFIG_RETURNCODE=$? @@ -312,13 +280,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=kde ${DIR}kde.cpp # libsigc++.cpp -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve libsigc++ configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e LIBSIGCPPCONFIG=$(pkg-config --cflags sigc++-2.0) LIBSIGCPPCONFIG_RETURNCODE=$? @@ -339,13 +301,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=libsigc++ ${DIR}libsigc++.cpp # openssl.c -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve OpenSSL configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e OPENSSLCONFIG=$(pkg-config --cflags libssl) OPENSSLCONFIG_RETURNCODE=$? @@ -366,13 +322,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=openssl ${DIR}openssl.c # opencv2.cpp -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve OpenCV configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e OPENCVCONFIG=$(pkg-config --cflags opencv) OPENCVCONFIG_RETURNCODE=$? @@ -393,14 +343,7 @@ fi ${CPPCHECK} ${CPPCHECK_OPT} --library=opencv2 ${DIR}opencv2.cpp # cppunit.cpp -set +e -pkg-config --version -PKGCONFIG_RETURNCODE=$? -set -e - -if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then - echo "pkg-config needed to retrieve cppunit configuration is not available, skipping syntax check." -else +if [ $HAS_PKG_CONFIG -eq 1 ]; then if ! pkg-config cppunit; then echo "cppunit not found, skipping syntax check for cppunit" else From 5cb8a7bc5e5e00014a0b111023f232de0b9613ed Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 19:24:46 +0200 Subject: [PATCH 2/6] runtests.sh: write a message when something is completely missing --- test/cfg/runtests.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index 4032cb43cde..e7d66063a35 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -58,6 +58,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; the echo "Qt found and working, checking syntax with ${CXX} now." ${CXX} ${CXX_OPT} ${QTCONFIG} ${DIR}qt.cpp fi + else + echo "Qt not present, skipping syntax check with ${CXX}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=qt ${DIR}qt.cpp @@ -122,6 +124,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "GTK+ found and working, checking syntax with ${CXX} now." ${CC} ${CC_OPT} ${GTKCONFIG} ${DIR}gtk.c fi + else + echo "GTK+ not present, skipping syntax check with ${CXX}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=gtk -f ${DIR}gtk.c @@ -156,6 +160,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "SQLite3 found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${SQLITE3CONFIG} ${DIR}sqlite3.c fi + else + echo "SQLite3 not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=sqlite3 ${DIR}sqlite3.c @@ -181,6 +187,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "Python 3 found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${PYTHON3CONFIG} ${DIR}python.c fi + else + echo "Python 3 not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=python ${DIR}python.c @@ -202,6 +210,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "Lua found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${LUACONFIG} ${DIR}lua.c fi + else + echo "Lua not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=lua ${DIR}lua.c @@ -223,6 +233,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "libcurl found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${LIBCURLCONFIG} ${DIR}libcurl.c fi + else + echo "libcurl not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=libcurl ${DIR}libcurl.c @@ -244,6 +256,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "cairo found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${CAIROCONFIG} ${DIR}cairo.c fi + else + echo "cairo not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=cairo ${DIR}cairo.c @@ -296,6 +310,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "libsigc++ found and working, checking syntax with ${CXX} now." ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} ${DIR}libsigc++.cpp fi + else + echo "libsigc++ not present, skipping syntax check with ${CXX}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=libsigc++ ${DIR}libsigc++.cpp @@ -317,6 +333,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "OpenSSL found and working, checking syntax with ${CC} now." ${CC} ${CC_OPT} ${OPENSSLCONFIG} ${DIR}openssl.c fi + else + echo "OpenSSL not present, skipping syntax check with ${CC}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=openssl ${DIR}openssl.c @@ -338,6 +356,8 @@ if [ $HAS_PKG_CONFIG -eq 1 ]; then echo "OpenCV found and working, checking syntax with ${CXX} now." ${CXX} ${CXX_OPT} ${OPENCVCONFIG} ${DIR}opencv2.cpp fi + else + echo "OpenCV not present, skipping syntax check with ${CXX}." fi fi ${CPPCHECK} ${CPPCHECK_OPT} --library=opencv2 ${DIR}opencv2.cpp From cd3c893abf8926e91c725ca86cb077a4afaaaba0 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 19:55:02 +0200 Subject: [PATCH 3/6] runtests.sh: derive paths from script location --- test/CMakeLists.txt | 3 +-- test/cfg/runtests.sh | 13 +++---------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 08244aa3c47..e7c18513b8f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -43,8 +43,7 @@ if (BUILD_TESTS) # TODO: get rid of the copy add_custom_target(checkcfg ${CMAKE_COMMAND} -E copy $ ${CMAKE_SOURCE_DIR} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cfg/runtests.sh - DEPENDS cppcheck validateCFG - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cfg) + DEPENDS cppcheck validateCFG) endif() if (REGISTER_TESTS) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index e7d66063a35..a49cee0d003 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -11,16 +11,9 @@ else echo "pkg-config is not available, skipping all syntax checks." fi - -if [[ $(pwd) == */test/cfg ]] ; then # we are in test/cfg - CPPCHECK="../../cppcheck" - DIR="" - CFG="../../cfg/" -else # assume we are in repo root - CPPCHECK="./cppcheck" - DIR=test/cfg/ - CFG="cfg/" -fi +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/ +CPPCHECK="$DIR"../../cppcheck +CFG="$DIR"../../cfg # Cppcheck options CPPCHECK_OPT='--check-library --enable=information --enable=style --error-exitcode=-1 --suppress=missingIncludeSystem --inline-suppr --template="{file}:{line}:{severity}:{id}:{message}"' From 366ab7656f55aae93c6f5066a7ac6835105cd4a2 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 19:58:36 +0200 Subject: [PATCH 4/6] runtests.sh: improved readability by using individual functions for each file --- test/cfg/runtests.sh | 585 ++++++++++++++++++++++++++----------------- 1 file changed, 355 insertions(+), 230 deletions(-) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index a49cee0d003..9b5fee1909e 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -25,346 +25,471 @@ CC=gcc CC_OPT='-Wno-format -Wno-nonnull -Wno-implicit-function-declaration -Wno-deprecated-declarations -Wno-format-security -Wno-nonnull -fsyntax-only' # posix.c -${CC} ${CC_OPT} ${DIR}posix.c -${CPPCHECK} ${CPPCHECK_OPT} --library=posix ${DIR}posix.c +function posix_fn { + ${CC} ${CC_OPT} ${DIR}posix.c +} # gnu.c -${CC} ${CC_OPT} -D_GNU_SOURCE ${DIR}gnu.c -${CPPCHECK} ${CPPCHECK_OPT} --library=posix,gnu ${DIR}gnu.c +function gnu_fn { + ${CC} ${CC_OPT} -D_GNU_SOURCE ${DIR}gnu.c +} # qt.cpp -if [ $HAS_PKG_CONFIG -eq 1 ]; the - set +e - QTCONFIG=$(pkg-config --cflags Qt5Core) - QTCONFIG_RETURNCODE=$? - set -e - if [ $QTCONFIG_RETURNCODE -eq 0 ]; then - QTBUILDCONFIG=$(pkg-config --variable=qt_config Qt5Core) - [[ $QTBUILDCONFIG =~ (^|[[:space:]])reduce_relocations($|[[:space:]]) ]] && QTCONFIG="${QTCONFIG} -fPIC" +function qt_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CXX} ${CXX_OPT} ${QTCONFIG} -x c++ - - QTCHECK_RETURNCODE=$? + QTCONFIG=$(pkg-config --cflags Qt5Core) + QTCONFIG_RETURNCODE=$? set -e - if [ $QTCHECK_RETURNCODE -ne 0 ]; then - echo "Qt not completely present or not working, skipping syntax check with ${CXX}." + if [ $QTCONFIG_RETURNCODE -eq 0 ]; then + QTBUILDCONFIG=$(pkg-config --variable=qt_config Qt5Core) + [[ $QTBUILDCONFIG =~ (^|[[:space:]])reduce_relocations($|[[:space:]]) ]] && QTCONFIG="${QTCONFIG} -fPIC" + set +e + echo -e "#include " | ${CXX} ${CXX_OPT} ${QTCONFIG} -x c++ - + QTCHECK_RETURNCODE=$? + set -e + if [ $QTCHECK_RETURNCODE -ne 0 ]; then + echo "Qt not completely present or not working, skipping syntax check with ${CXX}." + else + echo "Qt found and working, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} ${QTCONFIG} ${DIR}qt.cpp + fi else - echo "Qt found and working, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} ${QTCONFIG} ${DIR}qt.cpp + echo "Qt not present, skipping syntax check with ${CXX}." fi - else - echo "Qt not present, skipping syntax check with ${CXX}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=qt ${DIR}qt.cpp +} # bsd.c -${CPPCHECK} ${CPPCHECK_OPT} --library=bsd ${DIR}bsd.c +function bsd_fn { + true +} # std.c -${CC} ${CC_OPT} ${DIR}std.c -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive ${DIR}std.c -${CXX} ${CXX_OPT} ${DIR}std.cpp -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive ${DIR}std.cpp +function std_c_fn { + ${CC} ${CC_OPT} ${DIR}std.c +} + +# std.cpp +function std_cpp_fn { + ${CXX} ${CXX_OPT} ${DIR}std.cpp +} # windows.cpp -# Syntax check via g++ does not work because it can not find a valid windows.h -#${CXX} ${CXX_OPT} ${DIR}windows.cpp -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win32A --library=windows ${DIR}windows.cpp -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win32W --library=windows ${DIR}windows.cpp -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win64 --library=windows ${DIR}windows.cpp +function windows_fn { + # TODO: Syntax check via g++ does not work because it can not find a valid windows.h + #${CXX} ${CXX_OPT} ${DIR}windows.cpp + true +} # wxwidgets.cpp -set +e -WXCONFIG=$(wx-config --cxxflags) -WXCONFIG_RETURNCODE=$? -set -e -if [ $WXCONFIG_RETURNCODE -ne 0 ]; then - echo "wx-config does not work, skipping syntax check for wxWidgets tests." -else +function wxwidgets_fn { set +e - echo -e "#include \n#include \n#include \n#include \n#if wxVERSION_NUMBER<2950\n#error \"Old version\"\n#endif" | ${CXX} ${CXX_OPT} ${WXCONFIG} -x c++ - - WXCHECK_RETURNCODE=$? + WXCONFIG=$(wx-config --cxxflags) + WXCONFIG_RETURNCODE=$? set -e - if [ $WXCHECK_RETURNCODE -ne 0 ]; then - echo "wxWidgets not completely present (with GUI classes) or not working, skipping syntax check with ${CXX}." + if [ $WXCONFIG_RETURNCODE -ne 0 ]; then + echo "wx-config does not work, skipping syntax check for wxWidgets tests." else - echo "wxWidgets found, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} ${WXCONFIG} -Wno-deprecated-declarations ${DIR}wxwidgets.cpp + set +e + echo -e "#include \n#include \n#include \n#include \n#if wxVERSION_NUMBER<2950\n#error \"Old version\"\n#endif" | ${CXX} ${CXX_OPT} ${WXCONFIG} -x c++ - + WXCHECK_RETURNCODE=$? + set -e + if [ $WXCHECK_RETURNCODE -ne 0 ]; then + echo "wxWidgets not completely present (with GUI classes) or not working, skipping syntax check with ${CXX}." + else + echo "wxWidgets found, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} ${WXCONFIG} -Wno-deprecated-declarations ${DIR}wxwidgets.cpp + fi fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=wxwidgets,windows -f ${DIR}wxwidgets.cpp +} # gtk.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - GTKCONFIG=$(pkg-config --cflags gtk+-3.0) - GTKCONFIG_RETURNCODE=$? - set -e - if [ $GTKCONFIG_RETURNCODE -ne 0 ]; then +function gtk_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - GTKCONFIG=$(pkg-config --cflags gtk+-2.0) + GTKCONFIG=$(pkg-config --cflags gtk+-3.0) GTKCONFIG_RETURNCODE=$? set -e - fi - if [ $GTKCONFIG_RETURNCODE -eq 0 ]; then - set +e - echo -e "#include " | ${CC} ${CC_OPT} ${GTKCONFIG} -x c - - GTKCHECK_RETURNCODE=$? - set -e - if [ $GTKCHECK_RETURNCODE -ne 0 ]; then - echo "GTK+ not completely present or not working, skipping syntax check with ${CXX}." + if [ $GTKCONFIG_RETURNCODE -ne 0 ]; then + set +e + GTKCONFIG=$(pkg-config --cflags gtk+-2.0) + GTKCONFIG_RETURNCODE=$? + set -e + fi + if [ $GTKCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${GTKCONFIG} -x c - + GTKCHECK_RETURNCODE=$? + set -e + if [ $GTKCHECK_RETURNCODE -ne 0 ]; then + echo "GTK+ not completely present or not working, skipping syntax check with ${CXX}." + else + echo "GTK+ found and working, checking syntax with ${CXX} now." + ${CC} ${CC_OPT} ${GTKCONFIG} ${DIR}gtk.c + fi else - echo "GTK+ found and working, checking syntax with ${CXX} now." - ${CC} ${CC_OPT} ${GTKCONFIG} ${DIR}gtk.c + echo "GTK+ not present, skipping syntax check with ${CXX}." fi - else - echo "GTK+ not present, skipping syntax check with ${CXX}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=gtk -f ${DIR}gtk.c +} # boost.cpp -set +e -echo -e "#include " | ${CXX} ${CXX_OPT} -x c++ - -BOOSTCHECK_RETURNCODE=$? -set -e -if [ ${BOOSTCHECK_RETURNCODE} -ne 0 ]; then - echo "Boost not completely present or not working, skipping syntax check with ${CXX}." -else - echo "Boost found and working, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} ${DIR}boost.cpp -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=boost ${DIR}boost.cpp - -# sqlite3.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then +function boost_fn { set +e - SQLITE3CONFIG=$(pkg-config --cflags sqlite3) - SQLITE3CONFIG_RETURNCODE=$? + echo -e "#include " | ${CXX} ${CXX_OPT} -x c++ - + BOOSTCHECK_RETURNCODE=$? set -e - if [ $SQLITE3CONFIG_RETURNCODE -eq 0 ]; then + if [ ${BOOSTCHECK_RETURNCODE} -ne 0 ]; then + echo "Boost not completely present or not working, skipping syntax check with ${CXX}." + else + echo "Boost found and working, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} ${DIR}boost.cpp + fi +} + +# sqlite3.c +function sqlite3_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${SQLITE3CONFIG} -x c - - SQLITE3CHECK_RETURNCODE=$? + SQLITE3CONFIG=$(pkg-config --cflags sqlite3) + SQLITE3CONFIG_RETURNCODE=$? set -e - if [ $SQLITE3CHECK_RETURNCODE -ne 0 ]; then - echo "SQLite3 not completely present or not working, skipping syntax check with ${CC}." + if [ $SQLITE3CONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${SQLITE3CONFIG} -x c - + SQLITE3CHECK_RETURNCODE=$? + set -e + if [ $SQLITE3CHECK_RETURNCODE -ne 0 ]; then + echo "SQLite3 not completely present or not working, skipping syntax check with ${CC}." + else + echo "SQLite3 found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${SQLITE3CONFIG} ${DIR}sqlite3.c + fi else - echo "SQLite3 found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${SQLITE3CONFIG} ${DIR}sqlite3.c + echo "SQLite3 not present, skipping syntax check with ${CC}." fi - else - echo "SQLite3 not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=sqlite3 ${DIR}sqlite3.c +} # openmp.c -${CC} ${CC_OPT} -fopenmp ${DIR}openmp.c -${CPPCHECK} ${CPPCHECK_OPT} --library=openmp ${DIR}openmp.c +function openmp_fn { + ${CC} ${CC_OPT} -fopenmp ${DIR}openmp.c +} # python.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - PYTHON3CONFIG=$(pkg-config --cflags python3) - PYTHON3CONFIG_RETURNCODE=$? - set -e - if [ $PYTHON3CONFIG_RETURNCODE -eq 0 ]; then +function python_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${PYTHON3CONFIG} -x c - + PYTHON3CONFIG=$(pkg-config --cflags python3) PYTHON3CONFIG_RETURNCODE=$? set -e - if [ $PYTHON3CONFIG_RETURNCODE -ne 0 ]; then - echo "Python 3 not completely present or not working, skipping syntax check with ${CC}." + if [ $PYTHON3CONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${PYTHON3CONFIG} -x c - + PYTHON3CONFIG_RETURNCODE=$? + set -e + if [ $PYTHON3CONFIG_RETURNCODE -ne 0 ]; then + echo "Python 3 not completely present or not working, skipping syntax check with ${CC}." + else + echo "Python 3 found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${PYTHON3CONFIG} ${DIR}python.c + fi else - echo "Python 3 found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${PYTHON3CONFIG} ${DIR}python.c + echo "Python 3 not present, skipping syntax check with ${CC}." fi - else - echo "Python 3 not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=python ${DIR}python.c +} # lua.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LUACONFIG=$(pkg-config --cflags lua-5.3) - LUACONFIG_RETURNCODE=$? - set -e - if [ $LUACONFIG_RETURNCODE -eq 0 ]; then +function lua_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${LUACONFIG} -x c - + LUACONFIG=$(pkg-config --cflags lua-5.3) LUACONFIG_RETURNCODE=$? set -e - if [ $LUACONFIG_RETURNCODE -ne 0 ]; then - echo "Lua not completely present or not working, skipping syntax check with ${CC}." + if [ $LUACONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${LUACONFIG} -x c - + LUACONFIG_RETURNCODE=$? + set -e + if [ $LUACONFIG_RETURNCODE -ne 0 ]; then + echo "Lua not completely present or not working, skipping syntax check with ${CC}." + else + echo "Lua found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${LUACONFIG} ${DIR}lua.c + fi else - echo "Lua found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${LUACONFIG} ${DIR}lua.c + echo "Lua not present, skipping syntax check with ${CC}." fi - else - echo "Lua not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=lua ${DIR}lua.c +} # libcurl.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LIBCURLCONFIG=$(pkg-config --cflags libcurl) - LIBCURLCONFIG_RETURNCODE=$? - set -e - if [ $LIBCURLCONFIG_RETURNCODE -eq 0 ]; then +function libcurl_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${LIBCURLCONFIG} -x c - + LIBCURLCONFIG=$(pkg-config --cflags libcurl) LIBCURLCONFIG_RETURNCODE=$? set -e - if [ $LIBCURLCONFIG_RETURNCODE -ne 0 ]; then - echo "libcurl not completely present or not working, skipping syntax check with ${CC}." + if [ $LIBCURLCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${LIBCURLCONFIG} -x c - + LIBCURLCONFIG_RETURNCODE=$? + set -e + if [ $LIBCURLCONFIG_RETURNCODE -ne 0 ]; then + echo "libcurl not completely present or not working, skipping syntax check with ${CC}." + else + echo "libcurl found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${LIBCURLCONFIG} ${DIR}libcurl.c + fi else - echo "libcurl found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${LIBCURLCONFIG} ${DIR}libcurl.c + echo "libcurl not present, skipping syntax check with ${CC}." fi - else - echo "libcurl not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=libcurl ${DIR}libcurl.c +} # cairo.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - CAIROCONFIG=$(pkg-config --cflags cairo) - CAIROCONFIG_RETURNCODE=$? - set -e - if [ $CAIROCONFIG_RETURNCODE -eq 0 ]; then +function cairo_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${CAIROCONFIG} -x c - + CAIROCONFIG=$(pkg-config --cflags cairo) CAIROCONFIG_RETURNCODE=$? set -e - if [ $CAIROCONFIG_RETURNCODE -ne 0 ]; then - echo "cairo not completely present or not working, skipping syntax check with ${CC}." + if [ $CAIROCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${CAIROCONFIG} -x c - + CAIROCONFIG_RETURNCODE=$? + set -e + if [ $CAIROCONFIG_RETURNCODE -ne 0 ]; then + echo "cairo not completely present or not working, skipping syntax check with ${CC}." + else + echo "cairo found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${CAIROCONFIG} ${DIR}cairo.c + fi else - echo "cairo found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${CAIROCONFIG} ${DIR}cairo.c + echo "cairo not present, skipping syntax check with ${CC}." fi - else - echo "cairo not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=cairo ${DIR}cairo.c +} -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=googletest ${DIR}googletest.cpp +# googletest.cpp +function googletest_fn { + true +} # kde.cpp -set +e -KDECONFIG=$(kde4-config --path include) -KDECONFIG_RETURNCODE=$? -set -e -if [ $KDECONFIG_RETURNCODE -ne 0 ]; then - echo "kde4-config does not work, skipping syntax check." -else +function kde_fn { set +e - KDEQTCONFIG=$(pkg-config --cflags QtCore) - KDEQTCONFIG_RETURNCODE=$? + KDECONFIG=$(kde4-config --path include) + KDECONFIG_RETURNCODE=$? set -e - if [ $KDEQTCONFIG_RETURNCODE -ne 0 ]; then - echo "Suitable Qt not present, Qt is necessary for KDE. Skipping syntax check." + if [ $KDECONFIG_RETURNCODE -ne 0 ]; then + echo "kde4-config does not work, skipping syntax check." else set +e - echo -e "#include \n" | ${CXX} ${CXX_OPT} -I${KDECONFIG} ${KDEQTCONFIG} -x c++ - - KDECHECK_RETURNCODE=$? + KDEQTCONFIG=$(pkg-config --cflags QtCore) + KDEQTCONFIG_RETURNCODE=$? set -e - if [ $KDECHECK_RETURNCODE -ne 0 ]; then - echo "KDE headers not completely present or not working, skipping syntax check with ${CXX}." + if [ $KDEQTCONFIG_RETURNCODE -ne 0 ]; then + echo "Suitable Qt not present, Qt is necessary for KDE. Skipping syntax check." else - echo "KDE found, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} -I${KDECONFIG} ${KDEQTCONFIG} ${DIR}kde.cpp + set +e + echo -e "#include \n" | ${CXX} ${CXX_OPT} -I${KDECONFIG} ${KDEQTCONFIG} -x c++ - + KDECHECK_RETURNCODE=$? + set -e + if [ $KDECHECK_RETURNCODE -ne 0 ]; then + echo "KDE headers not completely present or not working, skipping syntax check with ${CXX}." + else + echo "KDE found, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} -I${KDECONFIG} ${KDEQTCONFIG} ${DIR}kde.cpp + fi fi fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=kde ${DIR}kde.cpp +} # libsigc++.cpp -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LIBSIGCPPCONFIG=$(pkg-config --cflags sigc++-2.0) - LIBSIGCPPCONFIG_RETURNCODE=$? - set -e - if [ $LIBSIGCPPCONFIG_RETURNCODE -eq 0 ]; then +function libsigcpp_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include \n" | ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} -x c++ - + LIBSIGCPPCONFIG=$(pkg-config --cflags sigc++-2.0) LIBSIGCPPCONFIG_RETURNCODE=$? set -e - if [ $LIBSIGCPPCONFIG_RETURNCODE -ne 0 ]; then - echo "libsigc++ not completely present or not working, skipping syntax check with ${CXX}." + if [ $LIBSIGCPPCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include \n" | ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} -x c++ - + LIBSIGCPPCONFIG_RETURNCODE=$? + set -e + if [ $LIBSIGCPPCONFIG_RETURNCODE -ne 0 ]; then + echo "libsigc++ not completely present or not working, skipping syntax check with ${CXX}." + else + echo "libsigc++ found and working, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} ${DIR}libsigc++.cpp + fi else - echo "libsigc++ found and working, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} ${DIR}libsigc++.cpp + echo "libsigc++ not present, skipping syntax check with ${CXX}." fi - else - echo "libsigc++ not present, skipping syntax check with ${CXX}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=libsigc++ ${DIR}libsigc++.cpp +} # openssl.c -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - OPENSSLCONFIG=$(pkg-config --cflags libssl) - OPENSSLCONFIG_RETURNCODE=$? - set -e - if [ $OPENSSLCONFIG_RETURNCODE -eq 0 ]; then +function openssl_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include " | ${CC} ${CC_OPT} ${OPENSSLCONFIG} -x c - + OPENSSLCONFIG=$(pkg-config --cflags libssl) OPENSSLCONFIG_RETURNCODE=$? set -e - if [ $OPENSSLCONFIG_RETURNCODE -ne 0 ]; then - echo "OpenSSL not completely present or not working, skipping syntax check with ${CC}." + if [ $OPENSSLCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include " | ${CC} ${CC_OPT} ${OPENSSLCONFIG} -x c - + OPENSSLCONFIG_RETURNCODE=$? + set -e + if [ $OPENSSLCONFIG_RETURNCODE -ne 0 ]; then + echo "OpenSSL not completely present or not working, skipping syntax check with ${CC}." + else + echo "OpenSSL found and working, checking syntax with ${CC} now." + ${CC} ${CC_OPT} ${OPENSSLCONFIG} ${DIR}openssl.c + fi else - echo "OpenSSL found and working, checking syntax with ${CC} now." - ${CC} ${CC_OPT} ${OPENSSLCONFIG} ${DIR}openssl.c + echo "OpenSSL not present, skipping syntax check with ${CC}." fi - else - echo "OpenSSL not present, skipping syntax check with ${CC}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=openssl ${DIR}openssl.c +} # opencv2.cpp -if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - OPENCVCONFIG=$(pkg-config --cflags opencv) - OPENCVCONFIG_RETURNCODE=$? - set -e - if [ $OPENCVCONFIG_RETURNCODE -eq 0 ]; then +function opencv2_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then set +e - echo -e "#include \n" | ${CXX} ${CXX_OPT} ${OPENCVCONFIG} -x c++ - + OPENCVCONFIG=$(pkg-config --cflags opencv) OPENCVCONFIG_RETURNCODE=$? set -e - if [ $OPENCVCONFIG_RETURNCODE -ne 0 ]; then - echo "OpenCV not completely present or not working, skipping syntax check with ${CXX}." + if [ $OPENCVCONFIG_RETURNCODE -eq 0 ]; then + set +e + echo -e "#include \n" | ${CXX} ${CXX_OPT} ${OPENCVCONFIG} -x c++ - + OPENCVCONFIG_RETURNCODE=$? + set -e + if [ $OPENCVCONFIG_RETURNCODE -ne 0 ]; then + echo "OpenCV not completely present or not working, skipping syntax check with ${CXX}." + else + echo "OpenCV found and working, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} ${OPENCVCONFIG} ${DIR}opencv2.cpp + fi else - echo "OpenCV found and working, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} ${OPENCVCONFIG} ${DIR}opencv2.cpp + echo "OpenCV not present, skipping syntax check with ${CXX}." fi - else - echo "OpenCV not present, skipping syntax check with ${CXX}." fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --library=opencv2 ${DIR}opencv2.cpp +} # cppunit.cpp -if [ $HAS_PKG_CONFIG -eq 1 ]; then - if ! pkg-config cppunit; then - echo "cppunit not found, skipping syntax check for cppunit" - else - echo "cppunit found, checking syntax with ${CXX} now." - ${CXX} ${CXX_OPT} -Wno-deprecated-declarations ${DIR}cppunit.cpp +function cppunit_fn { + if [ $HAS_PKG_CONFIG -eq 1 ]; then + if ! pkg-config cppunit; then + echo "cppunit not found, skipping syntax check for cppunit" + else + echo "cppunit found, checking syntax with ${CXX} now." + ${CXX} ${CXX_OPT} -Wno-deprecated-declarations ${DIR}cppunit.cpp + fi fi -fi -${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=cppunit -f ${DIR}cppunit.cpp +} + +for f in "${DIR}"*.{c,cpp} +do + f=$(basename $f) + case $f in + boost.cpp) + boost_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=boost ${DIR}boost.cpp + ;; + bsd.c) + bsd_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=bsd ${DIR}bsd.c + ;; + cairo.c) + cairo_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=cairo ${DIR}cairo.c + ;; + cppunit.cpp) + cppunit_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=cppunit -f ${DIR}cppunit.cpp + ;; + gnu.c) + gnu_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=posix,gnu ${DIR}gnu.c + ;; + googletest.cpp) + googletest_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=googletest ${DIR}googletest.cpp + ;; + gtk.c) + gtk_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=gtk -f ${DIR}gtk.c + ;; + kde.cpp) + kde_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=kde ${DIR}kde.cpp + ;; + libcurl.c) + libcurl_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=libcurl ${DIR}libcurl.c + ;; + libsigc++.cpp) + libsigcpp_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=libsigc++ ${DIR}libsigc++.cpp + ;; + lua.c) + lua_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=lua ${DIR}lua.c + ;; + opencv2.cpp) + opencv2_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=opencv2 ${DIR}opencv2.cpp + ;; + openmp.c) + openmp_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=openmp ${DIR}openmp.c + ;; + openssl.c) + openssl_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=openssl ${DIR}openssl.c + ;; + posix.c) + posix_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=posix ${DIR}posix.c + ;; + python.c) + python_fn + ${CPPCHECK} ${CPPCHECK_OPT} --library=python ${DIR}python.c + ;; + qt.cpp) + qt_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=qt ${DIR}qt.cpp + ;; + sqlite3.c) + sqlite3_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=sqlite3 ${DIR}sqlite3.c + ;; + std.c) + std_c_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive ${DIR}std.c + ;; + std.cpp) + std_cpp_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive ${DIR}std.cpp + ;; + windows.cpp) + windows_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win32A --library=windows ${DIR}windows.cpp + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win32W --library=windows ${DIR}windows.cpp + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --platform=win64 --library=windows ${DIR}windows.cpp + ;; + wxwidgets.cpp) + wxwidgets_fn + ${CPPCHECK} ${CPPCHECK_OPT} --inconclusive --library=wxwidgets,windows -f ${DIR}wxwidgets.cpp + ;; + *) + echo "Unhandled file $f" + esac +done # Check the syntax of the defines in the configuration files set +e From abe6e27243710667d381bd6805b9af6b1d82bf13 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 20:37:46 +0200 Subject: [PATCH 5/6] runtests.sh: added helper function `get_pkg_config_cflags()` to clean up cflag lookup from `pkg-config` --- test/cfg/runtests.sh | 100 +++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 60 deletions(-) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index 9b5fee1909e..184f356c3ca 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -24,6 +24,22 @@ CXX_OPT='-fsyntax-only -std=c++0x -Wno-format -Wno-format-security -Wno-deprecat CC=gcc CC_OPT='-Wno-format -Wno-nonnull -Wno-implicit-function-declaration -Wno-deprecated-declarations -Wno-format-security -Wno-nonnull -fsyntax-only' +function get_pkg_config_cflags { + set +e + PKGCONFIG=$(pkg-config --cflags $1) + PKGCONFIG_RETURNCODE=$? + set -e + if [ $PKGCONFIG_RETURNCODE -ne 0 ]; then + PKGCONFIG= + else + # make sure the config is not empty when no flags were found - happens with e.g. libssl and sqlite3 + if [ -z "$PKGCONFIG" ]; then + PKGCONFIG=" " + fi + fi + echo "$PKGCONFIG" +} + # posix.c function posix_fn { ${CC} ${CC_OPT} ${DIR}posix.c @@ -37,11 +53,8 @@ function gnu_fn { # qt.cpp function qt_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - QTCONFIG=$(pkg-config --cflags Qt5Core) - QTCONFIG_RETURNCODE=$? - set -e - if [ $QTCONFIG_RETURNCODE -eq 0 ]; then + QTCONFIG=$(get_pkg_config_cflags Qt5Core) + if [ -n "$QTCONFIG" ]; then QTBUILDCONFIG=$(pkg-config --variable=qt_config Qt5Core) [[ $QTBUILDCONFIG =~ (^|[[:space:]])reduce_relocations($|[[:space:]]) ]] && QTCONFIG="${QTCONFIG} -fPIC" set +e @@ -107,17 +120,11 @@ function wxwidgets_fn { # gtk.c function gtk_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - GTKCONFIG=$(pkg-config --cflags gtk+-3.0) - GTKCONFIG_RETURNCODE=$? - set -e - if [ $GTKCONFIG_RETURNCODE -ne 0 ]; then - set +e - GTKCONFIG=$(pkg-config --cflags gtk+-2.0) - GTKCONFIG_RETURNCODE=$? - set -e + GTKCONFIG=$(get_pkg_config_cflags gtk+-3.0) + if [ -z "$GTKCONFIG" ]; then + GTKCONFIG=$(get_pkg_config_cflags gtk+-2.0) fi - if [ $GTKCONFIG_RETURNCODE -eq 0 ]; then + if [ -n "$GTKCONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${GTKCONFIG} -x c - GTKCHECK_RETURNCODE=$? @@ -151,11 +158,8 @@ function boost_fn { # sqlite3.c function sqlite3_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - SQLITE3CONFIG=$(pkg-config --cflags sqlite3) - SQLITE3CONFIG_RETURNCODE=$? - set -e - if [ $SQLITE3CONFIG_RETURNCODE -eq 0 ]; then + SQLITE3CONFIG=$(get_pkg_config_cflags sqlite3) + if [ -n "$SQLITE3CONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${SQLITE3CONFIG} -x c - SQLITE3CHECK_RETURNCODE=$? @@ -180,11 +184,8 @@ function openmp_fn { # python.c function python_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - PYTHON3CONFIG=$(pkg-config --cflags python3) - PYTHON3CONFIG_RETURNCODE=$? - set -e - if [ $PYTHON3CONFIG_RETURNCODE -eq 0 ]; then + PYTHON3CONFIG=$(get_pkg_config_cflags python3) + if [ -n "$PYTHON3CONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${PYTHON3CONFIG} -x c - PYTHON3CONFIG_RETURNCODE=$? @@ -204,11 +205,8 @@ function python_fn { # lua.c function lua_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LUACONFIG=$(pkg-config --cflags lua-5.3) - LUACONFIG_RETURNCODE=$? - set -e - if [ $LUACONFIG_RETURNCODE -eq 0 ]; then + LUACONFIG=$(get_pkg_config_cflags lua-5.3) + if [ -n "$LUACONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${LUACONFIG} -x c - LUACONFIG_RETURNCODE=$? @@ -228,11 +226,8 @@ function lua_fn { # libcurl.c function libcurl_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LIBCURLCONFIG=$(pkg-config --cflags libcurl) - LIBCURLCONFIG_RETURNCODE=$? - set -e - if [ $LIBCURLCONFIG_RETURNCODE -eq 0 ]; then + LIBCURLCONFIG=$(get_pkg_config_cflags libcurl) + if [ -n "$LIBCURLCONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${LIBCURLCONFIG} -x c - LIBCURLCONFIG_RETURNCODE=$? @@ -252,11 +247,8 @@ function libcurl_fn { # cairo.c function cairo_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - CAIROCONFIG=$(pkg-config --cflags cairo) - CAIROCONFIG_RETURNCODE=$? - set -e - if [ $CAIROCONFIG_RETURNCODE -eq 0 ]; then + CAIROCONFIG=$(get_pkg_config_cflags cairo) + if [ -n "$CAIROCONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${CAIROCONFIG} -x c - CAIROCONFIG_RETURNCODE=$? @@ -287,11 +279,8 @@ function kde_fn { if [ $KDECONFIG_RETURNCODE -ne 0 ]; then echo "kde4-config does not work, skipping syntax check." else - set +e - KDEQTCONFIG=$(pkg-config --cflags QtCore) - KDEQTCONFIG_RETURNCODE=$? - set -e - if [ $KDEQTCONFIG_RETURNCODE -ne 0 ]; then + KDEQTCONFIG=$(get_pkg_config_cflags QtCore) + if [ -n "$KDEQTCONFIG" ]; then echo "Suitable Qt not present, Qt is necessary for KDE. Skipping syntax check." else set +e @@ -311,11 +300,8 @@ function kde_fn { # libsigc++.cpp function libsigcpp_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - LIBSIGCPPCONFIG=$(pkg-config --cflags sigc++-2.0) - LIBSIGCPPCONFIG_RETURNCODE=$? - set -e - if [ $LIBSIGCPPCONFIG_RETURNCODE -eq 0 ]; then + LIBSIGCPPCONFIG=$(get_pkg_config_cflags sigc++-2.0) + if [ -n "$LIBSIGCPPCONFIG" ]; then set +e echo -e "#include \n" | ${CXX} ${CXX_OPT} ${LIBSIGCPPCONFIG} -x c++ - LIBSIGCPPCONFIG_RETURNCODE=$? @@ -335,11 +321,8 @@ function libsigcpp_fn { # openssl.c function openssl_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - OPENSSLCONFIG=$(pkg-config --cflags libssl) - OPENSSLCONFIG_RETURNCODE=$? - set -e - if [ $OPENSSLCONFIG_RETURNCODE -eq 0 ]; then + OPENSSLCONFIG=$(get_pkg_config_cflags libssl) + if [ -n "$OPENSSLCONFIG" ]; then set +e echo -e "#include " | ${CC} ${CC_OPT} ${OPENSSLCONFIG} -x c - OPENSSLCONFIG_RETURNCODE=$? @@ -359,11 +342,8 @@ function openssl_fn { # opencv2.cpp function opencv2_fn { if [ $HAS_PKG_CONFIG -eq 1 ]; then - set +e - OPENCVCONFIG=$(pkg-config --cflags opencv) - OPENCVCONFIG_RETURNCODE=$? - set -e - if [ $OPENCVCONFIG_RETURNCODE -eq 0 ]; then + OPENCVCONFIG=$(get_pkg_config_cflags opencv) + if [ -n "$OPENCVCONFIG" ]; then set +e echo -e "#include \n" | ${CXX} ${CXX_OPT} ${OPENCVCONFIG} -x c++ - OPENCVCONFIG_RETURNCODE=$? From 38432a11f00b47a2ca72e682f864d834cbbe9124 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 18 Apr 2022 20:38:27 +0200 Subject: [PATCH 6/6] runtests.sh: simplified `xmlstarlet` calls --- test/cfg/runtests.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/test/cfg/runtests.sh b/test/cfg/runtests.sh index 184f356c3ca..648d06b5fb0 100755 --- a/test/cfg/runtests.sh +++ b/test/cfg/runtests.sh @@ -472,11 +472,7 @@ do done # Check the syntax of the defines in the configuration files -set +e -xmlstarlet --version -XMLSTARLET_RETURNCODE=$? -set -e -if [ $XMLSTARLET_RETURNCODE -ne 0 ]; then +if ! xmlstarlet --version; then echo "xmlstarlet needed to extract defines, skipping defines check." else for configfile in ${CFG}*.cfg; do @@ -484,9 +480,7 @@ else # Disable debugging output temporarily since there could be many defines set +x # XMLStarlet returns 1 if no elements were found which is no problem here - set +e - EXTRACTED_DEFINES=$(xmlstarlet sel -t -m '//define' -c . -n <$configfile) - set -e + EXTRACTED_DEFINES=$(xmlstarlet sel -t -m '//define' -c . -n <$configfile || true) EXTRACTED_DEFINES=$(echo "$EXTRACTED_DEFINES" | sed 's///g') echo "$EXTRACTED_DEFINES" | gcc -fsyntax-only -xc -Werror - done