Missing struct objc_class when compiling libs-base
Graham Lee <[email protected]> Tue, 20 Jan 2026 17:10:56 +0000
| Newsgroups | gmane.comp.lib.gnustep.general |
|---|---|
| Message-ID | <[email protected]> |
Hi all,
I’m trying to compile GNUstep base inside a Guix environment. The Guix GNUstep module (https://codeberg.org/guix/guix/src/branch/master/gnu/packages/gnustep.scm) is a bit of a mix; it defines a GNUstep make that’s configured with gcc, and libobjc2 that needs clang. I’ve defined a package that inherits from their GNUstep make but uses clang as the compiler, then a shell guix.scm environment at the top-level of the libs-base checkout, to try and build libs-base. The shell uses clang, libobjc2, and my GNUstep-make package configured with clang.
It configures fine, but in make I get errors from the objc runtime headers, shown below. Is this a mistake in configuring the package (it seems like it’s trying to use both the local and the libobjc2 header for objc/runtime.h), or did I get something else wrong? Does anyone have advice for me here?
Thanks,
Graham.
Making all for subproject ObjectiveC2...
Compiling file NSBlocks.m ...
In file included from NSBlocks.m:19:
../../Headers/ObjectiveC2/objc/runtime.h:89:15: error: typedef redefinition with different types ('void *' vs 'struct objc_property *')
typedef void *objc_property_t;
^
/gnu/store/x7w055xaaqlpivfavr352kvcyg06qy04-profile/include/objc/runtime.h:150:31: note: previous definition is here
typedef struct objc_property* objc_property_t;
^
[…]
In file included from NSBlocks.m:19:
../../Headers/ObjectiveC2/objc/runtime.h:133:1: error: unknown type name 'Method_t'; did you mean 'Method'?
Method * class_copyMethodList(Class cls, unsigned int *outCount);
^~~~~~
Method
../../Headers/ObjectiveC2/objc/runtime.h:84:17: note: expanded from macro 'Method'
# define Method Method_t
^
/gnu/store/x7w055xaaqlpivfavr352kvcyg06qy04-profile/include/objc/runtime.h:126:29: note: 'Method' declared here
typedef struct objc_method *Method;
^
[…]
NSBlocks.m:35:8: error: unknown type name 'objc_mutex_t'
extern objc_mutex_t __objc_runtime_mutex;
^
NSBlocks.m:42:12: error: incomplete definition of type 'struct objc_class'
metaClass->class_pointer = superclass->class_pointer;
~~~~~~~~~^
/gnu/store/x7w055xaaqlpivfavr352kvcyg06qy04-profile/include/objc/runtime.h:84:16: note: forward declaration of 'struct objc_class'
typedef struct objc_class *Class;
^