[Bf-blender-cvs] [e6c6b5d] buildbot_linux_cmake: Buildbot: Link statically against gomp for CMake Linux slave

Sergey Sharybin noreply at git.blender.org
Tue Dec 1 13:11:26 CET 2015


Commit: e6c6b5dada6793e0bfd7359d378622ddc639a6c6
Author: Sergey Sharybin
Date:   Tue Dec 1 13:08:11 2015 +0100
Branches: buildbot_linux_cmake
https://developer.blender.org/rBe6c6b5dada6793e0bfd7359d378622ddc639a6c6

Buildbot: Link statically against gomp for CMake Linux slave

This commit added a new option to link statically against OpenMP which
is only available on Linux and shall be used with real care.

It's a bit too much tricky to guarantee proper cflags and library
linking order without this extra option.

===================================================================

M	CMakeLists.txt
M	build_files/buildbot/config/blender_linux.cmake
M	build_files/cmake/macros.cmake

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 10c2f65..ed8fbcd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -267,6 +267,10 @@ if(NOT WITH_AUDASPACE)
 endif()
 
 option(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
+if(UNIX AND NOT APPLE)
+	option(WITH_OPENMP_STATIC "Link OpenMP statically (only used by the release environment)" OFF)
+	mark_as_advanced(WITH_OPENMP_STATIC)
+endif()
 
 if(WITH_X11)
 	option(WITH_X11_XINPUT    "Enable X11 Xinput (tablet support and unicode input)"  ON)
@@ -2458,8 +2462,16 @@ endif()
 if(WITH_OPENMP)
 	find_package(OpenMP)
 	if(OPENMP_FOUND)
-		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+		if(NOT WITH_OPENMP_STATIC)
+			set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+			set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+		else()
+			add_definitions("${OpenMP_C_FLAGS}")
+
+			execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libgomp.a
+			                OUTPUT_VARIABLE OpenMP_LIBRARIES
+			                OUTPUT_STRIP_TRAILING_WHITESPACE)
+		endif()
 	else()
 		set(WITH_OPENMP OFF)
 	endif()
diff --git a/build_files/buildbot/config/blender_linux.cmake b/build_files/buildbot/config/blender_linux.cmake
index fa44e04..1a344cb 100644
--- a/build_files/buildbot/config/blender_linux.cmake
+++ b/build_files/buildbot/config/blender_linux.cmake
@@ -62,6 +62,8 @@ set(WITH_JACK_DYNLOAD        ON  CACHE BOOL "" FORCE)
 set(WITH_SDL_DYNLOAD         ON  CACHE BOOL "" FORCE)
 set(WITH_SYSTEM_GLEW         OFF CACHE BOOL "" FORCE)
 
+set(WITH_OPENMP_STATIC       ON  CACHE BOOL "" FORCE)
+
 set(WITH_PYTHON_INSTALL_NUMPY    ON CACHE BOOL "" FORCE)
 set(WITH_PYTHON_INSTALL_REQUESTS ON CACHE BOOL "" FORCE)
 
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 90c4fbd..de6dea7 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -452,6 +452,11 @@ function(setup_liblinks
 	if(WIN32 AND NOT UNIX)
 		target_link_libraries(${target} ${PTHREADS_LIBRARIES})
 	endif()
+	if(UNIX AND NOT APPLE)
+		if(WITH_OPENMP_STATIC)
+			target_link_libraries(${target} ${OpenMP_LIBRARIES})
+		endif()
+	endif()
 
 	# We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES dpeends on them..
 	if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV)




More information about the Bf-blender-cvs mailing list