2020-11-08 22:12:50 +00:00
|
|
|
SED?=sed
|
2016-06-22 15:21:34 +00:00
|
|
|
CC?=clang
|
2016-06-24 11:38:10 +00:00
|
|
|
YACC?=yacc
|
2016-06-22 15:21:34 +00:00
|
|
|
BIN=doas
|
|
|
|
PREFIX?=/usr/local
|
2019-08-20 17:05:34 +00:00
|
|
|
MANDIR?=$(DESTDIR)$(PREFIX)/man
|
|
|
|
SYSCONFDIR?=$(DESTDIR)$(PREFIX)/etc
|
2020-11-08 22:12:50 +00:00
|
|
|
DOAS_CONF=$(SYSCONFDIR)/doas.conf
|
2019-12-28 02:16:17 +00:00
|
|
|
OBJECTS=doas.o env.o compat/execvpe.o compat/reallocarray.o y.tab.o
|
2019-09-03 14:42:27 +00:00
|
|
|
OPT?=-O2
|
2019-08-03 20:39:15 +00:00
|
|
|
# Can set GLOBAL_PATH here to set PATH for target user.
|
|
|
|
# TARGETPATH=-DGLOBAL_PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:\"
|
2020-11-08 22:12:50 +00:00
|
|
|
CFLAGS+=-Wall $(OPT) -DUSE_PAM -DDOAS_CONF=\"$(DOAS_CONF)\" $(TARGETPATH)
|
2019-09-10 16:56:32 +00:00
|
|
|
CPPFLAGS+=-include compat/compat.h
|
2016-06-24 11:38:10 +00:00
|
|
|
LDFLAGS+=-lpam
|
2016-06-26 17:34:33 +00:00
|
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
ifeq ($(UNAME_S),Linux)
|
|
|
|
LDFLAGS+=-lpam_misc
|
2019-09-10 16:56:32 +00:00
|
|
|
CPPFLAGS+=-Icompat
|
2019-03-10 22:11:40 +00:00
|
|
|
CFLAGS+=-D_GNU_SOURCE
|
2019-09-10 16:56:32 +00:00
|
|
|
COMPAT+=closefrom.o errc.o getprogname.o setprogname.o strlcat.o strlcpy.o strtonum.o verrc.o
|
|
|
|
OBJECTS+=$(COMPAT:%.o=compat/%.o)
|
2016-06-26 17:34:33 +00:00
|
|
|
endif
|
2016-09-17 00:15:40 +00:00
|
|
|
ifeq ($(UNAME_S),FreeBSD)
|
|
|
|
CFLAGS+=-DHAVE_LOGIN_CAP_H
|
|
|
|
LDFLAGS+=-lutil
|
|
|
|
endif
|
2020-10-21 17:37:51 +00:00
|
|
|
ifeq ($(UNAME_S),NetBSD)
|
|
|
|
CFLAGS+=-DHAVE_LOGIN_CAP_H -D_OPENBSD_SOURCE
|
|
|
|
OBJECTS=doas.o env.o y.tab.o
|
|
|
|
LDFLAGS+=-lutil
|
|
|
|
endif
|
2019-09-02 16:37:58 +00:00
|
|
|
ifeq ($(UNAME_S),SunOS)
|
|
|
|
SAFE_PATH?=/bin:/sbin:/usr/bin:/usr/sbin:$(PREFIX)/bin:$(PREFIX)/sbin
|
|
|
|
GLOBAL_PATH?=/bin:/sbin:/usr/bin:/usr/sbin:$(PREFIX)/bin:$(PREFIX)/sbin
|
2019-09-10 16:56:32 +00:00
|
|
|
CPPFLAGS+=-Icompat
|
2019-09-02 16:37:58 +00:00
|
|
|
CFLAGS+=-DSOLARIS_PAM -DSAFE_PATH=\"$(SAFE_PATH)\" -DGLOBAL_PATH=\"$(GLOBAL_PATH)\"
|
|
|
|
COMPAT=errc.o pm_pam_conv.o setresuid.o verrc.o
|
|
|
|
OBJECTS+=$(COMPAT:%.o=compat/%.o)
|
|
|
|
endif
|
2019-10-12 09:01:09 +00:00
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
|
|
CPPFLAGS+=-Icompat
|
|
|
|
COMPAT+=bsd-closefrom.o
|
|
|
|
OBJECTS+=$(COMPAT:%.o=compat/%.o)
|
|
|
|
# On MacOS the default man page path is /usr/local/share/man
|
|
|
|
MANDIR=$(DESTDIR)$(PREFIX)/share/man
|
|
|
|
endif
|
2016-06-22 15:21:34 +00:00
|
|
|
|
2020-11-08 22:12:50 +00:00
|
|
|
all: $(BIN) doas.1.final doas.conf.5.final vidoas.final
|
|
|
|
|
|
|
|
$(BIN): $(OBJECTS)
|
2016-11-03 20:28:20 +00:00
|
|
|
$(CC) -o $(BIN) $(OBJECTS) $(LDFLAGS)
|
2016-06-22 15:21:34 +00:00
|
|
|
|
2016-06-24 11:38:10 +00:00
|
|
|
env.o: doas.h env.c
|
2016-06-22 15:21:34 +00:00
|
|
|
|
|
|
|
execvpe.o: doas.h execvpe.c
|
|
|
|
|
|
|
|
doas.o: doas.h doas.c parse.y
|
|
|
|
|
2016-06-24 13:06:43 +00:00
|
|
|
reallocarray.o: doas.h reallocarray.c
|
|
|
|
|
2016-06-22 15:21:34 +00:00
|
|
|
y.tab.o: parse.y
|
2016-06-24 11:38:10 +00:00
|
|
|
$(YACC) parse.y
|
2019-09-10 16:56:32 +00:00
|
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -c y.tab.c
|
2016-06-22 15:21:34 +00:00
|
|
|
|
2020-11-08 22:23:11 +00:00
|
|
|
install: $(BIN) doas.1.final doas.conf.5.final vidoas.final
|
2019-08-20 17:05:34 +00:00
|
|
|
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
|
|
|
cp $(BIN) $(DESTDIR)$(PREFIX)/bin/
|
|
|
|
chmod 4755 $(DESTDIR)$(PREFIX)/bin/$(BIN)
|
2020-11-08 22:12:50 +00:00
|
|
|
cp vidoas.final $(DESTDIR)$(PREFIX)/bin/vidoas
|
|
|
|
chmod 755 $(DESTDIR)$(PREFIX)/bin/vidoas
|
2019-08-20 17:05:34 +00:00
|
|
|
mkdir -p $(MANDIR)/man1
|
2019-11-28 10:17:11 +00:00
|
|
|
cp doas.1.final $(MANDIR)/man1/doas.1
|
2019-08-20 17:05:34 +00:00
|
|
|
mkdir -p $(MANDIR)/man5
|
2019-11-28 10:17:11 +00:00
|
|
|
cp doas.conf.5.final $(MANDIR)/man5/doas.conf.5
|
2016-06-22 15:21:34 +00:00
|
|
|
|
2020-08-18 15:34:39 +00:00
|
|
|
uninstall:
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/bin/doas
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/bin/vidoas
|
|
|
|
rm -f $(MANDIR)/man1/doas.1
|
|
|
|
rm -f $(MANDIR)/man5/doas.conf.5
|
|
|
|
|
2016-06-22 15:21:34 +00:00
|
|
|
clean:
|
|
|
|
rm -f $(BIN) $(OBJECTS) y.tab.c
|
2019-12-28 02:16:17 +00:00
|
|
|
rm -f *.final parse.o
|
2016-06-22 15:21:34 +00:00
|
|
|
|
2019-11-28 10:17:11 +00:00
|
|
|
# Doing it this way allows to change the original files
|
|
|
|
# only partially instead of renaming them.
|
2020-11-08 22:12:50 +00:00
|
|
|
doas.1.final: doas.1
|
|
|
|
$(SED) 's,@DOAS_CONF@,$(DOAS_CONF),g' < $< > $@
|
|
|
|
|
|
|
|
doas.conf.5.final: doas.conf.5
|
|
|
|
$(SED) 's,@DOAS_CONF@,$(DOAS_CONF),g' < $< > $@
|
2019-11-28 10:17:11 +00:00
|
|
|
|
2020-11-08 22:12:50 +00:00
|
|
|
vidoas.final: vidoas
|
|
|
|
$(SED) 's,@DOAS_CONF@,$(DOAS_CONF),g' < $< > $@
|