Message ID | 1556124939-7699-1-git-send-email-ruanzw@xiaopeng.com |
---|---|
State | Rejected |
Delegated to: | Petr Vorel |
Headers | show |
Series | [v2] include/mk/env_post.mk: enable __ANDROID__ definition for Android build | expand |
On 4/24/19 9:55 AM, Zhengwang Ruan wrote: > The definition of __ANDROID__ has been widely used to compile android-specific > things (i.e. busybox [1] [2], dnsmasq [3]), so we expected NDK to automatically > pass it to help build LTP for android, but unfortunately it didn't (it is tested > with android-ndk-r19c). Currently, we have to manually specify -D__ANDROID__ in > configure step before launch 'make ANDROID=1' command, and this is suffering for > those who don't have good knowledge of LTP, so it is necessary to enable it if > built for android. Hi Zhengwang I mentioned in the other thread but just to get it here also, __ANDROID__ seems to be defined for me by the NDK. Could you try the steps Sandeep shared? thanks, steve
Hi, > On 4/24/19 9:55 AM, Zhengwang Ruan wrote: > > The definition of __ANDROID__ has been widely used to compile android-specific > > things (i.e. busybox [1] [2], dnsmasq [3]), so we expected NDK to automatically > > pass it to help build LTP for android, but unfortunately it didn't (it is tested > > with android-ndk-r19c). Currently, we have to manually specify -D__ANDROID__ in > > configure step before launch 'make ANDROID=1' command, and this is suffering for > > those who don't have good knowledge of LTP, so it is necessary to enable it if > > built for android. > Hi Zhengwang I mentioned in the other thread but just to get it here also, > __ANDROID__ seems to be defined for me by the NDK. Could you try the steps > Sandeep shared? Using old way (getting standalone toolchain from NDK r19, using API 27 and define $AR, $CC, $LD, ... variables) confirms what Steve said [1]: -D__ANDROID__ is not defined on the command line (see below), but #error macro inside #ifdef __ANDROID__ guard is proved that arm-linux-androideabi-gcc defines it. Just for sure I tested the same using Sandeep's way (NDK r20-beta2, using variables with API 26) [2], it behaves the same. IMHO the patch is not needed. BTW minimal Android API for LTP is 26 (API 24 complains for missing hasmntopt()). > thanks, > steve Kind regards, Petr [1] /opt/android-standalone-toolchain.api-27/bin/arm-linux-androideabi-gcc --sysroot=/opt/android-standalone-toolchain.api-27/sysroot -I/opt/android-standalone-toolchain.api-27/sysroot/usr/include -I/include -g -O2 -fno-strict-aliasing -pipe -Wall -W -Wold-style-definition -I. -DLTPLIB -Werror-implicit-function-declaration --sysroot=/opt/android-standalone-toolchain.api-27/sysroot -I/opt/android-standalone-toolchain.api-27/sysroot/usr/include -I/include -I../include -I../include -I../include/old/ -c -o tst_kernel.o tst_kernel.c [2] /opt/android-ndk-r20-beta2/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang -g -O2 -g -O2 -fno-strict-aliasing -pipe -Wall -W -Wold-style-definition -I. -DLTPLIB -Werror-implicit-function-declaration -D_FORTIFY_SOURCE=2 -I../include -I../include -I../include/old/ -c -o tst_resource.o tst_resource.c
Hi Steve, Petr, Sandeep, -------- Original Message -------- From: Steve Muckle Sent: Wed, 24 Apr 2019 12:27:32 -0700 To: Zhengwang Ruan, Ltp, Petr Vorel, Sandeep Patil Cc: Subject: Re: [PATCH v2] include/mk/env_post.mk: enable __ANDROID__ definition for Android build > On 4/24/19 9:55 AM, Zhengwang Ruan wrote: >> The definition of __ANDROID__ has been widely used to compile >> android-specific >> things (i.e. busybox [1] [2], dnsmasq [3]), so we expected NDK to >> automatically >> pass it to help build LTP for android, but unfortunately it didn't >> (it is tested >> with android-ndk-r19c). Currently, we have to manually specify >> -D__ANDROID__ in >> configure step before launch 'make ANDROID=1' command, and this is >> suffering for >> those who don't have good knowledge of LTP, so it is necessary to >> enable it if >> built for android. > > Hi Zhengwang I mentioned in the other thread but just to get it here > also, __ANDROID__ seems to be defined for me by the NDK. Could you try > the steps Sandeep shared? Yes, I tried. And it proves NDK has defined it, and this patch is not needed. Thank you guys very much for your time and helping me review this. -- Kind Regards, Zhengwang > > thanks, > steve <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body smarttemplateinserted="true"> <div id="smartTemplate4-template"> <p>Hi Steve, Petr, Sandeep,<br> </p> </div> <br> <div id="smartTemplate4-quoteHeader">-------- Original Message --------<br> From: Steve Muckle<br> Sent: Wed, 24 Apr 2019 12:27:32 -0700<br> To: Zhengwang Ruan, Ltp, Petr Vorel, Sandeep Patil<br> Cc: <br> Subject: Re: [PATCH v2] include/mk/env_post.mk: enable __ANDROID__ definition for Android build<br> </div> <blockquote type="cite" cite="mid:15aeaa52-eecc-e21a-eb86-d66cfe81928e@google.com">On 4/24/19 9:55 AM, Zhengwang Ruan wrote: <br> <blockquote type="cite">The definition of __ANDROID__ has been widely used to compile android-specific <br> things (i.e. busybox [1] [2], dnsmasq [3]), so we expected NDK to automatically <br> pass it to help build LTP for android, but unfortunately it didn't (it is tested <br> with android-ndk-r19c). Currently, we have to manually specify -D__ANDROID__ in <br> configure step before launch 'make ANDROID=1' command, and this is suffering for <br> those who don't have good knowledge of LTP, so it is necessary to enable it if <br> built for android. <br> </blockquote> <br> Hi Zhengwang I mentioned in the other thread but just to get it here also, __ANDROID__ seems to be defined for me by the NDK. Could you try the steps Sandeep shared? <br> </blockquote> <p>Yes, I tried. And it proves NDK has defined it, and this patch is not needed.<br> </p> <p>Thank you guys very much for your time and helping me review this.</p> <p>--<br> </p> <p>Kind Regards,</p> <p>Zhengwang<br> </p> <blockquote type="cite" cite="mid:15aeaa52-eecc-e21a-eb86-d66cfe81928e@google.com"> <br> thanks, <br> steve <br> </blockquote> </body> </html>
diff --git a/include/mk/env_post.mk b/include/mk/env_post.mk index 913bdf5..7953e0a 100644 --- a/include/mk/env_post.mk +++ b/include/mk/env_post.mk @@ -44,7 +44,7 @@ endif ifeq ($(ANDROID),1) # There are many undeclared functions, it's best not to accidentally overlook # them. -CFLAGS += -Werror-implicit-function-declaration +CFLAGS += -Werror-implicit-function-declaration -D__ANDROID__ LDFLAGS += -L$(top_builddir)/lib/android_libpthread LDFLAGS += -L$(top_builddir)/lib/android_librt
The definition of __ANDROID__ has been widely used to compile android-specific things (i.e. busybox [1] [2], dnsmasq [3]), so we expected NDK to automatically pass it to help build LTP for android, but unfortunately it didn't (it is tested with android-ndk-r19c). Currently, we have to manually specify -D__ANDROID__ in configure step before launch 'make ANDROID=1' command, and this is suffering for those who don't have good knowledge of LTP, so it is necessary to enable it if built for android. In the past, there had been a lot of discussion about which one of __ANDROID__ and ANDROID was the best choice to define the android-only code, but __ANDROID__ seems better right now [4]. [1] https://git.busybox.net/busybox/tree/configs/android_defconfig [2] https://git.busybox.net/busybox/tree/configs/android_ndk_defconfig [3] http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=blob_plain;f=bld/Android.mk;hb=HEAD [4] https://groups.google.com/forum/#!topic/android-ndk/cf9_f1SLXls Signed-off-by: Zhengwang Ruan <ruanzw@xiaopeng.com> --- include/mk/env_post.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)