diff options
Diffstat (limited to 'customdhcpcd/src/mk')
| -rw-r--r-- | customdhcpcd/src/mk/cc.mk | 23 | ||||
| -rw-r--r-- | customdhcpcd/src/mk/depend.mk | 11 | ||||
| -rw-r--r-- | customdhcpcd/src/mk/dist.mk | 11 | ||||
| -rw-r--r-- | customdhcpcd/src/mk/man.mk | 14 | ||||
| -rw-r--r-- | customdhcpcd/src/mk/os.mk | 77 | ||||
| -rw-r--r-- | customdhcpcd/src/mk/prog.mk | 34 |
6 files changed, 170 insertions, 0 deletions
diff --git a/customdhcpcd/src/mk/cc.mk b/customdhcpcd/src/mk/cc.mk new file mode 100644 index 0000000..d52597b --- /dev/null +++ b/customdhcpcd/src/mk/cc.mk @@ -0,0 +1,23 @@ +# Copyright 2008 Roy Marples <roy@marples.name> + +# Setup some good default CFLAGS +CFLAGS?= -O2 + +# Default to using the C99 standard +CSTD?= c99 +_CSTD_SH= if test -n "${CSTD}"; then echo "-std=${CSTD}"; else echo ""; fi +_CSTD!= ${_CSTD_SH} +CFLAGS+= ${_CSTD}$(shell ${_CSTD_SH}) + +# Try and use some good cc flags +_CC_FLAGS= -pedantic -Wall -Wunused -Wimplicit -Wshadow -Wformat=2 \ + -Wmissing-declarations -Wno-missing-prototypes -Wwrite-strings \ + -Wbad-function-cast -Wnested-externs -Wcomment -Winline \ + -Wchar-subscripts -Wcast-align -Wno-format-nonliteral \ + -Wdeclaration-after-statement -Wsequence-point -Wextra +_CC_FLAGS_SH= for f in ${_CC_FLAGS}; do \ + if ${CC} $$f -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ + then printf "%s" "$$f "; fi \ + done +_CC_FLAGS!= ${_CC_FLAGS_SH} +CFLAGS+= ${_CC_FLAGS}$(shell ${CC_FLAGS_SH}) diff --git a/customdhcpcd/src/mk/depend.mk b/customdhcpcd/src/mk/depend.mk new file mode 100644 index 0000000..a4d717a --- /dev/null +++ b/customdhcpcd/src/mk/depend.mk @@ -0,0 +1,11 @@ +# This only works for make implementations that always include a .depend if +# it exists. Only GNU make does not do this. + +# Copyright 2008 Roy Marples <roy@marples.name> + +CLEANFILES+= .depend + +.depend: ${SRCS} + ${CC} ${CFLAGS} -MM ${SRCS} > .depend + +depend: .depend diff --git a/customdhcpcd/src/mk/dist.mk b/customdhcpcd/src/mk/dist.mk new file mode 100644 index 0000000..1d3669d --- /dev/null +++ b/customdhcpcd/src/mk/dist.mk @@ -0,0 +1,11 @@ +# rules to make a distribution tarball from a git repo +# Copyright 2008 Roy Marples <roy@marples.name> + +GITREF?= HEAD +DISTPREFIX?= ${PROG}-${VERSION} +DISTFILE?= ${DISTPREFIX}.tar.bz2 + +CLEANFILES+= ${DISTFILE} + +dist: + git archive --prefix=${DISTPREFIX}/ ${GITREF} | bzip2 > ${DISTFILE} diff --git a/customdhcpcd/src/mk/man.mk b/customdhcpcd/src/mk/man.mk new file mode 100644 index 0000000..5d9bf26 --- /dev/null +++ b/customdhcpcd/src/mk/man.mk @@ -0,0 +1,14 @@ +# rules to install manpages +# Copyright 2008 Roy Marples <roy@marples.name> + +MANPREFIX?= /usr/share +MANDIR?= ${MANPREFIX}/man/man +MANMODE?= 0444 +MINSTALL?= ${INSTALL} -m ${MANMODE} + +man: ${MAN} + +# We cheat as all our pages go into section 8 +maninstall: man + ${INSTALL} -d ${DESTDIR}${MANDIR}8 + for man in ${MAN}; do ${MINSTALL} $$man ${DESTDIR}${MANDIR}8; done diff --git a/customdhcpcd/src/mk/os.mk b/customdhcpcd/src/mk/os.mk new file mode 100644 index 0000000..af173fc --- /dev/null +++ b/customdhcpcd/src/mk/os.mk @@ -0,0 +1,77 @@ +# Setup OS specific variables +# Copyright 2008 Roy Marples <roy@marples.name> + +# Work out if we need -lresolv or not +_LIBRESOLV_SH= printf '\#include <netinet/in.h>\n\#include <resolv.h>\nint main (void) { return (res_init ()); }\n' > .res_init.c; \ + if ${CC} .res_init.c -o .res_init >/dev/null 2>&1; then \ + echo ""; \ + elif ${CC} .res_init.c -lresolv -o .res_init >/dev/null 2>&1; then \ + echo "-lresolv"; \ + else \ + echo "Cannot work out how to get res_init to link" >&2; \ + rm -f .res_init.c .res_init; \ + exit 1; \ + fi; \ + rm -f .res_init.c .res_init +_LIBRESOLV!= ${_LIBRESOLV_SH} +LIBRESOLV= ${_LIBRESOLV}$(shell ${_LIBRESOLV_SH}) + +# Work out if we need -lrt or not +_LIBRT_SH= printf '\#include <time.h>\n\#include <unistd.h>\n\nint main (void) { struct timespec ts;\n\#if defined(_POSIX_MONOTONIC_CLOCK) && defined(CLOCK_MONOTONIC)\nreturn (clock_gettime (CLOCK_MONOTONIC, &ts));\n\#else\nreturn -1;\n\#endif\n}\n' > .clock_gettime.c; \ + if ${CC} .clock_gettime.c -o .clock_gettime >/dev/null 2>&1; then \ + echo ""; \ + elif ${CC} .clock_gettime.c -lrt -o .clock_gettime >/dev/null 2>&1; then \ + echo "-lrt"; \ + else \ + echo ""; \ + fi; \ + rm -f .clock_gettime.c .clock_gettime +_LIBRT!= ${_LIBRT_SH} +LIBRT= ${_LIBRT}$(shell ${_LIBRT_SH}) + +# Work out if our fork() works or not +_HAVE_FORK_SH= if test "${HAVE_FORK}" = "yes"; then \ + echo ""; \ + elif test -n "${HAVE_FORK}"; then \ + echo "-DTHERE_IS_NO_FORK"; \ + else \ + printf '\#include <stdlib.h>\n\#include <unistd.h>\nint main (void) { pid_t pid = fork(); if (pid == -1) exit (-1); exit (0); }\n' > .fork.c; \ + ${CC} .fork.c -o .fork >/dev/null 2>&1; \ + if ./.fork; then \ + echo ""; \ + else \ + echo "-DTHERE_IS_NO_FORK"; \ + fi; \ + rm -f .fork.c .fork; \ + fi; +_HAVE_FORK!= ${_HAVE_FORK_SH} +FORK= ${_HAVE_FORK}$(shell ${_HAVE_FORK_SH}) + +# info dir defaults to /var/lib/dhcpcd on Linux and /var/db elsewhere +_INFODIR_SH= if test -n "${INFODIR}"; then \ + echo "${INFODIR}"; \ + else \ + case `uname -s` in \ + Linux) echo "/var/lib/dhcpcd";; \ + *) echo "/var/db";; \ + esac \ + fi +_INFODIR!= ${_INFODIR_SH} +INFOD?= ${_INFODIR}$(shell ${_INFODIR_SH}) + +# Work out how to restart services +_RC_SH= if test -n "${HAVE_INIT}"; then \ + test "${HAVE_INIT}" = "no" || echo "-DENABLE_${HAVE_INIT}"; \ + elif test -x /sbin/runscript; then echo "-DENABLE_OPENRC"; \ + elif test -x /sbin/service; then echo "-DENABLE_SERVICE"; \ + elif test -x /etc/rc.d/rc.S -a -x /etc/rc.d/rc.M; then echo "-DENABLE_SLACKRC"; \ + elif test -d /etc/rc.d; then echo "-DENABLE_BSDRC"; \ + elif test -d /etc/init.d; then echo "-DENABLE_SYSV"; \ + fi +_RC!= ${_RC_SH} +RC= ${_RC}$(shell ${_RC_SH}) + +# glibc requires _BSD_SOURCE and _XOPEN_SOURCE +_DEF_SH= case `uname -s` in Linux) echo "-D_BSD_SOURCE -D_XOPEN_SOURCE=600";; *) echo;; esac +_DEF!= ${_DEF_SH} +CFLAGS+= ${_DEF}$(shell ${_DEF_SH}) diff --git a/customdhcpcd/src/mk/prog.mk b/customdhcpcd/src/mk/prog.mk new file mode 100644 index 0000000..6f2560c --- /dev/null +++ b/customdhcpcd/src/mk/prog.mk @@ -0,0 +1,34 @@ +# rules to build a program +# based on FreeBSD's bsd.prog.mk + +# Copyright 2008 Roy Marples <roy@marples.name> + +BINDIR?= ${PREFIX}/usr/bin +BINMODE?= 0755 +OBJS+= ${SRCS:.c=.o} + +INSTALL?= install + +all: ${PROG} ${MAN} + +${PROG}: ${SCRIPTS} ${OBJS} + ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD} + +_proginstall: ${PROG} + ${INSTALL} -d ${DESTDIR}${BINDIR} + ${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR} + +include ${MK}/depend.mk +include ${MK}/man.mk +include ${MK}/dist.mk + +install: _proginstall maninstall + +clean: + rm -f ${OBJS} ${PROG} ${CLEANFILES} + +LINTFLAGS?= -hx +LINTFLAGS+= -X 159,247,352 + +lint: ${SRCS:.c=.c} + ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} $^ ${.ALLSRC} |
