diff options
Diffstat (limited to 'build_files/build_environment')
25 files changed, 441 insertions, 199 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index ef3c0388c29..a50a2af1755 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later -#################################################################################################### +################################################################################################## # # This is a build system used by platform maintainers to build library dependencies on # Windows, macOS and Linux. @@ -22,7 +22,7 @@ # Install compiler cmake autoconf automake libtool yasm tcl # Run "make deps" from main Blender directory # -#################################################################################################### +################################################################################################## project("BlenderDependencies") cmake_minimum_required(VERSION 3.5) @@ -32,7 +32,8 @@ endif() include(ExternalProject) include(cmake/check_software.cmake) include(cmake/options.cmake) -# versions.cmake needs to be included after options.cmake due to the BLENDER_PLATFORM_ARM variable being needed. +# `versions.cmake` needs to be included after `options.cmake` +# due to the `BLENDER_PLATFORM_ARM` variable being needed. include(cmake/versions.cmake) include(cmake/boost_build_options.cmake) include(cmake/download.cmake) @@ -43,7 +44,7 @@ if(ENABLE_MINGW64) else() set(mingw_LIBDIR ${LIBDIR}) endif() - +include(cmake/ssl.cmake) include(cmake/zlib.cmake) include(cmake/zstd.cmake) include(cmake/openal.cmake) @@ -90,7 +91,7 @@ include(cmake/usd.cmake) include(cmake/openvdb.cmake) include(cmake/potrace.cmake) include(cmake/haru.cmake) -# Boost needs to be included after python.cmake due to the PYTHON_BINARY variable being needed. +# Boost needs to be included after `python.cmake` due to the PYTHON_BINARY variable being needed. include(cmake/boost.cmake) include(cmake/pugixml.cmake) include(cmake/ispc.cmake) @@ -120,6 +121,7 @@ endif() include(cmake/expat.cmake) include(cmake/pystring.cmake) include(cmake/yamlcpp.cmake) +include(cmake/minizipng.cmake) include(cmake/opencolorio.cmake) if(BLENDER_PLATFORM_ARM) @@ -167,7 +169,6 @@ if(UNIX) include(cmake/bzip2.cmake) include(cmake/ffi.cmake) include(cmake/lzma.cmake) - include(cmake/ssl.cmake) include(cmake/sqlite.cmake) endif() @@ -179,6 +180,8 @@ if(UNIX AND NOT APPLE) include(cmake/wayland.cmake) include(cmake/wayland_libdecor.cmake) endif() - +include(cmake/shaderc_deps.cmake) +include(cmake/shaderc.cmake) +include(cmake/vulkan.cmake) include(cmake/harvest.cmake) include(cmake/cve_check.cmake) diff --git a/build_files/build_environment/cmake/cve_check.csv.in b/build_files/build_environment/cmake/cve_check.csv.in index 734a24f8c77..946dda5ab17 100644 --- a/build_files/build_environment/cmake/cve_check.csv.in +++ b/build_files/build_environment/cmake/cve_check.csv.in @@ -17,6 +17,12 @@ vendor,product,version,cve_number,remarks,comment @TIFF_ID@,CVE-2022-2521,Ignored,issue in tiff command line tool not used by blender @TIFF_ID@,CVE-2022-2953,Ignored,issue in tiff command line tool not used by blender @TIFF_ID@,CVE-2022-34526,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3570,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3597,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3598,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3599,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3626,Ignored,issue in tiff command line tool not used by blender +@TIFF_ID@,CVE-2022-3627,Ignored,issue in tiff command line tool not used by blender @XML2_ID@,CVE-2016-3709,Ignored,not affecting blender and not considered a security issue upstream @GMP_ID@,CVE-2021-43618,Mitigated,patched using upstream commit 561a9c25298e @SQLITE_ID@,CVE-2022-35737,Ignored,only affects SQLITE_ENABLE_STAT4 compile option not used by blender or python diff --git a/build_files/build_environment/cmake/download.cmake b/build_files/build_environment/cmake/download.cmake index ea3d2768784..f2681bd33d6 100644 --- a/build_files/build_environment/cmake/download.cmake +++ b/build_files/build_environment/cmake/download.cmake @@ -87,6 +87,7 @@ download_source(OPENSUBDIV) download_source(SDL) download_source(OPENCOLLADA) download_source(OPENCOLORIO) +download_source(MINIZIPNG) download_source(LLVM) download_source(OPENMP) download_source(OPENIMAGEIO) @@ -165,3 +166,9 @@ download_source(OCLOC) download_source(AOM) download_source(FRIBIDI) download_source(HARFBUZZ) +download_source(SHADERC) +download_source(SHADERC_SPIRV_TOOLS) +download_source(SHADERC_SPIRV_HEADERS) +download_source(SHADERC_GLSLANG) +download_source(VULKAN_HEADERS) +download_source(VULKAN_LOADER) diff --git a/build_files/build_environment/cmake/dpcpp.cmake b/build_files/build_environment/cmake/dpcpp.cmake index 27203a77d71..ef6fc9c40c9 100644 --- a/build_files/build_environment/cmake/dpcpp.cmake +++ b/build_files/build_environment/cmake/dpcpp.cmake @@ -84,8 +84,11 @@ ExternalProject_Add(external_dpcpp SOURCE_SUBDIR llvm LIST_SEPARATOR ^^ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/dpcpp ${DPCPP_CMAKE_FLAGS} ${DPCPP_EXTRA_ARGS} - #CONFIGURE_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py ${DPCPP_CONFIGURE_ARGS} - #BUILD_COMMAND echo "." #${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py + # CONFIGURE_COMMAND + # ${PYTHON_BINARY} + # ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py ${DPCPP_CONFIGURE_ARGS} + # BUILD_COMMAND + # echo "." # ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py INSTALL_COMMAND ${CMAKE_COMMAND} --build . -- deploy-sycl-toolchain PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/dpcpp/src/external_dpcpp < ${PATCH_DIR}/dpcpp.diff INSTALL_DIR ${LIBDIR}/dpcpp diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 2714979d869..6616c675e9b 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -192,6 +192,9 @@ harvest(openimagedenoise/include openimagedenoise/include "*") harvest(openimagedenoise/lib openimagedenoise/lib "*.a") harvest(embree/include embree/include "*.h") harvest(embree/lib embree/lib "*.a") +harvest(openpgl/include openpgl/include "*.h") +harvest(openpgl/lib openpgl/lib "*.a") +harvest(openpgl/lib/cmake/openpgl-${OPENPGL_SHORT_VERSION} openpgl/lib/cmake/openpgl "*.cmake") harvest(openjpeg/include/openjpeg-${OPENJPEG_SHORT_VERSION} openjpeg/include "*.h") harvest(openjpeg/lib openjpeg/lib "*.a") harvest(opensubdiv/include opensubdiv/include "*.h") diff --git a/build_files/build_environment/cmake/mesa.cmake b/build_files/build_environment/cmake/mesa.cmake index 8a40e8dc0de..9c0d613daa5 100644 --- a/build_files/build_environment/cmake/mesa.cmake +++ b/build_files/build_environment/cmake/mesa.cmake @@ -52,4 +52,5 @@ ExternalProject_Add(external_mesa add_dependencies( external_mesa ll + external_zlib ) diff --git a/build_files/build_environment/cmake/minizipng.cmake b/build_files/build_environment/cmake/minizipng.cmake new file mode 100644 index 00000000000..ae121a7a8aa --- /dev/null +++ b/build_files/build_environment/cmake/minizipng.cmake @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +set(MINIZIPNG_EXTRA_ARGS + -DMZ_FETCH_LIBS=OFF + -DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY} + -DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/ + # Because OCIO hardcodes a non standard include path + -DCMAKE_INSTALL_INCLUDEDIR=${LIBDIR}/minizipng/include/minizip-ng +) + +ExternalProject_Add(external_minizipng + URL file://${PACKAGE_DIR}/${MINIZIPNG_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${MINIZIPNG_HASH_TYPE}=${MINIZIPNG_HASH} + PREFIX ${BUILD_DIR}/minizipng + CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/minizipng ${DEFAULT_CMAKE_FLAGS} ${MINIZIPNG_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/minizipng +) diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index 4bdf56081bc..79d1ffa9c2e 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -15,8 +15,14 @@ set(OPENCOLORIO_EXTRA_ARGS -Dexpat_ROOT=${LIBDIR}/expat -Dyaml-cpp_ROOT=${LIBDIR}/yamlcpp + -Dyaml-cpp_VERSION=${YAMLCPP_VERSION} -Dpystring_ROOT=${LIBDIR}/pystring -DImath_ROOT=${LIBDIR}/imath + -Dminizip-ng_ROOT=${LIBDIR}/minizipng + -Dminizip-ng_INCLUDE_DIR=${LIBDIR}/minizipng/include + -Dminizip-ng_LIBRARY=${LIBDIR}/minizipng/lib/libminizip${LIBEXT} + -DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY} + -DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/ ) if(BLENDER_PLATFORM_ARM) @@ -30,7 +36,6 @@ if(WIN32) set(OPENCOLORIO_EXTRA_ARGS ${OPENCOLORIO_EXTRA_ARGS} -Dexpat_LIBRARY=${LIBDIR}/expat/lib/libexpatMD - -Dyaml-cpp_LIBRARY=${LIBDIR}/expat/lib/libyaml-cppmd.lib -DImath_LIBRARY=${LIBDIR}/imath/lib/imath${OPENEXR_VERSION_POSTFIX} -DCMAKE_CXX_FLAGS=-DIMATH_DLL ) @@ -57,6 +62,8 @@ add_dependencies( external_expat external_imath external_pystring + external_zlib + external_minizipng ) if(WIN32) @@ -64,16 +71,17 @@ if(WIN32) ExternalProject_Add_Step(external_opencolorio after_install COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencolorio/include ${HARVEST_TARGET}/opencolorio/include COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencolorio/lib ${HARVEST_TARGET}/opencolorio/lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/libyaml-cppmd.lib ${HARVEST_TARGET}/opencolorio/lib/libyaml-cpp.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/yaml-cpp.lib ${HARVEST_TARGET}/opencolorio/lib/yaml-cpp.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/expat/lib/libexpatMD.lib ${HARVEST_TARGET}/opencolorio/lib/libexpatMD.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/pystring/lib/pystring.lib ${HARVEST_TARGET}/opencolorio/lib/pystring.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/minizipng/lib/libminizip.lib ${HARVEST_TARGET}/opencolorio/lib/libminizip.lib DEPENDEES install ) endif() if(BUILD_MODE STREQUAL Debug) ExternalProject_Add_Step(external_opencolorio after_install COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencolorio/lib/Opencolorio.lib ${HARVEST_TARGET}/opencolorio/lib/OpencolorIO_d.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/libyaml-cppmdd.lib ${HARVEST_TARGET}/opencolorio/lib/libyaml-cpp_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/yaml-cppd.lib ${HARVEST_TARGET}/opencolorio/lib/yaml-cppd.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/expat/lib/libexpatdMD.lib ${HARVEST_TARGET}/opencolorio/lib/libexpatdMD.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/pystring/lib/pystring.lib ${HARVEST_TARGET}/opencolorio/lib/pystring_d.lib DEPENDEES install diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake index 50867fadff4..3d3e34e8444 100644 --- a/build_files/build_environment/cmake/options.cmake +++ b/build_files/build_environment/cmake/options.cmake @@ -21,8 +21,8 @@ else() endif() set(DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE STRING "Path for downloaded files") -# This path must be hard-coded like this, so that the GNUmakefile knows where it is and can pass it to make_source_archive.py: -set(PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages") + +set(PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages" CACHE PATH "default path for downloaded packages") option(PACKAGE_USE_UPSTREAM_SOURCES "Use sources upstream to download the package sources, when OFF the blender mirror will be used" ON) file(TO_CMAKE_PATH ${DOWNLOAD_DIR} DOWNLOAD_DIR) diff --git a/build_files/build_environment/cmake/opus.cmake b/build_files/build_environment/cmake/opus.cmake index f4f77749e00..c5d1d207805 100644 --- a/build_files/build_environment/cmake/opus.cmake +++ b/build_files/build_environment/cmake/opus.cmake @@ -9,6 +9,7 @@ ExternalProject_Add(external_opus --disable-shared --enable-static --with-pic + --disable-maintainer-mode BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/opus/src/external_opus/ && make -j${MAKE_THREADS} INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/opus/src/external_opus/ && make install INSTALL_DIR ${LIBDIR}/opus diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index c56f1e62419..c9a0d5ab6af 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -16,10 +16,12 @@ if(WIN32) set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals) set(ZLIB_SOURCE_FOLDER ${BUILD_DIR}/zlib/src/external_zlib) + set(SSL_SOURCE_FOLDER ${BUILD_DIR}/ssl/src/external_ssl) set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals) cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS) cmake_to_dos_path(${ZLIB_SOURCE_FOLDER} ZLIB_SOURCE_FOLDER_DOS) + cmake_to_dos_path(${SSL_SOURCE_FOLDER} SSL_SOURCE_FOLDER_DOS) cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS) ExternalProject_Add(external_python @@ -31,11 +33,14 @@ if(WIN32) # that beyond placing some code in their externals dir before it tries. # the foldernames *HAVE* to match the ones inside pythons get_externals.cmd. # python 3.10.8 still ships zlib 1.2.12, replace it with our 1.2.13 - # copy until they update. + # copy until they update. Same rules apply to openssl foldernames HAVE to match + # regardless of the version actually in there. CONFIGURE_COMMAND mkdir ${PYTHON_EXTERNALS_FOLDER_DOS} && mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\zlib-1.2.12 ${ZLIB_SOURCE_FOLDER_DOS} && - ${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.2.12/zconf.h - BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p x64 -c ${BUILD_MODE} + mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\openssl-1.1.1q ${SSL_SOURCE_FOLDER_DOS} && + ${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.2.12/zconf.h && + ${PATCH_CMD} --verbose -p1 -d ${BUILD_DIR}/python/src/external_python < ${PATCH_DIR}/python_windows.diff + BUILD_COMMAND ${CONFIGURE_ENV_MSVC} && cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && set LDFLAGS=/DEBUG && call prepare_ssl.bat && call build.bat -e -p x64 -c ${BUILD_MODE} INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-stable --include-pip --include-dev --include-launchers --include-venv --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python ) add_dependencies( @@ -96,15 +101,18 @@ else() INSTALL_DIR ${LIBDIR}/python) endif() +add_dependencies( + external_python + external_ssl + external_zlib +) if(UNIX) add_dependencies( external_python external_bzip2 external_ffi external_lzma - external_ssl external_sqlite - external_zlib ) endif() diff --git a/build_files/build_environment/cmake/setup_mingw64.cmake b/build_files/build_environment/cmake/setup_mingw64.cmake index fa65212e056..6f53edb38ea 100644 --- a/build_files/build_environment/cmake/setup_mingw64.cmake +++ b/build_files/build_environment/cmake/setup_mingw64.cmake @@ -1,10 +1,10 @@ # SPDX-License-Identifier: GPL-2.0-or-later -#################################################################################################################### +################################################################################################## # Mingw64 Builds -#################################################################################################################### +################################################################################################## # This installs mingw64+msys to compile ffmpeg/iconv/libsndfile/fftw3 -#################################################################################################################### +################################################################################################## message("LIBDIR = ${LIBDIR}") macro(cmake_to_msys_path MsysPath ResultingPath) diff --git a/build_files/build_environment/cmake/shaderc.cmake b/build_files/build_environment/cmake/shaderc.cmake new file mode 100644 index 00000000000..a5275837372 --- /dev/null +++ b/build_files/build_environment/cmake/shaderc.cmake @@ -0,0 +1,63 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ***** END GPL LICENSE BLOCK ***** +set(SHADERC_EXTRA_ARGS + -DSHADERC_SKIP_TESTS=On + -DSHADERC_SPIRV_TOOLS_DIR=${BUILD_DIR}/shaderc_spirv_tools/src/external_shaderc_spirv_tools + -DSHADERC_SPIRV_HEADERS_DIR=${BUILD_DIR}/shaderc_spirv_headers/src/external_shaderc_spirv_headers + -DSHADERC_GLSLANG_DIR=${BUILD_DIR}/shaderc_glslang/src/external_shaderc_glslang + -DCMAKE_DEBUG_POSTFIX=_d + -DPYTHON_EXECUTABLE=${PYTHON_BINARY} +) + +ExternalProject_Add(external_shaderc + URL file://${PACKAGE_DIR}/${SHADERC_FILE} + URL_HASH ${SHADERC_HASH_TYPE}=${SHADERC_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/shaderc + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/shaderc ${DEFAULT_CMAKE_FLAGS} ${SHADERC_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/shaderc +) + +add_dependencies( + external_shaderc + external_shaderc_spirv_tools + external_shaderc_spirv_headers + external_shaderc_glslang +) + + +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_shaderc after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/shaderc/include ${HARVEST_TARGET}/shaderc/include + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/shaderc/bin/shaderc_shared.dll ${HARVEST_TARGET}/shaderc/bin/shaderc_shared.dll + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/shaderc/lib/shaderc_shared.lib ${HARVEST_TARGET}/shaderc/lib/shaderc_shared.lib + + DEPENDEES install + ) + endif() + if(BUILD_MODE STREQUAL Debug) + ExternalProject_Add_Step(external_shaderc after_install + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/shaderc/bin/shaderc_shared_d.dll ${HARVEST_TARGET}/shaderc/bin/shaderc_shared_d.dll + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/shaderc/lib/shaderc_shared_d.lib ${HARVEST_TARGET}/shaderc/lib/shaderc_shared_d.lib + DEPENDEES install + ) + endif() +endif() + + diff --git a/build_files/build_environment/cmake/shaderc_deps.cmake b/build_files/build_environment/cmake/shaderc_deps.cmake new file mode 100644 index 00000000000..bfe14a55f5b --- /dev/null +++ b/build_files/build_environment/cmake/shaderc_deps.cmake @@ -0,0 +1,51 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ***** END GPL LICENSE BLOCK ***** + +# These are build time requirements for shaderc. We only have to unpack these +# shaderc will build them. + +ExternalProject_Add(external_shaderc_glslang + URL file://${PACKAGE_DIR}/${SHADERC_GLSLANG_FILE} + URL_HASH ${SHADERC_GLSLANG_HASH_TYPE}=${SHADERC_GLSLANG_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/shaderc_glslang + CONFIGURE_COMMAND echo . + BUILD_COMMAND echo . + INSTALL_COMMAND echo . +) + +ExternalProject_Add(external_shaderc_spirv_headers + URL file://${PACKAGE_DIR}/${SHADERC_SPIRV_HEADERS_FILE} + URL_HASH ${SHADERC_SPIRV_HEADERS_HASH_TYPE}=${SHADERC_SPIRV_HEADERS_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/shaderc_spirv_headers + CONFIGURE_COMMAND echo . + BUILD_COMMAND echo . + INSTALL_COMMAND echo . +) + +ExternalProject_Add(external_shaderc_spirv_tools + URL file://${PACKAGE_DIR}/${SHADERC_SPIRV_TOOLS_FILE} + URL_HASH ${SHADERC_SPIRV_TOOLS_HASH_TYPE}=${SHADERC_SPIRV_TOOLS_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/shaderc_spirv_tools + CONFIGURE_COMMAND echo . + BUILD_COMMAND echo . + INSTALL_COMMAND echo . +) + diff --git a/build_files/build_environment/cmake/ssl.cmake b/build_files/build_environment/cmake/ssl.cmake index 628187dc0ac..6241e2d44e6 100644 --- a/build_files/build_environment/cmake/ssl.cmake +++ b/build_files/build_environment/cmake/ssl.cmake @@ -3,33 +3,47 @@ set(SSL_CONFIGURE_COMMAND ./Configure) set(SSL_PATCH_CMD echo .) -if(APPLE) - set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}") - set(SSL_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/ssl/src/external_ssl < ${PATCH_DIR}/ssl.diff) +if(WIN32) + # Python will build this with its preferred build options and patches. We only need to unpack openssl + ExternalProject_Add(external_ssl + URL file://${PACKAGE_DIR}/${SSL_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} + PREFIX ${BUILD_DIR}/ssl + CONFIGURE_COMMAND echo "." + BUILD_COMMAND echo "." + INSTALL_COMMAND echo "." + INSTALL_DIR ${LIBDIR}/ssl + ) else() - if(BLENDER_PLATFORM_ARM) - set(SSL_OS_COMPILER "blender-linux-aarch64") - elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(SSL_EXTRA_ARGS enable-ec_nistp_64_gcc_128) - set(SSL_OS_COMPILER "blender-linux-x86_64") + if(APPLE) + set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}") + set(SSL_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/ssl/src/external_ssl < ${PATCH_DIR}/ssl.diff) else() - set(SSL_OS_COMPILER "blender-linux-x86") + if(BLENDER_PLATFORM_ARM) + set(SSL_OS_COMPILER "blender-linux-aarch64") + elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(SSL_EXTRA_ARGS enable-ec_nistp_64_gcc_128) + set(SSL_OS_COMPILER "blender-linux-x86_64") + else() + set(SSL_OS_COMPILER "blender-linux-x86") + endif() endif() -endif() -ExternalProject_Add(external_ssl - URL file://${PACKAGE_DIR}/${SSL_FILE} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} - PREFIX ${BUILD_DIR}/ssl - PATCH_COMMAND ${SSL_PATCH_CMD} - CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && ${SSL_CONFIGURE_COMMAND} --prefix=${LIBDIR}/ssl - --openssldir=${LIBDIR}/ssl - no-shared - no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms - --config=${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl.conf - ${SSL_OS_COMPILER} - BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make -j${MAKE_THREADS} - INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make install - INSTALL_DIR ${LIBDIR}/ssl -) + ExternalProject_Add(external_ssl + URL file://${PACKAGE_DIR}/${SSL_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} + PREFIX ${BUILD_DIR}/ssl + PATCH_COMMAND ${SSL_PATCH_CMD} + CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && ${SSL_CONFIGURE_COMMAND} --prefix=${LIBDIR}/ssl + --openssldir=${LIBDIR}/ssl + no-shared + no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms + --config=${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl.conf + ${SSL_OS_COMPILER} + BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make -j${MAKE_THREADS} + INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make install + INSTALL_DIR ${LIBDIR}/ssl + ) +endif()
\ No newline at end of file diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index 8601bd91f25..4abb368e740 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -122,8 +122,8 @@ if(WIN32) if(BUILD_MODE STREQUAL Debug) ExternalProject_Add_Step(external_usd after_install COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/lib/python ${HARVEST_TARGET}/usd/lib/debug/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 + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/usd/lib/usd_ms_d.dll ${HARVEST_TARGET}/usd/lib/usd_ms_d.dll + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/usd/lib/usd_ms_d.lib ${HARVEST_TARGET}/usd/lib/usd_ms_d.lib DEPENDEES install ) endif() diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index d822a380cab..eed43529381 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -114,9 +114,9 @@ set(ALEMBIC_HASH_TYPE MD5) set(ALEMBIC_FILE alembic-${ALEMBIC_VERSION}.tar.gz) SET(FREETYPE_CPE "cpe:2.3:a:freetype:freetype:${FREETYPE_VERSION}:*:*:*:*:*:*:*") -set(OPENSUBDIV_VERSION v3_4_4) +set(OPENSUBDIV_VERSION v3_5_0) set(OPENSUBDIV_URI https://github.com/PixarAnimationStudios/OpenSubdiv/archive/${OPENSUBDIV_VERSION}.tar.gz) -set(OPENSUBDIV_HASH 39ecc5caf0abebc943d1ce131855e76e) +set(OPENSUBDIV_HASH 230f5cd2911d6240e58a3773b9c6e5e4) set(OPENSUBDIV_HASH_TYPE MD5) set(OPENSUBDIV_FILE opensubdiv-${OPENSUBDIV_VERSION}.tar.gz) @@ -133,12 +133,18 @@ set(OPENCOLLADA_HASH ee7dae874019fea7be11613d07567493) set(OPENCOLLADA_HASH_TYPE MD5) set(OPENCOLLADA_FILE opencollada-${OPENCOLLADA_VERSION}.tar.gz) -set(OPENCOLORIO_VERSION 2.1.1) +set(OPENCOLORIO_VERSION 2.2.0) set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) -set(OPENCOLORIO_HASH 604f562e073f23d88ce89ed4f7f709ba) +set(OPENCOLORIO_HASH d58a5980adba2d89a363100a09daa5f3) set(OPENCOLORIO_HASH_TYPE MD5) set(OPENCOLORIO_FILE OpenColorIO-${OPENCOLORIO_VERSION}.tar.gz) +set(MINIZIPNG_VERSION 3.0.7) +set(MINIZIPNG_URI https://github.com/zlib-ng/minizip-ng/archive/${MINIZIPNG_VERSION}.tar.gz) +set(MINIZIPNG_HASH 09dcc8a9def348e1be9659e384c2cd55) +set(MINIZIPNG_HASH_TYPE MD5) +set(MINIZIPNG_FILE minizip-ng-${MINIZIPNG_VERSION}.tar.gz) + set(LLVM_VERSION 12.0.0) set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz) set(LLVM_HASH 5a4fab4d7fc84aefffb118ac2c8a4fc0) @@ -212,9 +218,9 @@ set(TBB_HASH_TYPE MD5) set(TBB_FILE oneTBB-${TBB_VERSION}.tar.gz) set(TBB_CPE "cpe:2.3:a:intel:threading_building_blocks:${TBB_YEAR}:*:*:*:*:*:*:*") -set(OPENVDB_VERSION 9.1.0) +set(OPENVDB_VERSION 10.0.0) set(OPENVDB_URI https://github.com/AcademySoftwareFoundation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz) -set(OPENVDB_HASH 8918de645a737734e577e16753325703) +set(OPENVDB_HASH 64301c737e16b26c8f3085a31e6397e9) set(OPENVDB_HASH_TYPE MD5) set(OPENVDB_FILE openvdb-${OPENVDB_VERSION}.tar.gz) @@ -225,8 +231,9 @@ set(URLLIB3_CPE "cpe:2.3:a:urllib3:urllib3:${URLLIB3_VERSION}:*:*:*:*:*:*:*") set(CERTIFI_VERSION 2021.10.8) set(REQUESTS_VERSION 2.27.1) set(CYTHON_VERSION 0.29.30) -# The version of the zstd library used to build the Python package should match ZSTD_VERSION defined below. -# At this time of writing, 0.17.0 was already released, but built against zstd 1.5.1, while we use 1.5.0. +# The version of the zstd library used to build the Python package should match ZSTD_VERSION +# defined below. At this time of writing, 0.17.0 was already released, +# but built against zstd 1.5.1, while we use 1.5.0. set(ZSTANDARD_VERSION 0.16.0) set(AUTOPEP8_VERSION 1.6.0) set(PYCODESTYLE_VERSION 2.8.0) @@ -359,9 +366,9 @@ set(XML2_HASH_TYPE MD5) set(XML2_FILE libxml2-${XML2_VERSION}.tar.xz) set(XML2_CPE "cpe:2.3:a:xmlsoft:libxml2:${XML2_VERSION}:*:*:*:*:*:*:*") -set(YAMLCPP_VERSION 0.6.3) +set(YAMLCPP_VERSION 0.7.0) set(YAMLCPP_URI https://codeload.github.com/jbeder/yaml-cpp/tar.gz/yaml-cpp-${YAMLCPP_VERSION}) -set(YAMLCPP_HASH b45bf1089a382e81f6b661062c10d0c2) +set(YAMLCPP_HASH 74d646a3cc1b5d519829441db96744f0) set(YAMLCPP_HASH_TYPE MD5) set(YAMLCPP_FILE yaml-cpp-${YAMLCPP_VERSION}.tar.gz) set(YAMLCPP "cpe:2.3:a:yaml-cpp_project:yaml-cpp:${YAMLCPP_VERSION}:*:*:*:*:*:*:*") @@ -372,10 +379,10 @@ set(PYSTRING_HASH f2c68786b359f5e4e62bed53bc4fb86d) set(PYSTRING_HASH_TYPE MD5) set(PYSTRING_FILE pystring-${PYSTRING_VERSION}.tar.gz) -set(EXPAT_VERSION 2_4_9) -set(EXPAT_VERSION_DOTS 2.4.9) +set(EXPAT_VERSION 2_5_0) +set(EXPAT_VERSION_DOTS 2.5.0) set(EXPAT_URI https://github.com/libexpat/libexpat/archive/R_${EXPAT_VERSION}.tar.gz) -set(EXPAT_HASH b59a2aa796be1ee177bbab3b7231dfa5) +set(EXPAT_HASH d375fa3571c0abb945873f5061a8f2e2) set(EXPAT_HASH_TYPE MD5) set(EXPAT_FILE libexpat-${EXPAT_VERSION}.tar.gz) set(EXPAT_CPE "cpe:2.3:a:libexpat_project:libexpat:${EXPAT_VERSION_DOTS}:*:*:*:*:*:*:*") @@ -457,9 +464,9 @@ set(EMBREE_HASH 52d0be294d6c88ba7a6c9e046796e7be) set(EMBREE_HASH_TYPE MD5) set(EMBREE_FILE embree-v${EMBREE_VERSION}.zip) -set(USD_VERSION 22.03) +set(USD_VERSION 22.11) set(USD_URI https://github.com/PixarAnimationStudios/USD/archive/v${USD_VERSION}.tar.gz) -set(USD_HASH e0e441a05057692a83124a1195b09eed) +set(USD_HASH 8c89459e48a2ef0e7ae9e7e490377507) set(USD_HASH_TYPE MD5) set(USD_FILE usd-v${USD_VERSION}.tar.gz) @@ -559,10 +566,10 @@ set(BROTLI_HASH_TYPE SHA256) set(BROTLI_FILE brotli-v${BROTLI_VERSION}.tar.gz) set(BROTLI_CPE "cpe:2.3:a:google:brotli:${BROTLI_VERSION}:*:*:*:*:*:*:*") -set(OPENPGL_VERSION v0.4.0-beta) -set(OPENPGL_SHORT_VERSION 0.4.0) +set(OPENPGL_VERSION v0.4.1-beta) +set(OPENPGL_SHORT_VERSION 0.4.1) set(OPENPGL_URI https://github.com/OpenPathGuidingLibrary/openpgl/archive/refs/tags/${OPENPGL_VERSION}.tar.gz) -set(OPENPGL_HASH 1f090f88ab2bad028e8b3619aa926f4f97cf7b2c175b904704d2fec8593dd3cd) +set(OPENPGL_HASH db63f5dac5cfa8c110ede241f0c413f00db0c4748697381c4fa23e0f9e82a754) set(OPENPGL_HASH_TYPE SHA256) set(OPENPGL_FILE openpgl-${OPENPGL_VERSION}.tar.gz) @@ -720,3 +727,43 @@ set(HARFBUZZ_URI https://github.com/harfbuzz/harfbuzz/archive/refs/tags/${HARFBU set(HARFBUZZ_HASH 5352ff2eec538ea9a63a485cf01ad8332a3f63aa79921c5a2e301cef185caea1) set(HARFBUZZ_HASH_TYPE SHA256) set(HARFBUZZ_FILE harfbuzz-${HARFBUZZ_VERSION}.tar.gz) + +set(SHADERC_VERSION v2022.3) +set(SHADERC_URI https://github.com/google/shaderc/archive/${SHADERC_VERSION}.tar.gz) +set(SHADERC_HASH 5cb762af57637caf997d5f46baa4e8a4) +set(SHADERC_HASH_TYPE MD5) +set(SHADERC_FILE shaderc-${SHADERC_VERSION}.tar.gz) + +# The versions of shaderc's dependencies can be found in the root of shaderc's +# source in a file called DEPS. + +set(SHADERC_SPIRV_TOOLS_VERSION eb0a36633d2acf4de82588504f951ad0f2cecacb) +set(SHADERC_SPIRV_TOOLS_URI https://github.com/KhronosGroup/SPIRV-Tools/archive/${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz) +set(SHADERC_SPIRV_TOOLS_HASH a4bdb8161f0e959c75d0d82d367c24f2) +set(SHADERC_SPIRV_TOOLS_HASH_TYPE MD5) +set(SHADERC_SPIRV_TOOLS_FILE SPIRV-Tools-${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz) + +set(SHADERC_SPIRV_HEADERS_VERSION 85a1ed200d50660786c1a88d9166e871123cce39) +set(SHADERC_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz) +set(SHADERC_SPIRV_HEADERS_HASH 10d5e8160f39344a641523810b075568) +set(SHADERC_SPIRV_HEADERS_HASH_TYPE MD5) +set(SHADERC_SPIRV_HEADERS_FILE SPIRV-Headers-${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz) + +set(SHADERC_GLSLANG_VERSION 89db4e1caa273a057ea46deba709c6e50001b314) +set(SHADERC_GLSLANG_URI https://github.com/KhronosGroup/glslang/archive/${SHADERC_GLSLANG_VERSION}.tar.gz) +set(SHADERC_GLSLANG_HASH 3b3c79ad8e9132ffcb8b63cc29c532e2) +set(SHADERC_GLSLANG_HASH_TYPE MD5) +set(SHADERC_GLSLANG_FILE glslang-${SHADERC_GLSLANG_VERSION}.tar.gz) + +set(VULKAN_VERSION v1.2.198) + +set(VULKAN_HEADERS_URI https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/${VULKAN_VERSION}.tar.gz) +set(VULKAN_HEADERS_HASH 64fe73e887c963ad546bfc7f9505fa1d) +set(VULKAN_HEADERS_HASH_TYPE MD5) +set(VULKAN_HEADERS_FILE Vulkan-Headers-${VULKAN_VERSION}.tar.gz) + +set(VULKAN_LOADER_URI https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/${VULKAN_VERSION}.tar.gz) +set(VULKAN_LOADER_HASH 015170a74f648fd2b41e209b6bf1ebc4) +set(VULKAN_LOADER_HASH_TYPE MD5) +set(VULKAN_LOADER_FILE Vulkan-Loader-${VULKAN_VERSION}.tar.gz) + diff --git a/build_files/build_environment/cmake/vulkan.cmake b/build_files/build_environment/cmake/vulkan.cmake new file mode 100644 index 00000000000..1fd94dd59be --- /dev/null +++ b/build_files/build_environment/cmake/vulkan.cmake @@ -0,0 +1,55 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ***** END GPL LICENSE BLOCK ***** + +set(VULKAN_HEADERS_EXTRA_ARGS) + +ExternalProject_Add(external_vulkan_headers + URL file://${PACKAGE_DIR}/${VULKAN_HEADERS_FILE} + URL_HASH ${VULKAN_HEADERS_HASH_TYPE}=${VULKAN_HEADERS_HASH} + PREFIX ${BUILD_DIR}/vulkan_headers + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/vulkan_headers -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${VULKAN_HEADERS_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/vulkan_headers +) + +set(VULKAN_LOADER_EXTRA_ARGS + -DVULKAN_HEADERS_INSTALL_DIR=${LIBDIR}/vulkan_headers +) + +ExternalProject_Add(external_vulkan_loader + URL file://${PACKAGE_DIR}/${VULKAN_LOADER_FILE} + URL_HASH ${VULKAN_LOADER_HASH_TYPE}=${VULKAN_LOADER_HASH} + PREFIX ${BUILD_DIR}/vulkan_loader + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/vulkan_loader -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${VULKAN_LOADER_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/vulkan_loader +) + +add_dependencies( + external_vulkan_loader + external_vulkan_headers +) + +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_vulkan_loader after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/vulkan_loader/ ${HARVEST_TARGET}/vulkan + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/vulkan_headers/ ${HARVEST_TARGET}/vulkan + DEPENDEES install + ) + endif() +endif() + diff --git a/build_files/build_environment/cmake/yamlcpp.cmake b/build_files/build_environment/cmake/yamlcpp.cmake index abf6387fe36..d3be8854c57 100644 --- a/build_files/build_environment/cmake/yamlcpp.cmake +++ b/build_files/build_environment/cmake/yamlcpp.cmake @@ -18,6 +18,7 @@ ExternalProject_Add(external_yamlcpp DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH ${YAMLCPP_HASH_TYPE}=${YAMLCPP_HASH} PREFIX ${BUILD_DIR}/yamlcpp + CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/yamlcpp ${DEFAULT_CMAKE_FLAGS} ${YAMLCPP_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/yamlcpp ) diff --git a/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake b/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake index 7611ca21708..c74ff788a75 100644 --- a/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake @@ -177,7 +177,8 @@ if(ILMBASE_INCLUDE_DIR) "\\1" XYZ ${ILMBASE_BUILD_SPECIFICATION}) set("ILMBASE_VERSION" ${XYZ} CACHE STRING "Version of ILMBase lib") else() - # Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though. + # Old versions (before 2.0?) do not have any version string, + # just assuming 2.0 should be fine though. message(WARNING "Could not determine ILMBase library version, assuming 2.0.") set("ILMBASE_VERSION" "2.0" CACHE STRING "Version of ILMBase lib") endif() @@ -195,8 +196,13 @@ else() # elseif(${ILMBASE_VERSION} VERSION_LESS "2.1") set(IlmBase_Libraries Half Iex Imath IlmThread) # else() -# string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION}) -# set(IlmBase_Libraries Half Iex-${_ilmbase_libs_ver} Imath-${_ilmbase_libs_ver} IlmThread-${_ilmbase_libs_ver}) + # string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION}) + # set(IlmBase_Libraries + # Half + # Iex-${_ilmbase_libs_ver} + # Imath-${_ilmbase_libs_ver} + # IlmThread-${_ilmbase_libs_ver} + # ) endif() diff --git a/build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake b/build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake index 8b08b047eac..040dfe1c16f 100644 --- a/build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake @@ -175,7 +175,8 @@ if(OPENEXR_INCLUDE_DIR) "\\1" XYZ ${OPENEXR_BUILD_SPECIFICATION}) set("OPENEXR_VERSION" ${XYZ} CACHE STRING "Version of OpenEXR lib") else() - # Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though. + # Old versions (before 2.0?) do not have any version string, + # just assuming 2.0 should be fine though. message(WARNING "Could not determine ILMBase library version, assuming 2.0.") set("OPENEXR_VERSION" "2.0" CACHE STRING "Version of OpenEXR lib") endif() diff --git a/build_files/build_environment/patches/openvdb.diff b/build_files/build_environment/patches/openvdb.diff index 9ad231e0c6d..9896460c26c 100644 --- a/build_files/build_environment/patches/openvdb.diff +++ b/build_files/build_environment/patches/openvdb.diff @@ -75,16 +75,18 @@ diff -Naur openvdb-8.0.0/openvdb/openvdb/version.rc.in openvdb/openvdb/openvdb/v + + END +END -diff -Naur orig/openvdb_ax/openvdb_ax/CMakeLists.txt openvdb/openvdb_ax/openvdb_ax/CMakeLists.txt ---- orig/openvdb_ax/openvdb_ax/CMakeLists.txt 2022-06-09 08:50:40 -0600 -+++ openvdb/openvdb_ax/openvdb_ax/CMakeLists.txt 2022-08-08 22:11:02 -0600 -@@ -305,6 +305,9 @@ - # Configure shared build - - if(OPENVDB_AX_SHARED) -+ if(WIN32) -+ list(APPEND OPENVDB_AX_PUBLIC_DEFINES -DOPENVDB_AX_DLL) -+ endif() - target_compile_definitions(openvdb_ax_shared PUBLIC ${OPENVDB_AX_PUBLIC_DEFINES}) - target_compile_definitions(openvdb_ax_shared PRIVATE ${OPENVDB_AX_PRIVATE_DEFINES}) - target_compile_options(openvdb_ax_shared PUBLIC ${OPENVDB_AX_PUBLIC_OPTIONS}) +diff -Naur orig/openvdb/openvdb/tree/ValueAccessor.h openvdb/openvdb/openvdb/tree/ValueAccessor.h +--- orig/openvdb/openvdb/tree/ValueAccessor.h 2022-11-02 13:58:26 -0600 ++++ openvdb/openvdb/openvdb/tree/ValueAccessor.h 2022-11-02 18:55:09 -0600 +@@ -872,7 +872,10 @@ + using LeafNodeType = typename NodeType::LeafNodeType; + using CoordLimits = std::numeric_limits<Int32>; + +- static_assert(std::is_same<NodeType, LeafNodeType>::value); ++ // Blender: Technically not an issue in OpenVDB, but USD 21.11 still builds ++ // as C++14 which does not support terse asserts yet. Add a message to ++ // explicitly select the C++14 supported static assert. ++ static_assert(std::is_same<NodeType, LeafNodeType>::value, "cache item node type is not leaf node type"); + + CacheItem(TreeCacheT& parent) + : mParent(&parent) diff --git a/build_files/build_environment/patches/osl.diff b/build_files/build_environment/patches/osl.diff index 6c7f528f035..75f7b13a165 100644 --- a/build_files/build_environment/patches/osl.diff +++ b/build_files/build_environment/patches/osl.diff @@ -24,27 +24,6 @@ diff -Naur OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake externa # IlmBase & OpenEXR checked_find_package (OpenEXR REQUIRED -diff -Naur OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h external_osl/src/include/OSL/llvm_util.h ---- OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h 2022-09-30 17:43:53 -0600 -+++ external_osl/src/include/OSL/llvm_util.h 2022-10-15 15:37:24 -0600 -@@ -9,6 +9,8 @@ - #include <unordered_set> - #include <vector> - -+#define OSL_HAS_BLENDER_CLEANUP_FIX -+ - #ifdef LLVM_NAMESPACE - namespace llvm = LLVM_NAMESPACE; - #endif -@@ -455,7 +457,7 @@ - llvm::BasicBlock* masked_return_block() const; - - bool is_masking_required() const { return m_is_masking_required; } -- -+ static void Cleanup (); - struct ScopedMasking { - ScopedMasking() {} - diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp external_osl/src/liboslcomp/oslcomp.cpp --- OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp 2022-09-30 17:43:53 -0600 +++ external_osl/src/liboslcomp/oslcomp.cpp 2022-10-15 14:49:26 -0600 @@ -62,31 +41,3 @@ diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp external_osl/ #include <clang/Basic/TargetInfo.h> #include <clang/Frontend/CompilerInstance.h> #include <clang/Frontend/TextDiagnosticPrinter.h> -diff -Naur orig/src/cmake/externalpackages.cmake external_osl/src/cmake/externalpackages.cmake ---- orig/src/cmake/externalpackages.cmake 2022-01-07 18:36:45 -0700 -+++ external_osl/src/cmake/externalpackages.cmake 2022-08-02 08:10:27 -0600 -@@ -36,12 +36,10 @@ - - ########################################################################### - # Boost setup --if (LINKSTATIC) -- set (Boost_USE_STATIC_LIBS ON) --else () -- if (MSVC) -- add_definitions (-DBOOST_ALL_DYN_LINK=1) -- endif () -+# Blender links most things static, but not boost -+set (Boost_USE_STATIC_LIBS OFF) -+if (MSVC) -+ add_definitions (-DBOOST_ALL_DYN_LINK=1) - endif () - if (BOOST_CUSTOM) - set (Boost_FOUND true) -@@ -80,6 +78,7 @@ - - - checked_find_package (ZLIB REQUIRED) # Needed by several packages -+checked_find_package (PNG REQUIRED) # Needed since OIIO needs it - - # IlmBase & OpenEXR - checked_find_package (OpenEXR REQUIRED
\ No newline at end of file diff --git a/build_files/build_environment/patches/python_windows.diff b/build_files/build_environment/patches/python_windows.diff new file mode 100644 index 00000000000..5b6434f1440 --- /dev/null +++ b/build_files/build_environment/patches/python_windows.diff @@ -0,0 +1,22 @@ +--- a/PCbuild/prepare_ssl.bat 2022-10-30 11:48:14 -0600 ++++ b/PCbuild/prepare_ssl.bat 2022-10-30 11:53:16 -0600 +@@ -47,12 +47,13 @@ + if "%PERL%" == "" where perl > "%TEMP%\perl.loc" 2> nul && set /P PERL= <"%TEMP%\perl.loc" & del "%TEMP%\perl.loc" + if "%PERL%" == "" (echo Cannot locate perl.exe on PATH or as PERL variable & exit /b 4) + +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=Win32 +-if errorlevel 1 exit /b ++REM Blender: we only need x64, ssl is kind of a long build, so just build what we need ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=Win32 ++REMif errorlevel 1 exit /b + %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=x64 + if errorlevel 1 exit /b +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM +-if errorlevel 1 exit /b +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM64 +-if errorlevel 1 exit /b ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM ++REM if errorlevel 1 exit /b ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM64 ++REM if errorlevel 1 exit /b + diff --git a/build_files/build_environment/patches/usd.diff b/build_files/build_environment/patches/usd.diff index 881d856ca25..39d34160d28 100644 --- a/build_files/build_environment/patches/usd.diff +++ b/build_files/build_environment/patches/usd.diff @@ -1,7 +1,7 @@ -diff -x .git -ur usd.orig/cmake/defaults/Packages.cmake external_usd/cmake/defaults/Packages.cmake ---- usd.orig/cmake/defaults/Packages.cmake 2019-10-24 22:39:53.000000000 +0200 -+++ external_usd/cmake/defaults/Packages.cmake 2019-11-28 13:00:33.185957483 +0100 -@@ -64,7 +64,7 @@ +diff -Naur orig/cmake/defaults/Packages.cmake external_usd/cmake/defaults/Packages.cmake +--- orig/cmake/defaults/Packages.cmake 2022-10-27 12:56:33 -0600 ++++ external_usd/cmake/defaults/Packages.cmake 2022-10-27 13:05:08 -0600 +@@ -129,7 +129,7 @@ endif() # --TBB @@ -10,10 +10,9 @@ diff -x .git -ur usd.orig/cmake/defaults/Packages.cmake external_usd/cmake/defau add_definitions(${TBB_DEFINITIONS}) # --math - -diff -Naur usd_orig/cmake/defaults/msvcdefaults.cmake external_usd/cmake/defaults/msvcdefaults.cmake ---- usd_orig/cmake/defaults/msvcdefaults.cmake 2022-02-18 14:49:09 -0700 -+++ external_usd/cmake/defaults/msvcdefaults.cmake 2022-03-14 11:41:50 -0600 +diff -Naur orig/cmake/defaults/msvcdefaults.cmake external_usd/cmake/defaults/msvcdefaults.cmake +--- orig/cmake/defaults/msvcdefaults.cmake 2022-10-27 12:56:33 -0600 ++++ external_usd/cmake/defaults/msvcdefaults.cmake 2022-10-27 13:05:08 -0600 @@ -120,9 +120,6 @@ # for all translation units. set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /bigobj") @@ -24,38 +23,10 @@ diff -Naur usd_orig/cmake/defaults/msvcdefaults.cmake external_usd/cmake/default # Enable multiprocessor builds. set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /MP") set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /Gm-") - -diff --git a/pxr/base/work/singularTask.h b/pxr/base/work/singularTask.h ---- a/pxr/base/work/singularTask.h -+++ b/pxr/base/work/singularTask.h -@@ -120,7 +120,7 @@ - // case we go again to ensure the task can do whatever it - // was awakened to do. Once we successfully take the count - // to zero, we stop. -- size_t old = count; -+ std::size_t old = count; - do { _fn(); } while ( - !count.compare_exchange_strong(old, 0)); - }); - -diff --git a/pxr/usd/sdr/shaderMetadataHelpers.h b/pxr/usd/sdr/shaderMetadataHelpers.h ---- a/pxr/usd/sdr/shaderMetadataHelpers.h -+++ b/pxr/usd/sdr/shaderMetadataHelpers.h -@@ -32,6 +32,8 @@ - #include "pxr/base/tf/token.h" - #include "pxr/usd/sdr/declare.h" - -+#include <limits> -+ - PXR_NAMESPACE_OPEN_SCOPE - - /// \namespace ShaderMetadataHelpers - -diff --git a/pxr/base/arch/timing.h b/pxr/base/arch/timing.h -index 517561f..fda5a1f 100644 ---- a/pxr/base/arch/timing.h -+++ b/pxr/base/arch/timing.h -@@ -91,6 +91,10 @@ ArchGetTickTime() +diff -Naur orig/pxr/base/arch/timing.h external_usd/pxr/base/arch/timing.h +--- orig/pxr/base/arch/timing.h 2022-10-27 12:56:34 -0600 ++++ external_usd/pxr/base/arch/timing.h 2022-10-27 13:05:08 -0600 +@@ -84,6 +84,10 @@ inline uint64_t ArchGetStartTickTime() { @@ -66,7 +37,7 @@ index 517561f..fda5a1f 100644 uint64_t t; #if defined (ARCH_OS_DARWIN) return ArchGetTickTime(); -@@ -123,6 +127,7 @@ ArchGetStartTickTime() +@@ -116,6 +120,7 @@ #error "Unsupported architecture." #endif return t; @@ -74,7 +45,7 @@ index 517561f..fda5a1f 100644 } /// Get a "stop" tick time for measuring an interval of time. See -@@ -132,6 +137,10 @@ ArchGetStartTickTime() +@@ -125,6 +130,10 @@ inline uint64_t ArchGetStopTickTime() { @@ -85,7 +56,7 @@ index 517561f..fda5a1f 100644 uint64_t t; #if defined (ARCH_OS_DARWIN) return ArchGetTickTime(); -@@ -162,11 +171,11 @@ ArchGetStopTickTime() +@@ -155,11 +164,11 @@ #error "Unsupported architecture." #endif return t; @@ -100,10 +71,26 @@ 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 @@ +diff -Naur orig/pxr/imaging/hioOpenVDB/CMakeLists.txt external_usd/pxr/imaging/hioOpenVDB/CMakeLists.txt +--- orig/pxr/imaging/hioOpenVDB/CMakeLists.txt 2022-10-27 12:56:35 -0600 ++++ external_usd/pxr/imaging/hioOpenVDB/CMakeLists.txt 2022-10-27 13:05:08 -0600 +@@ -20,6 +20,12 @@ + LIST(APPEND __VDB_IMATH_LIBS ${OPENEXR_Half_LIBRARY}) + endif() + ++if (WIN32) ++ # OpenVDB uses constants from <cmath> that aren't available on ++ # Windows unless this is defined. ++ add_definitions(-D_USE_MATH_DEFINES) ++endif() ++ + pxr_library(hioOpenVDB + LIBRARIES + ar +diff -Naur orig/pxr/usdImaging/CMakeLists.txt external_usd/pxr/usdImaging/CMakeLists.txt +--- orig/pxr/usdImaging/CMakeLists.txt 2022-10-27 12:56:37 -0600 ++++ external_usd/pxr/usdImaging/CMakeLists.txt 2022-10-27 13:05:08 -0600 +@@ -7,7 +7,7 @@ usdVolImaging usdAppUtils usdviewq @@ -111,7 +98,7 @@ diff -Naur usd_orig/pxr/usdImaging/CMakeLists.txt external_usd/pxr/usdImaging/CM +# 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 @@ -127,20 +114,3 @@ diff -Naur orig/cmake/macros/Private.cmake external_usd/cmake/macros/Private.cma set(LIBRARY_NAME "_${NAME}_d") else() set(LIBRARY_NAME "_${NAME}") -diff --git a/pxr/imaging/hioOpenVDB/CMakeLists.txt b/pxr/imaging/hioOpenVDB/CMakeLists.txt -index e3db1d1319..2a2dfd5e72 100644 ---- a/pxr/imaging/hioOpenVDB/CMakeLists.txt -+++ b/pxr/imaging/hioOpenVDB/CMakeLists.txt -@@ -7,6 +7,12 @@ if (NOT ${PXR_BUILD_GPU_SUPPORT}) - return() - endif() - -+if (WIN32) -+ # OpenVDB uses constants from <cmath> that aren't available on -+ # Windows unless this is defined. -+ add_definitions(-D_USE_MATH_DEFINES) -+endif() -+ - pxr_library(hioOpenVDB - LIBRARIES - ar
\ No newline at end of file |