bootstrap 4.49 KB
Newer Older
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
# Copyright (C) 2003-2011 the VideoLAN team
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.

#
# Command line handling
#
usage()
{
	echo "Usage: $0 [--build=BUILD] [--host=HOST] [--prefix=PREFIX]"
	echo "  --build=BUILD    configure for building on BUILD"
	echo "  --host=HOST      cross-compile to build to run on HOST"
	echo "  --prefix=PREFIX  install files in PREFIX"
27
28
	echo "  --disable-FOO    configure to not build package FOO"
	echo "  --enable-FOO     configure to build package FOO"
29
30
	echo "  --disable-disc   configure to not build optical discs packages"
	echo "  --disable-sout   configure to not build stream output packages"
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
31
32
33
34
35
}

BUILD=
HOST=
PREFIX=
36
37
PKGS_ENABLE=
PKGS_DISABLE=
38
39
BUILD_ENCODERS="1"
BUILD_DISCS="1"
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
40

41
if test ! -f "../../contrib/src/main.mak"
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
then
	echo "$0 must be run from a subdirectory"
	exit 1
fi

while test -n "$1"
do
	case "$1" in
		--build=*)
			BUILD="${1#--build=}"
			;;
		--help|-h)
			usage
			exit 0
			;;
		--host=*)
			HOST="${1#--host=}"
			;;
		--prefix=*)
			PREFIX="${1#--prefix=}"
			;;
63
64
65
66
67
68
		--disable-disc)
			BUILD_DISCS=
			;;
		--disable-sout)
			BUILD_ENCODERS=
			;;
69
70
71
72
73
74
		--disable-*)
			PKGS_DISABLE="${PKGS_DISABLE} ${1#--disable-}"
			;;
		--enable-*)
			PKGS_ENABLE="${PKGS_ENABLE} ${1#--enable-}"
			;;
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
		*)
			echo "Unrecognized options $1"
			usage
			exit 1
			;;
	esac
	shift
done

if test -z "$BUILD"
then
	echo -n "Guessing build system... "
	BUILD="`cc -dumpmachine`"
	if test -z "$BUILD"; then
		echo "FAIL!"
		exit 1
	fi
	echo "$BUILD"
fi

if test -z "$HOST"
then
	echo -n "Guessing host system...  "
	HOST="$BUILD"
	echo "$HOST"
fi

if test "$PREFIX"
then
	# strip trailing slash
	PREFIX="${PREFIX%/}"
fi

#
# Prepare files
#
echo "Creating configuration file... config.mak"
exec 3>config.mak
cat >&3 << EOF
# This file was automatically generated.
# Any change will be overwritten if ../bootstrap is run again.
BUILD := $BUILD
HOST := $HOST
118
119
PKGS_DISABLE := $PKGS_DISABLE
PKGS_ENABLE := $PKGS_ENABLE
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
EOF

add_make()
{
	while test -n "$1"
	do
		echo "$1" >&3
		shift
	done
}

add_make_enabled()
{
	while test -n "$1"
	do
		add_make "$1 := 1"
		shift
	done
}

140
141
142
143
144
145
146
147
148
149
150
151
152
153
check_macosx_sdk()
{
   [ -z "${OSX_VERSION}" ] && echo "OSX_VERSION not specified, assuming 10.5" && OSX_VERSION=10.5
   SDK="/Developer/SDKs/MacOSX${OSX_VERSION}.sdk"
   if [ ! -d "${SDK}" ]
   then
	   echo "
*** ${SDK} does not exist, please install required SDK, or use export OSX_VERSION=10.6 ***
"
	   exit 1
   fi
   add_make "OSX_VERSION ?= ${OSX_VERSION}"
}

154
155
156
157
158
159
160
check_android_sdk()
{
	[ -z "${ANDROID_NDK}" ] && echo "You must set ANDROID_NDK environment variable" && exit 1
	add_make "ANDROID_NDK := ${ANDROID_NDK}"
	test -z "${NO_NEON}" && add_make_enabled "HAVE_NEON"
}

161
test -z "$PREFIX" || add_make "PREFIX := $PREFIX"
162
163
164
test -z "$BUILD_DISCS" || add_make_enabled "BUILD_DISCS"
test -z "$BUILD_ENCODERS" || add_make_enabled "BUILD_ENCODERS"

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
165
166
167
168
169
#
# Checks
#
OS="${HOST#*-}" # strip architecture
case "${OS}" in
170
	apple-darwin*)
171
		check_macosx_sdk
172
173
		add_make_enabled "HAVE_MACOSX" "HAVE_DARWIN_OS" "HAVE_BSD"
		;;
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
174
175
176
177
178
179
	*darwin*)
		add_make_enabled "HAVE_DARWIN_OS" "HAVE_BSD"
		;;
	*bsd*)
		add_make_enabled "HAVE_BSD"
		;;
180
181
182
183
	linux-androideabi)
		check_android_sdk
		add_make_enabled "HAVE_LINUX" "HAVE_ANDROID"
		;;
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
184
185
186
187
188
189
	*linux*)
		add_make_enabled "HAVE_LINUX"
		;;
	*wince*)
		add_make_enabled "HAVE_WINCE"
		;;
190
191
192
	*mingw*)
		add_make_enabled "HAVE_WIN32"
		;;
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
193
194
195
196
197
198
esac

#
# Results output
#
test -e Makefile && unlink Makefile
199
ln -sf ../../contrib/src/main.mak Makefile
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
200
201
202
203
204
205
206
207
208
209
210
cat << EOF
Bootstrap completed.

Run "make" to start compilation.

Other targets:
 * make install      same as "make"
 * make fetch        fetch required source tarballs
 * make fetch-all    fetch all source tarballs
 * make distclean    clean everything and undo bootstrap
 * make mostlyclean  clean everything except source tarballs
211
212
 * make clean        clean everything
 * make list         list packages
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
213
EOF
214
215

mkdir -p ../../contrib/tarballs