aboutsummaryrefslogtreecommitdiffstats
path: root/build.mk
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-07-28 21:17:03 +0200
committerMattias Andrée <maandree@operamail.com>2014-07-28 21:17:03 +0200
commit89759a3b39b2a41b2e7ab8586c71c0f5966a6b39 (patch)
tree87999773cda430e620d8c4f3659cb6ef7e50f2ea /build.mk
parentdoc (diff)
downloadmds-89759a3b39b2a41b2e7ab8586c71c0f5966a6b39.tar.gz
mds-89759a3b39b2a41b2e7ab8586c71c0f5966a6b39.tar.bz2
mds-89759a3b39b2a41b2e7ab8586c71c0f5966a6b39.tar.xz
improve makefile
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r--build.mk55
1 files changed, 55 insertions, 0 deletions
diff --git a/build.mk b/build.mk
new file mode 100644
index 0000000..31a62ad
--- /dev/null
+++ b/build.mk
@@ -0,0 +1,55 @@
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+
+
+.PHONY: libraries
+libraries: bin/libmdsserver.so
+
+.PHONY: servers
+servers: $(foreach S,$(SERVERS),bin/$(S))
+
+
+# Link large servers.
+
+bin/mds-server: $(OBJ_mds-server_) obj/mds-base.o bin/libmdsserver.so
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -o $@ $(LDS) $(LDS_mds-server) $(OBJ_mds-server_) obj/mds-base.o
+ifeq ($(DEBUG),y)
+ mv $@ $@.real
+ cp test.d/mds-server $@
+endif
+
+
+# Link small servers.
+
+bin/%: obj/%.o obj/mds-base.o bin/libmdsserver.so
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -o $@ $(LDS) $(LDS_$*) $< obj/mds-base.o
+
+
+# Link kernel.
+
+bin/mds: obj/mds.o bin/libmdsserver.so
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -o $@ $(LDS) $(LDS_mds) $<
+
+
+# Build object files for kernel/servers.
+
+obj/%.o: src/%.c $(shell dirname src/%)/*.h src/mds-base.h src/libmdsserver/*.h
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -Isrc -c -o $@ $<
+
+
+# Build libmdsserver.
+
+bin/libmdsserver.so: $(foreach O,$(LIBOBJ),obj/libmdsserver/$(O).o)
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -shared -o $@ $^
+
+obj/libmdsserver/%.o: src/libmdsserver/%.c src/libmdsserver/*.h
+ mkdir -p $(shell dirname $@)
+ $(CC) $(C_FLAGS) -fPIC -c -o $@ $<
+