summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorbjs <bjs>2008-04-28 04:14:31 +0000
committerbjs <bjs>2008-04-28 04:14:31 +0000
commit6c4e3755f198ed52c21f04e85e11ae4f29212d08 (patch)
treeec53ec1dcbb92724405eb6194b06c397e7a236ae /lang
parentdf9c1501465163b445cb377e9ec674628108a77b (diff)
downloadpkgsrc-6c4e3755f198ed52c21f04e85e11ae4f29212d08.tar.gz
Import version 4.2.6 of the Gambit-C Scheme System.
Blurb: Gambit-C includes a Scheme interpreter and a Scheme compiler which can be used to build standalone executables. Because the compiler generates portable C code it is fairly easy to port to any platform with a decent C compiler. The Gambit-C system conforms to the R4RS, R5RS and IEEE Scheme standards. The full numeric tower is implemented, including: infinite precision integers (bignums), rationals, inexact reals (floating point numbers), and complex numbers. Gambit-C supports a number of extensions to the standards including (non-exhaustively): - an optimizing compiler - with several powerful transformations (automatic function inlining, partial evaluation, etc) - that generates properly tail-recursive portable C code - a scalable thread system that can handle millions of concurrent threads - an I/O system fully integrated with the thread system that supports regular files, ttys, sockets (client and server, with TCP or UDP), directories, processes, and pipes - an infix syntax extension (SIX) that allows mixing code in the standard prefix syntax with code in a C-like syntax - SRFIs 0, 4, 6, 8, 9, 18, 21, 22, 23, 27, 39 - a REPL/debugger with - a continuation inspection facility (i.e. "backtrace") - a single-stepping mode - error messages with location of error (file, line, and column number) - emacs compatible line-editing with history - very efficient bignum implementation - a foreign function interface for C - a memory management system that grows and shrinks the heap based on the program's needs - a linker that builds standalone executables and shared libraries - dynamic loading of compiled modules and libraries (supported on many platforms) - Unicode support for characters, strings, I/O and source code - object finalization, pretty printing, keyword objects optional and keyword parameters (with the syntax and semantics of DSSSL) - configurable reader with control over case sensitivity - write/read invariance of symbols, e.g. (string->symbol "B;123") => |B;123| - write/read invariance of floating point numbers - unhygienic macros and more!
Diffstat (limited to 'lang')
-rw-r--r--lang/gambc/DESCR12
-rw-r--r--lang/gambc/Makefile78
-rw-r--r--lang/gambc/PLIST39
-rw-r--r--lang/gambc/buildlink3.mk21
-rw-r--r--lang/gambc/distinfo6
-rw-r--r--lang/gambc/hacks.mk14
-rw-r--r--lang/gambc/patches/patch-aa28
-rw-r--r--lang/gambc/version.mk10
8 files changed, 208 insertions, 0 deletions
diff --git a/lang/gambc/DESCR b/lang/gambc/DESCR
new file mode 100644
index 00000000000..5f378d90bbc
--- /dev/null
+++ b/lang/gambc/DESCR
@@ -0,0 +1,12 @@
+This package the Gambit-C Scheme programming system. Gambit-C
+includes a Scheme interpreter and a Scheme compiler which can be used
+to build standalone executables. Because the compiler generates
+portable C code it is fairly easy to port to any platform with a
+decent C compiler.
+
+The Gambit-C system conforms to the R4RS, R5RS and IEEE Scheme standards.
+The full numeric tower is implemented, including: infinite precision
+integers (bignums), rationals, inexact reals (floating point numbers),
+and complex numbers. Gambit-C supports a number of extensions to the
+standards. Please see the <http://gambit.uri.umontreal.ca/~gambit/wiki>
+for more information: there is simply not enough room here to elaborate!
diff --git a/lang/gambc/Makefile b/lang/gambc/Makefile
new file mode 100644
index 00000000000..386c0434bae
--- /dev/null
+++ b/lang/gambc/Makefile
@@ -0,0 +1,78 @@
+# $NetBSD: Makefile,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+#
+
+DISTNAME= gambc-${GAMBC_DIST_VERSION}
+PKGNAME= gambc-${GAMBC_VERSION}
+CATEGORIES= lang
+MASTER_SITES= http://www.iro.umontreal.ca/~gambit/download/gambit/v4.2/source/
+EXTRACT_SUFX= .tgz
+
+MAINTAINER= bjs@NetBSD.org
+HOMEPAGE= http://www.iro.umontreal.ca/~gambit/
+COMMENT= GambitC Scheme System
+
+PKG_DESTDIR_SUPPORT= user-destdir
+
+GNU_CONFIGURE= yes
+USE_LANGUAGES= c c++
+USE_LIBTOOL= yes
+USE_TOOLS+= gmake autoconf automake
+
+CONFIGURE_ARGS+= --enable-single-host
+CONFIGURE_ARGS+= --enable-cplusplus
+CONFIGURE_ARGS+= --enable-shared
+###
+### XXX On NetBSD/amd64 4.99.61, gcc had a resident memory size of over 384MB
+### while building this and ultimately exhausted all 1GB of swap I had.
+### See the documentation for more information. (This was due to using
+### -fmodulo-sched, gcc 4.1.3).
+###
+CONFIGURE_ARGS+= --disable-gcc-opts
+
+INFO_FILES= yes
+MAKE_FILE= makefile
+
+BUILD_TARGET+= bootstrap
+TEST_TARGET= check
+
+CHECK_PORTABILITY_SKIP= prebuilt/*/*
+DLOPEN_REQUIRE_PTHREADS=no
+
+.include "../../mk/bsd.prefs.mk"
+
+GAMBC_DIST_VERSION= ${GAMBC_VERSION:C|^.*|v&|:S|.|_|g}
+
+GAMBC_MAKE_FLAGS= prefix=${PREFIX}
+GAMBC_MAKE_FLAGS+= includedir=${PREFIX}/include
+GAMBC_MAKE_FLAGS+= bindir=${PREFIX}/bin
+GAMBC_MAKE_FLAGS+= infodir=${PREFIX}/${PKGINFODIR}
+GAMBC_MAKE_FLAGS+= libdir=${PREFIX}/lib/
+GAMBC_MAKE_FLAGS+= mandir=${PREFIX}/${PKGMANDIR}
+GAMBC_MAKE_FLAGS+= docdir=${PREFIX}/share/doc/${PKGBASE}
+GAMBC_MAKE_FLAGS+= infodir=${PREFIX}/${PKGINFODIR}
+GAMBC_MAKE_FLAGS+= emacsdir=${PREFIX}/share/emacs/site-lisp
+
+MAKE_FLAGS+= ${GAMBC_MAKE_FLAGS}
+INSTALL_MAKE_FLAGS+= ${GAMBC_MAKE_FLAGS:@.f.@\
+ ${.f.:C|${PREFIX}|${DESTDIR}&|}\
+ @:M*}
+
+SUBST_CLASSES+= build
+SUBST_FILES.build= configure
+SUBST_FILES.build+= makefile.in */makefile.in */*/makefile.in
+SUBST_MESSAGE.build= Preparing build-time and installation configuration.
+SUBST_SED.build= -e 's|v${GAMBC_DIST_VERSION}||'
+SUBST_SED.build+= -e 's|@target_vendor@|The NetBSD Foundation, Inc.|g'
+SUBST_STAGE.build= pre-configure
+SUBST_VARS.build+= PACKAGE_SUBDIR PACKAGE_VERSION
+SUBST_VARS.build+= PACKAGE_STRING
+
+PACKAGE_SUBDIR= # empty
+PACKAGE_VERSION= ${PKGVERSION}
+PACKAGE_STRING= ${${PKGBASE} ${PKGVERSION}:L}
+
+.include "version.mk"
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/termcap.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/lang/gambc/PLIST b/lang/gambc/PLIST
new file mode 100644
index 00000000000..ff303d6a548
--- /dev/null
+++ b/lang/gambc/PLIST
@@ -0,0 +1,39 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+bin/gsc
+bin/gsc-cc-o.bat
+bin/gsc-script
+bin/gsi
+bin/gsi-script
+bin/scheme-ieee-1178-1990
+bin/scheme-r4rs
+bin/scheme-r5rs
+bin/scheme-srfi-0
+bin/six
+bin/six-script
+include/gambit.h
+info/gambit-c.info
+lib/_eval#.scm
+lib/_gambc.c
+lib/_gambcgsc.c
+lib/_gambcgsi.c
+lib/_gambit#.scm
+lib/_io#.scm
+lib/_kernel#.scm
+lib/_nonstd#.scm
+lib/_num#.scm
+lib/_repl#.scm
+lib/_std#.scm
+lib/_system#.scm
+lib/_thread#.scm
+lib/digest#.scm
+lib/digest.scm
+lib/gambit#.scm
+lib/libgambc.so
+lib/libgambcgsc.so
+lib/libgambcgsi.so
+lib/r4rs#.scm
+lib/r5rs#.scm
+share/doc/gambc/gambit-c.html
+share/doc/gambc/gambit-c.pdf
+share/doc/gambc/gambit-c.txt
+@dirrm share/doc/gambc
diff --git a/lang/gambc/buildlink3.mk b/lang/gambc/buildlink3.mk
new file mode 100644
index 00000000000..b1dcd440b42
--- /dev/null
+++ b/lang/gambc/buildlink3.mk
@@ -0,0 +1,21 @@
+# $NetBSD: buildlink3.mk,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+
+BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH}+
+GAMBC_BUILDLINK3_MK:= ${GAMBC_BUILDLINK3_MK}+
+
+.if ${BUILDLINK_DEPTH} == "+"
+BUILDLINK_DEPENDS+= gambc
+.endif
+
+BUILDLINK_PACKAGES:= ${BUILDLINK_PACKAGES:Ngambc}
+BUILDLINK_PACKAGES+= gambc
+BUILDLINK_ORDER:= ${BUILDLINK_ORDER} ${BUILDLINK_DEPTH}gambc
+
+.if ${GAMBC_BUILDLINK3_MK} == "+"
+BUILDLINK_API_DEPENDS.gambc+= gambc>=4.2.6
+BUILDLINK_PKGSRCDIR.gambc?= ../../lang/gambc
+.endif # GAMBC_BUILDLINK3_MK
+
+.include "../../mk/dlopen.buildlink3.mk"
+
+BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH:S/+$//}
diff --git a/lang/gambc/distinfo b/lang/gambc/distinfo
new file mode 100644
index 00000000000..23983de0ff3
--- /dev/null
+++ b/lang/gambc/distinfo
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+
+SHA1 (gambc-v4_2_6.tgz) = 2b6415a82d10113d5f6535f52da4718207c13c30
+RMD160 (gambc-v4_2_6.tgz) = 0d8a4f22a909b1014489db3ec9d545f46df3530e
+Size (gambc-v4_2_6.tgz) = 14147053 bytes
+SHA1 (patch-aa) = 4261aa36e1dbf3f818a851dd17a579521c1dac7d
diff --git a/lang/gambc/hacks.mk b/lang/gambc/hacks.mk
new file mode 100644
index 00000000000..c7d27dac9ea
--- /dev/null
+++ b/lang/gambc/hacks.mk
@@ -0,0 +1,14 @@
+# $NetBSD: hacks.mk,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+###
+.if !defined(GAMBC_HACKS_MK)
+GAMBC_HACKS_MK= # empty
+. include "../../mk/compiler.mk"
+###
+### It looks as if the developers don't think O2 is a win. Considering how
+### much memory and time this package takes to build the more optimization
+### is enabled, let's let the configure script do its job.
+###
+. if !empty(CC_VERSION:Mgcc-*)
+BUILDLINK_TRANSFORM+= rm:-O[2-9s]*
+. endif
+.endif
diff --git a/lang/gambc/patches/patch-aa b/lang/gambc/patches/patch-aa
new file mode 100644
index 00000000000..d4b641d9a86
--- /dev/null
+++ b/lang/gambc/patches/patch-aa
@@ -0,0 +1,28 @@
+$NetBSD: patch-aa,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+
+--- makefile.in.orig 2008-03-17 13:13:58.000000000 -0400
++++ makefile.in
+@@ -56,7 +56,7 @@ includedir=$(includedir) libdir=$(libdir
+ bindir=$(bindir) docdir=$(docdir) \
+ infodir=$(infodir) emacsdir=$(emacsdir)
+
+-SUBDIRS = include lib gsi gsc bin misc doc tests examples prebuilt
++SUBDIRS = include lib gsi gsc bin doc tests examples
+
+ RCFILES = README INSTALL.txt LICENSE-2.0.txt LGPL.txt \
+ makefile.in configure.ac config.guess config.sub install-sh mkidirs \
+@@ -174,10 +174,10 @@ publish-release: fake_target
+ install-pre:
+
+ install-post: all
+- rm -f $(prefix)/current $(prefix)/current.lnk
+- if test "@bat@" = ""; then \
+- (cd $(prefix) && $(LN_S) .$(PACKAGE_SUBDIR) current); \
+- fi
++# rm -f $(prefix)/current $(prefix)/current.lnk
++# if test "@bat@" = ""; then \
++# (cd $(prefix) && $(LN_S) .$(PACKAGE_SUBDIR) current); \
++# fi
+
+ uninstall-pre:
+
diff --git a/lang/gambc/version.mk b/lang/gambc/version.mk
new file mode 100644
index 00000000000..8751a2ce254
--- /dev/null
+++ b/lang/gambc/version.mk
@@ -0,0 +1,10 @@
+# $NetBSD: version.mk,v 1.1.1.1 2008/04/28 04:14:31 bjs Exp $
+###
+.if !defined(GAMBC_VERSION_MK)
+GAMBC_VERSION_MK= # empty
+###
+### The package version sets the distribution version.
+###
+GAMBC_VERSION= 4.2.6
+GAMBC_DIST_VERSION= ${GAMBC_VERSION:C|^.*|v&|:S|.|_|g}
+.endif