]> git.sesse.net Git - vlc/blob - extras/package/ios/build.sh
extras/tools: disable contrib compilation of gpg-error, gcrypt and lua since we don...
[vlc] / extras / package / ios / build.sh
1 #!/bin/sh
2 set -e
3
4 PLATFORM=OS
5 VERBOSE=no
6 SDK_VERSION=6.1
7 SDK_MIN=5.1
8 ARCH=armv7
9
10 usage()
11 {
12 cat << EOF
13 usage: $0 [-s] [-k sdk]
14
15 OPTIONS
16    -k <sdk>      Specify which sdk to use ('xcodebuild -showsdks', current: ${SDK})
17    -s            Build for simulator
18    -a <arch>     Specify which arch to use (current: ${ARCH})
19 EOF
20 }
21
22 spushd()
23 {
24     pushd "$1" 2>&1> /dev/null
25 }
26
27 spopd()
28 {
29     popd 2>&1> /dev/null
30 }
31
32 info()
33 {
34     local blue="\033[1;34m"
35     local normal="\033[0m"
36     echo "[${blue}info${normal}] $1"
37 }
38
39 while getopts "hvsk:a:" OPTION
40 do
41      case $OPTION in
42          h)
43              usage
44              exit 1
45              ;;
46          v)
47              VERBOSE=yes
48              ;;
49          s)
50              PLATFORM=Simulator
51              SDK=${SDK_MIN}
52              ;;
53          k)
54              SDK=$OPTARG
55              ;;
56          a)
57              ARCH=$OPTARG
58              ;;
59          ?)
60              usage
61              exit 1
62              ;;
63      esac
64 done
65 shift $(($OPTIND - 1))
66
67 if [ "x$1" != "x" ]; then
68     usage
69     exit 1
70 fi
71
72 out="/dev/null"
73 if [ "$VERBOSE" = "yes" ]; then
74    out="/dev/stdout"
75 fi
76
77 info "Building libvlc for iOS"
78
79 if [ "$PLATFORM" = "Simulator" ]; then
80     TARGET="i686-apple-darwin11"
81     ARCH="i386"
82     OPTIM="-O3 -g"
83 else
84     TARGET="arm-apple-darwin11"
85     OPTIM="-O3 -g"
86 fi
87
88 info "Using ${ARCH} with SDK version ${SDK_VERSION}"
89
90 THIS_SCRIPT_PATH=`pwd`/$0
91
92 spushd `dirname ${THIS_SCRIPT_PATH}`/../../..
93 VLCROOT=`pwd` # Let's make sure VLCROOT is an absolute path
94 spopd
95
96 if test -z "$SDKROOT"
97 then
98     SDKROOT=`xcode-select -print-path`/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}${SDK_VERSION}.sdk
99     echo "SDKROOT not specified, assuming $SDKROOT"
100 fi
101
102 if [ ! -d "${SDKROOT}" ]
103 then
104     echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
105     exit 1
106 fi
107
108 BUILDDIR="${VLCROOT}/build-ios-${PLATFORM}/${ARCH}"
109
110 PREFIX="${VLCROOT}/install-ios-${PLATFORM}/${ARCH}"
111
112 export PATH="${VLCROOT}/extras/tools/build/bin:${VLCROOT}/contrib/${TARGET}/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
113
114 # contains gas-processor.pl
115 export PATH=$PATH:${VLCROOT}/extras/package/ios/resources
116
117 info "Building tools"
118 spushd "${VLCROOT}/extras/tools"
119 ./bootstrap
120 make && make .gas
121 spopd
122
123 info "Building contrib for iOS in '${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}'"
124
125 # The contrib will read the following
126 export AR="xcrun ar"
127
128 export RANLIB="xcrun ranlib"
129 export CC="xcrun clang"
130 export OBJC="xcrun clang"
131 export CXX="xcrun clang++"
132 export LD="xcrun ld"
133 export STRIP="xcrun strip"
134
135
136 export SDKROOT
137 if [ "$PLATFORM" = "OS" ]; then
138 export CFLAGS="-isysroot ${SDKROOT} -arch ${ARCH} -mcpu=cortex-a8 -miphoneos-version-min=${SDK_MIN} ${OPTIM}"
139 else
140 export CFLAGS="-isysroot ${SDKROOT} -arch ${ARCH} -miphoneos-version-min=${SDK_MIN} ${OPTIM}"
141 fi
142 export CPPFLAGS="${CFLAGS}"
143 export CXXFLAGS="${CFLAGS}"
144 export OBJCFLAGS="${CFLAGS}"
145
146 export CPP="xcrun cc -E"
147 export CXXCPP="xcrun c++ -E"
148
149 export BUILDFORIOS="yes"
150
151 if [ "$PLATFORM" = "Simulator" ]; then
152     # Use the new ABI on simulator, else we can't build
153     export OBJCFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch ${OBJCFLAGS}"
154 fi
155
156 if [ "$PLATFORM" = "OS" ]; then
157   export LDFLAGS="-L${SDKROOT}/usr/lib -arch ${ARCH} -isysroot ${SDKROOT} -miphoneos-version-min=${SDK_MIN}"
158 else
159   export LDFLAGS="-syslibroot=${SDKROOT}/ -arch ${ARCH} -miphoneos-version-min=${SDK_MIN}"
160 fi
161
162 if [ "$PLATFORM" = "OS" ]; then
163     EXTRA_CFLAGS="-arch ${ARCH} -mcpu=cortex-a8"
164     EXTRA_LDFLAGS="-arch ${ARCH}"
165 else
166     EXTRA_CFLAGS="-m32"
167     EXTRA_LDFLAGS="-m32"
168 fi
169
170 info "LD FLAGS SELECTED = '${LDFLAGS}'"
171
172 spushd ${VLCROOT}/contrib
173
174 echo ${VLCROOT}
175 mkdir -p "${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}"
176 cd "${VLCROOT}/contrib/iPhone${PLATFORM}-${ARCH}"
177
178 if [ "$PLATFORM" = "OS" ]; then
179       export AS="gas-preprocessor.pl ${CC}"
180       export ASCPP="gas-preprocessor.pl ${CC}"
181       export CCAS="gas-preprocessor.pl ${CC}"
182 else
183   export AS="xcrun as"
184   export ASCPP="xcrun as"
185 fi
186
187 ../bootstrap --host=${TARGET} --build="i686-apple-darwin10" --prefix=${VLCROOT}/contrib/${TARGET}-${ARCH} --disable-gpl \
188     --disable-disc --disable-sout \
189     --disable-sdl \
190     --disable-SDL_image \
191     --disable-iconv \
192     --disable-zvbi \
193     --disable-kate \
194     --disable-caca \
195     --disable-gettext \
196     --disable-mpcdec \
197     --disable-upnp \
198     --disable-gme \
199     --disable-tremor \
200     --disable-vorbis \
201     --disable-sidplay2 \
202     --disable-samplerate \
203     --disable-goom \
204     --disable-gcrypt \
205     --disable-vncserver \
206     --disable-gnutls \
207     --disable-orc \
208     --disable-schroedinger \
209     --disable-libmpeg2 \
210     --disable-chromaprint \
211     --disable-mad \
212     --enable-fribidi \
213     --enable-libxml2 \
214     --enable-freetype2 \
215     --enable-ass \
216     --disable-fontconfig \
217     --disable-gpg-error \
218     --disable-gcrypt \
219     --disable-lua \
220     --disable-taglib > ${out}
221
222 echo "EXTRA_CFLAGS += ${EXTRA_CFLAGS}" >> config.mak
223 echo "EXTRA_LDFLAGS += ${EXTRA_LDFLAGS}" >> config.mak
224 make
225 spopd
226
227 info "Bootstraping vlc"
228 pwd
229 info "VLCROOT = ${VLCROOT}"
230 if ! [ -e ${VLCROOT}/configure ]; then
231     ${VLCROOT}/bootstrap  > ${out}
232 fi
233
234 info "Bootstraping vlc finished"
235
236 if [ ".$PLATFORM" != ".Simulator" ]; then
237     # FIXME - Do we still need this?
238     export AVCODEC_CFLAGS="-I${PREFIX}/include "
239     export AVCODEC_LIBS="-L${PREFIX}/lib -lavcodec -lavutil -lz"
240     export AVFORMAT_CFLAGS="-I${PREFIX}/include"
241     export AVFORMAT_LIBS="-L${PREFIX}/lib -lavcodec -lz -lavutil -lavformat"
242 fi
243
244 mkdir -p ${BUILDDIR}
245 spushd ${BUILDDIR}
246
247 info ">> --prefix=${PREFIX} --host=${TARGET}"
248
249 # Run configure only upon changes.
250 if [ "${VLCROOT}/configure" -nt config.log -o \
251      "${THIS_SCRIPT_PATH}" -nt config.log ]; then
252 ${VLCROOT}/configure \
253     --prefix="${PREFIX}" \
254     --host="${TARGET}" \
255     --with-contrib="${VLCROOT}/contrib/${TARGET}-${ARCH}" \
256     --disable-debug \
257     --enable-static \
258     --disable-macosx \
259     --disable-macosx-vout \
260     --disable-macosx-dialog-provider \
261     --disable-macosx-qtkit \
262     --disable-macosx-eyetv \
263     --disable-macosx-vlc-app \
264     --disable-macosx-avfoundation \
265     --enable-audioqueue \
266     --enable-ios-audio \
267     --enable-ios-vout \
268     --enable-ios-vout2 \
269     --disable-shared \
270     --enable-macosx-quartztext \
271     --enable-avcodec \
272     --enable-mkv \
273     --enable-opus \
274     --disable-sout \
275     --disable-faad \
276     --disable-lua \
277     --disable-a52 \
278     --enable-fribidi \
279     --disable-macosx-audio \
280     --disable-qt --disable-skins2 \
281     --disable-libgcrypt \
282     --disable-vcd \
283     --disable-vlc \
284     --disable-vlm \
285     --disable-httpd \
286     --disable-nls \
287     --disable-glx \
288     --disable-sse \
289     --enable-neon \
290     --disable-notify \
291     --enable-live555 \
292     --enable-realrtsp \
293     --enable-dvbpsi \
294     --enable-swscale \
295     --disable-projectm \
296     --enable-libass \
297     --enable-libxml2 \
298     --disable-goom \
299     --disable-dvdread \
300     --disable-dvdnav \
301     --disable-bluray \
302     --disable-linsys \
303     --disable-libva \
304     --disable-gme \
305     --disable-tremor \
306     --disable-vorbis \
307     --disable-fluidsynth \
308     --disable-jack \
309     --disable-pulse \
310     --disable-mtp \
311     --enable-ogg \
312     --enable-speex \
313     --enable-theora \
314     --enable-flac \
315     --disable-screen \
316     --enable-freetype \
317     --disable-taglib \
318     --disable-mmx \
319     --disable-mad > ${out} # MMX and SSE support requires llvm which is broken on Simulator
320 fi
321
322 CORE_COUNT=`sysctl -n machdep.cpu.core_count`
323 let MAKE_JOBS=$CORE_COUNT+1
324
325 info "Building libvlc"
326 make -j$MAKE_JOBS > ${out}
327
328 info "Installing libvlc"
329 make install > ${out}
330
331 find ${PREFIX}/lib/vlc/plugins -name *.a -type f -exec cp '{}' ${PREFIX}/lib/vlc/plugins \;
332 rm -rf "${PREFIX}/contribs"
333 cp -R "${VLCROOT}/contrib/${TARGET}-${ARCH}" "${PREFIX}/contribs"
334
335 info "Removing unneeded modules"
336 blacklist="
337 stats
338 access_bd
339 shm
340 access_imem
341 oldrc
342 real
343 hotkeys
344 gestures
345 sap
346 dynamicoverlay
347 rss
348 ball
349 marq
350 magnify
351 audiobargraph_
352 clone
353 mosaic
354 osdmenu
355 puzzle
356 mediadirs
357 t140
358 ripple
359 motion
360 sharpen
361 grain
362 posterize
363 mirror
364 wall
365 scene
366 blendbench
367 psychedelic
368 alphamask
369 netsync
370 audioscrobbler
371 motiondetect
372 motionblur
373 export
374 smf
375 podcast
376 bluescreen
377 erase
378 stream_filter_record
379 speex_resampler
380 remoteosd
381 magnify
382 gradient
383 tospdif
384 dtstofloat32
385 logger
386 visual
387 fb
388 aout_file
389 dummy
390 invert
391 sepia
392 wave
393 hqdn3d
394 headphone_channel_mixer
395 gaussianblur
396 gradfun
397 extract
398 colorthres
399 antiflicker
400 anaglyph
401 remap
402 "
403
404 for i in ${blacklist}
405 do
406     find ${PREFIX}/lib/vlc/plugins -name *$i* -type f -exec rm '{}' \;
407 done
408
409 popd