#############################################################
#
## Makefile for building arestest.exe with MingW32 (GCC-3.2)
## Use: make -f Makefile.m32
#
########################################################
CXX = g++
CC = gcc
LD = g++

# Where to find the c-ares source code; needed because the tests use library-internal headers
ARES_SRC_DIR = ..
# Where to find the built c-ares static library
ARES_BLD_DIR = ..
ARESLIB = $(ARES_BLD_DIR)/libcares.a
GMOCK_DIR = gmock-1.7.0
GTEST_DIR = $(GMOCK_DIR)/gtest
CPPFLAGS = -I$(ARES_SRC_DIR) -I$(GTEST_DIR)/include -I$(GMOCK_DIR)/include -DCARES_STATICLIB
CXXFLAGS = -Wall $(PTHREAD_CFLAGS) -std=gnu++11
LDFLAGS =
LDLIBS = -lwsock32

# Makefile.inc provides the TESTSOURCES and TESTHEADERS defines
include Makefile.inc

OBJS := $(patsubst %.cc,%.o,$(strip $(TESTSOURCES)))
FUZZOBJS := $(patsubst %.c,%.o,$(strip $(FUZZSOURCES)))
FUZZNAMEOBJS := $(patsubst %.c,%.o,$(strip $(FUZZNAMESOURCES)))

all: arestest.exe aresfuzz.exe aresfuzzname.exe

arestest.exe: $(OBJS) gmock-all.o gtest-all.o
	$(LD) $(LDFLAGS) -o $@ $^  -L$(ARES_BLD_DIR) -lcares $(LDLIBS)

aresfuzz.exe: $(FUZZOBJS)
	$(LD) $(LDFLAGS) -o $@ $^  -L$(ARES_BLD_DIR) -lcares $(LDLIBS)

aresfuzzname.exe: $(FUZZNAMEOBJS)
	$(LD) $(LDFLAGS) -o $@ $^  -L$(ARES_BLD_DIR) -lcares $(LDLIBS)

$(OBJS): $(TESTHEADERS)

.cc.o:
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<
.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $<
gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc
	$(CXX) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CPPFLAGS) $(CXXFLAGS) -c $<
gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc
	$(CXX) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CPPFLAGS) $(CXXFLAGS) -c $<

test: arestest.exe
	./arestest.exe
vtest: arestest.exe
	./arestest.exe -v

clean:
	$(RM) $(OBJS) gmock-all.o gtest-all.o arestest.exe aresfuzz.exe aresfuzzname.exe

