[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33705] trunk/blender: CMake now tests warnings are supported, GCC 4.0 wasn' t working because of unsupported warnings.

Campbell Barton ideasman42 at gmail.com
Thu Dec 16 10:55:35 CET 2010


Revision: 33705
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33705
Author:   campbellbarton
Date:     2010-12-16 10:55:35 +0100 (Thu, 16 Dec 2010)

Log Message:
-----------
CMake now tests warnings are supported, GCC 4.0 wasn't working because of unsupported warnings.
this can work for other compilers too, currently intel and gcc use this.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/cmake/macros.cmake

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2010-12-16 09:51:55 UTC (rev 33704)
+++ trunk/blender/CMakeLists.txt	2010-12-16 09:55:35 UTC (rev 33705)
@@ -355,12 +355,6 @@
 	# GNU Compiler
 	if(CMAKE_COMPILER_IS_GNUCC)
 		set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
-	
-		# Better warnings
-		# note: -Wunused-parameter is added below for all GCC compilers
-		set(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement -Wno-unknown-pragmas")
-		set(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
-
 	# Intel C++ Compiler
 	elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
 		# think these next two are broken
@@ -379,13 +373,8 @@
 		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
 		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
 
+		# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
 		set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
-
-		# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
-
-		set(C_WARNINGS "-Wall -Wpointer-arith -Wno-unknown-pragmas")
-		set(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
-
 		set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
 	endif()
 
@@ -605,10 +594,6 @@
 			set(LLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid")
 			set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
 
-			# Better warnings
-			set(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement -Wno-unknown-pragmas")
-			set(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
-
 			set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE")
 			set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE")
 		endif()
@@ -892,11 +877,6 @@
 		set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 		set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 	endif()
-
-	# Better warnings
-	set(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement -Wno-unknown-pragmas")
-	set(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
-
 endif()
 
 
@@ -1003,9 +983,37 @@
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC)
-	set(C_WARNINGS "${C_WARNINGS} -Wunused-parameter -Wwrite-strings -Werror=strict-prototypes -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=return-type")
+
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wall)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wcast-align)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wdeclaration-after-statement)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Werror=declaration-after-statement)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Werror=implicit-function-declaration)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Werror=return-type)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Werror=strict-prototypes)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wno-char-subscripts)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wno-unknown-pragmas)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wpointer-arith)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wunused-parameter)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wwrite-strings)
+
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wall)
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wno-invalid-offsetof)
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wno-sign-compare)
+
+elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
+
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wall)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wpointer-arith)
+	ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS -Wno-unknown-pragmas)
+
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wall)
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wno-invalid-offsetof)
+	ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS -Wno-sign-compare)
+
 endif()
 
+
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS} ${C_WARNINGS}")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ${CXX_WARNINGS}")
 

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake	2010-12-16 09:51:55 UTC (rev 33704)
+++ trunk/blender/build_files/cmake/macros.cmake	2010-12-16 09:55:35 UTC (rev 33705)
@@ -275,7 +275,38 @@
 
 endmacro()
 
+macro(ADD_CHECK_C_COMPILER_FLAG
+	_CFLAGS
+	_FLAG)
 
+	include(CheckCCompilerFlag)
+
+	CHECK_C_COMPILER_FLAG(${_FLAG} SUPPORT_WALL)
+
+	if(SUPPORT_WALL)
+		message(STATUS "Using CFLAG: ${_FLAG}")
+		set(_CFLAGS "${_CFLAGS} ${_FLAG}")
+	else()
+		message(STATUS "Unsupported CFLAG: ${_FLAG}")
+	endif()
+endmacro()
+
+macro(ADD_CHECK_CXX_COMPILER_FLAG
+	_CXXFLAGS
+	_FLAG)
+
+	include(CheckCXXCompilerFlag)
+
+	CHECK_CXX_COMPILER_FLAG(${_FLAG} SUPPORT_WALL)
+
+	if(SUPPORT_WALL)
+		message(STATUS "Using CXXFLAG: ${_FLAG}")
+		set(_CFLAGS "${_CXXFLAGS} ${_FLAG}")
+	else()
+		message(STATUS "Unsupported CXXFLAG: ${_FLAG}")
+	endif()
+endmacro()
+
 macro(get_blender_version)
 	file(READ ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h CONTENT)
 	string(REGEX REPLACE "\n" ";" CONTENT "${CONTENT}")





More information about the Bf-blender-cvs mailing list