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

Reply via email to