[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Android NDK - libobjc2
From: |
David Chisnall |
Subject: |
Re: Android NDK - libobjc2 |
Date: |
Mon, 11 Mar 2013 08:06:10 +0000 |
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