diff options
Diffstat (limited to 'ports/ed')
-rw-r--r-- | ports/ed | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/ports/ed b/ports/ed new file mode 100644 index 0000000..87dd05c --- /dev/null +++ b/ports/ed @@ -0,0 +1,67 @@ +set -eu +camellia_path_check + +fetch() { + # TODO shallow clone, once 7.1 gets tagged + # better yet, use a tarball + git clone https://github.com/ibara/oed + cd oed + git -c advice.detachedHead=false checkout fc1497fa466ff10c7437f07a00ba888242618ce5 +} + +configure() { + cd oed + cat <<\EOF > Makefile +# This Makefile automatically generated by configure. + +CC = cc +CFLAGS = -g -O2 -I. -D_GNU_SOURCE + +PREFIX = /usr/local +MANDIR = /usr/local/man + +PROG = ed +OBJS = buf.o glbl.o io.o main.o re.o sub.o undo.o \ + regcomp.o regerror.o regexec.o regfree.o \ + reallocarray.o strlcat.o strlcpy.o + +all: ${PROG} + +${PROG}: ${OBJS} + ${CC} ${LDFLAGS} -o ${PROG} ${OBJS} + +install: + install -d ${DESTDIR}${PREFIX}/bin + install -d ${DESTDIR}${MANDIR}/man1 + install -c -s -m 755 ${PROG} ${DESTDIR}${PREFIX}/bin + install -c -m 644 ed.1 ${DESTDIR}${MANDIR}/man1/${PROG}.1 + +test: + @echo "No tests" + +clean: + rm -f ${PROG} ${OBJS} + +distclean: clean + rm -f Makefile config.h +EOF + cat <<\EOF > config.h +/* This file automatically generated by configure. */ + +extern void *reallocarray(void *, size_t, size_t); +extern size_t strlcat(char *, const char *, size_t); +extern size_t strlcpy(char *, const char *, size_t); +EOF +} + +prep() { + [ -d oed ] || (fetch) + [ -e oed/Makefile ] || (configure) + cd oed +} + +case $1 in + install) (prep; make; make install "PREFIX=$PREFIX" "MANDIR=$PREFIX/man/") ;; + clean) (prep; make clean) ;; + *) echo "usage: $0 install|clean"; false ;; +esac |