]> git.armaanb.net Git - opendoas.git/blob - bsd.prog.mk
Generate automatic header dependencies.
[opendoas.git] / bsd.prog.mk
1 # Copyright 2015 Nathan Holstein
2
3 BINDIR?=/usr/bin
4 MANDIR?=/usr/share/man
5
6 default: ${PROG}
7
8 OPENBSD:=reallocarray.c strtonum.c execvpe.c setresuid.c \
9         auth_userokay.c setusercontext.c explicit_bzero.c
10 OPENBSD:=$(addprefix libopenbsd/,${OPENBSD:.c=.o})
11 libopenbsd.a: ${OPENBSD}
12         ${AR} -r $@ $?
13
14 CFLAGS:=${CFLAGS} -I${CURDIR}/libopenbsd ${COPTS} -MD -MP
15
16 OBJS:=${SRCS:.y=.c}
17 OBJS:=${OBJS:.c=.o}
18
19 ${PROG}: ${OBJS} libopenbsd.a
20         ${CC} ${CFLAGS} ${LDFLAGS} $^ -o $@
21
22 .%.chmod: %
23         cp $< $@
24         chmod ${BINMODE} $@
25         chown ${BINOWN}:${BINGRP} $@
26
27 ${BINDIR}:
28         mkdir -pm 0755 $@
29
30 ${BINDIR}/${PROG}: .${PROG}.chmod ${BINDIR}
31         mv $< $@
32
33 VERSION:=\#define VERSION "$(shell git describe --dirty --tags --long --always)"
34 OLDVERSION:=$(shell [ -f version.h ] && cat version.h)
35 version.h: ; @echo '$(VERSION)' > $@
36 ifneq ($(VERSION),$(OLDVERSION))
37 .PHONY: version.h
38 endif
39
40 MAN:=$(join $(addprefix ${MANDIR}/man,$(patsubst .%,%/,$(suffix ${MAN}))),${MAN})
41 $(foreach M,${MAN},$(eval $M: $(notdir $M); cp $$< $$@))
42
43 install: ${BINDIR}/${PROG} ${MAN}
44
45 clean:
46         rm -f version.h
47         rm -f libopenbsd.a
48         rm -f ${OPENBSD}
49         rm -f ${OPENBSD:.o=.d}
50         rm -f ${OBJS}
51         rm -f ${OBJS:.o=.d}
52         rm -f ${PROG}
53
54 -include ${objs:.o=.d} ${OPENBSD:.o=.d}
55
56 .PHONY: default clean install man
57 .INTERMEDIATE: .${PROG}.chmod