PHP for android
Update 201001101240: Sending -mthumb to the compiler makes the binary more happy. i replaced the file
Update 201001100319: The php is not so usefull.. strlen() and count() segfaulting, i have to try howto link it against bionic
1. Get toolchains from CodeSourcery (Choose ARM GNU/Linux and IA32 GNU/Linux).
2. Get php last php source code.
3. Unpack php, run ./configure --disable-all
4. Now you have to patch PHP Makefile, libtool and zend_float.h.
Please make sure you changing the /home/git/arm-2009q3/ to the CodeSourcery location):
(Sorry for the the hacks, i'm sure someone can use the ./configure to make it "the proper way")
diff -ubr php-5.3.1/libtool php-5.3.1patched/libtool
--- php-5.3.1/libtool 2010-01-09 22:28:17.276990337 +0200
+++ php-5.3.1patched/libtool 2010-01-08 12:53:19.380286728 +0200
@@ -70,9 +70,9 @@
host_os=linux-gnu
# The build system.
-build_alias=i686-pc-linux-gnu
-build=i686-pc-linux-gnu
-build_os=linux-gnu
+build_alias=arm
+build=arm
+build_os=arm
# An echo program that does not interpret backslashes.
echo="/bin/echo"
@@ -82,10 +82,10 @@
AR_FLAGS="cru"
# A C compiler.
-LTCC="gcc"
+LTCC="/home/git/arm-2009q3/bin/arm-none-linux-gnueabi-gcc"
# A language-specific compiler.
-CC="gcc"
+CC="/home/git/arm-2009q3/bin/arm-none-linux-gnueabi-gcc"
# Is the compiler the GNU C compiler?
with_gcc=yes
@@ -94,7 +94,7 @@
EGREP="grep -E"
# The linker used to build libraries.
-LD="/usr/bin/ld"
+LD="/home/git/arm-2009q3/bin/arm-none-linux-gnueabi-ld"
# Whether we need hard or soft links.
LN_S="ln -s"
diff -ubr php-5.3.1/Makefile php-5.3.1patched/Makefile
--- php-5.3.1/Makefile 2010-01-09 22:28:17.417020486 +0200
+++ php-5.3.1patched/Makefile 2010-01-09 22:04:13.220990486 +0200
@@ -17,10 +17,10 @@
SHLIB_SUFFIX_NAME = so
SHLIB_DL_SUFFIX_NAME = so
SAPI_CLI_PATH = sapi/cli/php
-BUILD_CLI = $(LIBTOOL) --mode=link $(CC) -export-dynamic $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_PROGRAM) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_CLI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $(SAPI_CLI_PATH)
+BUILD_CLI = $(LIBTOOL) --mode=link $(CC) -all-static $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_PROGRAM) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_CLI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $(SAPI_CLI_PATH)
INSTALL_CLI = $(mkinstalldirs) $(INSTALL_ROOT)$(bindir); $(INSTALL) -m 0755 $(SAPI_CLI_PATH) $(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)
SAPI_CGI_PATH = sapi/cgi/php-cgi
-BUILD_CGI = $(LIBTOOL) --mode=link $(CC) -export-dynamic $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_PROGRAM) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $(SAPI_CGI_PATH)
+BUILD_CGI = $(LIBTOOL) --mode=link $(CC) -all-static $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_PROGRAM) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $(SAPI_CGI_PATH)
PROG_SENDMAIL =
PHP_INSTALLED_SAPIS = cli cgi
PHP_CLI_TARGET = $(SAPI_CLI_PATH)
@@ -49,10 +49,10 @@
datarootdir = /usr/local/php
sysconfdir = ${prefix}/etc
EXEEXT =
-CC = gcc
+CC = /home/git/arm-2009q3/bin/arm-none-linux-gnueabi-gcc
CFLAGS = $(CFLAGS_CLEAN) -prefer-non-pic -static
CFLAGS_CLEAN = -g -O2 -fvisibility=hidden
-CFLAGS_CLEAN = -g -O2 -fvisibility=hidden
-CPP = gcc -E
+CFLAGS_CLEAN = -g -O2 -fvisibility=hidden -mthumb
+CPP = /home/git/arm-2009q3/bin/arm-none-linux-gnueabi-gcc -E
CPPFLAGS =
CXX =
CXXFLAGS = -prefer-non-pic -static
diff -ubr php-5.3.1/Zend/zend_float.h php-5.3.1patched/Zend/zend_float.h
--- php-5.3.1/Zend/zend_float.h 2009-03-18 12:18:10.000000000 +0200
+++ php-5.3.1patched/Zend/zend_float.h 2010-01-09 21:34:49.225520322 +0200
@@ -81,6 +81,11 @@
# pragma fenv_access (on)
#endif /* _MSC_VER */
+#undef HAVE__CONTROLFP_S
+#undef HAVE__CONTROLFP
+#undef HAVE__FPU_SETCW
+#undef HAVE_FPU_INLINE_ASM_X86
+
#ifdef HAVE__CONTROLFP_S
/* float.h defines _controlfp_s */
4. now use android adb to push the file into android:
adb push ./sapi/cli/php /data
5. now from the emulator :
# ./php -v
./php -v
PHP 5.3.1 (cli) (built: Jan 9 2010 22:07:18)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
#
Enjoy! (here the binary cli if you are too lazy)
moshe *at> icomsw.com