[前][次][番号順一覧][スレッド一覧]

ruby-changes:6884

From: naruse <ko1@a...>
Date: Thu, 7 Aug 2008 05:53:08 +0900 (JST)
Subject: [ruby-changes:6884] Ruby:r18402 (trunk): * eval_intern.h: Add support to Haiku. see

naruse	2008-08-07 05:52:44 +0900 (Thu, 07 Aug 2008)

  New Revision: 18402

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18402

  Log:
    * eval_intern.h: Add support to Haiku. see [ruby-core:18110]
    
    * include/ruby/defines.h: ditto.
    
    * configure.in: ditto.
    
    * thread_pthread.c: ditto.
    
    * io.c: ditto.
    
    * lib/mkmf.rb: ditto.
    
    * ext/socket/getaddrinfo.c: ditto.
    
    * ext/socket/extconf.rb: ditto.
    
    * ext/socket/socket.c: ditto.
    
    * ext/socket/addrinfo.h: ditto.
    
    * ext/socket/getnameinfo.c: ditto.

  Modified files:
    trunk/ChangeLog
    trunk/configure.in
    trunk/eval_intern.h
    trunk/ext/socket/addrinfo.h
    trunk/ext/socket/extconf.rb
    trunk/ext/socket/getaddrinfo.c
    trunk/ext/socket/getnameinfo.c
    trunk/ext/socket/socket.c
    trunk/include/ruby/defines.h
    trunk/io.c
    trunk/lib/mkmf.rb
    trunk/thread_pthread.c

Index: eval_intern.h
===================================================================
--- eval_intern.h	(revision 18401)
+++ eval_intern.h	(revision 18402)
@@ -75,7 +75,7 @@
 #include <unistd.h>
 #endif
 
-#ifdef __BEOS__
+#if defined(__BEOS__) && !defined(__HAIKU__)
 #include <net/socket.h>
 #endif
 
Index: include/ruby/defines.h
===================================================================
--- include/ruby/defines.h	(revision 18401)
+++ include/ruby/defines.h	(revision 18402)
@@ -198,7 +198,7 @@
 #include "vms/vms.h"
 #endif
 
-#if defined(__BEOS__)
+#if defined(__BEOS__) && !defined(__HAIKU__)
 #include <net/socket.h> /* intern.h needs fd_set definition */
 #endif
 
Index: configure.in
===================================================================
--- configure.in	(revision 18401)
+++ configure.in	(revision 18402)
@@ -512,7 +512,12 @@
 human*)		ac_cv_func_getpgrp_void=yes
 		ac_cv_func_setitimer=no
 		;;
-beos*)		ac_cv_func_link=no;;
+beos*)	ac_cv_func_link=no
+		LIBS="$LIBS" # m lib is include in root under BeOS
+		;;
+haiku*)	ac_cv_func_link=no
+		LIBS="$LIBS" # m lib is include in root under Haiku
+		;;
 cygwin*)	;;
 mingw*)		LIBS="-lshell32 -lws2_32 $LIBS"
 		ac_cv_header_a_out_h=no
@@ -1098,7 +1103,7 @@
 AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $rb_cv_stack_grow_dir)
 
 if test x"$enable_pthread" = xyes; then
-    for pthread_lib in thr pthread pthreads c c_r; do
+    for pthread_lib in thr pthread pthreads c c_r root; do
  	AC_CHECK_LIB($pthread_lib, pthread_kill,
 		     rb_with_pthread=yes, rb_with_pthread=no)
 	if test "$rb_with_pthread" = "yes"; then break; fi
@@ -1110,6 +1115,8 @@
 	case $pthread_lib in
 	c)
 	    ;;
+	root)
+		;;
 	c_r)
 	    MAINLIBS="-pthread $MAINLIBS"
 	    ;;
@@ -1271,7 +1278,7 @@
     openstep*)	CCDLFLAGS="$CCDLFLAGS -fno-common";;
     rhapsody*)	CCDLFLAGS="$CCDLFLAGS -fno-common";;
     darwin*)	CCDLFLAGS="$CCDLFLAGS -fno-common";;
-    human*|bsdi*|beos*|cygwin*|mingw*|aix*|interix*) ;;
+    human*|bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*) ;;
     *) CCDLFLAGS="$CCDLFLAGS -fPIC";;
     esac
   else
@@ -1393,6 +1400,18 @@
 			esac
 			: ${LIBPATHENV=LIBRARY_PATH}
 			rb_cv_dlopen=yes ;;
+	haiku*) 		case "$target_cpu" in
+			  powerpc*)
+			    : ${LDSHARED="ld -xms"}
+			    DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
+                            ;;
+			  i586*)
+			    : ${LDSHARED="ld -shared"}
+			    DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
+			    ;;
+			esac
+			: ${LIBPATHENV=LIBRARY_PATH}
+			rb_cv_dlopen=yes ;;
 	nto-qnx*)	DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
 			: ${LDSHARED='ld -Bshareable -x'}
 			LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
@@ -1605,7 +1624,7 @@
 SOLIBS=
 
 case "$target_os" in
-  cygwin*|mingw*|beos*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*)
+  cygwin*|mingw*|beos*|haiku*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*)
     : ${DLDLIBS=""}
     ;;
   *)
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18401)
+++ ChangeLog	(revision 18402)
@@ -1,3 +1,27 @@
+Thu Aug  7 05:51:05 2008  NARUSE, Yui  <naruse@r...>
+
+	* eval_intern.h: Add support to Haiku. see [ruby-core:18110]
+
+	* include/ruby/defines.h: ditto.
+
+	* configure.in: ditto.
+
+	* thread_pthread.c: ditto.
+
+	* io.c: ditto.
+
+	* lib/mkmf.rb: ditto.
+
+	* ext/socket/getaddrinfo.c: ditto.
+
+	* ext/socket/extconf.rb: ditto.
+
+	* ext/socket/socket.c: ditto.
+
+	* ext/socket/addrinfo.h: ditto.
+
+	* ext/socket/getnameinfo.c: ditto.
+
 Thu Aug  7 05:43:32 2008  NARUSE, Yui  <naruse@r...>
 
 	* common.mk: mkdir enc/trans before build tables.
Index: thread_pthread.c
===================================================================
--- thread_pthread.c	(revision 18401)
+++ thread_pthread.c	(revision 18402)
@@ -119,7 +119,11 @@
 
 #define native_cleanup_push pthread_cleanup_push
 #define native_cleanup_pop  pthread_cleanup_pop
+#ifdef __HAIKU__
+#define native_thread_yield() /* not available under Haiku */
+#else
 #define native_thread_yield() sched_yield()
+#endif
 
 #ifndef __CYGWIN__
 static void add_signal_thread_list(rb_thread_t *th);
@@ -409,7 +413,9 @@
 	CHECK_ERR(pthread_attr_setstacksize(&attr, stack_size));
 #endif
 
+#ifndef __HAIKU__  /* not yet available under Haiku */
 	CHECK_ERR(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED));
+#endif
 	CHECK_ERR(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED));
 
 	err = pthread_create(&th->thread_id, &attr, thread_start_func_1, th);
Index: io.c
===================================================================
--- io.c	(revision 18401)
+++ io.c	(revision 18402)
@@ -26,7 +26,7 @@
 
 #include <sys/types.h>
 #if !defined(_WIN32) && !defined(__DJGPP__)
-# if defined(__BEOS__)
+#if defined(__BEOS__) && !defined(__HAIKU__)
 #  include <net/socket.h>
 # else
 #  include <sys/socket.h>
@@ -90,7 +90,6 @@
 # ifndef NOFILE
 #  define NOFILE (OPEN_MAX)
 # endif
-#include <net/socket.h>
 #endif
 
 #include "ruby/util.h"
@@ -202,6 +201,10 @@
 #  endif
 #endif
 
+#if defined(__HAIKU__)
+#define shutdown(a,b)	0
+#endif
+
 #if defined(_WIN32)
 #define is_socket(fd, path)	rb_w32_is_socket(fd)
 #elif !defined(S_ISSOCK)
Index: lib/mkmf.rb
===================================================================
--- lib/mkmf.rb	(revision 18401)
+++ lib/mkmf.rb	(revision 18402)
@@ -63,6 +63,7 @@
 $netbsd = /netbsd/ =~ RUBY_PLATFORM
 $os2 = /os2/ =~ RUBY_PLATFORM
 $beos = /beos/ =~ RUBY_PLATFORM
+$haiku = /haiku/ =~ RUBY_PLATFORM
 $solaris = /solaris/ =~ RUBY_PLATFORM
 $dest_prefix_pattern = (File::PATH_SEPARATOR == ';' ? /\A([[:alpha:]]:)?/ : /\A/)
 
Index: ext/socket/getaddrinfo.c
===================================================================
--- ext/socket/getaddrinfo.c	(revision 18401)
+++ ext/socket/getaddrinfo.c	(revision 18402)
@@ -42,7 +42,7 @@
 #include <sys/types.h>
 #ifndef _WIN32
 #include <sys/param.h>
-#if defined(__BEOS__)
+#if defined(__BEOS__) && !defined(__HAIKU__) 
 # include <net/socket.h>
 #else
 # include <sys/socket.h>
@@ -194,6 +194,7 @@
 
 #define ERR(err) { error = (err); goto bad; }
 
+/*
 #if defined __UCLIBC__
 const
 #endif
@@ -204,6 +205,7 @@
 		ecode = EAI_MAX;
 	return (char *)ai_errlist[ecode];
 }
+*/
 
 void
 freeaddrinfo(struct addrinfo *ai)
Index: ext/socket/extconf.rb
===================================================================
--- ext/socket/extconf.rb	(revision 18401)
+++ ext/socket/extconf.rb	(revision 18402)
@@ -9,6 +9,9 @@
 when /beos/
   test_func = "socket"
   have_library("net", "socket")
+when /haiku/
+  test_func = "socket"
+  have_library("network", "socket")
 when /i386-os2_emx/
   test_func = "socket"
   have_library("socket", "socket")
@@ -30,7 +33,7 @@
 end
 
 ipv6 = false
-default_ipv6 = /cygwin/ !~ RUBY_PLATFORM
+default_ipv6 = /cygwin|beos|haiku/ !~ RUBY_PLATFORM
 if enable_config("ipv6", default_ipv6)
   if checking_for("ipv6") {try_link(<<EOF)}
 #include <sys/types.h>
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 18401)
+++ ext/socket/socket.c	(revision 18402)
@@ -29,7 +29,7 @@
 #endif
 
 #ifndef _WIN32
-#if defined(__BEOS__)
+#if defined(__BEOS__) && !defined(__HAIKU__)  
 # include <net/socket.h>
 #else
 # include <sys/socket.h>
Index: ext/socket/addrinfo.h
===================================================================
--- ext/socket/addrinfo.h	(revision 18401)
+++ ext/socket/addrinfo.h	(revision 18402)
@@ -108,7 +108,9 @@
 #define	AI_CANONNAME	0x00000002 /* fill ai_canonname */
 #define	AI_NUMERICHOST	0x00000004 /* prevent name resolution */
 /* valid flags for addrinfo */
+#ifndef __HAIKU__
 #define	AI_MASK		(AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
+#endif
 
 #define	AI_ALL		0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
 #define	AI_V4MAPPED_CFG	0x00000200 /* accept IPv4-mapped if kernel supports */
@@ -164,7 +166,9 @@
 #if defined __UCLIBC__
 const
 #endif
+#ifndef __HAIKU__
 extern char *gai_strerror __P((int));
+#endif
 
 /* In case there is no definition of offsetof() provided - though any proper
 Standard C system should have one. */
Index: ext/socket/getnameinfo.c
===================================================================
--- ext/socket/getnameinfo.c	(revision 18401)
+++ ext/socket/getnameinfo.c	(revision 18402)
@@ -38,7 +38,7 @@
 #include <stdio.h>
 #include <sys/types.h>
 #ifndef _WIN32
-#if defined(__BEOS__)
+#if defined(__BEOS__) && !defined(__HAIKU__)  
 # include <net/socket.h>
 #else
 # include <sys/socket.h>
@@ -110,6 +110,9 @@
 #define ENI_FAMILY	5
 #define ENI_SALEN	6
 
+#ifdef __HAIKU__
+#define HAVE_INET_NTOP
+#endif
 #ifndef HAVE_INET_NTOP
 static const char *
 inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]