| # rules to build a program |
| # based on FreeBSD's bsd.prog.mk |
| |
| # Copyright 2008 Roy Marples <roy@marples.name> |
| |
| include ${MK}/cc.mk |
| |
| OBJS+= ${SRCS:.c=.o} |
| |
| # If building for /, ensure we use the libc in / if different from |
| # the default one in /usr/lib |
| LINK_RPATH?= -Wl,-rpath |
| _RPATH_SH= if test "${PREFIX}" = "" -o "${PREIX}" = "/"; then \ |
| echo "${LINK_RPATH}=${PREFIX}/${LIBNAME}"; \ |
| else \ |
| echo ""; \ |
| fi |
| _RPATH!= ${_RPATH_SH} |
| LDFLAGS+= ${_RPATH}$(shell ${_RPATH_SH}) |
| |
| # If building for /, ensure we use the linker in /libexec if different from |
| # the default one in /usr/libexec |
| _DYNLINK_SH= if test "${PREFIX}" = "" -o "${PREFIX}" = "/" && test -e /libexec/ld.elf_so; then \ |
| echo "-Wl,-dynamic-linker=/libexec/ld.elf_so"; \ |
| else \ |
| echo ""; \ |
| fi |
| _DYNLINK!= ${_DYNLINK_SH} |
| LDFLAGS+= ${_DYNLINK}$(shell ${_DYNLINK_SH}) |
| |
| all: ${PROG} ${SCRIPTS} _man |
| |
| .c.o: |
| ${CC} ${CFLAGS} ${CPPFLAGS} -c $< -o $@ |
| |
| ${PROG}: ${OBJS} |
| ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD} |
| |
| # We could save about 600 bytes by building it like this |
| # instead of the more traditional method above |
| small: ${SRCS} |
| echo "" > _${PROG}.c |
| for src in ${SRCS}; do echo "#include \"$$src\"" >> _${PROG}.c; done |
| ${CC} ${CFLAGS} ${CPPFLAGS} -c _${PROG}.c -o _${PROG}.o |
| ${CC} ${LDFLAGS} -o ${PROG} _${PROG}.o ${LDADD} |
| |
| _proginstall: ${PROG} |
| ${INSTALL} -d ${DESTDIR}${BINDIR} |
| ${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR} |
| ${INSTALL} -d ${DESTDIR}${DBDIR} |
| |
| include ${MK}/depend.mk |
| include ${MK}/files.mk |
| include ${MK}/scripts.mk |
| include ${MK}/man.mk |
| include ${MK}/dist.mk |
| |
| install: _proginstall _scriptsinstall _filesinstall _maninstall |
| for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done |
| |
| clean: |
| rm -f ${OBJS} ${PROG} _${PROG}.c _${PROG}.o ${PROG}.core ${CLEANFILES} |
| |
| LINTFLAGS?= -hx |
| LINTFLAGS+= -X 159,247,352 |
| |
| lint: ${SRCS:.c=.c} |
| ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} $^ ${.ALLSRC} |