Skip to content
Snippets Groups Projects
Commit fd8a9aea authored by Adrien Béraud's avatar Adrien Béraud
Browse files

build: cleanup

Change-Id: I23cbc1542bc065521f80ec6d521674d1921d6b43
parent df31e7e4
Branches
Tags
No related merge requests found
#! /bin/bash #! /bin/bash
# Build Ring daemon for architecture specified by ANDROID_ABI # Build Jami daemon for architecture specified by ANDROID_ABI
#for OSX/BSD
realpath() {
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
set -e set -e
if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
...@@ -13,18 +7,16 @@ if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then ...@@ -13,18 +7,16 @@ if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
echo "They must point to your NDK and SDK directories." echo "They must point to your NDK and SDK directories."
exit 1 exit 1
fi fi
if [ -z "$ANDROID_ABI" ]; then if [ -z "$ANDROID_ABI" ]; then
echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, x86." echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, x86."
exit 1 exit 1
fi fi
ANDROID_TOPLEVEL_DIR="`pwd`" ANDROID_TOPLEVEL_DIR="`pwd`"
ANDROID_APP_DIR="$(pwd)/ring-android" ANDROID_APP_DIR="${ANDROID_TOPLEVEL_DIR}/ring-android"
HAVE_ARM=0 HAVE_ARM=0
HAVE_X86=0 HAVE_X86=0
HAVE_MIPS=0
HAVE_64=0 HAVE_64=0
# Set up ABI variables # Set up ABI variables
...@@ -41,12 +33,6 @@ elif [ ${ANDROID_ABI} = "x86_64" ] ; then ...@@ -41,12 +33,6 @@ elif [ ${ANDROID_ABI} = "x86_64" ] ; then
HAVE_X86=1 HAVE_X86=1
HAVE_64=1 HAVE_64=1
PLATFORM_SHORT_ARCH="x86_64" PLATFORM_SHORT_ARCH="x86_64"
elif [ ${ANDROID_ABI} = "mips" ] ; then
TARGET_TUPLE="mipsel-linux-android"
PJ_TARGET_TUPLE="mips-unknown-linux-androideabi"
PATH_HOST=$TARGET_TUPLE
HAVE_MIPS=1
PLATFORM_SHORT_ARCH="mips"
elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
TARGET_TUPLE="aarch64-linux-android" TARGET_TUPLE="aarch64-linux-android"
PJ_TARGET_TUPLE="aarch64-unknown-linux-android" PJ_TARGET_TUPLE="aarch64-unknown-linux-android"
...@@ -79,25 +65,19 @@ if [ ! -d "$ANDROID_TOOLCHAIN" ]; then ...@@ -79,25 +65,19 @@ if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
--install-dir=$ANDROID_TOOLCHAIN --install-dir=$ANDROID_TOOLCHAIN
fi fi
GCCVER=clang
CXXSTL="/"${GCCVER}
export GCCVER
export CXXSTL
export ANDROID_API export ANDROID_API
export TARGET_TUPLE export TARGET_TUPLE
export PATH_HOST
export HAVE_ARM export HAVE_ARM
export HAVE_X86 export HAVE_X86
export HAVE_MIPS
export HAVE_64 export HAVE_64
export PLATFORM_SHORT_ARCH
# Add the NDK toolchain to the PATH, needed both for contribs and for building # Add the NDK toolchain to the PATH, needed both for contribs and for building
# stub libraries # stub libraries
NDK_TOOLCHAIN_PATH=`echo ${ANDROID_TOOLCHAIN}/bin` NDK_TOOLCHAIN_PATH="${ANDROID_TOOLCHAIN}/bin"
export NDK_TOOLCHAIN_PATH=${NDK_TOOLCHAIN_PATH} CROSS_COMPILE=${NDK_TOOLCHAIN_PATH}/${TARGET_TUPLE}-
export PATH=${NDK_TOOLCHAIN_PATH}:${PATH} export PATH=${NDK_TOOLCHAIN_PATH}:${PATH}
export CROSS_COMPILE="${CROSS_COMPILE}"
export SYSROOT=$ANDROID_TOOLCHAIN/sysroot
if [ -z "$DAEMON_DIR" ]; then if [ -z "$DAEMON_DIR" ]; then
DAEMON_DIR="$(pwd)/../daemon" DAEMON_DIR="$(pwd)/../daemon"
...@@ -109,18 +89,34 @@ if [ ! -d "$DAEMON_DIR" ]; then ...@@ -109,18 +89,34 @@ if [ ! -d "$DAEMON_DIR" ]; then
echo 'If you cloned the daemon in a custom location override' \ echo 'If you cloned the daemon in a custom location override' \
'DAEMON_DIR to point to it' 'DAEMON_DIR to point to it'
echo "You can also use our meta repo which contains both: echo "You can also use our meta repo which contains both:
https://gerrit-ring.savoirfairelinux.com/#/admin/projects/ring-project" https://review.jami.net/#/admin/projects/ring-project"
exit 1 exit 1
fi fi
export DAEMON_DIR
# Setup LDFLAGS # Setup LDFLAGS
if [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then if [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
EXTRA_CFLAGS="${EXTRA_CFLAGS} -march=armv7-a -mthumb -mfpu=vfpv3-d16" EXTRA_CFLAGS="${EXTRA_CFLAGS} -march=armv7-a -mthumb -mfpu=vfpv3-d16"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -march=armv7-a -mthumb -mfpu=vfpv3-d16" EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -march=armv7-a -mthumb -mfpu=vfpv3-d16"
elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/lib" EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${SYSROOT}/usr/lib -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/lib"
fi fi
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/${LIBDIR}/${ANDROID_ABI} -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/${LIBDIR}" EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/${LIBDIR}/${ANDROID_ABI} -L${ANDROID_TOOLCHAIN}/${TARGET_TUPLE}/${LIBDIR}"
EXTRA_CFLAGS="${EXTRA_CFLAGS} -fPIC"
EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -fPIC"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${SYSROOT}/usr/${LIBDIR}"
echo "EXTRA_CFLAGS= ${EXTRA_CFLAGS}" >> config.mak
echo "EXTRA_CXXFLAGS= ${EXTRA_CXXFLAGS}" >> config.mak
echo "EXTRA_LDFLAGS= ${EXTRA_LDFLAGS}" >> config.mak
if [ "${RELEASE}" -eq 1 ]; then
echo "Daemon in release mode."
OPTS=""
STRIP_ARG="-s "
else
echo "Daemon in debug mode."
OPTS="--enable-debug"
fi
# Make in // # Make in //
UNAMES=$(uname -s) UNAMES=$(uname -s)
...@@ -135,7 +131,7 @@ fi ...@@ -135,7 +131,7 @@ fi
# Build buildsystem tools # Build buildsystem tools
cd $DAEMON_DIR/extras/tools cd $DAEMON_DIR/extras/tools
export PATH=`pwd`/extras/tools/build/bin:$PATH export PATH=`pwd`/build/bin:$PATH
echo "Building tools" echo "Building tools"
./bootstrap ./bootstrap
make $MAKEFLAGS make $MAKEFLAGS
...@@ -152,63 +148,30 @@ PACKAGEDIR=$PACKAGEDIR $JNIDIR/make-swig.sh ...@@ -152,63 +148,30 @@ PACKAGEDIR=$PACKAGEDIR $JNIDIR/make-swig.sh
############ ############
# Contribs # # Contribs #
############ ############
cd $DAEMON_DIR
echo "Building the contribs" echo "Building the contribs"
mkdir -p contrib/native-${TARGET_TUPLE} CONTRIB_DIR=${DAEMON_DIR}/contrib/native-${TARGET_TUPLE}
CONTRIB_SYSROOT=${DAEMON_DIR}/contrib/${TARGET_TUPLE}
CROSS_COMPILE=${NDK_TOOLCHAIN_PATH}/${TARGET_TUPLE}- mkdir -p ${CONTRIB_DIR}
export CROSS_COMPILE="${CROSS_COMPILE}" mkdir -p ${CONTRIB_SYSROOT}/lib/pkgconfig
mkdir -p contrib/${TARGET_TUPLE}/lib/pkgconfig
cd $DAEMON_DIR/contrib/native-${TARGET_TUPLE}
../bootstrap --host=${TARGET_TUPLE} --disable-libav --enable-ffmpeg --disable-speexdsp
# Always strip symbols for libring.so remove it if you want to debug the daemon
STRIP_ARG="-s "
EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG -fPIC -fno-integrated-as"
EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -DNDEBUG -fPIC"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${SYSROOT}/usr/${LIBDIR}"
if [ "${RELEASE}" -eq 1 ]; then
echo "Daemon in release mode."
OPTS=""
else
echo "Daemon in debug mode."
OPTS="--enable-debug"
fi
export SYSROOT=$ANDROID_TOOLCHAIN/sysroot cd ${CONTRIB_DIR}
echo "EXTRA_CFLAGS= ${EXTRA_CFLAGS}" >> config.mak ../bootstrap --host=${TARGET_TUPLE} --enable-ffmpeg --disable-speexdsp
echo "EXTRA_CXXFLAGS= ${EXTRA_CXXFLAGS}" >> config.mak
echo "EXTRA_LDFLAGS= ${EXTRA_LDFLAGS}" >> config.mak
export RING_EXTRA_CFLAGS="${EXTRA_CFLAGS}"
export RING_EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS}"
export RING_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
make list make list
make fetch make fetch
export PATH="$PATH:$PWD/../$TARGET_TUPLE/bin" export PATH="$PATH:$CONTRIB_SYSROOT/bin"
make $MAKEFLAGS make $MAKEFLAGS
############ ############
# Make Ring # # Make Jami daemon #
############ ############
cd $DAEMON_DIR DAEMON_BUILD_DIR="${DAEMON_DIR}/build-android-${TARGET_TUPLE}"
RING_SRC_DIR="${DAEMON_DIR}" mkdir -p ${DAEMON_BUILD_DIR}
RING_BUILD_DIR="`realpath build-android-${TARGET_TUPLE}`"
export RING_SRC_DIR="${RING_SRC_DIR}"
export RING_BUILD_DIR="${RING_BUILD_DIR}"
mkdir -p build-android-${TARGET_TUPLE}
cd ${ANDROID_APP_DIR}
if [ ! -f config.h ]; then if [ ! -f config.h ]; then
echo "Bootstraping"
cd ${DAEMON_DIR} cd ${DAEMON_DIR}
./autogen.sh ./autogen.sh
cd "${DAEMON_DIR}/build-android-${TARGET_TUPLE}" cd "${DAEMON_BUILD_DIR}"
echo "Configuring with ${OPTS}" echo "Configuring with ${OPTS}"
CFLAGS="${EXTRA_CFLAGS}" \ CFLAGS="${EXTRA_CFLAGS}" \
CXXFLAGS="${EXTRA_CXXFLAGS}" \ CXXFLAGS="${EXTRA_CXXFLAGS}" \
...@@ -221,11 +184,6 @@ if [ ${ANDROID_API} = "android-21" ] ; then ...@@ -221,11 +184,6 @@ if [ ${ANDROID_API} = "android-21" ] ; then
# doesn't have any shm functions and/or symbols. */ # doesn't have any shm functions and/or symbols. */
export ac_cv_header_sys_shm_h=no export ac_cv_header_sys_shm_h=no
fi fi
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.
export ac_cv_lib_m_nanf=no
fi
echo "Building dring ${MAKEFLAGS}" echo "Building dring ${MAKEFLAGS}"
V=99 make $MAKEFLAGS V=99 make $MAKEFLAGS
...@@ -257,7 +215,7 @@ STATIC_LIBS_ALL="-llog -lOpenSLES -landroid \ ...@@ -257,7 +215,7 @@ STATIC_LIBS_ALL="-llog -lOpenSLES -landroid \
LIBRING_JNI_DIR=${ANDROID_APP_DIR}/app/src/main/libs/${ANDROID_ABI} LIBRING_JNI_DIR=${ANDROID_APP_DIR}/app/src/main/libs/${ANDROID_ABI}
echo "Building Ring JNI library for Android to ${LIBRING_JNI_DIR}" echo "Building Jami JNI library for Android to ${LIBRING_JNI_DIR}"
mkdir -p ${LIBRING_JNI_DIR} mkdir -p ${LIBRING_JNI_DIR}
${NDK_TOOLCHAIN_PATH}/clang++ \ ${NDK_TOOLCHAIN_PATH}/clang++ \
...@@ -267,11 +225,11 @@ ${NDK_TOOLCHAIN_PATH}/clang++ \ ...@@ -267,11 +225,11 @@ ${NDK_TOOLCHAIN_PATH}/clang++ \
-Wno-unused-function \ -Wno-unused-function \
-Wno-unused-parameter \ -Wno-unused-parameter \
${JNIDIR}/ring_wrapper.cpp \ ${JNIDIR}/ring_wrapper.cpp \
${RING_BUILD_DIR}/src/.libs/libring.a \ ${DAEMON_BUILD_DIR}/src/.libs/libring.a \
-static-libstdc++ \ -static-libstdc++ \
-isystem ${RING_SRC_DIR}/contrib/${TARGET_TUPLE}/include \ -isystem ${DAEMON_DIR}/contrib/${TARGET_TUPLE}/include \
-I${RING_SRC_DIR}/src \ -I${DAEMON_DIR}/src \
-L${RING_SRC_DIR}/contrib/${TARGET_TUPLE}/lib \ -L${DAEMON_DIR}/contrib/${TARGET_TUPLE}/lib \
${STATIC_LIBS_ALL} \ ${STATIC_LIBS_ALL} \
${STRIP_ARG} --std=c++14 -O3 -fPIC \ ${STRIP_ARG} --std=c++14 -O3 -fPIC \
-o ${LIBRING_JNI_DIR}/libring.so -o ${LIBRING_JNI_DIR}/libring.so
...@@ -4,32 +4,17 @@ if [ -z "$ANDROID_NDK" ]; then ...@@ -4,32 +4,17 @@ if [ -z "$ANDROID_NDK" ]; then
echo "Please set the ANDROID_NDK environment variable with its path." echo "Please set the ANDROID_NDK environment variable with its path."
exit 1 exit 1
fi fi
if [ -z "$NDK_TOOLCHAIN_PATH" ]; then
echo "Please set the NDK_TOOLCHAIN_PATH environment variable with its path."
exit 1
fi
if [ -z "$ANDROID_ABI" ]; then if [ -z "$ANDROID_ABI" ]; then
echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, armeabi, arm64-v8a, x86, x86_64 or mips." echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, armeabi, arm64-v8a, x86, x86_64 or mips."
exit 1 exit 1
fi fi
# ANDROID_API must be previously set by compile.sh or env.sh
if [ -z "$ANDROID_API" ];then if [ -z "$ANDROID_API" ];then
echo "ANDROID_API not set, call ./compile.sh first" echo "ANDROID_API not set, call ./compile.sh first"
exit 1 exit 1
fi fi
CPPFLAGS="-I${RING_SRC_DIR}/contrib/${TARGET_TUPLE}/include " CPPFLAGS="${CPPFLAGS} -I${DAEMON_DIR}/contrib/${TARGET_TUPLE}/include " \
LDFLAGS="$LDFLAGS -L${RING_SRC_DIR}/contrib/${TARGET_TUPLE}/lib " LDFLAGS="${LDFLAGS} -L${DAEMON_DIR}/contrib/${TARGET_TUPLE}/lib " \
SYSROOT=$NDK_TOOLCHAIN_PATH/sysroot
CPPFLAGS="$CPPFLAGS" \
CFLAGS="$CFLAGS ${RING_EXTRA_CFLAGS}" \
CXXFLAGS="$CXXFLAGS ${RING_EXTRA_CXXFLAGS}" \
LDFLAGS="$LDFLAGS ${RING_EXTRA_LDFLAGS}" \
CC="${CROSS_COMPILE}clang" \ CC="${CROSS_COMPILE}clang" \
CXX="${CROSS_COMPILE}clang++" \ CXX="${CROSS_COMPILE}clang++" \
NM="${CROSS_COMPILE}nm" \ NM="${CROSS_COMPILE}nm" \
...@@ -37,8 +22,8 @@ STRIP="${CROSS_COMPILE}strip" \ ...@@ -37,8 +22,8 @@ STRIP="${CROSS_COMPILE}strip" \
RANLIB="${CROSS_COMPILE}ranlib" \ RANLIB="${CROSS_COMPILE}ranlib" \
AR="${CROSS_COMPILE}ar" \ AR="${CROSS_COMPILE}ar" \
AS="${CROSS_COMPILE}as" \ AS="${CROSS_COMPILE}as" \
PKG_CONFIG_LIBDIR=$RING_SRC_DIR/contrib/$TARGET_TUPLE/lib/pkgconfig \ PKG_CONFIG_LIBDIR=$DAEMON_DIR/contrib/$TARGET_TUPLE/lib/pkgconfig \
$RING_SRC_DIR/configure --host=$TARGET_TUPLE $EXTRA_PARAMS \ $DAEMON_DIR/configure --host=$TARGET_TUPLE $EXTRA_PARAMS \
--disable-shared --with-opensl --without-dbus --without-alsa --without-pulse --without-speexdsp --enable-accel\ --disable-shared --with-opensl --without-dbus --without-alsa --without-pulse --without-speexdsp --enable-accel\
--prefix=$RING_SRC_DIR/install-android-$TARGET_TUPLE \ --prefix=$DAEMON_DIR/install-android-$TARGET_TUPLE \
$* $*
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment