use -Werror by default in debug mode builds
[supertux.git] / CMakeLists.txt
index 975c5f0..ca212d4 100644 (file)
@@ -164,13 +164,18 @@ FILE(GLOB SUPERTUX_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/*.cpp src/audio/*
 
 OPTION(DEBUG "Build with debugging options" OFF)
 OPTION(PROFILE "Build with profiling information" OFF)
+OPTION(WERROR "Stops on first compiler warning in debug mode" ON)
 IF(CMAKE_COMPILER_IS_GNUCC)
+  ADD_DEFINITIONS(-Wall -W)
   IF (DEBUG)
     REMOVE_DEFINITIONS(-O2)
-    ADD_DEFINITIONS(-O0 -g -Wall -Werror)
+    ADD_DEFINITIONS(-O0 -g)
+    IF(WERROR)
+      ADD_DEFINITIONS(-Werror)
+    ENDIF(WERROR)
   ELSE (DEBUG)
     ADD_DEFINITIONS(-O2)
-    REMOVE_DEFINITIONS(-O0 -g -Wall -Werror)
+    REMOVE_DEFINITIONS(-O0 -g)
   ENDIF (DEBUG)
   IF (PROFILE)
     ADD_DEFINITIONS(-pg)
@@ -193,13 +198,15 @@ ENDIF(ENABLE_SQDBG)
 OPTION(GENERATE_WRAPPER "Build miniswig and generate the wrapper" ${DEBUG})
 IF(GENERATE_WRAPPER)
   ADD_SUBDIRECTORY(tools/miniswig)
+  FILE(GLOB GENERATE_WRAPPER_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/scripting/*.?pp)
+  LIST(REMOVE_ITEM GENERATE_WRAPPER_SOURCES "src/scripting/wrapper.cpp" "src/scripting/wrapper.hpp")
   ADD_CUSTOM_COMMAND(
     OUTPUT ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.cpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.hpp
     COMMAND cd ${SUPERTUX_SOURCE_DIR} && ${CMAKE_CXX_COMPILER}
     ARGS -x "c++" -E -CC -DSCRIPTING_API src/scripting/wrapper.interface.hpp -o ${SUPERTUX_BINARY_DIR}/miniswig.tmp
     COMMAND tools/miniswig/miniswig
     ARGS --input miniswig.tmp --output-cpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.cpp --output-hpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.hpp --module supertux --select-namespace Scripting
-    DEPENDS src/scripting/wrapper.interface.hpp tools/miniswig/miniswig
+    DEPENDS ${GENERATE_WRAPPER_SOURCES} tools/miniswig/miniswig
   )
 ENDIF(GENERATE_WRAPPER)