123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- #! /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"
- echo " --no-checksums don't verify checksums (allows to replace tarballs)"
- echo " --disable-downloads don't download packages from the internet"
- echo " --disable-FOO configure to not build package FOO"
- echo " --enable-FOO configure to build package FOO"
- }
- BUILD=
- HOST=
- PREFIX=
- PKGS_ENABLE=
- PKGS_DISABLE=
- if test ! -f "../../contrib/src/main.mak"
- 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
- ;;
- --no-checksums)
- DISABLE_CONTRIB_CHECKSUMS="TRUE"
- ;;
- --disable-downloads)
- DISABLE_CONTRIB_DOWNLOADS="TRUE"
- ;;
- --host=*)
- HOST="${1#--host=}"
- ;;
- --prefix=*)
- PREFIX="${1#--prefix=}"
- ;;
- --disable-*)
- PKGS_DISABLE="${PKGS_DISABLE} ${1#--disable-}"
- ;;
- --enable-*)
- PKGS_ENABLE="${PKGS_ENABLE} ${1#--enable-}"
- ;;
- *)
- echo "Unrecognized options $1"
- usage
- exit 1
- ;;
- esac
- shift
- done
- if test -z "$BUILD"
- then
- echo -n "Guessing build system... "
- BUILD="`${CC:-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 || exit $?
- cat >&3 << EOF
- # This file was automatically generated.
- # Any change will be overwritten if ../bootstrap is run again.
- BUILD := $BUILD
- HOST := $HOST
- CROSS_COMPILE ?= $HOST-
- PKGS_DISABLE := $PKGS_DISABLE
- PKGS_ENABLE := $PKGS_ENABLE
- DISABLE_CONTRIB_DOWNLOADS := $DISABLE_CONTRIB_DOWNLOADS
- DISABLE_CONTRIB_CHECKSUMS := $DISABLE_CONTRIB_CHECKSUMS
- 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
- }
- check_ios_sdk()
- {
- if test -z "$SDKROOT"
- then
- SDKROOT=`xcode-select -print-path`/Platforms/${IOS_TARGET_PLATFORM}.platform/Developer/SDKs/${IOS_TARGET_PLATFORM}${SDK_VERSION}.sdk
- echo "SDKROOT not specified, assuming $SDKROOT"
- else
- SDKROOT="$SDKROOT"
- fi
- if [ ! -d "${SDKROOT}" ]
- then
- echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
- exit 1
- fi
- add_make "IOS_SDK=${SDKROOT}"
- add_make "IOS_TARGET_PLATFORM=${IOS_TARGET_PLATFORM}"
- }
- check_macosx_sdk()
- {
- if [ -z "${OSX_VERSION}" ]
- then
- OSX_VERSION=`xcrun --show-sdk-version`
- echo "OSX_VERSION not specified, assuming $OSX_VERSION"
- fi
- if test -z "$SDKROOT"
- then
- SDKROOT=`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$OSX_VERSION.sdk
- echo "SDKROOT not specified, assuming $SDKROOT"
- fi
- if [ ! -d "${SDKROOT}" ]
- then
- SDKROOT_NOT_FOUND=`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$OSX_VERSION.sdk
- SDKROOT=`xcode-select -print-path`/SDKs/MacOSX$OSX_VERSION.sdk
- echo "SDKROOT not found at $SDKROOT_NOT_FOUND, trying $SDKROOT"
- fi
- if [ ! -d "${SDKROOT}" ]
- then
- SDKROOT_NOT_FOUND="$SDKROOT"
- SDKROOT=`xcrun --show-sdk-path`
- echo "SDKROOT not found at $SDKROOT_NOT_FOUND, trying $SDKROOT"
- fi
- if [ ! -d "${SDKROOT}" ]
- then
- echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
- exit 1
- fi
- add_make "MACOSX_SDK=${SDKROOT}"
- add_make "OSX_VERSION ?= ${OSX_VERSION}"
- }
- check_android_sdk()
- {
- [ -z "${ANDROID_NDK}" ] && echo "You must set ANDROID_NDK environment variable" && exit 1
- add_make "ANDROID_NDK := ${ANDROID_NDK}"
- [ -z "${ANDROID_ABI}" ] && echo "You must set ANDROID_ABI environment variable" && exit 1
- add_make "ANDROID_ABI := ${ANDROID_ABI}"
- [ -z "${ANDROID_API}" ] && echo "You should set ANDROID_API environment variable (using default android-9)" && ANDROID_API := android-9
- add_make "ANDROID_API := ${ANDROID_API}"
- [ ${ANDROID_ABI} = "armeabi-v7a" ] && add_make_enabled "HAVE_NEON"
- [ ${ANDROID_ABI} = "armeabi-v7a" ] && add_make_enabled "HAVE_ARMV7A"
- [ ${ANDROID_ABI} = "armeabi" -a -z "${NO_ARMV6}" ] && add_make_enabled "HAVE_ARMV6"
- }
- test -z "$PREFIX" || add_make "PREFIX := $PREFIX"
- #
- # Checks
- #
- OS="${HOST#*-}" # strip architecture
- case "${OS}" in
- apple-darwin*)
- if test -z "$BUILDFORIOS"
- then
- check_macosx_sdk
- add_make_enabled "HAVE_MACOSX" "HAVE_DARWIN_OS" "HAVE_BSD"
- else
- check_ios_sdk
- add_make_enabled "HAVE_IOS" "HAVE_DARWIN_OS" "HAVE_BSD" "HAVE_NEON" "HAVE_ARMV7A"
- fi
- ;;
- *bsd*)
- add_make_enabled "HAVE_BSD"
- ;;
- *android*)
- check_android_sdk
- add_make_enabled "HAVE_LINUX" "HAVE_ANDROID"
- case "${HOST}" in
- *arm*)
- add_make "PLATFORM_SHORT_ARCH := arm"
- ;;
- *i686*)
- add_make "PLATFORM_SHORT_ARCH := x86"
- ;;
- *mipsel*)
- add_make "PLATFORM_SHORT_ARCH := mips"
- ;;
- esac
- ;;
- *linux*)
- add_make_enabled "HAVE_LINUX"
- ;;
- *wince*)
- add_make_enabled "HAVE_WINCE"
- ;;
- *mingw*)
- add_make_enabled "HAVE_WIN32"
- ;;
- *solaris*)
- add_make_enabled "HAVE_SOLARIS"
- ;;
- esac
- #
- # Results output
- #
- test -e Makefile && unlink Makefile
- ln -sf ../../contrib/src/main.mak Makefile || exit $?
- cat << EOF
- Bootstrap completed.
- Run "make" to start compilation.
- Other targets:
- * make install same as "make"
- * make prebuilt fetch and install prebuilt binaries
- * make list list packages
- * 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
- * make clean clean everything
- * make package prepare prebuilt packages
- EOF
- mkdir -p ../../contrib/tarballs || exit $?
|