CC := clang STD := c17 SANITIZE ?= 1 CFLAGS := -std=$(STD) \ -Wall \ -Wextra \ -Wshadow \ -Wpedantic \ -Wconversion \ -Wstrict-prototypes \ -Wsign-conversion \ -Wmissing-prototypes ifeq ($(SANITIZE),1) CFLAGS += -g -fno-omit-frame-pointer -fsanitize=address,undefined LDFLAGS += -fsanitize=address,undefined else CFLAGS += -O2 endif TARGET := mkproj SRC := mkproj.c PREFIX ?= /usr/local bindir := $(DESTDIR)$(PREFIX)/bin mandir := $(DESTDIR)$(PREFIX)/share/man/man1 all: $(TARGET) $(TARGET): $(SRC) $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) check: bear -- make clean all cppcheck --enable=warning,style,performance,portability \ --project=compile_commands.json \ --error-exitcode=1 clean: rm -f $(TARGET) install: mkproj.1 $(MAKE) SANITIZE=0 clean all install -d $(bindir) install -m 755 $(TARGET) $(bindir)/$(TARGET) install -d $(mandir) install -m 644 mkproj.1 $(mandir)/mkproj.1 uninstall: rm -f $(bindir)/$(TARGET) rm -f $(mandir)/mkproj.1 .PHONY: all check clean install uninstall