[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Android NDK - libobjc2
From: |
Emmanuel Maillard |
Subject: |
Re: Android NDK - libobjc2 |
Date: |
Tue, 12 Mar 2013 18:05:43 +0100 |
Hi,
Using an explicit cast to pthread_mutex_t in INIT_LOCK is the fix i used, to
solve the error while cross-compiling for Android.
Cheers
Emmanuel
Le 11 mars 2013 à 09:06, David Chisnall <address@hidden> a écrit :
> Hi Ivan,
>
> First, one caveat: ARM exceptions are still broken with LLVM, so should be
> careful. Also, Clang 3.1 doesn't emit objc_msgSend() on ARM (or, at all, I
> think) for the GNUstep runtime, so you will get bigger / slower code than
> with Clang 3.2.
>
> For the patch, is it fixed by adding an explicit cast to pthread_mutex_t in
> INIT_LOCK()?
>
> _Unwind_Action is my bug - I accidentally exposed it when I added the new
> exception ABI.
>
> David
>
> On 8 Mar 2013, at 21:39, Ivan Vučica <address@hidden> wrote:
>
>> Cheers everyone,
>>
>> Latest Android NDK, r8d, includes clang 3.1, which happens to build
>> Objective-C out of the box. So I decided to spend some time trying to get
>> libobjc2, gnustep-make and gnustep-base to be built. To ensure joy all
>> around the step-land, I've tried to document my merry adventures along the
>> way.
>>
>> NDK, naturally, does not include a runtime. What runtime could I possibly
>> decide to try to build other than libobjc2? :-)
>>
>> So far, I got CMake to not scream obscenities at me, and actually generate a
>> Makefile. No joy with actually compiling the beast.
>>
>> David, would you mind taking a look? I'm attaching the script which:
>> - fetches the Android SDK and the NDK,
>> - fetches GNUstep and libobjc2,
>> - creates a standalone NDK (with a more traditional compiler folder layout),
>> - creates CMake toolchain file for Android, and
>> - runs CMake in libobjc2's folder.
>>
>> The script is not really a script; more of a documentation of what commands
>> I ran. Hopefully it's clear enough.
>>
>> It documents my experiments on a vanilla Ubuntu Server 12.04 32-bit, but
>> (aside for a few apt-get installs) I see no reason it shouldn't work on any
>> Linux machine. (But since I did this on a cheap cloud VPS, I could share
>> root access to the machine, if you want to save some time.)
>>
>> In addition to the script, I'm also attaching:
>> - output of "make" with current libobjc2 trunk
>> - an ugly patch that fixes Android's pthread incompatibility (by using
>> "portable" portion of code)
>> - output of "make" after the patch is applied, which reveals problems with
>> "_Unwind_Action" apparently not being supported by clang 3.1.
>>
>> PS: David, you said [1] you've built portions of GNUstep for webOS, and did
>> some work on getting the configure tests to pass. Have you recently tried
>> cross-compiling an elementary build of GNUstep -- just elementary features
>> of Make and Base, with as little external dependencies as possible? If so,
>> can you share a few details about that? Maybe it's reusable for Android as
>> well.
>>
>> [1]: http://lists.gnu.org/archive/html/discuss-gnustep/2011-09/msg00117.html
>> <android-gnustep.sh><log.txt><lock.patch><log2.txt>
>> --
>> Ivan Vučica
>> address@hidden - http://ivan.vucica.net/
>>
>> _______________________________________________
>> Gnustep-dev mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>
>
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev