[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