Ignore:
Timestamp:
Feb 11, 2019 3:43:51 AM (6 years ago)
Author:
nanang
Message:

Fixed #2177: Updated configure-android script for NDK r17, r18, r19.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/configure-android

    r5666 r5932  
    33 
    44F="configure-android" 
     5IS_USING_LLVM="0" 
    56 
    67if test "$*" = "--help" -o "$*" = "-h"; then 
     
    3839fi 
    3940 
     41NDK_VER=`sed -n -e 's/.*Pkg.Revision *= *\([0-9]\+\).*/\1/p' ${ANDROID_NDK_ROOT}/source.properties` 
     42 
    4043if test "x$APP_PLATFORM" = "x"; then 
    4144  APP_PLATFORM=`ls ${ANDROID_NDK_ROOT}/platforms/ | sed 's/android-//' | sort -gr | head -1` 
     
    4548 
    4649if test "x$TARGET_ABI" = "x"; then 
    47   TARGET_ABI="armeabi" 
     50  # armeabi was removed since NDK r17 
     51  if [ "${NDK_VER}" -ge "17" ]; then 
     52    TARGET_ABI="armeabi-v7a" 
     53  else 
     54    TARGET_ABI="armeabi" 
     55  fi 
    4856  echo "$F: TARGET_ABI not specified, using ${TARGET_ABI}" 
    4957fi 
     
    5664 
    5765 
    58 if test "$1" = "--use-ndk-cflags"; then 
    59   shift 
    60   ADD_CFLAGS="1" 
     66if test "$1" = "--use-ndk-cflags" || [ "${NDK_VER}" -ge "17" ]; then 
     67  if test "$1" = "--use-ndk-cflags"; then 
     68    shift # don't pass this param to main configure script 
     69  fi 
     70 
     71  ADD_CFLAGS="0" 
     72  ADD_CXXFLAGS="0" 
    6173  ADD_NDK_TOOLCHAIN="0" 
    6274  ADD_NDK_TARGET="0" 
     
    7789  fi 
    7890 
    79   # echo "=====" 
    80   # echo "NDK_OUT : ${NDK_OUT}" 
    81   # echo "=====" 
     91  echo "=====" 
     92  echo "NDK_OUT : ${NDK_OUT}" 
     93  echo "=====" 
    8294 
    8395  for i in $NDK_OUT; do 
    84     if test "x${NDK_CXX}" != "x" -a "$i" = "-o"; then break; fi 
    8596 
    8697    # Parse NDK CXXFLAGS 
    87     if test "x${NDK_CXX}" != "x" -a "x`echo $i|grep 'dummy'`" = "x"; then 
     98    if test "${ADD_CXXFLAGS}" = "1"; then 
     99      if test "$i" = "-o"; then 
     100        ADD_CXXFLAGS="0" 
     101        continue 
     102      fi 
     103      if test "x`echo $i|grep 'dummy'`" != "x"; then 
     104        continue 
     105      fi 
    88106      if test "x`echo $i|grep '\-\-sysroot='`" != "x"; then 
    89107        ANDROID_SYSROOT=`echo $i|sed 's/--sysroot=//'`; 
    90108      fi 
    91109      NDK_CXXFLAGS="${NDK_CXXFLAGS} $i" 
    92     fi 
     110      continue 
     111    fi 
     112 
    93113    # Parse NDK CFLAGS 
    94     if test "x${NDK_CC}" != "x" -a "x`echo $i|grep 'dummy'`" = "x" -a "${ADD_CFLAGS}" = "1"; then 
    95       if test "$i" = "-c"; then ADD_CFLAGS="0"; else 
    96         if test "x`echo $i|grep ${IGNORE_CFLAGS}`" = "x"; then 
     114    if test "${ADD_CFLAGS}" = "1"; then 
     115      if test "$i" = "-c"; then 
     116        ADD_CFLAGS="0" 
     117        continue 
     118      fi 
     119      if test "x`echo $i|grep 'dummy'`" != "x"; then 
     120        continue 
     121      fi 
     122      if test "x`echo $i|grep ${IGNORE_CFLAGS}`" = "x"; then 
    97123          if test "${ADD_NDK_TOOLCHAIN}" = "0" -a "x`echo $i|grep '\-gcc-toolchain'`" != "x"; then 
    98124            ADD_NDK_TOOLCHAIN="1" 
     
    107133          fi 
    108134          NDK_CFLAGS="${NDK_CFLAGS} $i" 
    109         fi 
    110       fi 
    111     fi 
    112     # Find gcc or clang toolchain 
     135      fi 
     136      continue 
     137    fi 
     138 
     139    # Find gcc or clang 
    113140    if test "x${NDK_CC}" = "x"; then 
    114141      if test "x`echo $i | grep 'gcc'`" != "x" -o "x`echo $i | grep 'clang'`" != "x"; then 
    115142        NDK_CC=$i 
    116       fi 
    117     fi 
    118     # Find g++ toolchain 
    119     if test "x`echo $i | grep 'g++'`" != "x"; then 
    120       NDK_CXX=$i 
     143        ADD_CFLAGS="1" 
     144        if test "x`echo ${NDK_CC} | grep 'clang'`" != "x"; then 
     145          IS_USING_LLVM="1" 
     146          #echo "---using llvm" 
     147        fi 
     148      fi 
     149    fi 
     150 
     151    # Find g++ or clang++ 
     152    if test "x${NDK_CXX}" = "x"; then 
     153      if test "x`echo $i | grep 'g++'`" != "x"; then 
     154        NDK_CXX=$i 
     155        ADD_CXXFLAGS="1" 
     156      fi 
     157    fi 
     158 
     159    # Find ar tool 
     160    if test "x${NDK_AR}" = "x" -a "x${NDK_CC}" != "x" -a "x`echo $i|grep '\-ar'`" != "x"; then 
     161      if test "$(dirname \"${NDK_CC}\")" = "$(dirname \"${i}\")"; then 
     162        NDK_AR=$i 
     163        #echo "--- found AR=${NDK_AR}" 
     164      fi 
     165    fi 
     166 
     167    # Find ranlib tool 
     168    if test "x${NDK_RANLIB}" = "x" -a "x${NDK_CC}" != "x" -a "x`echo $i|grep '\-ranlib'`" != "x"; then 
     169      if test "$(dirname \"${NDK_CC}\")" = "$(dirname \"${i}\")"; then 
     170        NDK_RANLIB=$i 
     171        #echo "--- found RANLIB=${NDK_RANLIB}" 
     172      fi 
    121173    fi 
    122174  done 
    123  
    124   echo "NDK_CC : ${NDK_CC}" 
    125175 
    126176  # Get target host from NDK toolchain dir name 
     
    130180  TARGET_HOST=`echo ${TARGET_HOST} | sed -e 's/\-[0-9\.]*$//'` 
    131181 
     182  # Get target from '-target' param when TARGET_HOST is 'llvm' 
     183  if test "$TARGET_HOST" = "llvm"; then 
     184    TARGET_HOST=`echo ${NDK_CFLAGS} | sed -e 's/.*-target \([^- ]*\).*/\1/'` 
     185  fi 
     186 
    132187  # Make sure target host string has 'linux-android' in it 
    133188  if test "x`echo ${TARGET_HOST} | grep 'linux-android'`" = "x"; then 
     
    138193  # Set the binutils 
    139194  if test "x${NDK_TOOLCHAIN}" = "x"; then 
    140     export AR=`echo ${NDK_CXX}|sed 's/-g++/-ar/'`; 
    141     export RANLIB=`echo ${NDK_CXX}|sed 's/-g++/-ranlib/'`; 
     195    if test "x${NDK_AR}" = "x"; then 
     196      NDK_CC_DIR=$(dirname "${NDK_CC}") 
     197      NDK_AR=`find ${NDK_CC_DIR} -name "*ar" | grep -m 1 -v "gcc"` 
     198    fi 
    142199    export LDFLAGS="${LDFLAGS} --sysroot=${ANDROID_SYSROOT}" 
    143200  else 
    144201    # find ar and ranlib 
    145     TC_AR=`find ${NDK_TOOLCHAIN}/bin/ -name "*-ar" | grep -v "gcc"` 
    146     TC_RANLIB=`find ${NDK_TOOLCHAIN}/bin/ -name "*-ranlib" | grep -v "gcc"` 
    147     if test "x${TC_AR}" != "x" -a "x${TC_RANLIB}" != "x"; then 
    148       export AR=$TC_AR 
    149       export RANLIB=$TC_RANLIB 
    150     fi  
    151     TARGET_HOST="arm-linux-androideabi" 
     202    if test "x${NDK_AR}" = "x"; then 
     203      NDK_AR=`find ${NDK_TOOLCHAIN}/bin/ -name "*-ar" | grep -m 1 -v "gcc"` 
     204    fi 
     205    if test "x${NDK_RANLIB}" = "x"; then 
     206      NDK_RANLIB=`find ${NDK_TOOLCHAIN}/bin/ -name "*-ranlib" | grep -m 1 -v "gcc"` 
     207    fi 
    152208    export LDFLAGS="${LDFLAGS} --sysroot=${ANDROID_SYSROOT} -target ${NDK_TARGET} -gcc-toolchain ${NDK_TOOLCHAIN}" 
    153   fi   
     209  fi 
     210 
     211  if test "x${NDK_RANLIB}" = "x"; then 
     212    NDK_RANLIB="${NDK_AR} s" 
     213  fi 
     214 
     215  TC_AR=${NDK_AR} 
     216  TC_RANLIB=${NDK_RANLIB} 
     217  if test "x${TC_AR}" != "x" -a "x${TC_RANLIB}" != "x"; then 
     218    export AR="${TC_AR}" 
     219    export RANLIB="${TC_RANLIB}" 
     220  fi 
    154221 
    155222  export TARGET_ABI="${TARGET_ABI}" 
     
    206273# Note: STL for pjsua2 sample app is specified in pjsip-apps/src/swig/java/android/jni/Application.mk 
    207274 
    208 if test "x${NDK_TOOLCHAIN}" = "x"; then 
     275if test "${IS_USING_LLVM}" = "1"; then 
     276  # llvm 
     277  STDCPP_TC="${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++" 
     278  STDCPP_CFLAGS="-I${STDCPP_TC}/include" 
     279  STDCPP_LIBS="-lc++_static -lc++abi" 
     280  STDCPP_LDFLAGS="-L${STDCPP_TC}/libs/${TARGET_ABI}/" 
     281else 
    209282  # gnustl 
    210283  STDCPP_TC_VER=`ls -d ${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/[0-9]* | sort -gr | head -1` 
     
    212285  STDCPP_LIBS="-lgnustl_static" 
    213286  STDCPP_LDFLAGS="-L${STDCPP_TC_VER}/libs/${TARGET_ABI}/" 
    214 else 
    215   # llvm 
    216   STDCPP_TC="${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++" 
    217   STDCPP_CFLAGS="-I${STDCPP_TC}/include" 
    218   STDCPP_LIBS="-lc++_static -lc++abi" 
    219   STDCPP_LDFLAGS="-L${STDCPP_TC}/libs/${TARGET_ABI}/" 
    220287fi 
    221288 
     
    232299if test "1" = "1"; then 
    233300  echo "$F: calling ./configure with env vars:" 
     301  echo " NDK_TOOLCHAIN = ${NDK_TOOLCHAIN}" 
    234302  echo " CC = ${CC}" 
    235303  echo " CXX = ${CXX}" 
Note: See TracChangeset for help on using the changeset viewer.