mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-10 22:00:09 +02:00
...but it crashes when trying to execute something. Oh well, that's at least better than when it never compiled at all, I suppose.
136 lines
3.8 KiB
Diff
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
|
|
|