Build on sparc64.
ok jasper@
This commit is contained in:
parent
4770ab0216
commit
128680d7d9
@ -1,13 +1,14 @@
|
||||
# $OpenBSD: Makefile,v 1.33 2010/08/23 16:31:33 jasper Exp $
|
||||
# $OpenBSD: Makefile,v 1.34 2010/09/23 13:42:22 joshe Exp $
|
||||
|
||||
ONLY_FOR_ARCHS = amd64 i386 powerpc
|
||||
ONLY_FOR_ARCHS = amd64 i386 powerpc sparc64
|
||||
|
||||
COMMENT = ANSI Common Lisp implementation
|
||||
|
||||
DISTNAME= clisp-2.48
|
||||
REVISION = 0
|
||||
REVISION = 1
|
||||
CATEGORIES= lang
|
||||
HOMEPAGE= http://clisp.cons.org/
|
||||
MAINTAINER = Joshua Elsasser <joshe@openbsd.org>
|
||||
|
||||
# GPLv2
|
||||
PERMIT_PACKAGE_CDROM= Yes
|
||||
@ -18,7 +19,7 @@ PERMIT_DISTFILES_FTP= Yes
|
||||
MODULES= devel/gettext
|
||||
|
||||
LIB_DEPENDS = ::devel/libsigsegv \
|
||||
::devel/ffcall
|
||||
:ffcall->=1.10p1:devel/ffcall
|
||||
WANTLIB = avcall c callback m ncurses readline sigsegv
|
||||
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=clisp/}
|
||||
@ -41,4 +42,8 @@ CONFIGURE_ARGS= --fsstnd=openbsd \
|
||||
--srcdir=${WRKSRC} ${WRKBUILD}
|
||||
CONFIGURE_ENV = ac_cv_prog_DVIPDF=''
|
||||
|
||||
.if ${MACHINE_ARCH} == "sparc64"
|
||||
CFLAGS += -DSAFETY=2 -DNO_ASM -mcmodel=medany
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
73
lang/clisp/patches/patch-src_arilev0_d
Normal file
73
lang/clisp/patches/patch-src_arilev0_d
Normal file
@ -0,0 +1,73 @@
|
||||
$OpenBSD: patch-src_arilev0_d,v 1.1 2010/09/23 13:42:22 joshe Exp $
|
||||
|
||||
Rip out a bunch of sparc assembly code which is dubious at best.
|
||||
|
||||
--- src/arilev0.d.orig Thu Dec 13 14:27:48 2007
|
||||
+++ src/arilev0.d Sun Sep 19 15:45:18 2010
|
||||
@@ -337,12 +337,6 @@
|
||||
); \
|
||||
hi_assignment _hi; lo_assignment _lo; \
|
||||
})
|
||||
- #elif defined(SPARC)
|
||||
- #define mulu32(x,y,hi_assignment,lo_assignment) \
|
||||
- ({ lo_assignment mulu32_(x,y); # extern in Assembler \
|
||||
- {var register uint32 _hi __asm__("%g1"); \
|
||||
- hi_assignment _hi; \
|
||||
- }})
|
||||
#elif defined(HAVE_LONG_LONG_INT) && !defined(ARM)
|
||||
#define mulu32(x,y,hi_assignment,lo_assignment) \
|
||||
({ var register uint64 _prod = (uint64)(x) * (uint64)(y); \
|
||||
@@ -354,11 +348,9 @@
|
||||
#ifndef mulu32
|
||||
#define mulu32(x,y,hi_assignment,lo_assignment) \
|
||||
{ lo_assignment mulu32_(x,y); hi_assignment mulu32_high; }
|
||||
- #if defined(MC680X0) || defined(SPARC) || defined(SPARC64) || defined(ARM) || (defined(I80386) && !defined(BORLAND)) || defined(MIPS) || defined(HPPA) || defined(VAX)
|
||||
+ #if defined(MC680X0) || defined(ARM) || (defined(I80386) && !defined(BORLAND)) || defined(MIPS) || defined(HPPA) || defined(VAX)
|
||||
# mulu32_ extern in Assembler
|
||||
- #if defined(SPARC) || defined(SPARC64)
|
||||
- #define mulu32_high (uint32)(_get_g1()) # Rückgabe im Register %g1
|
||||
- #elif defined(LISPARIT) && !defined(HPPA) # In arihppa.d ist mulu32_high bereits definiert.
|
||||
+ #if defined(LISPARIT) && !defined(HPPA) # In arihppa.d ist mulu32_high bereits definiert.
|
||||
global uint32 mulu32_high;
|
||||
#endif
|
||||
#else
|
||||
@@ -468,12 +460,6 @@
|
||||
); \
|
||||
highlow64(_hi,_lo); \
|
||||
})
|
||||
- #elif defined(SPARC)
|
||||
- #define mulu32_64(x,y) \
|
||||
- ({ var register uint32 _lo = mulu32_(x,y); # extern in Assembler \
|
||||
- var register uint32 _hi __asm__("%g1"); \
|
||||
- highlow64(_hi,_lo); \
|
||||
- })
|
||||
#endif
|
||||
#endif
|
||||
#ifndef mulu32_64
|
||||
@@ -887,12 +873,6 @@
|
||||
q_assignment (uint32)__q; \
|
||||
r_assignment (uint32)__r; \
|
||||
})
|
||||
- #elif defined(SPARC) || defined(SPARC64)
|
||||
- #define divu_6432_3232(xhi,xlo,y,q_assignment,r_assignment) \
|
||||
- ({ var uint32 _q = divu_6432_3232_(xhi,xlo,y); # extern in Assembler \
|
||||
- var register uint32 _r __asm__("%g1"); \
|
||||
- q_assignment _q; r_assignment _r; \
|
||||
- })
|
||||
#elif defined(ARM) && 0 # see comment ariarm.d
|
||||
#define divu_6432_3232(xhi,xlo,y,q_assignment,r_assignment) \
|
||||
({ var uint32 _q = divu_6432_3232_(xhi,xlo,y); # extern in Assembler \
|
||||
@@ -932,11 +912,9 @@
|
||||
#ifndef divu_6432_3232
|
||||
#define divu_6432_3232(xhi,xlo,y,q_assignment,r_assignment) \
|
||||
{ q_assignment divu_6432_3232_(xhi,xlo,y); r_assignment divu_32_rest; }
|
||||
- #if defined(MC680Y0) || defined(SPARC) || defined(SPARC64) || defined(ARM) || (defined(I80386) && !defined(BORLAND)) || defined(HPPA)
|
||||
+ #if defined(MC680Y0) || defined(ARM) || (defined(I80386) && !defined(BORLAND)) || defined(HPPA)
|
||||
# divu_6432_3232_ extern in Assembler
|
||||
- #if defined(SPARC) || defined(SPARC64)
|
||||
- #define divu_32_rest (uint32)(_get_g1()) # Rückgabe im Register %g1
|
||||
- #elif defined(LISPARIT)
|
||||
+ #if defined(LISPARIT)
|
||||
global uint32 divu_32_rest;
|
||||
#endif
|
||||
#else
|
56
lang/clisp/patches/patch-src_arisparc64_d
Normal file
56
lang/clisp/patches/patch-src_arisparc64_d
Normal file
@ -0,0 +1,56 @@
|
||||
$OpenBSD: patch-src_arisparc64_d,v 1.1 2010/09/23 13:42:22 joshe Exp $
|
||||
|
||||
Disable the assembler loops, at least one of them is broken.
|
||||
|
||||
Remove a couple of potentially-broken math functions to make sure they
|
||||
aren't used in case the maze of #ifdefs in arilev0.d ever changes.
|
||||
|
||||
--- src/arisparc64.d.orig Wed Dec 5 08:06:32 2007
|
||||
+++ src/arisparc64.d Sun Sep 19 16:25:17 2010
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#ifdef INCLUDED_FROM_C
|
||||
|
||||
+#if 0
|
||||
#define COPY_LOOPS
|
||||
#define FILL_LOOPS
|
||||
#define CLEAR_LOOPS
|
||||
@@ -23,6 +24,7 @@
|
||||
#define SHIFT_LOOPS
|
||||
#define MUL_LOOPS
|
||||
#define DIV_LOOPS
|
||||
+#endif
|
||||
|
||||
#else
|
||||
|
||||
@@ -73,30 +75,12 @@ C(mulu16_:) # Input in %o0,%o1, Output in %o0
|
||||
retl
|
||||
_ srl %o2,0,%o0
|
||||
|
||||
-# extern struct { uint32 lo; uint32 hi; } mulu32_ (uint32 arg1, uint32 arg2);
|
||||
-# 2^32*hi+lo := arg1*arg2.
|
||||
-C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g1
|
||||
- umul %o0,%o1,%o2
|
||||
- rd %y,%g1
|
||||
- retl
|
||||
- _ srl %o2,0,%o0
|
||||
-
|
||||
# extern uint32 mulu32_unchecked (uint32 x, uint32 y);
|
||||
# result := arg1*arg2 < 2^32.
|
||||
C(mulu32_unchecked:) # Input in %o0,%o1, Output in %o0
|
||||
umul %o0,%o1,%o2
|
||||
retl
|
||||
_ srl %o2,0,%o0
|
||||
-
|
||||
-# extern struct { uint32 q; uint32 r; } divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y);
|
||||
-# x = 2^32*xhi+xlo = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^32*y .
|
||||
-C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g1
|
||||
- wr %o0,%g0,%y
|
||||
- udiv %o1,%o2,%o0 # x durch y dividieren, %o0 := q
|
||||
- umul %o0,%o2,%g1 # %g1 := (q*y) mod 2^32
|
||||
- sub %o1,%g1,%g1 # %g1 := (xlo-q*y) mod 2^32 = r
|
||||
- retl
|
||||
- _ srl %o0,0,%o0
|
||||
|
||||
# extern struct { uint16 q; uint16 r; } divu_3216_1616_ (uint32 x, uint16 y);
|
||||
# x = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^16*y .
|
@ -1,7 +1,20 @@
|
||||
$OpenBSD: patch-src_makemake_in,v 1.10 2010/01/07 10:55:28 edd Exp $
|
||||
--- src/makemake.in.orig Tue Jul 28 19:58:03 2009
|
||||
+++ src/makemake.in Wed Dec 30 22:12:19 2009
|
||||
@@ -1916,7 +1916,7 @@ echol "# This can also be used for pre-test and post-r
|
||||
$OpenBSD: patch-src_makemake_in,v 1.11 2010/09/23 13:42:22 joshe Exp $
|
||||
|
||||
Override broken compiler test, attempting to build 32-bit clisp on a
|
||||
64-bit patform will not work out very well.
|
||||
|
||||
--- src/makemake.in.orig Tue Jul 28 06:58:03 2009
|
||||
+++ src/makemake.in Mon Sep 20 16:32:15 2010
|
||||
@@ -1108,6 +1108,8 @@ esac
|
||||
# cpu=hppa ;;
|
||||
# esac
|
||||
|
||||
+test "$cpu" = "${host_cpu%*64}" && cpu=${host_cpu}
|
||||
+
|
||||
if [ "${verbose}" = true -o "${verbose}" = yes ]; then
|
||||
cat <<EOF >&2
|
||||
# host system:
|
||||
@@ -1916,7 +1918,7 @@ echol "# This can also be used for pre-test and post-r
|
||||
echol "# make distrib VERSION_SUFFIX=pre"
|
||||
echol "VERSION_SUFFIX="
|
||||
echol "# The distribution's top directory"
|
||||
@ -10,7 +23,7 @@ $OpenBSD: patch-src_makemake_in,v 1.10 2010/01/07 10:55:28 edd Exp $
|
||||
echol
|
||||
echol '# Directories used by "make install":'
|
||||
echol "prefix = ${PREFIX}"
|
||||
@@ -3002,7 +3002,7 @@ fi
|
||||
@@ -3002,7 +3004,7 @@ fi
|
||||
CLISP_="${HERE_}lisp${LEXE} -M ${HERE_}lispinit.mem ${localeflags}${someflags}"
|
||||
|
||||
if [ $CROSS = false ] ; then
|
||||
|
24
lang/clisp/patches/patch-src_spsparc64_d
Normal file
24
lang/clisp/patches/patch-src_spsparc64_d
Normal file
@ -0,0 +1,24 @@
|
||||
$OpenBSD: patch-src_spsparc64_d,v 1.1 2010/09/23 13:42:22 joshe Exp $
|
||||
|
||||
Using %g1 to pass values across function calls is a bit iffy so make
|
||||
sure that trying to call _get_g1() results in a linker error.
|
||||
|
||||
--- src/spsparc64.d.orig Mon Mar 24 11:23:28 2008
|
||||
+++ src/spsparc64.d Sun Sep 19 15:03:08 2010
|
||||
@@ -11,16 +11,8 @@
|
||||
|
||||
.global getSP
|
||||
.global _getSP
|
||||
- .global _get_g1
|
||||
- .global __get_g1
|
||||
|
||||
# extern void* getSP (void);
|
||||
getSP:
|
||||
_getSP: retl
|
||||
_ mov %sp,%o0
|
||||
-
|
||||
-# extern uint32 _get_g1 (void);
|
||||
-_get_g1:
|
||||
-__get_g1: retl
|
||||
- _ srl %g1,0,%o0
|
||||
-
|
Loading…
x
Reference in New Issue
Block a user