summaryrefslogtreecommitdiffstats
path: root/customdhcpcd/src/mk
diff options
context:
space:
mode:
Diffstat (limited to 'customdhcpcd/src/mk')
-rw-r--r--customdhcpcd/src/mk/cc.mk23
-rw-r--r--customdhcpcd/src/mk/depend.mk11
-rw-r--r--customdhcpcd/src/mk/dist.mk11
-rw-r--r--customdhcpcd/src/mk/man.mk14
-rw-r--r--customdhcpcd/src/mk/os.mk77
-rw-r--r--customdhcpcd/src/mk/prog.mk34
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}