# Standard installation pathnames
# See the file LICENSE for the license
SHELL 		= @SHELL@
VERSION         = @PACKAGE_VERSION@
srcdir 		= @srcdir@
basesrcdir	= $(shell basename `pwd`)
prefix  	= @prefix@
exec_prefix 	= @exec_prefix@
bindir 		= @bindir@
mandir 		= @mandir@
libdir		= @libdir@
includedir	= @includedir@
doxygen		= @doxygen@
glibtool	= @glibtool@
libtool		= @libtool@
ifdef glibtool
libtool		= $(glibtool)
endif

CC 		= @CC@
CPPFLAGS	= @CPPFLAGS@ @DEFS@ -I. -I$(srcdir)
CFLAGS 		= @CFLAGS@  -I. -I$(srcdir)
LDFLAGS		= @LDFLAGS@
LIBS 		= @LIBS@
LIBOBJS		= @LIBOBJS@
RUNTIME_PATH	= @RUNTIME_PATH@
DATE		= $(shell date +%Y%m%d)
LIBTOOL		= $(libtool) --tag=CC

LINT		= splint
LINTFLAGS	= +quiet -weak -warnposix -unrecog -Din_addr_t=uint32_t -Du_int=unsigned -Du_char=uint8_t -preproc

INSTALL = $(srcdir)/install-sh 

LIBDNS_SOURCES	=	rdata.c util.c rr.c packet.c wire2host.c \
			host2str.c buffer.c str2host.c tsig.c resolver.c \
			net.c host2wire.c dname.c dnssec.c keys.c \
			higher.c rr_functions.c parse.c update.c error.c zone.c
LIBDNS_HEADERS	=	$(srcdir)/ldns/error.h		\
			$(srcdir)/ldns/packet.h		\
			$(srcdir)/ldns/common.h		\
			$(srcdir)/ldns/rdata.h 		\
			$(srcdir)/ldns/rr.h		\
			$(srcdir)/ldns/wire2host.h	\
			$(srcdir)/ldns/host2str.h		\
			$(srcdir)/ldns/host2wire.h	\
			$(srcdir)/ldns/str2host.h		\
			$(srcdir)/ldns/buffer.h		\
			$(srcdir)/ldns/resolver.h		\
			$(srcdir)/ldns/net.h		\
			$(srcdir)/ldns/dname.h		\
			$(srcdir)/ldns/dnssec.h		\
			$(srcdir)/ldns/keys.h		\
			$(srcdir)/ldns/higher.h		\
			$(srcdir)/ldns/parse.h		\
			$(srcdir)/ldns/rr_functions.h	\
			$(srcdir)/ldns/ldns.h		\
			$(srcdir)/ldns/zone.h		\
			$(srcdir)/ldns/update.h 		\
			$(srcdir)/ldns/tsig.h
LIBDNS_OBJECTS	=	$(LIBDNS_SOURCES:.c=.o) $(LIBOBJS)
LIBDNS_LOBJECTS	=	$(LIBDNS_SOURCES:.c=.lo) $(LIBOBJS:.o=.lo)

ALL_SOURCES	=	$(LIBDNS_SOURCES)

COMPILE		= $(CC) $(CPPFLAGS) $(CFLAGS)
COMP_LIB	= $(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS)
LINK		= $(CC) $(CFLAGS) $(LDFLAGS)
LINK_LIB	= $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -release $(VERSION)

%.o:    $(srcdir)/%.c $(LIBDNS_HEADERS) ldns/util.h ldns/config.h
	$(COMP_LIB) -c $> $<

.PHONY:	clean realclean docclean doc lint all lib
.PHONY: install uninstall install-doc uninstall-doc 
.PHONY: install-h uninstall-h install-lib uninstall-lib 

all:		copy-headers lib linktest

linktest:
		gcc $(srcdir)/linktest.c $(CPPFLAGS) $(CFLAGS) -L.libs -lldns -o linktest
		rm linktest

lib:		$(LIBDNS_OBJECTS)
		$(LINK_LIB) -o libldns.la $(LIBDNS_LOBJECTS) -rpath $(libdir) $(RUNTIME_PATH)
		if [ ! -d lib ] ; then ln -s .libs lib ; fi ;		

copy-headers:
		if [ ! -d include ] ; then mkdir include ; fi ;
		if [ ! -d include/ldns ] ; then ln -sf ../ldns ./include/ldns ; fi ;
		for i in $(LIBDNS_HEADERS); do \
			if [ $(srcdir)/ldns/$$i -nt ./include/ldns/$$i ] ; then \
				MVPROG=/bin/cp $(INSTALL) -m 644 $$i ./include/ldns/; \
			fi ; \
		done

doc:		$(srcdir)/doc/function_manpages 
		$(INSTALL) -d doc
ifdef doxygen
		$(doxygen) $(srcdir)/libdns.doxygen
endif
		cat $(srcdir)/ldns/*.h | $(srcdir)/doc/doxyparse.pl -m $(srcdir)/doc/function_manpages 2>&1 | \
		grep -v ^doxygen | grep -v ^cat  > doc/ldns_manpages

install:	install-h install-lib install-doc

uninstall:	uninstall-doc uninstall-h uninstall-lib

destclean:	uninstall

install-doc:	doc
		${INSTALL} -d $(DESTDIR)$(mandir)/man3
		cp -Rp doc/man/man3/* $(DESTDIR)$(mandir)/man3/

uninstall-doc:	doc
		for i in `cat doc/ldns_manpages`; do \
			rm -f $(DESTDIR)$(mandir)/man3/$$i.3 ; done
		rmdir -p $(DESTDIR)$(mandir)/man3

install-h:	lib
		$(INSTALL) -m 755 -d $(DESTDIR)$(includedir)/ldns
		for i in $(LIBDNS_HEADERS); do \
			MVPROG=/bin/cp $(INSTALL) -m 644 $$i $(DESTDIR)$(includedir)/ldns/; done
		MVPROG=/bin/cp $(INSTALL) -m 644 include/ldns/util.h $(DESTDIR)$(includedir)/ldns/

uninstall-h:
		for i in $(LIBDNS_HEADERS); do \
			rm -f $(DESTDIR)$(includedir)/$$i; done
		[ ! -d $(DESTDIR)$(includedir)/ldns ] || rmdir -p $(DESTDIR)$(includedir)/ldns
		exit 0
	
install-lib:	lib
		$(INSTALL) -m 755 -d $(DESTDIR)$(libdir)
		$(LIBTOOL) --mode=install cp libldns.la $(DESTDIR)$(libdir)
		$(LIBTOOL) --mode=finish $(DESTDIR)$(libdir)

uninstall-lib:	
		$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/libldns.la
		rmdir -p $(DESTDIR)$(libdir)

clean:
	rm -f *.o *.d *.lo
	rm -f *~
	rm -rf autom4te.cache/
	rm -f tags
	rm -f *.key
	rm -f *.ds
	rm -f *.private
	rm -rf include/
	rm -f lib
	rm -rf .libs

distclean: clean docclean libclean
	rm -f ltmain.sh

realclean: clean docclean libclean
	rm -f config.status
	rm -f config.log
	rm -f Makefile
	rm -f ldns/config.h.in
	rm -f ldns/config.h
	rm -f ldns/util.h
	rm -f config.h.in
	rm -f configure
	rm -f config.sub
	rm -f config.guess
	rm -f ltmain.sh

docclean:
	rm -rf doc/html/
	rm -rf doc/man/
	rm -rf doc/latex/
	rm -f doc/*.txt
	rm -f doc/*.tex
	rm -f doc/ldns_manpages

libclean:
	$(LIBTOOL) --mode clean rm -f libldns.la
	$(LIBTOOL) --mode clean rm -f libldns.a
	$(LIBTOOL) --mode clean rm -f libldns.so
	$(LIBTOOL) --mode clean rm -f libldns.so.*
	rm -rf *.lo
	rm -rf .libs
	rm -rf libtool

## No need for changes here

lint:
	for i in $(LIBDNS_SOURCES); do \
		$(LINT) $(LINTFLAGS) -I. -I$(srcdir) $(srcdir)/$$i ; \
		if [ $$? -ne 0 ] ; then exit 1 ; fi ; \
	done

tags:	$(srcdir)/*.c ldns/*.[ch]
	ctags  -f $(srcdir)/tags $(srcdir)/*.[ch] ldns/*.[ch]

b64_pton$U.o:	$(srcdir)/compat/b64_pton.c
	$(COMP_LIB) -c $(srcdir)/compat/b64_pton.c -o $@

b64_ntop$U.o:	$(srcdir)/compat/b64_ntop.c
	$(COMP_LIB) -c $(srcdir)/compat/b64_ntop.c -o $@

malloc$U.o:	$(srcdir)/compat/malloc.c
	$(COMP_LIB) -c $(srcdir)/compat/malloc.c -o $@

timegm$U.o:	$(srcdir)/compat/timegm.c
	$(COMP_LIB) -c $(srcdir)/compat/timegm.c -o $@

isblank$U.o:	$(srcdir)/compat/isblank.c
	$(COMP_LIB) -c $(srcdir)/compat/isblank.c -o $@

# Automatic dependencies.
%.d: $(srcdir)/%.c
	$(SHELL) -ec '$(CC) -MM $(CPPFLAGS) $< \
	              | sed '\''s!\(.*\)\.o[ :]*!$(dir $@)\1.o $@ : !g'\'' > $@; \
	              [ -s $@ ] || rm -f $@'

allclean: test-clean clean

test-clean:
	tpkg -b test clean

#include $(ALL_SOURCES:.c=.d)


syntax highlighted by Code2HTML, v. 0.9.1