Files
haikuports/dev-lang/ruby/patches/ruby-1.9.3-rc1.patch
Augustin Cavalier 83a27ea3e5 Ruby: get the miniruby part to compile...
...but it crashes when trying to execute something. Oh well, that's
at least better than when it never compiled at all, I suppose.
2014-07-02 13:20:40 -04:00

136 lines
3.8 KiB
Diff

From 4efb1f167e3f3f083f4f7ac92166f71ccf7a0b5b Mon Sep 17 00:00:00 2001
From: Augustin Cavalier <waddlesplash@gmail.com>
Date: Wed, 2 Jul 2014 11:58:34 -0400
Subject: [PATCH] Applying Chris's fixes and some of my own.
---
configure.in | 13 ++++++++++---
elf.h | 42 ++++++++++++++++++++++++++++++++++++++++++
ext/nkf/nkf-utf8/nkf.h | 5 +++++
signal.c | 4 ++--
4 files changed, 59 insertions(+), 5 deletions(-)
create mode 100644 elf.h
diff --git a/configure.in b/configure.in
index 73c87b7..f4f6a23 100644
--- a/configure.in
+++ b/configure.in
@@ -2121,11 +2121,14 @@ if test "$with_dln_a_out" != yes; then
[haiku*], [ AS_CASE(["$target_cpu"],
[powerpc*], [
: ${LDSHARED="ld -xms"}
- DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
+ DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
],
[i586*], [
- : ${LDSHARED="ld -shared"}
- DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
+ : ${LDSHARED="${CC} -shared"}
+ if test "$rb_cv_binary_elf" = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
+ fi
+ DLDFLAGS="$DLDFLAGS -L/boot/system/develop/lib -lroot -L/boot/home/config/develop/lib"
])
: ${LIBPATHENV=LIBRARY_PATH}
rb_cv_dlopen=yes ],
@@ -2401,6 +2404,10 @@ AS_CASE("$enable_shared", [yes], [
LIBRUBY_DLDFLAGS='-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
])
],
+ [haiku*], [
+ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
+ ],
[darwin*], [
RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)'
LIBRUBY_LDSHARED='$(CC) -dynamiclib'
diff --git a/elf.h b/elf.h
new file mode 100644
index 0000000..2300dde
--- /dev/null
+++ b/elf.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * /boot/common/include/elf.h
+ *
+ * -I/system/develop/headers/private/system
+ * -I/system/develop/headers/private/system/arch_x86
+ *
+ * As found on other platforms, for benefit of GHC Haskell compiler,
+ * Donn
+ * */
+
+#ifdef __HAIKU__
+
+#include <elf32.h>
+#include <elf64.h>
+
+typedef struct Elf32_Ehdr Elf32_Ehdr;
+typedef struct Elf32_Shdr Elf32_Shdr;
+typedef struct Elf32_Sym Elf32_Sym;
+typedef struct Elf32_Rel Elf32_Rel;
+typedef struct Elf32_Rela Elf32_Rela;
+
+#define ELFMAG0 0x7F
+#define ELFMAG1 'E'
+#define ELFMAG2 'L'
+#define ELFMAG3 'F'
+
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+
+#define EM_386 3
+#define EM_SPARC 2
+#define EM_PPC 20
+
+#else
+
+#include_next <elf.h>
+
+#endif
\ No newline at end of file
diff --git a/ext/nkf/nkf-utf8/nkf.h b/ext/nkf/nkf-utf8/nkf.h
index a23ec5c..8351578 100644
--- a/ext/nkf/nkf-utf8/nkf.h
+++ b/ext/nkf/nkf-utf8/nkf.h
@@ -164,6 +164,11 @@ void setbinmode(FILE *fp)
# ifndef HAVE_LOCALE_H
# define HAVE_LOCALE_H
# endif
+#elif defined(__HAIKU__)
+# undef HAVE_LANGINFO_H
+# ifndef HAVE_LOCALE_H
+# define HAVE_LOCALE_H
+# endif
#else
# ifndef HAVE_LANGINFO_H
# define HAVE_LANGINFO_H
diff --git a/signal.c b/signal.c
index d4e56dc..92c54e9 100644
--- a/signal.c
+++ b/signal.c
@@ -28,6 +28,6 @@ ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val)
}
#endif
-#if defined(__BEOS__) || defined(__HAIKU__)
+#if defined(__BEOS__)
#undef SIGBUS
#endif
@@ -590,7 +590,7 @@ static int segv_received = 0;
static RETSIGTYPE
sigsegv(int sig SIGINFO_ARG)
{
-#ifdef USE_SIGALTSTACK
+#if defined USE_SIGALTSTACK && defined SA_SIGINFO
int ruby_stack_overflowed_p(const rb_thread_t *, const void *);
NORETURN(void ruby_thread_stack_overflow(rb_thread_t *th));
rb_thread_t *th = GET_THREAD();
---
1.8.3.4