[build]: Add path detection for different ndk

Support r10d and r16b first.

Change-Id: I289813c26b79ad4a1b038fc07f8375832fe78162
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2019-10-10 18:02:59 +08:00
parent 37602b5bb9
commit 208f0004a5
3 changed files with 133 additions and 30 deletions

View File

@@ -166,6 +166,8 @@ if(GCC)
add_definitions(-Wno-multichar) add_definitions(-Wno-multichar)
# add PIC flag # add PIC flag
add_definitions(-fPIC) add_definitions(-fPIC)
# disable exception for C++
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif(GCC) endif(GCC)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------

View File

@@ -1,39 +1,93 @@
#!/bin/bash #!/bin/bash
# Run this from within a bash shell # Run this from within a bash shell
HOST_IP=`hostname --all-ip-addresses`
if [ ${HOST_IP} == "10.10.10.65" ] || [ ${HOST_IP} == "10.10.10.67" ]; then
ANDROID_NDK=/home/pub/ndk/android-ndk-r10d/
else
ANDROID_NDK=~/work/android/ndk/android-ndk-r10d/
fi
PLATFORM=$ANDROID_NDK/platforms/android-21/arch-arm64
MAKE_PROGRAM=`which make` MAKE_PROGRAM=`which make`
cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake \ ANDROID_NDK="No ndk path found. You should add your ndk path"
TOOLCHAIN_FILE="no toolchain file found, Please fix ndk path"
FOUND_NDK=
# Search r10d ndk
# NOTE: r10d ndk do not have toolchain file
if [ ! ${FOUND_NDK} ]; then
NDK_R10D_PATHS=(
/home/pub/ndk/android-ndk-r10d/
~/work/android/ndk/android-ndk-r10d/
)
for NDK_PATH in ${NDK_R10D_PATHS[@]};
do
if [ -d ${NDK_PATH} ]; then
echo "found r10d ndk ${NDK_PATH}"
FOUND_NDK=true
ANDROID_NDK=${NDK_PATH}
TOOLCHAIN_FILE=../android.toolchain.cmake
NATIVE_API_LEVEL="android-21"
TOOLCHAIN_NAME="aarch64-linux-android-4.9"
fi
done
fi
# Search r16b ndk
# NOTE: r16b use ndk toolchain file
if [ ! ${FOUND_NDK} ]; then
NDK_R16B_PATHS=(
/home/pub/ndk/android-ndk-r16b/
~/work/android/ndk/android-ndk-r16b/
)
for NDK_PATH in ${NDK_R16B_PATHS[@]};
do
if [ -d ${NDK_PATH} ]; then
echo "found r16 ndk ${NDK_PATH}"
FOUND_NDK=true
ANDROID_NDK=${NDK_PATH}
TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
NATIVE_API_LEVEL="android-27"
TOOLCHAIN_NAME="aarch64-linux-android-4.9"
fi
done
fi
if [ ! ${FOUND_NDK} ]; then
echo ${ANDROID_NDK}
echo ${TOOLCHAIN_FILE}
exit
fi
PLATFORM=$ANDROID_NDK/platforms/${NATIVE_API_LEVEL}/arch-arm64
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_MAKE_PROGRAM=${MAKE_PROGRAM} \ -DCMAKE_MAKE_PROGRAM=${MAKE_PROGRAM} \
-DANDROID_FORCE_ARM_BUILD=ON \ -DANDROID_FORCE_ARM_BUILD=ON \
-DANDROID_NDK=${ANDROID_NDK} \ -DANDROID_NDK=${ANDROID_NDK} \
-DANDROID_SYSROOT=${PLATFORM} \ -DANDROID_SYSROOT=${PLATFORM} \
-DANDROID_ABI="arm64-v8a" \ -DANDROID_ABI="arm64-v8a" \
-DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-4.9" \ -DANDROID_TOOLCHAIN_NAME=${TOOLCHAIN_NAME} \
-DANDROID_NATIVE_API_LEVEL=android-21 \ -DANDROID_NATIVE_API_LEVEL=${NATIVE_API_LEVEL} \
-DANDROID_STL=system \ -DANDROID_STL=system \
-DRKPLATFORM=ON \ -DMPP_PROJECT_NAME=mpp \
-DVPU_PROJECT_NAME=vpu \
-DHAVE_DRM=ON \ -DHAVE_DRM=ON \
../../../ ../../../
cmake --build .
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# usefull cmake debug flag # usefull cmake debug flag
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
#-DMPP_NAME="rockchip_mpp" \
#-DVPU_NAME="rockchip_vpu" \
#-DHAVE_DRM \
#-DCMAKE_BUILD_TYPE=Debug \ #-DCMAKE_BUILD_TYPE=Debug \
#-DCMAKE_VERBOSE_MAKEFILE=true \ #-DCMAKE_VERBOSE_MAKEFILE=true \
#--trace \ #--trace \
#--debug-output \ #--debug-output \
#cmake --build . --clean-first -- V=1 #cmake --build . --clean-first -- V=1
cmake --build .
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# test script # test script
@@ -45,5 +99,3 @@ cmake --build .
#adb shell rk_log_test #adb shell rk_log_test
#adb shell rk_thread_test #adb shell rk_thread_test
#adb logcat -d|tail -30 #adb logcat -d|tail -30

View File

@@ -1,29 +1,81 @@
#!/bin/bash #!/bin/bash
# Run this from within a bash shell # Run this from within a bash shell
HOST_IP=`hostname --all-ip-addresses`
if [ ${HOST_IP} == "10.10.10.65" ] || [ ${HOST_IP} == "10.10.10.67" ]; then
ANDROID_NDK=/home/pub/ndk/android-ndk-r10d/
else
ANDROID_NDK=~/work/android/ndk/android-ndk-r10d/
fi
PLATFORM=$ANDROID_NDK/platforms/android-21/arch-arm
MAKE_PROGRAM=`which make` MAKE_PROGRAM=`which make`
cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake \ ANDROID_NDK="No ndk path found. You should add your ndk path"
TOOLCHAIN_FILE="no toolchain file found, Please fix ndk path"
FOUND_NDK=
# Search r10d ndk
# NOTE: r10d ndk do not have toolchain file
if [ ! ${FOUND_NDK} ]; then
NDK_R10D_PATHS=(
/home/pub/ndk/android-ndk-r10d/
~/work/android/ndk/android-ndk-r10d/
)
for NDK_PATH in ${NDK_R10D_PATHS[@]};
do
if [ -d ${NDK_PATH} ]; then
echo "found r10d ndk ${NDK_PATH}"
FOUND_NDK=true
ANDROID_NDK=${NDK_PATH}
TOOLCHAIN_FILE=../android.toolchain.cmake
NATIVE_API_LEVEL="android-21"
TOOLCHAIN_NAME="arm-linux-androideabi-4.8"
fi
done
fi
# Search r16b ndk
# NOTE: r16b use ndk toolchain file
if [ ! ${FOUND_NDK} ]; then
NDK_R16B_PATHS=(
/home/pub/ndk/android-ndk-r16b/
~/work/android/ndk/android-ndk-r16b/
)
for NDK_PATH in ${NDK_R16B_PATHS[@]};
do
if [ -d ${NDK_PATH} ]; then
echo "found r16 ndk ${NDK_PATH}"
FOUND_NDK=true
ANDROID_NDK=${NDK_PATH}
TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
NATIVE_API_LEVEL="android-27"
TOOLCHAIN_NAME="arm-linux-androideabi-4.9"
fi
done
fi
if [ ! ${FOUND_NDK} ]; then
echo ${ANDROID_NDK}
echo ${TOOLCHAIN_FILE}
exit
fi
PLATFORM=$ANDROID_NDK/platforms/${NATIVE_API_LEVEL}/arch-arm
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_MAKE_PROGRAM=${MAKE_PROGRAM} \ -DCMAKE_MAKE_PROGRAM=${MAKE_PROGRAM} \
-DANDROID_FORCE_ARM_BUILD=ON \ -DANDROID_FORCE_ARM_BUILD=ON \
-DANDROID_NDK=${ANDROID_NDK} \ -DANDROID_NDK=${ANDROID_NDK} \
-DANDROID_SYSROOT=${PLATFORM} \ -DANDROID_SYSROOT=${PLATFORM} \
-DANDROID_ABI="armeabi-v7a with NEON" \ -DANDROID_ABI="armeabi-v7a with NEON" \
-DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.8" \ -DANDROID_TOOLCHAIN_NAME=${TOOLCHAIN_NAME} \
-DANDROID_NATIVE_API_LEVEL=android-21 \ -DANDROID_NATIVE_API_LEVEL=${NATIVE_API_LEVEL} \
-DANDROID_STL=system \ -DANDROID_STL=system \
-DRKPLATFORM=ON \ -DMPP_PROJECT_NAME=mpp \
-DVPU_PROJECT_NAME=vpu \
-DHAVE_DRM=ON \ -DHAVE_DRM=ON \
../../../ ../../../
cmake --build .
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# usefull cmake debug flag # usefull cmake debug flag
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
@@ -36,7 +88,6 @@ cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake \
#--debug-output \ #--debug-output \
#cmake --build . --clean-first -- V=1 #cmake --build . --clean-first -- V=1
cmake --build .
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# test script # test script
@@ -48,5 +99,3 @@ cmake --build .
#adb shell rk_log_test #adb shell rk_log_test
#adb shell rk_thread_test #adb shell rk_thread_test
#adb logcat -d|tail -30 #adb logcat -d|tail -30