# Makefile for cnotes - GCC on Linux/Unix/macOS # Strict C89/ANSI compliant build CC = gcc CFLAGS = -ansi -Wpedantic -Wall -Wextra -O2 INCLUDES = -I include SRCDIR = src INCDIR = include BUILDDIR = build SOURCES = $(SRCDIR)/cnadd.c $(SRCDIR)/cndump.c $(SRCDIR)/cncount.c $(SRCDIR)/cndel.c $(SRCDIR)/cnfind.c $(SRCDIR)/cnhelp.c HEADERS = $(INCDIR)/platform.h $(INCDIR)/config.h TARGETS = $(BUILDDIR)/cnadd $(BUILDDIR)/cndump $(BUILDDIR)/cncount $(BUILDDIR)/cndel $(BUILDDIR)/cnfind $(BUILDDIR)/cnhelp .PHONY: all clean install uninstall all: $(BUILDDIR) $(TARGETS) $(BUILDDIR): mkdir -p $(BUILDDIR) $(BUILDDIR)/cnadd: $(SRCDIR)/cnadd.c $(HEADERS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCDIR)/cnadd.c $(BUILDDIR)/cndump: $(SRCDIR)/cndump.c $(HEADERS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCDIR)/cndump.c $(BUILDDIR)/cncount: $(SRCDIR)/cncount.c $(HEADERS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCDIR)/cncount.c $(BUILDDIR)/cndel: $(SRCDIR)/cndel.c $(HEADERS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCDIR)/cndel.c $(BUILDDIR)/cnfind: $(SRCDIR)/cnfind.c $(HEADERS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCDIR)/cnfind.c $(BUILDDIR)/cnhelp: $(SRCDIR)/cnhelp.c $(CC) $(CFLAGS) -o $@ $(SRCDIR)/cnhelp.c clean: rm -rf $(BUILDDIR) # Install to /usr/local/bin (optional, run with sudo) install: $(TARGETS) install -m 755 $(BUILDDIR)/cnadd /usr/local/bin/ install -m 755 $(BUILDDIR)/cndump /usr/local/bin/ install -m 755 $(BUILDDIR)/cncount /usr/local/bin/ install -m 755 $(BUILDDIR)/cndel /usr/local/bin/ install -m 755 $(BUILDDIR)/cnfind /usr/local/bin/ install -m 755 $(BUILDDIR)/cnhelp /usr/local/bin/ uninstall: rm -f /usr/local/bin/cnadd /usr/local/bin/cndump /usr/local/bin/cncount /usr/local/bin/cndel /usr/local/bin/cnfind /usr/local/bin/cnhelp # Strict splint (very verbose, use with caution) splint-strict: splint +standard -I./include src/*.c cppcheck: @echo "Running cppcheck..." @cppcheck --std=c90 --enable=warning,style,performance,portability \ --suppress=missingIncludeSystem --quiet -I./include src/