1 # Until the codebase has been overhauled (and the overhauling has itself been
2 # debugged :) you may read INSTALL for hints. But otherwise:
3 # You are on your own if you turn on fancy compiler features.
5 EXT_CFLAGS = -std=c89 -O2 -g \
7 -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2 \
8 -Wall -Wextra -pedantic \
9 -Wbad-function-cast -Wcast-align -Wcast-qual -Winit-self \
10 -Wshadow -Wunused -Wwrite-strings
11 # The gcc(1) from NetBSD 6 produces a lot of errors with -fstrict-overflow,
12 # so that this needs to be revisited; it was enabled on OS X 6 and FreeBSD 9,
13 # and seemed to be good for gcc(1) and clang(1)
14 # -fstrict-overflow -Wstrict-overflow=5
19 @echo CC $<; $(CC) $(CFLAGS) $(INCLUDES) -c $<
23 @echo "$(UAGENT): ready"
25 @echo "Starting compilation";\
26 echo "CC: $(CC) $(CFLAGS) $(WARN)";\
27 echo "[INCS: $(INCLUDES)]";\
28 echo "[LDFLAGS: $(LDFLAGS)]";\
29 echo "[LIBS: $(LIBS)]"
31 @$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $@
33 $(OBJ): config.h def.h extern.h glob.h rcv.h
36 md5.o imap.o smtp.o auxlily.o pop3.o: md5.h
39 mime_types.h: mime.types
40 < mime.types > $@ sed -e '/^#/d; /^$$/d; s/^/ "/; s/$$/",/'
43 _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
44 < nail.1 > $@ awk 'BEGIN {written = 0}\
45 /.\"--MKMAN-START--/, /.\"--MKMAN-END--/ {\
50 un = toupper(ENVIRON["_UAGENT"]);\
52 cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
53 print ".ds UU \\\\%", un;\
54 print ".ds UA \\\\%", cn;\
55 print ".ds ua \\\\%", ln;\
56 print ".ds UR \\\\%", ENVIRON["_SYSCONFRC"];\
64 _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
65 < nail.rc > $@ awk 'BEGIN {written = 0}\
66 /#--MKRC-START--/, /#--MKRC-END--/ {\
71 ln = tolower(ENVIRON["_UAGENT"]);\
72 cn = toupper(substr(ln, 1, 1)) substr(ln, 2);\
73 print "# ", ENVIRON["_SYSCONFRC"];\
74 print "# Configuration file for ", cn, "(1)";\
81 install: all mkman.1 mkrc.rc
82 test -d "$(DESTDIR)$(BINDIR)" || mkdir -p "$(DESTDIR)$(BINDIR)";\
83 $(INSTALL) -c "$(UAGENT)" "$(DESTDIR)$(BINDIR)/$(UAGENT)";\
84 $(STRIP) "$(DESTDIR)$(BINDIR)/$(UAGENT)";\
85 test -d "$(DESTDIR)$(MANDIR)/man1" ||\
86 mkdir -p "$(DESTDIR)$(MANDIR)/man1";\
87 $(INSTALL) -c -m 644 mkman.1 \
88 "$(DESTDIR)$(MANDIR)/man1/$(UAGENT).1";\
89 test -d "$(DESTDIR)$(SYSCONFDIR)" ||\
90 mkdir -p "$(DESTDIR)$(SYSCONFDIR)";\
91 test -f "$(DESTDIR)$(SYSCONFRC)" ||\
92 $(INSTALL) -c -m 644 mkrc.rc "$(DESTDIR)$(SYSCONFRC)"
95 rm -f "$(DESTDIR)$(BINDIR)/$(UAGENT)" \
96 "$(DESTDIR)$(MANDIR)/man1/$(UAGENT).1"
99 rm -f $(OBJ) "$(UAGENT)" mime_types.h mkman.1 mkrc.rc
105 @[ -z "$(VERSION)" ] && eval VERSION="`git describe --tags`";\
106 trap "rm version.tmp" 0 1 2 15;\
107 printf > version.tmp "#define VERSION \"$${VERSION:-vHuih-Buh}\"\n";\
108 $(CMP) version.tmp version.h >/dev/null 2>&1 && exit;\
109 mv version.tmp version.h; trap -- - 0 1 2 15
112 echo 'Name of release tag:';\
114 echo "Is $(UAGENT) <v$${REL}> correct? ENTER continues";\
116 FREL=`echo $${REL} | sed -e 's/\./_/g'` &&\
117 $(MAKE) -f mk.mk _update-version &&\
118 git add version.h &&\
119 git commit -m "Bump $(UAGENT) v$${REL}" &&\
120 git tag -f "v$${REL}" &&\
121 $(MAKE) -f mk.mk _update-version &&\
122 git add version.h && git commit --amend &&\
123 git tag -f "v$${REL}" &&\
124 git archive --prefix="$(UAGENT)-$${REL}/" \
125 -o "$${TMPDIR}/$(UAGENT)-$${FREL}.tar.gz" HEAD &&\
127 tar -x -z -f "$(UAGENT)-$${FREL}.tar.gz" &&\
128 rm -f "$(UAGENT)-$${FREL}.tar.gz" &&\
129 tar -c -z -f "$(UAGENT)-$${FREL}.tar.gz" "$(UAGENT)-$${REL}" &&\
130 openssl md5 "$(UAGENT)-$${FREL}.tar.gz" > \
131 "$(UAGENT)-$${FREL}.cksum" 2>&1 &&\
132 openssl sha1 "$(UAGENT)-$${FREL}.tar.gz" >> \
133 "$(UAGENT)-$${FREL}.cksum" 2>&1 &&\
134 openssl sha256 "$(UAGENT)-$${FREL}.tar.gz" >> \
135 "$(UAGENT)-$${FREL}.cksum" 2>&1 &&\
136 echo "-put $(UAGENT)-$${FREL}.tar.gz" | \
137 sftp -b - sdaoden@frs.sourceforge.net:/home/frs/project/s-nail &&\
138 echo 'All seems fine' &&\
139 cd "$(UAGENT)-$${REL}" &&\
140 make WANT_ASSERTS=1 &&\
141 ./s-nail -s "Announcing S-nail v$${REL}" nail-announce &&\
143 rm -rf "$(UAGENT)-$${REL}" &&\
146 # vim:set fenc=utf-8 filetype=make: