diff options
author | enami <enami@pkgsrc.org> | 2009-11-29 13:01:06 +0000 |
---|---|---|
committer | enami <enami@pkgsrc.org> | 2009-11-29 13:01:06 +0000 |
commit | 110b1046e5a0b1f7c5b1afc4bc8184546bd7aa0d (patch) | |
tree | 3e5459ee953503cbdc447919c975268c9f7edf0a /lang/gauche | |
parent | f94aac9e15d8631c58b3a2408ba69cc2b1e91258 (diff) | |
download | pkgsrc-110b1046e5a0b1f7c5b1afc4bc8184546bd7aa0d.tar.gz |
Make lang/gauceh work on arm baed NetBSD.
- Don't define DOUBLE_ARMENDIAN if netbsd.
- Backport alignment problem fix from trunk.
Diffstat (limited to 'lang/gauche')
-rw-r--r-- | lang/gauche/distinfo | 5 | ||||
-rw-r--r-- | lang/gauche/patches/patch-aa | 18 | ||||
-rw-r--r-- | lang/gauche/patches/patch-ah | 58 |
3 files changed, 75 insertions, 6 deletions
diff --git a/lang/gauche/distinfo b/lang/gauche/distinfo index 2ce933e2897..0b3aa9c0ea8 100644 --- a/lang/gauche/distinfo +++ b/lang/gauche/distinfo @@ -1,9 +1,10 @@ -$NetBSD: distinfo,v 1.24 2009/11/27 09:26:06 enami Exp $ +$NetBSD: distinfo,v 1.25 2009/11/29 13:01:06 enami Exp $ SHA1 (Gauche-0.9.tgz) = ebc18917c36201d6c3fda29dfdc52fce2d856a5f RMD160 (Gauche-0.9.tgz) = 3e0dfc1d498849b0d647e13f49addd0a56cc56fe Size (Gauche-0.9.tgz) = 3938498 bytes -SHA1 (patch-aa) = 5ba93d6c1310ee9fd86e6d2f7edf6ef832bf7a5c +SHA1 (patch-aa) = fc85a438f3c4e032001a3b875d575a455f91a3ac SHA1 (patch-ab) = 342ac7055e3e35a1f59c470376cfb7c21b05053d SHA1 (patch-af) = 0741e1a047ee7935bffa215a69cc417ba67b81f2 SHA1 (patch-ag) = ee9946e364d6723b0efe3b260fc5d02ccb04621d +SHA1 (patch-ah) = db08d8363368331e006b45d88ef0f05e150adc86 diff --git a/lang/gauche/patches/patch-aa b/lang/gauche/patches/patch-aa index e808191ea41..f2728431f55 100644 --- a/lang/gauche/patches/patch-aa +++ b/lang/gauche/patches/patch-aa @@ -1,8 +1,18 @@ -$NetBSD: patch-aa,v 1.9 2008/02/25 23:14:19 tnn Exp $ +$NetBSD: patch-aa,v 1.10 2009/11/29 13:01:06 enami Exp $ ---- configure.orig 2008-02-13 16:32:18.000000000 +0100 -+++ configure -@@ -9322,7 +9322,7 @@ fi +--- configure.orig 2009-11-22 08:32:29.000000000 +0000 ++++ configure 2009-11-29 09:13:36.000000000 +0000 +@@ -5459,6 +5459,9 @@ + ;; + alpha*) + CFLAGS="$CFLAGS -mieee" ;; ++ arm*-*-netbsd*) ++ # Don't define DOUBLE_ARMENDIAN on netbsd. ++ ;; + arm*) + # ARM processor uses a special mixed endian for doubles. + cat >>confdefs.h <<\_ACEOF +@@ -9402,7 +9405,7 @@ diff --git a/lang/gauche/patches/patch-ah b/lang/gauche/patches/patch-ah new file mode 100644 index 00000000000..6fa5dfb47df --- /dev/null +++ b/lang/gauche/patches/patch-ah @@ -0,0 +1,58 @@ +$NetBSD: patch-ah,v 1.7 2009/11/29 13:01:06 enami Exp $ + +Index: src/gauche.h +=================================================================== +--- src/gauche.h (revision 6883) ++++ src/gauche.h (revision 6885) +@@ -134,6 +134,16 @@ + Hence this macro. */ + #define SCM_IGNORE_RESULT(expr) do { if(expr) {} } while(0) + ++/* ScmFlonum and ScmClass must always be aligned in 8-byte boundaries. ++ (All other Scheme objects can be in 4-byte boundary.) ++ Some platform doesn't align static double in 8-byte boundaries, so ++ we try this as well. */ ++#ifdef __GNUC__ ++#define SCM_ALIGN8 __attribute__ ((aligned (8))) ++#else /* !__GNUC__ */ ++#define SCM_ALIGN8 /*empty*/ ++#endif /* !__GNUC__ */ ++ + /*------------------------------------------------------------- + * BASIC TYPES + */ +@@ -289,7 +299,7 @@ + + typedef struct ScmFlonumRec { + double val; +-} ScmFlonum; ++} ScmFlonum SCM_ALIGN8; + + #define SCM_FLONUM(obj) ((ScmFlonum*)(SCM_WORD(obj)&~0x07)) + #define SCM_FLONUMP(obj) (SCM_TAG2(obj) == 2) +@@ -599,13 +609,9 @@ + those fields casually. Also, the order of these fields must be + reflected to the class definition macros below. */ + struct ScmClassRec { +- /* We need all class structures be aligned on (at least) 8-byte boundary +- to make our tagging scheme work. Dynamically allocated objects +- are *always* 8-byte aligned due to Boehm GC's architecture. However, +- we found that statically allocated class structures can be placed +- 4-byte boundary on some 32bit systems if we started ScmClassRec +- with SCM_INSTANCE_HEADER. The following union is the trick +- to ensure 8-byte alighment on such systems. */ ++ /* A trick to align statically allocated class structure on 8-byte ++ boundary. This doesn't guarantee, though, so we use __alignment__ ++ attribute as well, whenever possible (see SCM_ALIGN8 macro). */ + union { + SCM_INSTANCE_HEADER; + double align_dummy; +@@ -642,7 +648,7 @@ + ScmInternalMutex mutex; /* to protect from MT hazard */ + ScmInternalCond cv; /* wait on this while a class being updated */ + void *data; /* extra data to do nasty trick */ +-}; ++} SCM_ALIGN8; + + typedef struct ScmClassStaticSlotSpecRec ScmClassStaticSlotSpec; + |