Makefile revision 4d0eb50e691de4c20b1dd9976ad6839fede8a42d
394N/A#
394N/A# CDDL HEADER START
394N/A#
394N/A# The contents of this file are subject to the terms of the
394N/A# Common Development and Distribution License (the "License").
394N/A# You may not use this file except in compliance with the License.
394N/A#
394N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
394N/A# or http://www.opensolaris.org/os/licensing.
394N/A# See the License for the specific language governing permissions
394N/A# and limitations under the License.
394N/A#
394N/A# When distributing Covered Code, include this CDDL HEADER in each
394N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
394N/A# If applicable, add the following below this CDDL HEADER, with the
394N/A# fields enclosed by brackets "[]" replaced with your own identifying
394N/A# information: Portions Copyright [yyyy] [name of copyright owner]
394N/A#
394N/A# CDDL HEADER END
394N/A#
1716N/A
394N/A#
394N/A# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
394N/A# Use is subject to license terms.
394N/A#
394N/A
394N/Ainclude $(SRC)/Makefile.master
394N/A
618N/A# The Java DTrace API package
394N/A
394N/APKGPATH=org/opensolaris/os/dtrace
844N/APKGNAME=org.opensolaris.os.dtrace
844N/A
618N/A# The Java DTrace API directories
1258N/A
394N/AAPIDIR=$(SRC)/lib/libdtrace_jni/java
394N/ACLASSES=$(APIDIR)/classes
394N/AJNI=$(APIDIR)/native
394N/AJARS=$(APIDIR)/lib
394N/ADOCS=$(APIDIR)/docs
1938N/ADOCAPI=$(DOCS)/api
1938N/ADOCEXAMPLES=$(DOCS)/examples
394N/ADOCHTML=$(DOCS)/html
1716N/ADOCIMAGES=$(DOCS)/images
394N/AMANIFEST=$(APIDIR)/manifest
1716N/AAPIJAVASRC=$(APIDIR)/src
394N/A
394N/A# Java DTrace API jar file, its ultimate destination, and packaging details
394N/AAPIJAR=dtrace.jar
394N/AJARDESTDIR=$(ROOT)/usr/share/lib/java
394N/AINSJARS=$(JARDESTDIR)/$(APIJAR)
394N/A# 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)