discuss-gnustep
[Top][All Lists]
Advanced

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

Re: GNUstep + libobjc2 and powerpc ( was "libobjc2 on powerpc")


From: David Chisnall
Subject: Re: GNUstep + libobjc2 and powerpc ( was "libobjc2 on powerpc")
Date: Wed, 21 Mar 2018 13:43:14 +0000

> On 21 Mar 2018, at 13:34, bertrand <bertrand.dekoninck@gmail.com> wrote:
> 
> Le mercredi 21 mars 2018 à 07:29 +0000, David Chisnall a écrit :
>> On 20 Mar 2018, at 21:30, bertrand <bertrand.dekoninck@gmail.com> wrote:
>>> 
>>> Le mardi 20 mars 2018 à 10:46 +0000, David Chisnall a écrit :
>>>> There are two issues.  The first is the warnings in the libobjc2 build.  
>>>> These warnings are telling you that objc_msgSend and 
>>>> imp_implementationWithBlock (neither of which can be implemented in C) are 
>>>> not available on your platform.  This means that you can’t use blocks as 
>>>> IMPs and you must use the older two-stage dispatch mechanism (which clang 
>>>> will default to for architectures where libobjc2 does not implement the 
>>>> objc_msgSend family).
>>>> 
>>>> I would be very happy to help anyone who wants to add PowerPC support to 
>>>> these code paths, but I personally have a very low tolerance for PowerPC 
>>>> assembly and no easy access to PowerPC hardware, so won’t be doing it 
>>>> myself.
>>>> 
>>>> The later errors are coming from gas, which appears not to be supporting 
>>>> some of the assembly that clang is generating.  You can try using 
>>>> -integrated-as, which tells clang to generate object code directly rather 
>>>> than via gas.  I don’t know what the status is for PowerPC, but a newer 
>>>> version might help here (PowerPC in LLVM has had a lot of work from IBM 
>>>> and Argone National Labs recently).
>>>> 
>>>> David
>>>> 
>>> 
>>> I've set CC to 'clang -integrated-as' and CXX as well. Not a complete
>>> success. But there is some progress. It fails at link times now in
>>> ManyManySelectors.m because objc_msgSend is called . See below.
>>> Thanks,
>> 
>> It looks as if the library has built correctly, but some of the tests fail 
>> to compile.  The easiest thing to do is run ccmake and disable building the 
>> tests.
>> 
>> David
>> 
> 
> Hi David and the list;
> 
> It would be usefull to run tests but I did this for now : I commented
> this at the end of your CMakeLists.txt :
> 
> 
> #if (TESTS)
> #     enable_testing()
> #     add_subdirectory(Test)
> #endif (TESTS)
> 
> I'm pretty sure there is a better way to do,

Yes, run ‘ccmake .’ and toggle the enable tests line.

> but that's it : I've build
> and installed libobjc2 on debian ppc. :-)

Yay!

> I've got a few more questions for a complete install of gnustep on
> debian ppc.
> 
> My goal is to have a complete script to do this, adapted from the one
> found on gnustep wiki found here :
> 
> http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux
> 
> 
> Then I could contribute my result in it.
> 
> 
> 
> Here are my questions : 
> 
> 1. Should I install libdispatch before or after libobjc2 ?  I've seen
> this warning at the end libobjc2 install : 

Before, ideally.

> failed to create symbolic link 'include/Block.h': No such file or
> directory
> -- Symlinking: include/Block.h -> include/objc/blocks_runtime.h
> failed to create symbolic link 'include/Block_private.h': No such file
> or directory
> -- Symlinking: include/Block_private.h -> include/objc/blocks_private.h

That’s surprising.  Do you already have an include/Block.h?

> 2. Should I really build and install libdispatch from Nick Hutchinson on
> github, as the wiki says ? I tried to build it but it fails. Can I use
> libdispatch from debian repo instead ?

Not sure about this.  I use the one from FreeBSD packages and it appears to 
work...

> 3. If not can I install libobjc2 without libdispatch ?

Yes, you can.  I’m not sure if any of the live code paths actually use 
libdispatch anymore - I’ll aim to remove that dependency at some point.

> 4. The script on the wiki builds and install gnustep-make two times :
> before and after libobjc2 ? Is it still correct ?

No, that’s definitely wrong.  It dates back to when I tried to use GNUstep Make 
to build libobjc2, but that led to circular dependencies.

> 5. For gnustep-make build, is this line still mandatory ?
> "git checkout `git rev-list -1 --first-parent --before=2017-04-06
> master` # fixes segfault, should probably be looked at."
> 
> Has this bug in gnustep-make been fixed since 2017-04-06

I can’t speak for Ubuntu, but that definitely isn’t needed on FreeBSD.

David





reply via email to

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