You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
472 lines
9.6 KiB
472 lines
9.6 KiB
#!/bin/sh
|
|
set -e
|
|
|
|
PLATFORM=OS
|
|
VERBOSE=no
|
|
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] [-d] [-v] [-k sdk]
|
|
|
|
OPTIONS
|
|
-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
|
|
}
|
|
|
|
spushd()
|
|
{
|
|
pushd "$1" 2>&1> /dev/null
|
|
}
|
|
|
|
spopd()
|
|
{
|
|
popd 2>&1> /dev/null
|
|
}
|
|
|
|
info()
|
|
{
|
|
local blue="\033[1;34m"
|
|
local normal="\033[0m"
|
|
echo "[${blue}info${normal}] $1"
|
|
}
|
|
|
|
while getopts "hvwdsk:a:" OPTION
|
|
do
|
|
case $OPTION in
|
|
h)
|
|
usage
|
|
exit 1
|
|
;;
|
|
v)
|
|
VERBOSE=yes
|
|
;;
|
|
s)
|
|
PLATFORM=Simulator
|
|
;;
|
|
d)
|
|
DEBUG=yes
|
|
;;
|
|
w)
|
|
SCARY=no
|
|
;;
|
|
k)
|
|
SDK_VERSION=$OPTARG
|
|
;;
|
|
a)
|
|
ARCH=$OPTARG
|
|
;;
|
|
?)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
shift $(($OPTIND - 1))
|
|
|
|
if [ "x$1" != "x" ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
out="/dev/null"
|
|
if [ "$VERBOSE" = "yes" ]; then
|
|
out="/dev/stdout"
|
|
fi
|
|
|
|
info "Building libvlc for iOS"
|
|
|
|
if [ "$PLATFORM" = "Simulator" ]; then
|
|
TARGET="${ARCH}-apple-darwin11"
|
|
else
|
|
TARGET="arm-apple-darwin11"
|
|
fi
|
|
|
|
if [ "$DEBUG" = "yes" ]; then
|
|
OPTIM="-O0 -g"
|
|
else
|
|
OPTIM="-O3 -g"
|
|
fi
|
|
|
|
info "Using ${ARCH} with SDK version ${SDK_VERSION}"
|
|
|
|
THIS_SCRIPT_PATH=`pwd`/$0
|
|
|
|
spushd `dirname ${THIS_SCRIPT_PATH}`/../../..
|
|
VLCROOT=`pwd` # Let's make sure VLCROOT is an absolute path
|
|
spopd
|
|
|
|
if test -z "$SDKROOT"
|
|
then
|
|
SDKROOT=`xcode-select -print-path`/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}${SDK_VERSION}.sdk
|
|
echo "SDKROOT not specified, assuming $SDKROOT"
|
|
fi
|
|
|
|
if [ ! -d "${SDKROOT}" ]
|
|
then
|
|
echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
|
|
exit 1
|
|
fi
|
|
|
|
BUILDDIR="${VLCROOT}/build-ios-${PLATFORM}/${ARCH}"
|
|
|
|
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"
|
|
|
|
info "Building tools"
|
|
spushd "${VLCROOT}/extras/tools"
|
|
./bootstrap
|
|
make && make .gas
|
|
spopd
|
|
|
|
info "Building contrib for iOS in '${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}'"
|
|
|
|
# The contrib will read the following
|
|
export AR="xcrun ar"
|
|
|
|
export RANLIB="xcrun ranlib"
|
|
export CC="xcrun clang"
|
|
export OBJC="xcrun clang"
|
|
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}"
|
|
|
|
if [ "$PLATFORM" = "OS" ]; then
|
|
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="${CFLAGS} -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
fi
|
|
|
|
export CXXFLAGS="${CFLAGS} -stdlib=libstdc++"
|
|
|
|
export CPPFLAGS="${CFLAGS}"
|
|
|
|
export CPP="xcrun cc -E"
|
|
export CXXCPP="xcrun c++ -E"
|
|
|
|
export BUILDFORIOS="yes"
|
|
|
|
if [ "$PLATFORM" = "Simulator" ]; then
|
|
# Use the new ABI on simulator, else we can't build
|
|
export OBJCFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch ${OBJCFLAGS}"
|
|
fi
|
|
|
|
export LDFLAGS="-L${SDKROOT}/usr/lib -arch ${ARCH} -isysroot ${SDKROOT}"
|
|
|
|
if [ "$PLATFORM" = "OS" ]; then
|
|
EXTRA_CFLAGS="-arch ${ARCH}"
|
|
if [ "$ARCH" != "arm64" ]; then
|
|
EXTRA_CFLAGS+=" -mcpu=cortex-a8"
|
|
EXTRA_CFLAGS+=" -miphoneos-version-min=${SDK_MIN}"
|
|
EXTRA_LDFLAGS+=" -miphoneos-version-min=${SDK_MIN}"
|
|
export LDFLAGS="${LDFLAGS} -miphoneos-version-min=${SDK_MIN}"
|
|
else
|
|
EXTRA_CFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
EXTRA_LDFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
export LDFLAGS="${LDFLAGS} -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
fi
|
|
EXTRA_LDFLAGS="-arch ${ARCH}"
|
|
else
|
|
EXTRA_CFLAGS="-arch ${ARCH}"
|
|
EXTRA_LDFLAGS="-arch ${ARCH}"
|
|
EXTRA_CFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
EXTRA_LDFLAGS+=" -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
export LDFLAGS="${LDFLAGS} -miphoneos-version-min=${SIXTYFOURBIT_SDK_MIN}"
|
|
fi
|
|
|
|
|
|
info "LD FLAGS SELECTED = '${LDFLAGS}'"
|
|
|
|
spushd ${VLCROOT}/contrib
|
|
|
|
echo ${VLCROOT}
|
|
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}"
|
|
if [ "$ARCH" = "arm64" ]; then
|
|
export GASPP_FIX_XCODE5=1
|
|
fi
|
|
else
|
|
export ASCPP="xcrun as"
|
|
fi
|
|
|
|
../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 \
|
|
--enable-zvbi \
|
|
--disable-kate \
|
|
--disable-caca \
|
|
--disable-gettext \
|
|
--disable-mpcdec \
|
|
--disable-upnp \
|
|
--disable-gme \
|
|
--disable-tremor \
|
|
--enable-vorbis \
|
|
--disable-sidplay2 \
|
|
--disable-samplerate \
|
|
--disable-goom \
|
|
--disable-vncserver \
|
|
--disable-orc \
|
|
--disable-schroedinger \
|
|
--disable-libmpeg2 \
|
|
--disable-chromaprint \
|
|
--disable-mad \
|
|
--enable-fribidi \
|
|
--enable-libxml2 \
|
|
--enable-freetype2 \
|
|
--enable-ass \
|
|
--disable-fontconfig \
|
|
--disable-gpg-error \
|
|
--disable-lua \
|
|
--enable-taglib > ${out}
|
|
|
|
echo "EXTRA_CFLAGS += ${EXTRA_CFLAGS}" >> config.mak
|
|
echo "EXTRA_LDFLAGS += ${EXTRA_LDFLAGS}" >> config.mak
|
|
make fetch
|
|
make
|
|
spopd
|
|
|
|
info "Bootstraping vlc"
|
|
pwd
|
|
info "VLCROOT = ${VLCROOT}"
|
|
if ! [ -e ${VLCROOT}/configure ]; then
|
|
${VLCROOT}/bootstrap > ${out}
|
|
fi
|
|
|
|
info "Bootstraping vlc finished"
|
|
|
|
if [ ".$PLATFORM" != ".Simulator" ]; then
|
|
# FIXME - Do we still need this?
|
|
export AVCODEC_CFLAGS="-I${PREFIX}/include "
|
|
export AVCODEC_LIBS="-L${PREFIX}/lib -lavcodec -lavutil -lz"
|
|
export AVFORMAT_CFLAGS="-I${PREFIX}/include"
|
|
export AVFORMAT_LIBS="-L${PREFIX}/lib -lavcodec -lz -lavutil -lavformat"
|
|
fi
|
|
|
|
mkdir -p ${BUILDDIR}
|
|
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"
|
|
fi
|
|
|
|
# Run configure only upon changes.
|
|
if [ "${VLCROOT}/configure" -nt config.log -o \
|
|
"${THIS_SCRIPT_PATH}" -nt config.log ]; then
|
|
${VLCROOT}/configure \
|
|
--prefix="${PREFIX}" \
|
|
--host="${TARGET}" \
|
|
--with-contrib="${VLCROOT}/contrib/${TARGET}-${ARCH}" \
|
|
--enable-static \
|
|
${DEBUGFLAG} \
|
|
${SCARYFLAG} \
|
|
--disable-macosx \
|
|
--disable-macosx-dialog-provider \
|
|
--disable-macosx-qtkit \
|
|
--disable-macosx-eyetv \
|
|
--disable-macosx-vlc-app \
|
|
--disable-macosx-avfoundation \
|
|
--disable-audioqueue \
|
|
--disable-shared \
|
|
--enable-macosx-quartztext \
|
|
--enable-mkv \
|
|
--enable-opus \
|
|
--disable-sout \
|
|
--disable-faad \
|
|
--disable-lua \
|
|
--disable-a52 \
|
|
--enable-fribidi \
|
|
--disable-qt --disable-skins2 \
|
|
--disable-vcd \
|
|
--disable-vlc \
|
|
--disable-vlm \
|
|
--disable-httpd \
|
|
--disable-nls \
|
|
--disable-glx \
|
|
--disable-sse \
|
|
--enable-neon \
|
|
--disable-notify \
|
|
--enable-live555 \
|
|
--enable-realrtsp \
|
|
--enable-swscale \
|
|
--disable-projectm \
|
|
--enable-libass \
|
|
--enable-libxml2 \
|
|
--disable-goom \
|
|
--disable-dvdread \
|
|
--disable-dvdnav \
|
|
--disable-bluray \
|
|
--disable-linsys \
|
|
--disable-libva \
|
|
--disable-gme \
|
|
--disable-tremor \
|
|
--enable-vorbis \
|
|
--disable-fluidsynth \
|
|
--disable-jack \
|
|
--disable-pulse \
|
|
--disable-mtp \
|
|
--enable-ogg \
|
|
--enable-speex \
|
|
--enable-theora \
|
|
--enable-flac \
|
|
--disable-screen \
|
|
--enable-freetype \
|
|
--enable-taglib \
|
|
--disable-mmx \
|
|
--disable-addonmanagermodules \
|
|
--disable-mad > ${out} # MMX and SSE support requires llvm which is broken on Simulator
|
|
fi
|
|
|
|
CORE_COUNT=`sysctl -n machdep.cpu.core_count`
|
|
let MAKE_JOBS=$CORE_COUNT+1
|
|
|
|
info "Building libvlc"
|
|
make -j$MAKE_JOBS > ${out}
|
|
|
|
info "Installing libvlc"
|
|
make install > ${out}
|
|
|
|
find ${PREFIX}/lib/vlc/plugins -name *.a -type f -exec cp '{}' ${PREFIX}/lib/vlc/plugins \;
|
|
rm -rf "${PREFIX}/contribs"
|
|
cp -R "${VLCROOT}/contrib/${TARGET}-${ARCH}" "${PREFIX}/contribs"
|
|
|
|
info "Removing unneeded modules"
|
|
blacklist="
|
|
stats
|
|
access_bd
|
|
shm
|
|
access_imem
|
|
oldrc
|
|
real
|
|
hotkeys
|
|
gestures
|
|
dynamicoverlay
|
|
rss
|
|
ball
|
|
marq
|
|
magnify
|
|
audiobargraph_
|
|
clone
|
|
mosaic
|
|
osdmenu
|
|
puzzle
|
|
mediadirs
|
|
t140
|
|
ripple
|
|
motion
|
|
sharpen
|
|
grain
|
|
posterize
|
|
mirror
|
|
wall
|
|
scene
|
|
blendbench
|
|
psychedelic
|
|
alphamask
|
|
netsync
|
|
audioscrobbler
|
|
motiondetect
|
|
motionblur
|
|
export
|
|
smf
|
|
podcast
|
|
bluescreen
|
|
erase
|
|
stream_filter_record
|
|
speex_resampler
|
|
remoteosd
|
|
magnify
|
|
gradient
|
|
tospdif
|
|
dtstofloat32
|
|
logger
|
|
visual
|
|
fb
|
|
aout_file
|
|
dummy
|
|
invert
|
|
sepia
|
|
wave
|
|
hqdn3d
|
|
headphone_channel_mixer
|
|
gaussianblur
|
|
gradfun
|
|
extract
|
|
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 '{}' \;
|
|
done
|
|
|
|
popd
|
|
|