]> git.armaanb.net Git - opendoas.git/blobdiff - bsd.prog.mk
timestamp: error out if fstat and lstat st_ino and st_dev are not the same
[opendoas.git] / bsd.prog.mk
index 1f01d29aacb43776b5b5a7e1c98501113756d568..df8f51461be9ed6968433e3a7b582047d6c75589 100644 (file)
@@ -1,53 +1,49 @@
 # 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}
+       rm -f parse.c
+
+-include ${OBJS:.o=.d} ${OPENBSD:.o=.d}
 
-.PHONY: default clean install man
-.INTERMEDIATE: .${PROG}.chmod
+.PHONY: default clean install uninstall