diff options
author | rpaulo <rpaulo@FreeBSD.org> | 2014-08-13 16:11:57 +0000 |
---|---|---|
committer | rpaulo <rpaulo@FreeBSD.org> | 2014-08-13 16:11:57 +0000 |
commit | caf76896150c71bd13a04df813a123d4a5213243 (patch) | |
tree | 028676c296db6cce5c3cac50b8b7289b492579cd | |
parent | 809079ca2d0f37321b8134409f4286d4c505caac (diff) | |
download | FreeBSD-src-caf76896150c71bd13a04df813a123d4a5213243.zip FreeBSD-src-caf76896150c71bd13a04df813a123d4a5213243.tar.gz |
MFC r268300 r268541 r268544 r268565 r269775 r269838 r269839 r269840
r269842 r269844 r269899:
BSD make support for generating and compiling USDT DTrace probes.
-rw-r--r-- | share/mk/Makefile | 1 | ||||
-rw-r--r-- | share/mk/bsd.dep.mk | 34 | ||||
-rw-r--r-- | share/mk/bsd.dtrace.mk | 60 | ||||
-rw-r--r-- | share/mk/bsd.lib.mk | 3 | ||||
-rw-r--r-- | share/mk/bsd.prog.mk | 3 |
5 files changed, 32 insertions, 69 deletions
diff --git a/share/mk/Makefile b/share/mk/Makefile index 7d70df7..75b45e8 100644 --- a/share/mk/Makefile +++ b/share/mk/Makefile @@ -11,7 +11,6 @@ FILES= \ bsd.crunchgen.mk \ bsd.dep.mk \ bsd.doc.mk \ - bsd.dtrace.mk \ bsd.endian.mk \ bsd.files.mk \ bsd.incs.mk \ diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk index dea59e6..c76258e 100644 --- a/share/mk/bsd.dep.mk +++ b/share/mk/bsd.dep.mk @@ -73,7 +73,7 @@ tags: ${SRCS} CLEANFILES?= .if !exists(${.OBJDIR}/${DEPENDFILE}) -.for _S in ${SRCS:N*.[hly]} +.for _S in ${SRCS:N*.[dhly]} ${_S:R}.o: ${_S} .endfor .endif @@ -121,14 +121,36 @@ ${_YC:R}.o: ${_YC} .endfor # DTrace probe definitions +# libelf is currently needed for drti.o +.if ${SRCS:M*.d} +LDFLAGS+= -lelf +LDADD+= ${LIBELF} +CFLAGS+= -D_DTRACE_VERSION=1 -I${.OBJDIR} +.endif .for _DSRC in ${SRCS:M*.d:N*/*} -.for _DH in ${_DSRC:R}.h -${_DH}: ${_DSRC} - ${DTRACE} -xnolibs -h -s ${.ALLSRC} -SRCS:= ${SRCS:S/${_DSRC}/${_DH}/} -CLEANFILES+= ${_DH} +.for _D in ${_DSRC:R} +DHDRS+= ${_D}.h +${_D}.h: ${_DSRC} + ${DTRACE} -xnolibs -h -s ${.ALLSRC} +SRCS:= ${SRCS:S/${_DSRC}/${_D}.h/} +OBJS+= ${_D}.o +CLEANFILES+= ${_D}.h ${_D}.o +${_D}.o: ${_D}.h ${OBJS:S/${_D}.o//} + ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.CURDIR}/${_DSRC} \ + ${OBJS:S/${_D}.o//} +.if defined(LIB) +CLEANFILES+= ${_D}.So ${_D}.po +${_D}.So: ${_D}.h ${SOBJS:S/${_D}.So//} + ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.CURDIR}/${_DSRC} \ + ${SOBJS:S/${_D}.So//} +${_D}.po: ${_D}.h ${POBJS:S/${_D}.po//} + ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.CURDIR}/${_DSRC} \ + ${POBJS:S/${_D}.po//} +.endif .endfor .endfor +beforedepend: ${DHDRS} +beforebuild: ${DHDRS} .endif .if !target(depend) diff --git a/share/mk/bsd.dtrace.mk b/share/mk/bsd.dtrace.mk deleted file mode 100644 index 518de30f..0000000 --- a/share/mk/bsd.dtrace.mk +++ /dev/null @@ -1,60 +0,0 @@ -# $FreeBSD$ -# -# Copyright (c) 2010 The FreeBSD Foundation -# All rights reserved. -# -# This software was developed by Rui Paulo under sponsorship from the -# FreeBSD Foundation. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# The only variable that you should define on your Makefile is 'DTRACEOBJS'. -# You must include this file before bsd.lib.mk or bsd.prog.mk. -# - -.if defined(WITH_DTRACE) - -CFLAGS+=-DWITH_DTRACE -DTRACEHEADERS=${DTRACEOBJS:S/o$/h/} -DTRACESRCS=${DTRACEOBJS:S/o$/d/} -CLEANFILES+=${DTRACEOBJS} ${DTRACEHEADERS} - -DPADD+=${LIBELF} -LDADD+=-lelf - -.if defined(PROG) -_DTRACELINKING=${OBJS} -OBJS+=${DTRACEOBJS} -.else -_DTRACELINKING=${SOBJS} -SOBJS+=${DTRACEOBJS} -.endif - -${DTRACEOBJS}: - -beforedepend: - ${DTRACE} -C -h -s ${DTRACESRCS} -beforelinking: - ${DTRACE} -G -s ${DTRACESRCS} ${_DTRACELINKING:S/${DTRACEOBJS}//} - -.endif diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index bb3db64..f7025a8 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -117,7 +117,8 @@ PO_FLAG=-pg ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} -all: objwarn +all: beforebuild .WAIT +beforebuild: objwarn .if defined(PRIVATELIB) _LIBDIR:=${LIBPRIVATEDIR} diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk index 22ddfb5..159e879 100644 --- a/share/mk/bsd.prog.mk +++ b/share/mk/bsd.prog.mk @@ -146,7 +146,8 @@ MAN1= ${MAN} .endif .endif # defined(PROG) -all: objwarn ${PROG} ${SCRIPTS} +all: beforebuild .WAIT ${PROG} ${SCRIPTS} +beforebuild: objwarn .if ${MK_MAN} != "no" all: _manpages .endif |