gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compile issues


From: Amr Aboelela
Subject: Re: Compile issues
Date: Mon, 3 Nov 2014 10:59:13 -0800

Hi Ivan,

Yes I am using libobjc2 (I think), it is in:

https://github.com/amraboelela/myos.android.libraries/tree/master/objc

 and NDK clang

On Mon, Nov 3, 2014 at 10:27 AM, Ivan Vučica <address@hidden> wrote:
Just a quick inquiry: which runtime are you using? I tried quickly looking through myOS repos directly on GitHub, but the project is split into too many repositories for me to easily track what's happening where. It seems to me like it's a copy of David's libobjc2.

Do your build scripts ensure that relevant components of GNUstep are fully aware they are being built with libobjc2?
Is Clang used in the build process?

On Fri, Oct 31, 2014 at 11:53 PM, Amr Aboelela <address@hidden> wrote:
Hi,

I am getting this error:

WARNING your program is becoming multi-threaded, but you are using an ObjectiveC runtime library which does not have a thread-safe implementation of the +initialize method. Please see README.initialize for more information.


Everytime I run an Objective-C process, of myOS project: https://github.com/amraboelela/myos.android.frameworks

Any help is appreciated



On Sat, Mar 17, 2012 at 1:08 PM, Ivan Vučica <address@hidden> wrote:
So I've been playing with compiling GNUstep for Android a little this evening. I'd love David's input, since reflecting back on his status report for a WebOS port, he mentioned he worked on solving the precise problem I'm having ('configure' not running test programs when cross-compiling).

My setup:
0. OS X Lion
1. Installed Android SDK into /Applications/android-sdk-mac_x86
2. Installed android-ndk-r5c into /Applications/android-sdk-mac_x86/android-ndk-r5c
3. Installed an Objective-C-supporting toolchain into /Applications/android-sdk-mac_x86/ndk-objc - January 2010 download from:
4. Wrote the following script, intended to be placed into .../core/make and .../core/base

#!/bin/bash

export SDK=/Applications/android-sdk-mac_x86

export NDK=${SDK}/android-ndk-r5c

export NDKCC="${SDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86"

export NDKOBJC=${SDK}/ndk-objc/usr/local/android

export SYSROOT=${NDK}/platforms/android-5/arch-arm/


export PATH="${SDK}/tools:${PATH}"

export PATH="${SDK}/platform-tools:${PATH}"

export PATH="${NDK}:${PATH}"

export PATH="${NDKCC}/bin:${PATH}"

export PATH="${NDKOBJC}/bin:${PATH}"

# The most preferred binaries are from ObjC NDK, so it comes last in order to be added to first place on the PATH.


#NDKCC:

#export DROID_TARGET=arm-linux-androideabi

#NDKOBJC:

export DROID_TARGET=arm-eabi


export CC=${DROID_TARGET}-gcc

export CXX=${DROID_TARGET}-g++ 

export CPP=${DROID_TARGET}-cpp

export AS=${DROID_TARGET}-as


export CPPFLAGS="-I${SYSROOT}/usr/include"

export CFLAGS="-nostdlib ${CPPFLAGS} -specs=/tmp/android-gnustep-gcc-spec"

export OBJCFLAGS="${CFLAGS} -I${NDKOBJC}/include"

export LDFLAGS=" "

#export DROID_TARGET=arm-linux-androideabi


export ac_cv_c_bigendian=no


echo '*invoke_as:' > /tmp/android-gnustep-gcc-spec

echo '%{!S:-o %|.s | '"${DROID_TARGET}"'-as %(asm_options) %m.s %A }' >> /tmp/android-gnustep-gcc-spec



./configure --host=i686-apple-darwin --target=${DROID_TARGET} --prefix=${HOME}/gnustep-android exceptions=no



Note the extremely hackish way of overriding "*invoke_as" spec in GCC downloaded as a part of that "January 2010" download from the android-gcc-objc2-0 project on Google Code.


Build process.

1. In .../core/make, opened "configure" in vim to remove all attempts to link with pthread (unnecessary under Android):

vim configure
:%s/-pthread//g
:%s/-lpthread//g
:wq

2. In .../core/make, ran:

./android.sh && make && make install

resulting in a gnustep-make installation in ~/gnustep-android

3. Sourced GNUstep.sh:

. ~/gnustep-android/Library/GNUstep/Makefiles/GNUstep.sh

4. In .../core/base, opened "configure" in vim to remove all attempts to link with pthread (unnecessary under Android):

vim configure
:%s/-pthread//g
:%s/-lpthread//g
:wq

5. In .../core/base, ran:

./android.sh

And this is where I'm stuck. pthread tests seem to pass ok, but tests having to do with objc exceptions seem to cause a failure since I'm cross compiling here, and there is a test program that needs to be run.

checking size of pthread_mutex_t... 4
checking size of pthread_cond_t... 4
checking alignment of pthread_mutex_t... 4
checking alignment of pthread_cond_t... 4
checking for thread_create in ... yes
checking for sched_yield in -lrt... no
checking for nanosleep... yes
checking for usleep... no
checking for Sleep... yes
checking whether objc really works... yes
checking if +load method is executed before main... no
checking for objc_sync_enter... yes
checking for objc_setProperty... yes
checking for _Block_copy... yes
checking for objc_setUncaughtExceptionHandler() in runtime... no
checking for objc_set_unexpected() in runtime... no
checking for _objc_unexpected_exception in runtime... configure: error: in `/Users/ivucica/projects/THIRDPARTY/gnustep/core/base':
configure: error: cannot run test program while cross compiling
See `config.log' for more details



David, in the previous mail from a few months ago, in a different thread, you mentioned you had removed all tests that ran test programs from 'configure' when cross-compiling is detected. Did you commit these changes to 'configure.ac' and 'configure'? If so, how do I use them?

Did you manage to run base on WebOS?

Everyone, there is also a TODO that tests for exceptions should not be run when option 'exceptions=no' is set.

Just to note, I'm aware that some of the hacky changes I've made above should actually be done in 'configure.ac' and should depend on a new target OS called 'android'. I don't have autotools on the Mac, so it was easier to directly edit 'configure'.

I'd really love to get GNUstep's base running.

On Sat, Dec 10, 2011 at 19:03, Ivan Vučica <address@hidden> wrote:
Looks like in replying to your email directed to me I forgot to CC the list.

On Sat, Dec 10, 2011 at 16:24, Jackie Gleason <address@hidden> wrote:
The problem with the lpthread join is that Android has no lpthread, it
is actually integrated into libc so for Android this would need to be
an optional param.

True! I'd say something along the lines of "--enable-integrated-pthread" which would just avoid passing -lpthread.

There is a gcc option "-pthread": I would not be surprised if it automagically did the "right thing" on Bionic platforms.
 

I have started work on an Android make file instead, however, I am
getting the following...

/home/jackie/Development/Code/GnuStep/core/base/Headers/Foundation/NSException.h:44:2:
error: #error The current setting for native-objc-exceptions does not
match that of gnustep-base ... please correct this.

So I am working to figure out why this is happening.

Maybe you could try disabling the exceptions support for now.

Is your work published somewhere in a public repository? SVN, Git, Mercurial - anything?
 

On Sat, Dec 10, 2011 at 6:02 AM, Ivan Vučica <address@hidden> wrote:
> Hi Jackie,
>
> On Wed, Dec 7, 2011 at 15:47, Jackie Gleason <address@hidden>
> wrote:
>>
>> Yup that looks like the right one there looks like there is a link to the
>> Labs toward the end. I am also looking into some of the options for a port
>> of UIKit but not very far along there. Some people have also been having
>> success with Cocotron (using my toolchain compiling), however, since I don't
>> have XCode or a mac (although if I get desperate my gf does) I have stuck
>> with trying to get GNUStep to work compile (see original message).
>
>
> I intend to work on UIKit using OpenGL and primarily targeting X11. I began
> work on UIApplication, and intend to work on it slowly.
>
> It's in the GNUstep repository under dev-libs.
>
>>
>>
>> I have included the config.log, however, I think the real problem here is
>> for some reason the pthreads stuff isn't get included. This seems odd
>> considering it should be included inside the platform folder included. I
>> know there can be some problems with Bionic and pthreads but join shouldn't
>> be that issue.
>>
>> GnuStep Make seems to compile fine...
>>
>> address@hidden:~/tmp/gnustep/make$ ls
>> bin  etc  share
>> address@hidden:~/tmp/gnustep/make$ ls ./bin/
>> debugapp  gnustep-config  gnustep-tests  openapp  opentool
>>
>> Am I missing some sort of fancy include in my CFLAGS or LDFLAGS?
>
>
> From what I can see in config.log, linker step of compiling is failing on
> the pthread_join() test, just as you documented in your later email.
>
> Just look for the line:
> "configure: failed program was:"
> and this line will be followed by the program that failed.
>
> Program that failed is testing for pthread_join(). Looking above the program
> that failed, I see the following:
>
> <a long path to ld>/bin/ld: cannot find -lpthread
>
> You probably need to tell the linker where to find libpthread.a. LDFLAGS
> then needs to contain -Lfolder/which/contains/libpthread/dot/a in addition
> to any other options you want to have in there.
>
> In your later email you stated:
>>
>> if I set pthread_ok=yes to goes on to the next issue (seems test are ran
>> even when cross compile which of course fails.)
>> Although that I can just change it I am worried I have my linking set up
>> wrong, any help would be great.
>
>
> Can you document where it fails, apart from tests?
>
> Also, it might be possible to turn off thread support under GNUstep.
>
> --
> Ivan Vučica - address@hidden
>
>



--
Ivan Vučica - address@hidden





--
Ivan Vučica - address@hidden



_______________________________________________
Gnustep-dev mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/gnustep-dev




--
Info about Islam: http://wikiz.info/islam




--
Ivan Vučica - address@hidden




--
Info about Islam: http://wikiz.info/islam


reply via email to

[Prev in Thread] Current Thread [Next in Thread]