
XEN_ROOT = ../..

KXEN_DISTFILES = $(XEN_ROOT)/../distfiles
KXEN_DISTFILES_URL = http://www.xen.org/download/HostedXen/distfiles

GDB_VERSION = 6.8
GDB_PATCH = gdb-$(GDB_VERSION)-xen-gdbserver.patch
GDB_DISTFILES = gdb-$(GDB_VERSION)-mingw-src.tar.gz

DISTFILES_ALL = $(GDB_DISTFILES)

VPATH = $(KXEN_DISTFILES)

SRCDIR = $(abspath gdb-$(GDB_VERSION))
BUILDDIR = build

CROSS_PATH = $(abspath $(XEN_ROOT)/tools/cross-mingw/install/bin)

.PHONY: all
all: xen-gdbserver.exe

xen-gdbserver.exe: $(BUILDDIR)/gdb/gdbserver/gdbserver.exe
	cp -f $< $@

$(BUILDDIR)/gdb/gdbserver/gdbserver.exe: $(BUILDDIR)/.configured
	cd $(BUILDDIR) && XEN_ROOT=$(abspath $(XEN_ROOT)) \
	  PATH=$(CROSS_PATH):$$PATH make

$(BUILDDIR)/.configured: $(BUILDDIR)/.exists $(SRCDIR)/.patched
	cd $(BUILDDIR) && PATH=$(CROSS_PATH):$$PATH \
	  $(SRCDIR)/configure --host=mingw32
	@touch $@

$(SRCDIR)/.patched: $(SRCDIR)/.extracted
$(SRCDIR)/.patched: $(GDB_PATCH)
	cat $< | (cd $(SRCDIR) && patch -p1)

$(SRCDIR)/.extracted: $(GDB_DISTFILES)
	@rm -rf $(SRCDIR)
	tar zxf $<
	@mkdir -p $(SRCDIR)/.hg
	@touch $@

.PHONY: clean
clean:
	rm -rf $(BUILDDIR)

.PHONY: distclean
distclean: clean
	rm -rf $(SRCDIR)

%/.exists:
	mkdir -p $(@D)/.hg
	@touch $@

.INTERMEDIATE: $(DISTFILES_ALL)
$(DISTFILES_ALL):
	@mkdir -p $(KXEN_DISTFILES)
	(cd $(KXEN_DISTFILES) && wget -c $(KXEN_DISTFILES_URL)/${@F})
	ln -fs $(KXEN_DISTFILES)/${@F}
