CXX ?= clang++ SRCDIR ?= src INCDIR += -I${SRCDIR} OBJDIR ?= build BINDIR ?= bin INSTALLDIR ?= /usr/local/bin TARGET ?= amalgam CFLAGS += -std=c++11 #CFLAGS += `pkg-config --cflags portaudio-2.0` #LDFLAGS += `pkg-config --libs portaudio-2.0` UNAME=$(shell uname -s) ifeq (${UNAME},FreeBSD) INCDIR += -I/sys/ endif SHELL=/bin/sh SRC = $(wildcard ${SRCDIR}/*/*.cpp) OBJ = ${SRC:${SRCDIR}/%.cpp=${OBJDIR}/%.o} BINS = $(wildcard ${SRCDIR}/*.cpp) ALLOBJ = ${SRC:${SRCDIR}/%.cpp=${OBJDIR}/%.o} ${BINS:${SRCDIR}/%.cpp=${OBJDIR}/%.o} all: fmtest wavtest ${ALLOBJ}: $(OBJDIR)/%.o : $(SRCDIR)/%.cpp @mkdir -p $(dir $@) @echo CXX $< ${CXX} -o $@ ${INCDIR} -c ${CFLAGS} ${DEFINES} $< fmtest: ${ALLOBJ} @mkdir -p ${BINDIR} ${CXX} ${INCDIR} -o ${BINDIR}/fmtest ${OBJDIR}/fmtest.o ${OBJ} ${LDFLAGS} ${CFLAGS} ${DEFINES} wavtest: ${ALLOBJ} @mkdir -p ${BINDIR} ${CXX} ${INCDIR} -o ${BINDIR}/wavtest ${OBJDIR}/wavtest.o ${OBJ} ${LDFLAGS} ${CFLAGS} ${DEFINES} ${TARGET}: ${OBJ} @echo CXX -o ${BINDIR}/${TARGET} @mkdir -p ${BINDIR} ${CXX} ${INCDIR} -o ${BINDIR}/${TARGET} ${OBJ} ${LDFLAGS} ${CFLAGS} ${DEFINES} clean: @echo cleaning @rm -f ${OBJ} remove: clean @echo deleting binary @rm -f ${BINDIR}/${TARGET} @rm -r ${BINDIR} install: ${TARGET} mkdir -p ${INSTALLDIR} cp ${BINDIR}/${TARGET} ${INSTALLDIR}/${TARGET} chmod 4555 ${INSTALLDIR}/${TARGET}