Provide instructions on creating curl_config.h
authorDan Fandrich <dan@coneharvesters.com>
Tue, 15 Sep 2009 22:35:49 +0000 (22:35 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Tue, 15 Sep 2009 22:35:49 +0000 (22:35 +0000)
Android.mk

index c5bc6fc..b8f3a0e 100644 (file)
@@ -1,15 +1,37 @@
 # Google Android makefile for curl and libcurl
+#
 # Place the curl source (including this makefile) into external/curl/ in the
 # Android source tree.  Then build them with 'make curl' or just 'make libcurl'
-# from the Android root.
+# from the Android root. Tested with Android 1.5
 #
 # Note: you must first create a curl_config.h file by running configure in the
-# Android environment. I haven't found an easy way to do this yet. If there is
-# no easy way, a static config-android.h may need to be created and checked in
-# to the libcurl source tree.
+# Android environment. The only way I've found to do this is tricky. Perform a
+# normal Android build with libcurl in the source tree, providing the target
+# "showcommands" to make. The build will eventually fail (because curl_config.h
+# doesn't exist yet), but the compiler commands used to build curl will be
+# shown. Now, from the external/curl/ directory, run curl's normal configure
+# command with flags that match what Android itself uses. This will mean
+# putting the compiler directory into the PATH, putting the -I, -isystem and
+# -D options into CPPFLAGS, putting the -m, -f, -O and -nostdlib options into
+# CFLAGS, and putting the -Wl, -L and -l options into LIBS, along with the path
+# to the files libgcc.a, crtbegin_dynamic.o, and ccrtend_android.o. Remember
+# that the paths must be absolute since you will not be running configure from
+# the same directory as the Android make.  The normal cross-compiler options
+# must also be set.
+#
+# The end result will be a configure command that looks something like this
+# (the environment variable A is set to the Android root path):
+#
+#  A=`realpath ../..` && \
+#  PATH="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/bin:$PATH" \
+#  ./configure --host=arm-linux CC=arm-eabi-gcc \
+#  CPPFLAGS="-I $A/system/core/include ..." \
+#  CFLAGS="-fno-exceptions -Wno-multichar ..." \
+#  LIB="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/lib/gcc/arm-eabi/X\
+#  /interwork/libgcc.a ..." \
 #
 # Dan Fandrich
-# July 2009
+# September 2009
 
 LOCAL_PATH:= $(call my-dir)