diff options
Diffstat (limited to 'build_files')
50 files changed, 709 insertions, 462 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index 53d88b12129..dd90eb9adde 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -130,7 +130,6 @@ if(NOT WIN32 OR ENABLE_MINGW64) include(cmake/vpx.cmake) include(cmake/x264.cmake) include(cmake/xvidcore.cmake) - include(cmake/faad.cmake) include(cmake/ffmpeg.cmake) include(cmake/fftw.cmake) include(cmake/sndfile.cmake) diff --git a/build_files/build_environment/cmake/alembic.cmake b/build_files/build_environment/cmake/alembic.cmake index 06f8b9184c3..95a461c64b3 100644 --- a/build_files/build_environment/cmake/alembic.cmake +++ b/build_files/build_environment/cmake/alembic.cmake @@ -38,6 +38,7 @@ set(ALEMBIC_EXTRA_ARGS -DBoost_DEBUG=ON -DBOOST_ROOT=${LIBDIR}/boost -DBoost_NO_SYSTEM_PATHS=ON + -DBoost_NO_BOOST_CMAKE=ON -DILMBASE_ROOT=${LIBDIR}/openexr -DALEMBIC_ILMBASE_INCLUDE_DIRECTORY=${LIBDIR}/openexr/include/OpenEXR -DALEMBIC_ILMBASE_HALF_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT} diff --git a/build_files/build_environment/cmake/bzip2.cmake b/build_files/build_environment/cmake/bzip2.cmake index fbf5551e719..bb2be7c634a 100644 --- a/build_files/build_environment/cmake/bzip2.cmake +++ b/build_files/build_environment/cmake/bzip2.cmake @@ -25,6 +25,8 @@ if(UNIX AND NOT APPLE) set(BZIP2_CFLAGS "-fPIC -Wall -Winline -O2 -g -D_FILE_OFFSET_BITS=64") set(BZIP2_CONFIGURE_ENV ${BZIP2_CONFIGURE_ENV} && export LDFLAGS=${BZIP2_LDFLAGS} && export CFLAGS=${BZIP2_CFLAGS} && export PREFIX=${BZIP2_PREFIX}) +else() + set(BZIP2_CONFIGURE_ENV ${CONFIGURE_ENV}) endif() ExternalProject_Add(external_bzip2 diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake index 2dd42614cc0..428451d0115 100644 --- a/build_files/build_environment/cmake/embree.cmake +++ b/build_files/build_environment/cmake/embree.cmake @@ -26,10 +26,20 @@ set(EMBREE_EXTRA_ARGS -DEMBREE_RAY_MASK=ON -DEMBREE_FILTER_FUNCTION=ON -DEMBREE_BACKFACE_CULLING=OFF - -DEMBREE_TASKING_SYSTEM=INTERNAL -DEMBREE_MAX_ISA=AVX2 + -DEMBREE_TASKING_SYSTEM=TBB + -DEMBREE_TBB_ROOT=${LIBDIR}/tbb + -DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY} ) +if(TBB_STATIC_LIBRARY) + set(EMBREE_EXTRA_ARGS + ${EMBREE_EXTRA_ARGS} + -DEMBREE_TBB_LIBRARY_NAME=tbb_static + -DEMBREE_TBBMALLOC_LIBRARY_NAME=tbbmalloc_static + ) +endif() + if(WIN32) set(EMBREE_BUILD_DIR ${BUILD_MODE}/) else() @@ -44,6 +54,12 @@ ExternalProject_Add(external_embree CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/embree ) + +add_dependencies( + external_embree + external_tbb +) + if(WIN32) if(BUILD_MODE STREQUAL Release) diff --git a/build_files/build_environment/cmake/faad.cmake b/build_files/build_environment/cmake/faad.cmake deleted file mode 100644 index 15934cc1879..00000000000 --- a/build_files/build_environment/cmake/faad.cmake +++ /dev/null @@ -1,40 +0,0 @@ -# ***** 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(FAAD_EXTRA_ARGS) - -if(WIN32) - set(FAAD_EXTRA_CONFIGURE "utils\\win32\\ac2ver.exe" "faad2" "configure.ac" > libfaad\\win32_ver.h) -else() - set(FAAD_EXTRA_CONFIGURE echo .) -endif() - -ExternalProject_Add(external_faad - URL ${FAAD_URI} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${FAAD_HASH} - PREFIX ${BUILD_DIR}/faad - CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/faad/src/external_faad/ && ${FAAD_EXTRA_CONFIGURE} && ${CONFIGURE_COMMAND} --disable-shared --enable-static --prefix=${LIBDIR}/faad - BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/faad/src/external_faad/ && make -j${MAKE_THREADS} - INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/faad/src/external_faad/ && make install - INSTALL_DIR ${LIBDIR}/faad -) - -if(MSVC) - set_target_properties(external_faad PROPERTIES FOLDER Mingw) -endif() diff --git a/build_files/build_environment/cmake/ffmpeg.cmake b/build_files/build_environment/cmake/ffmpeg.cmake index 9ff52914f53..02e78c605af 100644 --- a/build_files/build_environment/cmake/ffmpeg.cmake +++ b/build_files/build_environment/cmake/ffmpeg.cmake @@ -127,7 +127,6 @@ endif() add_dependencies( external_ffmpeg external_zlib - external_faad external_openjpeg external_xvidcore external_x264 diff --git a/build_files/build_environment/cmake/fftw.cmake b/build_files/build_environment/cmake/fftw.cmake index 2d10cf6ad28..b359df2f47d 100644 --- a/build_files/build_environment/cmake/fftw.cmake +++ b/build_files/build_environment/cmake/fftw.cmake @@ -19,8 +19,12 @@ set(FFTW_EXTRA_ARGS) if(WIN32) - set(FFTW3_ENV set CFLAGS=-fno-stack-check -fno-stack-protector -mno-stack-arg-probe -fno-lto &&) set(FFTW3_PATCH_COMMAND ${PATCH_CMD} --verbose -p 0 -N -d ${BUILD_DIR}/fftw3/src/external_fftw3 < ${PATCH_DIR}/fftw3.diff) + set(FFTW_EXTRA_ARGS --disable-static --enable-shared) + set(FFTW_INSTALL install-strip) +else() + set(FFTW_EXTRA_ARGS --enable-static) + set(FFTW_INSTALL install) endif() ExternalProject_Add(external_fftw3 @@ -28,10 +32,10 @@ ExternalProject_Add(external_fftw3 DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${FFTW_HASH} PREFIX ${BUILD_DIR}/fftw3 - CONFIGURE_COMMAND ${CONFIGURE_ENV} && ${FFTW3_ENV} cd ${BUILD_DIR}/fftw3/src/external_fftw3/ && ${CONFIGURE_COMMAND} --enable-static --prefix=${mingw_LIBDIR}/fftw3 + CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/fftw3/src/external_fftw3/ && ${CONFIGURE_COMMAND} ${FFTW_EXTRA_ARGS} --prefix=${mingw_LIBDIR}/fftw3 PATCH_COMMAND ${FFTW3_PATCH_COMMAND} BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/fftw3/src/external_fftw3/ && make -j${MAKE_THREADS} - INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/fftw3/src/external_fftw3/ && make install + INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/fftw3/src/external_fftw3/ && make ${FFTW_INSTALL} INSTALL_DIR ${LIBDIR}/fftw3 ) @@ -39,7 +43,8 @@ if(MSVC) set_target_properties(external_fftw3 PROPERTIES FOLDER Mingw) if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_fftw3 after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/fftw3/lib/libfftw3.a ${HARVEST_TARGET}/fftw3/lib/libfftw.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/fftw3/lib/libfftw3.dll.a ${HARVEST_TARGET}/fftw3/lib/libfftw.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/fftw3/bin/libfftw3-3.dll ${HARVEST_TARGET}/fftw3/lib/libfftw3-3.dll COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/fftw3/include/fftw3.h ${HARVEST_TARGET}/fftw3/include/fftw3.h DEPENDEES install ) diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 4d27509890f..9acafe8f8e6 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -31,10 +31,6 @@ if(BUILD_MODE STREQUAL Release) COMMAND # jpeg rename libfile + copy include ${CMAKE_COMMAND} -E copy ${LIBDIR}/jpg/lib/jpeg-static.lib ${HARVEST_TARGET}/jpeg/lib/libjpeg.lib && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/jpg/include/ ${HARVEST_TARGET}/jpeg/include/ && - # OpenImageIO - ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenImageIO/include ${HARVEST_TARGET}/OpenImageIO/include && - ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenImageIO/lib ${HARVEST_TARGET}/OpenImageIO/lib && - ${CMAKE_COMMAND} -E copy ${LIBDIR}/OpenImageIO/bin/idiff.exe ${HARVEST_TARGET}/OpenImageIO/bin/idiff.exe && # png ${CMAKE_COMMAND} -E copy ${LIBDIR}/png/lib/libpng16_static.lib ${HARVEST_TARGET}/png/lib/libpng.lib && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/png/include/ ${HARVEST_TARGET}/png/include/ && @@ -44,10 +40,6 @@ if(BUILD_MODE STREQUAL Release) # glew-> opengl ${CMAKE_COMMAND} -E copy ${LIBDIR}/glew/lib/libglew32.lib ${HARVEST_TARGET}/opengl/lib/glew.lib && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/glew/include/ ${HARVEST_TARGET}/opengl/include/ && - # sndfile - ${CMAKE_COMMAND} -E copy ${LIBDIR}/sndfile/lib/libsndfile.dll.a ${HARVEST_TARGET}/sndfile/lib/libsndfile-1.lib && - ${CMAKE_COMMAND} -E copy ${LIBDIR}/sndfile/bin/libsndfile-1.dll ${HARVEST_TARGET}/sndfile/lib/libsndfile-1.dll && - ${CMAKE_COMMAND} -E copy ${LIBDIR}/sndfile/include/sndfile.h ${HARVEST_TARGET}/sndfile/include/sndfile.h && # tiff ${CMAKE_COMMAND} -E copy ${LIBDIR}/tiff/lib/tiff.lib ${HARVEST_TARGET}/tiff/lib/libtiff.lib && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/tiff/include/ ${HARVEST_TARGET}/tiff/include/ && @@ -59,9 +51,7 @@ endif() if(BUILD_MODE STREQUAL Debug) add_custom_target(Harvest_Debug_Results - # OpenImageIO - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_d.lib && - ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO_Util.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_Util_d.lib && + COMMAND # hdf5 ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/hdf5/lib ${HARVEST_TARGET}/hdf5/lib && DEPENDS Package_Python diff --git a/build_files/build_environment/cmake/jpeg.cmake b/build_files/build_environment/cmake/jpeg.cmake index 47f526e3d29..e0200d84897 100644 --- a/build_files/build_environment/cmake/jpeg.cmake +++ b/build_files/build_environment/cmake/jpeg.cmake @@ -18,7 +18,7 @@ if(WIN32) # cmake for windows - set(JPEG_EXTRA_ARGS -DNASM=${NASM_PATH} -DWITH_JPEG8=ON -DCMAKE_DEBUG_POSTFIX=d) + set(JPEG_EXTRA_ARGS -DNASM=${NASM_PATH} -DWITH_JPEG8=ON -DCMAKE_DEBUG_POSTFIX=d -DWITH_CRT_DLL=On) ExternalProject_Add(external_jpeg URL ${JPEG_URI} @@ -42,20 +42,17 @@ if(WIN32) set(JPEG_LIBRARY jpeg-staticd${LIBEXT}) endif() else(WIN32) - # autoconf for unix - if(APPLE) - set(JPEG_EXTRA_ARGS --host x86_64-apple-darwin --with-jpeg8) - else() - set(JPEG_EXTRA_ARGS --with-jpeg8) - endif() + # cmake for unix + set(JPEG_EXTRA_ARGS + -DWITH_JPEG8=ON + -DENABLE_STATIC=ON + -DENABLE_SHARED=OFF + -DCMAKE_INSTALL_LIBDIR=${LIBDIR}/jpg/lib) ExternalProject_Add(external_jpeg URL ${JPEG_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${JPEG_HASH} - CONFIGURE_COMMAND ${CONFIGURE_ENV} && autoreconf -fiv && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/jpg NASM=yasm ${JPEG_EXTRA_ARGS} - BUILD_IN_SOURCE 1 - BUILD_COMMAND ${CONFIGURE_ENV} && make install PREFIX ${BUILD_DIR}/jpg CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/jpg ${DEFAULT_CMAKE_FLAGS} ${JPEG_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/jpg diff --git a/build_files/build_environment/cmake/openal.cmake b/build_files/build_environment/cmake/openal.cmake index 44f6cdf72a3..315f2e8ba7e 100644 --- a/build_files/build_environment/cmake/openal.cmake +++ b/build_files/build_environment/cmake/openal.cmake @@ -52,7 +52,6 @@ if(BUILD_MODE STREQUAL Release) PREFIX ${BUILD_DIR}/openal CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openal ${DEFAULT_CMAKE_FLAGS} ${OPENAL_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/openal - PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/openal/src/external_openal < ${PATCH_DIR}/openal.diff ) if(WIN32) diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index b20bb838ede..1332a38fea6 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -21,7 +21,7 @@ set(OIDN_EXTRA_ARGS -DWITH_EXAMPLE=OFF -DWITH_TEST=OFF -DTBB_ROOT=${LIBDIR}/tbb - -DTBB_STATIC_LIB=ON + -DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY} -DOIDN_STATIC_LIB=ON ) diff --git a/build_files/build_environment/cmake/openimageio.cmake b/build_files/build_environment/cmake/openimageio.cmake index 27e04a1f1d1..4254d923de1 100644 --- a/build_files/build_environment/cmake/openimageio.cmake +++ b/build_files/build_environment/cmake/openimageio.cmake @@ -32,7 +32,7 @@ endif() if(WIN32) set(PNG_LIBNAME libpng16_static${LIBEXT}) - set(OIIO_SIMD_FLAGS -DUSE_SIMD=sse2 -DOPJ_STATIC=1) + set(OIIO_SIMD_FLAGS -DUSE_SIMD=sse2) set(OPENJPEG_POSTFIX _msvc) else() set(PNG_LIBNAME libpng${LIBEXT}) @@ -49,23 +49,17 @@ endif() if(MSVC) set(OPENJPEG_FLAGS - -DOPENJPEG_HOME=${LIBDIR}/openjpeg_msvc - -DOPENJPEG_INCLUDE_DIR=${LIBDIR}/openjpeg_msvc/include/openjpeg-${OPENJPEG_SHORT_VERSION} - -DOPENJPEG_LIBRARY=${LIBDIR}/openjpeg_msvc/lib/openjp2${LIBEXT} - -DOPENJPEG_LIBRARY_DEBUG=${LIBDIR}/openjpeg_msvc/lib/openjp2${LIBEXT} + -DOpenJpeg_ROOT=${LIBDIR}/openjpeg_msvc ) else() set(OPENJPEG_FLAGS - -DOPENJPEG_INCLUDE_DIR=${LIBDIR}/openjpeg/include/openjpeg-${OPENJPEG_SHORT_VERSION} - -DOPENJPEG_LIBRARY=${LIBDIR}/openjpeg/lib/${OPENJPEG_LIBRARY} + -DOpenJpeg_ROOT=${LIBDIR}/openjpeg ) endif() set(OPENIMAGEIO_EXTRA_ARGS - -DBUILDSTATIC=ON + -DBUILD_SHARED_LIBS=OFF ${OPENIMAGEIO_LINKSTATIC} - -DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/openexr/ - -DOPENEXR_ILMIMF_LIBRARIES=${LIBDIR}/openexr/lib/IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT} -DBoost_COMPILER:STRING=${BOOST_COMPILER_STRING} -DBoost_USE_MULTITHREADED=ON -DBoost_USE_STATIC_LIBS=ON @@ -73,7 +67,16 @@ set(OPENIMAGEIO_EXTRA_ARGS -DBOOST_ROOT=${LIBDIR}/boost -DBOOST_LIBRARYDIR=${LIBDIR}/boost/lib/ -DBoost_NO_SYSTEM_PATHS=ON + -DBoost_NO_BOOST_CMAKE=ON -OIIO_BUILD_CPP11=ON + -DUSE_LIBSQUISH=OFF + -DUSE_QT5=OFF + -DUSE_NUKE=OFF + -DUSE_OPENVDB=OFF + -DUSE_BZIP2=OFF + -DUSE_FREETYPE=OFF + -DUSE_DCMTK=OFF + -DUSE_LIBHEIF=OFF -DUSE_OPENGL=OFF -DUSE_TBB=OFF -DUSE_FIELD3D=OFF @@ -81,15 +84,12 @@ set(OPENIMAGEIO_EXTRA_ARGS -DUSE_PYTHON=OFF -DUSE_GIF=OFF -DUSE_OPENCV=OFF - -DUSE_OPENSSL=OFF -DUSE_OPENJPEG=ON -DUSE_FFMPEG=OFF -DUSE_PTEX=OFF -DUSE_FREETYPE=OFF -DUSE_LIBRAW=OFF - -DUSE_PYTHON=OFF - -DUSE_PYTHON3=OFF - -DUSE_OCIO=OFF + -DUSE_OPENCOLORIO=OFF -DUSE_WEBP=${WITH_WEBP} -DOIIO_BUILD_TOOLS=${OIIO_TOOLS} -DOIIO_BUILD_TESTS=OFF @@ -103,17 +103,13 @@ set(OPENIMAGEIO_EXTRA_ARGS -DJPEG_LIBRARY=${LIBDIR}/jpg/lib/${JPEG_LIBRARY} -DJPEG_INCLUDE_DIR=${LIBDIR}/jpg/include ${OPENJPEG_FLAGS} - -DOCIO_PATH=${LIBDIR}/opencolorio/ -DOpenEXR_USE_STATIC_LIBS=On - -DOPENEXR_HOME=${LIBDIR}/openexr/ - -DILMBASE_INCLUDE_PATH=${LIBDIR}/openexr/ - -DILMBASE_PACKAGE_PREFIX=${LIBDIR}/openexr/ -DILMBASE_INCLUDE_DIR=${LIBDIR}/openexr/include/ + -DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/ -DOPENEXR_HALF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT} -DOPENEXR_IMATH_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${OPENEXR_VERSION_POSTFIX}${LIBEXT} -DOPENEXR_ILMTHREAD_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmThread${OPENEXR_VERSION_POSTFIX}${LIBEXT} -DOPENEXR_IEX_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${OPENEXR_VERSION_POSTFIX}${LIBEXT} - -DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/ -DOPENEXR_ILMIMF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT} -DSTOP_ON_WARNING=OFF ${WEBP_FLAGS} @@ -125,27 +121,38 @@ ExternalProject_Add(external_openimageio DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${OPENIMAGEIO_HASH} PREFIX ${BUILD_DIR}/openimageio - PATCH_COMMAND - ${PATCH_CMD} -p 0 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/src/include < ${PATCH_DIR}/openimageio_gdi.diff && - ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/openimageio_static_libs.diff + PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < ${PATCH_DIR}/openimageio.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimageio ${DEFAULT_CMAKE_FLAGS} ${OPENIMAGEIO_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/openimageio ) add_dependencies( external_openimageio - external_png external_zlib + external_png + external_zlib external_openexr external_jpeg external_boost external_tiff - external_opencolorio external_openjpeg${OPENJPEG_POSTFIX} ${WEBP_DEP} ) -if(NOT WIN32) - add_dependencies( - external_openimageio - external_opencolorio_extra - ) + +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_openimageio after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenImageIO/include ${HARVEST_TARGET}/OpenImageIO/include + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenImageIO/lib ${HARVEST_TARGET}/OpenImageIO/lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/OpenImageIO/bin/idiff.exe ${HARVEST_TARGET}/OpenImageIO/bin/idiff.exe + + DEPENDEES install + ) + endif() + if(BUILD_MODE STREQUAL Debug) + ExternalProject_Add_Step(external_openimageio after_install + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO_Util.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_Util_d.lib + DEPENDEES install + ) + endif() endif() diff --git a/build_files/build_environment/cmake/opensubdiv.cmake b/build_files/build_environment/cmake/opensubdiv.cmake index 5c1ebe46a20..d183b9f02b7 100644 --- a/build_files/build_environment/cmake/opensubdiv.cmake +++ b/build_files/build_environment/cmake/opensubdiv.cmake @@ -36,7 +36,7 @@ if(WIN32) set(OPENSUBDIV_EXTRA_ARGS ${OPENSUBDIV_EXTRA_ARGS} -DTBB_INCLUDE_DIR=${LIBDIR}/tbb/include - -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/tbb_static.lib + -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/tbb.lib -DCLEW_INCLUDE_DIR=${LIBDIR}/clew/include/CL -DCLEW_LIBRARY=${LIBDIR}/clew/lib/clew${LIBEXT} -DCUEW_INCLUDE_DIR=${LIBDIR}/cuew/include @@ -67,7 +67,7 @@ endif() ExternalProject_Add(external_opensubdiv URL ${OPENSUBDIV_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${OPENSUBDIV_Hash} + URL_HASH MD5=${OPENSUBDIV_HASH} PREFIX ${BUILD_DIR}/opensubdiv CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/opensubdiv -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${OPENSUBDIV_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/opensubdiv diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake index 87ca7b03c40..f432ade7dd1 100644 --- a/build_files/build_environment/cmake/openvdb.cmake +++ b/build_files/build_environment/cmake/openvdb.cmake @@ -27,6 +27,7 @@ set(OPENVDB_EXTRA_ARGS -DBoost_USE_STATIC_RUNTIME=OFF -DBOOST_ROOT=${LIBDIR}/boost -DBoost_NO_SYSTEM_PATHS=ON + -DBoost_NO_BOOST_CMAKE=ON -DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY} -DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/ -DBlosc_INCLUDE_DIR=${LIBDIR}/blosc/include/ diff --git a/build_files/build_environment/cmake/osl.cmake b/build_files/build_environment/cmake/osl.cmake index 92032719245..3532eec144e 100644 --- a/build_files/build_environment/cmake/osl.cmake +++ b/build_files/build_environment/cmake/osl.cmake @@ -44,6 +44,7 @@ set(OSL_EXTRA_ARGS -DBOOST_ROOT=${LIBDIR}/boost -DBOOST_LIBRARYDIR=${LIBDIR}/boost/lib/ -DBoost_NO_SYSTEM_PATHS=ON + -DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIRECTORY=${LIBDIR}/llvm -DLLVM_INCLUDES=${LIBDIR}/llvm/include -DLLVM_LIB_DIR=${LIBDIR}/llvm/lib diff --git a/build_files/build_environment/cmake/png.cmake b/build_files/build_environment/cmake/png.cmake index 2bf32b77ce9..8dd3c25b88b 100644 --- a/build_files/build_environment/cmake/png.cmake +++ b/build_files/build_environment/cmake/png.cmake @@ -25,7 +25,7 @@ set(PNG_EXTRA_ARGS ExternalProject_Add(external_png URL ${PNG_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${PNG_HASH} + URL_HASH SHA256=${PNG_HASH} PREFIX ${BUILD_DIR}/png CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/png ${DEFAULT_CMAKE_FLAGS} ${PNG_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/png diff --git a/build_files/build_environment/cmake/pthreads.cmake b/build_files/build_environment/cmake/pthreads.cmake index c5c331117fc..7ddf6867e2b 100644 --- a/build_files/build_environment/cmake/pthreads.cmake +++ b/build_files/build_environment/cmake/pthreads.cmake @@ -24,7 +24,7 @@ if(WIN32) set(PTHREAD_CPPFLAGS "/I. /DHAVE_CONFIG_H ") endif() - set(PTHREADS_BUILD cd ${BUILD_DIR}/pthreads/src/external_pthreads/ && cd && nmake VC-static /e CPPFLAGS=${PTHREAD_CPPFLAGS} /e XLIBS=/NODEFAULTLIB:msvcr) + set(PTHREADS_BUILD cd ${BUILD_DIR}/pthreads/src/external_pthreads/ && cd && nmake VC-static /e CPPFLAGS=${PTHREAD_CPPFLAGS}) ExternalProject_Add(external_pthreads URL ${PTHREADS_URI} @@ -32,6 +32,7 @@ if(WIN32) URL_HASH MD5=${PTHREADS_HASH} PREFIX ${BUILD_DIR}/pthreads CONFIGURE_COMMAND echo . + PATCH_COMMAND COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/pthreads/src/external_pthreads < ${PATCH_DIR}/pthreads.diff BUILD_COMMAND ${PTHREADS_BUILD} INSTALL_COMMAND COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/pthreads/src/external_pthreads/libpthreadVC3${LIBEXT} ${LIBDIR}/pthreads/lib/pthreadVC3${LIBEXT} && diff --git a/build_files/build_environment/cmake/sndfile.cmake b/build_files/build_environment/cmake/sndfile.cmake index bafd8fe2ac6..df9b14c8887 100644 --- a/build_files/build_environment/cmake/sndfile.cmake +++ b/build_files/build_environment/cmake/sndfile.cmake @@ -60,3 +60,14 @@ if(UNIX) external_flac ) endif() + +if(BUILD_MODE STREQUAL Release AND WIN32) + ExternalProject_Add_Step(external_sndfile after_install + COMMAND lib /def:${BUILD_DIR}/sndfile/src/external_sndfile/src/libsndfile-1.def /machine:x64 /out:${BUILD_DIR}/sndfile/src/external_sndfile/src/libsndfile-1.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/sndfile/bin/libsndfile-1.dll ${HARVEST_TARGET}/sndfile/lib/libsndfile-1.dll + COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/sndfile/src/external_sndfile/src/libsndfile-1.lib ${HARVEST_TARGET}/sndfile/lib/libsndfile-1.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/sndfile/include/sndfile.h ${HARVEST_TARGET}/sndfile/include/sndfile.h + + DEPENDEES install + ) +endif() diff --git a/build_files/build_environment/cmake/tbb.cmake b/build_files/build_environment/cmake/tbb.cmake index 8bd2f3160d0..1cb852fb5d1 100644 --- a/build_files/build_environment/cmake/tbb.cmake +++ b/build_files/build_environment/cmake/tbb.cmake @@ -20,8 +20,10 @@ if(WIN32) -DTBB_BUILD_SHARED=On -DTBB_BUILD_TBBMALLOC=On -DTBB_BUILD_TBBMALLOC_PROXY=On - -DTBB_BUILD_STATIC=On -) + -DTBB_BUILD_STATIC=Off + ) + set(TBB_LIBRARY tbb) + set(TBB_STATIC_LIBRARY Off) else() set(TBB_EXTRA_ARGS -DTBB_BUILD_SHARED=Off @@ -29,6 +31,8 @@ else() -DTBB_BUILD_TBBMALLOC_PROXY=Off -DTBB_BUILD_STATIC=On ) + set(TBB_LIBRARY tbb_static) + set(TBB_STATIC_LIBRARY On) endif() # CMake script for TBB from https://github.com/wjakob/tbb/blob/master/CMakeLists.txt @@ -46,7 +50,8 @@ ExternalProject_Add(external_tbb if(WIN32) if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_tbb after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb_static.lib ${HARVEST_TARGET}/tbb/lib/tbb.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb.lib ${HARVEST_TARGET}/tbb/lib/tbb.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb.dll ${HARVEST_TARGET}/tbb/lib/tbb.dll COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc.lib ${HARVEST_TARGET}/tbb/lib/tbbmalloc.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc.dll ${HARVEST_TARGET}/tbb/lib/tbbmalloc.dll COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc_proxy.lib ${HARVEST_TARGET}/tbb/lib/tbbmalloc_proxy.lib @@ -57,7 +62,12 @@ if(WIN32) endif() if(BUILD_MODE STREQUAL Debug) ExternalProject_Add_Step(external_tbb after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb_static.lib ${HARVEST_TARGET}/tbb/lib/tbb_debug.lib + # findtbb.cmake in some deps *NEEDS* to find tbb.lib even if they are not going to use it + # to make that test pass, we place a copy with the right name in the lib folder. + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb_debug.lib ${LIBDIR}/tbb/lib/tbb.lib + # Normal collection of build artifacts + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb_debug.lib ${HARVEST_TARGET}/tbb/lib/debug/tbb_debug.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbb_debug.dll ${HARVEST_TARGET}/tbb/lib/debug/tbb_debug.dll COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc_proxy.lib ${HARVEST_TARGET}/tbb/lib/tbbmalloc_proxy_debug.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc.dll ${HARVEST_TARGET}/tbb/lib/debug/tbbmalloc.dll COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tbb/lib/tbbmalloc_proxy.dll ${HARVEST_TARGET}/tbb/lib/debug/tbbmalloc_proxy.dll diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index c3594390f80..3e4535a6f92 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -22,9 +22,11 @@ set(USD_EXTRA_ARGS -DBoost_USE_STATIC_LIBS=ON -DBoost_USE_STATIC_RUNTIME=OFF -DBOOST_ROOT=${LIBDIR}/boost + -DBoost_NO_SYSTEM_PATHS=ON + -DBoost_NO_BOOST_CMAKE=ON -DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include - -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT} - -DTbb_TBB_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT} + -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${LIBEXT} + -DTbb_TBB_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${LIBEXT} # This is a preventative measure that avoids possible conflicts when add-ons # try to load another USD library into the same process space. diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index d1e729a29e5..c1dcf98318c 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -20,17 +20,17 @@ set(ZLIB_VERSION 1.2.11) set(ZLIB_URI https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz) set(ZLIB_HASH 1c9f62f0778697a09d36121ead88e08e) -set(OPENAL_VERSION 1.18.2) +set(OPENAL_VERSION 1.20.1) set(OPENAL_URI http://openal-soft.org/openal-releases/openal-soft-${OPENAL_VERSION}.tar.bz2) -set(OPENAL_HASH d4eeb0889812e2fdeaa1843523d76190) +set(OPENAL_HASH 556695068ce8375b89986083d810fd35) -set(PNG_VERSION 1.6.35) +set(PNG_VERSION 1.6.37) set(PNG_URI http://prdownloads.sourceforge.net/libpng/libpng-${PNG_VERSION}.tar.xz) -set(PNG_HASH 678b7e696a62a193ed3503b04bf449d6) +set(PNG_HASH 505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca) -set(JPEG_VERSION 1.5.3) +set(JPEG_VERSION 2.0.4) set(JPEG_URI https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${JPEG_VERSION}.tar.gz) -set(JPEG_HASH 5b7549d440b86c98a517355c102d155e) +set(JPEG_HASH 44c43e4a9fb352f47090804529317c88) set(BOOST_VERSION 1.70.0) set(BOOST_VERSION_NODOTS 1_70_0) @@ -66,9 +66,9 @@ else() set(OPENEXR_VERSION_POSTFIX) endif() -set(FREETYPE_VERSION 2.10.1) +set(FREETYPE_VERSION 2.10.2) set(FREETYPE_URI http://prdownloads.sourceforge.net/freetype/freetype-${FREETYPE_VERSION}.tar.gz) -set(FREETYPE_HASH c50a3c9e5e62bdc938a6e1598a782947) +set(FREETYPE_HASH b1cb620e4c875cd4d1bfa04945400945) set(GLEW_VERSION 1.13.0) set(GLEW_URI http://prdownloads.sourceforge.net/glew/glew/${GLEW_VERSION}/glew-${GLEW_VERSION}.tgz) @@ -101,21 +101,21 @@ set(CUEW_GIT_UID 1744972026de9cf27c8a7dc39cf39cd83d5f922f) set(CUEW_URI https://github.com/CudaWrangler/cuew/archive/${CUEW_GIT_UID}.zip) set(CUEW_HASH 86760d62978ebfd96cd93f5aa1abaf4a) -set(OPENSUBDIV_VERSION v3_4_0_RC2) -set(OPENSUBDIV_Hash f6a10ba9efaa82fde86fe65aad346319) +set(OPENSUBDIV_VERSION v3_4_3) set(OPENSUBDIV_URI https://github.com/PixarAnimationStudios/OpenSubdiv/archive/${OPENSUBDIV_VERSION}.tar.gz) +set(OPENSUBDIV_HASH 7bbfa275d021fb829e521df749160edb) -set(SDL_VERSION 2.0.8) +set(SDL_VERSION 2.0.12) set(SDL_URI https://www.libsdl.org/release/SDL2-${SDL_VERSION}.tar.gz) -set(SDL_HASH 3800d705cef742c6a634f202c37f263f) +set(SDL_HASH 783b6f2df8ff02b19bb5ce492b99c8ff) set(OPENCOLLADA_VERSION v1.6.68) set(OPENCOLLADA_URI https://github.com/KhronosGroup/OpenCOLLADA/archive/${OPENCOLLADA_VERSION}.tar.gz) set(OPENCOLLADA_HASH ee7dae874019fea7be11613d07567493) -set(OPENCOLORIO_VERSION 1.1.0) -set(OPENCOLORIO_URI https://github.com/imageworks/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) -set(OPENCOLORIO_HASH 802d8f5b1d1fe316ec5f76511aa611b8) +set(OPENCOLORIO_VERSION 1.1.1) +set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) +set(OPENCOLORIO_HASH 23d8b9ac81599305539a5a8674b94a3d) set(LLVM_VERSION 9.0.1) set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz) @@ -127,17 +127,17 @@ set(CLANG_HASH 13468e4a44940efef1b75e8641752f90) set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz) set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf) -set(OPENIMAGEIO_VERSION 1.8.13) +set(OPENIMAGEIO_VERSION 2.1.15.0) set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/Release-${OPENIMAGEIO_VERSION}.tar.gz) -set(OPENIMAGEIO_HASH f5526c3c9878029ee900d84856683f93) +set(OPENIMAGEIO_HASH f03aa5e3ac4795af04771ee4146e9832) -set(TIFF_VERSION 4.0.9) +set(TIFF_VERSION 4.1.0) set(TIFF_URI http://download.osgeo.org/libtiff/tiff-${TIFF_VERSION}.tar.gz) -set(TIFF_HASH 54bad211279cc93eb4fca31ba9bfdc79) +set(TIFF_HASH 2165e7aba557463acc0664e71a3ed424) -set(OSL_VERSION 1.10.9) +set(OSL_VERSION 1.10.10) set(OSL_URI https://github.com/imageworks/OpenShadingLanguage/archive/Release-${OSL_VERSION}.tar.gz) -set(OSL_HASH a94f1e8506f7e8f5e993653de5c5fa00) +set(OSL_HASH 00dec08a93c8084e53848b9ad047889f) set(PYTHON_VERSION 3.7.4) set(PYTHON_SHORT_VERSION 3.7) @@ -168,9 +168,9 @@ set(LAME_VERSION 3.100) set(LAME_URI http://downloads.sourceforge.net/project/lame/lame/3.100/lame-${LAME_VERSION}.tar.gz) set(LAME_HASH 83e260acbe4389b54fe08e0bdbf7cddb) -set(OGG_VERSION 1.3.3) +set(OGG_VERSION 1.3.4) set(OGG_URI http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz) -set(OGG_HASH c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985) +set(OGG_HASH fe5670640bd49e828d64d2879c31cb4dde9758681bb664f9bdbf159a01b0c76e) set(VORBIS_VERSION 1.3.6) set(VORBIS_URI http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz) @@ -180,47 +180,41 @@ set(THEORA_VERSION 1.1.1) set(THEORA_URI http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.bz2) set(THEORA_HASH b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc) -set(FLAC_VERSION 1.3.2) +set(FLAC_VERSION 1.3.3) set(FLAC_URI http://downloads.xiph.org/releases/flac/flac-${FLAC_VERSION}.tar.xz) -set(FLAC_HASH 91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f) +set(FLAC_HASH 213e82bd716c9de6db2f98bcadbc4c24c7e2efe8c75939a1a84e28539c4e1748) -set(VPX_VERSION 1.7.0) +set(VPX_VERSION 1.8.2) set(VPX_URI https://github.com/webmproject/libvpx/archive/v${VPX_VERSION}/libvpx-v${VPX_VERSION}.tar.gz) -set(VPX_HASH 1fec931eb5c94279ad219a5b6e0202358e94a93a90cfb1603578c326abfc1238) +set(VPX_HASH 8735d9fcd1a781ae6917f28f239a8aa358ce4864ba113ea18af4bb2dc8b474ac) set(OPUS_VERSION 1.3.1) set(OPUS_URI https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz) set(OPUS_HASH 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d) -set(X264_URI http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180811-2245-stable.tar.bz2) -set(X264_HASH ae8a868a0e236a348b35d79f3ee80294b169d1195408b689f9851383661ed7aa) +set(X264_URI https://code.videolan.org/videolan/x264/-/archive/master/x264-33f9e1474613f59392be5ab6a7e7abf60fa63622.tar.gz) +set(X264_HASH 300dfb5b6c35722516f168868ce9419252a9e9eb77a05d82c9cede925b691bd6) -set(XVIDCORE_VERSION 1.3.5) -set(XVIDCORE_URI http://downloads.xvid.org/downloads/xvidcore-${XVIDCORE_VERSION}.tar.gz) -set(XVIDCORE_HASH 165ba6a2a447a8375f7b06db5a3c91810181f2898166e7c8137401d7fc894cf0) +set(XVIDCORE_VERSION 1.3.7) +set(XVIDCORE_URI https://downloads.xvid.com/downloads/xvidcore-${XVIDCORE_VERSION}.tar.gz) +set(XVIDCORE_HASH abbdcbd39555691dd1c9b4d08f0a031376a3b211652c0d8b3b8aa9be1303ce2d) -# This has to be in sync with the version in blenders /extern folder. -set(OPENJPEG_VERSION 2.3.0) +set(OPENJPEG_VERSION 2.3.1) set(OPENJPEG_SHORT_VERSION 2.3) -# Use slightly newer commit after release which includes a cmake fix -set(OPENJPEG_URI https://github.com/uclouvain/openjpeg/archive/66297f07a43.zip) -set(OPENJPEG_HASH 8242b18d908c7c42174e4231a741cfa7ce7c26b6ed5c9644feb9df7b3054310b) +set(OPENJPEG_URI https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz) +set(OPENJPEG_HASH 63f5a4713ecafc86de51bfad89cc07bb788e9bba24ebbf0c4ca637621aadb6a9) -set(FAAD_VERSION 2-2.8.8) -set(FAAD_URI http://downloads.sourceforge.net/faac/faad${FAAD_VERSION}.tar.gz) -set(FAAD_HASH 28f6116efdbe9378269f8a6221767d1f) - -set(FFMPEG_VERSION 4.0.2) +set(FFMPEG_VERSION 4.2.3) set(FFMPEG_URI http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2) -set(FFMPEG_HASH 5576e8a22f80b6a336db39808f427cfb) +set(FFMPEG_HASH 695fad11f3baf27784e24cb0e977b65a) set(FFTW_VERSION 3.3.8) set(FFTW_URI http://www.fftw.org/fftw-${FFTW_VERSION}.tar.gz) set(FFTW_HASH 8aac833c943d8e90d51b697b27d4384d) -set(ICONV_VERSION 1.15) +set(ICONV_VERSION 1.16) set(ICONV_URI http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz) -set(ICONV_HASH ace8b5f2db42f7b3b3057585e80d9808) +set(ICONV_HASH 7d2a800b952942bb2880efb00cfd524c) set(LAPACK_VERSION 3.6.0) set(LAPACK_URI http://www.netlib.org/lapack/lapack-${LAPACK_VERSION}.tgz) @@ -267,9 +261,9 @@ set(LCMS_VERSION 2.9) set(LCMS_URI https://nchc.dl.sourceforge.net/project/lcms/lcms/${LCMS_VERSION}/lcms2-${LCMS_VERSION}.tar.gz) set(LCMS_HASH 8de1b7724f578d2995c8fdfa35c3ad0e) -set(PUGIXML_VERSION 1.9) -set(PUGIXML_URI https://github.com/zeux/pugixml/archive/v1.9.tar.gz) -set(PUGIXML_HASH 9346ca1dce2c48f1748c12fdac41a714) +set(PUGIXML_VERSION 1.10) +set(PUGIXML_URI https://github.com/zeux/pugixml/archive/v${PUGIXML_VERSION}.tar.gz) +set(PUGIXML_HASH 0c208b0664c7fb822bf1b49ad035e8fd) set(FLEXBISON_VERSION 2.5.5) set(FLEXBISON_URI http://prdownloads.sourceforge.net/winflexbison//win_flex_bison-2.5.5.zip) @@ -299,9 +293,9 @@ set(SQLITE_VERSION 3.24.0) set(SQLITE_URI https://www.sqlite.org/2018/sqlite-src-3240000.zip) set(SQLITE_HASH fb558c49ee21a837713c4f1e7e413309aabdd9c7) -set(EMBREE_VERSION 3.8.0) +set(EMBREE_VERSION 3.10.0) set(EMBREE_URI https://github.com/embree/embree/archive/v${EMBREE_VERSION}.zip) -set(EMBREE_HASH ac504d5426945fe25dec1267e0c39d52) +set(EMBREE_HASH 4bbe29e7eaa46417efc75fc5f1e8eb87) set(USD_VERSION 19.11) set(USD_URI https://github.com/PixarAnimationStudios/USD/archive/v${USD_VERSION}.tar.gz) @@ -319,6 +313,6 @@ set(MESA_VERSION 18.3.1) set(MESA_URI ftp://ftp.freedesktop.org/pub/mesa//mesa-${MESA_VERSION}.tar.xz) set(MESA_HASH d60828056d77bfdbae0970f9b15fb1be) -set(XR_OPENXR_SDK_VERSION 1.0.6) +set(XR_OPENXR_SDK_VERSION 1.0.8) set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz) -set(XR_OPENXR_SDK_HASH 21daea7c3bfec365298d779a0e19caa1) +set(XR_OPENXR_SDK_HASH c6de63d2e0f9029aa58dfa97cad8ce07) diff --git a/build_files/build_environment/cmake/x264.cmake b/build_files/build_environment/cmake/x264.cmake index eba0709e196..8bcb5a2938f 100644 --- a/build_files/build_environment/cmake/x264.cmake +++ b/build_files/build_environment/cmake/x264.cmake @@ -18,9 +18,6 @@ if(WIN32) set(X264_EXTRA_ARGS --enable-win32thread --cross-prefix=${MINGW_HOST}- --host=${MINGW_HOST}) - set(X264_PATCH_CMD ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/x264/src/external_x264 < ${PATCH_DIR}/x264.diff) -else() - set(X264_PATCH_CMD echo .) endif() @@ -29,7 +26,6 @@ ExternalProject_Add(external_x264 DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH SHA256=${X264_HASH} PREFIX ${BUILD_DIR}/x264 - PATCH_COMMAND ${X264_PATCH_CMD} CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/x264/src/external_x264/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/x264 --enable-static --enable-pic diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index bd6da85de44..9d9b975288d 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -53,15 +53,15 @@ getopt \ --long source:,install:,tmp:,info:,threads:,help,show-deps,no-sudo,no-build,no-confirm,\ with-all,with-opencollada,with-jack,with-embree,with-oidn,\ ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,ver-osd:,ver-openvdb:,ver-xr-openxr:,\ -force-all,force-python,force-numpy,force-boost,\ +force-all,force-python,force-numpy,force-boost,force-tbb,\ force-ocio,force-openexr,force-oiio,force-llvm,force-osl,force-osd,force-openvdb,\ force-ffmpeg,force-opencollada,force-alembic,force-embree,force-oidn,force-usd,\ force-xr-openxr,\ -build-all,build-python,build-numpy,build-boost,\ +build-all,build-python,build-numpy,build-boost,build-tbb,\ build-ocio,build-openexr,build-oiio,build-llvm,build-osl,build-osd,build-openvdb,\ build-ffmpeg,build-opencollada,build-alembic,build-embree,build-oidn,build-usd,\ build-xr-openxr,\ -skip-python,skip-numpy,skip-boost,\ +skip-python,skip-numpy,skip-boost,skip-tbb,\ skip-ocio,skip-openexr,skip-oiio,skip-llvm,skip-osl,skip-osd,skip-openvdb,\ skip-ffmpeg,skip-opencollada,skip-alembic,skip-embree,skip-oidn,skip-usd,\ skip-xr-openxr \ @@ -191,6 +191,9 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS: --build-boost Force the build of Boost. + --build-tbb + Force the build of TBB. + --build-ocio Force the build of OpenColorIO. @@ -255,6 +258,9 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS: --force-boost Force the rebuild of Boost. + --force-tbb + Force the rebuild of TBB. + --force-ocio Force the rebuild of OpenColorIO. @@ -312,6 +318,9 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS: --skip-boost Unconditionally skip Boost installation/building. + --skip-tbb + Unconditionally skip TBB installation/building. + --skip-ocio Unconditionally skip OpenColorIO installation/building. @@ -385,6 +394,13 @@ BOOST_FORCE_BUILD=false BOOST_FORCE_REBUILD=false BOOST_SKIP=false +TBB_VERSION="2019" +TBB_VERSION_UPDATE="_U9" # Used for source packages... +TBB_VERSION_MIN="2018" +TBB_FORCE_BUILD=false +TBB_FORCE_REBUILD=false +TBB_SKIP=false + OCIO_VERSION="1.1.0" OCIO_VERSION_MIN="1.0" OCIO_FORCE_BUILD=false @@ -420,7 +436,7 @@ OSL_FORCE_REBUILD=false OSL_SKIP=false # OpenSubdiv needs to be compiled for now -OSD_VERSION="3.4.0_RC2" +OSD_VERSION="3.4.3" OSD_VERSION_MIN=$OSD_VERSION OSD_FORCE_BUILD=false OSD_FORCE_REBUILD=false @@ -452,7 +468,7 @@ OPENCOLLADA_FORCE_BUILD=false OPENCOLLADA_FORCE_REBUILD=false OPENCOLLADA_SKIP=false -EMBREE_VERSION="3.8.0" +EMBREE_VERSION="3.10.0" EMBREE_FORCE_BUILD=false EMBREE_FORCE_REBUILD=false EMBREE_SKIP=false @@ -462,14 +478,14 @@ OIDN_FORCE_BUILD=false OIDN_FORCE_REBUILD=false OIDN_SKIP=false -FFMPEG_VERSION="4.0.2" +FFMPEG_VERSION="4.2.3" FFMPEG_VERSION_MIN="2.8.4" FFMPEG_FORCE_BUILD=false FFMPEG_FORCE_REBUILD=false FFMPEG_SKIP=false _ffmpeg_list_sep=";" -XR_OPENXR_VERSION="1.0.6" +XR_OPENXR_VERSION="1.0.8" XR_OPENXR_FORCE_BUILD=false XR_OPENXR_FORCE_REBUILD=false XR_OPENXR_SKIP=false @@ -653,6 +669,7 @@ while true; do PYTHON_FORCE_BUILD=true NUMPY_FORCE_BUILD=true BOOST_FORCE_BUILD=true + TBB_FORCE_BUILD=true OCIO_FORCE_BUILD=true OPENEXR_FORCE_BUILD=true OIIO_FORCE_BUILD=true @@ -682,6 +699,9 @@ while true; do --build-boost) BOOST_FORCE_BUILD=true; shift; continue ;; + --build-tbb) + TBB_FORCE_BUILD=true; shift; continue + ;; --build-ocio) OCIO_FORCE_BUILD=true; shift; continue ;; @@ -728,6 +748,7 @@ while true; do PYTHON_FORCE_REBUILD=true NUMPY_FORCE_REBUILD=true BOOST_FORCE_REBUILD=true + TBB_FORCE_REBUILD=true OCIO_FORCE_REBUILD=true OPENEXR_FORCE_REBUILD=true OIIO_FORCE_REBUILD=true @@ -755,6 +776,9 @@ while true; do --force-boost) BOOST_FORCE_REBUILD=true; shift; continue ;; + --force-tbb) + TBB_FORCE_REBUILD=true; shift; continue + ;; --force-ocio) OCIO_FORCE_REBUILD=true; shift; continue ;; @@ -806,6 +830,9 @@ while true; do --skip-boost) BOOST_SKIP=true; shift; continue ;; + --skip-tbb) + TBB_SKIP=true; shift; continue + ;; --skip-ocio) OCIO_SKIP=true; shift; continue ;; @@ -898,9 +925,12 @@ PYTHON_SOURCE=( "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHO NUMPY_SOURCE=( "https://github.com/numpy/numpy/releases/download/v$NUMPY_VERSION/numpy-$NUMPY_VERSION.tar.gz" ) _boost_version_nodots=`echo "$BOOST_VERSION" | sed -r 's/\./_/g'` -BOOST_SOURCE=( "http://sourceforge.net/projects/boost/files/boost/$BOOST_VERSION/boost_$_boost_version_nodots.tar.bz2/download" ) +BOOST_SOURCE=( "https://dl.bintray.com/boostorg/release/$BOOST_VERSION/source/boost_$_boost_version_nodots.tar.bz2" ) BOOST_BUILD_MODULES="--with-system --with-filesystem --with-thread --with-regex --with-locale --with-date_time --with-wave --with-iostreams --with-python --with-program_options" +TBB_SOURCE=( "https://github.com/oneapi-src/oneTBB/archive/$TBB_VERSION$TBB_VERSION_UPDATE.tar.gz" ) +TBB_SOURCE_CMAKE=( "https://raw.githubusercontent.com/wjakob/tbb/master/CMakeLists.txt" ) + OCIO_USE_REPO=false OCIO_SOURCE=( "https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v$OCIO_VERSION.tar.gz") #~ OCIO_SOURCE_REPO=( "https://github.com/imageworks/OpenColorIO.git" ) @@ -999,7 +1029,7 @@ Those libraries should be available as packages in all recent distributions (opt * libjpeg, libpng, libtiff, [openjpeg2], [libopenal]. * libx11, libxcursor, libxi, libxrandr, libxinerama (and other libx... as needed). * libsqlite3, libbz2, libssl, libfftw3, libxml2, libtinyxml, yasm, libyaml-cpp. - * libsdl1.2, libglew, [libglewmx].\"" + * libsdl2, libglew, [libglewmx].\"" DEPS_SPECIFIC_INFO="\"BUILDABLE DEPENDENCIES: @@ -1011,6 +1041,7 @@ You may also want to build them yourself (optional ones are [between brackets]): * Python $PYTHON_VERSION_MIN (from $PYTHON_SOURCE). * [NumPy $NUMPY_VERSION_MIN] (from $NUMPY_SOURCE). * Boost $BOOST_VERSION_MIN (from $BOOST_SOURCE, modules: $BOOST_BUILD_MODULES). + * TBB $TBB_VERSION_MIN (from $TBB_SOURCE). * [FFMpeg $FFMPEG_VERSION_MIN (needs libvorbis, libogg, libtheora, libx264, libmp3lame, libxvidcore, libvpx, ...)] (from $FFMPEG_SOURCE). * [OpenColorIO $OCIO_VERSION_MIN] (from $OCIO_SOURCE). * ILMBase $OPENEXR_VERSION_MIN (from $OPENEXR_SOURCE). @@ -1248,8 +1279,10 @@ _update_deps_python() { clean_Python() { clean_Numpy _init_python + if [ -d $_inst ]; then + _update_deps_python + fi _clean - _update_deps_python } compile_Python() { @@ -1289,7 +1322,7 @@ compile_Python() { ./configure --prefix=$_inst --libdir=$_inst/lib --enable-ipv6 \ --enable-loadable-sqlite-extensions --with-dbmliborder=bdb \ - --with-computed-gotos --with-pymalloc + --with-computed-gotos --with-pymalloc --enable-shared make -j$THREADS && make install make clean @@ -1310,6 +1343,8 @@ compile_Python() { INFO "Own Python-$PYTHON_VERSION is up to date, nothing to do!" INFO "If you want to force rebuild of this lib, use the --force-python option." fi + + run_ldconfig "python-$PYTHON_VERSION_MIN" } # ---------------------------------------------------------------------------- @@ -1330,8 +1365,10 @@ _update_deps_numpy() { clean_Numpy() { _init_numpy + if [ -d $_inst ]; then + _update_deps_numpy + fi _clean - _update_deps_numpy } compile_Numpy() { @@ -1416,8 +1453,10 @@ _update_deps_boost() { clean_Boost() { _init_boost + if [ -d $_inst ]; then + _update_deps_boost + fi _clean - _update_deps_boost } compile_Boost() { @@ -1483,6 +1522,130 @@ compile_Boost() { } # ---------------------------------------------------------------------------- +# Build TBB + +_init_tbb() { + _src=$SRC/TBB-$TBB_VERSION + _git=false + _inst=$INST/tbb-$TBB_VERSION + _inst_shortcut=$INST/tbb +} + +_update_deps_tbb() { + OSD_FORCE_REBUILD=true + OPENVDB_FORCE_REBUILD=true + USD_FORCE_REBUILD=true + EMBREE_FORCE_REBUILD=true + OIDN_FORCE_REBUILD=true + if [ "$_is_building" = true ]; then + OSD_FORCE_BUILD=true + OPENVDB_FORCE_BUILD=true + USD_FORCE_BUILD=true + EMBREE_FORCE_BUILD=true + OIDN_FORCE_BUILD=true + fi +} + +clean_TBB() { + _init_tbb + if [ -d $_inst ]; then + _update_deps_tbb + fi + _clean +} + +compile_TBB() { + if [ "$NO_BUILD" = true ]; then + WARNING "--no-build enabled, TBB will not be compiled!" + return + fi + + # To be changed each time we make edits that would modify the compiled result! + tbb_magic=0 + _init_tbb + + # Clean install if needed! + magic_compile_check tbb-$TBB_VERSION $tbb_magic + if [ $? -eq 1 -o "$TBB_FORCE_REBUILD" = true ]; then + clean_TBB + fi + + if [ ! -d $_inst ]; then + INFO "Building TBB-$TBB_VERSION$TBB_VERSION_UPDATE" + _is_building=true + + # Rebuild dependencies as well! + _update_deps_tbb + + prepare_opt + + if [ ! -d $_src ]; then + INFO "Downloading TBB-$TBB_VERSION$TBB_VERSION_UPDATE" + mkdir -p $SRC + + download TBB_SOURCE[@] $_src.tar.gz + INFO "Unpacking TBB-$TBB_VERSION$TBB_VERSION_UPDATE" + tar -C $SRC --transform "s,(.*/?)oneTBB[^/]*(.*),\1TBB-$TBB_VERSION\2,x" \ + -xf $_src.tar.gz + + INFO + + # Super-hack: Add some cmake builder to tbb... since they don't even have an install target by default, sic. + download TBB_SOURCE_CMAKE[@] $_src/CMakeLists.txt + cp $_src/build/vs2013/version_string.ver $_src/build/version_string.ver.in + fi + + cd $_src + + # Always refresh the whole build! + if [ -d cmake_build ]; then + rm -rf cmake_build + fi + mkdir cmake_build + cd cmake_build + + cmake_d="-D CMAKE_BUILD_TYPE=Release" + cmake_d="$cmake_d -D CMAKE_PREFIX_PATH=$_inst" + cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" + cmake_d="$cmake_d -D TBB_BUILD_SHARED=ON" + cmake_d="$cmake_d -D TBB_BUILD_STATIC=OFF" + cmake_d="$cmake_d -D TBB_BUILD_TBBMALLOC=ON" + cmake_d="$cmake_d -D TBB_BUILD_TBBMALLOC_PROXY=OFF" + cmake_d="$cmake_d -D TBB_BUILD_TESTS=OFF" + + if file /bin/cp | grep -q '32-bit'; then + cflags="-fPIC -m32 -march=i686" + else + cflags="-fPIC" + fi + + cmake $cmake_d -D CMAKE_CXX_FLAGS="$cflags" -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" .. + + make -j$THREADS && make install + + make clean + + if [ -d $_inst ]; then + _create_inst_shortcut + else + ERROR "TBB-$TBB_VERSION$TBB_VERSION_UPDATE failed to compile, exiting" + exit 1 + fi + + magic_compile_set tbb-$TBB_VERSION $tbb_magic + + cd $CWD + INFO "Done compiling TBB-$TBB_VERSION$TBB_VERSION_UPDATE!" + _is_building=false + else + INFO "Own TBB-$TBB_VERSION$TBB_VERSION_UPDATE is up to date, nothing to do!" + INFO "If you want to force rebuild of this lib, use the --force-tbb option." + fi + + run_ldconfig "tbb" +} + +# ---------------------------------------------------------------------------- # Build OCIO _init_ocio() { @@ -1502,8 +1665,10 @@ _update_deps_ocio() { clean_OCIO() { _init_ocio + if [ -d $_inst ]; then + _update_deps_ocio + fi _clean - _update_deps_ocio } compile_OCIO() { @@ -1615,7 +1780,7 @@ compile_OCIO() { _init_openexr() { _src=$SRC/OpenEXR-$OPENEXR_VERSION _git=false - _inst=$_openexr_inst + _inst=$INST/openexr-$OPENEXR_VERSION _inst_shortcut=$INST/openexr } @@ -1630,8 +1795,10 @@ _update_deps_openexr() { clean_OPENEXR() { _init_openexr + if [ -d $_inst ]; then + _update_deps_openexr + fi _clean - _update_deps_openexr } compile_OPENEXR() { @@ -1649,7 +1816,6 @@ compile_OPENEXR() { clean_OPENEXR fi - _openexr_inst=$INST/openexr-$OPENEXR_VERSION PRINT "" _init_openexr @@ -1695,7 +1861,7 @@ compile_OPENEXR() { mkdir build cd build - cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_openexr_inst" + cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" cmake_d="$cmake_d -D CMAKE_INSTALL_DOCDIR=/dev/null" # Hack, there is no option to disable that currently... cmake_d="$cmake_d -D BUILD_SHARED_LIBS=ON" cmake_d="$cmake_d -D BUILD_TESTING=OFF" @@ -1757,8 +1923,10 @@ _update_deps_oiio() { clean_OIIO() { _init_oiio + if [ -d $_inst ]; then + _update_deps_oiio + fi _clean - _update_deps_oiio } compile_OIIO() { @@ -1910,8 +2078,10 @@ _update_deps_llvm() { clean_LLVM() { _init_llvm + if [ -d $_inst ]; then + _update_deps_llvm + fi _clean - _update_deps_llvm } compile_LLVM() { @@ -2017,8 +2187,10 @@ _update_deps_osl() { clean_OSL() { _init_osl + if [ -d $_inst ]; then + _update_deps_osl + fi _clean - _update_deps_osl } compile_OSL() { @@ -2160,8 +2332,10 @@ _update_deps_osd() { clean_OSD() { _init_osd + if [ -d $_inst ]; then + _update_deps_osd + fi _clean - _update_deps_osd } compile_OSD() { @@ -2220,6 +2394,9 @@ compile_OSD() { mkdir build cd build + if [ -d $INST/tbb ]; then + cmake_d="$cmake_d $cmake_d -D TBB_LOCATION=$INST/tbb" + fi cmake_d="-D CMAKE_BUILD_TYPE=Release" cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" # ptex is only needed when nicholas bishop is ready @@ -2272,8 +2449,10 @@ _update_deps_blosc() { clean_BLOSC() { _init_blosc + if [ -d $_inst ]; then + _update_deps_blosc + fi _clean - _update_deps_blosc } compile_BLOSC() { @@ -2367,8 +2546,10 @@ _update_deps_openvdb() { clean_OPENVDB() { _init_openvdb + if [ -d $_inst ]; then + _update_deps_openvdb + fi _clean - _update_deps_openvdb } compile_OPENVDB() { @@ -2427,6 +2608,9 @@ compile_OPENVDB() { if [ -d $INST/boost ]; then make_d="$make_d BOOST_INCL_DIR=$INST/boost/include BOOST_LIB_DIR=$INST/boost/lib" fi + if [ -d $INST/tbb ]; then + make_d="$make_d TBB_ROOT=$INST/tbb TBB_USE_STATIC_LIBS=OFF" + fi if [ "$_with_built_openexr" = true ]; then make_d="$make_d ILMBASE_INCL_DIR=$INST/openexr/include ILMBASE_LIB_DIR=$INST/openexr/lib" @@ -2480,8 +2664,10 @@ _update_deps_alembic() { clean_ALEMBIC() { _init_alembic + if [ -d $_inst ]; then + _update_deps_alembic + fi _clean - _update_deps_alembic } compile_ALEMBIC() { @@ -2583,8 +2769,10 @@ _update_deps_usd() { clean_USD() { _init_usd + if [ -d $_inst ]; then + _update_deps_usd + fi _clean - _update_deps_usd } compile_USD() { @@ -2628,6 +2816,10 @@ compile_USD() { if [ -d $INST/boost ]; then cmake_d="$cmake_d $cmake_d -D BOOST_ROOT=$INST/boost" fi + + if [ -d $INST/tbb ]; then + cmake_d="$cmake_d $cmake_d -D TBB_ROOT_DIR=$INST/tbb" + fi cmake_d="$cmake_d -DPXR_SET_INTERNAL_NAMESPACE=usdBlender" cmake_d="$cmake_d -DPXR_ENABLE_PYTHON_SUPPORT=OFF" cmake_d="$cmake_d -DPXR_BUILD_IMAGING=OFF" @@ -2652,7 +2844,7 @@ compile_USD() { cd $CWD INFO "Done compiling USD-$USD_VERSION!" - _is_building=true + _is_building=false else INFO "Own USD-$USD_VERSION is up to date, nothing to do!" INFO "If you want to force rebuild of this lib, use the --force-usd option." @@ -2676,8 +2868,10 @@ _update_deps_collada() { clean_OpenCOLLADA() { _init_opencollada + if [ -d $_inst ]; then + _update_deps_collada + fi _clean - _update_deps_collada } compile_OpenCOLLADA() { @@ -2780,8 +2974,10 @@ _update_deps_embree() { clean_Embree() { _init_embree + if [ -d $_inst ]; then + _update_deps_embree + fi _clean - _update_deps_embree } compile_Embree() { @@ -2791,7 +2987,7 @@ compile_Embree() { fi # To be changed each time we make edits that would modify the compiled results! - embree_magic=9 + embree_magic=10 _init_embree # Clean install if needed! @@ -2845,9 +3041,13 @@ compile_Embree() { cmake_d="$cmake_d -D EMBREE_RAY_MASK=ON" cmake_d="$cmake_d -D EMBREE_FILTER_FUNCTION=ON" cmake_d="$cmake_d -D EMBREE_BACKFACE_CULLING=OFF" - cmake_d="$cmake_d -D EMBREE_TASKING_SYSTEM=INTERNAL" cmake_d="$cmake_d -D EMBREE_MAX_ISA=AVX2" + cmake_d="$cmake_d -D EMBREE_TASKING_SYSTEM=TBB" + if [ -d $INST/tbb ]; then + make_d="$make_d EMBREE_TBB_ROOT=$INST/tbb" + fi + cmake $cmake_d ../ make -j$THREADS && make install @@ -2887,8 +3087,10 @@ _update_deps_oidn() { clean_oidn() { _init_oidn + if [ -d $_inst ]; then + _update_deps_oidn + fi _clean - _update_deps_oidn } compile_OIDN() { @@ -2950,6 +3152,10 @@ compile_OIDN() { cmake_d="$cmake_d -D WITH_TEST=OFF" cmake_d="$cmake_d -D OIDN_STATIC_LIB=ON" + if [ -d $INST/tbb ]; then + make_d="$make_d TBB_ROOT=$INST/tbb" + fi + cmake $cmake_d ../ make -j$THREADS && make install @@ -2990,8 +3196,10 @@ _update_deps_ffmpeg() { clean_FFmpeg() { _init_ffmpeg + if [ -d $_inst ]; then + _update_deps_ffmpeg + fi _clean - _update_deps_ffmpeg } compile_FFmpeg() { @@ -3117,8 +3325,10 @@ _update_deps_xr_openxr_sdk() { clean_XR_OpenXR_SDK() { _init_xr_openxr_sdk + if [ -d $_inst ]; then + _update_deps_xr_openxr_sdk + fi _clean - _update_deps_xr_openxr_sdk } compile_XR_OpenXR_SDK() { @@ -3132,7 +3342,7 @@ compile_XR_OpenXR_SDK() { _init_xr_openxr_sdk # Clean install if needed! - magic_compile_check xr-openxr-$OPENXR_VERSION $xr_openxr_magic + magic_compile_check xr-openxr-$XR_OPENXR_VERSION $xr_openxr_magic if [ $? -eq 1 -o "$XR_OPENXR_FORCE_REBUILD" = true ]; then clean_XR_OpenXR_SDK fi @@ -3309,11 +3519,11 @@ install_DEB() { THEORA_DEV="libtheora-dev" _packages="gawk cmake cmake-curses-gui build-essential libjpeg-dev libpng-dev libtiff-dev \ - git libfreetype6-dev libx11-dev flex bison libtbb-dev libxxf86vm-dev \ + git libfreetype6-dev libx11-dev flex bison libxxf86vm-dev \ libxcursor-dev libxi-dev wget libsqlite3-dev libxrandr-dev libxinerama-dev \ libbz2-dev libncurses5-dev libssl-dev liblzma-dev libreadline-dev \ libopenal-dev libglew-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \ - libsdl1.2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev libjemalloc-dev" + libsdl2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev libjemalloc-dev" # libglewmx-dev (broken in deb testing currently...) VORBIS_USE=true @@ -3519,6 +3729,23 @@ install_DEB() { PRINT "" + if [ "$TBB_SKIP" = true ]; then + WARNING "Skipping TBB installation, as requested..." + elif [ "$TBB_FORCE_BUILD" = true ]; then + INFO "Forced TBB building, as requested..." + compile_TBB + else + check_package_version_ge_DEB libtbb-dev $TBB_VERSION_MIN + if [ $? -eq 0 ]; then + install_packages_DEB libtbb-dev + clean_TBB + else + compile_TBB + fi + fi + + + PRINT "" if [ "$OCIO_SKIP" = true ]; then WARNING "Skipping OpenColorIO installation, as requested..." elif [ "$OCIO_FORCE_BUILD" = true ]; then @@ -3942,7 +4169,7 @@ install_RPM() { THEORA_DEV="libtheora-devel" _packages="gcc gcc-c++ git make cmake tar bzip2 xz findutils flex bison \ - libtiff-devel libjpeg-devel libpng-devel sqlite-devel fftw-devel SDL-devel \ + libtiff-devel libjpeg-devel libpng-devel sqlite-devel fftw-devel SDL2-devel \ libX11-devel libXi-devel libXcursor-devel libXrandr-devel libXinerama-devel \ wget ncurses-devel readline-devel $OPENJPEG_DEV openal-soft-devel \ glew-devel yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV patch \ @@ -3954,7 +4181,7 @@ install_RPM() { THEORA_USE=true if [ "$RPM" = "FEDORA" -o "$RPM" = "RHEL" ]; then - _packages="$_packages freetype-devel tbb-devel" + _packages="$_packages freetype-devel" if [ "$WITH_JACK" = true ]; then _packages="$_packages jack-audio-connection-kit-devel" @@ -3996,17 +4223,6 @@ install_RPM() { install_packages_RPM $_packages PRINT "" - # Install TBB on openSUSE, from temporary repo - check_package_RPM tbb-devel - if [ $? -eq 0 ]; then - install_packages_RPM tbb-devel - else - $SUDO zypper ar -f http://download.opensuse.org/repositories/devel:/libraries:/c_c++/openSUSE_$_suse_rel/devel:libraries:c_c++.repo - $SUDO zypper -n --gpg-auto-import-keys install tbb-devel - $SUDO zypper rr devel_libraries_c_c++ - fi - - PRINT "" X264_DEV="libx264-devel" check_package_version_ge_RPM $X264_DEV $X264_VERSION_MIN if [ $? -eq 0 ]; then @@ -4142,6 +4358,23 @@ install_RPM() { PRINT "" + if [ "$TBB_SKIP" = true ]; then + WARNING "Skipping TBB installation, as requested..." + elif [ "$TBB_FORCE_BUILD" = true ]; then + INFO "Forced TBB building, as requested..." + compile_TBB + else + check_package_version_ge_RPM tbb-devel $TBB_VERSION_MIN + if [ $? -eq 0 ]; then + install_packages_RPM tbb-devel + clean_TBB + else + compile_TBB + fi + fi + + + PRINT "" if [ "$OCIO_SKIP" = true ]; then WARNING "Skipping OpenColorIO installation, as requested..." elif [ "$OCIO_FORCE_BUILD" = true ]; then @@ -4497,7 +4730,7 @@ install_ARCH() { _packages="$BASE_DEVEL git cmake \ libxi libxcursor libxrandr libxinerama glew libpng libtiff wget openal \ - $OPENJPEG_DEV $VORBIS_DEV $OGG_DEV $THEORA_DEV yasm sdl fftw intel-tbb \ + $OPENJPEG_DEV $VORBIS_DEV $OGG_DEV $THEORA_DEV yasm sdl2 fftw \ libxml2 yaml-cpp tinyxml python-requests jemalloc" OPENJPEG_USE=true @@ -4637,6 +4870,23 @@ install_ARCH() { PRINT "" + if [ "$TBB_SKIP" = true ]; then + WARNING "Skipping TBB installation, as requested..." + elif [ "$TBB_FORCE_BUILD" = true ]; then + INFO "Forced TBB building, as requested..." + compile_TBB + else + check_package_version_ge_ARCH intel-tbb $TBB_VERSION_MIN + if [ $? -eq 0 ]; then + install_packages_ARCH intel-tbb + clean_TBB + else + compile_TBB + fi + fi + + + PRINT "" if [ "$OCIO_SKIP" = true ]; then WARNING "Skipping OpenColorIO installation, as requested..." elif [ "$OCIO_FORCE_BUILD" = true ]; then @@ -4930,15 +5180,10 @@ install_OTHER() { fi PRINT "" - _do_compile_python=false if [ "$PYTHON_SKIP" = true ]; then WARNING "Skipping Python/NumPy installation, as requested..." elif [ "$PYTHON_FORCE_BUILD" = true ]; then INFO "Forced Python/NumPy building, as requested..." - _do_compile_python=true - fi - - if [ "$_do_compile_python" = true ]; then compile_Python PRINT "" if [ "$NUMPY_SKIP" = true ]; then @@ -4959,6 +5204,15 @@ install_OTHER() { PRINT "" + if [ "$TBB_SKIP" = true ]; then + WARNING "Skipping TBB installation, as requested..." + elif [ "$TBB_FORCE_BUILD" = true ]; then + INFO "Forced TBB building, as requested..." + compile_TBB + fi + + + PRINT "" if [ "$OCIO_SKIP" = true ]; then WARNING "Skipping OpenColorIO installation, as requested..." elif [ "$OCIO_FORCE_BUILD" = true ]; then @@ -4987,16 +5241,10 @@ install_OTHER() { PRINT "" have_llvm=false - _do_compile_llvm=false if [ "$LLVM_SKIP" = true ]; then WARNING "Skipping LLVM installation, as requested (this also implies skipping OSL!)..." elif [ "$LLVM_FORCE_BUILD" = true ]; then INFO "Forced LLVM building, as requested..." - _do_compile_llvm=true - fi - - if [ "$_do_compile_llvm" = true ]; then - PRINT "" compile_LLVM have_llvm=true LLVM_VERSION_FOUND=$LLVM_VERSION @@ -5004,15 +5252,10 @@ install_OTHER() { PRINT "" - _do_compile_osl=false if [ "$OSL_SKIP" = true ]; then WARNING "Skipping OpenShadingLanguage installation, as requested..." elif [ "$OSL_FORCE_BUILD" = true ]; then INFO "Forced OpenShadingLanguage building, as requested..." - _do_compile_osl=true - fi - - if [ "$_do_compile_osl" = true ]; then if [ "$have_llvm" = true ]; then PRINT "" compile_OSL @@ -5023,66 +5266,40 @@ install_OTHER() { PRINT "" - _do_compile_osd=false if [ "$OSD_SKIP" = true ]; then WARNING "Skipping OpenSubdiv installation, as requested..." elif [ "$OSD_FORCE_BUILD" = true ]; then INFO "Forced OpenSubdiv building, as requested..." - _do_compile_osd=true - fi - - if [ "$_do_compile_osd" = true ]; then - PRINT "" compile_OSD fi if [ "$WITH_OPENCOLLADA" = true ]; then - _do_compile_collada=false PRINT "" if [ "$OPENCOLLADA_SKIP" = true ]; then WARNING "Skipping OpenCOLLADA installation, as requested..." elif [ "$OPENCOLLADA_FORCE_BUILD" = true ]; then INFO "Forced OpenCollada building, as requested..." - _do_compile_collada=true - fi - - if [ "$_do_compile_collada" = true ]; then - PRINT "" compile_OpenCOLLADA fi fi if [ "$WITH_EMBREE" = true ]; then - _do_compile_embree=false PRINT "" if [ "$EMBREE_SKIP" = true ]; then WARNING "Skipping Embree installation, as requested..." elif [ "$EMBREE_FORCE_BUILD" = true ]; then INFO "Forced Embree building, as requested..." - _do_compile_embree=true - fi - - if [ "$_do_compile_embree" = true ]; then - PRINT "" compile_Embree fi fi if [ "$WITH_OIDN" = true ]; then - _do_compile_oidn=false PRINT "" if [ "$OIDN_SKIP" = true ]; then WARNING "Skipping OpenImgeDenoise installation, as requested..." elif [ "$OIDN_FORCE_BUILD" = true ]; then INFO "Forced OpenImageDenoise building, as requested..." - _do_compile_oidn=true - else - # No package currently! - _do_compile_oidn=true - fi - - if [ "$_do_compile_oidn" = true ]; then compile_OIDN fi fi @@ -5101,9 +5318,6 @@ install_OTHER() { elif [ "$XR_OPENXR_FORCE_BUILD" = true ]; then INFO "Forced OpenXR-SDK building, as requested..." compile_XR_OpenXR_SDK - else - # No package currently! - compile_XR_OpenXR_SDK fi } @@ -5189,7 +5403,7 @@ print_info() { PRINT "" PRINT "If you're using CMake add this to your configuration flags:" - _buildargs="-U *SNDFILE* -U *PYTHON* -U *BOOST* -U *Boost*" + _buildargs="-U *SNDFILE* -U PYTHON* -U *BOOST* -U *Boost* -U *TBB*" _buildargs="$_buildargs -U *OPENCOLORIO* -U *OPENEXR* -U *OPENIMAGEIO* -U *LLVM* -U *CYCLES*" _buildargs="$_buildargs -U *OPENSUBDIV* -U *OPENVDB* -U *COLLADA* -U *FFMPEG* -U *ALEMBIC* -U *USD*" @@ -5214,6 +5428,12 @@ print_info() { _buildargs="$_buildargs $_1 $_2" fi + if [ -d $INST/tbb ]; then + _1="-D TBB_ROOT_DIR=$INST/tbb" + PRINT " $_1" + _buildargs="$_buildargs $_1" + fi + if [ "$OCIO_SKIP" = false ]; then _1="-D WITH_OPENCOLORIO=ON" PRINT " $_1" @@ -5352,6 +5572,11 @@ print_info() { _1="-D WITH_USD=ON" PRINT " $_1" _buildargs="$_buildargs $_1" + if [ -d $INST/usd ]; then + _1="-D USD_ROOT_DIR=$INST/usd" + PRINT " $_1" + _buildargs="$_buildargs $_1" + fi fi if [ "$NO_SYSTEM_GLEW" = true ]; then diff --git a/build_files/build_environment/patches/cmakelists_tbb.txt b/build_files/build_environment/patches/cmakelists_tbb.txt index da9fd938943..7edf3aa2785 100644 --- a/build_files/build_environment/patches/cmakelists_tbb.txt +++ b/build_files/build_environment/patches/cmakelists_tbb.txt @@ -109,6 +109,9 @@ if (WIN32) MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/src/tbbmalloc/${ARCH_PREFIX}-tbbmalloc-export.def COMMENT "Preprocessing tbbmalloc.def" ) + list(APPEND tbb_src ${CMAKE_CURRENT_SOURCE_DIR}/src/tbb/tbb_resource.rc) + list(APPEND tbbmalloc_src ${CMAKE_CURRENT_SOURCE_DIR}/src/tbbmalloc/tbbmalloc.rc) + list(APPEND tbbmalloc_proxy_src ${CMAKE_CURRENT_SOURCE_DIR}/src/tbbmalloc/tbbmalloc.rc) else() add_custom_command(OUTPUT tbb.def COMMAND ${CMAKE_CXX_COMPILER} -xc++ -E ${CMAKE_CURRENT_SOURCE_DIR}/src/tbb/${ARCH_PREFIX}-tbb-export.def -I ${CMAKE_CURRENT_SOURCE_DIR}/include -o tbb.def @@ -145,8 +148,12 @@ if (TBB_BUILD_SHARED) set_property(TARGET tbb APPEND PROPERTY LINK_FLAGS "-Wl,-version-script,${CMAKE_CURRENT_BINARY_DIR}/tbb.def") elseif(WIN32) set_property(TARGET tbb APPEND PROPERTY LINK_FLAGS "/DEF:${CMAKE_CURRENT_BINARY_DIR}/tbb.def") + endif() install(TARGETS tbb DESTINATION lib) + if(WIN32) + set_target_properties(tbb PROPERTIES OUTPUT_NAME "tbb$<$<CONFIG:Debug>:_debug>") + endif() endif() if(CMAKE_COMPILER_IS_GNUCC) @@ -196,7 +203,7 @@ if(TBB_BUILD_TBBMALLOC_PROXY) add_library(tbbmalloc_proxy SHARED ${tbbmalloc_proxy_src}) set_property(TARGET tbbmalloc_proxy APPEND PROPERTY COMPILE_DEFINITIONS "__TBBMALLOC_BUILD=1") set_property(TARGET tbbmalloc_proxy APPEND_STRING PROPERTY COMPILE_FLAGS ${DISABLE_RTTI}) - link_libraries(tbbmalloc_proxy tbbmalloc) + target_link_libraries(tbbmalloc_proxy tbbmalloc) install(TARGETS tbbmalloc_proxy DESTINATION lib) endif() endif() diff --git a/build_files/build_environment/patches/openal.diff b/build_files/build_environment/patches/openal.diff deleted file mode 100644 index 2c9862b95a0..00000000000 --- a/build_files/build_environment/patches/openal.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur external_openal_original/CMakeLists.txt external_openal/CMakeLists.txt ---- external_openal_original/CMakeLists.txt 2016-01-24 20:12:39 -0700 -+++ external_openal/CMakeLists.txt 2018-06-02 12:16:52 -0600 -@@ -885,7 +885,8 @@ - OPTION(ALSOFT_REQUIRE_MMDEVAPI "Require MMDevApi backend" OFF) - IF(HAVE_WINDOWS_H) - # Check MMSystem backend -- CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H -D_WIN32_WINNT=0x0502) -+ set(CMAKE_REQUIRED_FLAGS "-D_WIN32_WINNT=0x0502") -+ CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H) - IF(HAVE_MMSYSTEM_H) - CHECK_SHARED_FUNCTION_EXISTS(waveOutOpen "windows.h;mmsystem.h" winmm "" HAVE_LIBWINMM) - IF(HAVE_LIBWINMM) diff --git a/build_files/build_environment/patches/openimagedenoise.diff b/build_files/build_environment/patches/openimagedenoise.diff index f83b0776c30..7bfc3aa2eba 100644 --- a/build_files/build_environment/patches/openimagedenoise.diff +++ b/build_files/build_environment/patches/openimagedenoise.diff @@ -18,17 +18,6 @@ diff --git a/mkl-dnn/cmake/TBB.cmake b/mkl-dnn/cmake/TBB.cmake index 0711e699..c14210b6 100644 --- a/mkl-dnn/cmake/TBB.cmake +++ b/mkl-dnn/cmake/TBB.cmake -@@ -90,8 +90,8 @@ if(WIN32) - NO_DEFAULT_PATH - ) - set(TBB_LIB_DIR ${TBB_ROOT}/lib/${TBB_ARCH}/${TBB_VCVER}) -- find_library(TBB_LIBRARY tbb PATHS ${TBB_LIB_DIR} ${TBB_ROOT}/lib NO_DEFAULT_PATH) -- find_library(TBB_LIBRARY_MALLOC tbbmalloc PATHS ${TBB_LIB_DIR} ${TBB_ROOT}/lib NO_DEFAULT_PATH) -+ find_library(TBB_LIBRARY tbb_static PATHS ${TBB_LIB_DIR} ${TBB_ROOT}/lib NO_DEFAULT_PATH) -+ find_library(TBB_LIBRARY_MALLOC tbbmalloc_static PATHS ${TBB_LIB_DIR} ${TBB_ROOT}/lib NO_DEFAULT_PATH) - endif() - - else() @@ -138,13 +138,13 @@ else() set(TBB_LIBRARY_MALLOC TBB_LIBRARY_MALLOC-NOTFOUND) if(APPLE) diff --git a/build_files/build_environment/patches/openimageio.diff b/build_files/build_environment/patches/openimageio.diff new file mode 100644 index 00000000000..d05fc1f295f --- /dev/null +++ b/build_files/build_environment/patches/openimageio.diff @@ -0,0 +1,36 @@ +diff -Naur orig/CMakeLists.txt external_openimageio/CMakeLists.txt +--- orig/CMakeLists.txt 2020-05-10 21:43:52 -0600 ++++ external_openimageio/CMakeLists.txt 2020-05-13 17:03:35 -0600 +@@ -170,7 +170,7 @@ + add_subdirectory (src/iinfo) + add_subdirectory (src/maketx) + add_subdirectory (src/oiiotool) +- add_subdirectory (src/testtex) ++ #add_subdirectory (src/testtex) + add_subdirectory (src/iv) + endif () + +diff -Naur orig/src/cmake/compiler.cmake external_openimageio/src/cmake/compiler.cmake +--- orig/src/cmake/compiler.cmake 2020-05-10 21:43:52 -0600 ++++ external_openimageio/src/cmake/compiler.cmake 2020-05-13 17:02:54 -0600 +@@ -172,6 +172,7 @@ + add_definitions (-D_CRT_NONSTDC_NO_WARNINGS) + add_definitions (-D_SCL_SECURE_NO_WARNINGS) + add_definitions (-DJAS_WIN_MSVC_BUILD) ++ add_definitions (-DOPJ_STATIC) + endif (MSVC) + + if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" +diff -Naur orig/src/include/OpenImageIO/platform.h external_openimageio/src/include/OpenImageIO/platform.h +--- orig/src/include/OpenImageIO/platform.h 2020-05-10 21:43:52 -0600 ++++ external_openimageio/src/include/OpenImageIO/platform.h 2020-05-13 17:04:36 -0600 +@@ -41,6 +41,9 @@ + # ifndef NOMINMAX + # define NOMINMAX + # endif ++# ifndef NOGDI ++# define NOGDI ++# endif + # include <windows.h> + #endif + diff --git a/build_files/build_environment/patches/openimageio_gdi.diff b/build_files/build_environment/patches/openimageio_gdi.diff deleted file mode 100644 index af0c90638de..00000000000 --- a/build_files/build_environment/patches/openimageio_gdi.diff +++ /dev/null @@ -1,26 +0,0 @@ -Index: OpenImageIO/osdep.h -=================================================================== ---- OpenImageIO/osdep.h (revision 61595) -+++ OpenImageIO/osdep.h (working copy) -@@ -34,6 +34,7 @@ - # define WIN32_LEAN_AND_MEAN - # define VC_EXTRALEAN - # define NOMINMAX -+# define NOGDI - # include <windows.h> - #endif - -Index: OpenImageIO/platform.h -=================================================================== ---- OpenImageIO/platform.h (revision 61595) -+++ OpenImageIO/platform.h (working copy) -@@ -77,6 +77,9 @@ - # ifndef NOMINMAX - # define NOMINMAX - # endif -+# ifndef NOGDI -+# define NOGDI -+# endif - # include <windows.h> - #endif - diff --git a/build_files/build_environment/patches/openimageio_static_libs.diff b/build_files/build_environment/patches/openimageio_static_libs.diff deleted file mode 100644 index 6a2e58bd139..00000000000 --- a/build_files/build_environment/patches/openimageio_static_libs.diff +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naur external_openimageio.orig/src/cmake/compiler.cmake external_openimageio/src/cmake/compiler.cmake ---- external_openimageio.orig/src/cmake/compiler.cmake 2018-07-31 23:45:19 -0600 -+++ external_openimageio/src/cmake/compiler.cmake 2018-08-16 12:50:12 -0600 -@@ -152,6 +152,7 @@ - add_definitions (-D_CRT_NONSTDC_NO_WARNINGS) - add_definitions (-D_SCL_SECURE_NO_WARNINGS) - add_definitions (-DJAS_WIN_MSVC_BUILD) -+ add_definitions (-DOPJ_STATIC) - endif (MSVC) - - # Use ccache if found ---- external_openimageio.orig/CMakeLists.txt 2018-07-31 23:45:19 -0600 -+++ external_openimageio/CMakeLists.txt 2018-08-17 15:22:56 -0600 -@@ -169,7 +169,7 @@ - add_subdirectory (src/iinfo) - add_subdirectory (src/maketx) - add_subdirectory (src/oiiotool) -- add_subdirectory (src/testtex) -+# add_subdirectory (src/testtex) - add_subdirectory (src/iv) - endif () - diff --git a/build_files/build_environment/patches/osl.diff b/build_files/build_environment/patches/osl.diff index b9b5937ae2b..989800174e2 100644 --- a/build_files/build_environment/patches/osl.diff +++ b/build_files/build_environment/patches/osl.diff @@ -48,3 +48,22 @@ diff -Naur OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp extern size_t LLVM_Util::total_jit_memory_held () +diff -Naur OpenShadingLanguage-Release-1.9.9/CMakeLists.txt external_osl/CMakeLists.txt + --- orig/CMakeLists.txt 2020-01-27 16:22:31 -0700 ++++ external_osl/CMakeLists.txt 2020-05-13 18:04:52 -0600 +@@ -102,10 +102,11 @@ + set (OPTIX_EXTRA_LIBS CACHE STRING "Extra lib targets needed for OptiX") + set (CUDA_TARGET_ARCH "sm_35" CACHE STRING "CUDA GPU architecture (e.g. sm_35)") + +-# set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static") +-# if (USE_OIIO_STATIC) +-# add_definitions ("-DOIIO_STATIC_BUILD=1") +-# endif () ++set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static") ++if (USE_OIIO_STATIC) ++ add_definitions ("-DOIIO_STATIC_BUILD=1") ++ add_definitions ("-DOIIO_STATIC_DEFINE=1") ++endif () + + set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem") + if (OSL_NO_DEFAULT_TEXTURESYSTEM)
\ No newline at end of file diff --git a/build_files/build_environment/patches/pthreads.diff b/build_files/build_environment/patches/pthreads.diff index bbabfdc8925..4b6c9766e11 100644 --- a/build_files/build_environment/patches/pthreads.diff +++ b/build_files/build_environment/patches/pthreads.diff @@ -1,13 +1,12 @@ ---- pthread.h.orig 2012-05-26 22:16:45 -0600 -+++ pthread.h 2016-04-01 09:20:36 -0600 -@@ -109,6 +109,10 @@ - /* Include everything */ - #endif +diff -Naur orig/Makefile external_pthreads/Makefile +--- orig/Makefile 2018-08-08 04:47:40 -0600 ++++ external_pthreads/Makefile 2020-05-09 11:20:28 -0600 +@@ -185,7 +185,7 @@ + @ $(MAKE) /E /nologo XCFLAGS="/MTd" EHFLAGS="$(VSEFLAGSD) /D__PTW32_STATIC_LIB /D__PTW32_BUILD_INLINED" CLEANUP=__PTW32_CLEANUP_SEH pthreadVSE$(PTW32_VER_DEBUG).inlined_static_stamp -+#if _MSC_VER >= 1900 -+# define HAVE_STRUCT_TIMESPEC 1 -+#endif -+ - #if defined(_UWIN) - # define HAVE_STRUCT_TIMESPEC 1 - # define HAVE_SIGNAL_H 1 + VC-static: +- @ $(MAKE) /E /nologo XCFLAGS="/MT" EHFLAGS="$(VCFLAGS) /D__PTW32_STATIC_LIB /D__PTW32_BUILD_INLINED" CLEANUP=__PTW32_CLEANUP_C pthreadVC$(PTW32_VER).inlined_static_stamp ++ @ $(MAKE) /E /nologo XCFLAGS="/MD" EHFLAGS="$(VCFLAGS) /D__PTW32_STATIC_LIB /D__PTW32_BUILD_INLINED" CLEANUP=__PTW32_CLEANUP_C pthreadVC$(PTW32_VER).inlined_static_stamp + + VC-static-debug: + @ $(MAKE) /E /nologo XCFLAGS="/MTd" EHFLAGS="$(VCFLAGSD) /D__PTW32_STATIC_LIB /D__PTW32_BUILD_INLINED" CLEANUP=__PTW32_CLEANUP_C pthreadVC$(PTW32_VER_DEBUG).inlined_static_stamp diff --git a/build_files/build_environment/patches/x264.diff b/build_files/build_environment/patches/x264.diff deleted file mode 100644 index 2f2e68083ac..00000000000 --- a/build_files/build_environment/patches/x264.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- x264-snapshot-20180811-2245-stable\configure 2018-08-11 14:45:05 -0600 -+++ external_x264\configure 2018-08-11 23:51:35 -0600 -@@ -396,7 +396,7 @@ - # list of all preprocessor HAVE values we can define - CONFIG_HAVE="MALLOC_H ALTIVEC ALTIVEC_H MMX ARMV6 ARMV6T2 NEON BEOSTHREAD POSIXTHREAD WIN32THREAD THREAD LOG2F SWSCALE \ - LAVF FFMS GPAC AVS GPL VECTOREXT INTERLACED CPU_COUNT OPENCL THP LSMASH X86_INLINE_ASM AS_FUNC INTEL_DISPATCHER \ -- MSA MMAP WINRT VSX ARM_INLINE_ASM STRTOK_R BITDEPTH8 BITDEPTH10" -+ MSA MMAP WINRT VSX ARM_INLINE_ASM BITDEPTH8 BITDEPTH10" - - # parse options - -@@ -1071,10 +1071,6 @@ - define HAVE_LOG2F - fi - --if cc_check 'string.h' '' 'strtok_r(0, 0, 0);' ; then -- define HAVE_STRTOK_R --fi -- - if [ "$SYS" != "WINDOWS" ] && cpp_check "sys/mman.h unistd.h" "" "defined(MAP_PRIVATE)"; then - define HAVE_MMAP - fi diff --git a/build_files/buildbot/buildbot_utils.py b/build_files/buildbot/buildbot_utils.py index 369bb28006d..2dc1526c5e8 100644 --- a/build_files/buildbot/buildbot_utils.py +++ b/build_files/buildbot/buildbot_utils.py @@ -78,27 +78,26 @@ class VersionInfo: blender_h = os.path.join(builder.blender_dir, "source", "blender", "blenkernel", "BKE_blender_version.h") version_number = int(self._parse_header_file(blender_h, 'BLENDER_VERSION')) - self.version = "%d.%d" % (version_number // 100, version_number % 100) - self.version_char = self._parse_header_file(blender_h, 'BLENDER_VERSION_CHAR') + version_number_patch = int(self._parse_header_file(blender_h, 'BLENDER_VERSION_PATCH')) + version_numbers = (version_number // 100, version_number % 100, version_number_patch) + self.short_version = "%d.%02d" % (version_numbers[0], version_numbers[1]) + self.version = "%d.%02d.%d" % version_numbers self.version_cycle = self._parse_header_file(blender_h, 'BLENDER_VERSION_CYCLE') self.version_cycle_number = self._parse_header_file(blender_h, 'BLENDER_VERSION_CYCLE_NUMBER') self.hash = self._parse_header_file(buildinfo_h, 'BUILD_HASH')[1:-1] if self.version_cycle == "release": # Final release - self.full_version = self.version + self.version_char + self.full_version = self.version self.is_development_build = False elif self.version_cycle == "rc": # Release candidate version_cycle = self.version_cycle + self.version_cycle_number - if len(self.version_char) == 0: - self.full_version = self.version + version_cycle - else: - self.full_version = self.version + self.version_char + '-' + version_cycle + self.full_version = self.version + version_cycle self.is_development_build = False else: # Development build - self.full_version = self.version + self.version_char + '-' + self.hash + self.full_version = self.version + '-' + self.hash self.is_development_build = True def _parse_header_file(self, filename, define): diff --git a/build_files/buildbot/config/blender_linux.cmake b/build_files/buildbot/config/blender_linux.cmake index c970ae4c9c1..29004654807 100644 --- a/build_files/buildbot/config/blender_linux.cmake +++ b/build_files/buildbot/config/blender_linux.cmake @@ -7,9 +7,6 @@ message(STATUS "Building in CentOS 7 64bit environment") set(LIBDIR_NAME "linux_centos7_x86_64") set(WITH_CXX11_ABI OFF CACHE BOOL "" FORCE) -# Default to only build Blender -set(WITH_BLENDER ON CACHE BOOL "" FORCE) - # ######## Linux-specific build options ######## # Options which are specific to Linux-only platforms @@ -20,12 +17,6 @@ set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE) set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE) set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE) -set(WITH_SYSTEM_GLEW OFF CACHE BOOL "" FORCE) - -set(WITH_OPENMP_STATIC ON CACHE BOOL "" FORCE) - -set(WITH_PYTHON_INSTALL_NUMPY ON CACHE BOOL "" FORCE) -set(WITH_PYTHON_INSTALL_REQUESTS ON CACHE BOOL "" FORCE) # ######## Release environment specific settings ######## @@ -33,13 +24,5 @@ set(LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../../../../lib/${LIBDIR_NAME}" CACHE STRI # Platform specific configuration, to ensure static linking against everything. -set(Boost_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) - -# We need to link OpenCOLLADA against PCRE library. Even though it is not installed -# on /usr, we do not really care -- all we care is PCRE_FOUND be TRUE and its -# library pointing to a valid one. -set(PCRE_INCLUDE_DIR "/usr/include" CACHE STRING "" FORCE) -set(PCRE_LIBRARY "${LIBDIR}/opencollada/lib/libpcre.a" CACHE STRING "" FORCE) - # Additional linking libraries set(CMAKE_EXE_LINKER_FLAGS "-lrt -static-libstdc++ -no-pie" CACHE STRING "" FORCE) diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index 3cefe2d5ec6..8549a7881e6 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -167,7 +167,7 @@ def pack_linux(builder): buildbot_utils.call(builder.command_prefix + ['strip', '--strip-all', blender_executable]) print("Stripping python...") - py_target = os.path.join(builder.install_dir, info.version) + py_target = os.path.join(builder.install_dir, info.short_version) buildbot_utils.call(builder.command_prefix + ['find', py_target, '-iname', '*.so', '-exec', 'strip', '-s', '{}', ';']) # Construct package name diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake index 2038726863f..3cf559a5da1 100644 --- a/build_files/cmake/Modules/FindOpenEXR.cmake +++ b/build_files/cmake/Modules/FindOpenEXR.cmake @@ -104,6 +104,7 @@ FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) FIND_LIBRARY(OPENEXR_${UPPERCOMPONENT}_LIBRARY NAMES ${COMPONENT}-${_openexr_libs_ver} ${COMPONENT} + NAMES_PER_DIR HINTS ${_openexr_SEARCH_DIRS} PATH_SUFFIXES diff --git a/build_files/cmake/Modules/FindUSD.cmake b/build_files/cmake/Modules/FindUSD.cmake index 97830af1dd9..043a10ffa98 100644 --- a/build_files/cmake/Modules/FindUSD.cmake +++ b/build_files/cmake/Modules/FindUSD.cmake @@ -43,6 +43,7 @@ FIND_PATH(USD_INCLUDE_DIR FIND_LIBRARY(USD_LIBRARY NAMES usd_m usd_ms + NAMES_PER_DIR HINTS ${_usd_SEARCH_DIRS} PATH_SUFFIXES diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake index 04e1670aef6..c36b264a300 100644 --- a/build_files/cmake/Modules/GTestTesting.cmake +++ b/build_files/cmake/Modules/GTestTesting.cmake @@ -66,6 +66,9 @@ macro(BLENDER_SRC_GTEST_EX) if(UNIX AND NOT APPLE) target_link_libraries(${TARGET_NAME} bf_intern_libc_compat) endif() + if(WITH_TBB) + target_link_libraries(${TARGET_NAME} ${TBB_LIBRARIES}) + endif() get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(GENERATOR_IS_MULTI_CONFIG) diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 7c94ce9d672..f3a6d4608fe 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -52,6 +52,7 @@ set(WITH_OPENVDB OFF CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW OFF CACHE BOOL "" FORCE) set(WITH_SDL OFF CACHE BOOL "" FORCE) set(WITH_TBB OFF CACHE BOOL "" FORCE) +set(WITH_USD OFF CACHE BOOL "" FORCE) if(UNIX AND NOT APPLE) set(WITH_GHOST_XDND OFF CACHE BOOL "" FORCE) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 6287da55580..a906dbc0bf4 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -440,6 +440,14 @@ function(SETUP_LIBDIRS) link_directories(${HDF5_LIBPATH}) endif() + if(WITH_GHOST_WAYLAND) + link_directories( + ${wayland-client_LIBRARY_DIRS} + ${wayland-egl_LIBRARY_DIRS} + ${xkbcommon_LIBRARY_DIRS} + ${wayland-cursor_LIBRARY_DIRS}) + endif() + if(WIN32 AND NOT UNIX) link_directories(${PTHREADS_LIBPATH}) endif() @@ -748,8 +756,7 @@ function(get_blender_version) # - BLENDER_VERSION (major.minor) # - BLENDER_VERSION_MAJOR # - BLENDER_VERSION_MINOR - # - BLENDER_SUBVERSION (used for internal versioning mainly) - # - BLENDER_VERSION_CHAR (a, b, c, ...or empty string) + # - BLENDER_VERSION_PATCH # - BLENDER_VERSION_CYCLE (alpha, beta, rc, release) # So cmake depends on BKE_blender.h, beware of inf-loops! @@ -759,25 +766,15 @@ function(get_blender_version) file(STRINGS ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender_version.h _contents REGEX "^#define[ \t]+BLENDER_.*$") string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION[ \t]+([0-9]+).*" "\\1" _out_version "${_contents}") - string(REGEX REPLACE ".*#define[ \t]+BLENDER_SUBVERSION[ \t]+([0-9]+).*" "\\1" _out_subversion "${_contents}") - string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CHAR[ \t]+([a-z]+).*" "\\1" _out_version_char "${_contents}") + string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_PATCH[ \t]+([0-9]+).*" "\\1" _out_version_patch "${_contents}") string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CYCLE[ \t]+([a-z]+).*" "\\1" _out_version_cycle "${_contents}") if(NOT ${_out_version} MATCHES "[0-9]+") message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION") endif() - if(NOT ${_out_subversion} MATCHES "[0-9]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_SUBVERSION") - endif() - - # clumsy regex, only single char are ok but it could be unset - - string(LENGTH "${_out_version_char}" _out_version_char_len) - if(NOT _out_version_char_len EQUAL 1) - set(_out_version_char "") - elseif(NOT ${_out_version_char} MATCHES "[a-z]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CHAR") + if(NOT ${_out_version_patch} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_PATCH") endif() if(NOT ${_out_version_cycle} MATCHES "[a-z]+") @@ -787,23 +784,11 @@ function(get_blender_version) math(EXPR _out_version_major "${_out_version} / 100") math(EXPR _out_version_minor "${_out_version} % 100") - # for packaging, alpha to numbers - string(COMPARE EQUAL "${_out_version_char}" "" _out_version_char_empty) - if(${_out_version_char_empty}) - set(_out_version_char_index "0") - else() - set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z) - list(FIND _char_ls ${_out_version_char} _out_version_char_index) - math(EXPR _out_version_char_index "${_out_version_char_index} + 1") - endif() - # output vars set(BLENDER_VERSION "${_out_version_major}.${_out_version_minor}" PARENT_SCOPE) set(BLENDER_VERSION_MAJOR "${_out_version_major}" PARENT_SCOPE) set(BLENDER_VERSION_MINOR "${_out_version_minor}" PARENT_SCOPE) - set(BLENDER_SUBVERSION "${_out_subversion}" PARENT_SCOPE) - set(BLENDER_VERSION_CHAR "${_out_version_char}" PARENT_SCOPE) - set(BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index}" PARENT_SCOPE) + set(BLENDER_VERSION_PATCH "${_out_version_patch}" PARENT_SCOPE) set(BLENDER_VERSION_CYCLE "${_out_version_cycle}" PARENT_SCOPE) endfunction() diff --git a/build_files/cmake/packaging.cmake b/build_files/cmake/packaging.cmake index 0e530463659..de27d31323d 100644 --- a/build_files/cmake/packaging.cmake +++ b/build_files/cmake/packaging.cmake @@ -7,7 +7,7 @@ set(PROJECT_VENDOR "Blender Foundation") set(MAJOR_VERSION ${BLENDER_VERSION_MAJOR}) set(MINOR_VERSION ${BLENDER_VERSION_MINOR}) -set(PATCH_VERSION ${BLENDER_VERSION_CHAR_INDEX}) +set(PATCH_VERSION ${BLENDER_VERSION_PATCH}) set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) set(CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION}) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 11889fc7a87..d8ee82d4c10 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -222,12 +222,10 @@ if(WITH_OPENCOLLADA) -lMathMLSolver -lGeneratedSaxParser -lbuffer -lftoa -lUTF - ${OPENCOLLADA_LIBPATH}/libxml2.a ) - # PCRE is bundled with openCollada - # set(PCRE ${LIBDIR}/pcre) - # set(PCRE_LIBPATH ${PCRE}/lib) + # PCRE and XML2 are bundled with OpenCollada. set(PCRE_LIBRARIES pcre) + set(XML2_LIBRARIES xml2) endif() if(WITH_SDL) @@ -449,7 +447,9 @@ if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5) # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024") endif() -# Get rid of eventually clashes, we export some symbols explicitly as local + +# Avoid conflicts with Luxrender, and other plug-ins that may use the same +# libraries as Blender with a different version or build options. set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker '${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map'" ) diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index dcb6b9d34f9..6e00a2dec7b 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -57,6 +57,7 @@ if(EXISTS ${LIBDIR}) set(BOOST_ROOT ${LIBDIR}/boost) set(BOOST_LIBRARYDIR ${LIBDIR}/boost/lib) set(Boost_NO_SYSTEM_PATHS ON) + set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr) endif() if(WITH_STATIC_LIBS) @@ -195,8 +196,14 @@ endif() if(WITH_OPENCOLLADA) find_package_wrapper(OpenCOLLADA) if(OPENCOLLADA_FOUND) + if(WITH_STATIC_LIBS) + # PCRE is bundled with OpenCollada without headers, so can't use + # find_package reliably to detect it. + set(PCRE_LIBRARIES ${LIBDIR}/opencollada/lib/libpcre.a) + else() + find_package_wrapper(PCRE) + endif() find_package_wrapper(XML2) - find_package_wrapper(PCRE) else() set(WITH_OPENCOLLADA OFF) endif() @@ -405,13 +412,6 @@ if(WITH_LLVM) endif() endif() -if(WITH_LLVM OR WITH_SDL_DYNLOAD) - # Fix for conflict with Mesa llvmpipe - set(PLATFORM_LINKFLAGS - "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'" - ) -endif() - if(WITH_OPENSUBDIV) find_package_wrapper(OpenSubdiv) @@ -505,7 +505,27 @@ if(WITH_SYSTEM_AUDASPACE) endif() endif() -if(WITH_X11) +if(WITH_GHOST_WAYLAND) + find_package(PkgConfig) + pkg_check_modules(wayland-client REQUIRED wayland-client>=1.12) + pkg_check_modules(wayland-egl REQUIRED wayland-egl) + pkg_check_modules(wayland-scanner REQUIRED wayland-scanner) + pkg_check_modules(xkbcommon REQUIRED xkbcommon) + pkg_check_modules(wayland-cursor REQUIRED wayland-cursor) + + set(WITH_GL_EGL ON) + + if(WITH_GHOST_WAYLAND) + list(APPEND PLATFORM_LINKLIBS + ${wayland-client_LIBRARIES} + ${wayland-egl_LIBRARIES} + ${xkbcommon_LIBRARIES} + ${wayland-cursor_LIBRARIES} + ) + endif() +endif() + +if(WITH_GHOST_X11) find_package(X11 REQUIRED) find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH}) @@ -576,6 +596,19 @@ if(CMAKE_COMPILER_IS_GNUCC) unset(LD_VERSION) endif() + if(WITH_LINKER_LLD) + execute_process( + COMMAND ${CMAKE_C_COMPILER} -fuse-ld=lld -Wl,--version + ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) + if("${LD_VERSION}" MATCHES "LLD") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=lld") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=lld") + else() + message(STATUS "LLD linker isn't available, using the default system linker.") + endif() + unset(LD_VERSION) + endif() + # CLang is the same as GCC for now. elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") @@ -601,3 +634,16 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel") endif() + +# Avoid conflicts with Mesa llvmpipe, Luxrender, and other plug-ins that may +# use the same libraries as Blender with a different version or build options. +set(PLATFORM_LINKFLAGS + "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'" +) + +# Don't use position independent executable for portable install since file +# browsers can't properly detect blender as an executable then. Still enabled +# for non-portable installs as typically used by Linux distributions. +if(WITH_INSTALL_PORTABLE) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie") +endif() diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 452deb497b2..db939b1d00c 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -51,6 +51,10 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang") endif() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \"${CLANG_OPENMP_LIB}\"") endif() + if(WITH_WINDOWS_STRIPPED_PDB) + message(WARNING "stripped pdb not supported with clang, disabling..") + set(WITH_WINDOWS_STRIPPED_PDB Off) + endif() endif() set_property(GLOBAL PROPERTY USE_FOLDERS ${WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS}) @@ -107,12 +111,13 @@ endif() unset(_min_ver) # needed for some MSVC installations -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") -set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO") +# 4099 : PDB 'filename' was not found with 'object/library' +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO /ignore:4099") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO /ignore:4099") +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO /ignore:4099") list(APPEND PLATFORM_LINKLIBS - ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 Comctl32 + ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 Comctl32 version advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp Shlwapi ) @@ -134,7 +139,12 @@ add_definitions(-D_ALLOW_KEYWORD_MACROS) # We want to support Windows 7 level ABI add_definitions(-D_WIN32_WINNT=0x601) include(build_files/cmake/platform/platform_win32_bundle_crt.cmake) -remove_cc_flag("/MDd" "/MD") +remove_cc_flag("/MDd" "/MD" "/Zi") + +if(WITH_WINDOWS_PDB) + set(PDB_INFO_OVERRIDE_FLAGS "/Z7") + set(PDB_INFO_OVERRIDE_LINKER_FLAGS "/DEBUG /OPT:REF /OPT:ICF /INCREMENTAL:NO") +endif() if(MSVC_CLANG) # Clangs version of cl doesn't support all flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARN_FLAGS} /nologo /J /Gd /EHsc -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference ") @@ -151,27 +161,42 @@ if(MSVC_VERSION GREATER 1911 AND NOT MSVC_CLANG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:twoPhase-") endif() +if(WITH_WINDOWS_SCCACHE AND CMAKE_VS_MSBUILD_COMMAND) + message(WARNING "Disabling sccache, sccache is not supported with msbuild") + set(WITH_WINDOWS_SCCACHE Off) +endif() -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd /ZI") -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd /ZI") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD") -set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MD") -set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MD") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD") -set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MD") - +if(WITH_WINDOWS_SCCACHE) + set(CMAKE_C_COMPILER_LAUNCHER sccache) + set(CMAKE_CXX_COMPILER_LAUNCHER sccache) + set(SYMBOL_FORMAT /Z7) +else() + unset(CMAKE_C_COMPILER_LAUNCHER) + unset(CMAKE_CXX_COMPILER_LAUNCHER) + set(SYMBOL_FORMAT /ZI) +endif() + +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd ${SYMBOL_FORMAT}") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd ${SYMBOL_FORMAT}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD ${PDB_INFO_OVERRIDE_FLAGS}") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD ${PDB_INFO_OVERRIDE_FLAGS}") +set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MD ${PDB_INFO_OVERRIDE_FLAGS}") +set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MD ${PDB_INFO_OVERRIDE_FLAGS}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD ${SYMBOL_FORMAT}") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MD ${SYMBOL_FORMAT}") +unset(SYMBOL_FORMAT) # JMC is available on msvc 15.8 (1915) and up if(MSVC_VERSION GREATER 1914 AND NOT MSVC_CLANG) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /JMC") endif() -set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO ") +set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /SUBSYSTEM:CONSOLE /STACK:2097152") set(PLATFORM_LINKFLAGS_RELEASE "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib") set(PLATFORM_LINKFLAGS_DEBUG "${PLATFORM_LINKFLAGS_DEBUG} /IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcmtd.lib") # Ignore meaningless for us linker warnings. set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /ignore:4049 /ignore:4217 /ignore:4221") +set(PLATFORM_LINKFLAGS_RELEASE "${PLATFORM_LINKFLAGS} ${PDB_INFO_OVERRIDE_LINKER_FLAGS}") set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4221") if(CMAKE_CL_64) @@ -209,7 +234,7 @@ endif() # Mark libdir as system headers with a lower warn level, to resolve some warnings # that we have very little control over -if(MSVC_VERSION GREATER_EQUAL 1914 AND NOT MSVC_CLANG) +if(MSVC_VERSION GREATER_EQUAL 1914 AND NOT MSVC_CLANG AND NOT WITH_WINDOWS_SCCACHE) add_compile_options(/experimental:external /external:templates- /external:I "${LIBDIR}" /external:W0) endif() @@ -453,7 +478,7 @@ if(WITH_OPENIMAGEIO) set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0") set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD") set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe") - add_definitions(-DOIIO_STATIC_BUILD) + add_definitions(-DOIIO_STATIC_DEFINE) add_definitions(-DOIIO_NO_SSE=1) endif() @@ -572,7 +597,7 @@ if(WITH_SYSTEM_AUDASPACE) endif() if(WITH_TBB) - set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) + set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/debug/tbb_debug.lib) set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) set(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR}) if(WITH_TBB_MALLOC_PROXY) @@ -669,7 +694,7 @@ if(WITH_USD) 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_LIBRARY_DIR ${LIBDIR}/usd/lib/usd) + set(USD_LIBRARY_DIR ${LIBDIR}/usd/lib) set(USD_LIBRARIES debug ${USD_DEBUG_LIB} optimized ${USD_RELEASE_LIB} diff --git a/build_files/utils/make_source_archive.sh b/build_files/utils/make_source_archive.sh index cafd1c31486..5d9096f3235 100755 --- a/build_files/utils/make_source_archive.sh +++ b/build_files/utils/make_source_archive.sh @@ -7,15 +7,14 @@ BASE_DIR="$PWD" blender_srcdir=$(dirname -- $0)/../.. blender_version=$(grep "BLENDER_VERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}') -blender_version_char=$(grep "BLENDER_VERSION_CHAR\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}') +blender_version_patch=$(grep "BLENDER_VERSION_PATCH\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}') blender_version_cycle=$(grep "BLENDER_VERSION_CYCLE\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}') -blender_subversion=$(grep "BLENDER_SUBVERSION\s" "$blender_srcdir/source/blender/blenkernel/BKE_blender_version.h" | awk '{print $3}') +VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100).$blender_version_patch if [ "$blender_version_cycle" = "release" ] ; then - VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char SUBMODULE_EXCLUDE="^\(release/scripts/addons_contrib\)$" else - VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion + VERSION=$VERSION-$blender_version_cycle SUBMODULE_EXCLUDE="^$" # dummy regex fi diff --git a/build_files/windows/configure_msbuild.cmd b/build_files/windows/configure_msbuild.cmd index 3c1194011cd..4956f1e3ea1 100644 --- a/build_files/windows/configure_msbuild.cmd +++ b/build_files/windows/configure_msbuild.cmd @@ -2,6 +2,11 @@ set BUILD_GENERATOR_POST= set BUILD_PLATFORM_SELECT= set MSBUILD_PLATFORM=x64 +if "%BUILD_WITH_SCCACHE%"=="1" ( + echo sccache is only supported with ninja as the build system. + exit /b 1 +) + if "%WITH_CLANG%"=="1" ( set CLANG_CMAKE_ARGS=-T"llvm" if "%WITH_ASAN%"=="1" ( diff --git a/build_files/windows/configure_ninja.cmd b/build_files/windows/configure_ninja.cmd index 1650e43cda9..20692847bef 100644 --- a/build_files/windows/configure_ninja.cmd +++ b/build_files/windows/configure_ninja.cmd @@ -6,6 +6,13 @@ if %ERRORLEVEL% NEQ 0 ( set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Ninja" %TESTS_CMAKE_ARGS% -DCMAKE_BUILD_TYPE=%BUILD_TYPE% +if "%BUILD_WITH_SCCACHE%"=="1" ( + set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DWITH_WINDOWS_SCCACHE=On + if NOT "%verbose%" == "" ( + echo Enabling sccache + ) +) + if "%WITH_CLANG%" == "1" ( set LLVM_DIR= for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM\LLVM" /ve 2^>nul`) DO set LLVM_DIR=%%C diff --git a/build_files/windows/detect_msvc_vswhere.cmd b/build_files/windows/detect_msvc_vswhere.cmd index 609375cee89..52f765c20c4 100644 --- a/build_files/windows/detect_msvc_vswhere.cmd +++ b/build_files/windows/detect_msvc_vswhere.cmd @@ -27,7 +27,13 @@ if NOT "%verbose%" == "" ( if "%VS_InstallDir%"=="" ( if NOT "%verbose%" == "" ( - echo Visual Studio is detected but the "Desktop development with C++" workload has not been instlled + echo. + echo Visual Studio is detected but no suitable installation was found. + echo. + echo Check the "Desktop development with C++" workload has been installed. + echo. + echo If you are attempting to use either Visual Studio Preview version or the Visual C++ Build tools, Please see 'make help' on how to opt in to those toolsets. + echo. goto FAIL ) ) diff --git a/build_files/windows/parse_arguments.cmd b/build_files/windows/parse_arguments.cmd index 4ee05bfde7d..54dc41ece87 100644 --- a/build_files/windows/parse_arguments.cmd +++ b/build_files/windows/parse_arguments.cmd @@ -86,6 +86,8 @@ if NOT "%1" == "" ( set BUILD_UPDATE_ARGS="--no-libraries" ) else if "%1" == "ninja" ( SET BUILD_WITH_NINJA=1 + ) else if "%1" == "sccache" ( + SET BUILD_WITH_SCCACHE=1 ) else if "%1" == "clean" ( set MUST_CLEAN=1 ) else if "%1" == "verbose" ( diff --git a/build_files/windows/reset_variables.cmd b/build_files/windows/reset_variables.cmd index 48a61aff44a..262874713eb 100644 --- a/build_files/windows/reset_variables.cmd +++ b/build_files/windows/reset_variables.cmd @@ -30,3 +30,4 @@ set WITH_PYDEBUG= set PYDEBUG_CMAKE_ARGS= set FORMAT= set TEST= +set BUILD_WITH_SCCACHE= |