bootstrap 13.8 KB
Newer Older
1 2 3 4
#!/bin/sh
# ***************************************************************************
# bootstrap : Set up config.mak
# ***************************************************************************
Felix Kühne's avatar
Felix Kühne committed
5
# Copyright (C) 2003-2009 the VideoLAN team
6
# $Id$
7 8
#
# Authors: Christophe Massiot <massiot@via.ecp.fr>
9
#          Derk-Jan Hartman <hartman at videolan dot org>
Felix Kühne's avatar
Felix Kühne committed
10
#          Felix Paul Kühne <fkuehne at videolan dot org>
11 12 13 14 15 16 17 18 19 20 21 22 23
#
# 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
Antoine Cellerier's avatar
Antoine Cellerier committed
24
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
25 26
# ***************************************************************************

Christophe Mutricy's avatar
Christophe Mutricy committed
27
if test "$#" -gt "2" -o "$1" = "-h" -o "$1" = "--help" ; then
28 29 30
    echo "Usage: $0 [host [distro]]" >&2
    echo "  Prepare config.mak and distro.mak file." >&2
    exit 1
31 32 33 34 35 36 37
fi

LANG=C
export LANG
set -e
set -x

38
BUILD=`gcc -dumpmachine`
39
if test "$#" -ge "1"; then
40
    HOST="$1"
41
else
42
    HOST="$BUILD"
43 44
fi

45 46 47 48 49 50 51
DISTRO=
if test "$#" = "2"; then
    echo "Forcing distro.mak to use $2.mak"
    DISTRO="$2"
    HOST="$1"
fi

52
rm -f config.mak
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
53
{
54 55
    echo "# Automatically generated by bootstrap."
    echo "# Make changes if you know what you're doing."
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
56
} > config.mak
57

58 59 60 61 62 63
rm -f distro.mak
{
    echo "# Automatically generated by bootstrap"
    echo "# Make changes if you know what you're doing."
} > distro.mak

64 65 66
if test "$HOST" != "$BUILD"; then
    CC="${HOST}-gcc"
    CXX="${HOST}-g++"
67
    LD="${HOST}-ld"
68 69
    RANLIB="${HOST}-ranlib"
    AR="${HOST}-ar"
70
    STRIP="${HOST}-strip"
71 72
fi

73 74
case $HOST in
    *powerpc*|*ppc*)
75
         ARCH="ppc"
76
     ;;
Felix Kühne's avatar
Felix Kühne committed
77
    *darwin10*)
78
         ARCH="x86_64"
Felix Kühne's avatar
Felix Kühne committed
79
     ;;
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
80
    *86_64*)
81
          ARCH="x86_64"
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
82
     ;;
83
    *86*)
84
          ARCH="i386"
85 86
     ;;
esac
Felix Paul Kühne's avatar
Felix Paul Kühne committed
87
echo "ARCH = $ARCH" >> config.mak
88

89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
# Check the HAVE_{OS}
case $HOST in
    *darwin*)
        echo "HAVE_DARWIN_OS = 1" >> config.mak
        echo "HAVE_BSD = 1" >> config.mak
    ;;
    *linux*)
        echo "HAVE_LINUX = 1" >> config.mak
    ;;
    *bsd*)
        echo "HAVE_BSD = 1" >> config.mak
    ;;
    *wince*)
        echo "HAVE_WINCE = 1" >> config.mak
    ;;
    *beos*)
        echo "HAVE_BEOS = 1" >> config.mak
    ;;
esac

109
case $HOST in
110
    ppc-darwin)
111
        # Mac OS X < 10.4
112
        echo "Your version of Mac OS X is too old!" >&2
113
        echo "Compiling VLC requires 10.5.x or later" >&2
114 115
        exit 1
    ;;
116
    powerpc-apple-darwin8)
117 118 119
        echo "Your version of Mac OS X is too old!" >&2
        echo "Compiling and running VLC requires 10.5.x or later" >&2
        exit 1
120
    ;;
121
    i686-apple-darwin8)
122 123 124
        echo "Your version of Mac OS X is too old!" >&2
        echo "Compiling and running VLC requires 10.5.x or later" >&2
        exit 1
125
    ;;
Felix Paul Kühne's avatar
Felix Paul Kühne committed
126
    powerpc-apple-darwin9)
127
# Mac OS X 10.5 with Xcode 3, specific rules apply
128
        SDK_TARGET=10.5
129
        echo "SDK_TARGET = ${SDK_TARGET}" >> config.mak
130
        echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak
131
        echo "MACOSX_SDK = /Developer/SDKs/MacOSX10.5.sdk" >> config.mak
132
        echo "HAVE_DARWIN_9 = 1" >> config.mak
133
        HAVE_DARWIN_9=1
134
        CFLAGS_TUNING=" -arch ppc -mtune=G4"
135
        EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
136
        EXTRA_LDFLAGS=" -arch ppc -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET} -Wl,-syslibroot,\${MACOSX_SDK}"
137 138
        CC="/Developer/usr/bin/gcc-4.2"
        CXX="/Developer/usr/bin/g++-4.2"
139
        LD="ld -arch ppc -syslibroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
140
        echo "PATH = /bin:/usr/bin:/usr/local/bin:" >> config.mak
141
        cat src/Distributions/darwin.mak >> distro.mak
142 143 144 145 146 147
        if test -e /Developer/SDKs; then
            echo "SDKs found. Everything is fine." >&2
        else
            echo "ERROR:\nYour Developer Tools' SDKs were not found.\nYou need to add extra symbolic links to /Developer to achieve correctly\nbuilt contribs.\nHave a look at the OSX-Compile-HOWTO for details." >&2
            exit 1
        fi
148
    ;;
149
    i686-apple-darwin9)
150
        SDK_TARGET=10.5
151
        MIN_LD_VERSION_WITH_TEXT_RELOCATION=81
152 153
        echo "SDK_TARGET = ${SDK_TARGET}" >> config.mak
        echo "HAVE_DARWIN_OS_ON_INTEL = 1" >> config.mak
154
        echo "HAVE_DARWIN_9 = 1" >> config.mak
155
        HAVE_DARWIN_9=1
156
        if test `ld -v 2> /dev/stdout | sed -E 's/.*ld64-([0-9]+).*/\1/'` -lt ${MIN_LD_VERSION_WITH_TEXT_RELOCATION}; then
157 158
            echo "ERROR: Your ld version is unable to compile VLC.\nUpdate to Xcode 3.1 or higher." >&2
            exit 1
159
        fi
160
        echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak
161
        echo "MACOSX_SDK = /Developer/SDKs/MacOSX10.5.sdk" >> config.mak
162
        CFLAGS_TUNING=" -march=prescott -mtune=generic -arch i386"
163
        EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
164
        EXTRA_LDFLAGS=" -arch i386 -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
165 166
        CC="/Developer/usr/bin/gcc-4.2"
        CXX="/Developer/usr/bin/g++-4.2"
167 168
        echo "PATH = /bin:/usr/bin:/usr/local/bin" >> config.mak
        cat src/Distributions/darwin.mak >> distro.mak
169 170
        if test -e /Developer/SDKs; then
            echo "SDKs found. Everything is fine." >&2
171 172 173 174 175
        else
            echo "ERROR:\nYour Developer Tools' SDKs were not found.\nYou need to add extra symbolic links to /Developer to achieve correctly\nbuilt contribs.\nHave a look at the OSX-Compile-HOWTO for details." >&2
            exit 1
        fi
    ;;
Felix Kühne's avatar
Felix Kühne committed
176
    *-apple-darwin10)
177
        SDK_TARGET=10.5
178 179 180 181
        echo "SDK_TARGET = ${SDK_TARGET}" >> config.mak
        echo "HAVE_DARWIN_OS_ON_INTEL = 1" >> config.mak
        echo "HAVE_DARWIN_9 = 1" >> config.mak
        echo "HAVE_DARWIN_10 = 1" >> config.mak
Felix Kühne's avatar
Felix Kühne committed
182
        HAVE_DARWIN_10=1
183
        echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak
Felix Kühne's avatar
Felix Kühne committed
184
        echo "MACOSX_SDK = /Developer/SDKs/MacOSX${SDK_TARGET}.sdk" >> config.mak
185 186 187 188 189
        if test $ARCH = "x86_64"; then
            CFLAGS_TUNING=" -march=core2 -mtune=core2"
        else
            CFLAGS_TUNING=" -march=prescott -mtune=core2"
        fi
190
        EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
191
        EXTRA_LDFLAGS=" -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}"
192
        echo "PATH = /bin:/usr/bin:/usr/local/bin" >> config.mak
Felix Kühne's avatar
Felix Kühne committed
193 194
        CC="gcc"
        CXX="g++"
195 196 197
        cat src/Distributions/darwin.mak >> distro.mak
        if test -e /Developer/SDKs; then
            echo "SDKs found. Everything is fine." >&2
198 199 200 201
        else
            echo "ERROR:\nYour Developer Tools' SDKs were not found.\nYou need to add extra symbolic links to /Developer to achieve correctly\nbuilt contribs.\nHave a look at the OSX-Compile-HOWTO for details." >&2
            exit 1
        fi
202
    ;;
203
    i586-pc-beos)
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
        if test -f /boot/beos/system/lib/libbind.so; then
            EXTRA_LDFLAGS=" -lbind -lsocket"
        else
            EXTRA_LDFLAGS=" -lnet"
        fi
        if test "$HOST" = "$BUILD"; then
#           Compiling on BeOS
            PATH=".:/boot/home/config/bin:/bin:/boot/apps"
            PATH="${PATH}:/boot/preferences:/boot/beos/apps"
            PATH="${PATH}:/boot/beos/preferences"
            PATH="${PATH}:/boot/develop/tools/gnupro/bin"
            echo "PATH = ${PATH}" >> config.mak
            LIBRARY_PATH="${LIBRARY_PATH}:%A/lib:/boot/home/config/lib"
            LIBRARY_PATH="${LIBRARY_PATH}:/boot/beos/system/lib"
            echo "LIBRARY_PATH = ${LIBRARY_PATH}" >> config.mak
        else
#           Cross compiling from Linux
            PATH="/opt/beos-tools/bin:/opt/cross-tools/bin"
            PATH="${PATH}:/usr/bin:/bin"
            echo "PATH = ${PATH}" >> config.mak
        fi
        cat src/Distributions/beos.mak >> distro.mak
    ;;
227 228 229 230 231
    *mingw32ce)
        echo "HAVE_WINCE = 1" >> config.mak
        echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak
        cat src/Distributions/wince.mak >> distro.mak
    ;;
232 233 234 235 236
    x86_64-*-mingw*)
        echo "HAVE_WIN64 = 1" >> config.mak
        echo "HAVE_WIN32 = 1" >> config.mak
        echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak
           EXTRA_CFLAGS="-O3"
237
        cat src/Distributions/win64.mak >> distro.mak
238
    ;;
239
    *mingw32*)
240 241
        echo "HAVE_WIN32 = 1" >> config.mak
        echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak
242
        EXTRA_CFLAGS="-O3"
243 244
        cat src/Distributions/win32.mak >> distro.mak
    ;;
245
    i686-pc-cygwin)
246 247 248 249 250 251 252 253 254 255 256
        echo "HAVE_WIN32 = 1" >> config.mak
        echo "HAVE_CYGWIN = 1" >> config.mak
        CC="gcc -mno-cygwin -isystem /usr/include/mingw"
        CXX="g++ -mno-cygwin -isystem /usr/include/mingw"
        HOST=`$CC -dumpmachine`
        EXTRA_CFLAGS=" -mno-cygwin -isystem /usr/include/mingw"
        EXTRA_CPPFLAGS=" -mno-cygwin -isystem /usr/include/mingw"
        EXTRA_LDFLAGS=" -mno-cygwin"
        echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak
        cat src/Distributions/win32.mak >> distro.mak
    ;;
257
    arm-wince-pe)
258 259 260 261
        echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak
        EXTRA_CPPFLAGS=" -D_WIN32_WCE"
        cat src/Distributions/wince.mak >> distro.mak
    ;;
262
    armeb-linux-uclibc)
263 264 265 266 267 268 269 270 271
        echo "HAVE_UCLIBC = 1" >> config.mak
        echo "HAVE_BIGENDIAN = 1" >> config.mak
        EXTRA_CFLAGS="-Os -march=armv5 -msoft-float"
        if test ! -z "${DISTRO}";  then
            cat src/Distributions/${DISTRO}.mak >> distro.mak
        else
            cat src/Distributions/unix.mak >> distro.mak
        fi
    ;;
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
272 273 274 275 276 277 278 279 280
    *86_64*linux*)
        EXTRA_CFLAGS=" -fPIC"
        EXTRA_CPPFLAGS=" -fPIC"
        EXTRA_LDFLAGS=" -L/usr/lib64"
        echo "LIBRARY_PATH = /usr/lib64" >> config.mak
        echo "PKG_CONFIG_PATH = /usr/lib64/pkgconfig" >> config.mak
        echo "PKG_CONFIG_LIBDIR = /usr/lib64/pkgconfig" >> config.mak
        cat src/Distributions/unix.mak >> distro.mak
    ;;
281 282 283 284 285 286 287 288 289 290 291 292 293
    *)
        if test "$HOST" = "$BUILD"; then
            if test -d "/usr/lib/pkgconfig"; then
                if test -z "$PKG_CONFIG_PATH"; then
                    echo "PKG_CONFIG_PATH = /usr/lib/pkgconfig" >> config.mak
                fi
                if test -z "$PKG_CONFIG_LIBDIR"; then
                    echo "PKG_CONFIG_LIBDIR = /usr/lib/pkgconfig" >> config.mak
                fi
            fi
            # Try to match distribution
            if test -f /etc/fedora-release; then
                cat src/Distributions/fedora.mak >> distro.mak
294 295
            elif test -f /etc/maemo_version; then
                cat src/Distributions/maemo.mak >> distro.mak
296 297 298 299 300
            else
                # Default Unix-like systems
                cat src/Distributions/unix.mak >> distro.mak
            fi
        else # unknown distro
301 302 303 304 305
            if test ! -z "${DISTRO}";  then
                cat src/Distributions/${DISTRO}.mak >> distro.mak
            else
                cat src/Distributions/unix.mak >> distro.mak
            fi
306 307
        fi
    ;;
308 309
esac

310 311 312 313 314
echo "BUILD = $BUILD" >> config.mak
echo "HOST = $HOST" >> config.mak

echo "PREFIX = `pwd`" >> config.mak

315 316
echo "CC = ${CC}" >> config.mak
echo "CXX = ${CXX}" >> config.mak
317
echo "LD = ${LD}" >> config.mak
318 319
echo "RANLIB = ${RANLIB}" >> config.mak
echo "AR = ${AR}" >> config.mak
320
echo "STRIP = ${STRIP}" >> config.mak
321
echo "EXTRA_CFLAGS = ${CFLAGS_TUNING} ${EXTRA_CFLAGS}" >> config.mak
322
echo "EXTRA_CPPFLAGS = ${EXTRA_CPPFLAGS} -isystem \$(PREFIX)/include" >> config.mak
323 324
echo "EXTRA_LDFLAGS = ${EXTRA_LDFLAGS}" >> config.mak
echo "EXTRA_PATH = ${EXTRA_PATH}" >> config.mak
325

326
if wget --version >/dev/null 2>&1; then
327
    echo "WGET = `which wget` -c --passive" >> config.mak
328
elif test -z `curl --version >/dev/null 2>&1`; then
329
    echo "WGET = `which curl` -L -O" >> config.mak
330
else
331 332
    echo "You need at least wget or curl to fetch the packages." >&2
    exit 1
333 334
fi

335
if svn --version >/dev/null 2>&1; then
336
    echo "SVN = `which svn`" >> config.mak
337
else
338
    echo "You do not have a subversion client in your PATH." >&2
339
fi
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
340

341
if git --version>/dev/null 2>&1; then
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
342 343
    echo "GIT = `which git`" >> config.mak
else
344
    echo "You do not have a Git client in your PATH." >&2
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
345
fi
346 347

if test -z "$CONTRIBS_RELEASE"; then
348
    echo "EXTRA_CFLAGS += -DNDEBUG" >> config.mak
349 350
    set +x
    echo
Felix Kühne's avatar
Felix Kühne committed
351
    echo "*****************************************************************"
352
    echo "* If you need contribs with all debug information, run this     *"
353 354
    echo "* line and compile the libraries on your own.                   *"
    echo "* CONTRIBS_RELEASE=no ./bootstrap                               *"
Felix Kühne's avatar
Felix Kühne committed
355
    echo "*****************************************************************"
356
fi
357 358 359 360

if test $HAVE_DARWIN_9; then
    set +x
    echo
Felix Kühne's avatar
Felix Kühne committed
361
    echo "*****************************************************************"
362 363
    echo "* We are using GCC-4.2 on OS X, so compilation WILL FAIL if it  *"
    echo "* is NOT installed. *"
Felix Kühne's avatar
Felix Kühne committed
364
    echo "*****************************************************************"
365
fi
Felix Kühne's avatar
Felix Kühne committed
366 367 368 369 370 371

if test $HAVE_DARWIN_10; then
    set +x
    echo
    echo "*****************************************************************"
    echo "* You are running Darwin 10.                                    *"
372 373
    echo "* For testing purposes, VLC will be compiled in 64bit mode      *"
    echo "* using the 10.5 SDK for backward-compatibility.                *"
Felix Kühne's avatar
Felix Kühne committed
374 375 376
    echo "*****************************************************************"
    set -x
fi