aout: pass system play time to play callback
[vlc.git] / extras / tools / bootstrap
1 #!/bin/sh
2 # Copyright © 2011 Rafaël Carré
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
17
18 export LC_ALL=
19 NEEDED=
20
21 if [ ! -f tools.mak ]
22 then
23         echo "You must run me in ./extras/tools !"
24         exit 1
25 fi
26
27 check_version() {
28     gotver=$2
29     gotmajor=`echo $gotver|cut -d. -f1`
30     gotminor=`echo $gotver|cut -d. -f2`
31     gotmicro=`echo $gotver|cut -d. -f3`
32     [ -z "$gotmicro" ] && gotmicro=0
33     needmajor=`echo $3|cut -d. -f1`
34     needminor=`echo $3|cut -d. -f2`
35     needmicro=`echo $3|cut -d. -f3`
36     [ -z "$needmicro" ] && needmicro=0
37     if [ "$needmajor" -ne "$gotmajor" \
38          -o "$needmajor" -eq "$gotmajor" -a "$needminor" -gt "$gotminor" \
39          -o "$needmajor" -eq "$gotmajor" -a "$needminor" -eq "$gotminor" -a "$needmicro" -gt "$gotmicro" ]
40     then
41         echo "$1 too old"
42         NEEDED="$NEEDED .$1"
43     fi
44
45 }
46
47 check_tar() {
48 if ! tar PcJ /dev/null >/dev/null 2>&1
49 then
50     echo "tar doesn't support xz (J option)"
51     NEEDED="$NEEDED .tar .xz"
52 fi
53 }
54
55 check_sed() {
56 tmp="`pwd`/check_sed"
57 trap "rm \"$tmp\" \"$tmp-e\" 2>/dev/null" EXIT
58 echo "test file for GNU sed" > $tmp
59 if ! sed -i -e 's/sed//' $tmp >/dev/null 2>&1
60 then
61     echo "sed doesn't do in-place editing (-i option)"
62     NEEDED="$NEEDED .sed"
63 fi
64 }
65
66 check_nasm() {
67 if ! nasm -v >/dev/null 2>&1
68 then
69     echo "nasm not found"
70     NEEDED="$NEEDED .nasm"
71 else
72     # found, need to check version ?
73     [ -z "$1" ] && return # no
74     gotver=`nasm -v | cut -d ' ' -f 3`
75     check_version nasm $gotver $1
76 fi
77 }
78
79 check() {
80 if ! $1 --version >/dev/null 2>&1 && ! $1 -version >/dev/null 2>&1
81 then
82     echo "$1 not found"
83     NEEDED="$NEEDED .$1"
84 else
85     # found, need to check version ?
86     [ -z "$2" ] && return # no
87     gotver=`$1 --version | head -1 | sed s/'.* '//`
88     check_version $1 $gotver $2
89 fi
90 }
91
92 check autoconf 2.69
93 check automake 1.15
94 check m4 1.4.16
95 check libtool 2.4
96 check pkg-config
97 check cmake 3.8.2
98 check yasm
99 check_tar
100 check ragel
101 check_sed
102 check protoc 3.1.0
103 check ant
104 check xz
105 check bison 3.0.0
106 check flex
107 check_nasm 2.13.01
108
109 [ -n "$NEEDED" ] && mkdir -p build/ && echo "To-be-built packages: `echo $NEEDED | sed 's/\.//g'`"
110
111 CPUS=
112 case `uname` in
113     Linux|MINGW32*|MINGW64*)
114         CPUS=`getconf _NPROCESSORS_ONLN 2>&1`
115      ;;
116     Darwin|FreeBSD|NetBSD)
117         CPUS=`getconf NPROCESSORS_ONLN 2>&1`
118     ;;
119     OpenBSD)
120         CPUS=`sysctl -n hw.ncpu 2>&1`
121     ;;
122     SunOS)
123         CPUS=`psrinfo | wc -l 2>&1`
124     ;;
125     *)
126         CPUS=1  # default
127      ;;
128 esac
129
130
131 cat > Makefile << EOF
132 MAKEFLAGS += -j$CPUS
133 CMAKEFLAGS += --parallel=$CPUS
134 PREFIX=\$(abspath ./build)
135
136 all: $NEEDED
137         @echo "You are ready to build VLC and its contribs"
138
139 include tools.mak
140 EOF