From ce92e3d5532c3d5e26c7a2671ecc5997790f792f Mon Sep 17 00:00:00 2001 From: Ray Molenkamp Date: Tue, 14 Jan 2020 11:12:14 -0700 Subject: 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 --- build_files/build_environment/patches/usd.diff | 12 ++++++++++++ build_files/cmake/macros.cmake | 8 ++++---- build_files/cmake/platform/platform_win32.cmake | 6 ++++-- 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'build_files') 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() -- cgit v1.2.3