summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2012-06-11 22:06:34 +0200
committerFrank Gevaerts <frank@gevaerts.be>2012-06-11 22:29:45 +0200
commitd1560e5869f27fd7f362a08bdb64878f11290046 (patch)
tree01e56e52b9626cf58d9877c1619a4b9d748585a1
parent268b725c405fc08d79b8e020f1fe89dfc963bf35 (diff)
downloadrockbox-d1560e5869f27fd7f362a08bdb64878f11290046.zip
rockbox-d1560e5869f27fd7f362a08bdb64878f11290046.tar.gz
rockbox-d1560e5869f27fd7f362a08bdb64878f11290046.tar.bz2
rockbox-d1560e5869f27fd7f362a08bdb64878f11290046.tar.xz
Add the Android/MIPS target
Change-Id: Iec1d2f08c8a43e486ab1696566a718b18598ff95
-rw-r--r--android/android.make4
-rw-r--r--firmware/SOURCES2
-rw-r--r--firmware/export/config.h5
-rwxr-xr-xtools/configure59
4 files changed, 67 insertions, 3 deletions
diff --git a/android/android.make b/android/android.make
index c0d72a7..0be3204 100644
--- a/android/android.make
+++ b/android/android.make
@@ -9,7 +9,7 @@
PACKAGE=org.rockbox
PACKAGE_PATH=org/rockbox
-BINLIB_DIR=$(BUILDDIR)/libs/armeabi
+BINLIB_DIR=$(BUILDDIR)/libs/$(ANDROID_ARCH)
ANDROID_DIR=$(ROOTDIR)/android
# this is a glibc compatibility hack to provide a get_nprocs() replacement.
@@ -70,7 +70,7 @@ APK := $(BUILDDIR)/rockbox.apk
_DIRS := $(BUILDDIR)/___/$(PACKAGE_PATH)
DIRS += $(subst ___,gen,$(_DIRS))
DIRS += $(subst ___,data,$(_DIRS))
-DIRS += $(BUILDDIR)/libs/armeabi
+DIRS += $(BUILDDIR)/libs/$(ANDROID_ARCH)
DIRS += $(CPUFEAT_BUILD)
DIRS += $(CLASSPATH)
diff --git a/firmware/SOURCES b/firmware/SOURCES
index aca752b..80267b4 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -634,7 +634,7 @@ target/arm/rk27xx/crt0.S
target/arm/crt0.S
#endif /* defined(CPU_*) */
-#elif defined(CPU_MIPS)
+#elif defined(CPU_MIPS) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
target/mips/mmu-mips.c
#if CONFIG_CPU==JZ4732
target/mips/ingenic_jz47xx/crt0.S
diff --git a/firmware/export/config.h b/firmware/export/config.h
index f654609..d9e32ce 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -1133,4 +1133,9 @@ Lyre prototype 1 */
#define HAVE_PITCHCONTROL
#endif
+#if (CONFIG_PLATFORM & PLATFORM_HOSTED) && defined(CPU_MIPS)
+/* We don't have our own MIPS hosted threading support yet */
+#define HAVE_SIGALTSTACK_THREADS
+#endif
+
#endif /* __CONFIG_H__ */
diff --git a/tools/configure b/tools/configure
index 2d93b37..a935d6a 100755
--- a/tools/configure
+++ b/tools/configure
@@ -681,6 +681,35 @@ androidcc () {
LDOPTS="-shared -ldl -llog --sysroot=$ANDROID_NDK_PATH/platforms/android-5/arch-arm $LDOPTS"
endian="little"
SHARED_LDFLAG="-shared"
+ ANDROID_ARCH=armeabi
+}
+
+androidmipscc () {
+ if [ -z "$ANDROID_SDK_PATH" ]; then
+ echo "ERROR: You need the Android SDK installed and have the ANDROID_SDK_PATH"
+ echo "environment variable point to the root directory of the Android SDK."
+ exit
+ fi
+ if [ -z "$ANDROID_NDK_PATH" ]; then
+ echo "ERROR: You need the Android NDK installed (r5 or higher) and have the ANDROID_NDK_PATH"
+ echo "environment variable point to the root directory of the Android NDK."
+ exit
+ fi
+ buildhost=$(uname | tr "[:upper:]" "[:lower:]")
+ gccchoice="4.4.3"
+ gcctarget="mipsel-linux-android-"
+ gccprefix=$ANDROID_NDK_PATH/toolchains/$gcctarget$gccchoice/prebuilt/$buildhost-x86
+ arch_version=32 # FIXME: autodetect version (32 or 64)
+ PATH=$PATH:$gccprefix/bin
+ prefixtools $gcctarget
+ GCCOPTS=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib// -e s/-Wundef//`
+ GCCOPTS="$GCCOPTS -march=mips32 -mtune=r4600 -mno-mips16 -mno-long-calls -fomit-frame-pointer \
+ --sysroot=$ANDROID_NDK_PATH/platforms/android-14/arch-mips -fPIC"
+ GLOBAL_LDOPTS="-Wl,-z,defs -Wl,-z,noexecstack"
+ LDOPTS="-shared -ldl -llog --sysroot=$ANDROID_NDK_PATH/platforms/android-14/arch-mips $LDOPTS"
+ endian="little"
+ SHARED_LDFLAG="-shared"
+ ANDROID_ARCH=mips
}
whichadvanced () {
@@ -1293,6 +1322,7 @@ cat <<EOF
203) Nokia N900 190) HM-60x
204) Pandora 191) HM-801
205) Samsung YP-R0
+ 206) Android MIPS
EOF
buildfor=`input`;
@@ -3316,6 +3346,34 @@ fi
t_model="app"
;;
+ 206|androidmips)
+ application="yes"
+ target_id=74
+ modelname="androidmips"
+ target="ANDROID"
+ app_type="android"
+ app_set_lcd_size
+ sharedir="/data/data/org.rockbox/app_rockbox/rockbox"
+ bindir="/data/data/org.rockbox/lib"
+ libdir="/data/data/org.rockbox/app_rockbox"
+ memory=8
+ uname=`uname`
+ androidmipscc
+ tool="cp "
+ boottool="cp "
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ output="librockbox.so"
+ bootoutput="librockbox.so"
+ appextra="recorder:gui:radio:hosted/android"
+ plugins="yes"
+ swcodec="yes"
+ # architecture, manufacturer and model for the target-tree build
+ t_cpu="hosted"
+ t_manufacturer="android"
+ t_model="app"
+ ;;
+
*)
echo "Please select a supported target platform!"
exit 7
@@ -3944,6 +4002,7 @@ export ROCKBOX_BINARY_PATH=${bindir}
export ROCKBOX_LIBRARY_PATH=${libdir}
export SDLCONFIG=${sdl}
export LCDORIENTATION=${lcd_orientation}
+export ANDROID_ARCH=${ANDROID_ARCH}
CONFIGURE_OPTIONS=${cmdline}