# Oracle Linux DTrace.
# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
# Licensed under the Universal Permissive License v 1.0 as shown at
# http://oss.oracle.com/licenses/upl.

cmds: $(objdir)/run-dtrace

CMDS += dtrace bpf_dump
dtrace_CPPFLAGS = -Ilibdtrace -Ilibproc -DDTRACE_LIBDIR="\"$(LIBDIR)/dtrace\""
dtrace_TARGET = dtrace
dtrace_DIR := $(current-dir)
dtrace_SOURCES = dtrace.c
dtrace_DEPS = libdtrace.so libport.a
dtrace_SRCDEPS := $(objdir)/dt_git_version.h
ifdef HAVE_LIBCTF
dtrace_LIBS = -ldtrace -lctf -lport -lelf
else
dtrace_LIBS = -ldtrace -ldtrace-ctf -lport -lelf
endif

bpf_dump_CPPFLAGS =
bpf_dump_TARGET = bpf_dump
bpf_dump_DIR := $(current-dir)
bpf_dump_SOURCES = bpf_dump.c
bpf_dump_DEPS =
bpf_dump_LIBS = -lelf

$(objdir)/run-dtrace: $(DTRACE)
	printf > $@ "\
#!/bin/bash\n\
# run-dtrace -- A wrapper to run DTrace out of the build tree, or from /usr/sbin\n\
#               if this is a check-installed run\n\
\n\
if [[ -z \$$_DTRACE_CHECK_INSTALLED ]]; then\n\
    export DTRACE_OPT_SYSLIBDIR=$(objdir)/dlibs\n\
    export LD_LIBRARY_PATH=$(objdir)\n\
    dtrace_cmd=$(objdir)/dtrace\n\
else\n\
    dtrace_cmd=$(SBINDIR)/dtrace\n\
fi\n\
\n\
if [[ -n \$$DTRACE_GDB ]]; then\n\
    exec gdb --args \$$dtrace_cmd \"\$$@\"\n\
elif [[ -n \$$DTRACE_VALGRIND ]]; then\n\
    exec valgrind \$$dtrace_cmd \"\$$@\"\n\
else\n\
    exec \$$dtrace_cmd \"\$$@\"\n\
fi\n"
	chmod a+x $(objdir)/run-dtrace


install::
	mkdir -p $(INSTBINDIR) $(INSTSBINDIR) $(INSTMANDIR)/man8 \
	      $(INSTLIBDIR)/dtrace
	$(call describe-install-target,$(INSTSBINDIR),dtrace)
	install -m 755 $(objdir)/dtrace $(INSTSBINDIR)
	$(call describe-install-target,$(INSTMANDIR),dtrace.8)
	install -m 644 $(dtrace_DIR)/dtrace.8 $(INSTMANDIR)/man8
