Still doesn’t work, same error output. I am at svn version 38351.

Which revision have you pushed it to?

P.S. Since I have a homebrew OS project lying somewhere (can be reduced to 
custom userland on top of Ubuntu kernel+libc) and if I had the time I would try 
rewriting Base and CoreBase into one library.

> On Feb 20, 2015, at 01:07, Stefan Bidigaray <[email protected]> wrote:
> 
> Oh well, I forgot to CC the list on my previous e-mail.  No problem, I 
> committed a fix to this problem just now.  Can you try again and let me know 
> if it works as expected?
> 
> Thanks
> 
> On Wed, Feb 18, 2015 at 10:51 AM, Stefan Bidigaray <[email protected] 
> <mailto:[email protected]>> wrote:
> So when CoreBase first came around ARC was at it's infancy and being able to 
> seemingly go from CF to ObjC objects was a good idea.  All the "toll-free 
> bridged" types have a construct similar to:
> #ifdef __OBJC__
> @class NSData;
> @class NSMutableData;
> typedef NSData* CFDataRef;
> typedef NSMutableData* CFMutableDataRef;
> #else
> typedef const struct __CFData * CFDataRef;
> typedef struct __CFData * CFMutableDataRef;
> #endif
> This is very handy, but after doing some research on ARC it requires explicit 
> transferring control to C because ARC cannot keep up with what's going on in 
> C structs.  See 
> https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
>  
> <https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html>
>  if you're interested in the details.
> 
> The obvious compatibility solution here would be to get rid of those #ifdef's 
> and always define CF types to be typedef struct ...
> 
> I would appreciate if David C. could confirm that this is the correct 
> solution before committing, though.
> 
> On Tue, Feb 17, 2015 at 11:25 AM, Maxthon Chan <[email protected] 
> <mailto:[email protected]>> wrote:
> I am getting a bit of trouble compiling code with CoreBase and ARC at the 
> same time. I am using latest trunk version of base and corebase on Ubuntu 
> 14.04 LTS with clang 3.5. Here is the log:
> 
> $ make
> This is gnustep-make 2.6.6. Type 'make print-gnustep-make-help' for help.
> Making build-headers for framework CGIKit...
>  Creating CGIKit.framework/Versions/H/Headers...
>  Creating derived_src/.stamp...
>  Creating CGIKit.framework/Versions/H/Resources...
>  Updating Version/Current symlink...
> Making all for framework CGIKit...
>  Compiling file CGIApplication.m ...
> In file included from CGIApplication.m:9:
> In file included from ./CGIApplication.h:12:
> In file included from ../CGIKit/CGIKitDefines.h:51:
> In file included from 
> /usr/local/include/GNUstep/CoreFoundation/CoreFoundation.h:36:
> In file included from /usr/local/include/GNUstep/CoreFoundation/CFBundle.h:31:
> In file included from /usr/local/include/GNUstep/CoreFoundation/CFURL.h:34:
> /usr/local/include/GNUstep/CoreFoundation/CFString.h:538:15: error: ARC 
> forbids Objective-C objects in struct
>   CFStringRef theString;
>               ^
> In file included from CGIApplication.m:9:
> In file included from ./CGIApplication.h:12:
> In file included from ../CGIKit/CGIKitDefines.h:51:
> In file included from 
> /usr/local/include/GNUstep/CoreFoundation/CoreFoundation.h:48:
> In file included from 
> /usr/local/include/GNUstep/CoreFoundation/CFPropertyList.h:33:
> In file included from /usr/local/include/GNUstep/CoreFoundation/CFStream.h:33:
> /usr/local/include/GNUstep/CoreFoundation/CFSocket.h:61:13: error: ARC 
> forbids Objective-C objects in struct
>   CFDataRef address;
>             ^
> In file included from CGIApplication.m:9:
> In file included from ./CGIApplication.h:12:
> In file included from ../CGIKit/CGIKitDefines.h:51:
> In file included from 
> /usr/local/include/GNUstep/CoreFoundation/CoreFoundation.h:60:
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:76:12: error: ARC 
> forbids Objective-C objects in struct
>   CFURLRef systemID;
>            ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:83:15: error: ARC 
> forbids Objective-C objects in struct
>   CFStringRef attributeName;
>               ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:98:12: error: ARC 
> forbids Objective-C objects in struct
>   CFURLRef sourceURL;
>            ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:111:19: error: ARC 
> forbids Objective-C objects in struct
>   CFDictionaryRef attributes;
>                   ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:119:15: error: ARC 
> forbids Objective-C objects in struct
>   CFStringRef contentDescription;
>               ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:126:15: error: ARC 
> forbids Objective-C objects in struct
>   CFStringRef replacementText;
>               ^
> /usr/local/include/GNUstep/CoreFoundation/CFXMLNode.h:146:15: error: ARC 
> forbids Objective-C objects in struct
>   CFStringRef dataString;
>               ^
> CGIApplication.m:30:65: error: expected method body
> - (instancetype)_init __attribute__((objc_method_family(init))) 
> NS_REPLACES_RECEIVER
>                                                                 ^
> 10 errors generated.
> make[2]: *** [obj/CGIKit.obj/CGIApplication.m.o] Error 1
> make[1]: *** [internal-framework-run-compile-submake] Error 2
> make: *** [CGIKit.all.framework.variables] Error 2
> 
> And then I got this trying to check for “pesky typedefs":
> 
> $ clang -E $(gnustep-config --objc-flags) -fobjc-arc -I. -I.. CGIApplication.m
> // … lines removed …
> # 268 "/usr/local/include/GNUstep/CoreFoundation/CFBase.h"
> typedef CFTypeRef CFPropertyListRef;
> 
> 
> 
> 
> 
> @class NSString;
> @class NSMutableString;
> typedef NSString * CFStringRef;
> typedef NSMutableString * CFMutableStringRef;
> # 294 "/usr/local/include/GNUstep/CoreFoundation/CFBase.h"
> typedef const struct __CFAllocator * CFAllocatorRef;
> 
> typedef void* (*CFAllocatorAllocateCallBack)(CFIndex allocSize,
>   CFOptionFlags hint, void *info);
> // … lines removed …
> 
> The typedef here works “seemingly” well without ARC but it bites me in the 
> ass when ARC is used.
> 
> Does this call for a change? How to do it?
> _______________________________________________
> Discuss-gnustep mailing list
> [email protected] <mailto:[email protected]>
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep 
> <https://lists.gnu.org/mailman/listinfo/discuss-gnustep>
> 
> 

_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to