Makefile
changeset 0 317e5bc59627
child 1 cf0e1bb6bcab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Sun Feb 22 02:00:34 2009 +0200
@@ -0,0 +1,81 @@
+#LIBEVENT_PATH = ~/opt
+#LIBRARY_PATHS = -L${LIBEVENT_PATH}/lib
+#INCLUDE_PATHS = -I${LIBEVENT_PATH}/include
+LDLIBS = -levent
+
+# default is test
+ifndef MODE
+MODE = test
+endif
+
+ifeq ($(MODE), debug)
+MODE_CFLAGS = -g -DDEBUG_ENABLED
+else ifeq ($(MODE), dev)
+MODE_CFLAGS = -g
+else ifeq ($(MODE), test)
+MODE_CFLAGS = -g -DINFO_DISABLED
+else ifeq ($(MODE), release)
+MODE_CFLAGS = -DINFO_DISABLED -O2
+endif
+
+FIXED_CFLAGS = -Wall -std=gnu99
+
+BIN_NAMES = nexus
+BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
+
+# modules
+module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
+
+# XXX: not yet there
+#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
+
+# first target
+all: ${BIN_PATHS}
+
+# binaries
+bin/nexus: 
+
+# computed
+LDFLAGS = ${LIBRARY_PATHS}
+CPPFLAGS = ${INCLUDE_PATHS} ${DEFINES}
+CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS}
+
+SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
+SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
+SRC_DIRS = $(dir $(SRC_NAMES))
+
+# other targets
+clean :
+	-rm obj/*.o obj/*/*.o
+	-rm bin/* 
+	-rm build/deps/*.d build/deps/*/*.d
+
+clean-deps:
+	-rm build/deps/*/*.d 
+	-rm build/deps/*.d
+
+#obj-dirs: 
+#	python build/make_obj_dirs.py $(BIN_PATHS)
+
+build/deps/%.d : src/%.c
+	@set -e; rm -f $@; \
+	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
+	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
+	 rm -f $@.$$$$
+
+include $(SRC_NAMES:%.c=build/deps/%.d)
+
+obj/%.o : src/%.c
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
+
+bin/% : obj/%.o
+	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
+
+# documentation
+DOXYGEN_PATH = /usr/bin/doxygen
+DOXYGEN_CONF_PATH = doc/doxygen.conf
+DOXYGEN_OUTPUT_FILE = doc/html/index.html
+
+docs :
+	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
+