[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36837] trunk/blender: CMake changes

Campbell Barton ideasman42 at gmail.com
Mon May 23 16:56:14 CEST 2011


Revision: 36837
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36837
Author:   campbellbarton
Date:     2011-05-23 14:56:14 +0000 (Mon, 23 May 2011)
Log Message:
-----------
CMake changes
- don't allow building if the LIBDIR is not found on mac/windows.
- by default use -O2 rather then -O3 for GCC release flags, was crashing some GCC versions and blender releases are supposed to use -O2.

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

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2011-05-23 14:51:31 UTC (rev 36836)
+++ trunk/blender/CMakeLists.txt	2011-05-23 14:56:14 UTC (rev 36837)
@@ -55,33 +55,19 @@
 # quiet output for Makefiles, 'make -s' helps too
 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
 
-# ignore system set flag, use our own
-# must be before project(...)
-# if the user wants to add their own its ok after first run.
-if(DEFINED CMAKE_C_STANDARD_LIBRARIES)
-	set(_reset_standard_libraries OFF)
-else()
-	set(_reset_standard_libraries ON)
-endif()
+#-----------------------------------------------------------------------------
+# Load some macros.
+include(build_files/cmake/macros.cmake)
 
 
-project(Blender)
+#-----------------------------------------------------------------------------
+# Initialize project.
 
+blender_project_hack_pre()
 
-if (_reset_standard_libraries)
-	# Must come after project(...)
-	#
-	# MINGW workaround for -ladvapi32 being included which surprisingly causes
-	# string formatting of floats, eg: printf("%.*f", 3, value). to crash blender
-	# with a meaningless stack trace. by overriding this flag we ensure we only
-	# have libs we define and that cmake & scons builds match.
-	set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
-	set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
-	mark_as_advanced(CMAKE_C_STANDARD_LIBRARIES)
-	mark_as_advanced(CMAKE_CXX_STANDARD_LIBRARIES)
-endif()
-unset(_reset_standard_libraries)
+project(Blender)
 
+blender_project_hack_post()
 
 enable_testing()
 
@@ -92,10 +78,6 @@
 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
 
 #-----------------------------------------------------------------------------
-# Load some macros.
-include(build_files/cmake/macros.cmake)
-
-#-----------------------------------------------------------------------------
 # Set default config options
 
 get_blender_version()
@@ -984,6 +966,12 @@
 #-----------------------------------------------------------------------------
 # Common.
 
+if(APPLE OR WIN32)
+	if(NOT IS_DIRECTORY "${LIBDIR}")
+		message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
+	endif()
+endif()
+
 if(WITH_RAYOPTIMIZATION)
 	if(CMAKE_COMPILER_IS_GNUCC)
 		if(SUPPORT_SSE_BUILD)

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake	2011-05-23 14:51:31 UTC (rev 36836)
+++ trunk/blender/build_files/cmake/macros.cmake	2011-05-23 14:56:14 UTC (rev 36837)
@@ -388,3 +388,71 @@
 
 	# message(STATUS "Version (Internal): ${BLENDER_VERSION}.${BLENDER_SUBVERSION}, Version (external): ${BLENDER_VERSION}${BLENDER_VERSION_CHAR}-${BLENDER_VERSION_CYCLE}")
 endmacro()
+
+
+# hacks to override initial project settings
+# these macros must be called directly before/after project(Blender) 
+macro(blender_project_hack_pre)
+	# ----------------
+	# MINGW HACK START
+	# ignore system set flag, use our own
+	# must be before project(...)
+	# if the user wants to add their own its ok after first run.
+	if(DEFINED CMAKE_C_STANDARD_LIBRARIES)
+		set(_reset_standard_libraries OFF)
+	else()
+		set(_reset_standard_libraries ON)
+	endif()
+
+	# ------------------
+	# GCC -O3 HACK START
+	# needed because O3 can cause problems but
+	# allow the builder to set O3 manually after.
+	if(DEFINED CMAKE_C_FLAGS_RELEASE)
+		set(_reset_standard_cflags_rel OFF)
+	else()
+		set(_reset_standard_cflags_rel ON)
+	endif()
+	if(DEFINED CMAKE_CXX_FLAGS_RELEASE)
+		set(_reset_standard_cxxflags_rel OFF)
+	else()
+		set(_reset_standard_cxxflags_rel ON)
+	endif()
+endmacro()
+
+
+macro(blender_project_hack_post)
+	# --------------
+	# MINGW HACK END
+	if (_reset_standard_libraries)
+		# Must come after project(...)
+		#
+		# MINGW workaround for -ladvapi32 being included which surprisingly causes
+		# string formatting of floats, eg: printf("%.*f", 3, value). to crash blender
+		# with a meaningless stack trace. by overriding this flag we ensure we only
+		# have libs we define and that cmake & scons builds match.
+		set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
+		set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
+		mark_as_advanced(CMAKE_C_STANDARD_LIBRARIES)
+		mark_as_advanced(CMAKE_CXX_STANDARD_LIBRARIES)
+	endif()
+	unset(_reset_standard_libraries)
+
+
+	# ----------------
+	# GCC -O3 HACK END
+	if(_reset_standard_cflags_rel)
+		string(REGEX REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+		set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE)
+		mark_as_advanced(CMAKE_C_FLAGS_RELEASE)
+	endif()
+
+	if(_reset_standard_cxxflags_rel)
+		string(REGEX REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+		set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "" FORCE)
+		mark_as_advanced(CMAKE_CXX_FLAGS_RELEASE)
+	endif()
+
+	unset(_reset_standard_cflags_rel)
+	unset(_reset_standard_cxxflags_rel)
+endmacro()




More information about the Bf-blender-cvs mailing list