diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7ff363473..df48decba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,8 @@ variables: DOCKER_IMAGE: registry.git.rwth-aachen.de/acs/public/villas/node DOCKER_IMAGE_DEV: ${DOCKER_IMAGE}/dev-${DISTRO} DOCKER_CLI_EXPERIMENTAL: enabled - CMAKE_BUILD_OPTS: "--config Release --parallel 16" + CMAKE_BUILD_OPTS: "--parallel 16" + CMAKE_EXTRA_OPTS: "-DCMAKE_BUILD_TYPE=Release -DVILLAS_COMPILE_WARNING_AS_ERROR=ON" stages: - prepare @@ -64,7 +65,8 @@ build:source: matrix: - DISTRO: [ fedora, fedora-minimal, debian, rocky, ubuntu ] - DISTRO: fedora-minimal - CMAKE_EXTRA_OPTS: -DWITH_API=OFF + CMAKE_EXTRA_OPTS: -DVILLAS_COMPILE_WARNING_AS_ERROR=ON + -DWITH_API=OFF -DWITH_CLIENTS=OFF -DWITH_CONFIG=OFF -DWITH_DOC=OFF @@ -183,7 +185,7 @@ pkg:docker: --target ${TARGET} --build-arg ARCH=${ARCH} --build-arg TRIPLET=${TRIPLET} - --build-arg CMAKE_OPTS="${CMAKE_OPTS}" + --build-arg CMAKE_OPTS="${CMAKE_OPTS} ${CMAKE_EXTRA_OPTS}" --platform ${PLATFORM} --file ${DOCKER_FILE} --tag ${DOCKER_IMAGE}:${DOCKER_TAG}-${ARCH} . diff --git a/CMakeLists.txt b/CMakeLists.txt index e9a0f1062..0b90cbfdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,7 @@ include(FindSymbol) include(CMakeDependentOption) add_definitions(-D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE) -add_compile_options(-Wall -Wno-unknown-pragmas -Werror -fdiagnostics-color=auto) +add_compile_options(-Wall -Wno-unknown-pragmas -fdiagnostics-color=auto) # Check OS check_include_file("sys/eventfd.h" HAS_EVENTFD) @@ -213,12 +213,27 @@ cmake_dependent_option(WITH_NODE_WEBRTC "Build with webrtc node-type" cmake_dependent_option(WITH_NODE_WEBSOCKET "Build with websocket node-type" ON "WITH_WEB; LIBWEBSOCKETS_FOUND" OFF) cmake_dependent_option(WITH_NODE_ZEROMQ "Build with zeromq node-type" ON "LIBZMQ_FOUND;NOT WITHOUT_GPL" OFF) +# set a default for the build type +if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE "Debug") +endif() + # Add more build configurations include(cmake/config/Debug.cmake) include(cmake/config/Release.cmake) include(cmake/config/Coverage.cmake) include(cmake/config/Profiling.cmake) +if(NOT DEFINED VILLAS_COMPILE_WARNING_AS_ERROR) + set(VILLAS_COMPILE_WARNING_AS_ERROR ON) +endif() + +if(VILLAS_COMPILE_WARNING_AS_ERROR) + add_compile_options(-Werror) +else() + add_compile_options(-Wno-error) +endif() + # Get version info and buildid from Git GetVersion(${PROJECT_SOURCE_DIR} "CMAKE_PROJECT") diff --git a/cmake/config/Release.cmake b/cmake/config/Release.cmake index 37961761c..1cc8307c5 100644 --- a/cmake/config/Release.cmake +++ b/cmake/config/Release.cmake @@ -4,3 +4,8 @@ # @copyright 2014-2022, Institute for Automation of Complex Power Systems, EONERC # @license Apache 2.0 ################################################################################### + +# don't treat warnings as errors on normal release builds +if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND NOT DEFINED VILLAS_COMPILE_WARNING_AS_ERROR) + set(VILLAS_COMPILE_WARNING_AS_ERROR OFF) +endif() diff --git a/packaging/docker/Dockerfile.debian-multiarch b/packaging/docker/Dockerfile.debian-multiarch index 304ae76c1..6564bd1c7 100644 --- a/packaging/docker/Dockerfile.debian-multiarch +++ b/packaging/docker/Dockerfile.debian-multiarch @@ -69,6 +69,7 @@ ADD cmake/toolchains/debian-${ARCH}.cmake / ENV PKG_CONFIG_PATH=/usr/lib/${TRIPLET}/pkgconfig:/usr/local/lib/${TRIPLET}/pkgconfig ENV CMAKE_EXTRA_OPTS="-DCMAKE_TOOLCHAIN_FILE=/debian-${ARCH}.cmake \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=${PREFIX} \ -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DCMAKE_INSTALL_LIBDIR=${PREFIX}/lib/${TRIPLET} \ diff --git a/packaging/nix/flake.nix b/packaging/nix/flake.nix index 91c13f242..e2ef3f7d6 100644 --- a/packaging/nix/flake.nix +++ b/packaging/nix/flake.nix @@ -131,7 +131,7 @@ pkgs = pkgsFor system; shellHook = ''[ -z "$PS1" ] || exec "$SHELL"''; hardeningDisable = ["all"]; - packages = with pkgs; [criterion]; + packages = with pkgs; [bashInteractive criterion]; in rec { default = full;