<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body smarttemplateinserted="true">
<div id="smartTemplate4-template">
<p> Hi Sandeep,<br>
</p>
</div>
<br>
<div id="smartTemplate4-quoteHeader">-------- Original Message --------<br>
From: Sandeep Patil<br>
Sent: Fri, 12 Apr 2019 12:48:09 -0700<br>
To: 阮正旺<br>
Cc: Petr Vorel, Ltp, Steve Muckle<br>
Subject: Re: [LTP] 回复:[PATCH v1] include/mk/env_post.mk : enable
__ANDROID__ definition for Android build<br>
</div>
<blockquote type="cite"
cite="mid:20190412194809.GE124555@google.com">
<pre class="moz-quote-pre" wrap="">On Sat, Apr 13, 2019 at 12:15:18AM +0800, 阮正旺 wrote:
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">
-------- Original Message --------
From: Petr Vorel
Sent: Fri, 12 Apr 2019 08:28:14 +0200
To: 阮正旺
Cc: Sandeep Patil, Ltp, Steve Muckle
Subject: Re: [LTP] 回复:[PATCH v1] include/mk/env_post.mk : enable
__ANDROID__ definition for Android build
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">Hi Zhengwang,
</pre>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">According to [1] android toolchain (I guess both AOSP and NDK toolchain) define
__ANDROID__. Which is what I'd expect.
Grepping aosp only dnsmasq and swiftshader use -D__ANDROID__ (these are from
externals). -DANDROID is use more times (e.g. some drivers in hardware - ril,
qcom, libsensors and wpa_supplicant).
From my point of view, instead of -D__ANDROID__ or -DANDROID I'd prefer to to have
proper #ifdef HAVE_FOO guarders made by autotools checks. As android is not the
only minor libc. But I understand it's not always possible and we already use
some #ifdef __ANDROID__ in library sources and headers, so ack from myself to
help compilation outside AOSP and without NDK.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">Actually I was wrong. 1) I was using NDK toolchain. I'd expect it'd generate
__ANDROID__, but I don't see it in the output. 2) Building for android with
distro toolchain doesn't make sense as it wouldn't have Bionic.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">1) Did you build outside AOSP? If so, I think it is reasonable since
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">Yes, with android NDK (for Bionic and special toolchain tweeks).
Then I use ANDROID=1
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">whatever __ANDROID__ or ANDROID are defined by Android build system instead
of toolchain. I also tried to build the external/* thing and found ANDROID
was actually generated. In my test, ANDROID seems to be the more suitable
one, but in fact we can not build ltp inside AOSP because there is no
Android.mk in ltp (please correct me if I am wrong...), so ANDROID is
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">Yes, inside AOSP you need to use Android fork [1] which uses usual Android.bp.
Therefore AOSP does not use our build system.
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">meaningless to us here. Actually, this is why I think this patch is still
useful, since __ANDROID__ is enough to distinguish what to compile if
ANDROID=1 is set with make.
2) In the case of cross-compilation, I think it still makes sense, since we
can use the same toolchain, such as clang, and build parameters (the
specify the include headers and libs, etc) as AOSP. This is what I am doing
now, you can see my steps I posted in my previous reply. But in this case,
we need to obviously set -D__ANDROID__ in CFLAGS. After that , the process
should be similar as we launch a build inside AOSP.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">I don't know much about android toolchain, but IMHO there are some other tweaks
in their build system (to comply changes in Bionic), so not sure if it's even
possible to avoid using NDK for out-of-aosp tree. See also [2]. But that's a
question for for Android devs.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
According to also [2], the situation gets clear now. All android targets
should get __ANDROID__ defined by the compiler, but ANDROID only means 'this
is AOSP' and is only for Windows targets. In our case, __ANDROID__ should be
preferred.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
Correct, and the build can still be make ANDROID=1 which translates to
-D__ANDROID__.
JFYI, there have been occasions when we changed something in bionic as a
result of an LTP tests, so those fixes will be missing for someone who is
using ndk for testing and building LTP.
That being said, thats a fairly small subset and is manageable. We can catch
those in reviews / patches very easily.
I like the idea of being able to build ouf-of-aosp, so I'm going to give this
a try now and will report.
</pre>
</blockquote>
<p>Have you tried to build out-of-aosp? :-)</p>
<p><br>
</p>
<p>Regards,</p>
<p>Zhengwang<br>
</p>
<blockquote type="cite"
cite="mid:20190412194809.GE124555@google.com">
<pre class="moz-quote-pre" wrap="">
- ssp
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">
Regards,
Zhengwang
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">Regards,
Zhengwang
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">Kind regards,
Petr
[1] <a class="moz-txt-link-freetext" href="https://android.googlesource.com/platform/external/ltp/">https://android.googlesource.com/platform/external/ltp/</a>
[2] <a class="moz-txt-link-freetext" href="https://groups.google.com/forum/#!topic/android-ndk/cf9_f1SLXls">https://groups.google.com/forum/#!topic/android-ndk/cf9_f1SLXls</a>
</pre>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>