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: bertrand
Subject: Re: GNUstep + libobjc2 and powerpc ( was "libobjc2 on powerpc")
Date: Wed, 21 Mar 2018 15:06:30 +0100

Le mercredi 21 mars 2018 à 13:43 +0000, David Chisnall a écrit :
> > 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.
> 

I've tried it. I could put this in my gnustep_install.sh script but the
user will have to manually toggle off the tests. A commandline line
would be better.
 
Anyway, better than totally avoiding tests, I should try to see which
build and which don't, to adapt them for ppc.

> > 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?
Yes it's there :  /usr/include/Block.h. Block_private.h also.

> 
> > 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...

Then I will try with it.

> 
> > 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.
> 
Then should I build libobjc2 before of after gnustep-make ?

> > 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
> 

Thanks.

Bertrand
> 





reply via email to

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