compileVLCforiOS.sh 7.17 KB
Newer Older
Felix Paul Kühne's avatar
Felix Paul Kühne committed
1 2 3 4 5 6
#!/bin/sh
# Copyright (C) Pierre d'Herbemont, 2010
# Copyright (C) Felix Paul Kühne, 2012-2013

set -e

7
PLATFORM=iphoneos
8
SDK=7.0
9
SDK_MIN=6.1
Felix Paul Kühne's avatar
Felix Paul Kühne committed
10
VERBOSE=no
11
CONFIGURATION="Release"
12
NONETWORK=no
13
SKIPLIBVLCCOMPILATION=no
14

Felix Paul Kühne's avatar
Felix Paul Kühne committed
15
TESTEDVLCKITHASH=766c3b7fa
Felix Paul Kühne's avatar
Felix Paul Kühne committed
16
TESTEDMEDIALIBRARYKITHASH=225ab43aa
Felix Paul Kühne's avatar
Felix Paul Kühne committed
17
TESTEDQUINCYKITHASH=f1d93b96b
Felix Paul Kühne's avatar
Felix Paul Kühne committed
18 19 20 21 22 23 24 25 26 27 28

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
   -d       Enable Debug
29
   -n       Skip script steps requiring network interaction
30
   -l       Skip libvlc compilation
Felix Paul Kühne's avatar
Felix Paul Kühne committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
EOF
}

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"
}

buildxcodeproj()
{
    local target="$2"
    if [ "x$target" = "x" ]; then
        target="$1"
    fi

    info "Building $1 ($target, ${CONFIGURATION})"

    local extra=""
    if [ "$PLATFORM" = "Simulator" ]; then
        extra="ARCHS=i386"
    fi

    xcodebuild -project "$1.xcodeproj" \
               -target "$target" \
67
               -sdk $PLATFORM$SDK \
Felix Paul Kühne's avatar
Felix Paul Kühne committed
68 69 70 71
               -configuration ${CONFIGURATION} ${extra} \
               IPHONEOS_DEPLOYMENT_TARGET=${SDK_MIN} > ${out}
}

72
while getopts "hvsdnlk:" OPTION
Felix Paul Kühne's avatar
Felix Paul Kühne committed
73 74 75 76 77 78 79 80 81 82
do
     case $OPTION in
         h)
             usage
             exit 1
             ;;
         v)
             VERBOSE=yes
             ;;
         s)
83
             PLATFORM=iphonesimulator
Felix Paul Kühne's avatar
Felix Paul Kühne committed
84 85 86
             ;;
         d)  CONFIGURATION="Debug"
             ;;
87 88 89
         n)
             NONETWORK=yes
             ;;
90 91 92
         l)
             SKIPLIBVLCCOMPILATION=yes
             ;;
Felix Paul Kühne's avatar
Felix Paul Kühne committed
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
         k)
             SDK=$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 .
aspen_root_dir=`pwd`
spopd

info "Preparing build dirs"

mkdir -p ImportedSources

Felix Paul Kühne's avatar
Felix Paul Kühne committed
123 124 125
rm -rf External
mkdir -p External

Felix Paul Kühne's avatar
Felix Paul Kühne committed
126 127
spushd ImportedSources

128
if [ "$NONETWORK" != "yes" ]; then
Felix Paul Kühne's avatar
Felix Paul Kühne committed
129
if ! [ -e MediaLibraryKit ]; then
130
git clone git://git.videolan.org/MediaLibraryKit.git
131
cd MediaLibraryKit
132
git checkout -B localAspenBranch ${TESTEDMEDIALIBRARYKITHASH}
133 134 135 136 137 138
git branch --set-upstream-to=origin/master localAspenBranch
cd ..
else
cd MediaLibraryKit
git pull --rebase
git reset --hard ${TESTEDMEDIALIBRARYKITHASH}
139
cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
140 141 142
fi
if ! [ -e VLCKit ]; then
git clone git://git.videolan.org/vlc-bindings/VLCKit.git
143
cd VLCKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
144 145
git checkout 2.1-stable
git reset --hard ${TESTEDVLCKITHASH}
146 147 148 149 150
cd ..
else
cd VLCKit
git pull --rebase
git reset --hard ${TESTEDVLCKITHASH}
151
cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
152 153
fi
if ! [ -e OBSlider ]; then
154
git clone git://github.com/ole/OBSlider.git
155 156
else
cd OBSlider && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
157
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
158 159
if ! [ -e DAVKit ]; then
git clone git://github.com/mattrajca/DAVKit.git
160 161
else
cd DAVKit && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
162
fi
163 164 165 166 167 168 169 170 171 172 173 174 175 176
if ! [ -e PLCrashReporter ]; then
git clone https://opensource.plausible.coop/stash/scm/plcr/plcrashreporter.git PLCrashReporter
cd PLCrashReporter
git am ../../patches/plcrashreporter/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
fi
if ! [ -e QuincyKit ]; then
git clone git://github.com/TheRealKerni/QuincyKit.git
cd QuincyKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
177 178
git checkout -B localAspenBranch ${TESTEDQUINCYKITHASH}
git branch --set-upstream-to=origin/master localAspenBranch
179 180 181 182 183 184 185 186
git am ../../patches/quincykit/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
fi
187 188
if ! [ -e GDrive ]; then
svn checkout http://google-api-objectivec-client.googlecode.com/svn/trunk/Source GDrive
189
cd GDrive && patch -p0 < ../../patches/gdrive/upgrade-default-target.patch && cd ..
190 191
else
cd GDrive && svn up && cd ..
192
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
193 194
if ! [ -e GHSidebarNav ]; then
git clone git://github.com/gresrun/GHSidebarNav.git
195 196
else
cd GHSidebarNav && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
197
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
198
if ! [ -e upnpx ]; then
199 200 201
git clone git://github.com/fkuehne/upnpx.git
else
cd upnpx && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
202
fi
203
if ! [ -e WhiteRaccoon ]; then
204
git clone git://github.com/fkuehne/WhiteRaccoon.git
205 206
else
cd WhiteRaccoon && git pull --rebase && cd ..
207
fi
208 209
if ! [ -e CocoaHTTPServer ]; then
git clone git://github.com/robbiehanson/CocoaHTTPServer.git
210 211 212 213 214 215 216 217
cd CocoaHTTPServer
git am ../../patches/cocoahttpserver/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
218 219
else
cd CocoaHTTPServer && git pull --rebase && cd ..
220
fi
221
if ! [ -e Dropbox ]; then
Felix Paul Kühne's avatar
Felix Paul Kühne committed
222
DROPBOXSDKVERSION=1.3.9
223 224 225 226 227 228
curl -O https://www.dropbox.com/static/developers/dropbox-ios-sdk-${DROPBOXSDKVERSION}.zip
unzip -q dropbox-ios-sdk-${DROPBOXSDKVERSION}.zip
mv dropbox-ios-sdk-${DROPBOXSDKVERSION} Dropbox
rm dropbox-ios-sdk-${DROPBOXSDKVERSION}.zip
rm -rf __MACOSX
fi
229 230
if ! [ -e InAppSettingsKit ]; then
git clone git://github.com/futuretap/InAppSettingsKit.git
231 232 233 234 235 236 237 238
cd InAppSettingsKit
git am ../../patches/inappsettingskit/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
239
fi
240
fi
241

Felix Paul Kühne's avatar
Felix Paul Kühne committed
242 243
info "Setup 'External' folders"

244
if [ "$PLATFORM" = "iphonesimulator" ]; then
245
    xcbuilddir="build/${CONFIGURATION}-iphonesimulator"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
246
else
247
    xcbuilddir="build/${CONFIGURATION}-iphoneos"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
248 249 250
fi
framework_build="${aspen_root_dir}/ImportedSources/VLCKit/${xcbuilddir}"
mlkit_build="${aspen_root_dir}/ImportedSources/MediaLibraryKit/${xcbuilddir}"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
251
upnpx_build="${aspen_root_dir}/ImportedSources/upnpx/projects/xcode4/upnpx/${xcbuilddir}"
Carola Nitz's avatar
Carola Nitz committed
252
gtl_build="${aspen_root_dir}/ImportedSources/GDrive/${xcbuilddir}"
253 254
plcrashreporter_build="${aspen_root_dir}/ImportedSources/PLCrashReporter/${xcbuilddir}"
quincykit_build="${aspen_root_dir}/ImportedSources/QuincyKit/client/iOS/QuincyLib/${xcbuilddir}"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
255 256 257 258 259

spopd #ImportedSources

ln -sf ${framework_build} External/MobileVLCKit
ln -sf ${mlkit_build} External/MediaLibraryKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
260
ln -sf ${upnpx_build} External/upnpx
Carola Nitz's avatar
Carola Nitz committed
261
ln -sf ${gtl_build} External/gtl
262 263
ln -sf ${plcrashreporter_build} External/PLCrashReporter
ln -sf ${quincykit_build} External/QuincyKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
264 265 266 267 268 269 270 271 272

#
# Build time
#

info "Building"

spushd ImportedSources

273 274
spushd VLCKit
echo `pwd`
Felix Paul Kühne's avatar
Felix Paul Kühne committed
275 276 277 278
args=""
if [ "$VERBOSE" = "yes" ]; then
    args="${args} -v"
fi
279
if [ "$PLATFORM" = "iphonesimulator" ]; then
280 281
    args="${args} -s"
fi
282 283
if [ "$NONETWORK" = "yes" ]; then
    args="${args} -n"
284
fi
285 286 287 288
if [ "$SKIPLIBVLCCOMPILATION" = "yes" ]; then
    args="${args} -l"
fi
./buildMobileVLCKit.sh ${args} -k "${SDK}"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
289 290 291 292 293
buildxcodeproj MobileVLCKit "Aggregate static plugins"
buildxcodeproj MobileVLCKit "MobileVLCKit"
spopd

spushd MediaLibraryKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
294 295
rm -f External/MobileVLCKit
ln -sf ${framework_build} External/MobileVLCKit
296
buildxcodeproj MediaLibraryKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
297 298
spopd

Felix Paul Kühne's avatar
Felix Paul Kühne committed
299 300 301 302
spushd upnpx/projects/xcode4/upnpx
buildxcodeproj upnpx
spopd

303 304 305 306
spushd GDrive
buildxcodeproj GTL "GTLTouchStaticLib"
spopd

307 308 309 310 311 312 313 314 315 316 317 318
spushd PLCrashReporter
if [ "$PLATFORM" = "iphonesimulator" ]; then
    buildxcodeproj CrashReporter "CrashReporter-iOS-Simulator"
else
    buildxcodeproj CrashReporter "CrashReporter-iOS-Device"
fi
spopd

spushd QuincyKit/client/iOS/QuincyLib
buildxcodeproj QuincyLib
spopd

Felix Paul Kühne's avatar
Felix Paul Kühne committed
319 320 321 322
spopd # ImportedSources


# Build the Aspen Project now
323
buildxcodeproj "VLC for iOS" "vlc-ios"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
324 325

info "Build completed"