LDFLAGS += ${LIBS}
ARFLAGS = rcs
+# commands
+COMPILE = @echo CC $@; ${CC} ${CFLAGS} -c -o $@ $<
+LINK = @echo LD $@; ${LD} -o $@ $^ ${LDFLAGS}
+ARCHIVE = @echo AR $@; ${AR} ${ARFLAGS} $@ $^
+CLEAN = @rm -f
+
#------------------------------------------------------------------------------
# Build Targets and Rules
#------------------------------------------------------------------------------
-SRCS = source/onward.c source/main.c
-OBJS = ${SRCS:.c=.o}
-LIB = libonward.a
-BIN = onward
-TEST_SRCS = tests/atf.c tests/main.c tests/test_interpreter.c tests/test_vars.c
-TEST_OBJS = ${TEST_SRCS:.c=.o}
-TEST_BIN = testonward
+LIBNAME = onward
+LIB = lib${LIBNAME}.a
+BIN = ${LIBNAME}
+DEPS = ${OBJS:.o=.d}
+OBJS = source/onward.o source/main.o
+
+# load user-specific settings
+-include config.mk
-all: options ${BIN} ${TEST_BIN}
+all: options ${LIB} ${BIN}
options:
@echo "Toolchain Configuration:"
@echo " ARFLAGS = ${ARFLAGS}"
${LIB}: ${OBJS}
- @echo AR $@
- @${AR} ${ARFLAGS} $@ ${OBJS}
+ ${ARCHIVE}
${BIN}: ${LIB}
- @echo LD $@
- @${LD} -o $@ ${LIB} ${LDFLAGS}
-
-
-${TEST_BIN}: ${TEST_OBJS} ${LIB}
- @echo LD $@
- @${LD} -o $@ ${TEST_OBJS} ${LIB} ${LDFLAGS}
- -./$@
+ ${LINK}
.c.o:
- @echo CC $<
- @${CC} ${CFLAGS} -c -o $@ $<
+ ${COMPILE}
clean:
- @rm -f ${LIB} ${BIN} ${TEST_BIN} ${OBJS} ${TEST_OBJS}
+ ${CLEAN} ${LIB} ${BIN} ${OBJS} ${DEPS}
+ ${CLEAN} ${OBJS:.o=.gcno} ${OBJS:.o=.gcda}
+
+# load dependency files
+-include ${DEPS}
.PHONY: all options
--- /dev/null
+#------------------------------------------------------------------------------
+# User and Platform Specific Configuration Options
+#------------------------------------------------------------------------------
+# Override the tools used with platform specific ones
+#CC = cc
+#LD = ${CC}
+#AR = ar
+
+# GCC dependency generation
+#COMPILE += && ${CC} --std=c11 ${INCS} -MM -MT $@ -MF ${@:.o=.d} ${<:.o=.c}
+
+# Enable output of debug symbols
+#CFLAGS += -g
+
+# Enable output of coverage information
+#CFLAGS += --coverage
+#LDFLAGS += --coverage