代码拉取完成,页面将自动刷新
#!/bin/sh
# Copyright (C) Pierre d'Herbemont, 2010
# Copyright (C) Felix Paul Kühne, 2012-2019
set -e
BUILD_DEVICE=yes
BUILD_SIMULATOR=yes
BUILD_STATIC_FRAMEWORK=no
BUILD_DYNAMIC_FRAMEWORK=no
SDK_VERSION=`xcrun --sdk iphoneos --show-sdk-version`
SDK_MIN=9.0
VERBOSE=no
DEBUG=no
CONFIGURATION="Release"
NONETWORK=no
SKIPLIBVLCCOMPILATION=no
SCARY=yes
TVOS=no
MACOS=no
IOS=yes
BITCODE=no
OSVERSIONMINCFLAG=iphoneos
OSVERSIONMINLDFLAG=ios
ROOT_DIR=empty
FARCH="all"
TESTEDHASH="9db9c1121" # libvlc hash that this version of VLCKit is build on
if [ -z "$MAKE_JOBS" ]; then
CORE_COUNT=`sysctl -n machdep.cpu.core_count`
let MAKE_JOBS=$CORE_COUNT+1
fi
usage()
{
cat << EOF
usage: $0 [-s] [-v] [-k sdk]
OPTIONS
-k Specify which sdk to use (see 'xcodebuild -showsdks', current: ${SDK})
-v Be more verbose
-s Build for simulator
-f Build framework for device and simulator
-d Enable Debug
-n Skip script steps requiring network interaction
-l Skip libvlc compilation
-t Build for tvOS
-x Build for macOS / Mac OS X
-w Build a limited stack of non-scary libraries only
-y Build universal static libraries
-b Enable bitcode
-a Build framework for specific arch (all|i386|x86_64|armv7|armv7s|aarch64)
-e External VLC source path
EOF
}
get_actual_arch() {
if [ "$1" = "aarch64" ]; then
echo "arm64"
else
echo "$1"
fi
}
get_arch() {
if [ "$1" = "arm64" ]; then
echo "aarch64"
else
echo "$1"
fi
}
is_simulator_arch() {
if [ "$1" = "i386" -o "$1" = "x86_64" ];then
return 0
else
return 1
fi
}
spushd()
{
pushd "$1" 2>&1> /dev/null
}
spopd()
{
popd 2>&1> /dev/null
}
info()
{
local green="\033[1;32m"
local normal="\033[0m"
echo "[${green}info${normal}] $1"
}
cleantheenvironment()
{
export AS=""
export CCAS=""
export ASCPP=""
export CC=""
export CFLAGS=""
export CPPFLAGS=""
export CXX=""
export CXXFLAGS=""
export CXXCPPFLAGS=""
export OBJC=""
export OBJCFLAGS=""
export LD=""
export LDFLAGS=""
export STRIP=""
export PKG_CONFIG_PATH=""
}
buildxcodeproj()
{
cleantheenvironment
local target="$2"
local PLATFORM="$3"
info "Building $1 ($target, ${CONFIGURATION}, $PLATFORM)"
local architectures=""
if [ "$FARCH" = "all" ];then
if [ "$TVOS" = "yes" ]; then
if [ "$PLATFORM" = "appletvsimulator" ]; then
architectures="x86_64"
else
architectures="arm64"
fi
fi
if [ "$IOS" = "yes" ]; then
if [ "$PLATFORM" = "iphonesimulator" ]; then
architectures="i386 x86_64"
else
architectures="armv7 armv7s arm64"
fi
fi
else
architectures=`get_actual_arch $FARCH`
fi
local bitcodeflag=""
if [ "$BITCODE" = "yes" ]; then
bitcodeflag="BITCODE_GENERATION_MODE=bitcode"
fi
local defs="$GCC_PREPROCESSOR_DEFINITIONS"
if [ "$SCARY" = "no" ]; then
defs="$defs NOSCARYCODECS"
fi
xcodebuild -project "$1.xcodeproj" \
-target "$target" \
-sdk $PLATFORM$SDK \
-configuration ${CONFIGURATION} \
ARCHS="${architectures}" \
IPHONEOS_DEPLOYMENT_TARGET=${SDK_MIN} \
GCC_PREPROCESSOR_DEFINITIONS="$defs" \
${bitcodeflag} \
> ${out}
}
buildLibVLC() {
ARCH="$1"
PLATFORM="$2"
OSSTYLE=iPhone
if [ "$DEBUG" = "yes" ]; then
OPTIM="-O0"
else
OPTIM="-O3"
fi
if [ "$TVOS" = "yes" ]; then
OSSTYLE=AppleTV
fi
if [ "$MACOS" = "yes" ]; then
OSSTYLE=MacOSX
PLATFORM=
fi
ACTUAL_ARCH=`get_actual_arch $ARCH`
info "Compiling ${ARCH} with SDK version ${SDK_VERSION}, platform ${PLATFORM}"
SDKROOT=`xcode-select -print-path`/Platforms/${OSSTYLE}${PLATFORM}.platform/Developer/SDKs/${OSSTYLE}${PLATFORM}${SDK_VERSION}.sdk
if [ ! -d "${SDKROOT}" ]
then
echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
exit 1
fi
BUILDDIR="${VLCROOT}/build-${OSSTYLE}${PLATFORM}/${ACTUAL_ARCH}"
PREFIX="${VLCROOT}/install-${OSSTYLE}${PLATFORM}/${ACTUAL_ARCH}"
TARGET="${ARCH}-apple-darwin14"
# partially clean the environment
export CFLAGS=""
export CPPFLAGS=""
export CXXFLAGS=""
export OBJCFLAGS=""
export LDFLAGS=""
export EXTRA_LDFLAGS=""
export EXTRA_CFLAGS=""
export PLATFORM=$PLATFORM
export SDK_VERSION=$SDK_VERSION
export VLCSDKROOT=$SDKROOT
OBJCFLAGS="${OPTIM}"
CFLAGS="-isysroot ${SDKROOT} -arch ${ACTUAL_ARCH} ${OPTIM}"
EXTRA_CFLAGS="-arch ${ACTUAL_ARCH}"
LDFLAGS="-arch ${ACTUAL_ARCH}"
EXTRA_LDFLAGS="-arch ${ACTUAL_ARCH}"
SDKNAME_CFLAGS=${OSVERSIONMINCFLAG}
SDKNAME_LDFLAGS=${OSVERSIONMINLDFLAG}
if [ "$PLATFORM" = "Simulator" ]; then
SDKNAME_LDFLAGS+="_simulator"
fi
CFLAGS+=" -m${SDKNAME_CFLAGS}-version-min=${SDK_MIN}"
EXTRA_CFLAGS+=" -m${SDKNAME_CFLAGS}-version-min=${SDK_MIN}"
LDFLAGS+=" -Wl,-${SDKNAME_LDFLAGS}_version_min,${SDK_MIN}"
EXTRA_LDFLAGS+=" -Wl,-${SDKNAME_LDFLAGS}_version_min,${SDK_MIN}"
if [ "$PLATFORM" = "OS" ]; then
if [ "$ARCH" != "aarch64" ]; then
CFLAGS+=" -mcpu=cortex-a8"
EXTRA_CFLAGS+=" -mcpu=cortex-a8"
fi
else # Simulator platform
LDFLAGS+=" -v"
# Use the new ABI on simulator, else we can't build
OBJCFLAGS+=" -fobjc-abi-version=2 -fobjc-legacy-dispatch"
fi
if [ "$BITCODE" = "yes" ]; then
CFLAGS+=" -fembed-bitcode"
fi
export CFLAGS="${CFLAGS}"
export CXXFLAGS="${CFLAGS}"
export CPPFLAGS="${CFLAGS}"
export OBJCFLAGS="${OBJCFLAGS}"
export LDFLAGS="${LDFLAGS}"
fetch_python3_path
export PATH="${PYTHON3_PATH}:${VLCROOT}/extras/tools/build/bin:${VLCROOT}/contrib/${TARGET}/bin:/usr/bin:/bin:/usr/sbin:/sbin"
spushd ${VLCROOT}/contrib
info "Compiling third-party libraries"
mkdir -p "${VLCROOT}/contrib/${OSSTYLE}${PLATFORM}-${ARCH}"
cd "${VLCROOT}/contrib/${OSSTYLE}${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" = "aarch64" ]; then
export GASPP_FIX_XCODE5=1
fi
else
export ASCPP="xcrun as"
fi
if [ "$TVOS" = "yes" ]; then
CUSTOMOSOPTIONS="--disable-libarchive"
fi
if [ "$MACOS" = "yes" ]; then
CUSTOMOSOPTIONS="--disable-fontconfig --disable-bghudappkit --disable-twolame --disable-microdns --disable-SDL --disable-SDL_image --disable-cddb --disable-bluray"
fi
if [ "$IOS" = "yes" ]; then
CUSTOMOSOPTIONS=""
fi
if [ "${TARGET}" = "x86_64-apple-darwin14" ];then
BUILD=""
else
BUILD="--build=x86_64-apple-darwin14"
fi
if [ "$MACOS" = "yes" ]; then
# The following symbols do not exist on the minimal macOS version (10.7), so they are disabled
# here. This allows compilation also with newer macOS SDKs.
# Added in 10.15
export ac_cv_func_aligned_alloc=no
export ac_cv_func_timespec_get=no
# Added in 10.14
export ac_cv_func_thread_get_register_pointer_values=no
# Added symbols in 10.13
export ac_cv_func_open_wmemstream=no
export ac_cv_func_fmemopen=no
export ac_cv_func_open_memstream=no
export ac_cv_func_futimens=no
export ac_cv_func_utimensat=no
# Added symbols between 10.11 and 10.12
export ac_cv_func_basename_r=no
export ac_cv_func_clock_getres=no
export ac_cv_func_clock_gettime=no
export ac_cv_func_clock_settime=no
export ac_cv_func_dirname_r=no
export ac_cv_func_getentropy=no
export ac_cv_func_mkostemp=no
export ac_cv_func_mkostemps=no
# Added symbols between 10.7 and 10.11
export ac_cv_func_ffsll=no
export ac_cv_func_flsll=no
export ac_cv_func_fdopendir=no
export ac_cv_func_openat=no
export ac_cv_func_fstatat=no
export ac_cv_func_readlinkat=no
else
# The following symbols do not exist on the minimal iOS version (7.0), so they are disabled
# here. This allows compilation also with newer iOS SDKs
# Added symbols in iOS 13 / tvOS 13
export ac_cv_func_aligned_alloc=no
export ac_cv_func_timespec_get=no
# Added symbols between 7.x and 10.x
export ac_cv_func_basename_r=no
export ac_cv_func_clock_getres=no
export ac_cv_func_clock_gettime=no
export ac_cv_func_clock_settime=no
export ac_cv_func_dirname_r=no
export ac_cv_func_getentropy=no
export ac_cv_func_mkostemp=no
export ac_cv_func_mkostemps=no
export ac_cv_func_open_memstream=no
export ac_cv_func_futimens=no
fi
export USE_FFMPEG=1
../bootstrap ${BUILD} --host=${TARGET} --prefix=${VLCROOT}/contrib/${OSSTYLE}-${TARGET}-${ARCH} --disable-gpl \
--enable-ad-clauses \
--disable-disc \
--disable-sdl \
--disable-SDL_image \
--disable-iconv \
--enable-zvbi \
--disable-kate \
--disable-caca \
--disable-gettext \
--disable-mpcdec \
--disable-upnp \
--disable-gme \
--disable-srt \
--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-vncclient \
--disable-gnutls \
--disable-lua \
--disable-luac \
--disable-aribb24 \
--disable-aribb25 \
--enable-vpx \
--enable-libplacebo \
--disable-sparkle \
--disable-growl \
--disable-breakpad \
--disable-ncurses \
--disable-asdcplib \
--enable-soxr \
--disable-aom \
--enable-dav1d \
--disable-sqlite \
--disable-medialibrary \
--disable-libdsm \
${CUSTOMOSOPTIONS} \
--enable-taglib > ${out}
make fetch -j$MAKE_JOBS
make -j$MAKE_JOBS > ${out}
spopd # ${VLCROOT}/contrib
if ! [ -e ${VLCROOT}/configure ]; then
info "Bootstraping vlc"
${VLCROOT}/bootstrap > ${out}
fi
mkdir -p ${BUILDDIR}
spushd ${BUILDDIR}
if [ "$DEBUG" = "yes" ]; then
DEBUGFLAG="--enable-debug"
else
export CFLAGS="${CFLAGS} -DNDEBUG"
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
if [ "$TVOS" != "yes" -a \( "$ARCH" = "armv7" -o "$ARCH" = "armv7s" \) ];then
export ac_cv_arm_neon=yes
else
export ac_cv_arm_neon=no
fi
# Available but not authorized
export ac_cv_func_daemon=no
export ac_cv_func_fork=no
if [ "${VLCROOT}/configure" -nt config.log -o \
"${THIS_SCRIPT_PATH}" -nt config.log ]; then
info "Configuring vlc"
${VLCROOT}/configure \
--prefix="${PREFIX}" \
--host="${TARGET}" \
--with-contrib="${VLCROOT}/contrib/${OSSTYLE}-${TARGET}-${ARCH}" \
--enable-static \
${DEBUGFLAG} \
${SCARYFLAG} \
--disable-macosx \
--disable-macosx-avfoundation \
--disable-shared \
--enable-opus \
--disable-faad \
--disable-lua \
--disable-a52 \
--enable-fribidi \
--disable-qt --disable-skins2 \
--disable-vcd \
--disable-vlc \
--disable-vlm \
--disable-nls \
--disable-sse \
--disable-notify \
--enable-live555 \
--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-sparkle \
--disable-addonmanagermodules \
--disable-libplacebo \
--disable-mad > ${out}
fi
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/${OSSTYLE}-${TARGET}-${ARCH}" "${PREFIX}/contribs"
info "Removing unneeded modules"
blacklist="
stats
access_bd
shm
access_imem
oldrc
real
hotkeys
gestures
dynamicoverlay
rss
ball
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
visual
fb
aout_file
invert
sepia
wave
hqdn3d
headphone_channel_mixer
gaussianblur
gradfun
extract
colorthres
antiflicker
anaglyph
remap
oldmovie
vhs
demuxdump
fingerprinter
output_udp
output_livehttp
"
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
mpegaudio"
fi
echo ${blacklist}
for i in ${blacklist}
do
find ${PREFIX}/lib/vlc/plugins -name *$i* -type f -exec rm '{}' \;
done
spopd
}
buildMobileKit() {
PLATFORM="$1"
cleantheenvironment
if [ "$SKIPLIBVLCCOMPILATION" != "yes" ]; then
if [ "$TVOS" = "yes" ]; then
# this variable is read by libvlc's contrib build script
# to create the required build environment
# for historical raisons, tvOS is a special flavor of iOS
# so we need to export both variables
export BUILDFORIOS="yes"
export BUILDFORTVOS="yes"
info "Building libvlc for tvOS"
fi
if [ "$MACOS" = "yes" ]; then
# macOS is the default build environment for libvlc's contrib
# build scripts, so we don't need to export anything
info "Building libvlc for macOS"
fi
if [ "$IOS" = "yes" ]; then
# this variable is read by libvlc's contrib build script
# to create the required build environment
export BUILDFORIOS="yes"
info "Building libvlc for iOS"
fi
export AR=`xcrun -f ar`
export RANLIB=`xcrun -f ranlib`
export CC=`xcrun -f clang`
export OBJC=`xcrun -f clang`
export CXX=`xcrun -f clang++`
export LD=`xcrun -f ld`
export STRIP=`xcrun -f strip`
export CPPFLAGS=-E
export CXXCPPFLAGS=-E
unset AS
unset CCAS
if [ "$FARCH" = "all" ];then
if [ "$TVOS" = "yes" ]; then
if [ "$PLATFORM" = "iphonesimulator" ]; then
buildLibVLC "x86_64" "Simulator"
else
buildLibVLC "aarch64" "OS"
fi
fi
if [ "$MACOS" = "yes" ]; then
buildLibVLC "x86_64" "OS"
fi
if [ "$IOS" = "yes" ]; then
if [ "$PLATFORM" = "iphonesimulator" ]; then
buildLibVLC "i386" "Simulator"
buildLibVLC "x86_64" "Simulator"
else
buildLibVLC "armv7" "OS"
buildLibVLC "armv7s" "OS"
buildLibVLC "aarch64" "OS"
fi
fi
else
if [ "$FARCH" != "x86_64" -a "$FARCH" != "aarch64" -a "$FARCH" != "i386" \
-a "$FARCH" != "armv7" -a "$FARCH" != "armv7s" ];then
echo "*** Framework ARCH: ${FARCH} is invalid ***"
exit 1
fi
local buildPlatform=""
if [ "$PLATFORM" = "iphonesimulator" ]; then
if [ "$FARCH" == "x86_64" -o "$FARCH" == "i386" ];then
buildPlatform="Simulator"
fi
else
if [ "$FARCH" == "armv7" -o "$FARCH" == "armv7s" -o "$FARCH" == "aarch64" ];then
buildPlatform="OS"
fi
fi
if [ ! -z "$buildPlatform" ];then
buildLibVLC $FARCH $buildPlatform
fi
fi
fi
}
doVLCLipo() {
FILEPATH="$1"
FILE="$2"
PLUGIN="$3"
OSSTYLE="$4"
files=""
info "...$FILEPATH$FILE"
for i in $DEVICEARCHS
do
actual_arch=`get_actual_arch $i`
files="install-"$OSSTYLE"OS/$actual_arch/lib/$FILEPATH$FILE $files"
done
for i in $SIMULATORARCHS
do
actual_arch=`get_actual_arch $i`
files="install-"$OSSTYLE"Simulator/$actual_arch/lib/$FILEPATH$FILE $files"
done
if [ "$PLUGIN" != "no" ]; then
lipo $files -create -output install-$OSSTYLE/plugins/$FILE
else
lipo $files -create -output install-$OSSTYLE/core/$FILE
fi
}
doContribLipo() {
LIBNAME="$1"
OSSTYLE="$2"
files=""
info "...$LIBNAME"
for i in $DEVICEARCHS $SIMULATORARCHS
do
files="contrib/$OSSTYLE-$i-apple-darwin14-$i/lib/$LIBNAME $files"
done
lipo $files -create -output install-$OSSTYLE/contrib/$LIBNAME
}
get_symbol()
{
echo "$1" | grep vlc_entry_$2|cut -d" " -f 3|sed 's/_vlc/vlc/'
}
build_universal_static_lib() {
PROJECT_DIR=`pwd`
OSSTYLE="$1"
info "building universal static libs for OS style $OSSTYLE"
# remove old module list
rm -f $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.h
rm -f $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.xcconfig
touch $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.h
touch $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.xcconfig
if [ "$OSSTYLE" != "MacOSX" ]; then
spushd ${VLCROOT}
rm -rf install-$OSSTYLE
mkdir install-$OSSTYLE
mkdir install-$OSSTYLE/core
mkdir install-$OSSTYLE/contrib
mkdir install-$OSSTYLE/plugins
spopd # vlc
else
spushd ${VLCROOT}/install-$OSSTYLE
rm -rf core
rm -rf contrib
rm -rf plugins
ln -s x86_64/lib core
ln -s x86_64/contribs/lib contrib
ln -s x86_64/lib/vlc/plugins plugins
spopd # vlc
fi
VLCMODULES=""
VLCNEONMODULES=""
SIMULATORARCHS=""
CONTRIBLIBS=""
DEVICEARCHS=""
# arm64 got the lowest number of modules
arch="aarch64"
if [ "$FARCH" != "all" ];then
arch="$FARCH"
elif [ "$BUILD_SIMULATOR" = "yes" ]; then
arch="x86_64"
fi
actual_arch=`get_actual_arch $arch`
if [ -d ${VLCROOT}/install-"$OSSTYLE"OS ];then
spushd ${VLCROOT}/install-"$OSSTYLE"OS
for i in `ls .`
do
local iarch="`get_arch $i`"
if [ "$FARCH" == "all" -o "$FARCH" = "$iarch" ];then
DEVICEARCHS="$DEVICEARCHS $iarch"
fi
done
if (! is_simulator_arch $arch);then
echo "IPHONE OS: $arch"
spushd $actual_arch/lib/vlc/plugins
for i in `ls *.a`
do
VLCMODULES="$i $VLCMODULES"
done
spopd # $actual_arch/lib/vlc/plugins
fi
if [ "$OSSTYLE" != "AppleTV" -a \
\( "$FARCH" = "all" -o "$FARCH" = "armv7" -o "$FARCH" = "armv7s" \) ]; then
# collect ARMv7/s specific neon modules
if [ "$FARCH" = "all" ];then
spushd armv7/lib/vlc/plugins
else
spushd $FARCH/lib/vlc/plugins
fi
for i in `ls *.a | grep neon`
do
VLCNEONMODULES="$i $VLCNEONMODULES"
done
spopd # armv7/lib/vlc/plugins
fi
spopd # vlc-install-"$OSSTYLE"OS
fi
if [ -d ${VLCROOT}/install-"$OSSTYLE"Simulator ];then
spushd ${VLCROOT}/install-"$OSSTYLE"Simulator
for i in `ls .`
do
local iarch="`get_arch $i`"
if [ "$FARCH" == "all" -o "$FARCH" = "$iarch" ];then
SIMULATORARCHS="$SIMULATORARCHS $iarch"
fi
done
if (is_simulator_arch $arch);then
echo "SIMU OS: $arch"
spushd $arch/lib/vlc/plugins
for i in `ls *.a`
do
VLCMODULES="$i $VLCMODULES"
done
spopd # $iarch/lib/vlc/plugins
fi
spopd # vlc-install-"$OSSTYLE"Simulator
fi
if [ "$OSSTYLE" = "MacOSX" ]; then
if [ -d ${VLCROOT}/install-"$OSSTYLE" ];then
spushd ${VLCROOT}/install-"$OSSTYLE"
echo `pwd`
echo "macOS: $arch"
spushd $arch/lib/vlc/plugins
for i in `ls *.a`
do
VLCMODULES="$i $VLCMODULES"
done
spopd # $actual_arch/lib/vlc/plugins
spopd # vlc-install-"$OSSTYLE"
fi
fi
spushd ${VLCROOT}
# collect contrib libraries
spushd contrib/$OSSTYLE-$arch-apple-darwin14-$arch/lib
for i in `ls *.a`
do
CONTRIBLIBS="$i $CONTRIBLIBS"
done
spopd # contrib/$OSSTYLE-$arch-apple-darwin14-$arch/lib
# lipo all the vlc libraries and its plugins
if [ "$OSSTYLE" != "MacOSX" ]; then
doVLCLipo "" "libvlc.a" "no" $OSSTYLE
doVLCLipo "" "libvlccore.a" "no" $OSSTYLE
doVLCLipo "vlc/" "libcompat.a" "no" $OSSTYLE
for i in $VLCMODULES
do
doVLCLipo "vlc/plugins/" $i "yes" $OSSTYLE
done
# lipo contrib libraries
for i in $CONTRIBLIBS
do
doContribLipo $i $OSSTYLE
done
if [ "$OSSTYLE" != "AppleTV" ]; then
# lipo the remaining NEON plugins
DEVICEARCHS=""
for i in armv7 armv7s; do
local iarch="`get_arch $i`"
if [ "$FARCH" == "all" -o "$FARCH" = "$iarch" ];then
DEVICEARCHS="$DEVICEARCHS $iarch"
fi
done
SIMULATORARCHS=""
for i in $VLCNEONMODULES
do
doVLCLipo "vlc/plugins/" $i "yes" $OSSTYLE
done
fi
fi
# create module list
info "creating module list"
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.h
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.xcconfig
# arm64 got the lowest number of modules
BUILTINS="const void *vlc_static_modules[] = {\n"; \
LDFLAGS=""
DEFINITIONS=""
# add contrib libraries to LDFLAGS
for file in $CONTRIBLIBS
do
LDFLAGS+="${VLCROOT}/install-$OSSTYLE/contrib/$file "
done
for file in $VLCMODULES
do
symbols=$(nm -g -arch $actual_arch install-$OSSTYLE/plugins/$file)
entryname=$(get_symbol "$symbols" _)
DEFINITIONS+="int $entryname (int (*)(void *, void *, int, ...), void *);\n";
BUILTINS+=" $entryname,\n"
LDFLAGS+="${VLCROOT}/install-$OSSTYLE/plugins/$file "
info "...$entryname"
done;
# we only have ARM NEON modules for 32bit so this is limited to iOS
if [ "$OSSTYLE" = "iPhone" ]; then
BUILTINS+="#ifdef __arm__\n"
DEFINITIONS+="#ifdef __arm__\n"
for file in $VLCNEONMODULES
do
symbols=$(nm -g -arch $actual_arch install-$OSSTYLE/plugins/$file)
entryname=$(get_symbol "$symbols" _)
DEFINITIONS+="int $entryname (int (*)(void *, void *, int, ...), void *);\n";
BUILTINS+=" $entryname,\n"
LDFLAGS+="${VLCROOT}/install-$OSSTYLE/plugins/$file "
info "...$entryname"
done;
BUILTINS+="#endif\n"
DEFINITIONS+="#endif\n"
fi
BUILTINS="$BUILTINS NULL\n};\n"
echo "$DEFINITIONS\n$BUILTINS" >> $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.h
echo "VLC_PLUGINS_LDFLAGS=$LDFLAGS" >> $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.xcconfig
spopd # vlc
}
while getopts "hvwsfbdxntlk:a:e:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
v)
VERBOSE=yes
MAKE_JOBS=1
;;
s)
BUILD_DEVICE=no
BUILD_SIMULATOR=yes
BUILD_STATIC_FRAMEWORK=no
;;
f)
BUILD_DEVICE=yes
BUILD_SIMULATOR=yes
BUILD_STATIC_FRAMEWORK=yes
;;
d) CONFIGURATION="Debug"
DEBUG=yes
;;
w) SCARY="no"
;;
n)
NONETWORK=yes
;;
l)
SKIPLIBVLCCOMPILATION=yes
;;
k)
SDK=$OPTARG
;;
a)
BUILD_DEVICE=yes
BUILD_SIMULATOR=yes
BUILD_STATIC_FRAMEWORK=yes
FARCH=$OPTARG
;;
b)
BITCODE=yes
;;
t)
TVOS=yes
IOS=no
BITCODE=yes
SDK_VERSION=`xcrun --sdk appletvos --show-sdk-version`
SDK_MIN=10.2
OSVERSIONMINCFLAG=tvos
OSVERSIONMINLDFLAG=tvos
;;
x)
MACOS=yes
IOS=no
BITCODE=no
SDK_VERSION=`xcrun --sdk macosx --show-sdk-version`
SDK_MIN=10.11
OSVERSIONMINCFLAG=macosx
OSVERSIONMINLDFLAG=macosx
BUILD_DEVICE=yes
FARCH=x86_64
BUILD_DYNAMIC_FRAMEWORK=yes
BUILD_STATIC_FRAMEWORK=no
;;
e)
VLCROOT=$OPTARG
;;
?)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
out="/dev/null"
if [ "$VERBOSE" = "yes" ]; then
out="/dev/stdout"
fi
if [ "x$1" != "x" ]; then
usage
exit 1
fi
# Get root dir
spushd .
ROOT_DIR=`pwd`
spopd
if [ "$VLCROOT" = "" ]; then
VLCROOT=${ROOT_DIR}/libvlc/vlc
info "Preparing build dirs"
mkdir -p libvlc
spushd libvlc
if [ "$NONETWORK" != "yes" ]; then
if ! [ -e vlc ]; then
git clone https://git.videolan.org/git/vlc.git vlc
info "Applying patches to vlc.git"
cd vlc
git checkout -B localBranch ${TESTEDHASH}
git branch --set-upstream-to=origin/master localBranch
git am ${ROOT_DIR}/libvlc/patches/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
else
cd vlc
git fetch --all
git reset --hard ${TESTEDHASH}
git am ${ROOT_DIR}/libvlc/patches/*.patch
cd ..
fi
fi
spopd
fi
fetch_python3_path() {
PYTHON3_PATH=$(echo /Library/Frameworks/Python.framework/Versions/3.*/bin | awk '{print $1;}')
if [ ! -d "${PYTHON3_PATH}" ]; then
PYTHON3_PATH=""
fi
}
#
# Build time
#
out="/dev/null"
if [ "$VERBOSE" = "yes" ]; then
out="/dev/stdout"
fi
if [ "$SKIPLIBVLCCOMPILATION" != "yes" ]; then
info "Building tools"
fetch_python3_path
export PATH="${PYTHON3_PATH}:${VLCROOT}/extras/tools/build/bin:${VLCROOT}/contrib/${TARGET}/bin:/usr/bin:/bin:/usr/sbin:/sbin"
spushd ${VLCROOT}/extras/tools
./bootstrap
make
make .buildgas
make .buildxz
make .buildtar
make .buildmeson
make .buildninja
spopd #${VLCROOT}/extras/tools
fi
if [ "$BUILD_DEVICE" != "no" ]; then
buildMobileKit iphoneos
fi
if [ "$BUILD_SIMULATOR" != "no" ]; then
buildMobileKit iphonesimulator
fi
DEVICEARCHS=""
SIMULATORARCHS=""
if [ "$TVOS" = "yes" ]; then
build_universal_static_lib "AppleTV"
fi
if [ "$MACOS" = "yes" ]; then
build_universal_static_lib "MacOSX"
fi
if [ "$IOS" = "yes" ]; then
build_universal_static_lib "iPhone"
fi
info "all done"
if [ "$BUILD_STATIC_FRAMEWORK" != "no" ]; then
if [ "$TVOS" = "yes" ]; then
info "Building static TVVLCKit.framework"
lipo_libs=""
platform=""
if [ "$FARCH" = "all" ] || (! is_simulator_arch $FARCH);then
platform="appletvos"
buildxcodeproj MobileVLCKit "TVVLCKit" ${platform}
lipo_libs="$lipo_libs ${CONFIGURATION}-appletvos/libTVVLCKit.a"
fi
if [ "$FARCH" = "all" ] || (is_simulator_arch $arch);then
platform="appletvsimulator"
buildxcodeproj MobileVLCKit "TVVLCKit" ${platform}
lipo_libs="$lipo_libs ${CONFIGURATION}-appletvsimulator/libTVVLCKit.a"
fi
# Assumes both platforms were built currently
spushd build
rm -rf TVVLCKit.framework && \
mkdir TVVLCKit.framework && \
lipo -create ${lipo_libs} -o TVVLCKit.framework/TVVLCKit && \
chmod a+x TVVLCKit.framework/TVVLCKit && \
cp -pr ${CONFIGURATION}-${platform}/TVVLCKit TVVLCKit.framework/Headers
cp -pr ${CONFIGURATION}-${platform}/Modules TVVLCKit.framework/Modules
spopd # build
info "Build of static TVVLCKit.framework completed"
fi
if [ "$IOS" = "yes" ]; then
info "Building static MobileVLCKit.framework"
lipo_libs=""
platform=""
if [ "$FARCH" = "all" ] || (! is_simulator_arch $FARCH);then
platform="iphoneos"
buildxcodeproj MobileVLCKit "MobileVLCKit" ${platform}
lipo_libs="$lipo_libs ${CONFIGURATION}-iphoneos/libMobileVLCKit.a"
fi
if [ "$FARCH" = "all" ] || (is_simulator_arch $arch);then
platform="iphonesimulator"
buildxcodeproj MobileVLCKit "MobileVLCKit" ${platform}
lipo_libs="$lipo_libs ${CONFIGURATION}-iphonesimulator/libMobileVLCKit.a"
fi
# Assumes both platforms were built currently
spushd build
rm -rf MobileVLCKit.framework && \
mkdir MobileVLCKit.framework && \
lipo -create ${lipo_libs} -o MobileVLCKit.framework/MobileVLCKit && \
chmod a+x MobileVLCKit.framework/MobileVLCKit && \
cp -pr ${CONFIGURATION}-${platform}/MobileVLCKit MobileVLCKit.framework/Headers
cp -pr ${CONFIGURATION}-${platform}/Modules MobileVLCKit.framework/Modules
spopd # build
info "Build of static MobileVLCKit.framework completed"
fi
fi
if [ "$BUILD_DYNAMIC_FRAMEWORK" != "no" ]; then
if [ "$MACOS" = "yes" ]; then
info "Building VLCKit.framework"
buildxcodeproj VLCKit "VLCKit" "macosx"
# remove intermediate build result we don't need to keep
spushd build
rm ${CONFIGURATION}/libStaticLibVLC.a
spopd # build
info "Build of VLCKit.framework completed"
fi
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。