UNAME := $$( uname -s ) .if ${UNAME} == "Linux" CC=clang --std=gnu11 .else CC=clang --std=c11 .endif AR=ar ruvcs CFLAGS=-Wall -Wextra -Werror -Weverything -pedantic .ifdef RELEASE CFLAGS+=-O2 LFLAGS=-O2 .else CFLAGS+=-g LFLAGS=-g .endif LIBS=-lncurses -lform -lm TARGET=lc DEPS=main.c HEAD= OBJ=${DEPS:.c=.o} LIB=las.a LDEPS=bullet_loan.c straight_line_loan.c mortgage_loan.c loans.c read_functions.c LHEAD=contract.h loans.h LOBJ=${LDEPS:.c=.o} .PHONY: all clean release lib $(TARGET) $(LIB) all: $(LIB) $(TARGET) $(OBJ): $(HEAD) $(LOBJ): $(LHEAD) .c.o: $(CC) -o $@ -c $< $(CFLAGS) $(TARGET): $(OBJ) $(LIB) $(CC) -o $@ $(OBJ) $(LIB) $(LIBS) $(LFLAGS) $(LIB): $(LOBJ) $(AR) $(LIB) $(LOBJ) lib: $(LIB) release: @make -DRELEASE clean: rm -f *.o *~ *.core $(OBJ) $(TARGET)