Fix two stupid mistakes... Btw, osl now compiles with Fedora17, once llvm-3.1 has...
[blender.git] / build_files / build_environment / install_deps.sh
1 #!/bin/bash
2
3 DISTRO=""
4 SRC="$HOME/src/blender-deps"
5 INST="/opt/lib"
6 CWD=$PWD
7
8 # OSL is horror for manual building even
9 # i would want it to be setteled for manual build first,
10 # and only then do it automatically
11 BUILD_OSL=false
12
13 # Try to link everything statically. Use this to produce protable versions of blender.
14 ALL_STATIC=false
15
16 THREADS=`cat /proc/cpuinfo | grep cores | uniq | sed -e "s/.*: *\(.*\)/\\1/"`
17 if [ -z "$THREADS" ]; then
18   THREADS=1
19 fi
20
21 COMMON_INFO="Source code of dependencies needed to be compiled will be downloaded and extracted into '$SRC'.
22 Built libs of dependencies needed to be compiled will be installed into '$INST'.
23 Please edit \$SRC and/or \$INST variables at the begining of this script if you want to use other paths!
24
25 Number of threads for building: $THREADS.
26 Building OSL: $BUILD_OSL (edit \$BUILD_OSL var to change this).
27 All static linking: $ALL_STATIC (edit \$ALL_STATIC var to change this)."
28
29
30 PYTHON_VERSION="3.3.0"
31 PYTHON_VERSION_MIN="3.3"
32 PYTHON_SOURCE="http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.bz2"
33
34 BOOST_VERSION="1.51.0"
35 _boost_version_nodots=`echo "$BOOST_VERSION" | sed -r 's/\./_/g'`
36 BOOST_SOURCE="http://sourceforge.net/projects/boost/files/boost/$BOOST_VERSION/boost_$_boost_version_nodots.tar.bz2/download"
37 BOOST_VERSION_MIN="1.49"
38
39 OCIO_VERSION="1.0.7"
40 OCIO_SOURCE="https://github.com/imageworks/OpenColorIO/tarball/v$OCIO_VERSION"
41 OCIO_VERSION_MIN="1.0"
42
43 OIIO_VERSION="1.1.1"
44 OIIO_SOURCE="https://github.com/OpenImageIO/oiio/tarball/Release-$OIIO_VERSION"
45 OIIO_VERSION_MIN="1.1"
46
47 LLVM_VERSION="3.1"
48 LLVM_VERSION_MIN="3.0"
49 LLVM_VERSION_FOUND=""
50 LLVM_SOURCE="http://llvm.org/releases/$LLVM_VERSION/llvm-$LLVM_VERSION.src.tar.gz"
51 LLVM_CLANG_SOURCE="http://llvm.org/releases/$LLVM_VERSION/clang-$LLVM_VERSION.src.tar.gz"
52
53 # OSL needs to be compiled for now!
54 OSL_VERSION="1.2.0"
55 OSL_SOURCE="https://github.com/mont29/OpenShadingLanguage/archive/blender-fixes.tar.gz"
56
57 FFMPEG_VERSION="1.0"
58 FFMPEG_SOURCE="http://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2"
59 FFMPEG_VERSION_MIN="0.7.6"
60 _ffmpeg_list_sep=";"
61
62 # FFMPEG optional libs.
63 VORBIS_USE=false
64 VORBIS_DEV=""
65 SCHRO_USE=false
66 SCRHO_DEV=""
67 THEORA_USE=false
68 THEORA_DEV=""
69 XVID_USE=false
70 XVID_DEV=""
71 X264_USE=false
72 X264_DEV=""
73 X264_VERSION_MIN=0.118
74 VPX_USE=false
75 VPX_VERSION_MIN=0.9.7
76 VPX_DEV=""
77 MP3LAME_USE=false
78 MP3LAME_DEV=""
79 OPENJPEG_USE=false
80 OPENJPEG_DEV=""
81
82 # Switch to english language, else some things (like check_package_DEB()) won't work!
83 LANG_BACK=$LANG
84 LANG=""
85 export LANG
86
87 ERROR() {
88   echo "${@}"
89 }
90
91 INFO() {
92   echo "${@}"
93 }
94
95 # Return 0 if $1 = $2 (i.e. 1.01.0 = 1.1, but 1.1.1 != 1.1), else 1.
96 # $1 and $2 should be version numbers made of numbers only.
97 version_eq() {
98   backIFS=$IFS
99   IFS='.'
100
101   # Split both version numbers into their numeric elements.
102   arr1=( $1 )
103   arr2=( $2 )
104
105   ret=1
106
107   count1=${#arr1[@]}
108   count2=${#arr2[@]}
109   if [ $count2 -ge $count1 ]; then
110     _t=$count1
111     count1=$count2
112     count2=$_t
113     arr1=( $2 )
114     arr2=( $1 )
115   fi
116
117   ret=0
118   for (( i=0; $i < $count2; i++ ))
119   do
120     if [ $(( 10#${arr1[$i]} )) -ne $(( 10#${arr2[$i]} )) ]; then
121       ret=1
122       break
123     fi
124   done
125
126   for (( i=$count2; $i < $count1; i++ ))
127   do
128     if [ $(( 10#${arr1[$i]} )) -ne 0 ]; then
129       ret=1
130       break
131     fi
132   done
133
134   IFS=$backIFS
135   return $ret
136 }
137
138 # Return 0 if $1 >= $2, else 1.
139 # $1 and $2 should be version numbers made of numbers only.
140 version_ge() {
141   version_eq $1 $2
142   if [ $? -eq 1 -a $(echo -e "$1\n$2" | sort --version-sort | head --lines=1) = "$1" ]; then
143     return 1
144   else
145     return 0
146   fi
147 }
148
149 # Return 0 if $1 is into $2 (e.g. 3.3.2 is into 3.3, but not 3.3.0 or 3.3.5), else 1.
150 # $1 and $2 should be version numbers made of numbers only.
151 # $1 should be at least as long as $2!
152 version_match() {
153   backIFS=$IFS
154   IFS='.'
155
156   # Split both version numbers into their numeric elements.
157   arr1=( $1 )
158   arr2=( $2 )
159
160   ret=1
161
162   count1=${#arr1[@]}
163   count2=${#arr2[@]}
164   if [ $count1 -ge $count2 ]; then
165     ret=0
166     for (( i=0; $i < $count2; i++ ))
167     do
168       if [ $(( 10#${arr1[$i]} )) -ne $(( 10#${arr2[$i]} )) ]; then
169         ret=1
170         break
171       fi
172     done
173   fi
174
175   IFS=$backIFS
176   return $ret
177 }
178
179 detect_distro() {
180   if [ -f /etc/debian_version ]; then
181     DISTRO="DEB"
182   elif [ -f /etc/redhat-release ]; then
183     DISTRO="RPM"
184   elif [ -f /etc/SuSE-release ]; then
185     DISTRO="SUSE"
186   fi
187 }
188
189 prepare_opt() {
190   INFO "Ensuring $INST exists and is writable by us"
191   sudo mkdir -p $INST
192   sudo chown $USER $INST
193   sudo chmod 775 $INST
194 }
195
196 # Check whether the current package needs to be recompiled, based on a dummy file containing a magic number in its name...
197 magic_compile_check() {
198   if [ -f $INST/.$1-magiccheck-$2 ]; then
199     return 0
200   else
201     return 1
202   fi
203 }
204
205 magic_compile_set() {
206   rm -f $INST/.$1-magiccheck-*
207   touch $INST/.$1-magiccheck-$2
208 }
209
210 compile_Python() {
211   # To be changed each time we make edits that would modify the compiled result!
212   py_magic=0
213
214   _src=$SRC/Python-$PYTHON_VERSION
215   _inst=$INST/python-$PYTHON_VERSION
216
217   # Clean install if needed!
218   magic_compile_check python-$PYTHON_VERSION $py_magic
219   if [ $? -eq 1 ]; then
220     rm -rf $_inst
221   fi
222
223   if [ ! -d $_inst ]; then
224     INFO "Building Python-$PYTHON_VERSION"
225
226     prepare_opt
227
228     if [ ! -d $_src ]; then
229       mkdir -p $SRC
230       wget -c $PYTHON_SOURCE -O $_src.tar.bz2
231
232       INFO "Unpacking Python-$PYTHON_VERSION"
233       tar -C $SRC -xf $_src.tar.bz2
234     fi
235
236     cd $_src
237
238     ./configure --prefix=$_inst --enable-ipv6 \
239         --enable-loadable-sqlite-extensions --with-dbmliborder=bdb \
240         --with-computed-gotos --with-pymalloc
241
242     make -j$THREADS && make install
243     make clean
244
245     if [ -d $_inst ]; then
246       rm -f $INST/python-3.3
247       ln -s python-$PYTHON_VERSION $INST/python-3.3
248     else
249       ERROR "Python--$PYTHON_VERSION failed to compile, exiting"
250       exit 1
251     fi
252
253     magic_compile_set python-$PYTHON_VERSION $py_magic
254
255     cd $CWD
256   else
257     INFO "Own Python-$PYTHON_VERSION is up to date, nothing to do!"
258     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
259   fi
260 }
261
262 compile_Boost() {
263   # To be changed each time we make edits that would modify the compiled result!
264   boost_magic=7
265
266   _src=$SRC/boost-$BOOST_VERSION
267   _inst=$INST/boost-$BOOST_VERSION
268
269   # Clean install if needed!
270   magic_compile_check boost-$BOOST_VERSION $boost_magic
271   if [ $? -eq 1 ]; then
272     rm -rf $_inst
273   fi
274
275   if [ ! -d $_inst ]; then
276     INFO "Building Boost-$BOOST_VERSION"
277
278     prepare_opt
279
280     if [ ! -d $_src ]; then
281       INFO "Downloading Boost-$BOOST_VERSION"
282       mkdir -p $SRC
283       wget -c $BOOST_SOURCE -O $_src.tar.bz2
284       tar -C $SRC --transform "s,(.*/?)boost_1_[^/]+(.*),\1boost-$BOOST_VERSION\2,x" -xf $_src.tar.bz2
285     fi
286
287     cd $_src
288     if [ ! -f $_src/b2 ]; then
289       ./bootstrap.sh
290     fi
291     ./b2 -j$THREADS -a --with-system --with-filesystem --with-thread --with-regex --with-locale --with-date_time \
292          --prefix=$_inst --disable-icu boost.locale.icu=off install
293     ./b2 --clean
294
295     if [ -d $_inst ]; then
296       rm -f $INST/boost
297       ln -s boost-$BOOST_VERSION $INST/boost
298     else
299       ERROR "Boost-$BOOST_VERSION failed to compile, exiting"
300       exit 1
301     fi
302
303     magic_compile_set boost-$BOOST_VERSION $boost_magic
304
305     cd $CWD
306   else
307     INFO "Own Boost-$BOOST_VERSION is up to date, nothing to do!"
308     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
309   fi
310 }
311
312 compile_OCIO() {
313   # To be changed each time we make edits that would modify the compiled result!
314   ocio_magic=1
315
316   _src=$SRC/OpenColorIO-$OCIO_VERSION
317   _inst=$INST/ocio-$OCIO_VERSION
318
319   # Clean install if needed!
320   magic_compile_check ocio-$OCIO_VERSION $ocio_magic
321   if [ $? -eq 1 ]; then
322     rm -rf $_inst
323   fi
324
325   if [ ! -d $_inst ]; then
326     INFO "Building OpenColorIO-$OCIO_VERSION"
327
328     prepare_opt
329
330     if [ ! -d $_src ]; then
331       INFO "Downloading OpenColorIO-$OCIO_VERSION"
332       mkdir -p $SRC
333       wget -c $OCIO_SOURCE -O $_src.tar.gz
334
335       INFO "Unpacking OpenColorIO-$OCIO_VERSION"
336       tar -C $SRC --transform "s,(.*/?)imageworks-OpenColorIO[^/]*(.*),\1OpenColorIO-$OCIO_VERSION\2,x" \
337           -xf $_src.tar.gz
338     fi
339
340     cd $_src
341     # Always refresh the whole build!
342     if [ -d build ]; then
343       rm -rf build
344     fi    
345     mkdir build
346     cd build
347
348     if file /bin/cp | grep -q '32-bit'; then
349       cflags="-fPIC -m32 -march=i686"
350     else
351       cflags="-fPIC"
352     fi
353
354     cmake -D CMAKE_BUILD_TYPE=Release \
355           -D CMAKE_PREFIX_PATH=$_inst \
356           -D CMAKE_INSTALL_PREFIX=$_inst \
357           -D CMAKE_CXX_FLAGS="$cflags" \
358           -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" \
359           -D OCIO_BUILD_APPS=OFF \
360           -D OCIO_BUILD_PYGLUE=OFF \
361           ..
362
363     make -j$THREADS && make install
364
365     # Force linking against static libs
366     rm -f $_inst/lib/*.so*
367
368     # Additional depencencies
369     cp ext/dist/lib/libtinyxml.a $_inst/lib
370     cp ext/dist/lib/libyaml-cpp.a $_inst/lib
371
372     make clean
373
374     if [ -d $_inst ]; then
375       rm -f $INST/ocio
376       ln -s ocio-$OCIO_VERSION $INST/ocio
377     else
378       ERROR "OpenColorIO-$OCIO_VERSION failed to compile, exiting"
379       exit 1
380     fi
381
382     magic_compile_set ocio-$OCIO_VERSION $ocio_magic
383
384     cd $CWD
385   else
386     INFO "Own OpenColorIO-$OCIO_VERSION is up to date, nothing to do!"
387     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
388   fi
389 }
390
391 compile_OIIO() {
392   # To be changed each time we make edits that would modify the compiled result!
393   oiio_magic=6
394
395   _src=$SRC/OpenImageIO-$OIIO_VERSION
396   _inst=$INST/oiio-$OIIO_VERSION
397
398   # Clean install if needed!
399   magic_compile_check oiio-$OIIO_VERSION $oiio_magic
400   if [ $? -eq 1 ]; then
401     rm -rf $_inst
402   fi
403
404   if [ ! -d $_inst ]; then
405     INFO "Building OpenImageIO-$OIIO_VERSION"
406
407     prepare_opt
408
409     if [ ! -d $_src ]; then
410       wget -c $OIIO_SOURCE -O "$_src.tar.gz"
411
412       INFO "Unpacking OpenImageIO-$OIIO_VERSION"
413       tar -C $SRC --transform "s,(.*/?)OpenImageIO-oiio[^/]*(.*),\1OpenImageIO-$OIIO_VERSION\2,x" \
414           -xf $_src.tar.gz
415
416       cd $_src
417
418       # XXX Ugly patching hack!
419       cat << EOF | patch -p1
420 diff --git a/src/libutil/SHA1.cpp b/src/libutil/SHA1.cpp
421 index b9e6c8b..c761185 100644
422 --- a/src/libutil/SHA1.cpp
423 +++ b/src/libutil/SHA1.cpp
424 @@ -8,9 +8,9 @@
425  
426  // If compiling with MFC, you might want to add #include "StdAfx.h"
427  
428 +#include "SHA1.h"
429  #include "hash.h"
430  #include "dassert.h"
431 -#include "SHA1.h"
432  
433  #ifdef SHA1_UTILITY_FUNCTIONS
434  #define SHA1_MAX_FILE_BUFFER 8000
435 EOF
436
437       cd $CWD
438
439     fi
440
441     cd $_src
442     # Always refresh the whole build!
443     if [ -d build ]; then
444       rm -rf build
445     fi    
446     mkdir build
447     cd build
448
449     cmake_d="-D CMAKE_BUILD_TYPE=Release"
450     cmake_d="$cmake_d -D CMAKE_PREFIX_PATH=$_inst"
451     cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
452     cmake_d="$cmake_d -D BUILDSTATIC=ON"
453     cmake_d="$cmake_d -D LINKSTATIC=ON"
454
455     if [ -d $INST/boost ]; then
456       cmake_d="$cmake_d -D BOOST_ROOT=$INST/boost -D Boost_NO_SYSTEM_PATHS=ON"
457       if $ALL_STATIC; then
458         cmake_d="$cmake_d -D Boost_USE_STATIC_LIBS=ON"        
459       fi
460     fi
461
462     # Looks like we do not need ocio in oiio for now...
463 #    if [ -d $INST/ocio ]; then
464 #      cmake_d="$cmake_d -D OCIO_PATH=$INST/ocio"
465 #    fi
466
467     if file /bin/cp | grep -q '32-bit'; then
468       cflags="-fPIC -m32 -march=i686"
469     else
470       cflags="-fPIC"
471     fi
472
473     cmake $cmake_d -D CMAKE_CXX_FLAGS="$cflags" -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" ../src
474
475     make -j$THREADS && make install
476     make clean
477
478     if [ -d $_inst ]; then
479       rm -f $INST/oiio
480       ln -s oiio-$OIIO_VERSION $INST/oiio
481     else
482       ERROR "OpenImageIO-$OIIO_VERSION failed to compile, exiting"
483       exit 1
484     fi
485
486     magic_compile_set oiio-$OIIO_VERSION $oiio_magic
487
488     cd $CWD
489   else
490     INFO "Own OpenImageIO-$OIIO_VERSION is up to date, nothing to do!"
491     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
492   fi
493 }
494
495 compile_LLVM() {
496   # To be changed each time we make edits that would modify the compiled result!
497   llvm_magic=1
498
499   _src=$SRC/LLVM-$LLVM_VERSION
500   _inst=$INST/llvm-$LLVM_VERSION
501   _src_clang=$SRC/CLANG-$LLVM_VERSION
502
503   # Clean install if needed!
504   magic_compile_check llvm-$LLVM_VERSION $llvm_magic
505   if [ $? -eq 1 ]; then
506     rm -rf $_inst
507     rm -rf $_inst_clang
508   fi
509
510   if [ ! -d $_inst ]; then
511     INFO "Building LLVM-$LLVM_VERSION (CLANG included!)"
512
513     prepare_opt
514
515     if [ ! -d $_src -o true ]; then
516       wget -c $LLVM_SOURCE -O "$_src.tar.gz"
517       wget -c $LLVM_CLANG_SOURCE -O "$_src_clang.tar.gz"
518
519       INFO "Unpacking LLVM-$LLVM_VERSION"
520       tar -C $SRC --transform "s,([^/]*/?)llvm-[^/]*(.*),\1LLVM-$LLVM_VERSION\2,x" \
521           -xf $_src.tar.gz
522       INFO "Unpacking CLANG-$LLVM_VERSION to $_src/tools/clang"
523       tar -C $_src/tools \
524           --transform "s,([^/]*/?)clang-[^/]*(.*),\1clang\2,x" \
525           -xf $_src_clang.tar.gz
526
527       cd $_src
528
529       # XXX Ugly patching hack!
530       cat << EOF | patch -p1
531 --- a/CMakeLists.txt
532 +++ b/CMakeLists.txt
533 @@ -13,7 +13,7 @@
534  set(LLVM_VERSION_MAJOR 3)
535  set(LLVM_VERSION_MINOR 1)
536  
537 -set(PACKAGE_VERSION "\${LLVM_VERSION_MAJOR}.\${LLVM_VERSION_MINOR}svn")
538 +set(PACKAGE_VERSION "\${LLVM_VERSION_MAJOR}.\${LLVM_VERSION_MINOR}")
539  
540  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
541  
542 EOF
543
544       cd $CWD
545
546     fi
547
548     cd $_src
549
550     # Always refresh the whole build!
551     if [ -d build ]; then
552       rm -rf build
553     fi    
554     mkdir build
555     cd build
556
557     cmake_d="-D CMAKE_BUILD_TYPE=Release"
558     cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
559     cmake_d="$cmake_d -D LLVM_ENABLE_FFI=ON"
560
561     if [ -d $_FFI_INCLUDE_DIR ]; then
562       cmake_d="$cmake_d -D FFI_INCLUDE_DIR=$_FFI_INCLUDE_DIR"
563     fi
564
565     cmake $cmake_d ..
566
567     make -j$THREADS && make install
568     make clean
569
570     if [ -d $_inst ]; then
571       rm -f $INST/llvm
572       ln -s llvm-$LLVM_VERSION $INST/llvm
573     else
574       ERROR "LLVM-$LLVM_VERSION failed to compile, exiting"
575       exit 1
576     fi
577
578     magic_compile_set llvm-$LLVM_VERSION $llvm_magic
579
580     cd $CWD
581   else
582     INFO "Own LLVM-$LLVM_VERSION (CLANG included) is up to date, nothing to do!"
583     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
584   fi
585 }
586
587 compile_OSL() {
588   # To be changed each time we make edits that would modify the compiled result!
589   osl_magic=7
590
591   _src=$SRC/OpenShadingLanguage-$OSL_VERSION
592   _inst=$INST/osl-$OSL_VERSION
593
594   # Clean install if needed!
595   magic_compile_check osl-$OSL_VERSION $osl_magic
596   if [ $? -eq 1 ]; then
597     rm -rf $_inst
598   fi
599
600   if [ ! -d $_inst ]; then
601     INFO "Building OpenShadingLanguage-$OSL_VERSION"
602
603     prepare_opt
604
605     if [ ! -d $_src ]; then
606       # XXX Using git on my own repo for now, looks like archives are not updated immediately... :/
607 #      wget -c $OSL_SOURCE -O "$_src.tar.gz"
608
609 #      INFO "Unpacking OpenShadingLanguage-$OSL_VERSION"
610 #      tar -C $SRC --transform "s,(.*/?)OpenShadingLanguage-[^/]*(.*),\1OpenShadingLanguage-$OSL_VERSION\2,x" \
611 #          -xf $_src.tar.gz
612       git clone https://github.com/mont29/OpenShadingLanguage.git $_src
613       cd $_src
614       git checkout blender-fixes
615       cd $CWD
616     fi
617
618     cd $_src
619     # XXX For now, always update from latest repo...
620     git pull origin
621
622     # Always refresh the whole build!
623     if [ -d build ]; then
624       rm -rf build
625     fi    
626     mkdir build
627     cd build
628
629     cmake_d="-D CMAKE_BUILD_TYPE=Release"
630     cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
631     cmake_d="$cmake_d -D BUILDSTATIC=ON"
632     cmake_d="$cmake_d -D BUILD_TESTING=OFF"
633
634     if [ -d $INST/boost ]; then
635       cmake_d="$cmake_d -D BOOST_ROOT=$INST/boost -D Boost_NO_SYSTEM_PATHS=ON"
636       if $ALL_STATIC; then
637         cmake_d="$cmake_d -D Boost_USE_STATIC_LIBS=ON"        
638       fi
639     fi
640
641     if [ -d $INST/oiio ]; then
642       cmake_d="$cmake_d -D OPENIMAGEIOHOME=$INST/oiio"
643     fi
644
645     if [ ! -z $LLVM_VERSION_FOUND ]; then
646       cmake_d="$cmake_d -D LLVM_VERSION=$LLVM_VERSION_FOUND"
647       if [ -d $INST/llvm ]; then
648         cmake_d="$cmake_d -D LLVM_DIRECTORY=$INST/llvm"
649         cmake_d="$cmake_d -D LLVM_STATIC=ON"
650       fi
651     fi
652
653     cmake $cmake_d ../src
654
655     make -j$THREADS && make install
656     make clean
657
658     if [ -d $_inst ]; then
659       rm -f $INST/osl
660       ln -s osl-$OSL_VERSION $INST/osl
661     else
662       ERROR "OpenShadingLanguage-$OSL_VERSION failed to compile, exiting"
663       exit 1
664     fi
665
666     magic_compile_set osl-$OSL_VERSION $osl_magic
667
668     cd $CWD
669   else
670     INFO "Own OpenShadingLanguage-$OSL_VERSION is up to date, nothing to do!"
671     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
672   fi
673 }
674
675 compile_FFmpeg() {
676   # To be changed each time we make edits that would modify the compiled result!
677   ffmpeg_magic=3
678
679   _src=$SRC/ffmpeg-$FFMPEG_VERSION
680   _inst=$INST/ffmpeg-$FFMPEG_VERSION
681
682   # Clean install if needed!
683   magic_compile_check ffmpeg-$FFMPEG_VERSION $ffmpeg_magic
684   if [ $? -eq 1 ]; then
685     rm -rf $_inst
686   fi
687
688   if [ ! -d $_inst ]; then
689     INFO "Building ffmpeg-$FFMPEG_VERSION"
690
691     prepare_opt
692
693     if [ ! -d $_src ]; then
694       INFO "Downloading ffmpeg-$FFMPEG_VERSION"
695       wget -c $FFMPEG_SOURCE -O "$_src.tar.bz2"
696
697       INFO "Unpacking ffmpeg-$FFMPEG_VERSION"
698       tar -C $SRC -xf $_src.tar.bz2
699     fi
700
701     cd $_src
702
703     extra=""
704
705     if $VORBIS_USE; then
706       extra="$extra --enable-libvorbis"
707     fi
708
709     if $THEORA_USE; then
710       extra="$extra --enable-libtheora"
711     fi
712
713     # XXX At least under Debian, static schro gives problem at blender linking time... :/
714     if $SCHRO_USE && ! $ALL_STATIC; then
715       extra="$extra --enable-libschroedinger"
716     fi
717
718     if $XVID_USE; then
719       extra="$extra --enable-libxvid"
720     fi
721
722     if $X264_USE; then
723       extra="$extra --enable-libx264"
724     fi
725
726     if $VPX_USE; then
727       extra="$extra --enable-libvpx"
728     fi
729
730     if $MP3LAME_USE; then
731       extra="$extra --enable-libmp3lame"
732     fi
733
734     if $OPENJPEG_USE; then
735       extra="$extra --enable-libopenjpeg"
736     fi
737
738     ./configure --cc="gcc -Wl,--as-needed" \
739         --extra-ldflags="-pthread -static-libgcc" \
740         --prefix=$_inst --enable-static \
741         --disable-ffplay --disable-ffserver --disable-doc \
742         --enable-gray \
743         --enable-avfilter --disable-vdpau \
744         --disable-bzlib --disable-libgsm --disable-libspeex \
745         --enable-pthreads --enable-zlib --enable-stripping --enable-runtime-cpudetect \
746         --disable-vaapi  --disable-libfaac --disable-nonfree --enable-gpl \
747         --disable-postproc --disable-x11grab  --disable-librtmp  --disable-libopencore-amrnb \
748         --disable-libopencore-amrwb --disable-libdc1394 --disable-version3  --disable-outdev=sdl \
749         --disable-outdev=alsa --disable-indev=sdl --disable-indev=alsa --disable-indev=jack \
750         --disable-indev=lavfi $extra
751
752     make -j$THREADS && make install
753     make clean
754
755     if [ -d $_inst ]; then
756       rm -f $INST/ffmpeg
757       ln -s ffmpeg-$FFMPEG_VERSION $INST/ffmpeg
758     else
759       ERROR "FFmpeg-$FFMPEG_VERSION failed to compile, exiting"
760       exit 1
761     fi
762
763     magic_compile_set ffmpeg-$FFMPEG_VERSION $ffmpeg_magic
764
765     cd $CWD
766   else
767     INFO "Own ffmpeg-$FFMPEG_VERSION is up to date, nothing to do!"
768     INFO "If you want to force rebuild of this lib, delete the '$_src' and '$_inst' directories."
769   fi
770 }
771
772 get_package_version_DEB() {
773     dpkg-query -W -f '${Version}' $1 | sed -r 's/.*:\s*([0-9]+:)(([0-9]+\.?)+).*/\2/'
774 }
775
776 check_package_DEB() {
777   r=`apt-cache policy $1 | grep -c 'Candidate:'`
778
779   if [ $r -ge 1 ]; then
780     return 0
781   else
782     return 1
783   fi
784 }
785
786 check_package_version_match_DEB() {
787   v=`apt-cache policy $1 | grep 'Candidate:' | sed -r 's/.*:\s*([0-9]+:)(([0-9]+\.?)+).*/\2/'`
788
789   if [ -z "$v" ]; then
790     return 1
791   fi
792
793   version_match $v $2
794   return $?
795 }
796
797 check_package_version_ge_DEB() {
798   v=`apt-cache policy $1 | grep 'Candidate:' | sed -r 's/.*:\s*([0-9]+:)?(([0-9]+\.?)+).*/\2/'`
799
800   if [ -z "$v" ]; then
801     return 1
802   fi
803
804   version_ge $v $2
805   return $?
806 }
807
808 install_DEB() {
809   INFO ""
810   INFO "Installing dependencies for DEB-based distribution"
811   INFO "$COMMON_INFO"
812   INFO ""
813
814   sudo apt-get update
815 # XXX Why in hell? Let's let this stuff to the user's responsability!!!
816 #  sudo apt-get -y upgrade
817
818   # These libs should always be available in debian/ubuntu official repository...
819   OPENJPEG_DEV="libopenjpeg-dev"
820   SCHRO_DEV="libschroedinger-dev"
821   VORBIS_DEV="libvorbis-dev"
822   THEORA_DEV="libtheora-dev"
823
824   sudo apt-get install -y gawk cmake scons gcc g++ libjpeg-dev libpng-dev libtiff-dev \
825     libfreetype6-dev libx11-dev libxi-dev wget libsqlite3-dev libbz2-dev libncurses5-dev \
826     libssl-dev liblzma-dev libreadline-dev $OPENJPEG_DEV libopenexr-dev libopenal-dev \
827     libglew-dev yasm $SCHRO_DEV $THEORA_DEV $VORBIS_DEV libsdl1.2-dev \
828     libfftw3-dev libjack-dev python-dev patch
829
830   OPENJPEG_USE=true
831   SCHRO_USE=true
832   VORBIS_USE=true
833   THEORA_USE=true
834
835   # Grmpf, debian is libxvidcore-dev and ubuntu libxvidcore4-dev!
836   XVID_DEV="libxvidcore-dev"
837   check_package_DEB $XVID_DEV
838   if [ $? -eq 0 ]; then
839     sudo apt-get install -y $XVID_DEV
840     XVID_USE=true
841   else
842     XVID_DEV="libxvidcore4-dev"
843     check_package_DEB $XVID_DEV
844     if [ $? -eq 0 ]; then
845       sudo apt-get install -y $XVID_DEV
846       XVID_USE=true
847     fi
848   fi
849
850   MP3LAME_DEV="libmp3lame-dev"
851   check_package_DEB $MP3LAME_DEV
852   if [ $? -eq 0 ]; then
853     sudo apt-get install -y $MP3LAME_DEV
854     MP3LAME_USE=true
855   fi
856
857   X264_DEV="libx264-dev"
858   check_package_version_ge_DEB $X264_DEV $X264_VERSION_MIN
859   if [ $? -eq 0 ]; then
860     sudo apt-get install -y $X264_DEV
861     X264_USE=true
862   fi
863
864   VPX_DEV="libvpx-dev"
865   check_package_version_ge_DEB $VPX_DEV $VPX_VERSION_MIN
866   if [ $? -eq 0 ]; then
867     sudo apt-get install -y $VPX_DEV
868     VPX_USE=true
869   fi
870
871   check_package_DEB libspnav-dev
872   if [ $? -eq 0 ]; then
873     sudo apt-get install -y libspnav-dev
874   fi
875
876   check_package_DEB python3.3-dev
877   if [ $? -eq 0 ]; then
878     sudo apt-get install -y python3.3-dev
879   else
880     compile_Python
881   fi
882
883   check_package_version_ge_DEB libboost-dev $BOOST_VERSION_MIN
884   if [ $? -eq 0 ]; then
885     sudo apt-get install -y libboost-dev
886
887     boost_version=$(echo `get_package_version_DEB libboost-dev` | sed -r 's/^([0-9]+\.[0-9]+).*/\1/')
888
889     check_package_DEB libboost-locale$boost_version-dev
890     if [ $? -eq 0 ]; then
891       sudo apt-get install -y libboost-locale$boost_version-dev libboost-filesystem$boost_version-dev \
892                               libboost-regex$boost_version-dev libboost-system$boost_version-dev \
893                               libboost-thread$boost_version-dev
894     else
895       compile_Boost
896     fi
897   else
898     compile_Boost
899   fi
900
901   check_package_version_ge_DEB libopencolorio-dev $OCIO_VERSION_MIN
902   if [ $? -eq 0 ]; then
903     sudo apt-get install -y libopencolorio-dev
904   else
905     compile_OCIO
906   fi
907
908   check_package_version_ge_DEB libopenimageio-dev $OIIO_VERSION_MIN
909   if [ $? -eq 0 ]; then
910     sudo apt-get install -y libopenimageio-dev
911   else
912     compile_OIIO
913   fi
914
915   if $BUILD_OSL; then
916     have_llvm=false
917
918     check_package_DEB llvm-$LLVM_VERSION-dev
919     if [ $? -eq 0 ]; then
920       sudo apt-get install -y llvm-$LLVM_VERSION-dev
921       have_llvm=true
922       LLVM_VERSION_FOUND=$LLVM_VERSION
923     else
924       check_package_DEB llvm-$LLVM_VERSION_MIN-dev
925       if [ $? -eq 0 ]; then
926         sudo apt-get install -y llvm-$LLVM_VERSION_MIN-dev
927         have_llvm=true
928         LLVM_VERSION_FOUND=$LLVM_VERSION_MIN
929       fi
930     fi
931
932     if $have_llvm; then
933       sudo apt-get install -y clang flex bison libtbb-dev git
934       # No package currently!
935       compile_OSL
936     fi
937   fi
938
939 #  XXX Debian features libav packages as ffmpeg, those are not really compatible with blender code currently :/
940 #      So for now, always build our own ffmpeg.
941 #  check_package_DEB ffmpeg
942 #  if [ $? -eq 0 ]; then
943 #    sudo apt-get install -y ffmpeg
944 #    ffmpeg_version=`get_package_version_DEB ffmpeg`
945 #    INFO "ffmpeg version: $ffmpeg_version"
946 #    if [ ! -z "$ffmpeg_version" ]; then
947 #      if  dpkg --compare-versions $ffmpeg_version gt 0.7.2; then
948 #        sudo apt-get install -y libavfilter-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev
949 #      else
950 #        compile_FFmpeg
951 #      fi
952 #    fi
953 #  fi
954   compile_FFmpeg
955 }
956
957 get_package_version_RPM() {
958   yum info $1 | grep Version | tail -n 1 | sed -r 's/.*:\s+(([0-9]+\.?)+).*/\1/'
959 }
960
961 check_package_RPM() {
962   r=`yum info $1 | grep -c 'Summary'`
963
964   if [ $r -ge 1 ]; then
965     return 0
966   else
967     return 1
968   fi
969 }
970
971 check_package_version_match_RPM() {
972   v=`get_package_version_RPM $1`
973
974   if [ -z "$v" ]; then
975     return 1
976   fi
977
978   version_match $v $2
979   return $?
980 }
981
982 check_package_version_ge_RPM() {
983   v=`get_package_version_RPM $1`
984
985   if [ -z "$v" ]; then
986     return 1
987   fi
988
989   version_ge $v $2
990   return $?
991 }
992
993 install_RPM() {
994   INFO ""
995   INFO "Installing dependencies for RPM-based distribution"
996   INFO "$COMMON_INFO"
997   INFO ""
998
999   sudo yum -y update
1000
1001   # These libs should always be available in debian/ubuntu official repository...
1002   OPENJPEG_DEV="openjpeg-devel"
1003   SCHRO_DEV="schroedinger-devel"
1004   VORBIS_DEV="libvorbis-devel"
1005   THEORA_DEV="libtheora-devel"
1006
1007   sudo yum -y install gawk gcc gcc-c++ cmake scons libpng-devel libtiff-devel \
1008     freetype-devel libX11-devel libXi-devel wget libsqlite3x-devel ncurses-devel \
1009     readline-devel $OPENJPEG_DEV openexr-devel openal-soft-devel \
1010     glew-devel yasm $SCHRO_DEV $THEORA_DEV $VORBIS_DEV SDL-devel \
1011     fftw-devel lame-libs jack-audio-connection-kit-devel libspnav-devel \
1012     libjpeg-devel patch python-devel
1013
1014   OPENJPEG_USE=true
1015   SCHRO_USE=true
1016   VORBIS_USE=true
1017   THEORA_USE=true
1018
1019   X264_DEV="x264-devel"
1020   check_package_version_ge_RPM $X264_DEV $X264_VERSION_MIN
1021   if [ $? -eq 0 ]; then
1022     sudo yum install -y $X264_DEV
1023     X264_USE=true
1024   fi
1025
1026   XVID_DEV="xvidcore-devel"
1027   check_package_RPM $XVID_DEV
1028   if [ $? -eq 0 ]; then
1029     sudo yum install -y $XVID_DEV
1030     XVID_USE=true
1031   fi
1032
1033   VPX_DEV="libvpx-devel"
1034   check_package_version_ge_RPM $VPX_DEV $VPX_VERSION_MIN
1035   if [ $? -eq 0 ]; then
1036     sudo yum install -y $VPX_DEV
1037     VPX_USE=true
1038   fi
1039
1040   MP3LAME_DEV="lame-devel"
1041   check_package_RPM $MP3LAME_DEV
1042   if [ $? -eq 0 ]; then
1043     sudo yum install -y $MP3LAME_DEV
1044     MP3LAME_USE=true
1045   fi
1046
1047   check_package_version_match_RPM python3-devel $PYTHON_VERSION_MIN
1048   if [ $? -eq 0 ]; then
1049     sudo yum install -y python3-devel
1050   else
1051     compile_Python
1052   fi
1053
1054   check_package_version_ge_RPM boost-devel $BOOST_VERSION_MIN
1055   if [ $? -eq 0 ]; then
1056     sudo yum install -y boost-devel
1057   else
1058     compile_Boost
1059   fi
1060
1061   check_package_version_ge_RPM OpenColorIO-devel $OCIO_VERSION_MIN
1062   if [ $? -eq 0 ]; then
1063     sudo yum install -y OpenColorIO-devel
1064   else
1065     compile_OCIO
1066   fi
1067
1068   check_package_version_ge_RPM OpenImageIO-devel $OIIO_VERSION_MIN
1069   if [ $? -eq 0 ]; then
1070     sudo yum install -y OpenImageIO-devel
1071   else
1072     compile_OIIO
1073   fi
1074
1075   if $BUILD_OSL; then
1076     have_llvm=false
1077
1078     check_package_RPM llvm-$LLVM_VERSION-devel
1079     if [ $? -eq 0 ]; then
1080       sudo yum install -y llvm-$LLVM_VERSION-devel
1081       have_llvm=true
1082       LLVM_VERSION_FOUND=$LLVM_VERSION
1083     else
1084 #      check_package_RPM llvm-$LLVM_VERSION_MIN-devel
1085 #      if [ $? -eq 0 ]; then
1086 #        sudo yum install -y llvm-$LLVM_VERSION_MIN-devel
1087 #        have_llvm=true
1088 #        LLVM_VERSION_FOUND=$LLVM_VERSION_MIN
1089 #      else
1090 #        check_package_version_ge_RPM llvm-devel $LLVM_VERSION_MIN
1091 #        if [ $? -eq 0 ]; then
1092 #          sudo yum install -y llvm-devel
1093 #          have_llvm=true
1094 #          LLVM_VERSION_FOUND=`get_package_version_RPM llvm-devel`
1095 #        fi
1096 #      fi
1097     sudo yum install -y libffi-devel
1098     # XXX Stupid fedora puts ffi header into a darn stupid dir!
1099     _FFI_INCLUDE_DIR=`rpm -ql libffi-devel | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
1100     compile_LLVM
1101     have_llvm=true
1102     LLVM_VERSION_FOUND=$LLVM_VERSION
1103     fi
1104
1105     if $have_llvm; then
1106       sudo yum install -y flex bison clang tbb-devel git
1107       # No package currently!
1108       compile_OSL
1109     fi
1110   fi
1111
1112   # Always for now, not sure which packages should be installed
1113   compile_FFmpeg
1114 }
1115
1116 get_package_version_SUSE() {
1117   zypper info $1 | grep Version | tail -n 1 | sed -r 's/.*:\s+(([0-9]+\.?)+).*/\1/'
1118 }
1119
1120 check_package_SUSE() {
1121   r=`zypper info $1 | grep -c 'Summary'`
1122
1123   if [ $r -ge 1 ]; then
1124     return 0
1125   else
1126     return 1
1127   fi
1128 }
1129
1130 check_package_version_match_SUSE() {
1131   v=`get_package_version_SUSE $1`
1132
1133   if [ -z "$v" ]; then
1134     return 1
1135   fi
1136
1137   version_match $v $2
1138   return $?
1139 }
1140
1141 check_package_version_ge_SUSE() {
1142   v=`get_package_version_SUSE $1`
1143
1144   if [ -z "$v" ]; then
1145     return 1
1146   fi
1147
1148   version_ge $v $2
1149   return $?
1150 }
1151
1152 install_SUSE() {
1153   INFO ""
1154   INFO "Installing dependencies for SuSE-based distribution"
1155   INFO "$COMMON_INFO"
1156   INFO ""
1157
1158   sudo zypper --non-interactive update --auto-agree-with-licenses
1159
1160   # These libs should always be available in debian/ubuntu official repository...
1161   OPENJPEG_DEV="openjpeg-devel"
1162   SCHRO_DEV="schroedinger-devel"
1163   VORBIS_DEV="libvorbis-devel"
1164   THEORA_DEV="libtheora-devel"
1165
1166   sudo zypper --non-interactive install --auto-agree-with-licenses \
1167     gawk gcc gcc-c++ cmake scons libpng12-devel libtiff-devel \
1168     freetype-devel libX11-devel libXi-devel wget sqlite3-devel ncurses-devel \
1169     readline-devel $OPENJPEG_DEV libopenexr-devel openal-soft-devel \
1170     glew-devel yasm $SCHRO_DEV $THEORA_DEV $VORBIS_DEV libSDL-devel \
1171     fftw3-devel libjack-devel libspnav-devel \
1172     libjpeg62-devel patch python-devel
1173
1174   OPENJPEG_USE=true
1175   SCHRO_USE=true
1176   VORBIS_USE=true
1177   THEORA_USE=true
1178
1179   X264_DEV="x264-devel"
1180   check_package_version_ge_SUSE $X264_DEV $X264_VERSION_MIN
1181   if [ $? -eq 0 ]; then
1182     sudo zypper --non-interactive install --auto-agree-with-licenses $X264_DEV
1183     X264_USE=true
1184   fi
1185
1186   XVID_DEV="xvidcore-devel"
1187   check_package_SUSE $XVID_DEV
1188   if [ $? -eq 0 ]; then
1189     sudo zypper --non-interactive install --auto-agree-with-licenses $XVID_DEV
1190     XVID_USE=true
1191   fi
1192
1193   VPX_DEV="libvpx-devel"
1194   check_package_version_ge_SUSE $VPX_DEV $VPX_VERSION_MIN
1195   if [ $? -eq 0 ]; then
1196     sudo zypper --non-interactive install --auto-agree-with-licenses $VPX_DEV
1197     VPX_USE=true
1198   fi
1199
1200   # No mp3 in suse, it seems.
1201   MP3LAME_DEV="lame-devel"
1202   check_package_SUSE $MP3LAME_DEV
1203   if [ $? -eq 0 ]; then
1204     sudo zypper --non-interactive install --auto-agree-with-licenses $MP3LAME_DEV
1205     MP3LAME_USE=true
1206   fi
1207
1208   check_package_version_match_SUSE python3-devel 3.3.
1209   if [ $? -eq 0 ]; then
1210     sudo zypper --non-interactive install --auto-agree-with-licenses python3-devel
1211   else
1212     compile_Python
1213   fi
1214
1215   # No boost_locale currently available, so let's build own boost.
1216   compile_Boost
1217
1218   # No ocio currently available, so let's build own boost.
1219   compile_OCIO
1220
1221   # No oiio currently available, so let's build own boost.
1222   compile_OIIO
1223
1224   if $BUILD_OSL; then
1225     have_llvm=false
1226
1227     # Suse llvm package *_$SUCKS$_* (tm) !!!
1228 #    check_package_version_ge_SUSE llvm-devel $LLVM_VERSION_MIN
1229 #    if [ $? -eq 0 ]; then
1230 #      sudo zypper --non-interactive install --auto-agree-with-licenses llvm-devel
1231 #      have_llvm=true
1232 #      LLVM_VERSION_FOUND=`get_package_version_SUSE llvm-devel`
1233 #    fi
1234
1235     sudo zypper --non-interactive install --auto-agree-with-licenses libffi47-devel
1236     compile_LLVM
1237     have_llvm=true
1238     LLVM_VERSION_FOUND=$LLVM_VERSION
1239
1240     if $have_llvm; then
1241       # XXX No tbb lib!
1242       sudo zypper --non-interactive install --auto-agree-with-licenses flex bison git
1243       # No package currently!
1244       compile_OSL
1245     fi
1246   fi
1247
1248   # No ffmpeg currently available, so let's build own boost.
1249   compile_FFmpeg
1250 }
1251
1252 print_info_ffmpeglink_DEB() {
1253   if $ALL_STATIC; then
1254     dpkg -L $_packages | grep -e ".*\/lib[^\/]\+\.a" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", $0); nlines++ }'
1255   else
1256     dpkg -L $_packages | grep -e ".*\/lib[^\/]\+\.so" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", gensub(/.*lib([^\/]+)\.so/, "\\1", "g", $0)); nlines++ }'
1257   fi
1258 }
1259
1260 print_info_ffmpeglink_RPM() {
1261   if $ALL_STATIC; then
1262     rpm -ql $_packages | grep -e ".*\/lib[^\/]\+\.a" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", $0); nlines++ }'
1263   else
1264     rpm -ql $_packages | grep -e ".*\/lib[^\/]\+\.so" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", gensub(/.*lib([^\/]+)\.so/, "\\1", "g", $0)); nlines++ }'
1265   fi
1266 }
1267
1268 print_info_ffmpeglink_SUSE() {
1269   if $ALL_STATIC; then
1270     rpm -ql $_packages | grep -e ".*\/lib[^\/]\+\.a" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", $0); nlines++ }'
1271   else
1272     rpm -ql $_packages | grep -e ".*\/lib[^\/]\+\.so" | gawk '{ printf(nlines ? "'"$_ffmpeg_list_sep"'%s" : "%s", gensub(/.*lib([^\/]+)\.so/, "\\1", "g", $0)); nlines++ }'
1273   fi
1274 }
1275
1276 print_info_ffmpeglink() {
1277   # This func must only print a ';'-separated list of libs...
1278   if [ -z "$DISTRO" ]; then
1279     ERROR "Failed to detect distribution type"
1280     exit 1
1281   fi
1282
1283   # Create list of packages from which to get libs names...
1284   _packages=""
1285
1286   if $THEORA_USE; then
1287     _packages="$_packages $THEORA_DEV"
1288   fi
1289
1290   if $VORBIS_USE; then
1291     _packages="$_packages $VORBIS_DEV"
1292   fi
1293
1294   if $XVID_USE; then
1295     _packages="$_packages $XVID_DEV"
1296   fi
1297
1298   if $VPX_USE; then
1299     _packages="$_packages $VPX_DEV"
1300   fi
1301
1302   if $MP3LAME_USE; then
1303     _packages="$_packages $MP3LAME_DEV"
1304   fi
1305
1306   if $X264_USE; then
1307     _packages="$_packages $X264_DEV"
1308   fi
1309
1310   if $OPENJPEG_USE; then
1311     _packages="$_packages $OPENJPEG_DEV"
1312   fi
1313
1314   # XXX At least under Debian, static schro give problem at blender linking time... :/
1315   if $SCHRO_USE && ! $ALL_STATIC; then
1316     _packages="$_packages $SCHRO_DEV"
1317   fi
1318
1319   if [ "$DISTRO" = "DEB" ]; then
1320     print_info_ffmpeglink_DEB
1321   elif [ "$DISTRO" = "RPM" ]; then
1322     print_info_ffmpeglink_RPM
1323   elif [ "$DISTRO" = "SUSE" ]; then
1324     print_info_ffmpeglink_SUSE
1325   # XXX TODO!
1326   else INFO "<Could not determine additional link libraries needed for ffmpeg, replace this by valid list of libs...>"
1327   fi
1328 }
1329
1330 print_info() {
1331   INFO ""
1332   INFO "If you're using CMake add this to your configuration flags:"
1333
1334   if $ALL_STATIC; then
1335     INFO "  -D WITH_STATIC_LIBS=ON"
1336   fi
1337
1338   if [ -d $INST/boost ]; then
1339     INFO "  -D BOOST_ROOT=$INST/boost"
1340     INFO "  -D Boost_NO_SYSTEM_PATHS=ON"
1341   elif $ALL_STATIC; then
1342     INFO "  -D Boost_USE_ICU=ON"
1343   fi
1344
1345   if [ -d $INST/osl ]; then
1346     INFO "  -D CYCLES_OSL=$INST/osl"
1347     INFO "  -D WITH_CYCLES_OSL=ON"
1348     INFO "  -D LLVM_VERSION=$LLVM_VERSION_FOUND"
1349     if [ -d $INST/llvm ]; then
1350       INFO "  -D LLVM_DIRECTORY=$INST/llvm"
1351       INFO "  -D LLVM_STATIC=ON"
1352     fi
1353   fi
1354
1355   if [ -d $INST/ffmpeg ]; then
1356     INFO "  -D WITH_CODEC_FFMPEG=ON"
1357     INFO "  -D FFMPEG=$INST/ffmpeg"
1358     INFO "  -D FFMPEG_LIBRARIES='avformat;avcodec;avutil;avdevice;swscale;rt;`print_info_ffmpeglink`'"
1359   fi
1360
1361   INFO ""
1362   INFO "If you're using SCons add this to your user-config:"
1363
1364   if [ -d $INST/python-3.3 ]; then
1365     INFO "BF_PYTHON = '$INST/python-3.3'"
1366     INFO "BF_PYTHON_ABI_FLAGS = 'm'"
1367   fi
1368
1369   if [ -d $INST/ocio ]; then
1370     INFO "BF_OCIO = '$INST/ocio'"
1371   fi
1372
1373   if [ -d $INST/oiio ]; then
1374     INFO "BF_OIIO = '$INST/oiio'"
1375   fi
1376
1377   if [ -d $INST/boost ]; then
1378     INFO "BF_BOOST = '$INST/boost'"
1379   fi
1380
1381   if [ -d $INST/ffmpeg ]; then
1382     INFO "BF_FFMPEG = '$INST/ffmpeg'"
1383     _ffmpeg_list_sep=" "
1384     INFO "BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice `print_info_ffmpeglink`'"
1385   fi
1386
1387   INFO ""
1388   INFO ""
1389   INFO "WARNING: If this script had to build boost into $INST, and you are dynamically linking "
1390   INFO "         blender against it, you will have to run those commands as root user:"
1391   INFO ""
1392   INFO "    echo \"$INST/boost/lib\" > /etc/ld.so.conf.d/boost.conf"
1393   INFO "    ldconfig"
1394   INFO ""
1395 }
1396
1397 # Detect distributive type used on this machine
1398 detect_distro
1399
1400 if [ -z "$DISTRO" ]; then
1401   ERROR "Failed to detect distribution type"
1402   exit 1
1403 elif [ "$DISTRO" = "DEB" ]; then
1404   install_DEB
1405 elif [ "$DISTRO" = "RPM" ]; then
1406   install_RPM
1407 elif [ "$DISTRO" = "SUSE" ]; then
1408   install_SUSE
1409 fi
1410
1411 print_info
1412
1413 # Switch back to user language.
1414 LANG=LANG_BACK
1415 export LANG