[#6728] Ruby 1.3.3-990507 — matz <matz@...>

Ruby 1.3.3-990507 is out, check out:

34 messages 1999/05/07
[#6731] Re: Ruby 1.3.3-990507 — Katsuyuki Komatsu <komatsu@...> 1999/05/07

小松です。

[#6779] Re: private inner class (Re: Re: class def in class def) — Koji Oda <oda@...1.qnes.nec.co.jp>

小田@QNES です。

13 messages 1999/05/13

[#6789] Ruby 1.3.3-990513 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.3-990513 is out, check out:

59 messages 1999/05/13
[#6811] Re: Ruby 1.3.3-990513 — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/05/14

小田@QNES です。

[#6814] Re: Ruby 1.3.3-990513 — matz@... (Yukihiro Matsumoto) 1999/05/15

まつもと ゆきひろです

[#6821] Re: Ruby 1.3.3-990513 — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/05/16

小田@QNES です。

[#6790] Re: Ruby 1.3.3-990513 — Katsuyuki Komatsu <komatsu@...> 1999/05/13

小松です。

[#6891] Ruby 1.3.3-990518 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.3-990518 is out, check out:

19 messages 1999/05/18

[#6919] ext/socket/getaddrinfo.c tiny fix — Jun-ichiro itojun Hagino <itojun@...>

ext/socket/getaddrinfo.cに以下のpatchをおねがいします。

22 messages 1999/05/20
[#6921] Re: ext/socket/getaddrinfo.c tiny fix — Jun-ichiro itojun Hagino <itojun@...> 1999/05/20

[#7034] Ruby 1.3.4-990531 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990531 is out, check out:

25 messages 1999/05/31

[ruby-dev:6925] Re: Ruby on Win32

From: smeet@...
Date: 1999-05-20 05:17:32 UTC
List: ruby-dev #6925
this is smeet.

しろうとなもので、よくわからないのに、
1.2.5 の cygwin32 用の ext 以下の dllを作る
ところの patch を作りました。

dll はできたのですが、
require すると 
tk.rb:7: [BUG] Segmentation fault 
になってしまいます。

dll の entry がまずいんでしょうね。
役には、たたないと思いますけど、

cygwin32_ld.rb の 変更点を添付しておきます。

# win32 て、ぼくも触りたくないんですけど、
# お仕事で、泣くなくいじっております。

--smeet
 

Attachments (1)

ruby-b20.diff (2.5 KB, text/x-diff)
diff -urN ruby-1.2.5/ext/cygwin32_ld.rb ruby-1.2.5-cygwinb20/ext/cygwin32_ld.rb
--- ruby-1.2.5/ext/cygwin32_ld.rb	Wed Feb 18 18:22:24 1998
+++ ruby-1.2.5-cygwinb20/ext/cygwin32_ld.rb	Wed May 19 21:34:16 1999
@@ -5,6 +5,8 @@
 args = ARGV.join(" ")
 
 objs = []
+libs = []
+libdir = []
 flags = []
 libname = ''
 Init = "../init"
@@ -15,20 +17,37 @@
   out = open("#{Init}.c", "w")
 
   out.print %q@
+#define WIN32_LEAN_AND_MEAN
 #include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
 #include <stdio.h>
 
-extern struct _reent *__imp_reent_data;
-WINAPI dll_entry(int a, int b, int c)
+BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, 
+                       LPVOID reserved /* Not used. */ );
+
+BOOL APIENTRY
+DllMain (
+	 HINSTANCE hInst /* Library instance handle. */ ,
+	 DWORD reason /* Reason this function is being called. */ ,
+	 LPVOID reserved /* Not used. */ )
 {
-    _impure_ptr =__imp_reent_data;
-    return 1;
+
+  switch (reason)
+    {
+    case DLL_PROCESS_ATTACH:
+      break;
+
+    case DLL_PROCESS_DETACH:
+      break;
+
+    case DLL_THREAD_ATTACH:
+      break;
+
+    case DLL_THREAD_DETACH:
+      break;
+    }
+  return TRUE;
 }
-main(){}
-//void impure_setup(struct _reent *_impure_ptrMain)
-//{
-//    _impure_ptr =__imp_reent_data;
-//}
 @
   out.close
 end
@@ -49,6 +68,10 @@
     case arg
     when /\.[oa]$/i
       objs.push(arg)
+    when /-l(\w+)/i
+      libs.push(arg)
+    when /^-L\//i
+      libdir.push(arg)
     when /-o/, /\w+\.dll/i
       ;
     else
@@ -68,20 +91,11 @@
   xsystem "nm --extern-only " + objs.join(" ") +
     "  | sed -n '/^........ [CDT] _/s///p' >> #{libname}.def"
 
-  command = "gcc -nostdlib -o junk.o -Wl,--base-file,#{libname}.base,--dll " +
-    objs.join(" ") + "  #{Init}.o "
-  command.concat(flags.join(" ") +
-    " -Wl,-e,_dll_entry@12 -lcygwin -lkernel32 #{CONFIG['srcdir']}/libruby.a")
-  xsystem command
-
-  command = "dlltool --as=as --dllname #{libname}.dll --def #{libname}.def --base-file #{libname}.base --output-exp #{libname}.exp"
+  command = "dllwrap -o #{libname}.dll --def #{libname}.def " +
+    objs.join(" ") + "  #{Init}.o " + libdir.join(" ") + " " + libs.join(" ") +
+    " -lcygwin -lkernel32 #{CONFIG['srcdir']}/libruby.a"
   xsystem command
   
-  command = "gcc -s -nostdlib -o #{libname}.dll -Wl,--dll #{libname}.exp " +
-    objs.join(" ") + "  #{Init}.o "
-  command.concat(flags.join(" ") +
-    " -Wl,-e,_dll_entry@12 -lcygwin -lkernel32 #{CONFIG['srcdir']}/libruby.a")
-  xsystem command
   File.unlink "junk.o" if FileTest.exist? "junk.o"
 
 else

In This Thread