#!/bin/bash # # HTS configure script for Mac OS X # # Copyright (c) 2009-2010 Mattias Wadman # # Based on FFmpeg's configure script: # # Copyright (c) 2000-2002 Fabrice Bellard # Copyright (c) 2005-2008 Diego Biurrun # Copyright (c) 2005-2008 Mans Rullgard # PLATFORM="osx" OSENV="posix" DEFAULT_UI="glw" source support/configure.inc CPU=generic ARCH=`uname -m` PKGCONFIG="/opt/local/bin/pkg-config" PKGCONFIGDIR="/opt/local/lib/pkgconfig" MACOSXTARGET="" MACOSXSDK="" APPDIR=${BUILDDIR}/Showtime.app show_help(){ common_help echo " --prefix=PREFIX Install in PREFIX [$PREFIX]" echo " --arch=arch Build for this architecture [$ARCH]" echo " --cpu=cpu Build and optimize for specific CPU" echo " --cc=CC Build using the given compiler" echo " --release Stage for release" echo " --macosxsdk=PATH Mac OS X SDK path [$MACOSXSDK]" echo " --pkg-config=PATH pkg-config path [$PKGCONFIG]" echo " --pkg-config-dir=PATH pkg-config config dir[$PKGCONFIGDIR]" echo " --enable-spotify=keyfile Compile support for Spotify (R) Core" echo " --spotify-framework=PATH Path to libspotify.framework" exit 1 } # figure out what archives to link with by modifying output # from pkg-config # this is done because gcc (on at least osx) cant be # forced to link some libraries static with -static using -l pkg_config_static() { libdir=`$PKGCONFIG --variable=libdir $1` args="" for arg in `$PKGCONFIG --libs $*` ; do if [ \ "$arg" = "-lm" -o \ "$arg" = "-lz" -o \ "$arg" = "-lpthread" ] \ ; then continue fi if [ "${arg:0:2}" != "-l" ] ; then args+="$arg " else args+="${arg/-l/$libdir/lib}.a " fi done echo $args } enable libfreetype enable glw enable glw_frontend_cocoa enable glw_backend_opengl enable coreaudio enable appleremote enable bonjour enable spotlight enable spidermonkey enable stdin enable httpserver enable timegm enable realpath for opt do optval="${opt#*=}" case "$opt" in --prefix=*) PREFIX="$optval" ;; --cpu=*) CPU="$optval" ;; --help) show_help ;; --release) enable release enable embedded_resources ;; --cc=*) CC="$optval" ;; --arch=*) ARCH="$optval" ;; --macosx-sdk=*) MACOSXSDK="$optval" ;; --pkg-config=*) PKGCONFIG="$optval" ;; --pkg-config-dir=*) PKGCONFIGDIR="$optval" ;; --enable-spotify=*) SPOTIFY_KEYFILE="$optval" ;; --spotify-framework=*) SPOTIFY_FRAMEWORK="$optval" ;; *) common_opt $opt $optval esac done if [ "$SPOTIFY_KEYFILE" != "" ] ; then if [ ! -f "$SPOTIFY_KEYFILE" ] ; then echo "$SPOTIFY_KEYFILE does not exist" die fi if [ "$SPOTIFY_FRAMEWORK" = "" ] ; then echo "You must specify where the libspotify.framework directory can be found." echo "Use the --spotify-framework argument" die fi if [ ! -d "$SPOTIFY_FRAMEWORK" ] ; then echo "$SPOTIFY_FRAMEWORK does not exist" die fi fi setup_env "$@" enable libpthread enable zlib enable posix_networking enable dvd # # Application bundle # Override PROG to put binary inside app bundle # echo >>${CONFIG_MAK} "APPDIR=${APPDIR}" PROG="${APPDIR}/Contents/MacOS/showtime" # # c compiler # checkcc() { cat >$TMPDIR/1.c </dev/null $TMPDIR/1.c -o $TMPDIR/1.bin } if [ "x$CC" != "x" ]; then echo >>${CONFIG_MAK} "CC=$CC" CC="$CC" else CC=cc fi if checkcc; then echo "Using C compiler: $CC" else echo "C compiler ($CC) is not working" die fi echo >>${CONFIG_MAK} $CC_CONFIG_MAK # # Check SDK path and set target version # if [ "x$MACOSXSDK" != "x" ] ; then if [ -d "$MACOSXSDK" ] ; then SDKSETTINGS="$MACOSXSDK/SDKSettings" if [ ! -e "$SDKSETTINGS.plist" ] ; then echo "Could not find $SDKSETTINGS.plist" die fi MACOSXTARGET=`defaults read $SDKSETTINGS Version` echo "Mac OS X SDK: $MACOSXSDK" echo "Mac OS X target: $MACOSXTARGET" else echo "Mac OS X SDK directory $MACOSXSDK does not exist" die fi MACOSXSDK_CFLAGS="-mmacosx-version-min=$MACOSXTARGET -isysroot $MACOSXSDK" MACOSXSDK_LDFLAGS="$MACOSXSDK_CFLAGS" echo >>${CONFIG_MAK} "LDFLAGS_cfg += $MACOSXSDK_LDFLAGS" echo >>${CONFIG_MAK} "CFLAGS_cfg += $MACOSXSDK_CFLAGS" else echo "Mac OS X SDK: default" echo "Mac OS X target: default (`sw_vers -productVersion`)" fi # # Standard Mac OS X frameworks # echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework Foundation" echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework CoreFoundation" echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework Cocoa" # IOKit for dvd echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework IOKit" echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework OpenGL" # CoreAudio if enabled coreaudio; then echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework CoreAudio" fi # Carbon, Remote Control Wrapper uses it if enabled appleremote; then echo >>${CONFIG_MAK} "LDFLAGS_cfg += -framework Carbon" fi # # pkg-config, set LIBDIR to makes pkg-config only search that path # if [ ! -x "$PKGCONFIG" ] ; then echo "$PKGCONFIG does not exist or is not executable, make sure it is installed" echo "You can also specify another path with --pkg-config" die fi if [ ! -d "$PKGCONFIGDIR" ] ; then echo "$PKGCONFIGDIR does not exist, make sure pkg-config is installed" echo "You can also specify another directory with --pkg-config-dir" die fi export PKG_CONFIG_LIBDIR=$PKGCONFIGDIR PKGS="" # # libavformat # if pkg-config --atleast-version 52.64.0 libavformat; then echo >>${CONFIG_MAK} "LDFLAGS_cfg += " `pkg-config --libs libavformat` echo >>${CONFIG_MAK} "CFLAGS_cfg += " `pkg-config --cflags libavformat` echo "Using libavformat: `pkg-config --modversion libavformat`" else echo "libavformat 52.64.0 or newer not found." die fi # # libavutil # if pkg-config --atleast-version 50.15.0 libavutil; then echo >>${CONFIG_MAK} "LDFLAGS_cfg += " `pkg-config --libs libavutil` echo >>${CONFIG_MAK} "CFLAGS_cfg += " `pkg-config --cflags libavutil` echo "Using libavutil: `pkg-config --modversion libavutil`" else echo "libavutil 50.15.0 or newer not found." die fi # # libswscale # if pkg-config --atleast-version 0.11.0 libswscale; then echo >>${CONFIG_MAK} "LDFLAGS_cfg += " `pkg-config --libs libswscale` echo >>${CONFIG_MAK} "CFLAGS_cfg += " `pkg-config --cflags libswscale` echo "Using libswscale: `pkg-config --modversion libswscale`" else echo "libswscale 0.11.0 or newer not found." die fi # # libfreetype2 # if $PKGCONFIG freetype2; then PKGS+="freetype2 " echo "Using Freetype2: `$PKGCONFIG --modversion freetype2`" else echo "FreeType 2 not found" die fi # # OpenSSL # if enabled openssl; then if $PKGCONFIG openssl; then PKGS+="openssl " echo "Using OpenSSL: `$PKGCONFIG --modversion openssl`" else echo "OpenSSL not found, using polarssl instead" disable openssl fi fi if disabled openssl; then enable polarssl fi enable librtmp echo >>${CONFIG_MAK} "LDFLAGS_cfg += " `pkg_config_static $PKGS` echo >>${CONFIG_MAK} "CFLAGS_cfg +=" `$PKGCONFIG --cflags $PKGS` # # Configure paths, etc # if disabled release; then echo Development build. echo The generated binary will contain compiled-in paths to echo the current build tree. If you plan to install the binary, echo please reconfigure with '--release'. fi # # Some compatibility defines # cat >> ${CONFIG_H} << EOF /* Darwin is default 64 bit */ #define off64_t off_t #define lseek64 lseek /* Different name on darwin */ #define MAP_ANONYMOUS MAP_ANON /* dvdcss, not defined on darwin is default large file and binary */ #define O_LARGEFILE 0 #define O_BINARY 0 EOF if [ "$SPOTIFY_FRAMEWORK" != "" ] ; then echo >>${CONFIG_MAK} "SPOTIFY_FRAMEWORK = ${SPOTIFY_FRAMEWORK}" echo >>${CONFIG_MAK} "LDFLAGS_cfg += -F\$(shell dirname \$(SPOTIFY_FRAMEWORK)) -framework libspotify" fi # # Finalize # echo >>${CONFIG_MAK} LDFLAGS_cfg += -lpthread finalize