1MAJOR_VERSION=1
2MINOR_VERSION=0
3
4VERSION_H = $(BUILDDIR)/include/usercrash/version.h
5
6.PHONY: all check_obj
7all: $(VERSION_H) check_obj usercrash_s usercrash_c debugger
8	rm -f $(VERSION_H)
9
10INCLUDE += -I $(CURDIR)/include/
11INCLUDE += -I $(BUILDDIR)/include/usercrash
12
13LIBS = -levent -lpthread $(EXTRA_LIBS)
14
15usercrash_s: $(BUILDDIR)/usercrash/obj/protocol.o \
16	$(BUILDDIR)/usercrash/obj/server.o \
17	$(BUILDDIR)/common/obj/log_sys.o
18	$(CC) -g $(CFLAGS) $(INCLUDE) $^ -o $(BUILDDIR)/usercrash/bin/$@ $(LIBS) $(LDFLAGS)
19
20usercrash_c: $(BUILDDIR)/usercrash/obj/protocol.o \
21	$(BUILDDIR)/usercrash/obj/client.o \
22	$(BUILDDIR)/usercrash/obj/crash_dump.o \
23	$(BUILDDIR)/common/obj/log_sys.o \
24	$(BUILDDIR)/common/obj/cmdutils.o \
25	$(BUILDDIR)/common/obj/fsutils.o \
26	$(BUILDDIR)/common/obj/strutils.o
27	$(CC) -g $(CFLAGS) $(INCLUDE) $^ -o $(BUILDDIR)/usercrash/bin/$@ $(LIBS) $(LDFLAGS)
28
29debugger: $(BUILDDIR)/usercrash/obj/debugger.o \
30	$(BUILDDIR)/usercrash/obj/crash_dump.o \
31	$(BUILDDIR)/common/obj/log_sys.o \
32	$(BUILDDIR)/common/obj/cmdutils.o \
33	$(BUILDDIR)/common/obj/fsutils.o \
34	$(BUILDDIR)/common/obj/strutils.o
35	$(CC) -g $(CFLAGS) $(INCLUDE) $^ -o $(BUILDDIR)/usercrash/bin/$@ $(LIBS) $(LDFLAGS)
36
37$(BUILDDIR)/usercrash/obj/%.o:%.c $(VERSION_H)
38	$(CC) $(CFLAGS) $(INCLUDE) -o $@ -c $<
39
40$(VERSION_H):
41	@if [ ! -d $(BUILDDIR)/include/usercrash ]; then \
42		mkdir -p $(BUILDDIR)/include/usercrash ; \
43	fi
44	touch $(VERSION_H)
45	@if [ "$(BUILD_VERSION)"x = x ];then \
46		COMMIT=`git log -1 --pretty=format:%h . 2>/dev/null`;\
47		DIRTY=`git diff --name-only $(CURDIR)`;\
48		if [ -n "$$DIRTY" ];then PATCH="$$COMMIT-dirty";else PATCH="$$COMMIT";fi;\
49	else \
50		PATCH="$(BUILD_VERSION)"; \
51	fi; \
52	TIME=$$(date -u -d "@$${SOURCE_DATE_EPOCH:-$$(date +%s)}" "+%Y-%m-%d %H:%M:%S"); \
53	USER="$${USER:-$$(id -u -n)}"; \
54	cat $(CURDIR)/../license_header > $(VERSION_H);\
55	echo "#define UC_MAJOR_VERSION $(MAJOR_VERSION)" >> $(VERSION_H);\
56	echo "#define UC_MINOR_VERSION $(MINOR_VERSION)" >> $(VERSION_H);\
57	echo "#define UC_BUILD_VERSION "\""$$PATCH"\""" >> $(VERSION_H);\
58	echo "#define UC_BUILD_TIME "\""$$TIME"\""" >> $(VERSION_H);\
59	echo "#define UC_BUILD_USER "\""$$USER"\""" >> $(VERSION_H)
60
61check_obj:
62	@if [ ! -d $(BUILDDIR)/usercrash/bin ]; then \
63		mkdir -p $(BUILDDIR)/usercrash/bin ; \
64	fi
65	@if [ ! -d $(BUILDDIR)/usercrash/obj ]; then \
66		mkdir -p $(BUILDDIR)/usercrash/obj ; \
67	fi
68
69.PHONY: clean
70clean:
71	@echo "Clean objects and binaries"
72	@if [ -e $(VERSION_H) ]; then \
73		$(RM) -f $(VERSION_H); \
74	fi
75	@if [ -d $(BUILDDIR)/usercrash/obj ]; then \
76		find $(BUILDDIR)/usercrash/obj -name "*.o" -exec $(RM) {} \; 2>&1 || exit 0; \
77	fi
78	@if [ -d $(BUILDDIR)/usercrash/bin ]; then \
79		$(RM) -r $(BUILDDIR)/usercrash/bin ; \
80	fi
81	@if [ -d $(BUILDDIR)/usercrash/obj ]; then \
82		$(RM) -r $(BUILDDIR)/usercrash/obj ; \
83	fi
84