[Bf-blender-cvs] [82a04687a79] tmp_libupdate_34: Updates for debug builds on windows

Ray Molenkamp noreply at git.blender.org
Fri Aug 5 21:10:20 CEST 2022


Commit: 82a04687a7966b88698446629e705b457d99bcc5
Author: Ray Molenkamp
Date:   Fri Aug 5 13:09:40 2022 -0600
Branches: tmp_libupdate_34
https://developer.blender.org/rB82a04687a7966b88698446629e705b457d99bcc5

Updates for debug builds on windows

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

M	build_files/build_environment/cmake/boost.cmake
M	build_files/build_environment/cmake/options.cmake
M	build_files/build_environment/cmake/python.cmake
M	build_files/build_environment/cmake/usd.cmake
M	build_files/build_environment/patches/usd.diff
M	build_files/cmake/platform/platform_win32.cmake
M	source/blender/io/usd/CMakeLists.txt
M	source/creator/CMakeLists.txt
M	source/creator/creator.c

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

diff --git a/build_files/build_environment/cmake/boost.cmake b/build_files/build_environment/cmake/boost.cmake
index 0dd9cdd41d2..166f63a7b41 100644
--- a/build_files/build_environment/cmake/boost.cmake
+++ b/build_files/build_environment/cmake/boost.cmake
@@ -3,7 +3,10 @@
 if(WIN32)
   set(BOOST_CONFIGURE_COMMAND bootstrap.bat)
   set(BOOST_BUILD_COMMAND b2)
-  set(BOOST_BUILD_OPTIONS runtime-link=shared )
+  set(BOOST_BUILD_OPTIONS runtime-link=shared)
+  if(BUILD_MODE STREQUAL Debug)
+    list(APPEND BOOST_BUILD_OPTIONS python-debugging=on variant=debug)
+  endif()
   set(BOOST_HARVEST_CMD   ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/lib/ ${HARVEST_TARGET}/boost/lib/ )
   if(BUILD_MODE STREQUAL Release)
     set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-${BOOST_VERSION_NODOTS_SHORT}/ ${HARVEST_TARGET}/boost/include/)
diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake
index d67be148aa5..38280be1807 100644
--- a/build_files/build_environment/cmake/options.cmake
+++ b/build_files/build_environment/cmake/options.cmake
@@ -47,6 +47,11 @@ if(WIN32)
     set(COMMON_MSVC_FLAGS "/Wv:18") #some deps with warnings as error aren't quite ready for dealing with the new 2017 warnings.
   endif()
   string(APPEND COMMON_MSVC_FLAGS " /bigobj")
+  # To keep MSVC from oversubscribing the CPU, force it to single threaded mode
+  # msbuild/ninja will queue as many compile units as there are cores, no need for
+  # msvc to be internally threading as well.
+  string(APPEND COMMON_MSVC_FLAGS " /cgthreads1 ")
+
   if(WITH_OPTIMIZED_DEBUG)
     set(BLENDER_CMAKE_C_FLAGS_DEBUG "/MDd ${COMMON_MSVC_FLAGS} /O2 /Ob2 /DNDEBUG /DPSAPI_VERSION=2 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
   else()
@@ -212,3 +217,11 @@ if(MSVC)
 endif()
 
 set(CMAKE_INSTALL_MESSAGE LAZY)
+
+# On windows we sometimes want to build with ninja, but not all projects quite
+# yet, so for select project we pass PLATFORM_ALT_GENERATOR as the generator
+if(WIN32)
+  set(PLATFORM_ALT_GENERATOR "Ninja")
+else()
+  set(PLATFORM_ALT_GENERATOR "Unix Makefiles")
+endif()
diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake
index 3f45333ed3d..00b1c78b943 100644
--- a/build_files/build_environment/cmake/python.cmake
+++ b/build_files/build_environment/cmake/python.cmake
@@ -96,3 +96,17 @@ if(UNIX)
     external_zlib
   )
 endif()
+
+if(WIN32)
+  if(BUILD_MODE STREQUAL Debug)
+    ExternalProject_Add_Step(external_python after_install
+      # Boost can't keep it self from linking release python
+      # in a debug configuration even if all options are set
+      # correctly to instruct it to use the debug version
+      # of python. So just copy the debug imports file over
+      # and call it a day...
+      COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/python/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib ${LIBDIR}/python/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.lib
+      DEPENDEES install
+    )
+  endif()
+endif()
diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake
index 8f1a5a6ec7f..5a34d7584f9 100644
--- a/build_files/build_environment/cmake/usd.cmake
+++ b/build_files/build_environment/cmake/usd.cmake
@@ -14,9 +14,12 @@ if(WIN32)
     -DCMAKE_CXX_FLAGS=${USD_CXX_FLAGS}
     -D_PXR_CXX_DEFINITIONS=/DBOOST_ALL_NO_LIB
     -DCMAKE_SHARED_LINKER_FLAGS_INIT=/LIBPATH:${LIBDIR}/tbb/lib
+    -DPython_FIND_REGISTRY=NEVER
+    -DPYTHON_INCLUDE_DIRS=${LIBDIR}/python/include
+    -DPYTHON_LIBRARY=${LIBDIR}/python/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}${LIBEXT}
   )
   if(BUILD_MODE STREQUAL Debug)
-    list(APPEND USD_PLATFORM_ARGS -DPXR_USE_DEBUG_PYTHON=On)
+    list(APPEND USD_PLATFORM_FLAGS -DPXR_USE_DEBUG_PYTHON=ON)
   endif()
 endif()
 if(UNIX)
@@ -83,6 +86,7 @@ ExternalProject_Add(external_usd
   URL file://${PACKAGE_DIR}/${USD_FILE}
   DOWNLOAD_DIR ${DOWNLOAD_DIR}
   URL_HASH ${USD_HASH_TYPE}=${USD_HASH}
+  CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
   PREFIX ${BUILD_DIR}/usd
   PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd.diff
   CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/usd -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${USD_EXTRA_ARGS}
@@ -109,15 +113,15 @@ endif()
 if(WIN32)
   if(BUILD_MODE STREQUAL Release)
     ExternalProject_Add_Step(external_usd after_install
-      COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/ ${HARVEST_TARGET}/usd
-      COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/Release/usd_usd_m.lib ${HARVEST_TARGET}/usd/lib/usd_usd_m.lib
+      COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd ${HARVEST_TARGET}/usd
       DEPENDEES install
     )
   endif()
   if(BUILD_MODE STREQUAL Debug)
     ExternalProject_Add_Step(external_usd after_install
-      COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/lib ${HARVEST_TARGET}/usd/lib
-      COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/Debug/usd_usd_m_d.lib ${HARVEST_TARGET}/usd/lib/usd_usd_m_d.lib
+      COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/lib/python ${HARVEST_TARGET}/usd/lib/python
+      COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/usd/lib/usd_usd_ms_d.dll ${HARVEST_TARGET}/usd/lib/usd_usd_ms_d.dll
+      COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/usd/lib/usd_usd_ms_d.lib ${HARVEST_TARGET}/usd/lib/usd_usd_ms_d.lib
       DEPENDEES install
     )
   endif()
diff --git a/build_files/build_environment/patches/usd.diff b/build_files/build_environment/patches/usd.diff
index 3d0aa4498b7..f627d2726ab 100644
--- a/build_files/build_environment/patches/usd.diff
+++ b/build_files/build_environment/patches/usd.diff
@@ -100,3 +100,30 @@ index 517561f..fda5a1f 100644
  
  /// A simple timer class for measuring an interval of time using the
  /// ArchTickTimer facilities.
+diff -Naur usd_orig/pxr/usdImaging/CMakeLists.txt external_usd/pxr/usdImaging/CMakeLists.txt
+--- usd_orig/pxr/usdImaging/CMakeLists.txt      2022-02-18 14:49:09 -0700
++++ external_usd/pxr/usdImaging/CMakeLists.txt  2022-08-05 10:06:44 -0600
+@@ -6,7 +6,7 @@
+     usdVolImaging
+     usdAppUtils
+     usdviewq
+-    bin
++#    bin
+     plugin
+ )
+
+diff -Naur orig/cmake/macros/Private.cmake external_usd/cmake/macros/Private.cmake
+--- orig/cmake/macros/Private.cmake     2022-02-18 14:49:09 -0700
++++ external_usd/cmake/macros/Private.cmake     2022-08-05 10:42:03 -0600
+@@ -900,8 +900,10 @@
+         return()
+     endif()
+
+-    if (WIN32 AND PXR_USE_DEBUG_PYTHON)
++    if (WIN32 AND PXR_USE_DEBUG_PYTHON AND NOT CMAKE_DEBUG_POSTFIX)
+         # On Windows when compiling with debug python the library must be named with _d.
++        # Blender: but this can be skipped if CMAKE_DEBUG_POSTFIX is set, it knows
++        # what it is doing and we don't want libraries ending in _d_d.pyd 
+         set(LIBRARY_NAME "_${NAME}_d")
+     else()
+         set(LIBRARY_NAME "_${NAME}")
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index bd15cb6bedd..da58c02d923 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -546,7 +546,7 @@ if(WITH_BOOST)
       # If the new library names do not exist fall back to the old ones
       # to ease the transition period between the libs.
       set(BOOST_POSTFIX "vc141-mt-x64-${BOOST_VERSION}.lib")
-      set(BOOST_DEBUG_POSTFIX "vc141-mt-gd-x64-${BOOST_VERSION}.lib")
+      set(BOOST_DEBUG_POSTFIX "vc141-mt-gyd-x64-${BOOST_VERSION}.lib")
     endif()
     set(BOOST_LIBRARIES
       optimized ${BOOST_LIBPATH}/boost_date_time-${BOOST_POSTFIX}
@@ -555,7 +555,6 @@ if(WITH_BOOST)
       optimized ${BOOST_LIBPATH}/boost_system-${BOOST_POSTFIX}
       optimized ${BOOST_LIBPATH}/boost_thread-${BOOST_POSTFIX}
       optimized ${BOOST_LIBPATH}/boost_chrono-${BOOST_POSTFIX}
-      optimized ${BOOST_LIBPATH}/boost_python310-${BOOST_POSTFIX}
       debug ${BOOST_LIBPATH}/boost_date_time-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_LIBPATH}/boost_filesystem-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_LIBPATH}/boost_regex-${BOOST_DEBUG_POSTFIX}
@@ -563,6 +562,12 @@ if(WITH_BOOST)
       debug ${BOOST_LIBPATH}/boost_thread-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_LIBPATH}/boost_chrono-${BOOST_DEBUG_POSTFIX}
     )
+    if(WITH_USD)
+      set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
+        debug ${BOOST_LIBPATH}/boost_python310-${BOOST_DEBUG_POSTFIX}
+        optimized ${BOOST_LIBPATH}/boost_python310-${BOOST_POSTFIX}
+      )
+    endif()
     if(WITH_CYCLES AND WITH_CYCLES_OSL)
       set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
         optimized ${BOOST_LIBPATH}/boost_wave-${BOOST_POSTFIX}
diff --git a/source/blender/io/usd/CMakeLists.txt b/source/blender/io/usd/CMakeLists.txt
index c100aef3dc8..e2c4312cb49 100644
--- a/source/blender/io/usd/CMakeLists.txt
+++ b/source/blender/io/usd/CMakeLists.txt
@@ -9,7 +9,7 @@ if(UNIX AND NOT APPLE)
   add_definitions(-D_GLIBCXX_PERMIT_BACKWARD_HASH)
 endif()
 if(WIN32)
-  add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
+  add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN -DBOOST_DEBUG_PYTHON)
 endif()
 add_definitions(-DBOOST_ALL_NO_LIB)
 
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index ddcb2a36fc5..a7b61db22a4 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -782,28 +782,29 @@ elseif(WIN32)
     install(
           FILES ${LIBDIR}/usd/lib/usd_usd_ms.dll
           DESTINATION "."
+          CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
+    )
+    install(
+          FILES ${LIBDIR}/usd/lib/usd_usd_ms_d.dll
+          DESTINATION "."
+          CONFIGURATIONS Debug
     )
+
   endif()
   if(WITH_BOOST)
     install(
-          FILES
-            ${LIBDIR}/boost/lib/boost_atomic-vc142-mt-x64-1_78.dll
-            ${LIBDIR}/boost/lib/boost_chrono-vc142-mt-x64-1_78.dll
-            ${LIBDIR}/boost/lib/boost_date_time-vc142-mt-x64-1_78.dll
-            ${LIBDIR}/boost/lib/boost_filesystem-vc142-mt-x64-1_78.dll
-   

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list