1MAJOR_VERSION=1
2MINOR_VERSION=0
3
4VERSION_H	= $(BUILDDIR)/include/acrnprobe/version.h
5
6LIBS		= -lpthread -lxml2 -lcrypto -lrt -lblkid -lext2fs -lcom_err \
7		  $(EXTRA_LIBS)
8INCLUDE		+= -I $(CURDIR)/include -I $(SYSROOT)/usr/include/libxml2
9INCLUDE		+= -I $(BUILDDIR)/include/acrnprobe
10CFLAGS 		+= $(INCLUDE)
11CFLAGS 		+= -fdata-sections
12CFLAGS 		+= -fcommon
13
14LDFLAGS 	+= $(LIBS) -Wl,--gc-sections
15
16TARGET		= $(BUILDDIR)/acrnprobe/bin/acrnprobe
17
18.PHONY: all check_dirs
19all: $(VERSION_H) check_dirs $(TARGET)
20	rm -f $(VERSION_H)
21
22$(BUILDDIR)/acrnprobe/obj/%.o:%.c $(VERSION_H)
23	$(CC) -c $(CFLAGS) $< -o $@
24
25$(BUILDDIR)/acrnprobe/bin/acrnprobe: $(BUILDDIR)/acrnprobe/obj/main.o \
26	$(BUILDDIR)/common/obj/log_sys.o \
27	$(BUILDDIR)/common/obj/cmdutils.o \
28	$(BUILDDIR)/common/obj/fsutils.o \
29	$(BUILDDIR)/common/obj/strutils.o \
30	$(BUILDDIR)/acrnprobe/obj/load_conf.o \
31	$(BUILDDIR)/acrnprobe/obj/channels.o \
32	$(BUILDDIR)/acrnprobe/obj/event_queue.o \
33	$(BUILDDIR)/acrnprobe/obj/event_handler.o \
34	$(BUILDDIR)/acrnprobe/obj/crash_reclassify.o \
35	$(BUILDDIR)/acrnprobe/obj/sender.o \
36	$(BUILDDIR)/acrnprobe/obj/startupreason.o \
37	$(BUILDDIR)/acrnprobe/obj/property.o \
38	$(BUILDDIR)/acrnprobe/obj/probeutils.o \
39	$(BUILDDIR)/acrnprobe/obj/history.o \
40	$(BUILDDIR)/acrnprobe/obj/android_events.o \
41	$(BUILDDIR)/acrnprobe/obj/loop.o \
42	$(BUILDDIR)/acrnprobe/obj/vmrecord.o
43	$(CC) -o $@ $^ $(LDFLAGS)
44
45.PHONY: clean
46clean:
47	@echo "Clean objects and binaries"
48	@if [ -e $(VERSION_H) ]; then \
49		$(RM) -f $(VERSION_H); \
50	fi
51	@if [ -d $(BUILDDIR)/acrnprobe/obj ]; then \
52	    find $(BUILDDIR)/acrnprobe/obj -name "*.o" -exec $(RM) {} \; 2>&1 || exit 0; \
53	fi
54	@if [ -d $(BUILDDIR)/acrnprobe/bin ]; then \
55		$(RM) -r $(BUILDDIR)/acrnprobe/bin ; \
56	fi
57	@if [ -d $(BUILDDIR)/acrnprobe/obj ]; then \
58		$(RM) -r $(BUILDDIR)/acrnprobe/obj ; \
59	fi
60
61$(VERSION_H):
62	@if [ ! -d $(BUILDDIR)/include/acrnprobe ]; then \
63		mkdir -p $(BUILDDIR)/include/acrnprobe ; \
64	fi
65	touch $(VERSION_H)
66	@if [ "$(BUILD_VERSION)"x = x ];then \
67		COMMIT=`git log -1 --pretty=format:%h . 2>/dev/null`;\
68		DIRTY=`git diff --name-only $(CURDIR)`;\
69		if [ -n "$$DIRTY" ];then PATCH="$$COMMIT-dirty";else PATCH="$$COMMIT";fi;\
70	else \
71		PATCH="$(BUILD_VERSION)"; \
72	fi; \
73	TIME=$$(date -u -d "@$${SOURCE_DATE_EPOCH:-$$(date +%s)}" "+%Y-%m-%d %H:%M:%S"); \
74	USER="$${USER:-$$(id -u -n)}"; \
75	cat $(CURDIR)/../license_header > $(VERSION_H);\
76	echo "#define AP_MAJOR_VERSION $(MAJOR_VERSION)" >> $(VERSION_H);\
77	echo "#define AP_MINOR_VERSION $(MINOR_VERSION)" >> $(VERSION_H);\
78	echo "#define AP_BUILD_VERSION "\""$$PATCH"\""" >> $(VERSION_H);\
79	echo "#define AP_BUILD_TIME "\""$$TIME"\""" >> $(VERSION_H);\
80	echo "#define AP_BUILD_USER "\""$$USER"\""" >> $(VERSION_H)
81
82check_dirs:
83	@if [ ! -d $(BUILDDIR)/acrnprobe/bin ]; then \
84		mkdir -p $(BUILDDIR)/acrnprobe/bin ; \
85	fi
86	@if [ ! -d $(BUILDDIR)/acrnprobe/obj ]; then \
87		mkdir -p $(BUILDDIR)/acrnprobe/obj ; \
88	fi
89