I ended up doing a bit more of playing with this. Looks like skipping Cygwin and interacting directly with Win32, just like it's done under MinGW, works.
I don't like the following patch one bit, though. The include doesn't seem to belong here, and I think dlopen()/dladdr() code should work under Cygwin.
$ svn diff
Index: Source/objc-load.m
===================================================================
--- Source/objc-load.m (revision 36939)
+++ Source/objc-load.m (working copy)
@@ -40,6 +40,10 @@
#import "GSPrivate.h"
+#ifdef __CYGWIN__
+#include <windows.h>
+#endif
+
/* include the interface to the dynamic linker */
#include "dynamic-load.h"
@@ -83,7 +87,7 @@
objc_initialize_loading(FILE *errorStream)
{
NSString *path;
-#ifdef __MINGW__
+#if defined(__MINGW__) || defined(__CYGWIN__)
const unichar *fsPath;
#else
const char *fsPath;
@@ -126,7 +130,7 @@
}
}
-#if defined(__MINGW__)
+#if defined(__MINGW__) || defined(__CYGWIN__)
#define FSCHAR unichar
#else
#define FSCHAR char
@@ -237,7 +241,7 @@
}
-#ifdef __MINGW__
+#if defined(__MINGW__) || defined(__CYGWIN__)
// FIXME: We can probably get rid of this now - MinGW should include a working
// dladdr() wrapping this function, so we no longer need a Windows-only code
// path
On Friday, August 9, 2013, Ivan Vučica wrote:
Hello all,
I'm trying to build GNUstep Base under Cygwin. So far, I've done the following
cd gnustep/core/make
./configure --enable-debug-by-default --with-layout=gnustep --prefix=/GNUstep
make && make install
cd -
. /GNUstep/System/Library/Makefiles/GNUstep.sh
cd gnustep/core/base
./configure --with-ffi-include=/usr/lib/libffi-3.0.13/include --disable-icu --disable-libdispatch
make
I've disabled ICU simply because I'm connecting over a metered connection, and 15mb+ is just a bit too much for me to install right now.
I've disabled libdispatch because its presence was incorrectly detected by configure; header called 'dispatch.h' exists in Cygwin's /usr/include/w32api/, which is enough to trigger an attempted inclusion of this file by GSDispatch.h.
I'm having trouble with the following though:
Compiling file objc-load.m ...
objc-load.m: In function ‘GSPrivateSymbolPath’:
objc-load.m:299:32: error: request for member ‘category_name’ in something not a structure or union
objc-load.m:313:46: error: request for member ‘class_name’ in something not a structure or union
objc-load.m:314:25: error: request for member ‘class_name’ in something not a structure or union
objc-load.m:316:40: error: request for member ‘category_name’ in something not a structure or union
objc-load.m:317:25: error: request for member ‘category_name’ in something not a structure or union
/GNUstep/System/Library/Makefiles/rules.make:468: recipe for target `obj/libgnustep-base.obj/objc-load.m.o' failed
I'm using the GCC and the GCC runtime, since they come with Cygwin and I don't feel like playing with getting Clang (or, even worse, compiling it). I'm not installing libobjc2, at least not until the GCC-only setup works... GCC is 4.7.3.
$ gcc --version | head -n1
gcc (GCC) 4.7.3
Tips?
--