[Bf-blender-cvs] [04075ed744e] master: Build Environment: fix alembic, openvdb, ffmpeg, osl build on Linux.

Brecht Van Lommel noreply at git.blender.org
Mon Aug 27 14:39:36 CEST 2018


Commit: 04075ed744e948bca09c8afac684415629edd1ba
Author: Brecht Van Lommel
Date:   Mon Aug 27 13:36:42 2018 +0200
Branches: master
https://developer.blender.org/rB04075ed744e948bca09c8afac684415629edd1ba

Build Environment: fix alembic, openvdb, ffmpeg, osl build on Linux.

===================================================================

M	build_files/build_environment/cmake/alembic.cmake
M	build_files/build_environment/cmake/blosc.cmake
M	build_files/build_environment/cmake/ffmpeg.cmake
M	build_files/build_environment/cmake/osl.cmake
A	build_files/build_environment/patches/ffmpeg.diff

===================================================================

diff --git a/build_files/build_environment/cmake/alembic.cmake b/build_files/build_environment/cmake/alembic.cmake
index 4c0caecf335..615413554cf 100644
--- a/build_files/build_environment/cmake/alembic.cmake
+++ b/build_files/build_environment/cmake/alembic.cmake
@@ -38,13 +38,13 @@ set(ALEMBIC_EXTRA_ARGS
 	-DBoost_DEBUG=ON
 	-DBOOST_ROOT=${LIBDIR}/boost
 	-DBoost_NO_SYSTEM_PATHS=ON
-	-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}
+	-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}
+	-DALEMBIC_ILMBASE_IEXMATH_LIB=${LIBDIR}/ilmbase/lib/${LIBPREFIX}IexMath${ILMBASE_VERSION_POSTFIX}${LIBEXT}
 	-DUSE_PYILMBASE=0
 	-DUSE_PYALEMBIC=0
 	-DUSE_ARNOLD=0
diff --git a/build_files/build_environment/cmake/blosc.cmake b/build_files/build_environment/cmake/blosc.cmake
index b0a0460aa94..18f258357c9 100644
--- a/build_files/build_environment/cmake/blosc.cmake
+++ b/build_files/build_environment/cmake/blosc.cmake
@@ -26,6 +26,7 @@ set(BLOSC_EXTRA_ARGS
 	-DPTHREAD_LIBS=${LIBDIR}/pthreads/lib/pthreadVC2.lib
 	-DPTHREAD_INCLUDE_DIR=${LIBDIR}/pthreads/inc
 	-DDEACTIVATE_SNAPPY=ON
+	-DCMAKE_POSITION_INDEPENDENT_CODE=ON
 )
 
 if(WIN32)
diff --git a/build_files/build_environment/cmake/ffmpeg.cmake b/build_files/build_environment/cmake/ffmpeg.cmake
index b0c76175508..5c8347cd40e 100644
--- a/build_files/build_environment/cmake/ffmpeg.cmake
+++ b/build_files/build_environment/cmake/ffmpeg.cmake
@@ -18,13 +18,6 @@
 
 set(FFMPEG_CFLAGS "-I${mingw_LIBDIR}/lame/include -I${mingw_LIBDIR}/openjpeg/include/ -I${mingw_LIBDIR}/ogg/include -I${mingw_LIBDIR}/vorbis/include -I${mingw_LIBDIR}/theora/include -I${mingw_LIBDIR}/vpx/include -I${mingw_LIBDIR}/x264/include -I${mingw_LIBDIR}/xvidcore/include -I${mingw_LIBDIR}/zlib/include")
 set(FFMPEG_LDFLAGS "-L${mingw_LIBDIR}/lame/lib -L${mingw_LIBDIR}/openjpeg/lib -L${mingw_LIBDIR}/ogg/lib -L${mingw_LIBDIR}/vorbis/lib -L${mingw_LIBDIR}/theora/lib -L${mingw_LIBDIR}/vpx/lib -L${mingw_LIBDIR}/x264/lib -L${mingw_LIBDIR}/xvidcore/lib -L${mingw_LIBDIR}/zlib/lib")
-if(UNIX AND NOT APPLE)
-	# OpenJpeg is compiled with pthread support on Linux, which is all fine and is what we
-	# want for maximum runtime performance, but due to static nature of that library we
-	# need to force FFpeg to link against pthread, otherwise test program used by autoconf
-	# will fail.
-	set(FFMPEG_LDFLAGS "${FFMPEG_LDFLAGS} -lpthread")
-endif()
 set(FFMPEG_EXTRA_FLAGS --pkg-config-flags=--static --extra-cflags=${FFMPEG_CFLAGS} --extra-ldflags=${FFMPEG_LDFLAGS})
 set(FFMPEG_ENV PKG_CONFIG_PATH=${mingw_LIBDIR}/openjpeg/lib/pkgconfig:${mingw_LIBDIR}/x264/lib/pkgconfig:${mingw_LIBDIR}/vorbis/lib/pkgconfig:${mingw_LIBDIR}/ogg/lib/pkgconfig:${mingw_LIBDIR})
 
@@ -64,6 +57,11 @@ ExternalProject_Add(external_ffmpeg
 	URL ${FFMPEG_URI}
 	DOWNLOAD_DIR ${DOWNLOAD_DIR}
 	URL_HASH MD5=${FFMPEG_HASH}
+	# OpenJpeg is compiled with pthread support on Linux, which is all fine and is what we
+	# want for maximum runtime performance, but due to static nature of that library we
+	# need to force ffmpeg to link against pthread, otherwise test program used by autoconf
+	# will fail. This patch does that in a way that is compatible with multiple distributions.
+	PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/ffmpeg/src/external_ffmpeg < ${PATCH_DIR}/ffmpeg.diff
 	PREFIX ${BUILD_DIR}/ffmpeg
 	CONFIGURE_COMMAND ${CONFIGURE_ENV_NO_PERL} &&
 		cd ${BUILD_DIR}/ffmpeg/src/external_ffmpeg/ &&
diff --git a/build_files/build_environment/cmake/osl.cmake b/build_files/build_environment/cmake/osl.cmake
index b44ed63c72e..469f0eee69d 100644
--- a/build_files/build_environment/cmake/osl.cmake
+++ b/build_files/build_environment/cmake/osl.cmake
@@ -73,10 +73,16 @@ set(OSL_EXTRA_ARGS
 	-DUSE_LLVM_BITCODE=OFF
 	-DUSE_PARTIO=OFF
 	${OSL_SIMD_FLAGS}
-	-DPUGIXML_HOME=${LIBDIR}/pugixml
 	-DPARTIO_LIBRARIES=
 )
 
+if(WIN32)
+set(OSL_EXTRA_ARGS
+	${OSL_EXTRA_FLAGS}
+	-DPUGIXML_HOME=${LIBDIR}/pugixml
+)
+endif()
+
 ExternalProject_Add(external_osl
 	URL ${OSL_URI}
 	DOWNLOAD_DIR ${DOWNLOAD_DIR}
diff --git a/build_files/build_environment/patches/ffmpeg.diff b/build_files/build_environment/patches/ffmpeg.diff
new file mode 100644
index 00000000000..960728ae980
--- /dev/null
+++ b/build_files/build_environment/patches/ffmpeg.diff
@@ -0,0 +1,11 @@
+--- a/configure	2018-08-27 13:46:41.071106150 +0200
++++ b/configure	2018-08-27 13:46:28.162765762 +0200
+@@ -6013,7 +6013,7 @@
+                                require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
+ enabled libopenh264       && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
+ enabled libopenjpeg       && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
+-                               { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
++                               { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version "-DOPJ_STATIC $pthreads_extralibs $libm_extralibs" && add_cppflags "-DOPJ_STATIC $pthreads_extralibs $libm_extralibs"; } }
+ enabled libopenmpt        && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
+ enabled libopus           && {
+     enabled libopus_decoder && {



More information about the Bf-blender-cvs mailing list