compile.sh 3.48 KB
Newer Older
ivoire's avatar
ivoire committed
1
2
#! /bin/sh

Rafaël Carré's avatar
Rafaël Carré committed
3
4
5
6
7
# Read the Android HOWTO and setup all that stuff correctly.
# Get the Android SDK Platform 2.1, 2.2 and 2.3 API : version 7, 8 and (9 or 10)
# or modify numbers in configure.sh and vlc-android/default.properties.
# Create an AVD with this platform.

8
9
set -e

Rafaël Carré's avatar
Rafaël Carré committed
10
# XXX : important!
11
cat << EOF
Edward Wang's avatar
Edward Wang committed
12
If you plan to use a device without NEON (e.g. the emulator), you need a build without NEON:
13
$ export NO_NEON=1
Edward Wang's avatar
Edward Wang committed
14
Make sure it is set throughout the entire process.
15

Edward Wang's avatar
Edward Wang committed
16
The script will attempt to automatically detect if you have NDK v7, but you can override this.
17
18
19
20
21
If you do not have NDK v7 or later:
export NO_NDK_V7=1
or if you are sure you have NDK v7:
export NO_NDK_V7=0

22
If you plan to use a release build, run 'compile.sh release'
23
EOF
Edward Wang's avatar
Edward Wang committed
24

ivoire's avatar
ivoire committed
25
if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
Rafaël Carré's avatar
Rafaël Carré committed
26
27
28
29
   echo "You must define ANDROID_NDK and ANDROID_SDK before starting."
   echo "They must point to your NDK and SDK directories."
   exit 1
fi
ivoire's avatar
ivoire committed
30

31
32
if [ -z "$NO_NDK_V7" ]; then
    # try to detect NDK version
33
    REL=$(grep -o '^r[0-9]*' $ANDROID_NDK/RELEASE.TXT 2>/dev/null|cut -b2-)
34
    if [ -z $REL ]; then
35
        export NO_NDK_V7=1
36
37
38
    fi
fi

39
40
41
42
# Add the NDK toolchain to the PATH, needed both for contribs and for building
# stub libraries
export PATH=${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin:${PATH}

Rafaël Carré's avatar
Rafaël Carré committed
43
# 1/ libvlc, libvlccore and its plugins
Sébastien Toque's avatar
Sébastien Toque committed
44
TESTED_HASH=defdb5a9e1
45
if [ ! -d "vlc" ]; then
46
    echo "VLC source not found, cloning"
47
    git clone git://git.videolan.org/vlc.git vlc
Philipp Dreimann's avatar
Philipp Dreimann committed
48
    cd vlc
49
    git checkout -B android ${TESTED_HASH}
50
51
    echo "Applying the patches"
    git am ../patches/*.patch
52
else
53
    echo "VLC source found"
54
    cd vlc
55
56
57
58
59
60
61
    if ! git cat-file -e ${TESTED_HASH}; then
        cat << EOF
***
*** Error: Your vlc checkout does not contain the latest tested commit ***
***

Please update your source with something like:
ivoire's avatar
ivoire committed
62
63

cd vlc
64
65
66
67
68
69
70
71
72
73
74
git reset --hard origin
git pull origin master
git checkout -B android ${TESTED_HASH}
git am ../patches/*

*** : This will delete any changes you made to the current branch ***

EOF
        exit 1
    fi
fi
ivoire's avatar
ivoire committed
75
76

echo "Building the contribs"
77
78
mkdir -p contrib/android
cd contrib/android
79
../bootstrap --host=arm-linux-androideabi --disable-disc --disable-sout --enable-small \
Rafaël Carré's avatar
Rafaël Carré committed
80
81
82
83
84
85
86
87
    --disable-sdl \
    --disable-SDL_image \
    --disable-fontconfig \
    --disable-zvbi \
    --disable-kate \
    --disable-caca \
    --disable-gettext \
    --disable-mpcdec \
88
    --disable-upnp \
89
    --disable-gme \
90
91
    --disable-tremor \
    --disable-vorbis \
92
    --disable-sidplay2 \
Sébastien Toque's avatar
Sébastien Toque committed
93
94
    --disable-samplerate \
    --enable-iconv
Rafaël Carré's avatar
Rafaël Carré committed
95
echo EXTRA_CFLAGS=-g >> config.mak
Rafaël Carré's avatar
Rafaël Carré committed
96

97
# TODO: mpeg2, theora
98

99
100
101
102
103
104
if test -z "${NO_NEON}" -o -n "${TEGRA2}"; then
    # assumes armv7-a
    echo "EXTRA_CFLAGS += -mthumb" >> config.mak
    echo "NOTHUMB := -marm" >> config.mak
fi

105
# Release or not?
106
if [ $# -ne 0 ] && [ "$1" == "release" ]; then
107
108
    OPTS=""
    echo "EXTRA_CFLAGS += -DNDEBUG" >> config.mak
109
    MAKEFLAGS="RELEASE=1"
110
111
112
113
else
    OPTS="--enable-debug"
fi

Rafaël Carré's avatar
Rafaël Carré committed
114
115
make fetch
make
ivoire's avatar
ivoire committed
116
117
118

cd ../.. && mkdir -p android && cd android

119
if test ! -s "../configure" ; then
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
120
    echo "Bootstraping"
Sébastien Toque's avatar
Sébastien Toque committed
121
    ../bootstrap
Rafaël Carré's avatar
Rafaël Carré committed
122
fi
ivoire's avatar
ivoire committed
123
124

echo "Configuring"
125
../../configure.sh $OPTS
ivoire's avatar
ivoire committed
126

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
127
echo "Building"
ivoire's avatar
ivoire committed
128
make
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
129

Rafaël Carré's avatar
Rafaël Carré committed
130
131
132

# 2/ VLC android UI and specific code

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
133
134
echo "Building Android"
cd ../../
Rafaël Carré's avatar
Rafaël Carré committed
135

136
export ANDROID_SYS_HEADERS_GINGERBREAD=${PWD}/android-headers-gingerbread
137
export ANDROID_SYS_HEADERS_HC=${PWD}/android-headers-hc
138
export ANDROID_SYS_HEADERS_ICS=${PWD}/android-headers-ics
Rafaël Carré's avatar
Rafaël Carré committed
139
140

export ANDROID_LIBS=${PWD}/android-libs
141
export VLC_BUILD_DIR=vlc/android
Rafaël Carré's avatar
Rafaël Carré committed
142

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
143
make distclean
144
make $MAKEFLAGS