-# $OpenBSD: Makefile,v 1.9 2014/01/13 01:41:00 tedu Exp $
-#
-# Copyright 2015 Nathan Holstein
+PROG = doas
+MAN = doas.1 doas.conf.5
-SRCS= parse.y doas.c
+SRCS = parse.y doas.c env.c
-PROG= doas
-MAN= doas.1 doas.conf.5
+include config.mk
-BINOWN= root
-BINGRP= wheel
-BINMODE=4511
+CFLAGS := -I. -Ilibopenbsd -O2 -Wall -Wextra -std=c99 ${OS_CFLAGS} ${CFLAGS}
-COPTS+= -Wall -Wextra -Werror -pedantic -std=c11
-CFLAGS+= -I${CURDIR} -I${CURDIR}/libopenbsd ${COPTS}
-LDFLAGS+= -lpam
+all: ${PROG}
-BINDIR?=/usr/bin
-MANDIR?=/usr/share/man
+OBJS := ${SRCS:.y=.c}
+OBJS := ${OBJS:.c=.o}
-default: ${PROG}
+${PROG}: ${OBJS}
+ @[ -f ./libopenbsd/strlcat.o ] && mv libopenbsd/*.o . || true
+ ${CC} ${CFLAGS} *.o -o $@ ${LDFLAGS} ${LDLIBS}
-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 $@ $?
+install: ${PROG} ${MAN}
+ mkdir -p -m 0755 ${DESTDIR}${BINDIR}
+ 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}
+ cp -f doas.1 ${DESTDIR}${MANDIR}/man1
+ cp -f doas.conf.5 ${DESTDIR}${MANDIR}/man5
-OBJS:=${SRCS:.y=.c}
-OBJS:=${OBJS:.c=.o}
-
-${PROG}: ${OBJS} libopenbsd.a
- ${CC} ${CFLAGS} ${LDFLAGS} $^ -o $@
-
-.%.chmod: %
- cp $< $@
- chmod ${BINMODE} $@
- chown ${BINOWN}:${BINGRP} $@
-
-${BINDIR}:
- mkdir -pm 0755 $@
-
-${BINDIR}/${PROG}: .${PROG}.chmod ${BINDIR}
- mv $< $@
-
-install: ${BINDIR}/${PROG}
+uninstall:
+ rm -f ${DESTDIR}${BINDIR}/${PROG}
+ rm -f ${DESTDIR}${MANDIR}/man1/doas.1
+ rm -f ${DESTDIR}${MANDIR}/man5/doas.conf.5
clean:
- rm -f libopenbsd.a
- rm -f ${OPENBSD}
- rm -f ${OBJS}
- rm -f ${PROG}
+ rm -f ${PROG} ${OBJS} ${OBJS:.o=.d} parse.c
+
+-include ${OBJS:.o=.d}
-.PHONY: default clean install
-.INTERMEDIATE: .${PROG}.chmod
+.PHONY: all clean install uninstall