CC := clang STD := c17 DEBUG ?= 1 SANITIZE ?= 1 CFLAGS := -std=$(STD) \ -Wall \ -Wextra \ -Wshadow \ -Wpedantic \ -Wconversion \ -Wstrict-prototypes \ -Wsign-conversion \ -Wmissing-prototypes ifeq ($(DEBUG),1) CFLAGS += -g -fno-omit-frame-pointer else CFLAGS += -O2 endif ifeq ($(SANITIZE),1) CFLAGS += -fsanitize=address,undefined LDFLAGS += -fsanitize=address,undefined endif TARGET := todo SRC := todo.c HDR := config.h PREFIX ?= /usr/local bindir := $(DESTDIR)$(PREFIX)/bin mandir := $(DESTDIR)$(PREFIX)/share/man/man1 all: $(TARGET) $(TARGET): $(SRC) $(HDR) $(CC) $(CFLAGS) $(SRC) -o $@ $(LDFLAGS) clean: rm -rf $(TARGET) $(TARGET).dSYM install: todo.1 make DEBUG=0 SANITIZE=0 clean all install -d $(bindir) install -m 755 $(TARGET) $(bindir)/$(TARGET) install -d $(mandir) install -m 644 todo.1 $(mandir)/todo.1 uninstall: rm -f $(bindir)/$(TARGET) rm -f $(mandir)/todo.1 .PHONY: all clean install uninstall