# dhcpcd Makefile

PROG=		dhcpcd
SRCS=		arp.c bind.c common.c control.c dhcp.c dhcpcd.c duid.c eloop.c
SRCS+=		dbus-dict.c dhcpcd-dbus.c
SRCS+=		if-options.c if-pref.c ipv4ll.c net.c signals.c
PKG_CONFIG ?= pkg-config

CFLAGS?=	-O2
CSTD?=		c99
CFLAGS+=	-std=${CSTD}
include config.mk

FILES+=		dhcpcd.conf dhcpcd-minimal.conf dhcpcd-dbus.conf

_DBUSCFLAGS_SH=	$(PKG_CONFIG) --cflags dbus-1
_DBUSCFLAGS!=	${_DBUSCFLAGS_SH}
DBUSCFLAGS=	${_DBUSCFLAGS}$(shell ${_DBUSCFLAGS_SH})

_DBUSLIBS_SH=	$(PKG_CONFIG) --libs dbus-1
_DBUSLIBS!=	${_DBUSLIBS_SH}
DBUSLIBS=	${_DBUSLIBS}$(shell ${_DBUSLIBS_SH})

DBUSDIR=	${SYSCONFDIR}/dbus-1/system.d

# Linux needs librt
_LIBRT_SH=	[ "$$(uname -s)" = "Linux" ] && echo "-lrt" || echo ""
_LIBRT!=	${_LIBRT_SH}
LIBRT?=		${_LIBRT}$(shell ${_LIBRT_SH})

CFLAGS+=	${DBUSCFLAGS}
LDADD+=		${DBUSLIBS} ${LIBRT}

OBJS+=		${SRCS:.c=.o} ${COMPAT_SRCS:.c=.o}

CLEANFILES+=	.depend

LDFLAGS+=	-Wl,-rpath=${LIBDIR}

SED_SYS=	-e 's:@SYSCONFDIR@:${SYSCONFDIR}:g'

_DEPEND_SH=	test -e .depend && echo ".depend" || echo ""
_DEPEND!=	${_DEPEND_SH}
DEPEND=		${_DEPEND}$(shell ${_DEPEND_SH})

_VERSION_SH=	sed -n 's/\#define VERSION[[:space:]]*"\(.*\)".*/\1/p' defs.h
_VERSION!=	${_VERSION_SH}
VERSION=	${_VERSION}$(shell ${_VERSION_SH})

GITREF?=	HEAD
DISTPREFIX?=	${PROG}-${VERSION}
DISTFILE?=	${DISTPREFIX}.tar.bz2

CLEANFILES+=	*.tar.bz2

.PHONY:		import import-bsd

.SUFFIXES:	.in

.in:
	${SED} ${SED_SYS} $< > $@

all: config.h ${PROG} ${FILES}

.c.o:
	${CC} ${CFLAGS} ${CPPFLAGS} -c $< -o $@

.depend: ${SRCS} ${COMPAT_SRCS}
	${CC} ${CPPFLAGS} -MM ${SRCS} ${COMPAT_SRCS} > .depend

depend: .depend

${PROG}: ${DEPEND} ${OBJS}
	${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD}

_proginstall: ${PROG}
	${INSTALL} -d ${DESTDIR}${SBINDIR}
	${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${SBINDIR}

_confinstall:
	# dhcpcd config file
	${INSTALL} -d ${DESTDIR}${SYSCONFDIR}
	${INSTALL} -m ${CONFMODE} dhcpcd.conf ${DESTDIR}${SYSCONFDIR}
	${INSTALL} -m ${CONFMODE} dhcpcd-minimal.conf ${DESTDIR}${SYSCONFDIR}
	# dhcpcd d-bus registration file (note file rename)
	${INSTALL} -d ${DESTDIR}${DBUSDIR}
	${INSTALL} -m ${CONFMODE} dhcpcd-dbus.conf \
		${DESTDIR}${DBUSDIR}/dhcpcd.conf

install: _proginstall _confinstall
	for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done

clean:
	rm -f ${OBJS} ${PROG} ${PROG}.core ${CLEANFILES}

dist:
	git archive --prefix=${DISTPREFIX}/ ${GITREF} | bzip2 > ${DISTFILE}

import:
	rm -rf /tmp/${DISTPREFIX}
	${INSTALL} -d /tmp/${DISTPREFIX}
	cp ${SRCS} dhcpcd.conf *.in /tmp/${DISTPREFIX}
	cp $$(${CC} ${CPPFLAGS} -MM ${SRCS} | \
		sed -e 's/^.*c //g' -e 's/\\//g' | \
		tr ' ' '\n' | \
		sed -e '/^compat\//d' | \
		sort -u) /tmp/${DISTPREFIX}
	if test -n "${COMPAT_SRCS}"; then \
		${INSTALL} -d /tmp/${DISTPREFIX}/compat; \
		cp ${COMPAT_SRCS} /tmp/${DISTPREFIX}/compat; \
		cp $$(${CC} ${CPPFLAGS} -MM ${COMPAT_SRCS} | \
			sed -e 's/^.*c //g' -e 's/\\//g' | \
			tr ' ' '\n' | \
			sort -u) /tmp/${DISTPREFIX}/compat; \
	fi;
	cd dhcpcd-hooks; ${MAKE} DISTPREFIX=${DISTPREFIX} $@

include Makefile.inc
