Initial revision
diff --git a/build/exe.mk b/build/exe.mk
new file mode 100644
index 0000000..b4bd1a3
--- /dev/null
+++ b/build/exe.mk
@@ -0,0 +1,37 @@
+#
+# GNU makefile fragment for building an executable
+#
+
+CC           = gcc
+# LINKAGE can be forced to -static or -dynamic from invocation if desired, but it defaults to -static
+LINKAGE      = -static
+LINK         = gcc $(LINKAGE)
+BINPATH      = ../../obj/bin
+LIBPATH      = ../../obj/lib
+PROGRAM      = $(BINPATH)/$(PROGRAM_NAME)
+
+all : release
+
+debug   : CFLAGS = -g -O0 -DDEBUG $(DEBUG_CFLAGS) -Wall -W $(INCLUDES)
+release : CFLAGS = -O3 -DNDEBUG $(RELEASE_CFLAGS) -Wall -W $(INCLUDES)
+
+LFLAGS  = -L$(LIBPATH)
+
+debug   : $(PROGRAM)
+release : $(PROGRAM)
+
+$(PROGRAM) : $(OBJS)
+	$(LINK) -o $@ $(OBJS) $(LFLAGS) $(LIBS)
+
+%.o : %.c
+	$(CC) $(CFLAGS) -c $< -o $@
+%.i : %.c
+	$(CC) $(CFLAGS) -E $< -o $@
+
+.PHONY : clean
+clean :
+	-rm -f $(OBJS) $(PROGRAM)
+
+.PHONY : depend
+depend:
+	makedepend -- $(CFLAGS) $(INCLUDES) -- *.c