summaryrefslogtreecommitdiff
path: root/ports/ed
blob: 8a83ae458919c7b1b6019f04be262b837aac2308 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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 =	x86_64-camellia-gcc
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) ;;
	deepclean) (rm -rf oed) ;;
	*)       echo "usage: $0 install|clean"; false ;;
esac