From 2a7b706c5a929b5efc5fabe2fb8ff6b33b7a2d91 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Mon, 22 Oct 2007 17:34:02 +0000 Subject: [PATCH] 2007-10-22 Mike Kestner * configure.in.in: add a win64 check and a compiler define for handling win64 32bit longs. * generator/LPGen.cs: use int to marshal on win64. * generator/LPUGen.cs: use uint to marshal on win64. * generator/SymbolTable.cs: remove fixme. svn path=/trunk/gtk-sharp/; revision=87922 --- ChangeLog | 8 ++++++++ configure.in.in | 11 ++++++++++- generator/LPGen.cs | 12 ++++++++++++ generator/LPUGen.cs | 12 ++++++++++++ generator/SymbolTable.cs | 3 +-- 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7078b560e..62d2f0283 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-10-22 Mike Kestner + + * configure.in.in: add a win64 check and a compiler define for + handling win64 32bit longs. + * generator/LPGen.cs: use int to marshal on win64. + * generator/LPUGen.cs: use uint to marshal on win64. + * generator/SymbolTable.cs: remove fixme. + 2007-10-16 Mike Kestner * gtk/CellRenderer.custom : marshal GTypes as IntPtr like the diff --git a/configure.in.in b/configure.in.in index 98fca5e64..e822cee7a 100644 --- a/configure.in.in +++ b/configure.in.in @@ -13,7 +13,16 @@ AC_SUBST(POLICY_VERSIONS) PACKAGE_VERSION=gtk-sharp-2.0 AC_SUBST(PACKAGE_VERSION) +WIN64DEFINES= + case "$host" in + x86_64-*-mingw*|x86_64-*-cygwin*) + WIN64DEFINES="-define:WIN64LONGS" + platform_win32=yes + AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32]) + CC="gcc -mno-cygwin -g" + HOST_CC="gcc" + ;; *-*-mingw*|*-*-cygwin*) platform_win32=yes AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32]) @@ -70,7 +79,7 @@ AC_ARG_ENABLE(debug, [ --enable-debug Build debugger (.mdb) files for fi CSDEFINES='@VERSIONCSDEFINES@' -CSFLAGS="$DEBUG_FLAGS $CSDEFINES" +CSFLAGS="$DEBUG_FLAGS $CSDEFINES $WIN64DEFINES" AC_SUBST(CSFLAGS) GTK_SHARP_VERSION_CFLAGS='@VERSIONCFLAGS@' diff --git a/generator/LPGen.cs b/generator/LPGen.cs index 3fb774ec6..ed47f105c 100644 --- a/generator/LPGen.cs +++ b/generator/LPGen.cs @@ -30,18 +30,30 @@ namespace GtkSharp.Generation { public override string MarshalType { get { +#if WIN64LONGS + return "int"; +#else return "IntPtr"; +#endif } } public override string CallByName (string var_name) { +#if WIN64LONGS + return "(int) " + var_name; +#else return "new IntPtr (" + var_name + ")"; +#endif } public override string FromNative(string var) { +#if WIN64LONGS + return var; +#else return "(long) " + var; +#endif } public void WriteAccessors (StreamWriter sw, string indent, string var) diff --git a/generator/LPUGen.cs b/generator/LPUGen.cs index 331b25f98..311eac262 100644 --- a/generator/LPUGen.cs +++ b/generator/LPUGen.cs @@ -30,18 +30,30 @@ namespace GtkSharp.Generation { public override string MarshalType { get { +#if WIN64LONGS + return "uint"; +#else return "UIntPtr"; +#endif } } public override string CallByName (string var_name) { +#if WIN64LONGS + return "(uint) " + var_name; +#else return "new UIntPtr (" + var_name + ")"; +#endif } public override string FromNative(string var) { +#if WIN64LONGS + return var; +#else return "(ulong) " + var; +#endif } public void WriteAccessors (StreamWriter sw, string indent, string var) diff --git a/generator/SymbolTable.cs b/generator/SymbolTable.cs index d8d5e52b3..60acd9a08 100644 --- a/generator/SymbolTable.cs +++ b/generator/SymbolTable.cs @@ -75,8 +75,7 @@ namespace GtkSharp.Generation { AddType (new SimpleGen ("double", "double", "0.0")); AddType (new SimpleGen ("GQuark", "int", "0")); - // platform specific integer types. these will break on any - // platform where sizeof (long) != sizeof (pointer) + // platform specific integer types. AddType (new LPGen ("ssize_t")); AddType (new LPGen ("long")); AddType (new LPGen ("glong"));