On Thu, Jun 4, 2015 at 12:48 PM Philippe Roussel <p.o.rous...@free.fr> wrote:
> On recent distributions I had to remove the objc/ include folder > coming from gcc for gnustep-base to compile otherwise it correctly > found libobjc2 but used gcc's libobjc headers. I guess something could > be done on gnustep-base makefile but I didn't take the time to check. > That makes sense. It sounds like what I tried to work around (but it was back in November, and at 1am I was rather too tired to resume investigation). So this sounds like a good advice. I'll try moving GCC's Objective-C runtime away, or fixing the header search path in [1]. [1]: https://bitbucket.org/ivucica/gnustep-ubuntu/src/090850d1fb1cfbc3a0e1eb7ef5d7f34f56bc4f71/phases/26-pack-gnustep-base.sh?at=default at lines 23-28. > What does your patch look like ? > > November ivucica accompanied the patch with the following note, so I assume the patch is actually broken: #### ADDING RUNTIME.H DIDNT HELP FOR SOME REASON # Maybe HAVE_OBJC_RUNTIME_H is not defined?! Maybe config.h must be # included? I'll know more after I take another look. Index: Source/Additions/GSObjCRuntime.m =================================================================== --- Source/Additions/GSObjCRuntime.m (revision 38165) +++ Source/Additions/GSObjCRuntime.m (working copy) @@ -49,6 +49,10 @@ #import "../GSPrivate.h" +#if HAVE_OBJC_RUNTIME_H +#include <objc/runtime.h> /* needed for GNUstep's libobjc2 to be detected through __GNUSTEP_RUNTIME__ */ +#endif + #include <objc/Protocol.h> #include <stdio.h> @@ -156,10 +160,10 @@ { #if NeXT_RUNTIME return sel_getUid(name); +#elif defined (__GNUSTEP_RUNTIME__) + return sel_registerTypedName_np(name, types); #elif defined (__GNU_LIBOBJC__) && (__GNU_LIBOBJC__ >= 20110608) return sel_registerTypedName(name, types); -#elif defined (__GNUSTEP_RUNTIME__) - return sel_registerTypedName_np(name, types); #else extern SEL sel_get_any_typed_uid(const char*); extern SEL sel_get_typed_uid(const char*, const char*); @@ -203,10 +207,10 @@ { #if NeXT_RUNTIME return 0; +#elif defined (__GNUSTEP_RUNTIME__) + return sel_getType_np(sel); #elif defined (__GNU_LIBOBJC__) return sel_getTypeEncoding(sel); -#elif defined (__GNUSTEP_RUNTIME__) - return sel_getType_np(sel); #else if (sel == 0) { Index: Source/NSException.m =================================================================== --- Source/NSException.m (revision 38165) +++ Source/NSException.m (working copy) @@ -47,6 +47,10 @@ #include <objc/objc-exception.h> #endif +#ifdef HAVE_UNEXPECTED +extern void (*_objc_unexpected_exception)(id); +#endif + #ifdef HAVE_MALLOC_H #if !defined(__OpenBSD__) #include <malloc.h> ps : nice work on your build system > Merci beaucoup! :-) Thank you for your work on packages that actually build properly :-) n.b. If this build system actually starts to work (it used to work, but IIRC not with Clang), producing packages for additional applications involves providing a .spec file, including Master/deb.make from gnustep-make into GNUmakefile, and running: make debfiles && make deb Afterwards, pushing source packages to Launchpad (so they can be built by Canonical into binaries for PPAs) will involve something similar to: dput ppa:your-launchpad-username/your-launchpad-repository build/gnustep/core/{make,base/obj,gui/obj,back/obj}/debian_dist/*_source.changes But, it needs to actually work first... :-)
_______________________________________________ Discuss-gnustep mailing list Discuss-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnustep