widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #01054
[Merge] lp:~nha/widelands/release-warnings into lp:widelands
Nicolai Hähnle has proposed merging lp:~nha/widelands/release-warnings into lp:widelands.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~nha/widelands/release-warnings/+merge/153693
This should be straightforward: make sure we compile with warnings also in Release mode. Note that the MSVC path is unaffected, since it happens further down in the CMakeLists.txt, so I think/hope that this does not break anything.
Still, some comment from the cmake gurus would be appreciated ;-)
--
https://code.launchpad.net/~nha/widelands/release-warnings/+merge/153693
Your team Widelands Developers is requested to review the proposed merge of lp:~nha/widelands/release-warnings into lp:widelands.
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2013-03-01 22:54:23 +0000
+++ CMakeLists.txt 2013-03-17 20:37:24 +0000
@@ -198,58 +198,55 @@
ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.3.2" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.3.1")
ENDIF (Compiler_old-style-cast_supported)
-IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
-
- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GENERICWARNINGS} Compiler_generic_warnings_supported)
- IF (Compiler_generic_warnings_supported)
- set (WL_COMPILERFLAG_GENERICWARNINGS " ${PARAMETER_COMPILERFLAG_GENERICWARNINGS}") #the space is on purpose!
- ENDIF (Compiler_generic_warnings_supported)
-
- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_EXTRAWARNINGS} Compiler_extra_warnings_supported)
- IF (Compiler_extra_warnings_supported)
- set (WL_COMPILERFLAG_EXTRAWARNINGS " ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}") #the space is on purpose!
- ELSE (Compiler_extra_warnings_supported)
- message("Warning: couldn't set the following compiler options: ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}. Most likely these options are available in a newer release of your compiler.")
- ENDIF (Compiler_extra_warnings_supported)
-
- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GCCWARNINGS} Compiler_gcc_warnings_supported)
- IF (Compiler_gcc_warnings_supported)
- set (WL_COMPILERFLAG_GCCWARNINGS " ${PARAMETER_COMPILERFLAG_GCCWARNINGS}") #the space is on purpose!
- ELSE (Compiler_gcc_warnings_supported)
- message("Warning: could not add additional GCC-specific warning options: ${PARAMETER_COMPILERFLAG_GCCWARNINGS}. Most likely you are using a different compiler, like Clang/LLVM.")
- ENDIF (Compiler_gcc_warnings_supported)
-
-
- IF (WL_STRICT)
- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_STRICT} Compiler_strict_mode_supported)
- IF (Compiler_strict_mode_supported)
- set (WL_COMPILERFLAG_STRICT " ${PARAMETER_COMPILERFLAG_STRICT}") #the space is on purpose!
- message(STATUS "Strict mode enabled, expect compilation errors instead of compilation warnings!")
- ENDIF (Compiler_strict_mode_supported)
- ENDIF (WL_STRICT)
-ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GENERICWARNINGS} Compiler_generic_warnings_supported)
+IF (Compiler_generic_warnings_supported)
+ set (WL_COMPILERFLAG_GENERICWARNINGS " ${PARAMETER_COMPILERFLAG_GENERICWARNINGS}") #the space is on purpose!
+ENDIF (Compiler_generic_warnings_supported)
+
+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_EXTRAWARNINGS} Compiler_extra_warnings_supported)
+IF (Compiler_extra_warnings_supported)
+ set (WL_COMPILERFLAG_EXTRAWARNINGS " ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}") #the space is on purpose!
+ELSE (Compiler_extra_warnings_supported)
+ message("Warning: couldn't set the following compiler options: ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}. Most likely these options are available in a newer release of your compiler.")
+ENDIF (Compiler_extra_warnings_supported)
+
+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GCCWARNINGS} Compiler_gcc_warnings_supported)
+IF (Compiler_gcc_warnings_supported)
+ set (WL_COMPILERFLAG_GCCWARNINGS " ${PARAMETER_COMPILERFLAG_GCCWARNINGS}") #the space is on purpose!
+ELSE (Compiler_gcc_warnings_supported)
+ message("Warning: could not add additional GCC-specific warning options: ${PARAMETER_COMPILERFLAG_GCCWARNINGS}. Most likely you are using a different compiler, like Clang/LLVM.")
+ENDIF (Compiler_gcc_warnings_supported)
+
+IF (WL_STRICT)
+ CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_STRICT} Compiler_strict_mode_supported)
+ IF (Compiler_strict_mode_supported)
+ set (WL_COMPILERFLAG_STRICT " ${PARAMETER_COMPILERFLAG_STRICT}") #the space is on purpose!
+ message(STATUS "Strict mode enabled, expect compilation errors instead of compilation warnings!")
+ ENDIF (Compiler_strict_mode_supported)
+ENDIF (WL_STRICT)
# CMAKE only defines "-g", but we need -DDEBUG also, and we need -DNOPARACHUTE (for SDL) in Debug
set (CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG -DNOPARACHUTE${WL_COMPILERFLAG_OLDSTYLECAST}${WL_COMPILERFLAG_GENERICWARNINGS}${WL_COMPILERFLAG_EXTRAWARNINGS}${WL_COMPILERFLAG_GCCWARNINGS}${WL_COMPILERFLAG_STRICT}" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
+set (WL_COMPILERFLAG_OPTIMIZATIONS "-O3")
+
#This can be removed if no one uses gcc 4.5.1 or 4.5.2 any more
IF (CMAKE_COMPILER_IS_GNUCXX)
-EXEC_PROGRAM (
+ EXEC_PROGRAM (
${CMAKE_CXX_COMPILER}
ARGS --version
OUTPUT_VARIABLE WLBUILD_COMPILERVERSION
- )
- STRING(REGEX REPLACE ".*(4)\\.(5)\\.([0-9]).*" "\\1.\\2.\\3" WLBUILD_COMPILERVERSION_REP ${WLBUILD_COMPILERVERSION})
- IF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
- message("Detected gcc ${WLBUILD_COMPILERVERSION_REP}")
- message("Suffering from gcc bug, disabling -O3")
- set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
- ELSE (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
- #This line is the default and should be preserved.
- set (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
- ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
+ )
+ STRING(REGEX REPLACE ".*(4)\\.(5)\\.([0-9]).*" "\\1.\\2.\\3" WLBUILD_COMPILERVERSION_REP ${WLBUILD_COMPILERVERSION})
+ IF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
+ message("Detected gcc ${WLBUILD_COMPILERVERSION_REP}")
+ message("Suffering from gcc bug, disabling -O3")
+ set (WL_COMPILERFLAG_OPTIMIZATIONS "-O2")
+ ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
ENDIF (CMAKE_COMPILER_IS_GNUCXX)
+set (CMAKE_CXX_FLAGS_RELEASE "${WL_COMPILERFLAG_OPTIMIZATIONS} -DNDEBUG${WL_COMPILERFLAG_OLDSTYLECAST}${WL_COMPILERFLAG_GENERICWARNINGS}${WL_COMPILERFLAG_EXTRAWARNINGS}${WL_COMPILERFLAG_GCCWARNINGS}${WL_COMPILERFLAG_STRICT}" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
+
#If building with MSVC, then check for 3rdparty libs
if (DEFINED MSVC)
set (WL_3RDPARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty" CACHE STRING "Widelands 3rdparty dir")
@@ -375,7 +372,7 @@
BzrRevision ALL
COMMAND ${CMAKE_COMMAND} -DWL_INSTALL_PREFIX=${WL_INSTALL_PREFIX} -DWL_INSTALL_BINDIR=${WL_INSTALL_BINDIR} -DWL_INSTALL_DATADIR=${WL_INSTALL_DATADIR} -DWL_INSTALL_LOCALEDIR=${WL_INSTALL_LOCALEDIR} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/BzrRevision.cmake
)
-
+
# Detect version now
execute_process (
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/utils/detect_revision.py
@@ -592,7 +589,7 @@
set(CPACK_NSIS_PACKAGE_NAME "Widelands")
set(CPACK_NSIS_DISPLAY_NAME "Widelands ${WL_VERSION}")
set(CPACK_NSIS_DISPLAY_NAME_SET "TRUE")
-
+
# Optional dialogs
if (NOT DEFINED CPACK_NSIS_LANGUAGE_DIALOG)
set(CPACK_NSIS_LANGUAGE_DIALOG "ON")
@@ -650,7 +647,7 @@
DeleteRegValue HKCR \\\".wmf\\\" \\\"WidelandsMapFile\\\"
DeleteRegKey /ifempty HKCR \\\".wmf\\\"
DeleteRegKey HKCR \\\"WidelandsMapFile\\\"
-
+
Delete \\\"$INSTDIR\\\\stdout.txt\\\"
Delete \\\"$INSTDIR\\\\stderr.txt\\\"
Delete \\\"$INSTDIR\\\"
Follow ups