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