cURL / Mailing Lists / curl-library / Single Mail

curl-library

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

From: Cédric Deltheil <cedric_at_moodstocks.com>
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 Android.mk 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__"
#endif
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:
FOO: ANDROID
On the other hand, if I build it with the arm-linux-androideabi-gcc from the standalone toolchain (android-9) I get:
FOO: __ANDROID__
Cédric

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2011-12-20