Merge lp:~nha/widelands/release-warnings into lp:widelands

Proposed by Nicolai Hähnle
Status: Merged
Merged at revision: 6546
Proposed branch: lp:~nha/widelands/release-warnings
Merge into: lp:widelands
Diff against target: 127 lines (+41/-44)
1 file modified
CMakeLists.txt (+41/-44)
To merge this branch: bzr merge lp:~nha/widelands/release-warnings
Reviewer Review Type Date Requested Status
Jens Beyer Approve
Widelands Developers Pending
Review via email: mp+153693@code.launchpad.net

Description of the change

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 ;-)

To post a comment you must log in.
Revision history for this message
SirVer (sirver) wrote :

Jens, you are most qualified to comment on this.

Revision history for this message
Jens Beyer (qcumber-some) wrote :

Took me a while to find the time, but I think now this is ok.
I also think this does not touch MSVC, but I really don't want to set a final OK on that as I don't really know what happens there ;-)

So, ok from me (Linux), but it would be great to have some check by an MSVC user.

review: Approve
Revision history for this message
Nicolai Hähnle (nha) wrote :

Perhaps a bit crude, but I merge now, since it's been three days and we don't know when Tino or somebody else might look at this.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2013-03-01 22:54:23 +0000
3+++ CMakeLists.txt 2013-03-17 20:41:22 +0000
4@@ -198,58 +198,55 @@
5 ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.3.2" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.3.1")
6 ENDIF (Compiler_old-style-cast_supported)
7
8-IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
9-
10- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GENERICWARNINGS} Compiler_generic_warnings_supported)
11- IF (Compiler_generic_warnings_supported)
12- set (WL_COMPILERFLAG_GENERICWARNINGS " ${PARAMETER_COMPILERFLAG_GENERICWARNINGS}") #the space is on purpose!
13- ENDIF (Compiler_generic_warnings_supported)
14-
15- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_EXTRAWARNINGS} Compiler_extra_warnings_supported)
16- IF (Compiler_extra_warnings_supported)
17- set (WL_COMPILERFLAG_EXTRAWARNINGS " ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}") #the space is on purpose!
18- ELSE (Compiler_extra_warnings_supported)
19- 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.")
20- ENDIF (Compiler_extra_warnings_supported)
21-
22- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GCCWARNINGS} Compiler_gcc_warnings_supported)
23- IF (Compiler_gcc_warnings_supported)
24- set (WL_COMPILERFLAG_GCCWARNINGS " ${PARAMETER_COMPILERFLAG_GCCWARNINGS}") #the space is on purpose!
25- ELSE (Compiler_gcc_warnings_supported)
26- message("Warning: could not add additional GCC-specific warning options: ${PARAMETER_COMPILERFLAG_GCCWARNINGS}. Most likely you are using a different compiler, like Clang/LLVM.")
27- ENDIF (Compiler_gcc_warnings_supported)
28-
29-
30- IF (WL_STRICT)
31- CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_STRICT} Compiler_strict_mode_supported)
32- IF (Compiler_strict_mode_supported)
33- set (WL_COMPILERFLAG_STRICT " ${PARAMETER_COMPILERFLAG_STRICT}") #the space is on purpose!
34- message(STATUS "Strict mode enabled, expect compilation errors instead of compilation warnings!")
35- ENDIF (Compiler_strict_mode_supported)
36- ENDIF (WL_STRICT)
37-ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
38+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GENERICWARNINGS} Compiler_generic_warnings_supported)
39+IF (Compiler_generic_warnings_supported)
40+ set (WL_COMPILERFLAG_GENERICWARNINGS " ${PARAMETER_COMPILERFLAG_GENERICWARNINGS}") #the space is on purpose!
41+ENDIF (Compiler_generic_warnings_supported)
42+
43+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_EXTRAWARNINGS} Compiler_extra_warnings_supported)
44+IF (Compiler_extra_warnings_supported)
45+ set (WL_COMPILERFLAG_EXTRAWARNINGS " ${PARAMETER_COMPILERFLAG_EXTRAWARNINGS}") #the space is on purpose!
46+ELSE (Compiler_extra_warnings_supported)
47+ 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.")
48+ENDIF (Compiler_extra_warnings_supported)
49+
50+CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_GCCWARNINGS} Compiler_gcc_warnings_supported)
51+IF (Compiler_gcc_warnings_supported)
52+ set (WL_COMPILERFLAG_GCCWARNINGS " ${PARAMETER_COMPILERFLAG_GCCWARNINGS}") #the space is on purpose!
53+ELSE (Compiler_gcc_warnings_supported)
54+ message("Warning: could not add additional GCC-specific warning options: ${PARAMETER_COMPILERFLAG_GCCWARNINGS}. Most likely you are using a different compiler, like Clang/LLVM.")
55+ENDIF (Compiler_gcc_warnings_supported)
56+
57+IF (WL_STRICT)
58+ CHECK_CXX_COMPILER_FLAG(${PARAMETER_COMPILERFLAG_STRICT} Compiler_strict_mode_supported)
59+ IF (Compiler_strict_mode_supported)
60+ set (WL_COMPILERFLAG_STRICT " ${PARAMETER_COMPILERFLAG_STRICT}") #the space is on purpose!
61+ message(STATUS "Strict mode enabled, expect compilation errors instead of compilation warnings!")
62+ ENDIF (Compiler_strict_mode_supported)
63+ENDIF (WL_STRICT)
64
65 # CMAKE only defines "-g", but we need -DDEBUG also, and we need -DNOPARACHUTE (for SDL) in Debug
66 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)
67
68+set (WL_COMPILERFLAG_OPTIMIZATIONS "-O3")
69+
70 #This can be removed if no one uses gcc 4.5.1 or 4.5.2 any more
71 IF (CMAKE_COMPILER_IS_GNUCXX)
72-EXEC_PROGRAM (
73+ EXEC_PROGRAM (
74 ${CMAKE_CXX_COMPILER}
75 ARGS --version
76 OUTPUT_VARIABLE WLBUILD_COMPILERVERSION
77- )
78- STRING(REGEX REPLACE ".*(4)\\.(5)\\.([0-9]).*" "\\1.\\2.\\3" WLBUILD_COMPILERVERSION_REP ${WLBUILD_COMPILERVERSION})
79- IF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
80- message("Detected gcc ${WLBUILD_COMPILERVERSION_REP}")
81- message("Suffering from gcc bug, disabling -O3")
82- set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
83- ELSE (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
84- #This line is the default and should be preserved.
85- set (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Set by widelands CMakeLists.txt" FORCE)
86- ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
87+ )
88+ STRING(REGEX REPLACE ".*(4)\\.(5)\\.([0-9]).*" "\\1.\\2.\\3" WLBUILD_COMPILERVERSION_REP ${WLBUILD_COMPILERVERSION})
89+ IF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
90+ message("Detected gcc ${WLBUILD_COMPILERVERSION_REP}")
91+ message("Suffering from gcc bug, disabling -O3")
92+ set (WL_COMPILERFLAG_OPTIMIZATIONS "-O2")
93+ ENDIF (WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.1" OR WLBUILD_COMPILERVERSION_REP STREQUAL "4.5.2")
94 ENDIF (CMAKE_COMPILER_IS_GNUCXX)
95
96+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)
97+
98 #If building with MSVC, then check for 3rdparty libs
99 if (DEFINED MSVC)
100 set (WL_3RDPARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty" CACHE STRING "Widelands 3rdparty dir")
101@@ -375,7 +372,7 @@
102 BzrRevision ALL
103 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
104 )
105-
106+
107 # Detect version now
108 execute_process (
109 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/utils/detect_revision.py
110@@ -592,7 +589,7 @@
111 set(CPACK_NSIS_PACKAGE_NAME "Widelands")
112 set(CPACK_NSIS_DISPLAY_NAME "Widelands ${WL_VERSION}")
113 set(CPACK_NSIS_DISPLAY_NAME_SET "TRUE")
114-
115+
116 # Optional dialogs
117 if (NOT DEFINED CPACK_NSIS_LANGUAGE_DIALOG)
118 set(CPACK_NSIS_LANGUAGE_DIALOG "ON")
119@@ -650,7 +647,7 @@
120 DeleteRegValue HKCR \\\".wmf\\\" \\\"WidelandsMapFile\\\"
121 DeleteRegKey /ifempty HKCR \\\".wmf\\\"
122 DeleteRegKey HKCR \\\"WidelandsMapFile\\\"
123-
124+
125 Delete \\\"$INSTDIR\\\\stdout.txt\\\"
126 Delete \\\"$INSTDIR\\\\stderr.txt\\\"
127 Delete \\\"$INSTDIR\\\"

Subscribers

People subscribed via source and target branches

to status/vote changes: