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