50 lines
1.1 KiB
Makefile
50 lines
1.1 KiB
Makefile
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
|