diff options
Diffstat (limited to 'build_files/build_environment/install_deps.sh')
-rwxr-xr-x | build_files/build_environment/install_deps.sh | 257 |
1 files changed, 202 insertions, 55 deletions
diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index 43606f49c78..c065b48f6ea 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -51,7 +51,7 @@ ARGS=$( \ getopt \ -o s:i:t:h \ --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,\ +with-all,with-opencollada,with-jack,with-embree,with-oidn,with-nanovdb,\ ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,ver-osd:,ver-openvdb:,ver-xr-openxr:,\ force-all,force-python,force-numpy,force-boost,force-tbb,\ force-ocio,force-openexr,force-oiio,force-llvm,force-osl,force-osd,force-openvdb,\ @@ -151,6 +151,9 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS: --with-oidn Build and install the OpenImageDenoise libraries. + --with-nanovdb + Build and install the NanoVDB branch of OpenVDB (instead of official release of OpenVDB). + --with-jack Install the jack libraries. @@ -435,7 +438,7 @@ _with_built_openexr=false OIIO_VERSION="2.1.15.0" OIIO_VERSION_SHORT="2.1" -OIIO_VERSION_MIN="1.8" +OIIO_VERSION_MIN="2.1.12" OIIO_VERSION_MAX="3.0" OIIO_FORCE_BUILD=false OIIO_FORCE_REBUILD=false @@ -474,7 +477,7 @@ OPENVDB_BLOSC_VERSION="1.5.0" OPENVDB_VERSION="7.0.0" OPENVDB_VERSION_SHORT="7.0" OPENVDB_VERSION_MIN="7.0" -OPENVDB_VERSION_MAX="8.0" +OPENVDB_VERSION_MAX="7.1" OPENVDB_FORCE_BUILD=false OPENVDB_FORCE_REBUILD=false OPENVDB_SKIP=false @@ -512,7 +515,7 @@ EMBREE_FORCE_BUILD=false EMBREE_FORCE_REBUILD=false EMBREE_SKIP=false -OIDN_VERSION="1.2.1" +OIDN_VERSION="1.2.3" OIDN_VERSION_SHORT="1.2" OIDN_VERSION_MIN="1.2.0" OIDN_VERSION_MAX="1.3" @@ -520,7 +523,7 @@ OIDN_FORCE_BUILD=false OIDN_FORCE_REBUILD=false OIDN_SKIP=false -ISPC_VERSION="1.14.0" +ISPC_VERSION="1.14.1" FFMPEG_VERSION="4.2.3" FFMPEG_VERSION_SHORT="4.2" @@ -676,6 +679,10 @@ while true; do --with-oidn) WITH_OIDN=true; shift; continue ;; + --with-nanovdb) + WITH_NANOVDB=true; + shift; continue + ;; --with-jack) WITH_JACK=true; shift; continue; ;; @@ -957,6 +964,11 @@ if [ "$WITH_ALL" = true -a "$OIDN_SKIP" = false ]; then fi if [ "$WITH_ALL" = true ]; then WITH_JACK=true + WITH_NANOVDB=true +fi + +if [ "$WITH_NANOVDB" = true ]; then + OPENVDB_FORCE_BUILD=true fi @@ -1029,11 +1041,15 @@ OSD_SOURCE=( "https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${OSD OPENVDB_USE_REPO=false OPENVDB_BLOSC_SOURCE=( "https://github.com/Blosc/c-blosc/archive/v${OPENVDB_BLOSC_VERSION}.tar.gz" ) -OPENVDB_SOURCE=( "https://github.com/dreamworksanimation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz" ) -#~ OPENVDB_SOURCE_REPO=( "https:///dreamworksanimation/openvdb.git" ) +OPENVDB_SOURCE=( "https://github.com/AcademySoftwareFoundation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz" ) +#~ OPENVDB_SOURCE_REPO=( "https://github.com/AcademySoftwareFoundation/openvdb.git" ) #~ OPENVDB_SOURCE_REPO_UID="404659fffa659da075d1c9416e4fc939139a84ee" #~ OPENVDB_SOURCE_REPO_BRANCH="dev" +NANOVDB_USE_REPO=false +NANOVDB_SOURCE_REPO_UID="e62f7a0bf1e27397223c61ddeaaf57edf111b77f" +NANOVDB_SOURCE=( "https://github.com/AcademySoftwareFoundation/openvdb/archive/${NANOVDB_SOURCE_REPO_UID}.tar.gz" ) + ALEMBIC_USE_REPO=false ALEMBIC_SOURCE=( "https://github.com/alembic/alembic/archive/${ALEMBIC_VERSION}.tar.gz" ) # ALEMBIC_SOURCE_REPO=( "https://github.com/alembic/alembic.git" ) @@ -1087,7 +1103,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. - * libsdl2, libglew, [libgmp], [libglewmx], fontconfig.\"" + * libsdl2, libglew, libpugixml, libpotrace, [libgmp], [libglewmx], fontconfig.\"" DEPS_SPECIFIC_INFO="\"BUILDABLE DEPENDENCIES: @@ -1259,13 +1275,16 @@ version_match() { # ---------------------------------------------------------------------------- # Generic compile helpers -prepare_opt() { +prepare_inst() { INFO "Ensuring $INST exists and is writable by us" if [ ! $SUDO ]; then WARNING "--no-sudo enabled, might be impossible to create install dir..." fi + if [ ! -d $INST ]; then - $SUDO mkdir -p $INST + # Try to create normal user directory first to possibly avoid excessive + # system operations + mkdir -p $INST || $SUDO mkdir -p $INST fi if [ ! -w $INST ]; then @@ -1366,7 +1385,7 @@ compile_Python() { # Rebuild dependencies as well! _update_deps_python - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -1452,7 +1471,7 @@ compile_Numpy() { # Rebuild dependencies as well! _update_deps_numpy - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -1541,7 +1560,7 @@ compile_Boost() { # Rebuild dependencies as well! _update_deps_boost - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading Boost-$BOOST_VERSION" @@ -1635,7 +1654,7 @@ compile_TBB() { # Rebuild dependencies as well! _update_deps_tbb - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading TBB-$TBB_VERSION$TBB_VERSION_UPDATE" @@ -1752,7 +1771,7 @@ compile_OCIO() { # Rebuild dependencies as well! _update_deps_ocio - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading OpenColorIO-$OCIO_VERSION" @@ -1884,7 +1903,7 @@ compile_OPENEXR() { # Rebuild dependencies as well! _update_deps_openexr - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading OpenEXR-$OPENEXR_VERSION" @@ -2010,7 +2029,7 @@ compile_OIIO() { # Rebuild dependencies as well! _update_deps_oiio - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -2165,7 +2184,7 @@ compile_LLVM() { # Rebuild dependencies as well! _update_deps_llvm - prepare_opt + prepare_inst if [ ! -d $_src -o true ]; then mkdir -p $SRC @@ -2275,7 +2294,7 @@ compile_OSL() { # Rebuild dependencies as well! _update_deps_osl - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -2419,7 +2438,7 @@ compile_OSD() { # Rebuild dependencies as well! _update_deps_osd - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -2537,7 +2556,7 @@ compile_BLOSC() { # Rebuild dependencies as well! _update_deps_blosc - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading Blosc-$OPENVDB_BLOSC_VERSION" @@ -2591,11 +2610,115 @@ compile_BLOSC() { # ---------------------------------------------------------------------------- # Build OpenVDB +_init_nanovdb() { + _src=$SRC/openvdb-$OPENVDB_VERSION/nanovdb + _inst=$INST/nanovdb-$OPENVDB_VERSION_SHORT + _inst_shortcut=$INST/nanovdb +} + +_update_deps_nanovdb() { + : +} + +clean_nanovdb() { + _init_nanovdb + if [ -d $_inst ]; then + _update_deps_nanovdb + fi + _git=true # Mere trick to prevent clean from removing $_src... + _clean +} + +install_NanoVDB() { + # To be changed each time we make edits that would modify the compiled results! + nanovdb_magic=1 + _init_nanovdb + + # Clean install if needed! + magic_compile_check nanovdb-$OPENVDB_VERSION $nanovdb_magic + if [ $? -eq 1 ]; then + clean_nanovdb + fi + + if [ ! -d $_inst ]; then + INFO "Installing NanoVDB v$OPENVDB_VERSION" + _is_building=true + + # Rebuild dependencies as well! + _update_deps_nanovdb + + prepare_inst + + if [ ! -d $_src ]; then + ERROR "NanoVDB not found in openvdb-$OPENVDB_VERSION ($_src), exiting" + exit 1 + fi + + # Always refresh the whole build! + if [ -d build ]; then + rm -rf build + fi + mkdir build + cd build + + cmake_d="-D CMAKE_BUILD_TYPE=Release" + cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" + + # NanoVDB is header-only, so only need the install target + cmake_d="$cmake_d -D NANOVDB_BUILD_UNITTESTS=OFF" + cmake_d="$cmake_d -D NANOVDB_BUILD_EXAMPLES=OFF" + cmake_d="$cmake_d -D NANOVDB_BUILD_BENCHMARK=OFF" + cmake_d="$cmake_d -D NANOVDB_BUILD_DOCS=OFF" + cmake_d="$cmake_d -D NANOVDB_BUILD_TOOLS=OFF" + cmake_d="$cmake_d -D NANOVDB_CUDA_KEEP_PTX=OFF" + + # Do not need to include any of the dependencies because of this + cmake_d="$cmake_d -D NANOVDB_USE_OPENVDB=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_OPENGL=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_OPENCL=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_CUDA=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_TBB=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_BLOSC=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_ZLIB=OFF" + cmake_d="$cmake_d -D NANOVDB_USE_OPTIX=OFF" + cmake_d="$cmake_d -D NANOVDB_ALLOW_FETCHCONTENT=OFF" + + cmake $cmake_d $_src + + make -j$THREADS install + make clean + + #~ mkdir -p $_inst + #~ cp -r $_src/include $_inst/include + + if [ -d $_inst ]; then + _create_inst_shortcut + else + ERROR "NanoVDB-v$OPENVDB_VERSION failed to install, exiting" + exit 1 + fi + + magic_compile_set nanovdb-$OPENVDB_VERSION $nanovdb_magic + + cd $CWD + INFO "Done compiling NanoVDB-v$OPENVDB_VERSION!" + _is_building=false + else + INFO "Own NanoVDB-v$OPENVDB_VERSION is up to date, nothing to do!" + fi +} + + _init_openvdb() { _src=$SRC/openvdb-$OPENVDB_VERSION _git=false _inst=$INST/openvdb-$OPENVDB_VERSION_SHORT _inst_shortcut=$INST/openvdb + + _openvdb_source=$OPENVDB_SOURCE + if [ "$WITH_NANOVDB" = true ]; then + _openvdb_source=$NANOVDB_SOURCE + fi } _update_deps_openvdb() { @@ -2620,7 +2743,7 @@ compile_OPENVDB() { PRINT "" # To be changed each time we make edits that would modify the compiled result! - openvdb_magic=1 + openvdb_magic=2 _init_openvdb # Clean install if needed! @@ -2630,20 +2753,25 @@ compile_OPENVDB() { fi if [ ! -d $_inst ]; then - INFO "Building OpenVDB-$OPENVDB_VERSION" + INFO "Building OpenVDB-$OPENVDB_VERSION (with NanoVDB: $WITH_NANOVDB)" _is_building=true # Rebuild dependencies as well! _update_deps_openvdb - prepare_opt + prepare_inst - if [ ! -d $_src -o true ]; then + if [ ! -d $_src ]; then mkdir -p $SRC - download OPENVDB_SOURCE[@] "$_src.tar.gz" + download _openvdb_source[@] "$_src.tar.gz" INFO "Unpacking OpenVDB-$OPENVDB_VERSION" - tar -C $SRC -xf $_src.tar.gz + if [ "$WITH_NANOVDB" = true ]; then + tar -C $SRC --transform "s,(.*/?)openvdb-$NANOVDB_SOURCE_REPO_UID[^/]*(.*),\1openvdb-$OPENVDB_VERSION\2,x" \ + -xf $_src.tar.gz + else + tar -C $SRC -xf $_src.tar.gz + fi fi cd $_src @@ -2657,33 +2785,40 @@ compile_OPENVDB() { #~ git reset --hard #~ fi - # Source builds here - cd openvdb + # Always refresh the whole build! + if [ -d build ]; then + rm -rf build + fi + mkdir build + cd build - make_d="DESTDIR=$_inst" - make_d="$make_d HDSO=/usr" + cmake_d="-D CMAKE_BUILD_TYPE=Release" + cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" + cmake_d="$cmake_d -D USE_STATIC_DEPENDENCIES=OFF" + cmake_d="$cmake_d -D OPENVDB_BUILD_BINARIES=OFF" if [ -d $INST/boost ]; then - make_d="$make_d BOOST_INCL_DIR=$INST/boost/include BOOST_LIB_DIR=$INST/boost/lib" + cmake_d="$cmake_d -D BOOST_ROOT=$INST/boost" + cmake_d="$cmake_d -D Boost_USE_MULTITHREADED=ON" + cmake_d="$cmake_d -D Boost_NO_SYSTEM_PATHS=ON" + cmake_d="$cmake_d -D Boost_NO_BOOST_CMAKE=ON" fi if [ -d $INST/tbb ]; then - make_d="$make_d TBB_ROOT=$INST/tbb TBB_USE_STATIC_LIBS=OFF" + cmake_d="$cmake_d -D TBB_ROOT=$INST/tbb" fi if [ "$_with_built_openexr" = true ]; then - make_d="$make_d ILMBASE_INCL_DIR=$INST/openexr/include ILMBASE_LIB_DIR=$INST/openexr/lib" - make_d="$make_d EXR_INCL_DIR=$INST/openexr/include EXR_LIB_DIR=$INST/openexr/lib" - INFO "ILMBASE_HOME=$INST/openexr" + cmake_d="$cmake_d -D IlmBase_ROOT=$INST/openexr" + cmake_d="$cmake_d -D OpenEXR_ROOT=$INST/openexr" fi if [ -d $INST/blosc ]; then - make_d="$make_d BLOSC_INCL_DIR=$INST/blosc/include BLOSC_LIB_DIR=$INST/blosc/lib" + cmake_d="$cmake_d -D Blosc_ROOT=$INST/blosc" fi + + cmake $cmake_d .. - # Build without log4cplus, glfw, python module & docs - make_d="$make_d LOG4CPLUS_INCL_DIR= GLFW_INCL_DIR= PYTHON_VERSION= DOXYGEN=" - - make -j$THREADS lib $make_d install + make -j$THREADS install make clean if [ -d $_inst ]; then @@ -2704,6 +2839,10 @@ compile_OPENVDB() { fi run_ldconfig "openvdb" + + if [ "$WITH_NANOVDB" = true ]; then + install_NanoVDB + fi } # ---------------------------------------------------------------------------- @@ -2751,7 +2890,7 @@ compile_ALEMBIC() { # Rebuild dependencies as well! _update_deps_alembic - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -2856,7 +2995,7 @@ compile_USD() { # Rebuild dependencies as well! _update_deps_usd - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -2955,7 +3094,7 @@ compile_OpenCOLLADA() { # Rebuild dependencies as well! _update_deps_collada - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -3061,7 +3200,7 @@ compile_Embree() { # Rebuild dependencies as well! _update_deps_embree - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -3171,7 +3310,7 @@ install_ISPC() { # Rebuild dependencies as well! _update_deps_ispc - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -3250,7 +3389,7 @@ compile_OIDN() { # Rebuild dependencies as well! _update_deps_oidn - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -3360,7 +3499,7 @@ compile_FFmpeg() { # Rebuild dependencies as well! _update_deps_ffmpeg - prepare_opt + prepare_inst if [ ! -d $_src ]; then INFO "Downloading ffmpeg-$FFMPEG_VERSION" @@ -3489,7 +3628,7 @@ compile_XR_OpenXR_SDK() { # Rebuild dependencies as well! _update_deps_xr_openxr_sdk - prepare_opt + prepare_inst if [ ! -d $_src ]; then mkdir -p $SRC @@ -3659,7 +3798,7 @@ install_DEB() { libbz2-dev libncurses5-dev libssl-dev liblzma-dev libreadline-dev \ libopenal-dev libglew-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \ libsdl2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev libjemalloc-dev \ - libgmp-dev" + libgmp-dev libpugixml-dev libpotrace-dev" # libglewmx-dev (broken in deb testing currently...) VORBIS_USE=true @@ -3955,7 +4094,7 @@ install_DEB() { if [ $? -eq 0 ]; then install_packages_DEB llvm-dev clang have_llvm=true - LLVM_VERSION=`get_package_version_DEB llvm-dev` + LLVM_VERSION=`llvm-config --version` LLVM_VERSION_FOUND=$LLVM_VERSION clean_LLVM else @@ -4325,7 +4464,8 @@ install_RPM() { 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 \ - libxml2-devel yaml-cpp-devel tinyxml-devel jemalloc-devel gmp-devel" + libxml2-devel yaml-cpp-devel tinyxml-devel jemalloc-devel \ + gmp-devel pugixml-devel potrace-devel" OPENJPEG_USE=true VORBIS_USE=true @@ -4603,7 +4743,7 @@ install_RPM() { if [ $? -eq 0 ]; then install_packages_RPM llvm-devel $CLANG_DEV have_llvm=true - LLVM_VERSION=`get_package_version_RPM llvm-devel` + LLVM_VERSION=`llvm-config --version` LLVM_VERSION_FOUND=$LLVM_VERSION clean_LLVM else @@ -4901,7 +5041,7 @@ install_ARCH() { _packages="$BASE_DEVEL git cmake fontconfig \ libxi libxcursor libxrandr libxinerama glew libpng libtiff wget openal \ $OPENJPEG_DEV $VORBIS_DEV $OGG_DEV $THEORA_DEV yasm sdl2 fftw \ - libxml2 yaml-cpp tinyxml python-requests jemalloc gmp" + libxml2 yaml-cpp tinyxml python-requests jemalloc gmp potrace pugixml" OPENJPEG_USE=true VORBIS_USE=true @@ -5125,7 +5265,7 @@ install_ARCH() { if [ $? -eq 0 ]; then install_packages_ARCH llvm clang have_llvm=true - LLVM_VERSION=`get_package_version_ARCH llvm` + LLVM_VERSION=`llvm-config --version` LLVM_VERSION_FOUND=$LLVM_VERSION clean_LLVM else @@ -5687,6 +5827,13 @@ print_info() { PRINT " $_1" _buildargs="$_buildargs $_1" fi + if [ -d $INST/nanovdb ]; then + _1="-D WITH_NANOVDB=ON" + _2="-D NANOVDB_ROOT_DIR=$INST/nanovdb" + PRINT " $_1" + PRINT " $_2" + _buildargs="$_buildargs $_1 $_2" + fi fi if [ "$WITH_OPENCOLLADA" = true ]; then |