cURL / Mailing Lists / curl-library / Single Mail


Re: [PATCH] curl.h: add __ANDROID__ macro check

From: Cédric Deltheil <>
Date: Tue, 20 Dec 2011 14:11:04 +0100

Le mardi 20 décembre 2011 à 12:43, Daniel Stenberg a écrit :
> On Tue, 20 Dec 2011, Cédric Deltheil wrote:
> > Please find attached a (minor) patch that fixes cURL cross-compilation when
> > working with the Android Standalone Toolchain.
> >
> This makes me very curious. Does this mean they removed the ANDROID symbol or
> how did we end up using that in the first place? Do we really need to check
> both android symbols now?

I would say we really need to check both since I've observed that:
* if you use file(s) and the 'ndk-build' script (aka vanilla way), ANDROID is predefined (see -DANDROID extra C flag),
* if you use the Android Standalone Toolchain, then __ANDROID__ is predefined as stated by the compiler:

/path/to/arm-linux-androideabi-gcc -E -dM - < /dev/null | grep -i android
#define __ANDROID__ 1

To confirm this in practice, I've created a small executable:

#include <stdio.h>
#if defined(ANDROID)
  #define FOO "ANDROID"
#elif defined(__ANDROID__)
  #define FOO "__ANDROID__"
int main(void) {
  printf("FOO: %s\n", FOO);
  return 0;
When I build this with 'ndk-build' (with Android NDK r7) and test it on a device I obtain:
On the other hand, if I build it with the arm-linux-androideabi-gcc from the standalone toolchain (android-9) I get:

List admin:
Received on 2011-12-20