# Copyright 2015 Nathan Holstein
-BINDIR?=/usr/bin
-MANDIR?=/usr/share/man
-
default: ${PROG}
-OPENBSD:=reallocarray.c strtonum.c execvpe.c setresuid.c \
- auth_userokay.c setusercontext.c explicit_bzero.c
-OPENBSD:=$(addprefix libopenbsd/,${OPENBSD:.c=.o})
-libopenbsd.a: ${OPENBSD}
- ${AR} -r $@ $?
-
-CFLAGS:=${CFLAGS} -I${CURDIR}/libopenbsd ${COPTS}
-
-OBJS:=${SRCS:.y=.c}
-OBJS:=${OBJS:.c=.o}
-
-${PROG}: ${OBJS} libopenbsd.a
- ${CC} ${CFLAGS} ${LDFLAGS} $^ -o $@
+CFLAGS += -I${CURDIR}/libopenbsd ${COPTS} -MD -MP -Wno-unused-result
-.%.chmod: %
- cp $< $@
- chmod ${BINMODE} $@
- chown ${BINOWN}:${BINGRP} $@
+include config.mk
-${BINDIR}:
- mkdir -pm 0755 $@
+OPENBSD := $(addprefix libopenbsd/,${OPENBSD})
+OBJS := ${SRCS:.y=.c}
+OBJS := ${OBJS:.c=.o}
-${BINDIR}/${PROG}: .${PROG}.chmod ${BINDIR}
- mv $< $@
-
-VERSION:=\#define VERSION "$(shell git describe --dirty --tags --long --always)"
-OLDVERSION:=$(shell [ -f version.h ] && cat version.h)
-version.h: ; @echo '$(VERSION)' > $@
-ifneq ($(VERSION),$(OLDVERSION))
-.PHONY: version.h
-endif
-
-MAN:=$(join $(addprefix ${MANDIR}/man,$(patsubst .%,%/,$(suffix ${MAN}))),${MAN})
-$(foreach M,${MAN},$(eval $M: $(notdir $M); cp $$< $$@))
+libopenbsd.a: ${OPENBSD}
+ ${AR} -r $@ $?
-install: ${BINDIR}/${PROG} ${MAN}
+${PROG}: ${OBJS} libopenbsd.a
+ ${CC} ${CFLAGS} $^ -o $@ ${LDFLAGS}
+
+install: ${PROG} ${PAM_DOAS} ${MAN}
+ mkdir -p -m 0755 ${DESTDIR}${BINDIR}
+ [ -n "${PAM_DOAS}" ] && mkdir -p -m 0755 ${DESTDIR}${PAMDIR} || true
+ mkdir -p -m 0755 ${DESTDIR}${MANDIR}/man1
+ mkdir -p -m 0755 ${DESTDIR}${MANDIR}/man5
+ cp -f ${PROG} ${DESTDIR}${BINDIR}
+ chown ${BINOWN}:${BINGRP} ${DESTDIR}${BINDIR}/${PROG}
+ chmod ${BINMODE} ${DESTDIR}${BINDIR}/${PROG}
+ [ -n "${PAM_DOAS}" ] && cp ${PAM_DOAS} ${DESTDIR}${PAMDIR}/doas || true
+ [ -n "${PAM_DOAS}" ] && chmod 0644 ${DESTDIR}${PAMDIR}/doas || true
+ cp -f doas.1 ${DESTDIR}${MANDIR}/man1
+ cp -f doas.conf.5 ${DESTDIR}${MANDIR}/man5
+
+uninstall:
+ rm -f ${DESTDIR}${BINDIR}/${PROG}
+ rm -f ${DESTDIR}${PAMDIR}/doas
+ rm -f ${DESTDIR}${MANDIR}/man1/doas.1
+ rm -f ${DESTDIR}${MANDIR}/man5/doas.conf.5
clean:
- rm -f version.h
rm -f libopenbsd.a
rm -f ${OPENBSD}
+ rm -f ${OPENBSD:.o=.d}
rm -f ${OBJS}
+ rm -f ${OBJS:.o=.d}
rm -f ${PROG}
-.PHONY: default clean install man
-.INTERMEDIATE: .${PROG}.chmod
+-include ${OBJS:.o=.d} ${OPENBSD:.o=.d}
+
+.PHONY: default clean install uninstall