]> git.sesse.net Git - vlc/blobdiff - extras/package/ios/build.sh
extras/ios: rework LDFLAGS handling and enable vpx for the scary build flavor
[vlc] / extras / package / ios / build.sh
index 62fb1b8d18809a06501bf52b2226543fc1e6d537..778e28bde5aff72759a8c289edbd3be6de22d2d7 100755 (executable)
@@ -3,19 +3,25 @@ set -e
 
 PLATFORM=OS
 VERBOSE=no
-SDK_VERSION=6.1
-SDK_MIN=5.1
+DEBUG=no
+SDK_VERSION=7.0
+SDK_MIN=6.1
+SIXTYFOURBIT_SDK_MIN=7.0
 ARCH=armv7
+SCARY=yes
 
 usage()
 {
 cat << EOF
-usage: $0 [-s] [-k sdk]
+usage: $0 [-s] [-d] [-v] [-k sdk]
 
 OPTIONS
-   -k <sdk>      Specify which sdk to use ('xcodebuild -showsdks', current: ${SDK})
+   -k <sdk version>      Specify which sdk to use ('xcodebuild -showsdks', current: ${SDK_VERSION})
    -s            Build for simulator
    -a <arch>     Specify which arch to use (current: ${ARCH})
+   -d            Enable debug
+   -v            Enable verbose command-line output
+   -w            Build a limited stack of non-scary libraries only
 EOF
 }
 
@@ -36,7 +42,7 @@ info()
     echo "[${blue}info${normal}] $1"
 }
 
-while getopts "hvsk:a:" OPTION
+while getopts "hvwdsk:a:" OPTION
 do
      case $OPTION in
          h)
@@ -48,10 +54,15 @@ do
              ;;
          s)
              PLATFORM=Simulator
-             SDK=${SDK_MIN}
+             ;;
+         d)
+             DEBUG=yes
+             ;;
+         w)
+             SCARY=no
              ;;
          k)
-             SDK=$OPTARG
+             SDK_VERSION=$OPTARG
              ;;
          a)
              ARCH=$OPTARG
@@ -77,11 +88,14 @@ fi
 info "Building libvlc for iOS"
 
 if [ "$PLATFORM" = "Simulator" ]; then
-    TARGET="i686-apple-darwin11"
-    ARCH="i386"
-    OPTIM="-O3 -g"
+    TARGET="${ARCH}-apple-darwin11"
 else
     TARGET="arm-apple-darwin11"
+fi
+
+if [ "$DEBUG" = "yes" ]; then
+    OPTIM="-O0 -g"
+else
     OPTIM="-O3 -g"
 fi
 
@@ -111,9 +125,6 @@ PREFIX="${VLCROOT}/install-ios-${PLATFORM}/${ARCH}"
 
 export PATH="${VLCROOT}/extras/tools/build/bin:${VLCROOT}/contrib/${TARGET}/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
 
-# contains gas-processor.pl
-export PATH=$PATH:${VLCROOT}/extras/package/ios/resources
-
 info "Building tools"
 spushd "${VLCROOT}/extras/tools"
 ./bootstrap
@@ -132,16 +143,24 @@ export CXX="xcrun clang++"
 export LD="xcrun ld"
 export STRIP="xcrun strip"
 
+export PLATFORM=$PLATFORM
+export SDK_VERSION=$SDK_VERSION
+
+export CFLAGS="-isysroot ${SDKROOT} -arch ${ARCH} ${OPTIM}"
 
-export SDKROOT
 if [ "$PLATFORM" = "OS" ]; then
-export CFLAGS="-isysroot ${SDKROOT} -arch ${ARCH} -mcpu=cortex-a8 -miphoneos-version-min=${SDK_MIN} ${OPTIM}"
+if [ "$ARCH" != "arm64" ]; then
+export CFLAGS="${CFLAGS} -mcpu=cortex-a8 -miphoneos-version-min=${SDK_MIN}"
+else
+export CFLAGS="${CFLAGS} -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
+fi
 else
-export CFLAGS="-isysroot ${SDKROOT} -arch ${ARCH} -miphoneos-version-min=${SDK_MIN} ${OPTIM}"
+export CFLAGS="${CFLAGS} -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
 fi
+
+export CXXFLAGS="${CFLAGS} -stdlib=libstdc++"
+
 export CPPFLAGS="${CFLAGS}"
-export CXXFLAGS="${CFLAGS}"
-export OBJCFLAGS="${CFLAGS}"
 
 export CPP="xcrun cc -E"
 export CXXCPP="xcrun c++ -E"
@@ -153,20 +172,29 @@ if [ "$PLATFORM" = "Simulator" ]; then
     export OBJCFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch ${OBJCFLAGS}"
 fi
 
-if [ "$PLATFORM" = "OS" ]; then
-  export LDFLAGS="-L${SDKROOT}/usr/lib -arch ${ARCH} -isysroot ${SDKROOT} -miphoneos-version-min=${SDK_MIN}"
-else
-  export LDFLAGS="-syslibroot=${SDKROOT}/ -arch ${ARCH} -miphoneos-version-min=${SDK_MIN}"
-fi
+export LDFLAGS="-L${SDKROOT}/usr/lib -arch ${ARCH} -isysroot ${SDKROOT}"
 
 if [ "$PLATFORM" = "OS" ]; then
-    EXTRA_CFLAGS="-arch ${ARCH} -mcpu=cortex-a8"
+    EXTRA_CFLAGS="-arch ${ARCH}"
     EXTRA_LDFLAGS="-arch ${ARCH}"
+if [ "$ARCH" != "arm64" ]; then
+    EXTRA_CFLAGS+=" -mcpu=cortex-a8"
+    EXTRA_CFLAGS+=" -miphoneos-version-min=${SDK_MIN}"
+    EXTRA_LDFLAGS+=" -Wl,-ios_version_min,${SDK_MIN}"
+    export LDFLAGS="${LDFLAGS} -Wl,-ios_version_min,${SDK_MIN}"
+else
+    EXTRA_CFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
+    EXTRA_LDFLAGS+=" -Wl,-ios_version_min,${SIXTYFOURBIT_SDK_MIN}"
+    export LDFLAGS="${LDFLAGS} -Wl,-ios_version_min,${SIXTYFOURBIT_SDK_MIN}"
+fi
 else
-    EXTRA_CFLAGS="-m32"
-    EXTRA_LDFLAGS="-m32"
+    EXTRA_CFLAGS="-arch ${ARCH}"
+    EXTRA_CFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
+    EXTRA_LDFLAGS=" -Wl,-ios_version_min,${SIXTYFOURBIT_SDK_MIN}"
+    export LDFLAGS="${LDFLAGS} -Wl-ios_version_min,${SIXTYFOURBIT_SDK_MIN}"
 fi
 
+
 info "LD FLAGS SELECTED = '${LDFLAGS}'"
 
 spushd ${VLCROOT}/contrib
@@ -176,20 +204,22 @@ mkdir -p "${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}"
 cd "${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}"
 
 if [ "$PLATFORM" = "OS" ]; then
-      export AS="gas-preprocessor.pl ${CC}"
-      export ASCPP="gas-preprocessor.pl ${CC}"
-      export CCAS="gas-preprocessor.pl ${CC}"
+    export AS="gas-preprocessor.pl ${CC}"
+    export ASCPP="gas-preprocessor.pl ${CC}"
+    export CCAS="gas-preprocessor.pl ${CC}"
+    if [ "$ARCH" = "arm64" ]; then
+        export GASPP_FIX_XCODE5=1
+    fi
 else
-  export AS="xcrun as"
-  export ASCPP="xcrun as"
+    export ASCPP="xcrun as"
 fi
 
-../bootstrap --host=${TARGET} --build="i686-apple-darwin10" --prefix=${VLCROOT}/contrib/${TARGET}-${ARCH} --disable-gpl \
+../bootstrap --build=x86_64-apple-darwin11 --host=${TARGET} --prefix=${VLCROOT}/contrib/${TARGET}-${ARCH} --arch=${ARCH} --disable-gpl \
     --disable-disc --disable-sout \
     --disable-sdl \
     --disable-SDL_image \
     --disable-iconv \
-    --disable-zvbi \
+    --enable-zvbi \
     --disable-kate \
     --disable-caca \
     --disable-gettext \
@@ -197,13 +227,11 @@ fi
     --disable-upnp \
     --disable-gme \
     --disable-tremor \
-    --disable-vorbis \
+    --enable-vorbis \
     --disable-sidplay2 \
     --disable-samplerate \
     --disable-goom \
-    --disable-gcrypt \
     --disable-vncserver \
-    --disable-gnutls \
     --disable-orc \
     --disable-schroedinger \
     --disable-libmpeg2 \
@@ -215,12 +243,13 @@ fi
     --enable-ass \
     --disable-fontconfig \
     --disable-gpg-error \
-    --disable-gcrypt \
     --disable-lua \
-    --disable-taglib > ${out}
+    --enable-vpx \
+    --enable-taglib > ${out}
 
 echo "EXTRA_CFLAGS += ${EXTRA_CFLAGS}" >> config.mak
 echo "EXTRA_LDFLAGS += ${EXTRA_LDFLAGS}" >> config.mak
+make fetch
 make
 spopd
 
@@ -246,6 +275,18 @@ spushd ${BUILDDIR}
 
 info ">> --prefix=${PREFIX} --host=${TARGET}"
 
+if [ "$DEBUG" = "yes" ]; then
+    DEBUGFLAG="--enable-debug"
+else
+    DEBUGFLAG="--disable-debug"
+fi
+
+if [ "$SCARY" = "yes" ]; then
+       SCARYFLAG="--enable-dvbpsi --enable-avcodec"
+else
+       SCARYFLAG="--disable-dca --disable-dvbpsi --disable-avcodec --disable-avformat --disable-zvbi --enable-vpx"
+fi
+
 # Run configure only upon changes.
 if [ "${VLCROOT}/configure" -nt config.log -o \
      "${THIS_SCRIPT_PATH}" -nt config.log ]; then
@@ -253,22 +294,18 @@ ${VLCROOT}/configure \
     --prefix="${PREFIX}" \
     --host="${TARGET}" \
     --with-contrib="${VLCROOT}/contrib/${TARGET}-${ARCH}" \
-    --disable-debug \
     --enable-static \
+    ${DEBUGFLAG} \
+    ${SCARYFLAG} \
     --disable-macosx \
-    --disable-macosx-vout \
     --disable-macosx-dialog-provider \
     --disable-macosx-qtkit \
     --disable-macosx-eyetv \
     --disable-macosx-vlc-app \
     --disable-macosx-avfoundation \
-    --enable-audioqueue \
-    --enable-ios-audio \
-    --enable-ios-vout \
-    --enable-ios-vout2 \
+    --disable-audioqueue \
     --disable-shared \
     --enable-macosx-quartztext \
-    --enable-avcodec \
     --enable-mkv \
     --enable-opus \
     --disable-sout \
@@ -276,9 +313,7 @@ ${VLCROOT}/configure \
     --disable-lua \
     --disable-a52 \
     --enable-fribidi \
-    --disable-macosx-audio \
     --disable-qt --disable-skins2 \
-    --disable-libgcrypt \
     --disable-vcd \
     --disable-vlc \
     --disable-vlm \
@@ -290,7 +325,6 @@ ${VLCROOT}/configure \
     --disable-notify \
     --enable-live555 \
     --enable-realrtsp \
-    --enable-dvbpsi \
     --enable-swscale \
     --disable-projectm \
     --enable-libass \
@@ -303,7 +337,7 @@ ${VLCROOT}/configure \
     --disable-libva \
     --disable-gme \
     --disable-tremor \
-    --disable-vorbis \
+    --enable-vorbis \
     --disable-fluidsynth \
     --disable-jack \
     --disable-pulse \
@@ -314,8 +348,9 @@ ${VLCROOT}/configure \
     --enable-flac \
     --disable-screen \
     --enable-freetype \
-    --disable-taglib \
+    --enable-taglib \
     --disable-mmx \
+    --disable-addonmanagermodules \
     --disable-mad > ${out} # MMX and SSE support requires llvm which is broken on Simulator
 fi
 
@@ -342,7 +377,6 @@ oldrc
 real
 hotkeys
 gestures
-sap
 dynamicoverlay
 rss
 ball
@@ -399,8 +433,37 @@ colorthres
 antiflicker
 anaglyph
 remap
+oldmovie
+vhs
+demuxdump
+fingerprinter
 "
 
+if [ "$SCARY" = "no" ]; then
+blacklist="${blacklist}
+dts
+dvbsub
+svcd
+hevc
+packetizer_mlp
+a52
+vc1
+uleaddvaudio
+librar
+libvoc
+avio
+chorus_flanger
+smooth
+cvdsub
+libmod
+libdash
+libmpgv
+dolby_surround
+mpeg_audio"
+fi
+
+echo ${blacklist}
+
 for i in ${blacklist}
 do
     find ${PREFIX}/lib/vlc/plugins -name *$i* -type f -exec rm '{}' \;