`make _update-release': simply target the `nail-announce' alias
[s-mailx.git] / mk-mk.in
blob6479bedfd900454c16fe3ec40cee5d204079e444
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.
4 STD_CFLAGS = -O1
5 EXT_CFLAGS = -std=c89 -O2 -g \
6         -fstrict-aliasing \
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
15 #LDFLAGS =
17 .SUFFIXES: .o .c .y
18 .c.o:
19         @echo CC $<; $(CC) $(CFLAGS) $(INCLUDES) -c $<
20 .c .y: ;
22 all: echoes $(UAGENT)
23         @echo "$(UAGENT): ready"
24 echoes:
25         @echo "Starting compilation";\
26                 echo "CC: $(CC) $(CFLAGS) $(WARN)";\
27                 echo "[INCS: $(INCLUDES)]";\
28                 echo "[LDFLAGS: $(LDFLAGS)]";\
29                 echo "[LIBS: $(LIBS)]"
30 $(UAGENT): $(OBJ)
31         @$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $@
33 $(OBJ): config.h def.h extern.h glob.h rcv.h
34 imap.o: imap_gssapi.h
35 main.o: version.h
36 md5.o imap.o smtp.o auxlily.o pop3.o: md5.h
37 mime.o: mime_types.h
39 mime_types.h: mime.types
40         < mime.types > $@ sed -e '/^#/d; /^$$/d; s/^/   "/; s/$$/",/'
42 mkman.1: nail.1
43         _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
44         < nail.1 > $@ awk 'BEGIN {written = 0}\
45         /.\"--MKMAN-START--/, /.\"--MKMAN-END--/ {\
46                 if (written == 1)\
47                         next;\
48                 written = 1;\
49                 OFS = "";\
50                 un = toupper(ENVIRON["_UAGENT"]);\
51                 ln = tolower(un);\
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"];\
57                 OFS = " ";\
58                 next\
59         }\
60         {print}\
61         '
63 mkrc.rc: nail.rc
64         _SYSCONFRC="$(SYSCONFRC)" _UAGENT="$(UAGENT)" \
65         < nail.rc > $@ awk 'BEGIN {written = 0}\
66         /#--MKRC-START--/, /#--MKRC-END--/ {\
67                 if (written == 1)\
68                         next;\
69                 written = 1;\
70                 OFS = "";\
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)";\
75                 OFS = " ";\
76                 next\
77         }\
78         {print}\
79         '
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)"
94 uninstall:
95         rm -f "$(DESTDIR)$(BINDIR)/$(UAGENT)" \
96                 "$(DESTDIR)$(MANDIR)/man1/$(UAGENT).1"
98 clean:
99         rm -f $(OBJ) "$(UAGENT)" mime_types.h mkman.1 mkrc.rc
101 distclean: clean
102         rm -f config.* *.mk
104 _update-version:
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
111 _update-release:
112         echo 'Name of release tag:';\
113         read REL;\
114         echo "Is $(UAGENT) <v$${REL}> correct?  ENTER continues";\
115         read i;\
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 &&\
126         cd "$${TMPDIR}" &&\
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 &&\
142         cd .. &&\
143         rm -rf "$(UAGENT)-$${REL}" &&\
144         echo 'Uff.'
146 # vim:set fenc=utf-8 filetype=make: