
CROSS_CC = ../../tools/cross-mingw/install/bin/mingw32-gcc
CC = gcc
CC := $(shell type $(CROSS_CC) >/dev/null 2>&1 && echo $(CROSS_CC) \
	|| echo $(CC))
CROSS_AR = ../../tools/cross-mingw/install/bin/mingw32-ar
AR = ar
AR := $(shell type $(CROSS_AR) >/dev/null 2>&1 && echo $(CROSS_AR) \
	|| echo $(AR))
CROSS_RANLIB = ../../tools/cross-mingw/install/bin/mingw32-ranlib
RANLIB = ranlib
RANLIB := $(shell type $(CROSS_RANLIB) >/dev/null 2>&1 && echo $(CROSS_RANLIB) \
	|| echo $(RANLIB))

DISTDIR = ../../dist

SRCROOT = ../../tools
OBJDIR = obj

CPPFLAGS += -D__XEN_TOOLS__

CPPFLAGS += -I$(SRCROOT)/libxc -I$(DISTDIR)/include
CPPFLAGS += -g -Wall -Werror

LDFLAGS += -g

all: xenctx.exe

VPATH = $(OBJDIR)

libhxenctl_SRCS  = hxenctllib.c
libhxenctl_OBJS  = $(patsubst %.c,%.o,$(libhxenctl_SRCS))
libhxenctl_OBJS := $(subst /,_,$(libhxenctl_OBJS))
libhxenctl_CPPFLAGS = -I../hxenctl -I../../hxen/include -I../include \
	-DERR_NO_PROGNAME

libxenctrl_SRCS  = xc_windows.c
libxenctrl_SRCS += xc_domain.c
libxenctrl_SRCS += xc_pagetab.c
libxenctrl_SRCS += xc_private.c
libxenctrl_SRCS += xc_ptrace.c #xc_ptrace_core.c
libxenctrl_OBJS  = $(patsubst %.c,%.o,$(libxenctrl_SRCS))
libxenctrl_OBJS := $(subst /,_,$(libxenctrl_OBJS))
libxenctrl_CPPFLAGS = -I../hxenctl -I../../hxen/include -I../include

xenctx_SRCS  = xenctx.c
xenctx_OBJS  = $(patsubst %.c,%.o,$(xenctx_SRCS))
xenctx_OBJS := $(subst /,_,$(xenctx_OBJS))
xenctx_LIBS = libxenctrl.a libhxenctl.a

OBJS = $(libxenctrl_OBJS) $(xenctx_OBJS)
$(OBJS): $(OBJDIR)/.exists


libhxenctl.a: $(libhxenctl_OBJS)
	$(AR) rc $(OBJDIR)/$@ $(patsubst %,$(OBJDIR)/%,$(libhxenctl_OBJS))
	$(RANLIB) $(OBJDIR)/$@

libxenctrl.a: $(libxenctrl_OBJS)
	$(AR) rc $(OBJDIR)/$@ $(patsubst %,$(OBJDIR)/%,$(libxenctrl_OBJS))
	$(RANLIB) $(OBJDIR)/$@

xenctx.exe: $(xenctx_OBJS) $(xenctx_LIBS)
	$(LINK.o) -o $@ $(patsubst %,$(OBJDIR)/%,$(xenctx_OBJS)) \
	  -L$(OBJDIR) $(patsubst lib%.a,-l%,$(filter lib%.a,$(xenctx_LIBS)))

$(libhxenctl_OBJS): %.o : ../hxenctl/%.c
	$(COMPILE.c) $(libhxenctl_CPPFLAGS) $< -o $(OBJDIR)/$@

$(libxenctrl_OBJS): %.o : $(SRCROOT)/libxc/%.c
	$(COMPILE.c) $(libxenctrl_CPPFLAGS) $< -o $(OBJDIR)/$@

$(xenctx_OBJS): %.o : $(SRCROOT)/xentrace/%.c
	$(COMPILE.c) $< -o $(OBJDIR)/$@


clean:
	@rm -rf .deps obj

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