Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/build_environment/install_deps.sh')
-rwxr-xr-xbuild_files/build_environment/install_deps.sh257
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