PREFIX = /usr/local BINDIR = bin MANDIR = share/man MAN1 = man1 PKG_CONFIG = pkg-config INSTALL = install CFLAGS = -O2 -pipe override CFLAGS += -std=gnu23 -Wall -Wextra override CPPFLAGS += -MMD -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_OPENBSD_SOURCE LDFLAGS = -Wl,-O1 -Wl,--as-needed # Platform-dependent checks PLATFORM = $(shell uname) ifeq ($(PLATFORM), Linux) override CPPFLAGS += $(shell $(PKG_CONFIG) --cflags libbsd-overlay) override LDLIBS += $(shell $(PKG_CONFIG) --libs libbsd-overlay) endif ifeq ($(PLATFORM), OpenBSD) MANDIR = man override CPPFLAGS += -DHAVE_PLEDGE endif ifeq ($(PLATFORM), NetBSD) MANDIR = man endif ifeq ($(PLATFORM), SunOS) # OpenIndiana ld doesn't recognize GNU ld flags override LDFLAGS = endif PROG = can OBJS = can.o user.o group.o action.o DEPS = $(patsubst %.o, %.d, $(OBJS)) .PHONY: all all: $(PROG) $(PROG): $(OBJS) -include $(DEPS) .PHONY: clean clean: rm -f $(PROG) $(OBJS) $(DEPS) .PHONY: install install: $(INSTALL) -Dm755 $(PROG) $(DESTDIR)$(PREFIX)/$(BINDIR)/$(PROG) $(INSTALL) -Dm644 $(PROG).1 $(DESTDIR)$(PREFIX)/$(MANDIR)/$(MAN1)/$(PROG).1