* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
403d0334c1
commit
48e21d2051
24
ChangeLog
24
ChangeLog
@ -1,3 +1,27 @@
|
|||||||
|
Thu Aug 7 05:51:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
|
* 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@ruby-lang.org>
|
Thu Aug 7 05:43:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* common.mk: mkdir enc/trans before build tables.
|
* common.mk: mkdir enc/trans before build tables.
|
||||||
|
27
configure.in
27
configure.in
@ -512,7 +512,12 @@ hpux*) LIBS="-lm $LIBS"
|
|||||||
human*) ac_cv_func_getpgrp_void=yes
|
human*) ac_cv_func_getpgrp_void=yes
|
||||||
ac_cv_func_setitimer=no
|
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*) ;;
|
cygwin*) ;;
|
||||||
mingw*) LIBS="-lshell32 -lws2_32 $LIBS"
|
mingw*) LIBS="-lshell32 -lws2_32 $LIBS"
|
||||||
ac_cv_header_a_out_h=no
|
ac_cv_header_a_out_h=no
|
||||||
@ -1098,7 +1103,7 @@ int main()
|
|||||||
AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $rb_cv_stack_grow_dir)
|
AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $rb_cv_stack_grow_dir)
|
||||||
|
|
||||||
if test x"$enable_pthread" = xyes; then
|
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,
|
AC_CHECK_LIB($pthread_lib, pthread_kill,
|
||||||
rb_with_pthread=yes, rb_with_pthread=no)
|
rb_with_pthread=yes, rb_with_pthread=no)
|
||||||
if test "$rb_with_pthread" = "yes"; then break; fi
|
if test "$rb_with_pthread" = "yes"; then break; fi
|
||||||
@ -1110,6 +1115,8 @@ if test x"$enable_pthread" = xyes; then
|
|||||||
case $pthread_lib in
|
case $pthread_lib in
|
||||||
c)
|
c)
|
||||||
;;
|
;;
|
||||||
|
root)
|
||||||
|
;;
|
||||||
c_r)
|
c_r)
|
||||||
MAINLIBS="-pthread $MAINLIBS"
|
MAINLIBS="-pthread $MAINLIBS"
|
||||||
;;
|
;;
|
||||||
@ -1271,7 +1278,7 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
openstep*) CCDLFLAGS="$CCDLFLAGS -fno-common";;
|
openstep*) CCDLFLAGS="$CCDLFLAGS -fno-common";;
|
||||||
rhapsody*) CCDLFLAGS="$CCDLFLAGS -fno-common";;
|
rhapsody*) CCDLFLAGS="$CCDLFLAGS -fno-common";;
|
||||||
darwin*) 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";;
|
*) CCDLFLAGS="$CCDLFLAGS -fPIC";;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
@ -1393,6 +1400,18 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
esac
|
esac
|
||||||
: ${LIBPATHENV=LIBRARY_PATH}
|
: ${LIBPATHENV=LIBRARY_PATH}
|
||||||
rb_cv_dlopen=yes ;;
|
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"
|
nto-qnx*) DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
||||||
: ${LDSHARED='ld -Bshareable -x'}
|
: ${LDSHARED='ld -Bshareable -x'}
|
||||||
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
||||||
@ -1605,7 +1624,7 @@ LIBRUBYARG='$(LIBRUBYARG_STATIC)'
|
|||||||
SOLIBS=
|
SOLIBS=
|
||||||
|
|
||||||
case "$target_os" in
|
case "$target_os" in
|
||||||
cygwin*|mingw*|beos*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*)
|
cygwin*|mingw*|beos*|haiku*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*)
|
||||||
: ${DLDLIBS=""}
|
: ${DLDLIBS=""}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -75,7 +75,7 @@ char *strrchr(const char *, const char);
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __BEOS__
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
#include <net/socket.h>
|
#include <net/socket.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -108,7 +108,9 @@
|
|||||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
||||||
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
||||||
/* valid flags for addrinfo */
|
/* valid flags for addrinfo */
|
||||||
|
#ifndef __HAIKU__
|
||||||
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
||||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
||||||
@ -164,7 +166,9 @@ extern void freeaddrinfo __P((struct addrinfo *));
|
|||||||
#if defined __UCLIBC__
|
#if defined __UCLIBC__
|
||||||
const
|
const
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef __HAIKU__
|
||||||
extern char *gai_strerror __P((int));
|
extern char *gai_strerror __P((int));
|
||||||
|
#endif
|
||||||
|
|
||||||
/* In case there is no definition of offsetof() provided - though any proper
|
/* In case there is no definition of offsetof() provided - though any proper
|
||||||
Standard C system should have one. */
|
Standard C system should have one. */
|
||||||
|
@ -9,6 +9,9 @@ when /cygwin/
|
|||||||
when /beos/
|
when /beos/
|
||||||
test_func = "socket"
|
test_func = "socket"
|
||||||
have_library("net", "socket")
|
have_library("net", "socket")
|
||||||
|
when /haiku/
|
||||||
|
test_func = "socket"
|
||||||
|
have_library("network", "socket")
|
||||||
when /i386-os2_emx/
|
when /i386-os2_emx/
|
||||||
test_func = "socket"
|
test_func = "socket"
|
||||||
have_library("socket", "socket")
|
have_library("socket", "socket")
|
||||||
@ -30,7 +33,7 @@ if have_header("arpa/inet.h")
|
|||||||
end
|
end
|
||||||
|
|
||||||
ipv6 = false
|
ipv6 = false
|
||||||
default_ipv6 = /cygwin/ !~ RUBY_PLATFORM
|
default_ipv6 = /cygwin|beos|haiku/ !~ RUBY_PLATFORM
|
||||||
if enable_config("ipv6", default_ipv6)
|
if enable_config("ipv6", default_ipv6)
|
||||||
if checking_for("ipv6") {try_link(<<EOF)}
|
if checking_for("ipv6") {try_link(<<EOF)}
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#if defined(__BEOS__)
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
# include <net/socket.h>
|
# include <net/socket.h>
|
||||||
#else
|
#else
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
@ -194,6 +194,7 @@ if (pai->ai_flags & AI_CANONNAME) {\
|
|||||||
|
|
||||||
#define ERR(err) { error = (err); goto bad; }
|
#define ERR(err) { error = (err); goto bad; }
|
||||||
|
|
||||||
|
/*
|
||||||
#if defined __UCLIBC__
|
#if defined __UCLIBC__
|
||||||
const
|
const
|
||||||
#endif
|
#endif
|
||||||
@ -204,6 +205,7 @@ gai_strerror(int ecode)
|
|||||||
ecode = EAI_MAX;
|
ecode = EAI_MAX;
|
||||||
return (char *)ai_errlist[ecode];
|
return (char *)ai_errlist[ecode];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
freeaddrinfo(struct addrinfo *ai)
|
freeaddrinfo(struct addrinfo *ai)
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#if defined(__BEOS__)
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
# include <net/socket.h>
|
# include <net/socket.h>
|
||||||
#else
|
#else
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
@ -110,6 +110,9 @@ static struct afd {
|
|||||||
#define ENI_FAMILY 5
|
#define ENI_FAMILY 5
|
||||||
#define ENI_SALEN 6
|
#define ENI_SALEN 6
|
||||||
|
|
||||||
|
#ifdef __HAIKU__
|
||||||
|
#define HAVE_INET_NTOP
|
||||||
|
#endif
|
||||||
#ifndef HAVE_INET_NTOP
|
#ifndef HAVE_INET_NTOP
|
||||||
static const char *
|
static const char *
|
||||||
inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)
|
inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#if defined(__BEOS__)
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
# include <net/socket.h>
|
# include <net/socket.h>
|
||||||
#else
|
#else
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
|
@ -198,7 +198,7 @@ void xfree(void*);
|
|||||||
#include "vms/vms.h"
|
#include "vms/vms.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__BEOS__)
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
#include <net/socket.h> /* intern.h needs fd_set definition */
|
#include <net/socket.h> /* intern.h needs fd_set definition */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
7
io.c
7
io.c
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#if !defined(_WIN32) && !defined(__DJGPP__)
|
#if !defined(_WIN32) && !defined(__DJGPP__)
|
||||||
# if defined(__BEOS__)
|
#if defined(__BEOS__) && !defined(__HAIKU__)
|
||||||
# include <net/socket.h>
|
# include <net/socket.h>
|
||||||
# else
|
# else
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
@ -90,7 +90,6 @@ extern void Init_File(void);
|
|||||||
# ifndef NOFILE
|
# ifndef NOFILE
|
||||||
# define NOFILE (OPEN_MAX)
|
# define NOFILE (OPEN_MAX)
|
||||||
# endif
|
# endif
|
||||||
#include <net/socket.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "ruby/util.h"
|
#include "ruby/util.h"
|
||||||
@ -202,6 +201,10 @@ static int max_file_descriptor = NOFILE;
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__HAIKU__)
|
||||||
|
#define shutdown(a,b) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define is_socket(fd, path) rb_w32_is_socket(fd)
|
#define is_socket(fd, path) rb_w32_is_socket(fd)
|
||||||
#elif !defined(S_ISSOCK)
|
#elif !defined(S_ISSOCK)
|
||||||
|
@ -63,6 +63,7 @@ $human = /human/ =~ RUBY_PLATFORM
|
|||||||
$netbsd = /netbsd/ =~ RUBY_PLATFORM
|
$netbsd = /netbsd/ =~ RUBY_PLATFORM
|
||||||
$os2 = /os2/ =~ RUBY_PLATFORM
|
$os2 = /os2/ =~ RUBY_PLATFORM
|
||||||
$beos = /beos/ =~ RUBY_PLATFORM
|
$beos = /beos/ =~ RUBY_PLATFORM
|
||||||
|
$haiku = /haiku/ =~ RUBY_PLATFORM
|
||||||
$solaris = /solaris/ =~ RUBY_PLATFORM
|
$solaris = /solaris/ =~ RUBY_PLATFORM
|
||||||
$dest_prefix_pattern = (File::PATH_SEPARATOR == ';' ? /\A([[:alpha:]]:)?/ : /\A/)
|
$dest_prefix_pattern = (File::PATH_SEPARATOR == ';' ? /\A([[:alpha:]]:)?/ : /\A/)
|
||||||
|
|
||||||
|
@ -119,7 +119,11 @@ native_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
|
|||||||
|
|
||||||
#define native_cleanup_push pthread_cleanup_push
|
#define native_cleanup_push pthread_cleanup_push
|
||||||
#define native_cleanup_pop pthread_cleanup_pop
|
#define native_cleanup_pop pthread_cleanup_pop
|
||||||
|
#ifdef __HAIKU__
|
||||||
|
#define native_thread_yield() /* not available under Haiku */
|
||||||
|
#else
|
||||||
#define native_thread_yield() sched_yield()
|
#define native_thread_yield() sched_yield()
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __CYGWIN__
|
#ifndef __CYGWIN__
|
||||||
static void add_signal_thread_list(rb_thread_t *th);
|
static void add_signal_thread_list(rb_thread_t *th);
|
||||||
@ -409,7 +413,9 @@ native_thread_create(rb_thread_t *th)
|
|||||||
CHECK_ERR(pthread_attr_setstacksize(&attr, stack_size));
|
CHECK_ERR(pthread_attr_setstacksize(&attr, stack_size));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __HAIKU__ /* not yet available under Haiku */
|
||||||
CHECK_ERR(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED));
|
CHECK_ERR(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED));
|
||||||
|
#endif
|
||||||
CHECK_ERR(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED));
|
CHECK_ERR(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED));
|
||||||
|
|
||||||
err = pthread_create(&th->thread_id, &attr, thread_start_func_1, th);
|
err = pthread_create(&th->thread_id, &attr, thread_start_func_1, th);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user