X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=extras%2Fcontrib%2Fbootstrap;h=9d32354ec8846dce7b47f2e4ed9e184c12cbef51;hb=cd0398cf516a94e527f4da04b4438491814ab5ee;hp=a344d315fbe1b371515c9cf6b16c855cd9160a08;hpb=cabe90dfe9494423ffcfbc27e1af368b3e77e5ae;p=vlc diff --git a/extras/contrib/bootstrap b/extras/contrib/bootstrap index a344d315fb..9d32354ec8 100755 --- a/extras/contrib/bootstrap +++ b/extras/contrib/bootstrap @@ -24,331 +24,479 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. # *************************************************************************** -if test "$#" -gt "2" -o "$1" = "-h" -o "$1" = "--help" ; then - echo "Usage: $0 [host [distro]]" >&2 - echo " Prepare config.mak and distro.mak file." >&2 - exit 1 -fi - LANG=C export LANG set -e -set -x +set +x + +usage() +{ +cat << EOF +usage: $0 [-t target] [-d distro] [-b buildir] [-i installdir] + +OPTIONS: + -t target Force target to "target" + -d distro Force distro to "distro" + -b buildir Set build dir to "builddir" + -i installdir Install to "installdir" + -h Show some help +EOF +} + +add_makefile_cfg() +{ + echo $1 >> "${config_mak}" +} + +add_enabled_makefile_cfg() +{ + echo "$1=1" >> "${config_mak}" +} + +error() +{ + echo "[contrib] ERROR: $1" +} + +info() +{ + echo "[contrib] $1" +} + +DISTRO= + +hint_distro() +{ + # Give a hint about the auto detected distro + if test -z "${DISTRO}"; then DISTRO="$1"; fi +} + +BUILDDIR=. + +while getopts "ht:d:b:i:" OPTION +do + case $OPTION in + h) + usage + exit 1 + ;; + t) + TARGET=$OPTARG + ;; + d) + DISTRO=$OPTARG + ;; + b) + BUILDDIR=$OPTARG + ;; + i) + PREFIX=$OPTARG + ;; + ?) + usage + exit 1 + ;; + esac +done +shift $(($OPTIND - 1)) + +if [ "x$1" != "x" ]; then + error "Fallback to old command line switch, use the -t option now" + TARGET="$1" +fi +if [ "x$2" != "x" ]; then + usage + exit 1 +fi BUILD=`gcc -dumpmachine` -if test "$#" -ge "1"; then - HOST="$1" -else - HOST="$BUILD" + +if test "x$TARGET" = "x"; then + TARGET="$BUILD" + info "No target specified, using '$TARGET'" fi -DISTRO= -if test "$#" = "2"; then - echo "Forcing distro.mak to use $2.mak" - DISTRO="$2" - HOST="$1" +if test "x$PREFIX" = "x"; then + PREFIX="`pwd`/hosts/$TARGET" + info "No install dir specified, using '$PREFIX'" fi -rm -f config.mak +# Make sure prefix is absolute and existing +mkdir -p "${PREFIX}" +PREFIX=`cd "${PREFIX}" && pwd` +mkdir -p "${PREFIX}/share/aclocal" # aclocal needs this dir to exist + +# +# Set up build dir +# + +mkdir -p "${BUILDDIR}" + +# Install build dir makefile +ln -sf "`pwd`/contrib.mak" "${BUILDDIR}/Makefile" + +# Create the 'build-src' folder to build from source +mkdir -p "${BUILDDIR}/build-src" +ln -sf "`pwd`/src/contrib-src.mak" "${BUILDDIR}/build-src/Makefile" +ln -sf "`pwd`/src/packages.mak" "${BUILDDIR}/build-src/" +ln -sf "`pwd`/src/Patches" "${BUILDDIR}/build-src/" + +# Create config.mak +config_mak="${BUILDDIR}/config.mak" +rm -f "${config_mak}" { echo "# Automatically generated by bootstrap." echo "# Make changes if you know what you're doing." -} > config.mak +} > "${config_mak}" -rm -f distro.mak -{ - echo "# Automatically generated by bootstrap" - echo "# Make changes if you know what you're doing." -} > distro.mak - -if test "$HOST" != "$BUILD"; then - CC="${HOST}-gcc" - CXX="${HOST}-g++" - LD="${HOST}-ld" - RANLIB="${HOST}-ranlib" - AR="${HOST}-ar" - STRIP="${HOST}-strip" +if test "$TARGET" != "$BUILD"; then + test -z "$CC" && CC="${TARGET}-gcc" + test -z "$CXX" && CXX="${TARGET}-g++" + test -z "$LD" && LD="${TARGET}-ld" + test -z "$RANLIB"&& RANLIB="${TARGET}-ranlib" + test -z "$AR" && AR="${TARGET}-ar" + test -z "$STRIP" && STRIP="${TARGET}-strip" fi -case $HOST in +case $TARGET in *powerpc*|*ppc*) - echo "ARCH=ppc" >> config.mak + ARCH="ppc" ;; - *darwin10*) - echo "ARCH=x86_64" >> config.mak + *86_64*) + ARCH="x86_64" ;; *86*) - echo "ARCH=i386" >> config.mak + ARCH="i386" + ;; + arm*eabi) + ARCH="armel" + ;; + arm*) + ARCH="arm" ;; esac +add_makefile_cfg "ARCH = $ARCH" # Check the HAVE_{OS} -case $HOST in +case $TARGET in *darwin*) - echo "HAVE_DARWIN_OS = 1" >> config.mak - echo "HAVE_BSD = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_DARWIN_OS" + add_enabled_makefile_cfg "HAVE_BSD" ;; *linux*) - echo "HAVE_LINUX = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_LINUX" ;; *bsd*) - echo "HAVE_BSD = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_BSD" ;; *wince*) - echo "HAVE_WINCE = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_WINCE" ;; - *beos*) - echo "HAVE_BEOS = 1" >> config.mak + *symbian*) + add_enabled_makefile_cfg "HAVE_SYMBIAN" ;; esac -case $HOST in - ppc-darwin) - # Mac OS X < 10.4 - echo "Your version of Mac OS X is too old!" >&2 - echo "Compiling VLC requires 10.5.x or later" >&2 - exit 1 - ;; - powerpc-apple-darwin8) - 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 - ;; - i686-apple-darwin8) - echo "Your version of Mac OS X is too old!" >&2 - echo "Compiling and running VLC requires 10.5.x or later" >&2 +# Figure out the correct distro to use +case $TARGET in + ppc-darwin|*-apple-darwin8) + error "Your version of Mac OS X is too old!" + error "Compiling and running VLC requires 10.5.x or later" exit 1 ;; powerpc-apple-darwin9) -# Mac OS X 10.5 with Xcode 3, specific rules apply - SDK_TARGET=10.5 - echo "SDK_TARGET = ${SDK_TARGET}" >> config.mak - echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak - echo "MACOSX_SDK = /Developer/SDKs/MacOSX10.5.sdk" >> config.mak - echo "HAVE_DARWIN_9 = 1" >> config.mak - HAVE_DARWIN_9=1 + hint_distro macosx32 + HAVE_DARWIN_32=1 + CFLAGS_TUNING=" -arch ppc -mtune=G4" - EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}" - EXTRA_LDFLAGS=" -arch ppc -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK}" - CC="/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2" - CXX="/Developer/usr/llvm-gcc-4.2/bin/llvm-g++-4.2" - LD="ld -arch ppc -syslibroot \${MACOSX_SDK}" - echo "PATH = /bin:/usr/bin:/usr/local/bin:" >> config.mak - cat src/Distributions/darwin.mak >> distro.mak - 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 + EXTRA_LDFLAGS=" -arch ppc" ;; - i686-apple-darwin9) - SDK_TARGET=10.5 - MIN_LD_VERSION_WITH_TEXT_RELOCATION=81 - echo "SDK_TARGET = ${SDK_TARGET}" >> config.mak - echo "HAVE_DARWIN_OS_ON_INTEL = 1" >> config.mak - echo "HAVE_DARWIN_9 = 1" >> config.mak - HAVE_DARWIN_9=1 - if test `ld -v 2> /dev/stdout | sed -E 's/.*ld64-([0-9]+).*/\1/'` -lt ${MIN_LD_VERSION_WITH_TEXT_RELOCATION}; then - echo "ERROR: Your ld version is unable to compile VLC.\nUpdate to Xcode 3.1 or higher." >&2 - exit 1 - fi - echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak - echo "MACOSX_SDK = /Developer/SDKs/MacOSX10.5.sdk" >> config.mak - CFLAGS_TUNING=" -march=pentium-m -mtune=prescott -arch i386" - EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}" - EXTRA_LDFLAGS=" -arch i386 -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK}" - CC="/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2" - CXX="/Developer/usr/llvm-gcc-4.2/bin/llvm-g++-4.2" - echo "PATH = /bin:/usr/bin:/usr/local/bin" >> config.mak - cat src/Distributions/darwin.mak >> distro.mak - 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 - ;; - *-apple-darwin10) - SDK_TARGET=10.5 - 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 - HAVE_DARWIN_10=1 - echo "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" >> config.mak - echo "MACOSX_SDK = /Developer/SDKs/MacOSX${SDK_TARGET}.sdk" >> config.mak - CFLAGS_TUNING=" -march=core2" - EXTRA_CFLAGS=" -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}" - EXTRA_LDFLAGS=" -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK}" - echo "PATH = /bin:/usr/bin:/usr/local/bin" >> config.mak - CC="gcc" - CXX="g++" - cat src/Distributions/darwin.mak >> distro.mak - 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 + i686-apple-darwin*) + hint_distro macosx32 + HAVE_DARWIN_32=1 + + CFLAGS_TUNING=" -march=prescott -mtune=generic -arch i386 -m32" + EXTRA_LDFLAGS=" -arch i386" ;; - i586-pc-beos) - 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 + x86_64-apple-darwin*) + hint_distro macosx64 + HAVE_DARWIN_64=1 + + CFLAGS_TUNING=" -march=core2 -mtune=core2 -m64 -arch x86_64" + EXTRA_LDFLAGS=" -arch x86_64" ;; *mingw32ce) - echo "HAVE_WINCE = 1" >> config.mak - echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak - cat src/Distributions/wince.mak >> distro.mak + EXTRA_CPPFLAGS=" -D_WIN32_WCE=0x0500" + hint_distro wince + ;; + *64-*mingw*) + add_enabled_makefile_cfg "HAVE_WIN32" + EXTRA_CFLAGS="-O3" + hint_distro win64 ;; *mingw32*) - echo "HAVE_WIN32 = 1" >> config.mak - echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak - EXTRA_CFLAGS="-O3" - cat src/Distributions/win32.mak >> distro.mak + EXTRA_CFLAGS=" -O3 -march=i686 -mtune=generic" + hint_distro win32 ;; i686-pc-cygwin) - echo "HAVE_WIN32 = 1" >> config.mak - echo "HAVE_CYGWIN = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_CYGWIN" CC="gcc -mno-cygwin -isystem /usr/include/mingw" CXX="g++ -mno-cygwin -isystem /usr/include/mingw" - HOST=`$CC -dumpmachine` + TARGET=`$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 + hint_distro win32 ;; arm-wince-pe) - echo "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" >> config.mak EXTRA_CPPFLAGS=" -D_WIN32_WCE" - cat src/Distributions/wince.mak >> distro.mak + hint_distro wince ;; armeb-linux-uclibc) - echo "HAVE_UCLIBC = 1" >> config.mak - echo "HAVE_BIGENDIAN = 1" >> config.mak + add_enabled_makefile_cfg "HAVE_UCLIBC" + add_enabled_makefile_cfg "HAVE_BIGENDIAN" 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 + ;; + arm-none-linux-gnueabi) + if test -f /etc/maemo_version; then + hint_distro maemo5 + EXTRA_CFLAGS=" -mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a" + EXTRA_CFLAGS="$EXTRA_CFLAGS -mfpu=neon -mfloat-abi=softfp" + EXTRA_CFLAGS="$EXTRA_CFLAGS -O3 -fno-tree-vectorize" fi ;; - *) - 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 - elif test -f /etc/maemo_version; then - cat src/Distributions/maemo.mak >> distro.mak - else - # Default Unix-like systems - cat src/Distributions/unix.mak >> distro.mak - fi - else # unknown distro - if test ! -z "${DISTRO}"; then - cat src/Distributions/${DISTRO}.mak >> distro.mak - else - cat src/Distributions/unix.mak >> distro.mak - fi + *86_64*linux*) + EXTRA_CFLAGS=" -fPIC" + EXTRA_CPPFLAGS=" -fPIC" + EXTRA_LDFLAGS=" -L/usr/lib64" + add_makefile_cfg "LIBRARY_PATH = /usr/lib64" + add_makefile_cfg "PKG_CONFIG_PATH = /usr/lib64/pkgconfig" + add_makefile_cfg "PKG_CONFIG_LIBDIR = /usr/lib64/pkgconfig" + ;; +esac + +# +# Fix up the Distro +# + +if test -z "${DISTRO}" -a "$TARGET" = "$BUILD"; then + if test -d "/usr/lib/pkgconfig"; then + if test -z "$PKG_CONFIG_PATH"; then + add_makefile_cfg "PKG_CONFIG_PATH = /usr/lib/pkgconfig" + fi + if test -z "$PKG_CONFIG_LIBDIR"; then + add_makefile_cfg "PKG_CONFIG_LIBDIR = /usr/lib/pkgconfig" fi + fi + # Try to match distribution + if test -f /etc/fedora-release; then + hint_distro fedora + elif test -f /etc/maemo_version; then + hint_distro maemo5 + elif test -f /etc/debian_version; then + # NOTE: check for Debian *after* its derivatives + hint_distro debian + fi +fi + +# Default Unix-like systems +hint_distro unix + +distro_mak="${BUILDDIR}/distro.mak" +distro_file="`pwd`/src/Distributions/${DISTRO}.mak" +ln -sf "${distro_file}" "${distro_mak}" + +# +# Distro specific settings +# + +case "$DISTRO" in + ios) + if test -z "$IOS_SDK_ROOT"; then + error "The bootstrap script requires the IOS_SDK_ROOT environment " + error "variable to be set when building for iOS" + exit 1 + fi + add_makefile_cfg "IOS_SDK_ROOT = ${IOS_SDK_ROOT}" ;; + macosx*) + SDK_TARGET=10.5 + HAVE_MACOSX_DARWIN_9=1 + EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -isysroot \${MACOSX_SDK} -Wl,-syslibroot,\${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}" + EXTRA_CFLAGS="${EXTRA_CFLAGS} -D\${ENVP} -isysroot \${MACOSX_SDK} -mmacosx-version-min=\${SDK_TARGET}" + CC="/usr/bin/gcc" + CXX="/usr/bin/g++" + LD="ld" + RANLIB="ranlib" + AR= + STRIP="strip" + add_makefile_cfg "PATH = /bin:/usr/bin:/usr/local/bin" + add_makefile_cfg "SDK_TARGET = ${SDK_TARGET}" + add_makefile_cfg "ENVP = MACOSX_DEPLOYMENT_TARGET=${SDK_TARGET}" + add_makefile_cfg "MACOSX_SDK = /Developer/SDKs/MacOSX${SDK_TARGET}.sdk" + add_enabled_makefile_cfg "HAVE_MACOSX" + + case $TARGET in + x86_64*|i686*) add_enabled_makefile_cfg "HAVE_MACOSX_ON_INTEL" ;; + esac + case $TARGET in + *darwin10) add_enabled_makefile_cfg "HAVE_MACOSX_DARWIN_10" ;; + *darwin9) add_enabled_makefile_cfg "HAVE_MACOSX_DARWIN_9" ;; + esac + + if ! test -e /Developer/SDKs; then + error "Your 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 + ;; + win*) + add_makefile_cfg "PKG_CONFIG_PATH = \$(PREFIX)/lib/pkgconfig" + ;; + android) + if test -z "$ANDROID_NDK"; then + error "The bootstrap script requires the ANDROID_NDK environment variable " + error "to be set when building for Android" + exit 1 + fi + # The given host (arm-eabi) is not the real one (arm-linux-androideabi) + ln -sfn $TARGET hosts/arm-linux-androideabi + CC="arm-linux-androideabi-gcc --sysroot=$ANDROID_NDK/platforms/android-9/arch-arm" + CXX="arm-linux-androideabi-g++ --sysroot=$ANDROID_NDK/platforms/android-9/arch-arm" + NM=arm-linux-androideabi-nm + AR=arm-linux-androideabi-ar + LD=arm-linux-androideabi-ld + RANLIB=arm-linux-androideabi-ranlib + STRIP=arm-linux-androideabi-strip + # Add the PATH to the NDK + add_makefile_cfg "ANDROID_NDK = ${ANDROID_NDK}" + add_makefile_cfg "PATH = ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:${PATH}" + + add_enabled_makefile_cfg "HAVE_LINUX" + if test -z "$NO_NEON"; then + add_enabled_makefile_cfg "HAVE_NEON" + ARM_EABI=armeabi-v7a + else + ARM_EABI=armeabi + fi + # make sure android toolchain can build C++ + EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -D__STDC_VERSION__=199901L" + EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/include" + EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/$ARM_EABI/include" esac -echo "BUILD = $BUILD" >> config.mak -echo "HOST = $HOST" >> config.mak +# Save passed flags +EXTRA_CFLAGS="$EXTRA_CFLAGS $CFLAGS" +EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS" +EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS $CPPFLAGS" +EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $CXXFLAGS" + +uppercase_distro=`echo "$DISTRO" | tr '[:lower:]' '[:upper:]'` +add_enabled_makefile_cfg "HAVE_${uppercase_distro}" +add_makefile_cfg "BUILD = $BUILD" +add_makefile_cfg "HOST = $TARGET" +add_makefile_cfg "SRCDIR = `pwd`" +add_makefile_cfg "PREFIX = ${PREFIX}" +add_makefile_cfg "VLCROOTDIR = `pwd`/../.." -echo "PREFIX = `pwd`" >> config.mak +ln -sfn hosts/$TARGET build -echo "CC = ${CC}" >> config.mak -echo "CXX = ${CXX}" >> config.mak -echo "LD = ${LD}" >> config.mak -echo "RANLIB = ${RANLIB}" >> config.mak -echo "AR = ${AR}" >> config.mak -echo "STRIP = ${STRIP}" >> config.mak -echo "EXTRA_CFLAGS = ${CFLAGS_TUNING} ${EXTRA_CFLAGS}" >> config.mak -echo "EXTRA_CPPFLAGS = ${EXTRA_CPPFLAGS} -isystem \$(PREFIX)/include" >> config.mak -echo "EXTRA_LDFLAGS = ${EXTRA_LDFLAGS}" >> config.mak -echo "EXTRA_PATH = ${EXTRA_PATH}" >> config.mak +add_makefile_cfg "CC = ${CC}" +add_makefile_cfg "CXX = ${CXX}" +add_makefile_cfg "LD = ${LD}" +add_makefile_cfg "RANLIB = ${RANLIB}" +add_makefile_cfg "AR = ${AR}" +add_makefile_cfg "STRIP = ${STRIP}" +add_makefile_cfg "EXTRA_CFLAGS = ${CFLAGS_TUNING} ${EXTRA_CFLAGS}" +add_makefile_cfg "EXTRA_CPPFLAGS = ${EXTRA_CPPFLAGS} -isystem \$(PREFIX)/include" +add_makefile_cfg "EXTRA_LDFLAGS = ${EXTRA_LDFLAGS}" +add_makefile_cfg "EXTRA_PATH = ${EXTRA_PATH}" + +#CMAKE +toolchain_cmake="${BUILDDIR}/toolchain.cmake" +rm -f ${BUILDDIR}/toolchain.cmake +if test ${DISTRO} = "win32"; then + echo "SET(CMAKE_SYSTEM_NAME Windows)" >> "${toolchain_cmake}" + echo "SET(CMAKE_RC_COMPILER ${TARGET}-windres)" >> "${toolchain_cmake}" +fi +case "$DISTRO" in macosx*) + echo "SET(CMAKE_SYSTEM_NAME Darwin)" >> "${toolchain_cmake}" + echo "set(CMAKE_C_FLAGS ${CFLAGS_TUNING} ${EXTRA_CFLAGS})" >> "${toolchain_cmake}" + echo "set(CMAKE_CXX_FLAGS ${CFLAGS_TUNING} ${EXTRA_CFLAGS})" >> "${toolchain_cmake}" + echo "set(CMAKE_LD_FLAGS ${EXTRA_LDFLAGS})" >> "${toolchain_cmake}" +esac +echo "SET(CMAKE_C_COMPILER ${CC})" >> "${toolchain_cmake}" +echo "SET(CMAKE_CXX_COMPILER ${CXX})" >> "${toolchain_cmake}" +echo "SET(CMAKE_FIND_ROOT_PATH `pwd` )" >> "${toolchain_cmake}" +echo "set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> "${toolchain_cmake}" +echo "set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> "${toolchain_cmake}" +echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> "${toolchain_cmake}" if wget --version >/dev/null 2>&1; then - echo "WGET = `which wget` -c --passive" >> config.mak + add_makefile_cfg "WGET = \"`which wget`\" -c --passive" elif test -z `curl --version >/dev/null 2>&1`; then - echo "WGET = `which curl` -L -O" >> config.mak + add_makefile_cfg "WGET = \"`which curl`\" -L -O" else - echo "You need at least wget or curl to fetch the packages." >&2 + error "You need at least wget or curl to fetch the packages." exit 1 fi if svn --version >/dev/null 2>&1; then - echo "SVN = `which svn`" >> config.mak + add_makefile_cfg "SVN = \"`which svn`\"" else - echo "You do not have a subversion client in your PATH." >&2 + error "You do not have a subversion client in your PATH." fi if git --version>/dev/null 2>&1; then - echo "GIT = `which git`" >> config.mak + add_makefile_cfg "GIT = \"`which git`\"" else - echo "You do not have a Git client in your PATH." >&2 + error "You do not have a Git client in your PATH." fi if test -z "$CONTRIBS_RELEASE"; then - echo "EXTRA_CFLAGS += -DNDEBUG" >> config.mak - set +x - echo - echo "*****************************************************************" - echo "* If you need contribs with all debug information, run this *" - echo "* line and compile the libraries on your own. *" - echo "* CONTRIBS_RELEASE=no ./bootstrap *" - echo "*****************************************************************" + add_makefile_cfg "EXTRA_CFLAGS += -DNDEBUG" + info "*****************************************************************" + info "* If you need contribs with all debug information, run this *" + info "* line and compile the libraries on your own. *" + info "* CONTRIBS_RELEASE=no ./bootstrap *" + info "*****************************************************************" fi -if test $HAVE_DARWIN_9; then - set +x - echo - echo "*****************************************************************" - echo "* We are using both the llvm-gcc-4.2 and the gcc-4.2 compilers *" - echo "* on OS X, so compilation will fail if these are not installed. *" - echo "*****************************************************************" +if test $HAVE_MACOSX_DARWIN_9; then + add_enabled_makefile_cfg "HAVE_MACOSX_DARWIN_9" + if ! /usr/bin/gcc --version>/dev/null 2>&1; then + error "You do not have GCC installed in /usr/bin, compilation WILL FAIL." + fi fi -if test $HAVE_DARWIN_10; then - set +x - echo - echo "*****************************************************************" - echo "* You are running Darwin 10. *" - echo "* For testing purposes, VLC will be compiled in 64bit mode. *" - echo "* While doing so, for the time being, the 10.5 SDK is used. *" - echo "* Note that in contrast to our Darwin 9 builds, we are not *" - echo "* using the llvm compiler, but GCC 4.2. *" - echo "*****************************************************************" - set -x +if test "$DISTRO" = "macosx32"; then + info "*****************************************************************" + info "* VLC will be compiled in 32bit mode using the 10.5 & later SDK.*" + info "* *" + info "* Re-run with the -t x86_64-apple-darwin* argument to turn on *" + info "* 64bit compilation for Intel-based Macs, whereas * is either *" + info "* 9 or 10 depending on your Darwin version. *" + info "* There is no PPC64 support. *" + info "*****************************************************************" fi + +if test "$DISTRO" = "macosx64"; then + info + info "*****************************************************************" + info "* VLC will be compiled in 64bit mode using the 10.5 & later SDK.*" + info "*****************************************************************" +fi + +case `uname` in + Linux) + CPUS=`grep -c ^processor /proc/cpuinfo` + ;; +# Darwin) +# CPUS=`sysctl hw.ncpu|cut -d: -f2` +# ;; + *) + CPUS=1 # default + ;; +esac +add_makefile_cfg "MAKEFLAGS += -j$CPUS" + +info "Using $CPUS processor(s)"