chiark / gitweb /
Stop automatically adding warning flags and -Werror.
authorSimon Tatham <anakin@pobox.com>
Wed, 31 Mar 2021 17:44:44 +0000 (18:44 +0100)
committerSimon Tatham <anakin@pobox.com>
Wed, 31 Mar 2021 17:44:44 +0000 (18:44 +0100)
It's better to be lax for normal users trying to build the puzzles
from source to actually run them. That way, warning changes in some
particular compiler I haven't seen yet won't break the build.

Instead, I've invented a cmake setting -DSTRICT=ON which turns on all
those flags. So I can build with them myself, to ensure the code is as
portable as possible. And that flag is set in Buildscr, so that my
official builds won't complete until that warning mode is satisfied.

Buildscr
cmake/platforms/unix.cmake

index 69cc2d03507846fe277c0cac8d9060afcf448293..29d4e569305fa3ab4d012e850011dfa3dcaa8cb6 100644 (file)
--- a/Buildscr
+++ b/Buildscr
@@ -26,7 +26,11 @@ in puzzles do perl -i -pe 's/Unidentified build/$(Version)/' osx/Info.plist
 
 ifneq "$(NOICONS)" yes then
   # Run enough of a native Unix build to produce the various icons.
-  in . do cmake -B build-icons puzzles
+  # This also checks that the build completes in 'strict' mode (with
+  # lots of warnings and -Werror), and triggers a build failure if
+  # not.
+  in . do cmake -B build-icons puzzles -DSTRICT=ON
+  in build-icons do make -j$(nproc)
   in build-icons do make -j$(nproc) icons VERBOSE=1
 
   # Copy the C icon files into the icons source subdirectory, for the
index b858be8f977643e9c460c3da7a9a2dcbcba94d6a..df951443d8c35fe9bc8192cf374156b2acc0e700 100644 (file)
@@ -29,24 +29,9 @@ set(platform_libs -lm)
 
 set(build_icons TRUE)
 
-function(try_append_cflag flag)
-  set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
-  try_compile(compile_passed ${CMAKE_BINARY_DIR}
-    SOURCES ${CMAKE_SOURCE_DIR}/cmake/testbuild.c
-    OUTPUT_VARIABLE test_compile_output
-    CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${GTK_INCLUDE_DIRS}")
-  if(compile_passed)
-    set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} PARENT_SCOPE)
-  endif()
-endfunction()
-if (CMAKE_C_COMPILER_ID MATCHES "GNU" OR
-    CMAKE_C_COMPILER_ID MATCHES "Clang")
-  try_append_cflag(-Wall)
-  try_append_cflag(-Werror)
-  try_append_cflag(-std=c89)
-  try_append_cflag(-pedantic)
-  try_append_cflag(-Wwrite-strings)
+if(DEFINED STRICT AND (CMAKE_C_COMPILER_ID MATCHES "GNU" OR
+                       CMAKE_C_COMPILER_ID MATCHES "Clang"))
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wwrite-strings -std=c99 -pedantic -Werror")
 endif()
 
 function(get_platform_puzzle_extra_source_files OUTVAR NAME)