xref: /illumos-gate/usr/src/lib/libdtrace_jni/java/Makefile (revision fb3fb4f3d76d55b64440afd0af72775dfad3bd1d)
1*fb3fb4f3Stomee#
2*fb3fb4f3Stomee# CDDL HEADER START
3*fb3fb4f3Stomee#
4*fb3fb4f3Stomee# The contents of this file are subject to the terms of the
5*fb3fb4f3Stomee# Common Development and Distribution License (the "License").
6*fb3fb4f3Stomee# You may not use this file except in compliance with the License.
7*fb3fb4f3Stomee#
8*fb3fb4f3Stomee# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*fb3fb4f3Stomee# or http://www.opensolaris.org/os/licensing.
10*fb3fb4f3Stomee# See the License for the specific language governing permissions
11*fb3fb4f3Stomee# and limitations under the License.
12*fb3fb4f3Stomee#
13*fb3fb4f3Stomee# When distributing Covered Code, include this CDDL HEADER in each
14*fb3fb4f3Stomee# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*fb3fb4f3Stomee# If applicable, add the following below this CDDL HEADER, with the
16*fb3fb4f3Stomee# fields enclosed by brackets "[]" replaced with your own identifying
17*fb3fb4f3Stomee# information: Portions Copyright [yyyy] [name of copyright owner]
18*fb3fb4f3Stomee#
19*fb3fb4f3Stomee# CDDL HEADER END
20*fb3fb4f3Stomee#
21*fb3fb4f3Stomee
22*fb3fb4f3Stomee#
23*fb3fb4f3Stomee# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24*fb3fb4f3Stomee# Use is subject to license terms.
25*fb3fb4f3Stomee#
26*fb3fb4f3Stomee# ident	"%Z%%M%	%I%	%E% SMI"
27*fb3fb4f3Stomee#
28*fb3fb4f3Stomee
29*fb3fb4f3Stomeeinclude $(SRC)/Makefile.master
30*fb3fb4f3Stomee
31*fb3fb4f3Stomee# The Java DTrace API package
32*fb3fb4f3Stomee
33*fb3fb4f3StomeePKGPATH=org/opensolaris/os/dtrace
34*fb3fb4f3StomeePKGNAME=org.opensolaris.os.dtrace
35*fb3fb4f3Stomee
36*fb3fb4f3Stomee# The Java DTrace API directories
37*fb3fb4f3Stomee
38*fb3fb4f3StomeeAPIDIR=$(SRC)/lib/libdtrace_jni/java
39*fb3fb4f3StomeeCLASSES=$(APIDIR)/classes
40*fb3fb4f3StomeeJNI=$(APIDIR)/native
41*fb3fb4f3StomeeJARS=$(APIDIR)/lib
42*fb3fb4f3StomeeDOCS=$(APIDIR)/docs
43*fb3fb4f3StomeeDOCAPI=$(DOCS)/api
44*fb3fb4f3StomeeDOCEXAMPLES=$(DOCS)/examples
45*fb3fb4f3StomeeDOCHTML=$(DOCS)/html
46*fb3fb4f3StomeeDOCIMAGES=$(DOCS)/images
47*fb3fb4f3StomeeMANIFEST=$(APIDIR)/manifest
48*fb3fb4f3StomeeAPIJAVASRC=$(APIDIR)/src
49*fb3fb4f3Stomee
50*fb3fb4f3Stomee# Java DTrace API jar file, its ultimate destination, and packaging details
51*fb3fb4f3StomeeAPIJAR=dtrace.jar
52*fb3fb4f3StomeeJARDESTDIR=$(ROOT)/usr/share/lib/java
53*fb3fb4f3StomeeINSJARS=$(JARDESTDIR)/$(APIJAR)
54*fb3fb4f3Stomee# javadoc
55*fb3fb4f3StomeeDOCDESTDIR=$(ROOT)/usr/share/lib/java/javadoc/dtrace
56*fb3fb4f3StomeeDOCAPIDESTDIR=$(DOCDESTDIR)/api
57*fb3fb4f3StomeeDOCEXAMPLESDESTDIR=$(DOCDESTDIR)/examples
58*fb3fb4f3StomeeDOCHTMLDESTDIR=$(DOCDESTDIR)/html
59*fb3fb4f3StomeeDOCIMAGESDESTDIR=$(DOCDESTDIR)/images
60*fb3fb4f3Stomee
61*fb3fb4f3Stomee$(JARDESTDIR)/%: $(JARS)/%
62*fb3fb4f3Stomee	$(INS.file)
63*fb3fb4f3Stomee
64*fb3fb4f3Stomee$(DOCEXAMPLESDESTDIR)/%: $(DOCEXAMPLES)/%
65*fb3fb4f3Stomee	$(INS.file)
66*fb3fb4f3Stomee
67*fb3fb4f3Stomee$(DOCHTMLDESTDIR)/%: $(DOCHTML)/%
68*fb3fb4f3Stomee	$(INS.file)
69*fb3fb4f3Stomee
70*fb3fb4f3Stomee$(DOCIMAGESDESTDIR)/%: $(DOCIMAGES)/%
71*fb3fb4f3Stomee	$(INS.file)
72*fb3fb4f3Stomee
73*fb3fb4f3Stomee# Manifest files
74*fb3fb4f3StomeeAPIMANI= $(MANIFEST)/dtrace.mf
75*fb3fb4f3StomeeMANIFESTS= $(APIMANI)
76*fb3fb4f3Stomee
77*fb3fb4f3Stomee# Controlled CLASSPATH for making
78*fb3fb4f3StomeeAPICLASSPATH=$(CLASSES):$(APIJAVASRC)
79*fb3fb4f3Stomee
80*fb3fb4f3Stomee# javac flags
81*fb3fb4f3StomeeJFLAGS= -g -d $(CLASSES) -sourcepath $(APICLASSPATH) -deprecation
82*fb3fb4f3Stomee
83*fb3fb4f3Stomee# The default make rule for Java files
84*fb3fb4f3StomeeCOMPILE.java=$(JAVAC) $(JFLAGS)
85*fb3fb4f3Stomee
86*fb3fb4f3Stomee$(CLASSES)/$(PKGPATH)/%.class:	$(APIJAVASRC)/$(PKGPATH)/%.java
87*fb3fb4f3Stomee				$(COMPILE.java) $<
88*fb3fb4f3Stomee
89*fb3fb4f3Stomee# javah generated headers
90*fb3fb4f3StomeeAPIHDR= LocalConsumer.h
91*fb3fb4f3StomeeJNIHDRS=$(JNI)/$(APIHDRS)
92*fb3fb4f3Stomee
93*fb3fb4f3Stomee# API classes with native methods
94*fb3fb4f3StomeeJNI_CLASSNAMES=\
95*fb3fb4f3Stomee    LocalConsumer
96*fb3fb4f3Stomee
97*fb3fb4f3StomeeJNI_CLASSES=${JNI_CLASSNAMES:%=%.class}
98*fb3fb4f3StomeeDTRACE_JNI_CLASSES=${JNI_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
99*fb3fb4f3StomeeJNI_FULL_CLASSNAMES=${JNI_CLASSNAMES:%=$(PKGNAME).%}
100*fb3fb4f3Stomee
101*fb3fb4f3Stomee# All API classes
102*fb3fb4f3StomeeAPI_CLASSNAMES=\
103*fb3fb4f3Stomee	AbstractAggregationValue \
104*fb3fb4f3Stomee	Aggregate \
105*fb3fb4f3Stomee	AggregateSpec \
106*fb3fb4f3Stomee	Aggregation \
107*fb3fb4f3Stomee	AggregationRecord \
108*fb3fb4f3Stomee	AggregationValue \
109*fb3fb4f3Stomee	AvgValue \
110*fb3fb4f3Stomee	Consumer \
111*fb3fb4f3Stomee	ConsumerAdapter \
112*fb3fb4f3Stomee	ConsumerEvent \
113*fb3fb4f3Stomee	ConsumerException \
114*fb3fb4f3Stomee	ConsumerListener \
115*fb3fb4f3Stomee	CountValue \
116*fb3fb4f3Stomee	DTraceException \
117*fb3fb4f3Stomee	DataEvent \
118*fb3fb4f3Stomee	Distribution \
119*fb3fb4f3Stomee	Drop \
120*fb3fb4f3Stomee	DropEvent \
121*fb3fb4f3Stomee	Error \
122*fb3fb4f3Stomee	ErrorEvent \
123*fb3fb4f3Stomee	ExceptionHandler \
124*fb3fb4f3Stomee	ExitRecord \
125*fb3fb4f3Stomee	Flow \
126*fb3fb4f3Stomee	InterfaceAttributes \
127*fb3fb4f3Stomee	KernelStackRecord \
128*fb3fb4f3Stomee	LinearDistribution \
129*fb3fb4f3Stomee	LocalConsumer \
130*fb3fb4f3Stomee	LogDistribution \
131*fb3fb4f3Stomee	MaxValue \
132*fb3fb4f3Stomee	MinValue \
133*fb3fb4f3Stomee	NativeException \
134*fb3fb4f3Stomee	Option \
135*fb3fb4f3Stomee	PrintaRecord \
136*fb3fb4f3Stomee	PrintfRecord \
137*fb3fb4f3Stomee	Probe \
138*fb3fb4f3Stomee	ProbeData \
139*fb3fb4f3Stomee	ProbeDescription \
140*fb3fb4f3Stomee	ProbeInfo \
141*fb3fb4f3Stomee	ProcessEvent \
142*fb3fb4f3Stomee	ProcessState \
143*fb3fb4f3Stomee	Program \
144*fb3fb4f3Stomee	ProgramInfo \
145*fb3fb4f3Stomee	Record \
146*fb3fb4f3Stomee	ResourceLimitException \
147*fb3fb4f3Stomee	ScalarRecord \
148*fb3fb4f3Stomee	StackFrame \
149*fb3fb4f3Stomee	StackValueRecord \
150*fb3fb4f3Stomee	SumValue \
151*fb3fb4f3Stomee	Tuple \
152*fb3fb4f3Stomee	UserStackRecord \
153*fb3fb4f3Stomee	Utility \
154*fb3fb4f3Stomee	ValueRecord
155*fb3fb4f3Stomee
156*fb3fb4f3StomeeAPI_CLASSES=${API_CLASSNAMES:%=%.class}
157*fb3fb4f3StomeeDTRACE_API_CLASSES=${API_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
158*fb3fb4f3Stomee
159*fb3fb4f3Stomee
160*fb3fb4f3Stomeeall:            $(CLASSES) $(DTRACE_API_CLASSES) $(JNI)/$(APIHDR)
161*fb3fb4f3Stomee
162*fb3fb4f3Stomeeclean:
163*fb3fb4f3Stomee		-$(RM) $(CLASSES)/$(PKGPATH)/*.class
164*fb3fb4f3Stomee		-$(RM) $(JNI)/*.h
165*fb3fb4f3Stomee		-$(RM) -r $(DOCAPI)
166*fb3fb4f3Stomee
167*fb3fb4f3Stomeeclobber:	clean
168*fb3fb4f3Stomee		-$(RM) $(JARS)/*.jar
169*fb3fb4f3Stomee
170*fb3fb4f3Stomee# Make the class dir, if it doesn't exist
171*fb3fb4f3Stomee$(CLASSES):
172*fb3fb4f3Stomee		-@mkdir -p $@
173*fb3fb4f3Stomee
174*fb3fb4f3Stomee# Make the directory for javah-generated headers, if it doesn't exist
175*fb3fb4f3Stomee$(JNI):
176*fb3fb4f3Stomee		-@mkdir -p $@
177*fb3fb4f3Stomee
178*fb3fb4f3Stomee$(JNI)/$(APIHDR): $(JNI) $(DTRACE_JNI_CLASSES)
179*fb3fb4f3Stomee		$(JAVAH) -o $@ -classpath $(CLASSES) $(JNI_FULL_CLASSNAMES)
180*fb3fb4f3Stomee		-@touch $@
181*fb3fb4f3Stomee
182*fb3fb4f3Stomee# Rule for installing API javadoc.
183*fb3fb4f3Stomee$(DOCAPIDESTDIR)/index.html: $(DTRACE_API_CLASSES)
184*fb3fb4f3Stomee		-@mkdir -p $(DOCAPIDESTDIR)
185*fb3fb4f3Stomee		-$(RM) -r $(DOCAPIDESTDIR)/*
186*fb3fb4f3Stomee		cd $(APIJAVASRC); $(JAVADOC) -protected -use \
187*fb3fb4f3Stomee		-classpath $(APICLASSPATH) -d $(DOCAPIDESTDIR) \
188*fb3fb4f3Stomee		$(PKGNAME)
189*fb3fb4f3Stomee
190*fb3fb4f3Stomee$(CLASSES)/$(PKGPATH):
191*fb3fb4f3Stomee		$(INS.dir)
192*fb3fb4f3Stomee
193*fb3fb4f3Stomee$(JARS)/$(APIJAR): $(DTRACE_API_CLASSES) $(APIMANI)
194*fb3fb4f3Stomee		-@mkdir -p $(JARS)
195*fb3fb4f3Stomee		$(JAR) cfm $@ $(APIMANI) -C $(CLASSES) .
196*fb3fb4f3Stomee
197*fb3fb4f3Stomee$(JARDESTDIR):
198*fb3fb4f3Stomee		$(INS.dir)
199*fb3fb4f3Stomee
200*fb3fb4f3Stomee$(DOCDESTDIR):
201*fb3fb4f3Stomee		$(INS.dir)
202*fb3fb4f3Stomee
203*fb3fb4f3Stomee$(DOCAPIDESTDIR):
204*fb3fb4f3Stomee		$(INS.dir)
205*fb3fb4f3Stomee
206*fb3fb4f3Stomee$(DOCEXAMPLESDESTDIR):
207*fb3fb4f3Stomee		$(INS.dir)
208*fb3fb4f3Stomee
209*fb3fb4f3Stomee$(DOCHTMLDESTDIR):
210*fb3fb4f3Stomee		$(INS.dir)
211*fb3fb4f3Stomee
212*fb3fb4f3Stomee$(DOCIMAGESDESTDIR):
213*fb3fb4f3Stomee		$(INS.dir)
214*fb3fb4f3Stomee
215*fb3fb4f3Stomeeinstall:	all $(JARDESTDIR) $(INSJARS) $(DOCDESTDIR) \
216*fb3fb4f3Stomee	$(DOCAPIDESTDIR) \
217*fb3fb4f3Stomee	$(DOCAPIDESTDIR)/index.html \
218*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR) \
219*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/TestAPI.java \
220*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/TestAPI2.java \
221*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/TestTarget.java \
222*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/hello.d \
223*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/intrstat.d \
224*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/syscall.d \
225*fb3fb4f3Stomee	$(DOCEXAMPLESDESTDIR)/target.d \
226*fb3fb4f3Stomee	$(DOCHTMLDESTDIR) \
227*fb3fb4f3Stomee	$(DOCHTMLDESTDIR)/JavaDTraceAPI.html \
228*fb3fb4f3Stomee	$(DOCHTMLDESTDIR)/fast.html \
229*fb3fb4f3Stomee	$(DOCIMAGESDESTDIR) \
230*fb3fb4f3Stomee	$(DOCIMAGESDESTDIR)/JavaDTraceAPI.gif
231*fb3fb4f3Stomee
232*fb3fb4f3Stomee# empty targets for top-level building compatability
233*fb3fb4f3Stomee
234*fb3fb4f3Stomeeinstall_h lint:
235*fb3fb4f3Stomee
236*fb3fb4f3Stomee# create API javadoc
237*fb3fb4f3Stomee
238*fb3fb4f3Stomeedoc:
239*fb3fb4f3Stomee		-@mkdir -p $(DOCAPI)
240*fb3fb4f3Stomee		cd $(APIJAVASRC); $(JAVADOC) -protected -use \
241*fb3fb4f3Stomee		-classpath $(APICLASSPATH) -d $(DOCAPI) \
242*fb3fb4f3Stomee		$(PKGNAME)
243