aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Paulo <rpaulo@FreeBSD.org>2014-07-12 00:54:34 +0000
committerRui Paulo <rpaulo@FreeBSD.org>2014-07-12 00:54:34 +0000
commitff0f36e77354b1b9f782118893e07b396b5e2f1d (patch)
treeea987a116b68a0c94b7ee9c1ad2cd7309ae320db
parent963ae465d5039f71a7a494d7ca0f789bd7a16971 (diff)
downloadsrc-ff0f36e77354b1b9f782118893e07b396b5e2f1d.tar.gz
src-ff0f36e77354b1b9f782118893e07b396b5e2f1d.zip
Automatically build and link DTrace USDT probes.
This completely replaces bsd.dtrace.mk which never worked reliably. MFC after: 3 weeks
Notes
Notes: svn path=/head/; revision=268541
-rw-r--r--share/mk/bsd.dep.mk24
-rw-r--r--share/mk/bsd.dtrace.mk60
2 files changed, 19 insertions, 65 deletions
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index dea59e6d9d9a..59cd2618e6cd 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -121,12 +121,26 @@ ${_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
+.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}
+${_D}.h: ${_DSRC}
+ ${DTRACE} -xnolibs -h -s ${.ALLSRC}
+SRCS:= ${SRCS:S/${_DSRC}/${_D}.h/}
+${_D}.o: ${_D}.h ${_DSRC} ${OBJS} ${SOBJS}
+ ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${_DSRC} \
+ ${OBJS:S/${_D}.o//} ${SOBJS:S/${_D}.o//}
+CLEANFILES+= ${_D}.h ${_D}.o
+.if defined(PROG)
+OBJS+= ${_D:R}.o
+.else
+SOBJS+= ${_D:R}.o
+.endif
.endfor
.endfor
.endif
diff --git a/share/mk/bsd.dtrace.mk b/share/mk/bsd.dtrace.mk
deleted file mode 100644
index 518de30ff339..000000000000
--- 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