diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-08-20 04:27:49 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-08-20 04:27:49 +0300 |
commit | 143511b9613faeb974082be036ee0b45917200ae (patch) | |
tree | 83725a8b33364bad5281d45e23e2e57b2588bdf6 | |
parent | b831accc01a5790b6112f70e8bb5d6b3a8e8ab4d (diff) | |
parent | 98efcdb1a0e31beff50922132e475695c3ae6af7 (diff) |
Merge branch 'master' into blender2.8
23 files changed, 267 insertions, 60 deletions
diff --git a/build_files/build_environment/cmake/alembic.cmake b/build_files/build_environment/cmake/alembic.cmake index 5ca142be124..4c0caecf335 100644 --- a/build_files/build_environment/cmake/alembic.cmake +++ b/build_files/build_environment/cmake/alembic.cmake @@ -38,12 +38,13 @@ set(ALEMBIC_EXTRA_ARGS -DBoost_DEBUG=ON -DBOOST_ROOT=${LIBDIR}/boost -DBoost_NO_SYSTEM_PATHS=ON - -DILMBASE_ROOT=${LIBDIR}/ilmbase - -DALEMBIC_ILMBASE_INCLUDE_DIRECTORY=${LIBDIR}/ilmbase/include/OpenEXR - -DALEMBIC_ILMBASE_HALF_LIB=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT} - -DALEMBIC_ILMBASE_IMATH_LIB=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Imath${ILMBASE_VERSION_POSTFIX}${LIBEXT} - -DALEMBIC_ILMBASE_ILMTHREAD_LIB=${LIBDIR}/ilmbase/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT} - -DALEMBIC_ILMBASE_IEX_LIB=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT} + -DILMBASE_ROOT=${LIBDIR}/openexr + -DALEMBIC_ILMBASE_INCLUDE_DIRECTORY=${LIBDIR}/openexr/include/OpenEXR + -DALEMBIC_ILMBASE_HALF_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT} + -DALEMBIC_ILMBASE_IMATH_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${ILMBASE_VERSION_POSTFIX}${LIBEXT} + -DALEMBIC_ILMBASE_ILMTHREAD_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT} + -DALEMBIC_ILMBASE_IEX_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT} + -DALEMBIC_ILMBASE_IEXMATH_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}IexMath${ILMBASE_VERSION_POSTFIX}${LIBEXT} -DUSE_PYILMBASE=0 -DUSE_PYALEMBIC=0 -DUSE_ARNOLD=0 @@ -54,7 +55,7 @@ set(ALEMBIC_EXTRA_ARGS -DHDF5_ROOT=${LIBDIR}/hdf5 -DUSE_TESTS=Off -DALEMBIC_NO_OPENGL=1 - -DUSE_BINARIES=OFF + -DUSE_BINARIES=ON -DALEMBIC_ILMBASE_LINK_STATIC=On -DALEMBIC_SHARED_LIBS=OFF -DGLUT_INCLUDE_DIR="" @@ -68,7 +69,6 @@ ExternalProject_Add(external_alembic DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${ALEMBIC_MD5} PREFIX ${BUILD_DIR}/alembic - PATCH_COMMAND ${CMAKE_COMMAND} -E copy_directory ${BUILD_DIR}/openexr/src/external_openexr/cmake ${BUILD_DIR}/alembic/src/external_alembic/cmake/modules CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/alembic -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${ALEMBIC_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/alembic ) @@ -85,7 +85,7 @@ if(WIN32) COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/alembic/lib/alembic.lib ${HARVEST_TARGET}/alembic/lib/alembic_d.lib DEPENDEES install ) - endif() + endif() endif() diff --git a/build_files/build_environment/cmake/blosc.cmake b/build_files/build_environment/cmake/blosc.cmake index 02f98dfe1f3..e432096b93f 100644 --- a/build_files/build_environment/cmake/blosc.cmake +++ b/build_files/build_environment/cmake/blosc.cmake @@ -28,12 +28,20 @@ set(BLOSC_EXTRA_ARGS -DDEACTIVATE_SNAPPY=ON ) +if(WIN32) + #prevent blosc from including it's own local copy of zlib in the object file + #and cause linker errors with everybody else + set(BLOSC_EXTRA_ARGS ${BLOSC_EXTRA_ARGS} + -DPREFER_EXTERNAL_ZLIB=ON + ) +endif() + ExternalProject_Add(external_blosc URL ${BLOSC_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${BLOSC_HASH} PREFIX ${BUILD_DIR}/blosc - #PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/blosc/src/external_blosc < ${PATCH_DIR}/blosc.diff + PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/blosc/src/external_blosc < ${PATCH_DIR}/blosc.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/blosc ${DEFAULT_CMAKE_FLAGS} ${BLOSC_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/blosc ) diff --git a/build_files/build_environment/cmake/boost.cmake b/build_files/build_environment/cmake/boost.cmake index 9be6ea9f011..959a6e22637 100644 --- a/build_files/build_environment/cmake/boost.cmake +++ b/build_files/build_environment/cmake/boost.cmake @@ -16,6 +16,8 @@ # # ***** END GPL LICENSE BLOCK ***** +set(BOOST_ADDRESS_MODEL 64) + if(WIN32) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set(PYTHON_ARCH x64) @@ -25,6 +27,7 @@ if(WIN32) set(PYTHON_ARCH x86) set(PYTHON_ARCH2 win32) set(PYTHON_OUTPUTDIR ${BUILD_DIR}/python/src/external_python/pcbuild/win32/) + set(BOOST_ADDRESS_MODEL 32) endif() if(MSVC14) set(BOOST_TOOLSET toolset=msvc-14.0) @@ -45,7 +48,7 @@ if(WIN32) #set(BOOST_WITH_PYTHON --with-python) set(BOOST_HARVEST_CMD ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/lib/ ${HARVEST_TARGET}/boost/lib/ ) if(BUILD_MODE STREQUAL Release) - set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-1_60/ ${HARVEST_TARGET}/boost/include/) + set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-1_68/ ${HARVEST_TARGET}/boost/include/) endif() elseif(APPLE) @@ -78,9 +81,6 @@ set(BOOST_OPTIONS ${BOOST_TOOLSET} ) - set(BOOST_ADDRESS_MODEL 64) - - string(TOLOWER ${BUILD_MODE} BOOST_BUILD_TYPE) ExternalProject_Add(external_boost diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index a8305b002b9..44349f78db6 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -54,13 +54,8 @@ if(BUILD_MODE STREQUAL Release) # 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/ && - # opencolorIO - ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenColorIO/ ${HARVEST_TARGET}/opencolorio && - ${CMAKE_COMMAND} -E copy ${LIBDIR}/OpenColorIO/lib/OpenColorIO.dll ${HARVEST_TARGET}/opencolorio/bin/OpenColorIO.dll && # Osl ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/osl/ ${HARVEST_TARGET}/osl && - # OpenVDB - ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openVDB/ ${HARVEST_TARGET}/openVDB && # BlendThumb ${CMAKE_COMMAND} -E copy ${LIBDIR}/BlendThumb64/bin/blendthumb.dll ${HARVEST_TARGET}/ThumbHandler/lib/BlendThumb64.dll && ${CMAKE_COMMAND} -E copy ${LIBDIR}/BlendThumb32/bin/blendthumb.dll ${HARVEST_TARGET}/ThumbHandler/lib/BlendThumb.dll && @@ -81,8 +76,6 @@ if(BUILD_MODE STREQUAL Debug) ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslcomp.lib ${HARVEST_TARGET}/osl/lib/oslcomp_d.lib && ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslexec.lib ${HARVEST_TARGET}/osl/lib/oslexec_d.lib && ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslquery.lib ${HARVEST_TARGET}/osl/lib/oslquery_d.lib && - # openvdb - ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/openvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb_d.lib && # python ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/python/ ${HARVEST_TARGET}/python/ && # hdf5 diff --git a/build_files/build_environment/cmake/ilmbase.cmake b/build_files/build_environment/cmake/ilmbase.cmake index 4863cc6865a..22be39c3ff1 100644 --- a/build_files/build_environment/cmake/ilmbase.cmake +++ b/build_files/build_environment/cmake/ilmbase.cmake @@ -55,4 +55,4 @@ else() INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ilmbase/src/external_ilmbase/ && make install INSTALL_DIR ${LIBDIR}/openexr ) -endif()
\ No newline at end of file +endif() diff --git a/build_files/build_environment/cmake/lcms.cmake b/build_files/build_environment/cmake/lcms.cmake index 943fab7e19c..f67a85c3721 100644 --- a/build_files/build_environment/cmake/lcms.cmake +++ b/build_files/build_environment/cmake/lcms.cmake @@ -24,7 +24,7 @@ ExternalProject_Add(external_lcms DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${LCMS_HASH} PREFIX ${BUILD_DIR}/lcms - #patch taken from ocio + #patch taken from ocio PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${PATCH_DIR}/cmakelists_lcms.txt ${BUILD_DIR}/lcms/src/external_lcms/CMakeLists.txt CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/lcms ${DEFAULT_CMAKE_FLAGS} ${LCMS_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/lcms diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index a99b1f118cb..db0350e8d9d 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -50,7 +50,7 @@ if(WIN32) -DUSE_EXTERNAL_LCMS=ON -DINC_1=${LIBDIR}/tinyxml/include -DINC_2=${LIBDIR}/yamlcpp/include - #lie because ocio cmake is demanding boost even though it is not needed + #lie because ocio cmake is demanding boost even though it is not needed -DYAML_CPP_VERSION=0.5.0 ) else() @@ -89,7 +89,7 @@ if(WIN32) external_opencolorio external_tinyxml external_yamlcpp - + ) if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_opencolorio after_install @@ -100,6 +100,14 @@ if(WIN32) DEPENDEES install ) endif() - + if(BUILD_MODE STREQUAL Debug) + ExternalProject_Add_Step(external_opencolorio after_install + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencolorio/lib/static/Opencolorio.lib ${HARVEST_TARGET}/opencolorio/lib/OpencolorIO_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/libyaml-cppmtd.lib ${HARVEST_TARGET}/opencolorio/lib/libyaml-cpp_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tinyxml/lib/tinyxml.lib ${HARVEST_TARGET}/opencolorio/lib/tinyxml_d.lib + DEPENDEES install + ) + endif() + endif() diff --git a/build_files/build_environment/cmake/openexr.cmake b/build_files/build_environment/cmake/openexr.cmake index 3e5ef5d8f0a..59e9a46b4f8 100644 --- a/build_files/build_environment/cmake/openexr.cmake +++ b/build_files/build_environment/cmake/openexr.cmake @@ -31,6 +31,7 @@ if(WIN32) -DOPENEXR_BUILD_TESTS=Off -DOPENEXR_BUILD_VIEWERS=Off -DOPENEXR_BUILD_UTILS=Off + -DOPENEXR_NAMESPACE_VERSIONING=Off ) ExternalProject_Add(external_openexr URL ${OPENEXR_URI} @@ -40,15 +41,15 @@ if(WIN32) CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openexr ${DEFAULT_CMAKE_FLAGS} ${OPENEXR_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/openexr ) - + ExternalProject_Add_Step(external_openexr after_install COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/lib ${HARVEST_TARGET}/openexr/lib - #libs have moved between versions, just duplicate it for now. + #libs have moved between versions, just duplicate it for now. COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/lib ${LIBDIR}/ilmbase/lib - COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/include ${HARVEST_TARGET}/openexr/include + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/include ${HARVEST_TARGET}/openexr/include DEPENDEES install ) - + else() set(OPENEXR_PKG_CONFIG_PATH ${LIBDIR}/zlib/share/pkgconfig) set(OPENEXR_EXTRA_ARGS diff --git a/build_files/build_environment/cmake/opensubdiv.cmake b/build_files/build_environment/cmake/opensubdiv.cmake index 1db3b11de9a..217274431d5 100644 --- a/build_files/build_environment/cmake/opensubdiv.cmake +++ b/build_files/build_environment/cmake/opensubdiv.cmake @@ -35,7 +35,6 @@ set(OPENSUBDIV_EXTRA_ARGS if(WIN32) set(OPENSUBDIV_EXTRA_ARGS ${OPENSUBDIV_EXTRA_ARGS} - -DNO_CUDA=Off -DTBB_INCLUDE_DIR=${LIBDIR}/tbb/include -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/tbb_static.lib -DCLEW_INCLUDE_DIR=${LIBDIR}/clew/include/CL @@ -44,6 +43,18 @@ if(WIN32) -DCUEW_LIBRARY=${LIBDIR}/cuew/lib/cuew${LIBEXT} -DCMAKE_EXE_LINKER_FLAGS_RELEASE=libcmt.lib ) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(OPENSUBDIV_EXTRA_ARGS + ${OPENSUBDIV_EXTRA_ARGS} + -DNO_CUDA=OFF + ) + else() + set(OPENSUBDIV_EXTRA_ARGS + ${OPENSUBDIV_EXTRA_ARGS} + -DNO_CUDA=ON + ) + endif() + else() set(OPENSUBDIV_EXTRA_ARGS ${OPENSUBDIV_EXTRA_ARGS} @@ -78,7 +89,7 @@ if(WIN32) COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opensubdiv/lib/osdGPU.lib ${HARVEST_TARGET}/opensubdiv/lib/osdGPU_d.lib DEPENDEES install ) - endif() + endif() endif() add_dependencies( diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake index 5b70d184201..85c3d84771a 100644 --- a/build_files/build_environment/cmake/openvdb.cmake +++ b/build_files/build_environment/cmake/openvdb.cmake @@ -52,6 +52,16 @@ set(OPENVDB_EXTRA_ARGS -DTBB_LIBRARY_PATH=${LIBDIR}/tbb/lib ) +if(WIN32) + #Namespaces seem to be buggy and cause linker erorrs due to things not + #being in the correct namespace + #needs to link pthreads due to it being a blosc dependency + set(OPENVDB_EXTRA_ARGS ${OPENVDB_EXTRA_ARGS} + -DOPENEXR_NAMESPACE_VERSIONING=OFF + -DEXTRA_LIBS:FILEPATH=${LIBDIR}/pthreads/lib/pthreadVC2.lib + ) +endif() + ExternalProject_Add(openvdb URL ${OPENVDB_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} @@ -71,3 +81,20 @@ add_dependencies( external_zlib external_blosc ) + +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(openvdb after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openvdb/include ${HARVEST_TARGET}/openvdb/include + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/libopenvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb.lib + DEPENDEES install + ) + endif() + if(BUILD_MODE STREQUAL Debug) + ExternalProject_Add_Step(openvdb after_install + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/libopenvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb_d.lib + DEPENDEES install + ) + endif() +endif() + diff --git a/build_files/build_environment/cmake/osl.cmake b/build_files/build_environment/cmake/osl.cmake index 3cab1951044..73e62f73cf2 100644 --- a/build_files/build_environment/cmake/osl.cmake +++ b/build_files/build_environment/cmake/osl.cmake @@ -83,7 +83,7 @@ ExternalProject_Add(external_osl LIST_SEPARATOR ^^ URL_HASH MD5=${OSL_HASH} PREFIX ${BUILD_DIR}/osl - PATCH_COMMAND ${PATCH_CMD} -p 3 -d ${BUILD_DIR}/osl/src/external_osl < ${PATCH_DIR}/osl.diff + PATCH_COMMAND ${PATCH_CMD} -p 3 -d ${BUILD_DIR}/osl/src/external_osl < ${PATCH_DIR}/osl.diff # ${PATCH_CMD} -p 0 -d ${BUILD_DIR}/osl/src/external_osl < ${PATCH_DIR}/osl_simd_oiio.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/osl -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ${DEFAULT_CMAKE_FLAGS} ${OSL_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/osl diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index 95c32be8335..3fbf3a40868 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -22,6 +22,12 @@ if(BUILD_MODE STREQUAL Debug) endif() if(WIN32) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(SSL_POSTFIX -x64) + else() + set(SSL_POSTFIX) + endif() + set(PYTHON_BINARY ${BUILD_DIR}/python/src/external_python/run/python${PYTHON_POSTFIX}.exe) macro(cmake_to_dos_path MsysPath ResultingPath) @@ -46,9 +52,9 @@ if(WIN32) PREFIX ${BUILD_DIR}/python PATCH_COMMAND echo mklink /D "${PYTHON_EXTERNALS_FOLDER_DOS}" "${DOWNLOADS_EXTERNALS_FOLDER_DOS}" && - mklink /D "${PYTHON_EXTERNALS_FOLDER_DOS}" "${DOWNLOADS_EXTERNALS_FOLDER_DOS}" + mklink /D "${PYTHON_EXTERNALS_FOLDER_DOS}" "${DOWNLOADS_EXTERNALS_FOLDER_DOS}" CONFIGURE_COMMAND "" - BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p ${PYTHON_ARCH} -c ${BUILD_MODE} + BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p ${PYTHON_ARCH} -c ${BUILD_MODE} INSTALL_COMMAND COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll && ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb && @@ -133,13 +139,13 @@ if(MSVC) COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/unicodedata${PYTHON_POSTFIX}.pyd" ${BUILD_DIR}/python/src/external_python/redist/lib/unicodedata${PYTHON_POSTFIX}.pyd COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/winsound${PYTHON_POSTFIX}.pyd" ${BUILD_DIR}/python/src/external_python/redist/lib/winsound${PYTHON_POSTFIX}.pyd #xxlimited is an example extention module, we don't need to ship it and debug doesn't build it - #leaving it commented out, so I won't get confused again with the next update. + #leaving it commented out, so I won't get confused again with the next update. #COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/xxlimited${PYTHON_POSTFIX}.pyd" ${BUILD_DIR}/python/src/external_python/redist/lib/xxlimited${PYTHON_POSTFIX}.pyd - COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/libssl-1_1-x64.dll" ${BUILD_DIR}/python/src/external_python/redist/lib/libssl-1_1-x64.dll - COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/libcrypto-1_1-x64.dll" ${BUILD_DIR}/python/src/external_python/redist/lib/libcrypto-1_1-x64.dll + COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/libssl-1_1${SSL_POSTFIX}.dll" ${BUILD_DIR}/python/src/external_python/redist/lib/libssl-1_1${SSL_POSTFIX}.dll + COMMAND ${CMAKE_COMMAND} -E copy "${PYTHON_OUTPUTDIR}/libcrypto-1_1${SSL_POSTFIX}.dll" ${BUILD_DIR}/python/src/external_python/redist/lib/libcrypto-1_1${SSL_POSTFIX}.dll COMMAND ${CMAKE_COMMAND} -E chdir "${BUILD_DIR}/python/src/external_python/redist" ${CMAKE_COMMAND} -E tar "cfvz" "${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz" "." - COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/python/ ${HARVEST_TARGET}/python/ - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz ${HARVEST_TARGET}/Release/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/python/ ${HARVEST_TARGET}/python/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz ${HARVEST_TARGET}/Release/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz ) add_custom_target(Package_Python ALL DEPENDS external_python ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.tar.gz ${BUILD_DIR}/python/src/external_python/redist/bin/python${PYTHON_POSTFIX}.exe) diff --git a/build_files/build_environment/cmake/setup_mingw32.cmake b/build_files/build_environment/cmake/setup_mingw32.cmake index a3ffc36c8b9..ece12ddc179 100644 --- a/build_files/build_environment/cmake/setup_mingw32.cmake +++ b/build_files/build_environment/cmake/setup_mingw32.cmake @@ -35,9 +35,9 @@ message("mingw_LIBDIR = ${mingw_LIBDIR}") message("Checking for mingw32") # download mingw32 -if(NOT EXISTS "${DOWNLOAD_DIR}/i686-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z") +if(NOT EXISTS "${DOWNLOAD_DIR}/i686-4.9.4-release-win32-sjlj-rt_v5-rev0.7z") message("Downloading mingw32") - file(DOWNLOAD "https://nchc.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-release/i686-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z" "${DOWNLOAD_DIR}/i686-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z") + file(DOWNLOAD "https://astuteinternet.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.4/threads-win32/sjlj/i686-4.9.4-release-win32-sjlj-rt_v5-rev0.7z" "${DOWNLOAD_DIR}/i686-4.9.4-release-win32-sjlj-rt_v5-rev0.7z") endif() # make mingw root directory @@ -49,10 +49,10 @@ if(NOT EXISTS "${DOWNLOAD_DIR}/mingw") endif() # extract mingw32 -if((NOT EXISTS "${DOWNLOAD_DIR}/mingw/mingw32/mingw32env.cmd") AND (EXISTS "${DOWNLOAD_DIR}/i686-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z")) +if((NOT EXISTS "${DOWNLOAD_DIR}/mingw/mingw32/mingw32env.cmd") AND (EXISTS "${DOWNLOAD_DIR}/i686-4.9.4-release-win32-sjlj-rt_v5-rev0.7z")) message("Extracting mingw32") execute_process( - COMMAND ${CMAKE_COMMAND} -E tar jxf ${DOWNLOAD_DIR}/i686-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z + COMMAND ${CMAKE_COMMAND} -E tar jxf ${DOWNLOAD_DIR}/i686-4.9.4-release-win32-sjlj-rt_v5-rev0.7z WORKING_DIRECTORY ${DOWNLOAD_DIR}/mingw ) endif() diff --git a/build_files/build_environment/cmake/tinyxml.cmake b/build_files/build_environment/cmake/tinyxml.cmake index 2896bf5938a..fb28e7cce2f 100644 --- a/build_files/build_environment/cmake/tinyxml.cmake +++ b/build_files/build_environment/cmake/tinyxml.cmake @@ -24,7 +24,7 @@ ExternalProject_Add(external_tinyxml DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${TINYXML_HASH} PREFIX ${BUILD_DIR}/tinyxml - #patch taken from ocio + #patch taken from ocio PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/tinyxml/src/external_tinyxml < ${PATCH_DIR}/tinyxml.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/tinyxml ${DEFAULT_CMAKE_FLAGS} ${TINYXML_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/tinyxml diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index 64e87f2830c..0d5d8e773e3 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -36,7 +36,7 @@ set(BOOST_VERSION 1.68.0) set(BOOST_VERSION_NODOTS 1_68_0) set(BOOST_URI https://dl.bintray.com/boostorg/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_NODOTS}.tar.gz) set(BOOST_HASH 5d8b4503582fffa9eefdb9045359c239) - + set(BLOSC_VERSION 1.14.4) set(BLOSC_URI https://github.com/Blosc/c-blosc/archive/v${BLOSC_VERSION}.tar.gz) set(BLOSC_HASH e80dfc71e4cba03b8d01ed0876547ffe) @@ -48,11 +48,11 @@ set(PTHREADS_SHA512 9c06e85310766834370c3dceb83faafd397da18a32411ca7645c8eb6b949 set(ILMBASE_VERSION 2.3.0) if (WIN32) if(BUILD_MODE STREQUAL Release) - set(ILMBASE_VERSION_POSTFIX -2_3_s) - set(OPENEXR_VERSION_POSTFIX -2_3_s) + set(ILMBASE_VERSION_POSTFIX _s) + set(OPENEXR_VERSION_POSTFIX _s) else() - set(ILMBASE_VERSION_POSTFIX -2_3_s_d) - set(OPENEXR_VERSION_POSTFIX -2_3_s_d) + set(ILMBASE_VERSION_POSTFIX _s_d) + set(OPENEXR_VERSION_POSTFIX _s_d) endif() else() set(ILMBASE_VERSION_POSTFIX) @@ -271,5 +271,7 @@ set(PUGIXML_VERSION 1.9) set(PUGIXML_URI https://github.com/zeux/pugixml/archive/v1.9.tar.gz) set(PUGIXML_HASH 9346ca1dce2c48f1748c12fdac41a714) - +set(FLEXBISON_VERSION 2.5.5) +set(FLEXBISON_URI http://prdownloads.sourceforge.net/winflexbison//win_flex_bison-2.5.5.zip) +set(FLEXBISON_HASH d87a3938194520d904013abef3df10ce) diff --git a/build_files/build_environment/cmake/zlib.cmake b/build_files/build_environment/cmake/zlib.cmake index 4c422d501ee..b768293487a 100644 --- a/build_files/build_environment/cmake/zlib.cmake +++ b/build_files/build_environment/cmake/zlib.cmake @@ -46,4 +46,4 @@ else() DEPENDEES install ) endif() -endif()
\ No newline at end of file +endif() diff --git a/build_files/build_environment/patches/openimageio_static_libs.diff b/build_files/build_environment/patches/openimageio_static_libs.diff index ca3d913d027..6a2e58bd139 100644 --- a/build_files/build_environment/patches/openimageio_static_libs.diff +++ b/build_files/build_environment/patches/openimageio_static_libs.diff @@ -9,3 +9,14 @@ diff -Naur external_openimageio.orig/src/cmake/compiler.cmake external_openimage 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/openvdb.diff b/build_files/build_environment/patches/openvdb.diff index 5d4c26c9527..391a7be46db 100644 --- a/build_files/build_environment/patches/openvdb.diff +++ b/build_files/build_environment/patches/openvdb.diff @@ -11,6 +11,14 @@ diff -Naur openvdb.orig/openvdb/CMakeLists.txt openvdb/openvdb/CMakeLists.txt FIND_PACKAGE ( Blosc REQUIRED ) FIND_PACKAGE ( TBB REQUIRED ) +@@ -195,6 +198,7 @@ + ${Ilmbase_HALF_LIBRARY} + ${ZLIB_LIBRARY} + ${BLOSC_blosc_LIBRARY} ++ ${EXTRA_LIBS} + ) + + IF (WIN32) @@ -225,13 +228,16 @@ ${VDB_PRINT_SOURCE_FILES} ) diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h index 4843ee9d9b8..a3440097688 100644 --- a/source/blender/blenkernel/BKE_curve.h +++ b/source/blender/blenkernel/BKE_curve.h @@ -158,9 +158,14 @@ struct Nurb *BKE_nurb_copy(struct Nurb *src, int pntsu, int pntsv); void BKE_nurb_test2D(struct Nurb *nu); void BKE_nurb_minmax(struct Nurb *nu, bool use_radius, float min[3], float max[3]); - -void BKE_nurb_makeFaces(struct Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv); -void BKE_nurb_makeCurve(struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride); +float BKE_nurb_calc_length(const struct Nurb *nu, int resolution); + +void BKE_nurb_makeFaces( + const struct Nurb *nu, float *coord_array, + int rowstride, int resolu, int resolv); +void BKE_nurb_makeCurve( + const struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, + int resolu, int stride); unsigned int BKE_curve_calc_coords_axis_len( const unsigned int bezt_array_len, const unsigned int resolu, diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 39b28540205..0d6aa0e2630 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -634,6 +634,107 @@ void BKE_nurb_minmax(Nurb *nu, bool use_radius, float min[3], float max[3]) } } +float BKE_nurb_calc_length(const Nurb *nu, int resolution) +{ + BezTriple *bezt, *prevbezt; + BPoint *bp, *prevbp; + int a, b; + float length = 0.0f; + int resolu = resolution ? resolution : nu->resolu; + int pntsu = nu->pntsu; + float *points, *pntsit, *prevpntsit; + + if (nu->type == CU_POLY) { + a = nu->pntsu - 1; + bp = nu->bp; + if (nu->flagu & CU_NURB_CYCLIC) { + ++a; + prevbp = nu->bp + (nu->pntsu - 1); + } + else { + prevbp = bp; + bp++; + } + + while (a--) { + length += len_v3v3(prevbp->vec, bp->vec); + prevbp = bp; + ++bp; + } + } + else if (nu->type == CU_BEZIER) { + points = MEM_mallocN(sizeof(float[3]) * (resolu + 1), "getLength_bezier"); + a = nu->pntsu - 1; + bezt = nu->bezt; + if (nu->flagu & CU_NURB_CYCLIC) { + ++a; + prevbezt = nu->bezt + (nu->pntsu - 1); + } + else { + prevbezt = bezt; + ++bezt; + } + + while (a--) { + if (prevbezt->h2 == HD_VECT && bezt->h1 == HD_VECT) { + length += len_v3v3(prevbezt->vec[1], bezt->vec[1]); + } + else { + for (int j = 0; j < 3; j++) { + BKE_curve_forward_diff_bezier( + prevbezt->vec[1][j], prevbezt->vec[2][j], + bezt->vec[0][j], bezt->vec[1][j], + points + j, resolu, 3 * sizeof(float)); + } + + prevpntsit = pntsit = points; + b = resolu; + while (b--) { + pntsit += 3; + length += len_v3v3(prevpntsit, pntsit); + prevpntsit = pntsit; + } + } + prevbezt = bezt; + ++bezt; + } + + MEM_freeN(points); + } + else if (nu->type == CU_NURBS) { + if (nu->pntsv == 1) { + /* important to zero for BKE_nurb_makeCurve. */ + points = MEM_callocN(sizeof(float[3]) * pntsu * resolu, "getLength_nurbs"); + + BKE_nurb_makeCurve( + nu, points, + NULL, NULL, NULL, + resolu, sizeof(float[3])); + + if (nu->flagu & CU_NURB_CYCLIC) { + b = pntsu * resolu + 1; + prevpntsit = points + 3 * (pntsu * resolu - 1); + pntsit = points; + } + else { + b = (pntsu - 1) * resolu; + prevpntsit = points; + pntsit = points + 3; + } + + while (--b) { + length += len_v3v3(prevpntsit, pntsit); + prevpntsit = pntsit; + pntsit += 3; + } + + MEM_freeN(points); + } + } + + return length; +} + /* be sure to call makeknots after this */ void BKE_nurb_points_add(Nurb *nu, int number) { @@ -1082,9 +1183,10 @@ static void basisNurb(float t, short order, int pnts, float *knots, float *basis } } - -void BKE_nurb_makeFaces(Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv) -/* coord_array has to be (3 * 4 * resolu * resolv) in size, and zero-ed */ +/** + * \param coord_array: has to be (3 * 4 * resolu * resolv) in size, and zero-ed. + */ +void BKE_nurb_makeFaces(const Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv) { BPoint *bp; float *basisu, *basis, *basisv, *sum, *fp, *in; @@ -1260,8 +1362,9 @@ void BKE_nurb_makeFaces(Nurb *nu, float *coord_array, int rowstride, int resolu, * \param tilt_array set when non-NULL * \param radius_array set when non-NULL */ -void BKE_nurb_makeCurve(Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, - int resolu, int stride) +void BKE_nurb_makeCurve( + const Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, + int resolu, int stride) { const float eps = 1e-6f; BPoint *bp; diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index da1ef2b6921..6b294b9b3cd 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -1761,6 +1761,8 @@ static void rna_def_curve_nurb(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Curve_update_data"); RNA_def_struct_path_func(srna, "rna_Curve_spline_path"); + + RNA_api_curve_nurb(srna); } void RNA_def_curve(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_curve_api.c b/source/blender/makesrna/intern/rna_curve_api.c index b0c07465958..dc1cbed824e 100644 --- a/source/blender/makesrna/intern/rna_curve_api.c +++ b/source/blender/makesrna/intern/rna_curve_api.c @@ -55,6 +55,11 @@ static void rna_Curve_update_gpu_tag(Curve *cu) BKE_curve_batch_cache_dirty(cu, BKE_CURVE_BATCH_DIRTY_ALL); } +static float rna_Nurb_calc_length(Nurb *nu, int resolution_u) +{ + return BKE_nurb_calc_length(nu, resolution_u); +} + #else void RNA_api_curve(StructRNA *srna) @@ -77,4 +82,20 @@ void RNA_api_curve(StructRNA *srna) RNA_def_function(srna, "update_gpu_tag", "rna_Curve_update_gpu_tag"); } +void RNA_api_curve_nurb(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func = RNA_def_function(srna, "calc_length", "rna_Nurb_calc_length"); + RNA_def_function_ui_description(func, "Calculate spline length"); + RNA_def_int( + func, "resolution", 0, 0, 1024, "Resolution", + "Spline resolution to be used, 0 defaults to the resolution_u", 0, 64); + parm = RNA_def_float_distance( + func, "length", 0.0f, 0.0f, FLT_MAX, "Length", + "Length of the polygonaly approximated spline", 0.0f, FLT_MAX); + RNA_def_function_return(func, parm); +} + #endif diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index a88623e5b5b..2578f88a520 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -308,6 +308,7 @@ void RNA_api_armature_edit_bone(StructRNA *srna); void RNA_api_bone(StructRNA *srna); void RNA_api_camera(StructRNA *srna); void RNA_api_curve(StructRNA *srna); +void RNA_api_curve_nurb(StructRNA *srna); void RNA_api_fcurves(StructRNA *srna); void RNA_api_drivers(StructRNA *srna); void RNA_api_image_packed_file(struct StructRNA *srna); |