Commit: 8e6c6e2ba103b16a5a7de766647e105c80237dd1
Author: Ray Molenkamp
Date:   Tue Jan 14 11:12:14 2020 -0700
Branches: master
https://developer.blender.org/rB8e6c6e2ba103b16a5a7de766647e105c80237dd1

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 3b6b4720a7c..64089fd3406 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -470,10 +470,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 c3d9b551926..b57fe5c9cda 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()

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to