#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
include $(SRC)/Makefile.master
# The Java DTrace API package
PKGPATH=org/opensolaris/os/dtrace
PKGNAME=org.opensolaris.os.dtrace
# The Java DTrace API directories
APIDIR=$(SRC)/lib/libdtrace_jni/java
CLASSES=$(APIDIR)/classes
JNI=$(APIDIR)/native
JARS=$(APIDIR)/lib
DOCS=$(APIDIR)/docs
DOCAPI=$(DOCS)/api
DOCEXAMPLES=$(DOCS)/examples
DOCHTML=$(DOCS)/html
DOCIMAGES=$(DOCS)/images
MANIFEST=$(APIDIR)/manifest
APIJAVASRC=$(APIDIR)/src
# Java DTrace API jar file, its ultimate destination, and packaging details
APIJAR=dtrace.jar
JARDESTDIR=$(ROOT)/usr/share/lib/java
INSJARS=$(JARDESTDIR)/$(APIJAR)
# javadoc
DOCDESTDIR=$(ROOT)/usr/share/lib/java/javadoc/dtrace
DOCAPIDESTDIR=$(DOCDESTDIR)/api
DOCEXAMPLESDESTDIR=$(DOCDESTDIR)/examples
DOCHTMLDESTDIR=$(DOCDESTDIR)/html
DOCIMAGESDESTDIR=$(DOCDESTDIR)/images
$(JARDESTDIR)/%: $(JARS)/%
$(INS.file)
$(DOCEXAMPLESDESTDIR)/%: $(DOCEXAMPLES)/%
$(INS.file)
$(DOCHTMLDESTDIR)/%: $(DOCHTML)/%
$(INS.file)
$(DOCIMAGESDESTDIR)/%: $(DOCIMAGES)/%
$(INS.file)
# Manifest files
APIMANI= $(MANIFEST)/dtrace.mf
MANIFESTS= $(APIMANI)
# Controlled CLASSPATH for making
APICLASSPATH=$(CLASSES):$(APIJAVASRC)
# javac flags
JFLAGS= -g -d $(CLASSES) -sourcepath $(APICLASSPATH)
JFLAGS += -source 1.5 -target 1.6
JFLAGS += -Xlint:all,-rawtypes,-options
# The default make rule for Java files
COMPILE.java=$(JAVAC) $(JFLAGS)
$(CLASSES)/$(PKGPATH)/%.class: $(APIJAVASRC)/$(PKGPATH)/%.java
$(COMPILE.java) $<
# javah generated headers
APIHDR= LocalConsumer.h
JNIHDRS=$(JNI)/$(APIHDR)
# API classes with native methods
JNI_CLASSNAMES=\
LocalConsumer
JNI_CLASSES=${JNI_CLASSNAMES:%=%.class}
DTRACE_JNI_CLASSES=${JNI_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
JNI_FULL_CLASSNAMES=${JNI_CLASSNAMES:%=$(PKGNAME).%}
# All API classes
API_CLASSNAMES=\
AbstractAggregationValue \
Aggregate \
AggregateSpec \
Aggregation \
AggregationRecord \
AggregationValue \
AvgValue \
Consumer \
ConsumerAdapter \
ConsumerEvent \
ConsumerException \
ConsumerListener \
CountValue \
DTraceException \
DataEvent \
Distribution \
Drop \
DropEvent \
Error \
ErrorEvent \
ExceptionHandler \
ExitRecord \
Flow \
InterfaceAttributes \
KernelStackRecord \
KernelSymbolRecord \
LinearDistribution \
LocalConsumer \
LogDistribution \
LogLinearDistribution \
MaxValue \
MinValue \
NativeException \
Option \
PrintaRecord \
PrintfRecord \
Probe \
ProbeData \
ProbeDescription \
ProbeInfo \
ProcessEvent \
ProcessState \
Program \
ProgramInfo \
Record \
ResourceLimitException \
ScalarRecord \
StackFrame \
StackValueRecord \
StddevValue \
SumValue \
SymbolValueRecord \
Tuple \
UserStackRecord \
UserSymbolRecord \
Utility \
ValueRecord
API_CLASSES=${API_CLASSNAMES:%=%.class}
DTRACE_API_CLASSES=${API_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
all: $(CLASSES) $(DTRACE_API_CLASSES) $(JNI)/$(APIHDR)
clean:
-$(RM) $(CLASSES)/$(PKGPATH)/*.class
-$(RM) $(JNI)/*.h
-$(RM) -r $(DOCAPI)
clobber: clean
-$(RM) $(JARS)/*.jar
# Make the class dir, if it doesn't exist
$(CLASSES):
-@mkdir -p $@
# Make the directory for javah-generated headers, if it doesn't exist
$(JNI):
-@mkdir -p $@
$(JNI)/$(APIHDR): $(JNI) $(DTRACE_JNI_CLASSES)
$(JAVAH) -o $@ -classpath $(CLASSES) $(JNI_FULL_CLASSNAMES)
-@touch $@
# Rule for installing API javadoc.
$(DOCAPIDESTDIR)/index.html: $(DTRACE_API_CLASSES)
-@mkdir -p $(DOCAPIDESTDIR)
-$(RM) -r $(DOCAPIDESTDIR)/*
cd $(APIJAVASRC); umask 022; \
$(JAVADOC) -protected -use -notimestamp \
-classpath $(APICLASSPATH) -d $(DOCAPIDESTDIR) \
$(PKGNAME)
$(CLASSES)/$(PKGPATH):
$(INS.dir)
$(JARS)/$(APIJAR): $(DTRACE_API_CLASSES) $(APIMANI)
-@mkdir -p $(JARS)
$(JAR) cfm $@ $(APIMANI) -C $(CLASSES) .
$(JARDESTDIR):
$(INS.dir)
$(DOCDESTDIR):
$(INS.dir)
$(DOCAPIDESTDIR):
$(INS.dir)
$(DOCEXAMPLESDESTDIR):
$(INS.dir)
$(DOCHTMLDESTDIR):
$(INS.dir)
$(DOCIMAGESDESTDIR):
$(INS.dir)
install: all $(JARDESTDIR) $(INSJARS) $(DOCDESTDIR) \
$(DOCAPIDESTDIR) \
$(DOCAPIDESTDIR)/index.html \
$(DOCEXAMPLESDESTDIR) \
$(DOCEXAMPLESDESTDIR)/TestAPI.java \
$(DOCEXAMPLESDESTDIR)/TestAPI2.java \
$(DOCEXAMPLESDESTDIR)/TestTarget.java \
$(DOCEXAMPLESDESTDIR)/hello.d \
$(DOCEXAMPLESDESTDIR)/intrstat.d \
$(DOCEXAMPLESDESTDIR)/syscall.d \
$(DOCEXAMPLESDESTDIR)/target.d \
$(DOCHTMLDESTDIR) \
$(DOCHTMLDESTDIR)/JavaDTraceAPI.html \
$(DOCHTMLDESTDIR)/fast.html \
$(DOCIMAGESDESTDIR) \
$(DOCIMAGESDESTDIR)/JavaDTraceAPI.gif
# empty targets for top-level building compatability
install_h lint:
# create API javadoc
doc:
-@mkdir -p $(DOCAPI)
cd $(APIJAVASRC); umask 022; \
$(JAVADOC) -protected -use -notimestamp \
-classpath $(APICLASSPATH) -d $(DOCAPI) \
$(PKGNAME)