Makefile.kmk revision 57a7aeb014cdd1900c8bfecb0f9dcc7b96a61cc9
# $Id$
## @file
# Sub-makefile for VBoxDTrace.
#
# Contributed by: bird
#
#
# Copyright (C) 2012-2015 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the Common
# Development and Distribution License Version 1.0 (CDDL) only, as it
# comes in the "COPYING.CDDL" file of the VirtualBox OSE distribution.
# VirtualBox OSE is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY of any kind.
#
SUB_DEPTH = ../../../../
include $(KBUILD_PATH)/subheader.kmk
#
# The generic wrapper that selects native or extpack dtrace cmd and adds our
# library path to the command line.
#
# Note! This is not installed as part of the extension pack, but always shipped
# with the base VBox installation.
#
PROGRAMS += VBoxDTrace
VBoxDTrace_TEMPLATE := VBOXR3EXE
VBoxDTrace_SOURCES := VBoxDTraceWrapper.cpp
VBoxDTrace_LIBS = $(LIB_RUNTIME)
#
# Install the description.
#
INSTALLS += VBoxDTraceIns
VBoxDTraceIns_TEMPLATE = VBoxInsExtPackDTrace
VBoxDTraceIns_SOURCES = \
$(VBoxDTraceIns_0_OUTDIR)/ExtPack.xml \
COPYING=>ExtPack-SourceCodeLicense.txt
$(call VBOX_EDIT_VERSION_RULE_FN,VBoxDTraceIns,ExtPack.xml)
#
# The ring-3 VBoxDTrace command implementation (library).
#
DLLS += VBoxDTraceCmd
VBoxDTraceCmd_TEMPLATE = VBoxR3ExtPackDTrace
VBoxDTraceCmd_DEFS = RTMEM_WRAP_TO_EF_APIS
#VBoxDTraceCmd_DEFS += YYDEBUG
VBoxDTraceCmd_SDKS = VBOX_ZLIB
ifn1of ($(KBUILD_TARGET), win)
VBoxDTraceCmd_CFLAGS = -Wno-format -Wno-overlength-strings -Wno-sign-compare -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-shadow
endif
VBoxDTraceCmd_INCS = \
include \
$(VBOXDT_PATH_UTS)/common \
$(VBOXDT_PATH_LIBCTF)/common \
$(VBOXDT_PATH_LIBDTRACE)/common \
$(VBOXDT_PATH_CMN_CTF)
VBoxDTraceCmd_SOURCES = \
$(VBOXDT_PATH_CMD)/dtrace/dtrace.c \
\
$(VBOXDT_PATH_LIBDTRACE)/common/dt_as.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_aggregate.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_buf.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_cc.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_cg.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_consume.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_decl.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_dis.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_dof.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_error.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_handle.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_ident.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_inttab.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_list.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_map.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_module.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_program.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_open.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_options.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_parser.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_pcb.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_pragma.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_printf.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_proc.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_provider.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_regset.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_string.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_strtab.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_subr.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_work.c \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_xlator.c \
\
$(VBoxDTraceCmd_0_OUTDIR)/dt_errtags.c \
$(VBoxDTraceCmd_0_OUTDIR)/dt_names.c \
\
$(VBOXDT_PATH_CMN_CTF)/ctf_create.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_error.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_decl.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_hash.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_labels.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_lookup.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_open.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_types.c \
$(VBOXDT_PATH_CMN_CTF)/ctf_util.c \
\
$(VBOXDT_PATH_LIBCTF)/common/ctf_subr.c \
$(VBOXDT_PATH_LIBCTF)/common/ctf_lib.c
if 1
USES += yacc
VBoxDTraceCmd_USES += yacc
VBoxDTraceCmd_YACCTOOL = BISON
VBoxDTraceCmd_YACCFLAGS = -d -y
VBoxDTraceCmd_SOURCES += \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_grammar.y
VBoxDTraceCmd_INCS += $(VBoxDTraceCmd_0_OUTDIR)/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common
else
# TODO: generate these.
endif
if 1
USES += lex
VBoxDTraceCmd_USES += lex
VBoxDTraceCmd_LEXTOOL = FLEX
VBoxDTraceCmd_LEXFLAGS = -l -B #-d -T
VBoxDTraceCmd_DEFS += USING_FLEX
VBoxDTraceCmd_SOURCES += \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_lex.l
else
# TODO: generate this.
endif
VBoxDTraceCmd_LIBS = \
$(LIB_RUNTIME)
# Generate sources
$$(VBoxDTraceCmd_0_OUTDIR)/dt_errtags.c: \
$(VBOXDT_PATH_LIBDTRACE)/common/dt_errtags.h \
$(VBOXDT_PATH_LIBDTRACE)/common/mkerrtags.sed \
| $$(dir $$@)
$(MSG_GENERATE,VBoxDTraceCmd,$@,$<)
$(SED) -n -f $(VBOXDT_PATH_LIBDTRACE)/common/mkerrtags.sed --output $@ $<
$$(VBoxDTraceCmd_0_OUTDIR)/dt_names.c: \
$(VBOXDT_PATH_UTS)/common/sys/dtrace.h \
$(VBOXDT_PATH_LIBDTRACE)/common/mknames.sed \
| $$(dir $$@)
$(MSG_GENERATE,VBoxDTraceCmd,$@,$<)
$(SED) -n -f $(VBOXDT_PATH_LIBDTRACE)/common/mknames.sed --output $@ $<
#
# Source not used or wanted: \
# $(VBOXDT_PATH_LIBDTRACE)/common/dt_link.c
# $(VBOXDT_PATH_LIBDTRACE)/common/dt_pid.c
#
#
# The ring-0 part of VBoxDTrace.
#
SYSMODS += VBoxDTraceR0
VBoxDTraceR0_TEMPLATE = VBoxR0ExtPackDTrace
VBoxDTraceR0_DEFS = IN_VBOXDTRACE_R0 IN_RT_R0
ifeq ($(VBOX_LDR_FMT),elf)
VBoxDTraceR0_LDFLAGS = -e ModuleInit
endif
VBoxDTraceR0_INCS = \
include \
$(VBOXDT_PATH_UTS)/common
VBoxDTraceR0_SOURCES = \
VBoxDTraceR0.cpp \
VBoxDTraceR0A.asm \
$(VBOXDT_PATH_UTS)/common/dtrace/dtrace.c
VBoxDTraceR0_LIBS = \
$(PATH_STAGE_LIB)/RuntimeR0$(VBOX_SUFF_LIB)
ifneq ($(filter pe lx,$(VBOX_LDR_FMT)),)
VBoxDTraceR0_LIBS += \
$(PATH_STAGE_LIB)/SUPR0$(VBOX_SUFF_LIB)
endif
include $(FILE_KBUILD_SUB_FOOTER)