From 6bff03c6b9aca903cc62c93941c5f79982cdc703 Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 11:47:02 +0100 Subject: [PATCH 1/6] add -Werror activation for Unix builds (make and cmake) --- .gitlab-ci.yml | 9 +++++++++ CMakeLists.txt | 3 ++- Makefile | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e5bac3a32..6548da500c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -172,6 +172,9 @@ stages: - cp "$LTV_DIR"/*.met scripts/testv/ - cp "$LTV_DIR"/*.csv scripts/testv/ +.activate-Werror: &activate-Werror + - sed -i ".bak" "s/^# \(CFLAGS += -Werror\)/\1/" Makefile + - sed -i ".bak" "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt # --------------------------------------------------------------- # Job templates @@ -313,6 +316,7 @@ build-codec-linux-make: - .rules-basis script: - *print-common-info + - *activate-Werror - make -j build-codec-linux-cmake: @@ -321,6 +325,7 @@ build-codec-linux-cmake: - .rules-basis script: - *print-common-info + - *activate-Werror - mkdir build - cd build - cmake .. @@ -334,6 +339,7 @@ build-codec-instrumented-linux: timeout: "6 minutes" script: - *print-common-info + - *activate-Werror - bash ci/build_codec_instrumented_linux.sh # make sure that the codec builds with msan, asan and usan @@ -343,6 +349,7 @@ build-codec-sanitizers-linux: - .rules-basis script: - *print-common-info + - *activate-Werror - bash ci/build_codec_sanitizers_linux.sh build-codec-include-split-linux-make: @@ -352,6 +359,7 @@ build-codec-include-split-linux-make: script: - *print-common-info - *enable-split-rendering + - *activate-Werror - make -j INCLUDE_SPLIT=1 build-codec-include-split-linux-cmake: @@ -361,6 +369,7 @@ build-codec-include-split-linux-cmake: script: - *print-common-info - *enable-split-rendering + - *activate-Werror - mkdir build - cd build - cmake .. -DINCLUDE_SPLIT=1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d8b2caeb0..1a50f4765b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,7 +60,8 @@ if(UNIX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffp-contract=off") # disable floating point operation contraction set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wno-unused-parameter") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter") + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") # CLANG if(CLANG) find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED) diff --git a/Makefile b/Makefile index 8f5cdaf433..51d711ae3d 100644 --- a/Makefile +++ b/Makefile @@ -57,8 +57,9 @@ endif # C compiler flags CFLAGS += -std=c99 -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long \ -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ - -Werror \ -Wno-implicit-fallthrough -ffp-contract=off +# to be uncommented in CI +# CFLAGS += -Werror # libs to link LDLIBS += -lm -- GitLab From e0ad34a3ee2b6f100fde697b9d8ee2016de68c98 Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 11:52:04 +0100 Subject: [PATCH 2/6] patch WX in windows cmake build --- .gitlab-ci.yml | 1 + CMakeLists.txt | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6548da500c..26659c27ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,6 +175,7 @@ stages: .activate-Werror: &activate-Werror - sed -i ".bak" "s/^# \(CFLAGS += -Werror\)/\1/" Makefile - sed -i ".bak" "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt + - sed -i ".bak" "s/# \(add_compile_options(\"\/WX\")\)/\1/" CMakeLists.txt # --------------------------------------------------------------- # Job templates diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a50f4765b..b96aa88d11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,9 @@ if(UNIX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter") + # to be uncommented in CI # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + # CLANG if(CLANG) find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED) @@ -114,7 +116,9 @@ elseif(WIN32) /MP ) if(NOT INCLUDE_SPLIT) - add_compile_options("/W4" "/WX") + add_compile_options("/W4") + # to be uncommented in CI + # add_compile_options("/WX") endif() endif() -- GitLab From 1e51cfdb302ab1a428bac7227c55be621e5294de Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 12:01:21 +0100 Subject: [PATCH 3/6] handle for windows MSVC project files + cleanup --- .gitlab-ci.yml | 40 ++++++++++-------------------- Workspace_msvc/decoder.vcxproj | 4 +-- Workspace_msvc/encoder.vcxproj | 4 +-- Workspace_msvc/lib_com.vcxproj | 6 ++--- Workspace_msvc/lib_debug.vcxproj | 4 +-- Workspace_msvc/lib_dec.vcxproj | 4 +-- Workspace_msvc/lib_enc.vcxproj | 4 +-- Workspace_msvc/lib_lc3plus.vcxproj | 4 +-- Workspace_msvc/lib_rend.vcxproj | 4 +-- Workspace_msvc/lib_util.vcxproj | 4 +-- Workspace_msvc/renderer.vcxproj | 4 +-- 11 files changed, 34 insertions(+), 48 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 26659c27ba..7b1f6b5910 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -176,6 +176,7 @@ stages: - sed -i ".bak" "s/^# \(CFLAGS += -Werror\)/\1/" Makefile - sed -i ".bak" "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt - sed -i ".bak" "s/# \(add_compile_options(\"\/WX\")\)/\1/" CMakeLists.txt + - sed -i ".bak" "s/false/true/" Workspace_msvc/*.vcxproj # --------------------------------------------------------------- # Job templates @@ -243,21 +244,6 @@ stages: - if [ ! -d "$TESTV_DIR" ]; then mkdir -p $TESTV_DIR; fi - cp -r scripts/testv/* $TESTV_DIR/ -# template for build jobs to include the check for warnings -.build-job-with-check-for-warnings: - extends: .build-job-linux - stage: build - allow_failure: - exit_codes: - - 123 - -.build-job-windows-with-check-for-warnings: - extends: .build-job-windows - stage: build - allow_failure: - exit_codes: - - 123 - # --------------------------------------------------------------- # .pre jobs for setting up things # --------------------------------------------------------------- @@ -313,7 +299,7 @@ branch-is-up-to-date-with-main-post: build-codec-linux-make: extends: - - .build-job-with-check-for-warnings + - .build-job-linux - .rules-basis script: - *print-common-info @@ -322,7 +308,7 @@ build-codec-linux-make: build-codec-linux-cmake: extends: - - .build-job-with-check-for-warnings + - .build-job-linux - .rules-basis script: - *print-common-info @@ -346,7 +332,7 @@ build-codec-instrumented-linux: # make sure that the codec builds with msan, asan and usan build-codec-sanitizers-linux: extends: - - .build-job-with-check-for-warnings + - .build-job-linux - .rules-basis script: - *print-common-info @@ -355,7 +341,7 @@ build-codec-sanitizers-linux: build-codec-include-split-linux-make: extends: - - .build-job-with-check-for-warnings + - .build-job-linux - .rules-basis script: - *print-common-info @@ -365,7 +351,7 @@ build-codec-include-split-linux-make: build-codec-include-split-linux-cmake: extends: - - .build-job-with-check-for-warnings + - .build-job-linux - .rules-basis script: - *print-common-info @@ -379,21 +365,21 @@ build-codec-include-split-linux-cmake: build-codec-windows-cmake: extends: - - .build-job-windows-with-check-for-warnings + - .build-job-windows - .rules-basis script: - *print-common-info-windows - - $winoutdata = $null + - *activate-Werror - cmake -G "Visual Studio 15 2017" . -Bbuild - cmake --build build -j build-codec-windows-include-split-cmake: extends: - - .build-job-windows-with-check-for-warnings + - .build-job-windows - .rules-basis script: - *print-common-info-windows - - $winoutdata = $null + - *activate-Werror - get-content .\lib_com\options.h | %{$_ -replace "/\*#define[\s]*SPLIT_REND_WITH_HEAD_ROT[\s]*\*/", "#define SPLIT_REND_WITH_HEAD_ROT"} | set-content -Path ./options_patched.h - rm ./lib_com/options.h - mv ./options_patched.h ./lib_com/options.h @@ -402,13 +388,13 @@ build-codec-windows-include-split-cmake: build-codec-windows-msbuild: extends: - - .build-job-windows-with-check-for-warnings + - .build-job-windows - .rules-basis script: - *print-common-info-windows - - $winoutdata = $null + - *activate-Werror - py .\scripts\strip_split_rendering.py - - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug | tee -variable winoutdata + - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug # --------------------------------------------------------------- # Test jobs for merge requests diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index 13e94e8533..2228349d5e 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -82,7 +82,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -130,7 +130,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 0808df5636..309dc15253 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -82,7 +82,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -138,7 +138,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 92bbedba8e..d11b9087ee 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -72,7 +72,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -110,7 +110,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) @@ -308,4 +308,4 @@ - \ No newline at end of file + diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 266fca4507..5e986bb167 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -68,7 +68,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false $(OutDir)$(TargetName).lib @@ -95,7 +95,7 @@ Default %(DisableSpecificWarnings) - true + false $(OutDir)$(TargetName).lib diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 90f7ce7e69..ea7ad47897 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -82,7 +82,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -125,7 +125,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 9763a0c49d..aac96693ce 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -82,7 +82,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -129,7 +129,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj index bb6b4d3c7d..a2e45cb609 100644 --- a/Workspace_msvc/lib_lc3plus.vcxproj +++ b/Workspace_msvc/lib_lc3plus.vcxproj @@ -72,7 +72,7 @@ 4305;4244;4996 OldStyle false - true + false Console @@ -91,7 +91,7 @@ true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 4244;4305;4996 - true + false Console diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index d0e0d4053f..de8e09d283 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -82,7 +82,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -125,7 +125,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index de26f33a6d..80e744c4f1 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -67,7 +67,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false $(OutDir)$(TargetName).lib @@ -91,7 +91,7 @@ Default %(DisableSpecificWarnings) - true + false $(OutDir)$(TargetName).lib diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 2bae53b431..83f6afc4dc 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -79,7 +79,7 @@ OldStyle Default %(DisableSpecificWarnings) - true + false _DEBUG;%(PreprocessorDefinitions) @@ -127,7 +127,7 @@ Default %(DisableSpecificWarnings) - true + false NDEBUG;%(PreprocessorDefinitions) -- GitLab From 59ad250c13c4eb647260e03d871bc48ba25d884e Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 12:05:04 +0100 Subject: [PATCH 4/6] fix sed command --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b1f6b5910..989ab02deb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -173,10 +173,10 @@ stages: - cp "$LTV_DIR"/*.csv scripts/testv/ .activate-Werror: &activate-Werror - - sed -i ".bak" "s/^# \(CFLAGS += -Werror\)/\1/" Makefile - - sed -i ".bak" "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt - - sed -i ".bak" "s/# \(add_compile_options(\"\/WX\")\)/\1/" CMakeLists.txt - - sed -i ".bak" "s/false/true/" Workspace_msvc/*.vcxproj + - sed -i.bak "s/^# \(CFLAGS += -Werror\)/\1/" Makefile + - sed -i.bak "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt + - sed -i.bak "s/# \(add_compile_options(\"\/WX\")\)/\1/" CMakeLists.txt + - sed -i.bak "s/false/true/" Workspace_msvc/*.vcxproj # --------------------------------------------------------------- # Job templates -- GitLab From 8ed3f02f3799dad3defe72bc31c31c9dd62e4351 Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 12:09:32 +0100 Subject: [PATCH 5/6] add sed alternative for windows --- .gitlab-ci.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 989ab02deb..71b4172b11 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -172,11 +172,13 @@ stages: - cp "$LTV_DIR"/*.met scripts/testv/ - cp "$LTV_DIR"/*.csv scripts/testv/ -.activate-Werror: &activate-Werror +.activate-Werror-linux: &activate-Werror-linux - sed -i.bak "s/^# \(CFLAGS += -Werror\)/\1/" Makefile - sed -i.bak "s/# \(set(CMAKE_C_FLAGS \"\${CMAKE_C_FLAGS} -Werror\")\)/\1/" CMakeLists.txt - - sed -i.bak "s/# \(add_compile_options(\"\/WX\")\)/\1/" CMakeLists.txt - - sed -i.bak "s/false/true/" Workspace_msvc/*.vcxproj + +.activate-WX-windows: &activate-WX-windows + - (Get-Content -Path "CMakeLists.txt") -replace '# \(add_compile_options\("\/WX"\)\)', '$1' | Set-Content -Path "CMakeLists.txt" + - (Get-Content -Path "Workspace_msvc/*.vcxproj") -replace 'false', 'true' | Set-Content -Path "Workspace_msvc/*.vcxproj" # --------------------------------------------------------------- # Job templates @@ -303,7 +305,7 @@ build-codec-linux-make: - .rules-basis script: - *print-common-info - - *activate-Werror + - *activate-Werror-linux - make -j build-codec-linux-cmake: @@ -312,7 +314,7 @@ build-codec-linux-cmake: - .rules-basis script: - *print-common-info - - *activate-Werror + - *activate-Werror-linux - mkdir build - cd build - cmake .. @@ -326,7 +328,7 @@ build-codec-instrumented-linux: timeout: "6 minutes" script: - *print-common-info - - *activate-Werror + - *activate-Werror-linux - bash ci/build_codec_instrumented_linux.sh # make sure that the codec builds with msan, asan and usan @@ -336,7 +338,7 @@ build-codec-sanitizers-linux: - .rules-basis script: - *print-common-info - - *activate-Werror + - *activate-Werror-linux - bash ci/build_codec_sanitizers_linux.sh build-codec-include-split-linux-make: @@ -346,7 +348,7 @@ build-codec-include-split-linux-make: script: - *print-common-info - *enable-split-rendering - - *activate-Werror + - *activate-Werror-linux - make -j INCLUDE_SPLIT=1 build-codec-include-split-linux-cmake: @@ -356,7 +358,7 @@ build-codec-include-split-linux-cmake: script: - *print-common-info - *enable-split-rendering - - *activate-Werror + - *activate-Werror-linux - mkdir build - cd build - cmake .. -DINCLUDE_SPLIT=1 @@ -369,7 +371,7 @@ build-codec-windows-cmake: - .rules-basis script: - *print-common-info-windows - - *activate-Werror + - *activate-WX-windows - cmake -G "Visual Studio 15 2017" . -Bbuild - cmake --build build -j @@ -379,7 +381,7 @@ build-codec-windows-include-split-cmake: - .rules-basis script: - *print-common-info-windows - - *activate-Werror + - *activate-WX-windows - get-content .\lib_com\options.h | %{$_ -replace "/\*#define[\s]*SPLIT_REND_WITH_HEAD_ROT[\s]*\*/", "#define SPLIT_REND_WITH_HEAD_ROT"} | set-content -Path ./options_patched.h - rm ./lib_com/options.h - mv ./options_patched.h ./lib_com/options.h @@ -392,7 +394,7 @@ build-codec-windows-msbuild: - .rules-basis script: - *print-common-info-windows - - *activate-Werror + - *activate-WX-windows - py .\scripts\strip_split_rendering.py - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug -- GitLab From b468e9f5b37ccb6d16da664d7dcad7fbc11c2ebf Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 15 Dec 2023 12:20:50 +0100 Subject: [PATCH 6/6] loop over files instead of using wildcard twice --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 71b4172b11..761c04ec51 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -178,7 +178,7 @@ stages: .activate-WX-windows: &activate-WX-windows - (Get-Content -Path "CMakeLists.txt") -replace '# \(add_compile_options\("\/WX"\)\)', '$1' | Set-Content -Path "CMakeLists.txt" - - (Get-Content -Path "Workspace_msvc/*.vcxproj") -replace 'false', 'true' | Set-Content -Path "Workspace_msvc/*.vcxproj" + - Get-ChildItem -Path "Workspace_msvc" -Filter "*.vcxproj" | ForEach-Object { (Get-Content -Path $_.FullName) -replace 'false', 'true' | Set-Content -Path $_.FullName } # --------------------------------------------------------------- # Job templates -- GitLab