Hi,

Here are some remarks about building gnustep-base on windows(mingw-w64):

$>./configure --prefix=/GNUstep --enable-libffi
--with-default-config=/GNUstep/GNUstep.conf
...
checking for socklen_t... no
...


That's not true since socklen_t is defined as int in header <ws2tcpip.h>.
Unfortunately I dont' know autotools very well so I cannot provide any
patch
but basically configure should be adapted to include this header when
testing on
mingw platforms.

result is we have lots of warnings like :

NSFileHandle+GNUstepBase.m: In function '-[NSFileHandle(GNUstepBase)
initAsServerAtAddress:service:protocol:]':
NSFileHandle+GNUstepBase.m:176: warning: pointer targets in passing
argument 3 of 'getsockname' differ in signedness
c:/developer/mingw-ng/mingw32/lib/gcc/../../i686-w64-mingw32/include/winsock2.h:1300:
note: expected 'int *' but argument is of type 'unsigned int *'
NSFileHandle+GNUstepBase.m: In function '-[NSFileHandle(GNUstepBase)
socketAddress]':
NSFileHandle+GNUstepBase.m:205: warning: pointer targets in passing
argument 3 of 'getsockname' differ in signedness
c:/developer/mingw-ng/mingw32/lib/gcc/../../i686-w64-mingw32/include/winsock2.h:1300:
note: expected 'int *' but argument is of type 'unsigned int *'
So the workaround is to manually edit
Headers/Additions/GNUstepBase/config.h
#define HAVE_SOCKLEN_T 1


You also need to change the variable type in
Source/Additions/NSFileHandle+GNUstepBase.m
from unsigned int to socklen_t

-unsigned int           size = sizeof(sin);
+socklen_t              size = sizeof(sin);


Then I got an error in Tools/gdomap.c:

gdomap.c:4599: error: 'uint32_t' undeclared (first use in this function)

So same fix as before I have included <stdint.h> in  __MINGW32__ section

#ifdef __MINGW32__
+#include <stdint.h>
...

Another remark, I was curious to test a dlfcn implementation on win32
http://code.google.com/p/dlfcn-win32/

so after running configure again, dlfcn.h is well detected however
during linking -ldl is not added to command line so I get undefined
references:

Creating library file: ./obj/libgnustep-base.dll.a
obj/libgnustep-base.obj/objc-load.m.o: In function `_objc_dynamic_link':
C:\Developer\Mingw-NG\home\Vincent\build_GNUstep\gnustep-base\Source/dynamic-load.h:65:
undefined reference to `dlopen'
obj/libgnustep-base.obj/objc-load.m.o: In function `_objc_dynamic_error':
C:\Developer\Mingw-NG\home\Vincent\build_GNUstep\gnustep-base\Source/dynamic-load.h:94:
undefined reference to `dlerror'
collect2: ld returned 1 exit status


And my final issue is about Install directory because everything is
installed in /GNUstep/Local ...
but I want it to be in /GNUstep/System.
HOW CAN I CHANGE THAT ?

For my next remarks I will try to post patch instead of writing emails





_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to