#############################################################
#
## Makefile for building libcares.a with MingW32 (GCC-3.2)
## Use: make -f Makefile.m32 [demos]
##
## Quick hack by Guenter; comments to: /dev/nul
#
########################################################
## Nothing more to do below this line!

LIB	= libcares.a

AR	= $(CROSSPREFIX)ar
CC	= $(CROSSPREFIX)gcc
LD	= $(CROSSPREFIX)gcc
RANLIB	= $(CROSSPREFIX)ranlib
#RM	= rm -f
CP	= cp -afv

CFLAGS	= $(CARES_CFLAG_EXTRAS) -O2 -Wall -I. -D_WIN32_WINNT=0x0600
CFLAGS	+= -DCARES_STATICLIB
LDFLAGS	= $(CARES_LDFLAG_EXTRAS) -s
LIBS	= -lwsock32

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

OBJLIB	:= $(patsubst %.c,%.o,$(strip $(CSOURCES)))


$(LIB): $(OBJLIB)
	$(AR) cru $@ $^
	$(RANLIB) $@

all: $(LIB) demos

demos: adig.exe ahost.exe acountry.exe

tags:
	etags *.[ch]

%.exe: %.o ares_getopt.o $(LIB)
	$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)

$(OBJLIB): ares.h ares_dns.h ares_private.h ares_build.h ares_rules.h

.c.o:
	$(CC) $(CFLAGS) -c $<

ares_build.h:
	$(CP) ares_build.h.dist ares_build.h

check:

install:
	${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
	${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
	${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
	${INSTALL} -m 644 $(LIB) ${DESTDIR}${libdir}
	${RANLIB} ${DESTDIR}${libdir}/$(LIB)
	chmod u-w ${DESTDIR}${libdir}/$(LIB)
	${INSTALL} -m 444 ${srcdir}/ares.h ${DESTDIR}${includedir}
	${INSTALL} -m 444 ${srcdir}/ares_build.h ${DESTDIR}${includedir}
	${INSTALL} -m 444 ${srcdir}/ares_rules.h ${DESTDIR}${includedir}
	(for man in $(MANPAGES); do \
	   ${INSTALL} -m 444 ${srcdir}/$${man} ${DESTDIR}${mandir}/man3; \
	done)

clean:
	$(RM) ares_getopt.o $(OBJLIB) $(LIB) adig.exe ahost.exe acountry.exe

distclean: clean
	$(RM) config.cache config.log config.status Makefile
ifeq "$(wildcard ares_build.h.dist)" "ares_build.h.dist"
	$(RM) ares_build.h
endif
