compile-libvlc.sh 5.07 KB
Newer Older
1 2
#!/bin/sh

3 4 5 6 7 8
if [ -z "$ANDROID_NDK" ]; then
    echo "Please set the ANDROID_NDK environment variable with its path."
    exit 1
fi

if [ -z "$ANDROID_ABI" ]; then
9
    echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, armeabi, arm64-v8a, x86, x86_64 or mips."
10 11 12
    exit 1
fi

13 14 15 16 17
# ANDROID_API must be previously set by compile.sh or env.sh
if [ -z "$ANDROID_API" ];then
    echo "ANDROID_API not set, call ./compile.sh first"
    exit 1
fi
18

19
VLC_SOURCEDIR=..
20

21
CFLAGS="-g -O2 -fstrict-aliasing -funsafe-math-optimizations"
22
if [ -n "$HAVE_ARM" -a ! -n "$HAVE_64" ]; then
23
    CFLAGS="${CFLAGS} -mlong-calls"
24 25
fi

26 27 28
LDFLAGS="-Wl,-Bdynamic,-dynamic-linker=/system/bin/linker -Wl,--no-undefined"

if [ -n "$HAVE_ARM" ]; then
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
29
    if [ ${ANDROID_ABI} = "armeabi-v7a" ]; then
30 31 32
        EXTRA_PARAMS=" --enable-neon"
        LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
    fi
33 34
fi

35 36
CPPFLAGS="-I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/include -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}/include"
LDFLAGS="$LDFLAGS -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}"
37

38
SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/arch-$PLATFORM_SHORT_ARCH
39
ANDROID_BIN=`echo $ANDROID_NDK/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/\`uname|tr A-Z a-z\`-*/bin/`
40
CROSS_COMPILE=${ANDROID_BIN}/${TARGET_TUPLE}-
41 42

CPPFLAGS="$CPPFLAGS" \
43
CFLAGS="$CFLAGS ${VLC_EXTRA_CFLAGS}" \
44 45 46 47 48 49 50 51
CXXFLAGS="$CFLAGS" \
LDFLAGS="$LDFLAGS" \
CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}" \
CXX="${CROSS_COMPILE}g++ --sysroot=${SYSROOT}" \
NM="${CROSS_COMPILE}nm" \
STRIP="${CROSS_COMPILE}strip" \
RANLIB="${CROSS_COMPILE}ranlib" \
AR="${CROSS_COMPILE}ar" \
52
PKG_CONFIG_LIBDIR=$VLC_SOURCEDIR/contrib/$TARGET_TUPLE/lib/pkgconfig \
53
sh $VLC_SOURCEDIR/configure --host=$TARGET_TUPLE --build=x86_64-unknown-linux $EXTRA_PARAMS \
54
                --disable-nls \
55 56 57 58
                --enable-live555 --enable-realrtsp \
                --enable-avformat \
                --enable-swscale \
                --enable-avcodec \
59
                --enable-opus \
60 61 62 63
                --enable-opensles \
                --enable-android-surface \
                --enable-mkv \
                --enable-taglib \
64
                --enable-dvbpsi \
65
                --disable-vlc --disable-shared \
66
                --disable-update-check \
67
                --disable-vlm \
68 69 70 71 72
                --disable-dbus \
                --disable-lua \
                --disable-vcd \
                --disable-v4l2 \
                --disable-gnomevfs \
73
                --enable-dvdread \
74
                --enable-dvdnav \
75 76 77 78
                --disable-bluray \
                --disable-linsys \
                --disable-decklink \
                --disable-libva \
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
79
                --disable-dv1394 \
80 81 82
                --disable-mod \
                --disable-sid \
                --disable-gme \
83
                --disable-tremor \
Thomas Guillem's avatar
Thomas Guillem committed
84
                --enable-mad \
85
                --disable-dca \
86
                --disable-sdl-image \
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
87
                --enable-zvbi \
88 89 90 91 92 93 94 95
                --disable-fluidsynth \
                --disable-jack \
                --disable-pulse \
                --disable-alsa \
                --disable-samplerate \
                --disable-sdl \
                --disable-xcb \
                --disable-atmo \
Edward Wang's avatar
Edward Wang committed
96
                --disable-qt \
97 98 99
                --disable-skins2 \
                --disable-mtp \
                --disable-notify \
Sébastien Toque's avatar
Sébastien Toque committed
100
                --enable-libass \
101 102
                --disable-svg \
                --disable-udev \
103
                --enable-libxml2 \
104 105
                --disable-caca \
                --disable-glx \
106 107
                --enable-egl \
                --enable-gles2 \
108 109
                --disable-goom \
                --disable-projectm \
110
                --disable-sout \
111
                --enable-vorbis \
Edward Wang's avatar
Edward Wang committed
112
                --disable-faad \
113 114
                --disable-x264 \
                --disable-schroedinger --disable-dirac \
115
                $*
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150

# ANDROID NDK FIXUP (BLAME GOOGLE)
config_undef ()
{
    unamestr=`uname`
    if [[ "$unamestr" == 'Darwin' ]]; then
        previous_change=`stat -f "%Sm" -t "%y%m%d%H%M.%S" config.h`
        sed -i '' 's,#define '$1' 1,/\* #undef '$1' \*/,' config.h
        touch -t "$previous_change" config.h
    else
        previous_change=`stat -c "%y" config.h`
        sed -i 's,#define '$1' 1,/\* #undef '$1' \*/,' config.h
        # don't change modified date in order to don't trigger a full build
        touch -d "$previous_change" config.h
    fi
}

# if config dependencies change, ./config.status
# is run and overwrite previously hacked config.h. So call make config.h here
# and hack config.h after.

make $MAKEFLAGS config.h

if [ ${ANDROID_ABI} = "x86" -a ${ANDROID_API} != "android-21" ] ; then
    # NDK x86 libm.so has nanf symbol but no nanf definition, we don't known if
    # intel devices has nanf. Assume they don't have it.
    config_undef HAVE_NANF
fi
if [ ${ANDROID_API} = "android-21" ] ; then
    # android-21 has empty sys/shm.h headers that triggers shm detection but it
    # doesn't have any shm functions and/or symbols. */
    config_undef HAVE_SYS_SHM_H
fi
# END OF ANDROID NDK FIXUP