summaryrefslogtreecommitdiff
path: root/lang/newsqueak
diff options
context:
space:
mode:
authordholland <dholland@pkgsrc.org>2015-04-25 19:58:32 +0000
committerdholland <dholland@pkgsrc.org>2015-04-25 19:58:32 +0000
commit69196fb9b2414ac9f235d92c96cfaefb5bad0f1c (patch)
treedb76f467a435b0ec75d17e7cae4c65ec36b4e45f /lang/newsqueak
parentd4083687284b382ec31590fc25934ab3440964d2 (diff)
downloadpkgsrc-69196fb9b2414ac9f235d92c96cfaefb5bad0f1c.tar.gz
Add a package for Rob Pike's newsqueak, a channel-based concurrent
programming language. It is one of the ancestors of Go.
Diffstat (limited to 'lang/newsqueak')
-rw-r--r--lang/newsqueak/DESCR2
-rw-r--r--lang/newsqueak/Makefile23
-rw-r--r--lang/newsqueak/PLIST16
-rw-r--r--lang/newsqueak/distinfo23
-rw-r--r--lang/newsqueak/patches/patch-Makefile30
-rw-r--r--lang/newsqueak/patches/patch-include_lib9.h28
-rw-r--r--lang/newsqueak/patches/patch-include_u.h35
-rw-r--r--lang/newsqueak/patches/patch-lib9_Makefile22
-rw-r--r--lang/newsqueak/patches/patch-lib9_doprint.c228
-rw-r--r--lang/newsqueak/patches/patch-lib9_nan.c42
-rw-r--r--lang/newsqueak/patches/patch-lib9_wait.c15
-rw-r--r--lang/newsqueak/patches/patch-libbio_Makefile34
-rw-r--r--lang/newsqueak/patches/patch-squint_Makefile60
-rw-r--r--lang/newsqueak/patches/patch-squint_compile.c15
-rw-r--r--lang/newsqueak/patches/patch-squint_error.c79
-rw-r--r--lang/newsqueak/patches/patch-squint_inst15
-rw-r--r--lang/newsqueak/patches/patch-squint_lex.c33
-rw-r--r--lang/newsqueak/patches/patch-squint_main.c33
-rw-r--r--lang/newsqueak/patches/patch-squint_proc.c44
-rw-r--r--lang/newsqueak/patches/patch-squint_progs_npowser15
-rw-r--r--lang/newsqueak/patches/patch-squint_var.c15
-rw-r--r--lang/newsqueak/patches/patch-squint_xec.c22
22 files changed, 829 insertions, 0 deletions
diff --git a/lang/newsqueak/DESCR b/lang/newsqueak/DESCR
new file mode 100644
index 00000000000..d0578bf7e86
--- /dev/null
+++ b/lang/newsqueak/DESCR
@@ -0,0 +1,2 @@
+Newsqueak is a channel-based concurrent programming language from Rob
+Pike; it is a predecessor of Alef, Limbo, and Go.
diff --git a/lang/newsqueak/Makefile b/lang/newsqueak/Makefile
new file mode 100644
index 00000000000..b2d4ae6082c
--- /dev/null
+++ b/lang/newsqueak/Makefile
@@ -0,0 +1,23 @@
+# $NetBSD: Makefile,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+DISTNAME= newsqueak
+PKGNAME= newsqueak-20000211
+CATEGORIES= lang
+MASTER_SITES= http://www.herpolhode.com/rob/
+
+MAINTAINER= dholland@NetBSD.org
+HOMEPAGE= http://en.wikipedia.org/wiki/Newsqueak
+COMMENT= Newsqueak: a language for communicating with mice
+LICENSE= public-domain
+
+WRKSRC= ${WRKDIR}
+USE_TOOLS+= yacc
+INSTALLATION_DIRS= bin share/squint/include
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/squint/squint \
+ ${DESTDIR}${PREFIX}/bin/squint
+ ${INSTALL_DATA} ${WRKSRC}/squint/include/*.h \
+ ${DESTDIR}${PREFIX}/share/squint/include/
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/lang/newsqueak/PLIST b/lang/newsqueak/PLIST
new file mode 100644
index 00000000000..14003087fdb
--- /dev/null
+++ b/lang/newsqueak/PLIST
@@ -0,0 +1,16 @@
+@comment $NetBSD: PLIST,v 1.1 2015/04/25 19:58:32 dholland Exp $
+bin/squint
+share/squint/include/arrow.h
+share/squint/include/bitmapio.h
+share/squint/include/box.h
+share/squint/include/fio.h
+share/squint/include/gnot.h
+share/squint/include/gnotio.h
+share/squint/include/layer.h
+share/squint/include/lib.h
+share/squint/include/lmenu.h
+share/squint/include/menu.h
+share/squint/include/nspace.h
+share/squint/include/sight.h
+share/squint/include/sys.h
+share/squint/include/whitearrow.h
diff --git a/lang/newsqueak/distinfo b/lang/newsqueak/distinfo
new file mode 100644
index 00000000000..0ae165e2899
--- /dev/null
+++ b/lang/newsqueak/distinfo
@@ -0,0 +1,23 @@
+$NetBSD: distinfo,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+SHA1 (newsqueak.tar.gz) = 085cc8248be5b6145f57b8517e0f22469e5047c1
+RMD160 (newsqueak.tar.gz) = 56f6fcf95a58d141efc57cedbf1a49574ea8b777
+Size (newsqueak.tar.gz) = 265358 bytes
+SHA1 (patch-Makefile) = 1c71432e17f2e146c6b077cf23e8dc13a65356d5
+SHA1 (patch-include_lib9.h) = 0988b189b5b3e6666cdc4f04b31b5410af63aca9
+SHA1 (patch-include_u.h) = ffb1752ebbcb600850e196e630592063827e32c9
+SHA1 (patch-lib9_Makefile) = 5e48c9cdca6d560cd7c8d9b92e729f7fbb5fa999
+SHA1 (patch-lib9_doprint.c) = c94bee65440c0a697ba426549740a4df3aa3e809
+SHA1 (patch-lib9_nan.c) = 3c7067d47d9a7a1f98f41f466dd346d1593994bb
+SHA1 (patch-lib9_wait.c) = a8574632f483ea9da2f83597a165605b3bc3b2b6
+SHA1 (patch-libbio_Makefile) = 0272c0953ede97a9805a5668035938c18c9932f1
+SHA1 (patch-squint_Makefile) = ae117cb88ead5924207f03c85358a3a4baeaba90
+SHA1 (patch-squint_compile.c) = 9f4c5684a04b62ed61bb9155853d921ec870231a
+SHA1 (patch-squint_error.c) = 1f7402b91c485037f154adb7346b5fa0c4bb1793
+SHA1 (patch-squint_inst) = ec4add4193884e4ae402ebbc539dcc2bacd553d8
+SHA1 (patch-squint_lex.c) = 08f503be33aac0db29295077af1e56ceb38d8ae3
+SHA1 (patch-squint_main.c) = 33afa209ca89d89c23d5cf4d225b1d0eeedf53a9
+SHA1 (patch-squint_proc.c) = 1650bb984ff237589d2d5cc83cb60e9c81cbb631
+SHA1 (patch-squint_progs_npowser) = b65ec5c6bb354bcccfaa01912f9498da031e6c07
+SHA1 (patch-squint_var.c) = 8a79fbbe4acba76214437707e1baee31e746f69c
+SHA1 (patch-squint_xec.c) = 6b040eb1189233852adbe698e902946b367884c3
diff --git a/lang/newsqueak/patches/patch-Makefile b/lang/newsqueak/patches/patch-Makefile
new file mode 100644
index 00000000000..603f68d6771
--- /dev/null
+++ b/lang/newsqueak/patches/patch-Makefile
@@ -0,0 +1,30 @@
+$NetBSD: patch-Makefile,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Configure for pkgsrc, and use bsd make.
+Don't set -g; do set -fno-strict-aliasing.
+Pass in PREFIX.
+
+--- Makefile.orig 2000-02-11 17:04:11.000000000 +0000
++++ Makefile
+@@ -1,12 +1,11 @@
+-DIRS = lib9 libbio squint
++DIRS= lib9 libbio squint
+
+-CFLAGS = -g -Wall $(INCLUDES)
++#CFLAGS+= -g
++CFLAGS+= -Wall $(INCLUDES)
++CFLAGS+= -fno-strict-aliasing # required in squint/var.c
++CFLAGS+= -DPREFIX=\"$(PREFIX)\"
+
+-all:
+- for i in $(DIRS); do cd $$i; CFLAGS="$(CFLAGS)" make -$(MAKEFLAGS); cd ..; done
+-
+-clean:
+- for i in $(DIRS); do cd $$i; CFLAGS="$(CFLAGS)" make -$(MAKEFLAGS) clean; cd ..; done
+-
+-%:
+- for i in $(DIRS); do cd $$i; CFLAGS="$(CFLAGS)" make -$(MAKEFLAGS) $@; cd ..; done
++all depend clean:
++.for D in $(DIRS)
++ (cd $D && CFLAGS=$(CFLAGS:Q) $(MAKE) $@) || exit 1
++.endfor
diff --git a/lang/newsqueak/patches/patch-include_lib9.h b/lang/newsqueak/patches/patch-include_lib9.h
new file mode 100644
index 00000000000..062ba516284
--- /dev/null
+++ b/lang/newsqueak/patches/patch-include_lib9.h
@@ -0,0 +1,28 @@
+$NetBSD: patch-include_lib9.h,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Provide an implementation of SET to silence some compiler warnings.
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- include/lib9.h~ 2000-02-11 17:04:14.000000000 +0000
++++ include/lib9.h
+@@ -7,7 +7,7 @@ typedef unsigned short Rune;
+ #define create(name, mode, perm) creat(name, perm)
+ #define exec(a,b) execv(a,b)
+ #define USED(a)
+-#define SET(a)
++#define SET(a) ((a) = 0)
+
+ #define nil ((void*)0)
+
+@@ -96,7 +96,10 @@ int sprint(char *buf, const char *fmt, .
+ int snprint(char *buf, int len, const char *fmt, ...);
+ char* seprint(char *buf, char *e, const char *fmt, ...);
+ #define pow10(n) (pow(10.0, (double)(n)))
+-extern int fmtinstall(int, int (*)(va_list*, Fconv*));
++struct va_wrap {
++ va_list ap;
++};
++extern int fmtinstall(int, int (*)(struct va_wrap *, Fconv*));
+
+ /* nan.c */
+ double NaN(void);
diff --git a/lang/newsqueak/patches/patch-include_u.h b/lang/newsqueak/patches/patch-include_u.h
new file mode 100644
index 00000000000..c60885ba44b
--- /dev/null
+++ b/lang/newsqueak/patches/patch-include_u.h
@@ -0,0 +1,35 @@
+$NetBSD: patch-include_u.h,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Add support for modern BSDs.
+
+--- include/u.h.orig 2000-02-11 17:05:58.000000000 +0000
++++ include/u.h
+@@ -189,6 +189,28 @@ typedef unsigned long long uvlong;
+ typedef long long vlong;
+ #endif
+
++#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
++#define _XOPEN_SOURCE_EXTENDED
++
++#include <stdarg.h>
++#include <setjmp.h>
++#include <string.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <errno.h>
++#include <math.h>
++#include <fcntl.h>
++#include <sys/wait.h>
++#include <sys/types.h>
++#include <time.h>
++#include <sys/resource.h>
++
++typedef unsigned char uchar;
++typedef unsigned long ulong;
++typedef unsigned long long uvlong;
++typedef long long vlong;
++#endif
++
+ #ifdef sgi
+ #include <stdarg.h>
+ #include <setjmp.h>
diff --git a/lang/newsqueak/patches/patch-lib9_Makefile b/lang/newsqueak/patches/patch-lib9_Makefile
new file mode 100644
index 00000000000..5e210f5873f
--- /dev/null
+++ b/lang/newsqueak/patches/patch-lib9_Makefile
@@ -0,0 +1,22 @@
+$NetBSD: patch-lib9_Makefile,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Configure for pkgsrc.
+
+--- lib9/Makefile~ 2000-02-11 17:04:14.000000000 +0000
++++ lib9/Makefile
+@@ -15,12 +15,13 @@ INCLUDES=-I../include
+
+ CFLAGS += $(INCLUDES)
+
+-CC=gcc
++CC?=gcc
+
+ all: $(LIB)
+
+ $(LIB): $(OFILES)
+- ar r $(LIB) $(OFILES)
++ rm -f $(LIB)
++ $(AR) cq $(LIB) $(OFILES)
+
+ clean:
+ rm -rf $(OFILES)
diff --git a/lang/newsqueak/patches/patch-lib9_doprint.c b/lang/newsqueak/patches/patch-lib9_doprint.c
new file mode 100644
index 00000000000..e25bcefdae1
--- /dev/null
+++ b/lang/newsqueak/patches/patch-lib9_doprint.c
@@ -0,0 +1,228 @@
+$NetBSD: patch-lib9_doprint.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- lib9/doprint.c~ 2000-02-11 17:04:14.000000000 +0000
++++ lib9/doprint.c
+@@ -32,21 +32,21 @@ struct Fmtalloc {
+ #endif
+ int convcount;
+ char index[MAXFMT];
+- int (*conv[MAXCONV])(va_list*, Fconv*);
++ int (*conv[MAXCONV])(struct va_wrap *, Fconv*);
+ };
+ static struct Fmtalloc fmtalloc;
+
+-static int noconv(va_list*, Fconv*);
+-static int flags(va_list*, Fconv*);
++static int noconv(struct va_wrap *, Fconv*);
++static int flags(struct va_wrap *, Fconv*);
+
+-static int cconv(va_list*, Fconv*);
+-static int rconv(va_list*, Fconv*);
+-static int sconv(va_list*, Fconv*);
+-static int percent(va_list*, Fconv*);
+-static int column(va_list*, Fconv*);
++static int cconv(struct va_wrap *, Fconv*);
++static int rconv(struct va_wrap *, Fconv*);
++static int sconv(struct va_wrap *, Fconv*);
++static int percent(struct va_wrap *, Fconv*);
++static int column(struct va_wrap *, Fconv*);
+
+-extern int numbconv(va_list*, Fconv*);
+-extern int fltconv(va_list*, Fconv*);
++extern int numbconv(struct va_wrap *, Fconv*);
++extern int fltconv(struct va_wrap *, Fconv*);
+
+
+ static void
+@@ -108,7 +108,7 @@ initfmt(void)
+ }
+
+ int
+-fmtinstall(int c, int (*f)(va_list*, Fconv*))
++fmtinstall(int c, int (*f)(struct va_wrap *, Fconv*))
+ {
+
+ #ifdef LOCKS_AVAILABLE
+@@ -165,6 +165,9 @@ doprint(char *s, char *es, const char *f
+ int n, c;
+ Rune rune;
+ Fconv local;
++ struct va_wrap argwrap;
++
++ va_copy(argwrap.ap, argp);
+
+ if(fmtalloc.convcount <= 0)
+ initfmt();
+@@ -252,7 +255,7 @@ l1:
+ goto l1;
+ }
+ if(c == '*') {
+- n = va_arg(argp, int);
++ n = va_arg(argwrap.ap, int);
+ if(local.f1 == NONE)
+ local.f1 = n;
+ else
+@@ -263,7 +266,7 @@ l1:
+ if(c >= 0 && c < MAXFMT)
+ n = fmtalloc.index[c];
+ local.chr = c;
+- n = (*fmtalloc.conv[n])(&argp, &local);
++ n = (*fmtalloc.conv[n])(&argwrap, &local);
+ if(n < 0) {
+ local.f3 |= -n;
+ goto l0;
+@@ -272,7 +275,7 @@ l1:
+ }
+
+ int
+-numbconv(va_list *arg, Fconv *fp)
++numbconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char s[IDIGIT];
+ int i, f, n, b, ucase;
+@@ -313,31 +316,31 @@ numbconv(va_list *arg, Fconv *fp)
+ f = 0;
+ switch(fp->f3 & (FVLONG|FLONG|FUNSIGN|FPOINTER)) {
+ case FVLONG|FLONG:
+- vl = va_arg(*arg, vlong);
++ vl = va_arg(arg->ap, vlong);
+ break;
+
+ case FUNSIGN|FVLONG|FLONG:
+- vl = va_arg(*arg, uvlong);
++ vl = va_arg(arg->ap, uvlong);
+ break;
+
+ case FUNSIGN|FPOINTER:
+- v = (ulong)va_arg(*arg, void*);
++ v = (ulong)va_arg(arg->ap, void*);
+ break;
+
+ case FLONG:
+- v = va_arg(*arg, long);
++ v = va_arg(arg->ap, long);
+ break;
+
+ case FUNSIGN|FLONG:
+- v = va_arg(*arg, ulong);
++ v = va_arg(arg->ap, ulong);
+ break;
+
+ default:
+- v = va_arg(*arg, int);
++ v = va_arg(arg->ap, int);
+ break;
+
+ case FUNSIGN:
+- v = va_arg(*arg, unsigned);
++ v = va_arg(arg->ap, unsigned);
+ break;
+ }
+ if(fp->f3 & FVLONG) {
+@@ -504,7 +507,7 @@ strconv(char *s, Fconv *fp)
+ }
+
+ static int
+-noconv(va_list *arg, Fconv *fp)
++noconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char s[10];
+
+@@ -520,7 +523,7 @@ noconv(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-rconv(va_list *arg, Fconv *fp)
++rconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char s[ERRLEN];
+
+@@ -532,12 +535,12 @@ rconv(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-cconv(va_list *arg, Fconv *fp)
++cconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char s[10];
+ Rune rune;
+
+- rune = va_arg(*arg, int);
++ rune = va_arg(arg->ap, int);
+ if(fp->chr == 'c')
+ rune &= 0xff;
+ s[runetochar(s, &rune)] = 0;
+@@ -548,18 +551,18 @@ cconv(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-sconv(va_list *arg, Fconv *fp)
++sconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char *s;
+ Rune *r;
+
+ if(fp->chr == 's') {
+- s = va_arg(*arg, char*);
++ s = va_arg(arg->ap, char*);
+ if(s == 0)
+ s = "<null>";
+ strconv(s, fp);
+ } else {
+- r = va_arg(*arg, Rune*);
++ r = va_arg(arg->ap, Rune*);
+ if(r == 0)
+ r = (Rune *)"<n\0u\0l\0l\0>\0\0\0";
+ Strconv(r, fp);
+@@ -568,7 +571,7 @@ sconv(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-percent(va_list *arg, Fconv *fp)
++percent(struct va_wrap *arg, Fconv *fp)
+ {
+ pchar('%', fp);
+ printcol++;
+@@ -576,11 +579,11 @@ percent(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-column(va_list *arg, Fconv *fp)
++column(struct va_wrap *arg, Fconv *fp)
+ {
+ int col, pc;
+
+- col = va_arg(*arg, int);
++ col = va_arg(arg->ap, int);
+ while(printcol < col) {
+ pc = (printcol+8) & ~7;
+ if(pc <= col) {
+@@ -595,7 +598,7 @@ column(va_list *arg, Fconv *fp)
+ }
+
+ static int
+-flags(va_list *arg, Fconv *fp)
++flags(struct va_wrap *arg, Fconv *fp)
+ {
+ int f;
+
+@@ -627,7 +630,7 @@ flags(va_list *arg, Fconv *fp)
+ }
+
+ int
+-fltconv(va_list *arg, Fconv *fp)
++fltconv(struct va_wrap *arg, Fconv *fp)
+ {
+ char s1[FDIGIT+10], s2[FDIGIT+10];
+ double f, g, h;
+@@ -637,7 +640,7 @@ fltconv(va_list *arg, Fconv *fp)
+ f2 = fp->f2;
+ fp->f2 = NONE;
+
+- f = va_arg(*arg, double);
++ f = va_arg(arg->ap, double);
+ if(isNaN(f)){
+ strconv("NaN", fp);
+ return 0;
diff --git a/lang/newsqueak/patches/patch-lib9_nan.c b/lang/newsqueak/patches/patch-lib9_nan.c
new file mode 100644
index 00000000000..591981c90a4
--- /dev/null
+++ b/lang/newsqueak/patches/patch-lib9_nan.c
@@ -0,0 +1,42 @@
+$NetBSD: patch-lib9_nan.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+"long" isn't necessarily 32 bits wide.
+
+--- lib9/nan.c~ 2000-02-11 17:04:14.000000000 +0000
++++ lib9/nan.c
+@@ -16,7 +16,7 @@ NaN(void)
+ union
+ {
+ double d;
+- long x[2];
++ uint32_t x[2];
+ } a;
+
+ a.x[1] = NANEXP;
+@@ -30,7 +30,7 @@ isNaN(double d)
+ union
+ {
+ double d;
+- long x[2];
++ uint32_t x[2];
+ } a;
+
+ a.d = d;
+@@ -45,7 +45,7 @@ Inf(int sign)
+ union
+ {
+ double d;
+- long x[2];
++ uint32_t x[2];
+ } a;
+
+ a.x[1] = NANEXP;
+@@ -61,7 +61,7 @@ isInf(double d, int sign)
+ union
+ {
+ double d;
+- long x[2];
++ uint32_t x[2];
+ } a;
+
+ a.d = d;
diff --git a/lang/newsqueak/patches/patch-lib9_wait.c b/lang/newsqueak/patches/patch-lib9_wait.c
new file mode 100644
index 00000000000..faade054e1d
--- /dev/null
+++ b/lang/newsqueak/patches/patch-lib9_wait.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib9_wait.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Remove bogus extra include.
+
+--- lib9/wait.c~ 2000-02-11 17:04:15.000000000 +0000
++++ lib9/wait.c
+@@ -5,8 +5,6 @@
+ #include <sys/resource.h>
+ #include <sys/wait.h>
+
+-#include "/usr/include/sys/wait.h"
+-
+ int
+ __waitcommon(int pid, int status, struct rusage *rusage, Waitmsg *w) {
+ long utime, stime;
diff --git a/lang/newsqueak/patches/patch-libbio_Makefile b/lang/newsqueak/patches/patch-libbio_Makefile
new file mode 100644
index 00000000000..2e1b7cfe350
--- /dev/null
+++ b/lang/newsqueak/patches/patch-libbio_Makefile
@@ -0,0 +1,34 @@
+$NetBSD: patch-libbio_Makefile,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Configure for pkgsrc; honor CC and AR.
+Remove some wrong dangling references.
+
+--- libbio/Makefile.orig 2000-02-11 17:04:17.000000000 +0000
++++ libbio/Makefile
+@@ -17,19 +17,22 @@ OFILES=\
+ bseek.o\
+ bwrite.o\
+
+-HFILES=/sys/include/bio.h
++#HFILES=/sys/include/bio.h
+
+ INCLUDES=-I../include
+
+ CFLAGS += $(INCLUDES)
+
+-CC=gcc
++CC?=gcc
++
++all: $(LIB)
+
+ $(LIB): $(OFILES)
+- ar r $(LIB) $(OFILES)
++ rm -f $(LIB)
++ $(AR) cq $(LIB) $(OFILES)
+
+ clean:
+- rm -rf $(TARG) $(OFILES)
++ rm -rf $(OFILES)
+
+ world:; make depend; make $(LIB)
+
diff --git a/lang/newsqueak/patches/patch-squint_Makefile b/lang/newsqueak/patches/patch-squint_Makefile
new file mode 100644
index 00000000000..ddf637ba580
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_Makefile
@@ -0,0 +1,60 @@
+$NetBSD: patch-squint_Makefile,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Configure for pkgsrc; honor LDFLAGS, CC, and YACC.
+Add explicit "all" target to simplify parent makefile.
+Don't require that . is in $PATH.
+Prune trailing tab line in make recipe.
+
+--- squint/Makefile.orig 2000-02-11 17:04:38.000000000 +0000
++++ squint/Makefile
+@@ -2,10 +2,10 @@ TARG = squint
+ INCLUDES = -I../include
+ LIBDIR = ../lib
+ LIBS9 = -lbio -l9
+-LIBS = $(LIBS9) -lm
+-LDFLAGS = -L$(LIBDIR)
+-CC = gcc
+-LD = gcc
++LIBS += $(LIBS9) -lm
++LDFLAGS += -L$(LIBDIR)
++CC ?= gcc
++CCLD ?= $(CC)
+
+ CFLAGS += $(INCLUDES)
+
+@@ -22,11 +22,13 @@ LIBO=libio.o liblib.o
+
+ OFILES = $(FO) $(CO) $(SO) $(LIBO)
+
++all: $(TARG)
++
+ $(TARG): $(FO) $(CO) $(SO) $(LIBO) $(LIBDIR)/*.a
+- $(LD) $(LDFLAGS) -o $@ $(FO) $(CO) $(SO) $(LIBO) $(LIBS)
++ $(CCLD) $(LDFLAGS) -o $@ $(FO) $(CO) $(SO) $(LIBO) $(LIBS)
+
+ y.tab.h squint.c: squint.y
+- yacc -d squint.y
++ $(YACC) -d squint.y
+ mv y.tab.c squint.c
+
+ ydefs.h: y.tab.h
+@@ -36,8 +38,8 @@ slib.h: sliblib.h slibio.h
+ cat $< > slib.h
+
+ nodenames.h typenames.h: node.h enumtoname
+- enumtoname Ntype < node.h > nodenames.h
+- enumtoname Ttype < node.h > typenames.h
++ ./enumtoname Ntype < node.h > nodenames.h
++ ./enumtoname Ttype < node.h > typenames.h
+
+ inst.h insttab.h: inst
+ ( echo 'typedef enum Inst{' ; \
+@@ -52,7 +54,7 @@ inst.h insttab.h: inst
+ sed 's/.\(.*\)/ {i\1, "&"},/' inst ; \
+ echo '};' ; \
+ ) > insttab.h
+-
++
+ inst: $(CODE)
+ cat $(CODE) | grep '^i.*(Proc \*proc)' | sed 's/^i/I/; s/(.*//; s/.*/&/' | sort > ninst
+ cmp -s inst ninst || mv ninst inst
diff --git a/lang/newsqueak/patches/patch-squint_compile.c b/lang/newsqueak/patches/patch-squint_compile.c
new file mode 100644
index 00000000000..26c0b759a16
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_compile.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-squint_compile.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Avoid naming conflict with standard C.
+
+--- squint/compile.c~ 2000-02-11 17:04:43.000000000 +0000
++++ squint/compile.c
+@@ -228,7 +228,7 @@ gen(Node *n, int retain)
+ case PRINT:
+ gen(n->l, 1);
+ printgen(n->l);
+- emit(Isprint);
++ emit(Isprint_);
+ if(!retain)
+ emit(Iprint);
+ return;
diff --git a/lang/newsqueak/patches/patch-squint_error.c b/lang/newsqueak/patches/patch-squint_error.c
new file mode 100644
index 00000000000..5a622b9412f
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_error.c
@@ -0,0 +1,79 @@
+$NetBSD: patch-squint_error.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- squint/error.c~ 2000-02-11 17:04:40.000000000 +0000
++++ squint/error.c
+@@ -108,11 +108,11 @@ rpanic(char *s, ...)
+ }
+
+ int
+-bconv(va_list *va, Fconv *f)
++bconv(struct va_wrap *va, Fconv *f)
+ {
+ int o;
+ extern int printcol;
+- o = va_arg(*va, int);
++ o = va_arg(va->ap, int);
+ while(printcol<o-8)
+ strconv("\t", f);
+ strconv(" "+(8-(o-printcol)), f);
+@@ -120,12 +120,12 @@ bconv(va_list *va, Fconv *f)
+ }
+
+ int
+-nconv(va_list *va, Fconv *f)
++nconv(struct va_wrap *va, Fconv *f)
+ {
+ Node *n;
+ int t;
+ char buf[32];
+- n = va_arg(*va, Node*);
++ n = va_arg(va->ap, Node*);
+ t = n->t;
+ if(t<0 || sizeof(Ntypename)/sizeof(Ntypename[0])<=t){
+ sprint(buf, "mystery node(%d)", t);
+@@ -136,12 +136,12 @@ nconv(va_list *va, Fconv *f)
+ }
+
+ int
+-tconv(va_list *va, Fconv *f)
++tconv(struct va_wrap *va, Fconv *f)
+ {
+ int t;
+ char buf[1024];
+ Node *n;
+- n = va_arg(*va, Node*);
++ n = va_arg(va->ap, Node*);
+ t = n->o.t;
+ if(t<0 || sizeof(Ttypename)/sizeof(Ttypename[0])<=t){
+ sprint(buf, "mystery type(%d)", t);
+@@ -156,12 +156,12 @@ tconv(va_list *va, Fconv *f)
+ }
+
+ int
+-econv(va_list *va, Fconv *f)
++econv(struct va_wrap *va, Fconv *f)
+ {
+ char buf[16], *x;
+ int t;
+ Node *n;
+- n = va_arg(*va, Node*);
++ n = va_arg(va->ap, Node*);
+ t = n->o.i;
+ if(t<128 && strchr("+-*/%|&^~?!><=", t)){
+ sprint(buf, "%c", t);
+@@ -232,11 +232,11 @@ econv(va_list *va, Fconv *f)
+ }
+
+ int
+-mconv(va_list *va, Fconv *f)
++mconv(struct va_wrap *va, Fconv *f)
+ {
+ char buf[4096];
+ Node *n;
+- n = va_arg(*va, Node*);
++ n = va_arg(va->ap, Node*);
+ switch(n->t){
+ case NID:
+ strcpy(buf, n->o.s->name);
diff --git a/lang/newsqueak/patches/patch-squint_inst b/lang/newsqueak/patches/patch-squint_inst
new file mode 100644
index 00000000000..a343aeb4ad4
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_inst
@@ -0,0 +1,15 @@
+$NetBSD: patch-squint_inst,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Avoid naming conflict with standard C.
+
+--- squint/inst~ 2000-02-11 17:04:34.000000000 +0000
++++ squint/inst
+@@ -95,7 +95,7 @@ Iret
+ Irsh
+ Isnd
+ Isndptr
+-Isprint
++Isprint_
+ Istore
+ Istoreary
+ Istoreauto
diff --git a/lang/newsqueak/patches/patch-squint_lex.c b/lang/newsqueak/patches/patch-squint_lex.c
new file mode 100644
index 00000000000..5dcfbc5944c
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_lex.c
@@ -0,0 +1,33 @@
+$NetBSD: patch-squint_lex.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Use $PREFIX instead of Rob's homedir.
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- squint/lex.c.orig 2000-02-11 17:04:41.000000000 +0000
++++ squint/lex.c
+@@ -349,7 +349,7 @@ newfile(char *s, int stdin)
+ char buf[1024];
+ fd=open(s, 0);
+ if(fd<0 && s[0]!='/' && s[0]!='.'){
+- sprint(buf, "/usr/rob/src/squint/include/%s", s);
++ sprint(buf, PREFIX "/share/squint/include/%s", s);
+ fd=open(buf, 0);
+ }
+ if(fd<0)
+@@ -381,14 +381,14 @@ printfileline(char *buf, File *f, int l,
+ }
+
+ int
+-zconv(va_list *va, Fconv *f)
++zconv(struct va_wrap *va, Fconv *f)
+ {
+ int o;
+ char buf[4096];
+
+ SET(o);
+ if(f->chr == 'Z')
+- o = va_arg(*va, int);
++ o = va_arg(va->ap, int);
+ if(initializing)
+ strcpy(buf, "squint: ");
+ else{
diff --git a/lang/newsqueak/patches/patch-squint_main.c b/lang/newsqueak/patches/patch-squint_main.c
new file mode 100644
index 00000000000..0c55752d2d5
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_main.c
@@ -0,0 +1,33 @@
+$NetBSD: patch-squint_main.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- squint/main.c~ 2000-02-11 17:04:43.000000000 +0000
++++ squint/main.c
+@@ -4,16 +4,16 @@
+ #include <bio.h>
+ #include "fns.h"
+
+-extern int bconv(va_list *, Fconv*);
+-extern int econv(va_list *, Fconv*);
+-extern int iconv(va_list *, Fconv*);
+-extern int mconv(va_list *, Fconv*);
+-extern int nconv(va_list *, Fconv*);
+-extern int tconv(va_list *, Fconv*);
+-extern int Aconv(va_list *, Fconv*);
+-extern int Cconv(va_list *, Fconv*);
+-extern int Uconv(va_list *, Fconv*);
+-extern int zconv(va_list *, Fconv*);
++extern int bconv(struct va_wrap *, Fconv*);
++extern int econv(struct va_wrap *, Fconv*);
++extern int iconv(struct va_wrap *, Fconv*);
++extern int mconv(struct va_wrap *, Fconv*);
++extern int nconv(struct va_wrap *, Fconv*);
++extern int tconv(struct va_wrap *, Fconv*);
++extern int Aconv(struct va_wrap *, Fconv*);
++extern int Cconv(struct va_wrap *, Fconv*);
++extern int Uconv(struct va_wrap *, Fconv*);
++extern int zconv(struct va_wrap *, Fconv*);
+
+ int bflag;
+ int cflag;
diff --git a/lang/newsqueak/patches/patch-squint_proc.c b/lang/newsqueak/patches/patch-squint_proc.c
new file mode 100644
index 00000000000..ffe97439a84
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_proc.c
@@ -0,0 +1,44 @@
+$NetBSD: patch-squint_proc.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- squint/proc.c~ 2000-02-11 17:04:40.000000000 +0000
++++ squint/proc.c
+@@ -468,12 +468,12 @@ stacktrace(Proc *p)
+ }
+
+ int
+-Aconv(va_list *va, Fconv *f)
++Aconv(struct va_wrap *va, Fconv *f)
+ {
+ int i, n;
+ Store *s;
+ char buf[32];
+- s = va_arg(*va, Store*);
++ s = va_arg(va->ap, Store*);
+ n=s->len;
+ if(n>4)
+ n=4;
+@@ -490,11 +490,11 @@ Aconv(va_list *va, Fconv *f)
+ }
+
+ int
+-Cconv(va_list *va, Fconv *f)
++Cconv(struct va_wrap *va, Fconv *f)
+ {
+ Store *s;
+
+- s = va_arg(*va, Store*);
++ s = va_arg(va->ap, Store*);
+ if(s->len>128){
+ strconv("\"very long string\"", f);
+ return sizeof(long);
+@@ -506,7 +506,7 @@ Cconv(va_list *va, Fconv *f)
+ }
+
+ int
+-Uconv(va_list *va, Fconv *f)
++Uconv(struct va_wrap *va, Fconv *f)
+ {
+ USED(va);
+ strconv("unit", f);
diff --git a/lang/newsqueak/patches/patch-squint_progs_npowser b/lang/newsqueak/patches/patch-squint_progs_npowser
new file mode 100644
index 00000000000..2f17270a291
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_progs_npowser
@@ -0,0 +1,15 @@
+$NetBSD: patch-squint_progs_npowser,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+remove another reference to Rob's homedir
+
+--- squint/progs/npowser~ 2000-02-11 17:04:28.000000000 +0000
++++ squint/progs/npowser
+@@ -7,7 +7,7 @@ type rat: struct of {
+ };
+ type item:rat;
+
+-include "/usr/rob/src/squint/progs/drat"
++include "progs/drat"
+
+ type PS: dch; # power series
+ type PS2: array[2] of dch; # pair of power series
diff --git a/lang/newsqueak/patches/patch-squint_var.c b/lang/newsqueak/patches/patch-squint_var.c
new file mode 100644
index 00000000000..0dfcea27cff
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_var.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-squint_var.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Avoid naming conflict with standard C.
+
+--- squint/var.c~ 2000-02-11 17:04:38.000000000 +0000
++++ squint/var.c
+@@ -567,7 +567,7 @@ idel(Proc *proc)
+ */
+
+ int
+-isprint(Proc *proc)
++isprint_(Proc *proc)
+ {
+ Store *s;
+ s=emalloc(SHSZ+proc->nprbuf+1);
diff --git a/lang/newsqueak/patches/patch-squint_xec.c b/lang/newsqueak/patches/patch-squint_xec.c
new file mode 100644
index 00000000000..93e44070f8c
--- /dev/null
+++ b/lang/newsqueak/patches/patch-squint_xec.c
@@ -0,0 +1,22 @@
+$NetBSD: patch-squint_xec.c,v 1.1 2015/04/25 19:58:32 dholland Exp $
+
+Muck with fmtinstall to avoid doing undefined/illegal things with va_list.
+
+--- squint/xec.c~ 2000-02-11 17:04:43.000000000 +0000
++++ squint/xec.c
+@@ -21,13 +21,13 @@ void xec(void);
+ void xxec(void);
+
+ int
+-iconv(va_list *va, Fconv *f)
++iconv(struct va_wrap *va, Fconv *f)
+ {
+ int i;
+ char buf[16];
+ void *o; /* really int (**o)(Proc*) */
+
+- o = va_arg(*va, void*);
++ o = va_arg(va->ap, void*);
+ for(i=0; i<NInst; i++)
+ if((void*)insttab[i].fp==o){
+ strconv(insttab[i].name, f);