Skip to content

Instantly share code, notes, and snippets.

@qrtt1
Created July 11, 2012 18:42
Show Gist options
  • Save qrtt1/3092282 to your computer and use it in GitHub Desktop.
Save qrtt1/3092282 to your computer and use it in GitHub Desktop.
ndk-path-helper
#!/bin/bash
PREFIX=./OUTPUT
ADDITIONAL_CONFIGURE_FLAG=
MY_NDK_LIB=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-mips/usr/lib
MY_NDK_INCLUDE=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-mips/usr/include
MY_NDK_CC_PREFIX=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/bin/mipsel-linux-android-
MY_NDK_CC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/bin/mipsel-linux-android-gcc
MY_NDK_LIBGCC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/lib/gcc/mipsel-linux-android/4.4.3/libgcc.a
export CC=$MY_NDK_CC
export CFLAGS="-I$MY_NDK_INCLUDE -g -std=c99 -O3 -fpic -DANDROID -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS "
export LDFLAGS="-Wl,-rpath-link=$MY_NDK_LIB -L$MY_NDK_LIB -nostdlib -lc -lm -ldl -llog"
export CPP="$MY_NDK_CC -I$MY_NDK_INCLUDE -E"
./configure \
--disable-gtktest \
--host=mips \
--disable-frontend \
--disable-decoder \
--enable-shared=libmp3lame \
--prefix=`pwd`/android
make install
"$MY_NDK_CC_PREFIX"ld -rpath-link=$MY_NDK_LIB -L$MY_NDK_LIB -soname libmp3lame.so \
-shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o libmp3lame.so \
libmp3lame/*.o \
-lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker \
$MY_NDK_LIBGCC
import os
from os.path import join
def main(ndk_home, arch, api_level):
env = {}
for root, dirs, files in os.walk(ndk_home):
for file in files:
if "toolchains" in root and "gcc" in file and "bin" in root and len(file) > len("gcc") and file.endswith("gcc") and arch in root:
path_to_gcc = os.path.join(root, file)
path_to_gcc_prefix = path_to_gcc[0:len(path_to_gcc) - len("gcc")]
env['MY_NDK_CC'] = path_to_gcc
env['MY_NDK_CC_PREFIX'] = path_to_gcc_prefix
if arch in root and "libgcc.a" in file and file.endswith("libgcc.a"):
short_prefix = path_to_gcc_prefix[:-1].split('/')[-1]
# x86 case
if "86" in arch and "86" not in short_prefix:
continue
if not env.has_key('MY_NDK_LIBGCC') and short_prefix in root:
env['MY_NDK_LIBGCC'] = os.path.join(root, file)
for dir in dirs:
if "platforms" in root and "/usr" in root and "lib" in dir and arch in root and api_level in root:
env['MY_NDK_LIB'] = os.path.join(root, dir)
if "platforms" in root and "/usr" in root and "include" in dir and arch in root and api_level in root:
env['MY_NDK_INCLUDE'] = os.path.join(root, dir)
for k, v in env.iteritems():
print "%s=%s" % (k, v)
if __name__ == "__main__":
print "cc for arm"
main("/Users/qrtt1/app/android-ndk-r6b", "arm", "android-8")
print
print "cc for mips"
main("/Users/qrtt1/app/NDKs/android-ndk-r8", "mips", "android-9")
print
print "cc for i686"
main("/Users/qrtt1/app/NDKs/android-ndk-r8", "x86", "android-9")
"""
qty:android-ndk-r6b qrtt1$ python my_ndk_tool.py
cc for arm
MY_NDK_LIB=/Users/qrtt1/app/android-ndk-r6b/platforms/android-8/arch-arm/usr/lib
MY_NDK_INCLUDE=/Users/qrtt1/app/android-ndk-r6b/platforms/android-8/arch-arm/usr/include
MY_NDK_CC_PREFIX=/Users/qrtt1/app/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-
MY_NDK_CC=/Users/qrtt1/app/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-gcc
MY_NDK_LIBGCC=/Users/qrtt1/app/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
cc for mips
MY_NDK_LIB=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-mips/usr/lib
MY_NDK_INCLUDE=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-mips/usr/include
MY_NDK_CC_PREFIX=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/bin/mipsel-linux-android-
MY_NDK_CC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/bin/mipsel-linux-android-gcc
MY_NDK_LIBGCC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/mipsel-linux-android-4.4.3/prebuilt/darwin-x86/lib/gcc/mipsel-linux-android/4.4.3/libgcc.a
cc for i686
MY_NDK_LIB=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-x86/usr/lib
MY_NDK_INCLUDE=/Users/qrtt1/app/NDKs/android-ndk-r8/platforms/android-9/arch-x86/usr/include
MY_NDK_CC_PREFIX=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/darwin-x86/bin/i686-android-linux-
MY_NDK_CC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/darwin-x86/bin/i686-android-linux-gcc
MY_NDK_LIBGCC=/Users/qrtt1/app/NDKs/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/darwin-x86/lib/gcc/i686-android-linux/4.4.3/libgcc.a
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment