Support added for building using a GNU toolchain on Win32,
authorTor Lillqvist <tml@src.gnome.org>
Sat, 24 Apr 1999 13:52:51 +0000 (13:52 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Sat, 24 Apr 1999 13:52:51 +0000 (13:52 +0000)
i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).

* README.win32: Updated.
* build-dll makefile.cygwin tests/makefile.cygwin: New files.
* glib.h glib.def glibconfig.h.win32 makefile.msc: Slight updates.
* gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
* gmain.c gutils.c testglib.c tests/string-test.c: Test for
NATIVE_WIN32, not _MSC_VER.
* gmutex.c: Must declare g_thread_functions_for_glib_use as
exported (using the GUTILS_C_VAR macro).
* gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
* gmodule/gmoduleconf.h.win32: Need underscore with gcc.
* gthread/gthread.c: With gcc on Win32, must use memcpy to assign
value of g_thread_functions_for_glib_use (?).
* makefile.msc tests/makefile.msc: Cosmetics.

30 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
README.win32
build-dll [new file with mode: 0644]
glib.def
glib.h
glib/glib.def
glib/glib.h
glib/gmain.c
glib/gutils.c
glibconfig.h.win32
gmain.c
gmodule/libgplugin_a.c
gmodule/libgplugin_b.c
gmutex.c
gthread/gthread.c
gutils.c
makefile.cygwin [new file with mode: 0644]
makefile.msc
testglib.c
tests/makefile.cygwin [new file with mode: 0644]
tests/makefile.msc
tests/string-test.c
tests/testglib.c

index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 67a39a2b1e6c22bf1a8457473155f0a2f4d12eca..9d57690ef7fb5176f01761cf49373fca8cdd8aac 100644 (file)
@@ -1,3 +1,22 @@
+1999-04-24  Tor Lillqvist  <tml@iki.fi>
+
+       Support added for building using a GNU toolchain on Win32,
+       i.e. gcc -mno-cygwin on cygwin (a.k.a. mingw32, using egcs-1.1.2).
+
+       * README.win32: Updated.
+       * build-dll makefile.cygwin tests/makefile.cygwin: New files.
+       * glib.h glib.def glibconfig.h.win32: Slight updates. 
+       * gmain.c: No need to include <fcntl.h> and <io.h> on Win32.
+       * gmain.c gutils.c testglib.c tests/string-test.c: Test for
+       NATIVE_WIN32, not _MSC_VER.
+       * gmutex.c: Must declare g_thread_functions_for_glib_use as
+       exported (using the GUTILS_C_VAR macro).
+       * gutils.c gmodule/libgplugin_[ab].c: LibMain not needed.
+       * gmodule/gmoduleconf.h.win32: Need underscore with gcc.
+       * gthread/gthread.c: With gcc on Win32, must use memcpy to assign
+       value of g_thread_functions_for_glib_use (?).
+       * makefile.msc tests/makefile.msc: Cosmetics.
+
 Fri Apr 23 14:29:25 BST 1999  Tony Gale <gale@gtk.org>
 
        * glib.h: Fix typo in g_string_ncasecmp macro (by me).
index 212163c1b8ba75b0aa9636a08ea1e96f9d682e8c..178c0737abd7fe54bdfa2b62150a553a58426fbf 100644 (file)
@@ -5,32 +5,35 @@ Win32 API only, and not any POSIX emulation layer except that provided
 by the Microsoft runtime C library. Additionally, a pthreads emulation
 library is used.
 
-As for now, to build GLib on Win32, you need the Microsoft compiler
-and tools. Both the compiler from MSVC 5.0 and from MSVC 6.0 have been
-used successfully.
+To build GLib on Win32, you can use either the Microsoft compiler and
+tools, or egcs-1.1.2 running under cygwin-b20.1. Both the compiler
+from MSVC 5.0 and from MSVC 6.0 have been used successfully. If you
+build with egcs, note that the produced executables and DLLs do *not*
+require the cygwin dll ("mingw32"). That's the whole point of this
+porting effort, more or less.
+
+The egcs support was added quite recently, but seems to work in all
+respects. Debugging with gdk works.
 
 Before building you must get the pthreads library for Windows from
 http://sourceware.cygnus.com/pthreads-win32/. The pthreads-win32
-snapshot from 1999-03-16 is mostly OK. Edit the location of the
-pthreads library and include files in makefile.msc. Also edit the BIN
-definition in makefile.msc.
+snapshot from 1999-04-07 is the one that should be used. Edit the
+location of the pthreads library and include files in
+makefile.msc.
 
-Build with `nmake -f makefile.msc`. Install with `nmake -f
-makefile.msc install`.
+If using the Microsoft toolchain, build with `nmake -f
+makefile.msc`. Install with `nmake -f makefile.msc install`.
+If using egcs, build using `make -f makefile.cygwin`.
 
 To test the GLib functions, go to the tests subdirectory and enter
 `nmake -f makefile.msc check`.
 
-Support for building using the cygwin tools (without depending on the
-cygwin runtime, i.e. "mingw32"), and maybe LCC-Win32 might be added
-later. When using the cygwin tools *with* the cygwin runtime the
-normal Unix configuration method should work as if on Unix (knock on
-wood).
+If you would want to use the cygwin tools to generate executables that
+*do* usethe cygwin runtime the normal Unix configuration method should
+work as if on Unix (knock on wood).
 
 With a little work, it might be possible to use the ./configure
-mechanism also with a "mingw32" configuration. I.e. building GLib for
-Win32 would use the cygwin tools (and runtime), but the produced
-libraries would not depend on the cygwin runtime being present.
+mechanism also with a "mingw32" configuration.
 
 The following preprocessor macros are used for conditional compilation 
 related to Win32:
@@ -42,17 +45,20 @@ related to Win32:
 
 - NATIVE_WIN32 is defined when compiling for Win32, *and* without
   any POSIX emulation, other that to the extent provided by the
-  (Microsoft) C library, or the pthreads-win32 library. For instance,
-  pathnames use the native Windows syntax.
+  bundled Microsoft C library and the pthreads-win32 library. For
+  instance, pathnames are in the native Windows syntax.
 
-- _MSC_VER is defined when using the Microsoft compiler.
+The Win32 port uses the combination with both of those on.
 
-Currently the Win32 port uses the combination with all three of those
-on, but eventually "gcc -mno-cygwin" will be supported also, and in
-that case _MSC_VER wouldn't be defined.
+Additionally, there are the compiler-specific macros:
+- _MSC_VER is defined when using the Microsoft compiler
+- __GNUC__ is defined when using GCC (i.e. egcs)
 
-Some of the usage of these macros is probably a bit mixed up, and will
-have to be straightened out when actually trying other combinations.
+Some of the usage of these macros was a bit mixed up, and had to be
+straightened out when adding the gcc support. In particular, I used to
+check for _MSC_VER in some places where I really wanted to check for
+the Microsoft C library, and those checks has now been changed to
+NATIVE_WIN32.
 
 The pthreads for Win32 package that the thread support uses isn't
 quite ready yet, and thus threads really should not be relied upon.
diff --git a/build-dll b/build-dll
new file mode 100644 (file)
index 0000000..a02d644
--- /dev/null
+++ b/build-dll
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# Temporary hack until building dlls with gcc -mno-cygwin is easier
+
+LD=ld
+DLLTOOL=dlltool
+AS=as
+
+library=$1; shift
+version=$1; shift;
+def=$1; shift
+ldargs="$*"
+
+defswitch=""
+[ -n "$def" -a "$def" != '-' ] && defswitch="--def $def"
+
+libname=$library
+[ $version != '-' ] && libname=$library-$version
+dllfile=$libname.dll
+
+for F in $ldargs; do
+    case $F in
+       *.o)    objs="$objs $F";;
+    esac
+done
+
+$LD -s --base-file $library.base --dll -o $dllfile $ldargs -e _DllMain@12 -lmingw32
+$DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs
+$LD -s --base-file $library.base $library.exp --dll -o $dllfile $ldargs -e _DllMain@12 -lmingw32
+$DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs
+$LD $library.exp --dll -o $dllfile $ldargs -e _DllMain@12 -lmingw32
+$DLLTOOL --as=$AS --dllname $dllfile $defswitch --output-lib lib$libname.a $objs
+rm $library.base $library.exp
index 833827b7f4e6cadec081546a7a4d1f9df14b9373..03d1962077fc56db32bbe1471afa2b2b427bd7b9 100644 (file)
--- a/glib.def
+++ b/glib.def
@@ -56,7 +56,6 @@ EXPORTS
        g_date_is_last_of_month
        g_date_is_leap_year
        g_date_julian
-       g_date_julian
        g_date_monday_week_of_year
        g_date_monday_weeks_in_year
        g_date_new
@@ -377,9 +376,13 @@ EXPORTS
        g_string_new
        g_string_prepend
        g_string_prepend_c
+       g_string_readline
+       g_string_readline_buffered
        g_string_sized_new
        g_string_sprintf
        g_string_sprintfa
+       g_string_tokenise
+       g_string_tokenise_free
        g_string_truncate
        g_string_up
        g_strjoinv
diff --git a/glib.h b/glib.h
index da110059ab7ed0afed6c6215bb589906d23aeb59..ae8084520768dd8686ecd52662c0f295e9bddf31 100644 (file)
--- a/glib.h
+++ b/glib.h
@@ -2750,8 +2750,10 @@ GIOChannel *g_io_channel_win32_new_stream_socket (int socket);
  */
 #ifdef NATIVE_WIN32
 #  define MAXPATHLEN 1024
-#  ifdef _MSC_VER
+
+#ifdef _MSC_VER
 typedef int pid_t;
+#endif
 
 /* These POSIXish functions are available in the Microsoft C library
  * prefixed with underscore (which of course technically speaking is
@@ -2768,6 +2770,9 @@ typedef int pid_t;
 #    define getcwd             _getcwd
 #    define getpid             _getpid
 #    define access             _access
+#ifdef __GNUC__
+#    define stat               _stat
+#endif
 #    define open               _open
 #    define read               _read
 #    define write              _write
@@ -2802,7 +2807,6 @@ DIR*              gwin_opendir    (const gchar    *dirname);
 struct dirent* gwin_readdir    (DIR            *dir);
 void           gwin_rewinddir  (DIR            *dir);
 gint           gwin_closedir   (DIR            *dir);
-#  endif /* _MSC_VER */
 #endif  /* NATIVE_WIN32 */
 
 
index 833827b7f4e6cadec081546a7a4d1f9df14b9373..03d1962077fc56db32bbe1471afa2b2b427bd7b9 100644 (file)
@@ -56,7 +56,6 @@ EXPORTS
        g_date_is_last_of_month
        g_date_is_leap_year
        g_date_julian
-       g_date_julian
        g_date_monday_week_of_year
        g_date_monday_weeks_in_year
        g_date_new
@@ -377,9 +376,13 @@ EXPORTS
        g_string_new
        g_string_prepend
        g_string_prepend_c
+       g_string_readline
+       g_string_readline_buffered
        g_string_sized_new
        g_string_sprintf
        g_string_sprintfa
+       g_string_tokenise
+       g_string_tokenise_free
        g_string_truncate
        g_string_up
        g_strjoinv
index da110059ab7ed0afed6c6215bb589906d23aeb59..ae8084520768dd8686ecd52662c0f295e9bddf31 100644 (file)
@@ -2750,8 +2750,10 @@ GIOChannel *g_io_channel_win32_new_stream_socket (int socket);
  */
 #ifdef NATIVE_WIN32
 #  define MAXPATHLEN 1024
-#  ifdef _MSC_VER
+
+#ifdef _MSC_VER
 typedef int pid_t;
+#endif
 
 /* These POSIXish functions are available in the Microsoft C library
  * prefixed with underscore (which of course technically speaking is
@@ -2768,6 +2770,9 @@ typedef int pid_t;
 #    define getcwd             _getcwd
 #    define getpid             _getpid
 #    define access             _access
+#ifdef __GNUC__
+#    define stat               _stat
+#endif
 #    define open               _open
 #    define read               _read
 #    define write              _write
@@ -2802,7 +2807,6 @@ DIR*              gwin_opendir    (const gchar    *dirname);
 struct dirent* gwin_readdir    (DIR            *dir);
 void           gwin_rewinddir  (DIR            *dir);
 gint           gwin_closedir   (DIR            *dir);
-#  endif /* _MSC_VER */
 #endif  /* NATIVE_WIN32 */
 
 
index 4976ceb8d3467849490f0c8ee8f2c4420f93e29b..bab33b69b3179b6195507850efbd91e781db27e7 100644 (file)
 #include <windows.h>
 #endif /* NATIVE_WIN32 */
 
-#ifdef _MSC_VER
-#include <fcntl.h>
-#include <io.h>
-#endif /* _MSC_VER */
-
 /* Types */
 
 typedef struct _GTimeoutData GTimeoutData;
@@ -576,7 +571,7 @@ g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
 void
 g_get_current_time (GTimeVal *result)
 {
-#ifndef _MSC_VER
+#ifndef NATIVE_WIN32
   struct timeval r;
   g_return_if_fail (result != NULL);
 
index ff202f710361b69fb4f83e56a2e305e19aac211f..c9362cc5b28a165076d98fa49001a2e42b96d078 100644 (file)
@@ -81,16 +81,6 @@ const guint glib_micro_version = GLIB_MICRO_VERSION;
 const guint glib_interface_age = GLIB_INTERFACE_AGE;
 const guint glib_binary_age = GLIB_BINARY_AGE;
 
-#if defined (NATIVE_WIN32) && defined (__LCC__)
-int __stdcall 
-LibMain (void         *hinstDll,
-        unsigned long dwReason,
-        void         *reserved)
-{
-  return 1;
-}
-#endif /* NATIVE_WIN32 && __LCC__ */
-
 void
 g_atexit (GVoidFunc func)
 {
@@ -736,7 +726,6 @@ g_iochannel_wakeup_peer (GIOChannel *channel)
 #endif /* Old IO Channels */
 
 #ifdef NATIVE_WIN32
-#ifdef _MSC_VER
 
 int
 gwin_ftruncate (gint  fd,
@@ -898,6 +887,4 @@ gwin_closedir (DIR *dir)
   return 0;
 }
 
-#endif /* _MSC_VER */
-
 #endif /* NATIVE_WIN32 */
index 23334f03c80a257b1a5e543d87cc0079c978c0b5..97f3ff9d5d4fb101d278e250322604b6a120629c 100644 (file)
@@ -1,5 +1,5 @@
 /* glibconfig.h.win32 */
-/* Handcrafted for Microsoft C. */
+/* Handcrafted for Microsoft C and gcc -mno-cygwin ("mingw32"). */
 
 #ifndef GLIBCONFIG_H
 #define GLIBCONFIG_H
@@ -65,11 +65,22 @@ typedef unsigned int guint32;
 
 #define G_HAVE_GINT64 1
 
+/* These are compiler specific */
+#ifdef _MSC_VER
 typedef __int64 gint64;
 typedef unsigned __int64 guint64;
+#define G_GINT64_CONSTANT(val) (val##i64)
+#elif __GNUC__
+typedef long long gint64;
+typedef unsigned long long guint64;
+#define G_GINT64_CONSTANT(val) (val##LL)
+#endif
+
+/* These depend on the C library. Using this file means the we
+ * use the (bundled) Microsoft msvcrt.dll.
+ */
 #define G_GINT64_FORMAT "I64i"
 #define G_GUINT64_FORMAT "I64u"
-#define G_GINT64_CONSTANT(val) (val##i64)
 
 #define GPOINTER_TO_INT(p)     ((gint)(p))
 #define GPOINTER_TO_UINT(p)    ((guint)(p))
@@ -82,7 +93,9 @@ typedef unsigned __int64 guint64;
 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END
 
 #define G_HAVE_ALLOCA 1
+#ifdef _MSC_VER
 #define alloca _alloca
+#endif
 
 #define GLIB_MAJOR_VERSION 1
 #define GLIB_MINOR_VERSION 3
@@ -106,7 +119,7 @@ typedef unsigned __int64 guint64;
  *   printf ("sizeof (pthread_mutex_t) = %d\n", sizeof (pthread_mutex_t));
  *   printf ("PTHREAD_MUTEX_INITIALIZER = ");
  *   for (i = 0; i < sizeof (pthread_mutex_t); i++)
- *     printf ("%u, ", (unsigned) ((char *) &m)[i]);
+ *     printf ("%u, ", (unsigned) ((unsigned char *) &m)[i]);
  *   printf ("\n");
  *   exit(0);
  * }
@@ -119,7 +132,7 @@ struct _GStaticMutex
   struct _GMutex *runtime_mutex;
   union {
     /* The size of the pad array should be sizeof (pthread_mutext_t) */
-    /* This value corresponds to the 1999-03-16 version of pthreads-win32 */
+    /* This value corresponds to the 1999-04-07 version of pthreads-win32 */
     char   pad[4];
     double dummy_double;
     void  *dummy_pointer;
@@ -127,7 +140,7 @@ struct _GStaticMutex
   } aligned_pad_u;
 };
 /* This should be NULL followed by the bytes in PTHREAD_MUTEX_INITIALIZER */
-#define        G_STATIC_MUTEX_INIT     { NULL, { { 1, 0, 0, 0 } } }
+#define        G_STATIC_MUTEX_INIT     { NULL, { { 255, 255, 255, 255 } } }
 #define        g_static_mutex_get_mutex(mutex) \
   (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
    g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
@@ -172,7 +185,7 @@ struct _GStaticMutex
 /* Define if this is Win32, possibly using the Cygwin emulation layer. */
 #define WIN32 1
 
-/* Define if this is Win32 without Cygwin.  */
+/* Define if this is Win32 using the Microsoft C runtime.  */
 #define NATIVE_WIN32 1
 
 #ifdef __cplusplus
diff --git a/gmain.c b/gmain.c
index 4976ceb8d3467849490f0c8ee8f2c4420f93e29b..bab33b69b3179b6195507850efbd91e781db27e7 100644 (file)
--- a/gmain.c
+++ b/gmain.c
 #include <windows.h>
 #endif /* NATIVE_WIN32 */
 
-#ifdef _MSC_VER
-#include <fcntl.h>
-#include <io.h>
-#endif /* _MSC_VER */
-
 /* Types */
 
 typedef struct _GTimeoutData GTimeoutData;
@@ -576,7 +571,7 @@ g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
 void
 g_get_current_time (GTimeVal *result)
 {
-#ifndef _MSC_VER
+#ifndef NATIVE_WIN32
   struct timeval r;
   g_return_if_fail (result != NULL);
 
index 91b928d0dbf033d6e917cbc2ff5ac1b8185934d5..d6f5bb5144f1d6645d189c4472ff098f358eac33 100644 (file)
 #include       <gmodule.h>
 #include       <stdlib.h>
 
-#if defined (NATIVE_WIN32) && defined (__LCC__)
-int __stdcall 
-LibMain(void         *hinstDll,
-       unsigned long dwReason,
-       void         *reserved)
-{
-  return 1;
-}
-#endif /* NATIVE_WIN32 && __LCC__ */
-
 G_MODULE_EXPORT void
 gplugin_a_func (void)
 {
index 109e04853cd450a3145568e230ab30c6e41de85b..be2795b66dd92ba102fa18ace099c09dfb7dffab 100644 (file)
 
 #include        <gmodule.h>
 
-#if defined (NATIVE_WIN32) && defined (__LCC__)
-int __stdcall 
-LibMain(void         *hinstDll,
-       unsigned long dwReason,
-       void         *reserved)
-{
-  return 1;
-}
-#endif /* NATIVE_WIN32 && __LCC__ */
-
 G_MODULE_EXPORT const gchar*
 g_module_check_init (GModule *module)
 {
index a6e7934f5e2569691ee266731a5a6c8e150fdd59..d2fe57ae67dca8133f9be3712982a534d664c3db 100644 (file)
--- a/gmutex.c
+++ b/gmutex.c
@@ -50,7 +50,7 @@ static void g_thread_fail (void);
 gboolean g_thread_use_default_impl = TRUE;
 gboolean g_threads_got_initialized = FALSE;
 
-GThreadFunctions g_thread_functions_for_glib_use = {
+GUTILS_C_VAR GThreadFunctions g_thread_functions_for_glib_use = {
   (GMutex*(*)())g_thread_fail,                 /* mutex_new */
   NULL,                                        /* mutex_lock */
   NULL,                                        /* mutex_trylock */
index f7d76bed88462f9113c12333d22427aa2a333148..57b75aa19d8d4d611f97908550eb50e7c33527db 100644 (file)
@@ -64,8 +64,11 @@ g_thread_init (GThreadFunctions* init)
   else
     g_thread_use_default_impl = FALSE;
 
+#if defined (WIN32) && defined (__GNUC__)
+  memcpy(&g_thread_functions_for_glib_use, init, sizeof (*init));
+#else
   g_thread_functions_for_glib_use = *init;
-
+#endif
   /* It is important, that g_threads_got_initialized is not set before the
    * thread initialization functions of the different modules are called
    */
index ff202f710361b69fb4f83e56a2e305e19aac211f..c9362cc5b28a165076d98fa49001a2e42b96d078 100644 (file)
--- a/gutils.c
+++ b/gutils.c
@@ -81,16 +81,6 @@ const guint glib_micro_version = GLIB_MICRO_VERSION;
 const guint glib_interface_age = GLIB_INTERFACE_AGE;
 const guint glib_binary_age = GLIB_BINARY_AGE;
 
-#if defined (NATIVE_WIN32) && defined (__LCC__)
-int __stdcall 
-LibMain (void         *hinstDll,
-        unsigned long dwReason,
-        void         *reserved)
-{
-  return 1;
-}
-#endif /* NATIVE_WIN32 && __LCC__ */
-
 void
 g_atexit (GVoidFunc func)
 {
@@ -736,7 +726,6 @@ g_iochannel_wakeup_peer (GIOChannel *channel)
 #endif /* Old IO Channels */
 
 #ifdef NATIVE_WIN32
-#ifdef _MSC_VER
 
 int
 gwin_ftruncate (gint  fd,
@@ -898,6 +887,4 @@ gwin_closedir (DIR *dir)
   return 0;
 }
 
-#endif /* _MSC_VER */
-
 #endif /* NATIVE_WIN32 */
diff --git a/makefile.cygwin b/makefile.cygwin
new file mode 100644 (file)
index 0000000..ec312b1
--- /dev/null
@@ -0,0 +1,169 @@
+## Makefile for building the GLib, gmodule and gthread DLLs with
+## egcs on cygwin.
+## Use: make -f makefile.cygwin install
+
+# Change this to wherever you want to install the DLLs. This directory
+# should be in your PATH.
+BIN = /bin
+
+# This is the location of pthreads for Win32, 
+# see http://sourceware.cygnus.com/pthreads-win32/
+PTHREADS = ../pthreads-snap-1999-04-07
+PTHREAD_LIB = -L$(PTHREADS) -lpthread
+PTHREAD_INC = -I $(PTHREADS)
+
+################################################################
+
+# Nothing much configurable below
+
+CC = gcc -mno-cygwin -mpentium
+
+CP = cp
+LD = ld
+DLLTOOL = dlltool
+INSTALL = install
+
+GLIB_VER = 1.3
+
+CFLAGS = -g -O2 -I. -DHAVE_CONFIG_H
+
+all : \
+       glibconfig.h    \
+       config.h        \
+       glib-$(GLIB_VER).dll    \
+       gthread-$(GLIB_VER).dll \
+       gmodule/gmoduleconf.h \
+       gmodule-$(GLIB_VER).dll \
+       testglib.exe    \
+       testgmodule.exe \
+       testgdate.exe   \
+       testgdateparser.exe \
+       testgthread.exe
+
+install : all
+       $(INSTALL) glib-$(GLIB_VER).dll $(BIN)
+       $(INSTALL) gmodule-$(GLIB_VER).dll $(BIN)
+       $(INSTALL) gthread-$(GLIB_VER).dll $(BIN)
+
+glib_OBJECTS = \
+       garray.o        \
+       gcache.o        \
+       gcompletion.o   \
+       gdataset.o      \
+       gdate.o         \
+       gerror.o        \
+       ghook.o         \
+       ghash.o         \
+       giochannel.o    \
+       giowin32.o      \
+       glist.o         \
+       gmain.o         \
+       gmem.o          \
+       gmessages.o     \
+       gmutex.o        \
+       gnode.o         \
+       gprimes.o       \
+       gqueue.o        \
+       grand.o         \
+       gslist.o        \
+       gstack.o        \
+       gtimer.o        \
+       gtree.o         \
+       grel.o          \
+       gstring.o       \
+       gstrfuncs.o     \
+       gscanner.o      \
+       gutils.o
+
+glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def
+       ./build-dll glib $(GLIB_VER) glib.def $(glib_OBJECTS) -lmsvcrt -lkernel32 -luser32 -ladvapi32 -lwsock32
+
+glibconfig.h: glibconfig.h.win32
+       $(CP) glibconfig.h.win32 glibconfig.h
+
+config.h: config.h.win32
+       $(CP) config.h.win32 config.h
+
+.c.o :
+       $(CC) $(CFLAGS) -c -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib $<
+
+gmodule_OBJECTS = \
+       gmodule.o
+
+gmodule-$(GLIB_VER).dll : $(gmodule_OBJECTS) gmodule/gmodule.def
+       ./build-dll gmodule $(GLIB_VER) gmodule/gmodule.def $(gmodule_OBJECTS) -L. -lglib-$(GLIB_VER) -lmsvcrt -lkernel32 -luser32 -ladvapi32 -lwsock32
+
+gmodule.o : gmodule/gmodule.c gmodule/gmodule-win32.c
+       $(CC) $(CFLAGS) -Igmodule -c -DG_LOG_DOMAIN=g_log_domain_gmodule gmodule/gmodule.c
+
+gmodule/gmoduleconf.h: gmodule/gmoduleconf.h.win32
+       $(CP) gmodule/gmoduleconf.h.win32 gmodule/gmoduleconf.h
+
+gthread_OBJECTS = \
+       gthread.o
+
+gthread-$(GLIB_VER).dll : $(gthread_OBJECTS) glib-$(GLIB_VER).dll gthread/gthread.def
+       ./build-dll gthread $(GLIB_VER) gthread/gthread.def $(gthread_OBJECTS)  -L. -lglib-$(GLIB_VER) $(PTHREAD_LIB) -lmsvcrt -lkernel32 -luser32 -ladvapi32 -lwsock32
+
+gthread.o : gthread/gthread.c gthread/gthread-posix.c
+       $(CC) $(CFLAGS) $(PTHREAD_INC) -DG_LOG_DOMAIN=\"GThread\" -c gthread/gthread.c
+
+testglib.exe : glib-$(GLIB_VER).dll testglib.o
+       $(CC) $(CFLAGS) -o testglib testglib.o -L. -lglib-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+
+testglib.o : testglib.c
+       $(CC) -c $(CFLAGS) testglib.c
+
+testgdate.exe : glib-$(GLIB_VER).dll testgdate.o
+       $(CC) $(CFLAGS) -o testgdate.exe testgdate.o -L. -lglib-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+
+testgdate.o : testgdate.c
+       $(CC) -c $(CFLAGS) testgdate.c
+
+testgdateparser.exe : glib-$(GLIB_VER).dll testgdateparser.o
+       $(CC) $(CFLAGS) -o testgdateparser.exe testgdateparser.o -L. -lglib-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+
+testgdateparser.o : testgdateparser.c
+       $(CC) -c $(CFLAGS) testgdateparser.c
+
+testgmodule.exe : glib-$(GLIB_VER).dll gmodule-$(GLIB_VER).dll testgmodule.o libgplugin_a.dll libgplugin_b.dll
+# Wow, do we really have to do it like this to get some symbols
+# exported from a .exe? Apparently yes. Does the __declspec(dllexport) 
+# actually do anything in egcs-1.1.2?
+       $(CC) $(CFLAGS) -Wl,--base-file,testgmodule.base -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+       $(DLLTOOL) --base-file testgmodule.base --output-exp testgmodule.exp testgmodule.o
+       $(CC) $(CFLAGS) -Wl,--base-file,testgmodule.base,testgmodule.exp -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+       $(DLLTOOL) --base-file testgmodule.base --output-exp testgmodule.exp testgmodule.o
+       $(CC) $(CFLAGS) -Wl,testgmodule.exp -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lmsvcrt $(LDFLAGS)
+
+testgmodule.o : gmodule/testgmodule.c
+       $(CC) $(CFLAGS) -Igmodule -c gmodule/testgmodule.c
+
+libgplugin_a.dll : libgplugin_a.o
+       ./build-dll libgplugin_a - - libgplugin_a.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lmsvcrt
+
+libgplugin_a.o : gmodule/libgplugin_a.c
+       $(CC) $(CFLAGS) -Igmodule -c gmodule/libgplugin_a.c
+
+libgplugin_b.dll : libgplugin_b.o
+       ./build-dll libgplugin_b - - libgplugin_b.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lmsvcrt
+
+libgplugin_b.o : gmodule/libgplugin_b.c
+       $(CC) $(CFLAGS) -Igmodule -c gmodule/libgplugin_b.c
+
+testgthread.exe : glib-$(GLIB_VER).dll gthread-$(GLIB_VER).dll testgthread.o
+       $(CC) $(CFLAGS) -o testgthread.exe testgthread.o -L. -lglib-$(GLIB_VER) -lgthread-$(GLIB_VER) $(PTHREAD_LIB) $(LDFLAGS)
+
+testgthread.o : gthread/testgthread.c
+       $(CC) $(CFLAGS) $(PTHREAD_INC) -c gthread/testgthread.c
+
+clean:
+       -rm config.h
+       -rm glibconfig.h
+       -rm gmodule/gmoduleconf.h
+       -rm *.exe
+       -rm *.o
+       -rm *.dll
+       -rm *.a
+       -rm *.base
+       -rm *.exp
index 4edac218dfeed15d26e71427f02a78b865c26a38..885bd80c8d26a8228e9b54ccb129c052b6445560 100644 (file)
@@ -7,8 +7,9 @@ BIN = C:\bin
 
 # This is the location of pthreads for Win32, 
 # see http://sourceware.cygnus.com/pthreads-win32/
-PTHREAD_LIB = ..\lib\pthread.lib
-PTHREAD_INC = ..\include
+PTHREADS = ..\pthreads-snap-1999-04-07
+PTHREAD_LIB = $(PTHREADS)\pthread.lib
+PTHREAD_INC = -I $(PTHREADS)
 
 ################################################################
 
@@ -18,7 +19,7 @@ PTHREAD_INC = ..\include
 CC = cl -G5 -GF -Ox -W3 -MD -nologo
 
 # No general LDFLAGS needes
-LDFLAGS = /link
+LDFLAGS = /link 
 INSTALL = copy
 
 GLIB_VER = 1.3
@@ -88,7 +89,7 @@ config.h: config.h.win32
 gmodule_OBJECTS = \
        gmodule.obj
 
-gmodule-$(GLIB_VER).dll : $(gmodule_OBJECTS)
+gmodule-$(GLIB_VER).dll : $(gmodule_OBJECTS) gmodule\gmodule.def
        $(CC) $(CFLAGS) -LD -Fegmodule-$(GLIB_VER).dll $(gmodule_OBJECTS) glib-$(GLIB_VER).lib $(LDFLAGS) /def:gmodule\gmodule.def
 
 gmodule.obj : gmodule\gmodule.c gmodule\gmodule-win32.c
@@ -100,11 +101,11 @@ gmodule\gmoduleconf.h: gmodule\gmoduleconf.h.win32
 gthread_OBJECTS = \
        gthread.obj
 
-gthread-$(GLIB_VER).dll : $(gthread_OBJECTS)
-       $(CC) $(CFLAGS) -LD -Fegthread-$(GLIB_VER).dll $(gthread_OBJECTS) glib-$(GLIB_VER).lib $(PTHREAD_LIB) glib-$(GLIB_VER).lib $(LDFLAGS) /def:gthread\gthread.def
+gthread-$(GLIB_VER).dll : $(gthread_OBJECTS) gthread\gthread.def
+       $(CC) $(CFLAGS) -LD -Fegthread-$(GLIB_VER).dll $(gthread_OBJECTS) glib-$(GLIB_VER).lib $(PTHREAD_LIB) $(LDFLAGS) /def:gthread\gthread.def
 
 gthread.obj : gthread\gthread.c gthread\gthread-posix.c
-       $(CC) $(CFLAGS) -GD -I$(PTHREAD_INC) -DG_LOG_DOMAIN=\"GThread\" -c gthread\gthread.c
+       $(CC) $(CFLAGS) -GD $(PTHREAD_INC) -DG_LOG_DOMAIN=\"GThread\" -c gthread\gthread.c
 
 testglib.exe : glib-$(GLIB_VER).dll testglib.obj
        $(CC) $(CFLAGS) -Fetestglib.exe testglib.obj glib-$(GLIB_VER).lib $(LDFLAGS) /subsystem:console
@@ -146,7 +147,7 @@ testgthread.exe : glib-$(GLIB_VER).dll gthread-$(GLIB_VER).dll testgthread.obj
        $(CC) $(CFLAGS) testgthread.obj glib-$(GLIB_VER).lib gthread-$(GLIB_VER).lib $(PTHREAD_LIB) $(LDFLAGS) /subsystem:console 
 
 testgthread.obj : gthread\testgthread.c
-       $(CC) $(CFLAGS) -I$(PTHREAD_INC) -c gthread\testgthread.c
+       $(CC) $(CFLAGS) $(PTHREAD_INC) -c gthread\testgthread.c
 
 clean:
        del config.h
index 843b49edee4d07d3e4a983e0993a5220079f22e3..54d6214068197a32ddc984285ffbfb18cf654b10 100644 (file)
@@ -699,8 +699,8 @@ main (int   argc,
   for (i = 0; i < 10000; i++)
     g_string_append_c (string1, 'a'+(i%26));
 
-#if !(defined (_MSC_VER) || defined (__LCC__))
-  /* MSVC and LCC use the same run-time C library, which doesn't like
+#ifndef NATIVE_WIN32
+  /* MSVC, mingw32 and LCC use the same run-time C library, which doesn't like
      the %10000.10000f format... */
   g_string_sprintf (string2, "%s|%0100d|%s|%s|%0*d|%*.*f|%10000.10000f",
                    "this pete guy sure is a wuss, like he's the number ",
diff --git a/tests/makefile.cygwin b/tests/makefile.cygwin
new file mode 100644 (file)
index 0000000..62c4b29
--- /dev/null
@@ -0,0 +1,50 @@
+## Makefile for building the GLib test programs with egcs on cygwin.
+## Use: make -f makefile.cygwin check
+
+################################################################
+
+# Nothing much configurable below
+
+# cl -? described the options
+CC = gcc -mno-cygwin -mpentium
+
+# No general LDFLAGS needes
+LDFLAGS = /link
+
+GLIB_VER = 1.3
+
+CFLAGS = -I.. -DHAVE_CONFIG_H
+
+TESTS = \
+       array-test.exe  \
+       date-test.exe   \
+       dirname-test.exe\
+       hash-test.exe   \
+       list-test.exe   \
+       node-test.exe   \
+       queue-test.exe  \
+       rand-test.exe   \
+       relation-test.exe\
+       slist-test.exe  \
+       stack-test.exe  \
+       string-test.exe \
+       strfunc-test.exe\
+       tree-test.exe   \
+       type-test.exe
+
+all :  $(TESTS)
+
+.SUFFIXES: .c .exe
+
+.c.exe :
+       $(CC) $(CFLAGS) -c $<
+       $(CC) $(CFLAGS) -o $@ $< -L.. -lglib-$(GLIB_VER) -lmsvcrt
+
+check: all
+       @for P in $(TESTS) ; do echo $$P; ./$$P; done
+
+clean:
+       rm *.exe
+       rm *.o
+       rm *.dll
+       rm *.exp
index 56a9210de85e01bc3cb131da0031826b1a992858..ff484e10ec0afa771090f253d87d3a5bace45d0f 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile for building the GLib test programs with Microsoft C
-## Use: nmake -f makefile.msc all
+## Use: nmake -f makefile.msc check
 
 ################################################################
 
@@ -10,7 +10,6 @@ CC = cl -G5 -GF -Ox -W3 -MD -nologo
 
 # No general LDFLAGS needes
 LDFLAGS = /link
-INSTALL = copy
 
 GLIB_VER = 1.3
 
index bc5b7dbca523a1f66a09f187186455de6ca239bf..b2c7c1d1e6af42d8e33d10b36a9ae787bacb0076 100644 (file)
@@ -103,8 +103,8 @@ main (int   argc,
   g_assert((strlen("hi pete!") + 10000) == string1->len);
   g_assert((strlen("hi pete!") + 10000) == strlen(string1->str));
 
-#if !(defined (_MSC_VER) || defined (__LCC__))
-  /* MSVC and LCC use the same run-time C library, which doesn't like
+#ifndef NATIVE_WIN32
+  /* MSVC and mingw32 use the same run-time C library, which doesn't like
      the %10000.10000f format... */
   g_string_sprintf (string2, "%s|%0100d|%s|%s|%0*d|%*.*f|%10000.10000f",
                    "this pete guy sure is a wuss, like he's the number ",
index 843b49edee4d07d3e4a983e0993a5220079f22e3..54d6214068197a32ddc984285ffbfb18cf654b10 100644 (file)
@@ -699,8 +699,8 @@ main (int   argc,
   for (i = 0; i < 10000; i++)
     g_string_append_c (string1, 'a'+(i%26));
 
-#if !(defined (_MSC_VER) || defined (__LCC__))
-  /* MSVC and LCC use the same run-time C library, which doesn't like
+#ifndef NATIVE_WIN32
+  /* MSVC, mingw32 and LCC use the same run-time C library, which doesn't like
      the %10000.10000f format... */
   g_string_sprintf (string2, "%s|%0100d|%s|%s|%0*d|%*.*f|%10000.10000f",
                    "this pete guy sure is a wuss, like he's the number ",