[Bf-blender-cvs] [ce92e3d5532] blender-v2.82-release: Fix: Building with clang on windows.

Ray Molenkamp noreply at git.blender.org
Tue Jan 21 17:47:35 CET 2020


Commit: ce92e3d5532c3d5e26c7a2671ecc5997790f792f
Author: Ray Molenkamp
Date:   Tue Jan 14 11:12:14 2020 -0700
Branches: blender-v2.82-release
https://developer.blender.org/rBce92e3d5532c3d5e26c7a2671ecc5997790f792f

Fix: Building with clang on windows.

The USD landing broke building with clang on windows
due to a couple of reasons:

1) Some incompatibilities in their headers [1] only one
of them was important for us and is included in our patchset
now.

2) clangs lld wanted the full path to the libusd_b library
when using the whole archive link option, while msvc can
figure it out from just the library name.

Tested with clang/msvc and msbuild and ninja generators

[1] https://github.com/PixarAnimationStudios/USD/issues/1030

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

M	build_files/build_environment/patches/usd.diff
M	build_files/cmake/macros.cmake
M	build_files/cmake/platform/platform_win32.cmake

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

diff --git a/build_files/build_environment/patches/usd.diff b/build_files/build_environment/patches/usd.diff
index 8afd9700e59..0a98fa220b2 100644
--- a/build_files/build_environment/patches/usd.diff
+++ b/build_files/build_environment/patches/usd.diff
@@ -109,3 +109,15 @@ diff -x .git -ur usd.orig/pxr/usd/CMakeLists.txt external_usd/pxr/usd/CMakeLists
 +else()
 +    message(STATUS "Skipping commandline tools because PXR_BUILD_USD_TOOLS=OFF")
 +endif()
+diff -Naur external_usd_orig/pxr/base/lib/tf/preprocessorUtils.h external_usd/pxr/base/lib/tf/preprocessorUtils.h
+--- external_usd_orig/pxr/base/lib/tf/preprocessorUtils.h	2019-10-24 14:39:53 -0600
++++ external_usd/pxr/base/lib/tf/preprocessorUtils.h	2020-01-14 09:30:18 -0700
+@@ -189,7 +189,7 @@
+ /// Exapnds to 1 if the argument is a tuple, and 0 otherwise.
+ /// \ingroup group_tf_Preprocessor
+ /// \hideinitializer
+-#if defined(ARCH_OS_WINDOWS)
++#if defined(ARCH_COMPILER_MSVC)
+     #define TF_PP_IS_TUPLE(sequence) \
+         BOOST_VMD_IS_TUPLE(sequence)
+ #else
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 3fe9ae90a79..23ed5b6cbfb 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -481,10 +481,10 @@ function(setup_liblinks
     # Source: https://github.com/PixarAnimationStudios/USD/blob/master/BUILDING.md#linking-whole-archives
     if(WIN32)
       target_link_libraries(${target} ${USD_LIBRARIES})
-      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /WHOLEARCHIVE:libusd_m_d.lib")
-      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /WHOLEARCHIVE:libusd_m.lib")
-      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /WHOLEARCHIVE:libusd_m.lib")
-      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL " /WHOLEARCHIVE:libusd_m.lib")
+      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /WHOLEARCHIVE:${USD_DEBUG_LIB}")
+      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
+      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
+      set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
     elseif(CMAKE_COMPILER_IS_GNUCXX)
       target_link_libraries(${target} -Wl,--whole-archive ${USD_LIBRARIES} -Wl,--no-whole-archive)
     elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 196571b753d..f485490f300 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -660,9 +660,11 @@ if(WITH_USD)
   if(NOT USD_FOUND)
     set(USD_FOUND ON)
     set(USD_INCLUDE_DIRS ${LIBDIR}/usd/include)
+    set(USD_RELEASE_LIB ${LIBDIR}/usd/lib/libusd_m.lib)
+    set(USD_DEBUG_LIB ${LIBDIR}/usd/lib/libusd_m_d.lib)
     set(USD_LIBRARIES
-        debug ${LIBDIR}/usd/lib/libusd_m_d.lib
-        optimized ${LIBDIR}/usd/lib/libusd_m.lib
+        debug ${USD_DEBUG_LIB}
+        optimized ${USD_RELEASE_LIB}
     )
   endif()
 endif()



More information about the Bf-blender-cvs mailing list