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