compileVLCforiOS.sh 7.69 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
Felix Paul Kühne's avatar
Felix Paul Kühne committed
8
SDK=7.1
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
UNSTABLEVLCKIT=yes
15

Felix Paul Kühne's avatar
Felix Paul Kühne committed
16
TESTEDVLCKITHASH=766c3b7fa
17
TESTEDUNSTABLEVLCKITHASH=5b4f892cf
18
TESTEDMEDIALIBRARYKITHASH=e6b613478
Felix Paul Kühne's avatar
Felix Paul Kühne committed
19
TESTEDQUINCYKITHASH=f1d93b96b
Felix Paul Kühne's avatar
Felix Paul Kühne committed
20 21 22 23

usage()
{
cat << EOF
24
usage: $0 [-s] [-v] [-k sdk] [-d] [-n] [-l] [-u]
Felix Paul Kühne's avatar
Felix Paul Kühne committed
25 26 27 28 29 30

OPTIONS
   -k       Specify which sdk to use (see 'xcodebuild -showsdks', current: ${SDK})
   -v       Be more verbose
   -s       Build for simulator
   -d       Enable Debug
31
   -n       Skip script steps requiring network interaction
32
   -l       Skip libvlc compilation
33
   -u       Compile unstable version of MobileVLCKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
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 67 68 69
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" \
70
               -sdk $PLATFORM$SDK \
Felix Paul Kühne's avatar
Felix Paul Kühne committed
71 72 73 74
               -configuration ${CONFIGURATION} ${extra} \
               IPHONEOS_DEPLOYMENT_TARGET=${SDK_MIN} > ${out}
}

75
while getopts "hvsdnluk:" OPTION
Felix Paul Kühne's avatar
Felix Paul Kühne committed
76 77 78 79 80 81 82 83 84 85
do
     case $OPTION in
         h)
             usage
             exit 1
             ;;
         v)
             VERBOSE=yes
             ;;
         s)
86
             PLATFORM=iphonesimulator
Felix Paul Kühne's avatar
Felix Paul Kühne committed
87 88 89
             ;;
         d)  CONFIGURATION="Debug"
             ;;
90 91 92
         n)
             NONETWORK=yes
             ;;
93 94 95
         l)
             SKIPLIBVLCCOMPILATION=yes
             ;;
Felix Paul Kühne's avatar
Felix Paul Kühne committed
96 97 98
         k)
             SDK=$OPTARG
             ;;
99
         u)
100
             UNSTABLEVLCKIT=no
101
             ;;
Felix Paul Kühne's avatar
Felix Paul Kühne committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
         ?)
             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
129 130 131
rm -rf External
mkdir -p External

Felix Paul Kühne's avatar
Felix Paul Kühne committed
132 133
spushd ImportedSources

134
if [ "$NONETWORK" != "yes" ]; then
Felix Paul Kühne's avatar
Felix Paul Kühne committed
135
if ! [ -e MediaLibraryKit ]; then
136
git clone git://git.videolan.org/MediaLibraryKit.git
137
cd MediaLibraryKit
138
git checkout -B localAspenBranch ${TESTEDMEDIALIBRARYKITHASH}
139 140 141 142 143
git branch --set-upstream-to=origin/master localAspenBranch
cd ..
else
cd MediaLibraryKit
git reset --hard ${TESTEDMEDIALIBRARYKITHASH}
144
cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
145
fi
146
if [ "$UNSTABLEVLCKIT" = "no" ]; then
Felix Paul Kühne's avatar
Felix Paul Kühne committed
147 148
if ! [ -e VLCKit ]; then
git clone git://git.videolan.org/vlc-bindings/VLCKit.git
149
cd VLCKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
150 151
git checkout 2.1-stable
git reset --hard ${TESTEDVLCKITHASH}
152 153 154 155
cd ..
else
cd VLCKit
git reset --hard ${TESTEDVLCKITHASH}
156
cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
157
fi
158 159 160
else
if ! [ -e VLCKit ]; then
git clone git://git.videolan.org/vlc-bindings/VLCKit.git
161 162 163
cd VLCKit
git reset --hard ${TESTEDUNSTABLEVLCKITHASH}
cd ..
164
else
165 166 167
cd VLCKit
git reset --hard ${TESTEDUNSTABLEVLCKITHASH}
cd ..
168 169
fi
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
170
if ! [ -e OBSlider ]; then
171
git clone git://github.com/ole/OBSlider.git
172 173
else
cd OBSlider && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
174
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
175 176
if ! [ -e DAVKit ]; then
git clone git://github.com/mattrajca/DAVKit.git
177 178
else
cd DAVKit && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
179
fi
180 181 182 183 184 185 186 187 188 189 190 191 192 193
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
194 195
git checkout -B localAspenBranch ${TESTEDQUINCYKITHASH}
git branch --set-upstream-to=origin/master localAspenBranch
196 197 198 199 200 201 202 203
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
204 205
if ! [ -e GDrive ]; then
svn checkout http://google-api-objectivec-client.googlecode.com/svn/trunk/Source GDrive
206
cd GDrive && patch -p0 < ../../patches/gdrive/upgrade-default-target.patch && cd ..
207 208
else
cd GDrive && svn up && cd ..
209
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
210 211
if ! [ -e GHSidebarNav ]; then
git clone git://github.com/gresrun/GHSidebarNav.git
212 213
else
cd GHSidebarNav && git pull --rebase && cd ..
Felix Paul Kühne's avatar
Felix Paul Kühne committed
214
fi
215
if ! [ -e LXReorderableCollectionViewFlowLayout ]; then
216
git clone git://github.com/lxcid/LXReorderableCollectionViewFlowLayout.git
217 218 219 220 221 222 223 224 225 226 227
cd LXReorderableCollectionViewFlowLayout
git am ../../patches/lxreorderablecollectionviewflowlayout/*.patch
if [ $? -ne 0 ]; then
git am --abort
info "Applying the patches failed, aborting git-am"
exit 1
fi
cd ..
else
cd LXReorderableCollectionViewFlowLayout && git pull --rebase && cd ..
fi
Felix Paul Kühne's avatar
Felix Paul Kühne committed
228
if ! [ -e upnpx ]; then
229 230 231
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
232
fi
233
if ! [ -e WhiteRaccoon ]; then
234
git clone git://github.com/fkuehne/WhiteRaccoon.git
235 236
else
cd WhiteRaccoon && git pull --rebase && cd ..
237
fi
238
if ! [ -e CocoaHTTPServer ]; then
239
git clone git://github.com/fkuehne/CocoaHTTPServer.git
240 241
else
cd CocoaHTTPServer && git pull --rebase && cd ..
242
fi
243
if ! [ -e Dropbox ]; then
Felix Paul Kühne's avatar
Felix Paul Kühne committed
244
DROPBOXSDKVERSION=1.3.9
245 246 247 248 249 250
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
251 252
if ! [ -e InAppSettingsKit ]; then
git clone git://github.com/futuretap/InAppSettingsKit.git
253 254
else
cd WhiteRaccoon && git pull --rebase && cd ..
255
fi
256
fi
257

Felix Paul Kühne's avatar
Felix Paul Kühne committed
258 259
info "Setup 'External' folders"

260
if [ "$PLATFORM" = "iphonesimulator" ]; then
261
    xcbuilddir="build/${CONFIGURATION}-iphonesimulator"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
262
else
263
    xcbuilddir="build/${CONFIGURATION}-iphoneos"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
264 265 266
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
267
upnpx_build="${aspen_root_dir}/ImportedSources/upnpx/projects/xcode4/upnpx/${xcbuilddir}"
Carola Nitz's avatar
Carola Nitz committed
268
gtl_build="${aspen_root_dir}/ImportedSources/GDrive/${xcbuilddir}"
269 270
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
271 272 273 274 275

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
276
ln -sf ${upnpx_build} External/upnpx
Carola Nitz's avatar
Carola Nitz committed
277
ln -sf ${gtl_build} External/gtl
278 279
ln -sf ${plcrashreporter_build} External/PLCrashReporter
ln -sf ${quincykit_build} External/QuincyKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
280 281 282 283 284 285 286 287 288

#
# Build time
#

info "Building"

spushd ImportedSources

289 290
spushd VLCKit
echo `pwd`
Felix Paul Kühne's avatar
Felix Paul Kühne committed
291 292 293 294
args=""
if [ "$VERBOSE" = "yes" ]; then
    args="${args} -v"
fi
295
if [ "$PLATFORM" = "iphonesimulator" ]; then
296 297
    args="${args} -s"
fi
298 299
if [ "$NONETWORK" = "yes" ]; then
    args="${args} -n"
300
fi
301 302 303 304
if [ "$SKIPLIBVLCCOMPILATION" = "yes" ]; then
    args="${args} -l"
fi
./buildMobileVLCKit.sh ${args} -k "${SDK}"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
305 306 307 308 309
buildxcodeproj MobileVLCKit "Aggregate static plugins"
buildxcodeproj MobileVLCKit "MobileVLCKit"
spopd

spushd MediaLibraryKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
310 311
rm -f External/MobileVLCKit
ln -sf ${framework_build} External/MobileVLCKit
312
buildxcodeproj MediaLibraryKit
Felix Paul Kühne's avatar
Felix Paul Kühne committed
313 314
spopd

Felix Paul Kühne's avatar
Felix Paul Kühne committed
315 316 317 318
spushd upnpx/projects/xcode4/upnpx
buildxcodeproj upnpx
spopd

319 320 321 322
spushd GDrive
buildxcodeproj GTL "GTLTouchStaticLib"
spopd

323 324 325 326 327 328 329 330 331 332 333 334
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
335 336 337 338
spopd # ImportedSources


# Build the Aspen Project now
339
buildxcodeproj "VLC for iOS" "vlc-ios"
Felix Paul Kühne's avatar
Felix Paul Kühne committed
340 341

info "Build completed"