@@ -33,6 +33,10 @@ RUNNER_SRC=test/runner-unix.c
3333RUNNER_CFLAGS =$(CFLAGS ) -I$(SRCDIR ) /test
3434RUNNER_LDFLAGS =-L"$(CURDIR ) " -luv -Xlinker -rpath -Xlinker "$(CURDIR ) "
3535
36+ HAVE_DTRACE =
37+ DTRACE_OBJS =
38+ DTRACE_HEADER =
39+
3640OBJS += src/unix/async.o
3741OBJS += src/unix/core.o
3842OBJS += src/unix/dl.o
@@ -58,11 +62,14 @@ OBJS += src/inet.o
5862OBJS += src/version.o
5963
6064ifeq (sunos,$(PLATFORM ) )
65+ HAVE_DTRACE =1
6166CPPFLAGS += -D__EXTENSIONS__ -D_XOPEN_SOURCE=500
6267LDFLAGS+ =-lkstat -lnsl -lsendfile -lsocket
6368# Library dependencies are not transitive.
6469RUNNER_LDFLAGS += $(LDFLAGS )
6570OBJS += src/unix/sunos.o
71+ OBJS += src/unix/dtrace.o
72+ DTRACE_OBJS += src/unix/core.o
6673endif
6774
6875ifeq (aix,$(PLATFORM ) )
@@ -72,6 +79,13 @@ OBJS += src/unix/aix.o
7279endif
7380
7481ifeq (darwin,$(PLATFORM ) )
82+ HAVE_DTRACE =1
83+ # dtrace(1) probes contain dollar signs on OS X. Mute the warnings they
84+ # generate but only when CC=clang, -Wno-dollar-in-identifier-extension
85+ # is a clang extension.
86+ ifeq (__clang__,$(shell sh -c "$(CC ) -dM -E - </dev/null | grep -ow __clang__") )
87+ CFLAGS += -Wno-dollar-in-identifier-extension
88+ endif
7589CPPFLAGS += -D_DARWIN_USE_64_BIT_INODE=1
7690LDFLAGS += -framework Foundation \
7791 -framework CoreServices \
@@ -96,6 +110,7 @@ OBJS += src/unix/linux-core.o \
96110endif
97111
98112ifeq (freebsd,$(PLATFORM ) )
113+ HAVE_DTRACE =1
99114LDFLAGS+ =-lkvm
100115OBJS += src/unix/freebsd.o
101116OBJS += src/unix/kqueue.o
@@ -132,6 +147,12 @@ else
132147RUNNER_LDFLAGS += -pthread
133148endif
134149
150+ ifeq ($(HAVE_DTRACE ) , 1)
151+ DTRACE_HEADER = src/unix/uv-dtrace.h
152+ CPPFLAGS += -Isrc/unix
153+ CFLAGS += -DHAVE_DTRACE
154+ endif
155+
135156libuv.a : $(OBJS )
136157 $(AR ) rcs $@ $^
137158
@@ -151,7 +172,7 @@ src/.buildstamp src/unix/.buildstamp test/.buildstamp:
151172 mkdir -p $(@D )
152173 touch $@
153174
154- src/unix/% .o src/unix/% .pic.o : src/unix/% .c include/uv.h include/uv-private/uv-unix.h src/unix/internal.h src/unix/.buildstamp
175+ src/unix/% .o src/unix/% .pic.o : src/unix/% .c include/uv.h include/uv-private/uv-unix.h src/unix/internal.h src/unix/.buildstamp $( DTRACE_HEADER )
155176 $(CC ) $(CSTDFLAG ) $(CPPFLAGS ) $(CFLAGS ) -c $< -o $@
156177
157178src/% .o src/% .pic.o : src/% .c include/uv.h include/uv-private/uv-unix.h src/.buildstamp
@@ -161,7 +182,16 @@ test/%.o: test/%.c include/uv.h test/.buildstamp
161182 $(CC ) $(CSTDFLAG ) $(CPPFLAGS ) $(CFLAGS ) -c $< -o $@
162183
163184clean-platform :
164- $(RM ) test/run-{tests,benchmarks}.dSYM $(OBJS ) $(OBJS:%.o=%.pic.o )
185+ $(RM ) test/run-{tests,benchmarks}.dSYM $(OBJS ) $(OBJS:%.o=%.pic.o ) src/unix/uv-dtrace.h
165186
166187% .pic.o % .o : % .m
167188 $(OBJC ) $(CPPFLAGS ) $(CFLAGS ) -c $^ -o $@
189+
190+ src/unix/uv-dtrace.h : src/unix/uv-dtrace.d
191+ dtrace -h -xnolibs -s $< -o $@
192+
193+ src/unix/dtrace.o : src/unix/uv-dtrace.d $(DTRACE_OBJS )
194+ dtrace -G -s $^ -o $@
195+
196+ src/unix/dtrace.pic.o : src/unix/uv-dtrace.d $(DTRACE_OBJS:%.o=%.pic.o )
197+ dtrace -G -s $^ -o $@
0 commit comments