On 30 Jun 2011, at 18:06, Quentin Mathé wrote:

> Le 30 juin 2011 à 14:24, David Chisnall a écrit :
> 
>> On 30 Jun 2011, at 13:21, Quentin Mathé wrote:
>> 
>>> EtoileThread builds just fine when I invoke make in the parent directory 
>>> (EF main directory), but reports various errors 'ivars may not be placed in 
>>> class extension' for ETObjectPipe, when 'make' is invoked directly in the 
>>> EtoileThread directory. I'm not even sure to understand the purpose behind 
>>> this Clang message…  Is it expected to report identically named ivars 
>>> declared in superclasses or in @interface? Could this be a bug in Clang?
>> 
>> Ivars in a class extension require the non-fragile ABI.  This is probably 
>> set in EF and imported in the subdirectory, but omitted in the 
>> subdirectory's makefile.
> 
> Indeed, that's the issue.
> 
> We have in EtoileFoundation/GNUmakefile:
> ifeq ($CC, clang)
> ADDITIONAL_OBJCFLAGS += -fobjc-nonfragile-abi -fblocks
> endif
> 
> I suppose we always want to pass the flags every time we compile a project 
> with Clang, right?

My latest changes now require the non-fragile ABI, so won't build with the 
fragile ABI.  If you want to support legacy compilers, then you'll need to move 
the ivars into the headers, but that's pretty ugly.

David

-- Sent from my IBM 1620


_______________________________________________
Etoile-dev mailing list
Etoile-dev@gna.org
https://mail.gna.org/listinfo/etoile-dev

Reply via email to