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# Copyright 2020 Peter Tribble
27#
28
29include $(SRC)/Makefile.master
30
31# The Java DTrace API package
32
33PKGPATH=org/opensolaris/os/dtrace
34PKGNAME=org.opensolaris.os.dtrace
35
36# The Java DTrace API directories
37
38APIDIR=$(SRC)/lib/libdtrace_jni/java
39CLASSES=$(APIDIR)/classes
40JARS=$(APIDIR)/lib
41DOCS=$(APIDIR)/docs
42DOCAPI=$(DOCS)/api
43DOCEXAMPLES=$(DOCS)/examples
44DOCHTML=$(DOCS)/html
45DOCIMAGES=$(DOCS)/images
46MANIFEST=$(APIDIR)/manifest
47APIJAVASRC=$(APIDIR)/src
48
49# Java DTrace API jar file, its ultimate destination, and packaging details
50APIJAR=dtrace.jar
51JARDESTDIR=$(ROOT)/usr/share/lib/java
52INSJARS=$(JARDESTDIR)/$(APIJAR)
53# javadoc
54DOCDESTDIR=$(ROOT)/usr/share/lib/java/javadoc/dtrace
55DOCAPIDESTDIR=$(DOCDESTDIR)/api
56DOCEXAMPLESDESTDIR=$(DOCDESTDIR)/examples
57DOCHTMLDESTDIR=$(DOCDESTDIR)/html
58DOCIMAGESDESTDIR=$(DOCDESTDIR)/images
59XDOCLINT_OPTION=-Xdoclint:none
60
61$(JARDESTDIR)/%: $(JARS)/%
62	$(INS.file)
63
64$(DOCEXAMPLESDESTDIR)/%: $(DOCEXAMPLES)/%
65	$(INS.file)
66
67$(DOCHTMLDESTDIR)/%: $(DOCHTML)/%
68	$(INS.file)
69
70$(DOCIMAGESDESTDIR)/%: $(DOCIMAGES)/%
71	$(INS.file)
72
73# Manifest files
74APIMANI= $(MANIFEST)/dtrace.mf
75MANIFESTS= $(APIMANI)
76
77# Controlled CLASSPATH for making
78APICLASSPATH=$(CLASSES):$(APIJAVASRC)
79
80# javac flags
81JFLAGS= -g -d $(CLASSES) -sourcepath $(APICLASSPATH)
82JFLAGS += -source 7 -target 7
83JFLAGS += -Xlint:all,-deprecation,-rawtypes,-options
84
85# The default make rule for Java files
86COMPILE.java=$(JAVAC) $(JFLAGS)
87
88$(CLASSES)/$(PKGPATH)/%.class:	$(APIJAVASRC)/$(PKGPATH)/%.java
89				$(COMPILE.java) $<
90
91# All API classes
92API_CLASSNAMES=\
93	AbstractAggregationValue \
94	Aggregate \
95	AggregateSpec \
96	Aggregation \
97	AggregationRecord \
98	AggregationValue \
99	AvgValue \
100	Consumer \
101	ConsumerAdapter \
102	ConsumerEvent \
103	ConsumerException \
104	ConsumerListener \
105	CountValue \
106	DTraceException \
107	DataEvent \
108	Distribution \
109	Drop \
110	DropEvent \
111	Error \
112	ErrorEvent \
113	ExceptionHandler \
114	ExitRecord \
115	Flow \
116	InterfaceAttributes \
117	KernelStackRecord \
118	KernelSymbolRecord \
119	LinearDistribution \
120	LocalConsumer \
121	LogDistribution \
122	LogLinearDistribution \
123	MaxValue \
124	MinValue \
125	NativeException \
126	Option \
127	PrintaRecord \
128	PrintfRecord \
129	Probe \
130	ProbeData \
131	ProbeDescription \
132	ProbeInfo \
133	ProcessEvent \
134	ProcessState \
135	Program \
136	ProgramInfo \
137	Record \
138	ResourceLimitException \
139	ScalarRecord \
140	StackFrame \
141	StackValueRecord \
142	StddevValue \
143	SumValue \
144	SymbolValueRecord \
145	Tuple \
146	UserStackRecord \
147	UserSymbolRecord \
148	Utility \
149	ValueRecord
150
151API_CLASSES=${API_CLASSNAMES:%=%.class}
152DTRACE_API_CLASSES=${API_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
153
154
155all:            $(CLASSES) $(DTRACE_API_CLASSES)
156
157clean:
158		-$(RM) $(CLASSES)/$(PKGPATH)/*.class
159		-$(RM) -r $(DOCAPI)
160
161clobber:	clean
162		-$(RM) $(JARS)/*.jar
163
164# Make the class dir, if it doesn't exist
165$(CLASSES):
166		-@mkdir -p $@
167
168# Rule for installing API javadoc.
169$(DOCAPIDESTDIR)/index.html: $(DTRACE_API_CLASSES)
170		-@mkdir -p $(DOCAPIDESTDIR)
171		-$(RM) -r $(DOCAPIDESTDIR)/*
172		cd $(APIJAVASRC); umask 022; \
173		$(JAVADOC) -protected -use -notimestamp $(XDOCLINT_OPTION) \
174		-classpath $(APICLASSPATH) -d $(DOCAPIDESTDIR) \
175		$(PKGNAME)
176
177$(CLASSES)/$(PKGPATH):
178		$(INS.dir)
179
180$(JARS)/$(APIJAR): $(DTRACE_API_CLASSES) $(APIMANI)
181		-@mkdir -p $(JARS)
182		$(JAR) cfm $@ $(APIMANI) -C $(CLASSES) .
183
184$(JARDESTDIR):
185		$(INS.dir)
186
187$(DOCDESTDIR):
188		$(INS.dir)
189
190$(DOCAPIDESTDIR):
191		$(INS.dir)
192
193$(DOCEXAMPLESDESTDIR):
194		$(INS.dir)
195
196$(DOCHTMLDESTDIR):
197		$(INS.dir)
198
199$(DOCIMAGESDESTDIR):
200		$(INS.dir)
201
202install:	all $(JARDESTDIR) $(INSJARS) $(DOCDESTDIR) \
203	$(DOCAPIDESTDIR) \
204	$(DOCAPIDESTDIR)/index.html \
205	$(DOCEXAMPLESDESTDIR) \
206	$(DOCEXAMPLESDESTDIR)/TestAPI.java \
207	$(DOCEXAMPLESDESTDIR)/TestAPI2.java \
208	$(DOCEXAMPLESDESTDIR)/TestTarget.java \
209	$(DOCEXAMPLESDESTDIR)/hello.d \
210	$(DOCEXAMPLESDESTDIR)/intrstat.d \
211	$(DOCEXAMPLESDESTDIR)/syscall.d \
212	$(DOCEXAMPLESDESTDIR)/target.d \
213	$(DOCHTMLDESTDIR) \
214	$(DOCHTMLDESTDIR)/JavaDTraceAPI.html \
215	$(DOCHTMLDESTDIR)/fast.html \
216	$(DOCIMAGESDESTDIR) \
217	$(DOCIMAGESDESTDIR)/JavaDTraceAPI.gif
218
219# empty targets for top-level building compatability
220install_h:
221
222# create API javadoc
223doc:
224		-@mkdir -p $(DOCAPI)
225		cd $(APIJAVASRC); umask 022; \
226		$(JAVADOC) -protected -use -notimestamp \
227		-classpath $(APICLASSPATH) -d $(DOCAPI) \
228		$(PKGNAME)
229