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
41# the files in the docs directory go with the api javadoc
42# which can be generated using the doc target
43# the documentation is not built or packaged by default
44DOCS=$(APIDIR)/docs
45DOCAPI=$(DOCS)/api
46DOCEXAMPLES=$(DOCS)/examples
47DOCHTML=$(DOCS)/html
48DOCIMAGES=$(DOCS)/images
49MANIFEST=$(APIDIR)/manifest
50APIJAVASRC=$(APIDIR)/src
51
52# Java DTrace API jar file, its ultimate destination, and packaging details
53APIJAR=dtrace.jar
54JARDESTDIR=$(ROOT)/usr/share/lib/java
55INSJARS=$(JARDESTDIR)/$(APIJAR)
56
57$(JARDESTDIR)/%: $(JARS)/%
58	$(INS.file)
59
60# Manifest files
61APIMANI= $(MANIFEST)/dtrace.mf
62MANIFESTS= $(APIMANI)
63
64# Controlled CLASSPATH for making
65APICLASSPATH=$(CLASSES):$(APIJAVASRC)
66
67# javac flags
68JFLAGS= -g -d $(CLASSES) -sourcepath $(APICLASSPATH)
69JFLAGS += -source 7 -target 7
70JFLAGS += -Xlint:all,-deprecation,-rawtypes,-options
71
72# The default make rule for Java files
73COMPILE.java=$(JAVAC) $(JFLAGS)
74
75$(CLASSES)/$(PKGPATH)/%.class:	$(APIJAVASRC)/$(PKGPATH)/%.java
76				$(COMPILE.java) $<
77
78# All API classes
79API_CLASSNAMES=\
80	AbstractAggregationValue \
81	Aggregate \
82	AggregateSpec \
83	Aggregation \
84	AggregationRecord \
85	AggregationValue \
86	AvgValue \
87	Consumer \
88	ConsumerAdapter \
89	ConsumerEvent \
90	ConsumerException \
91	ConsumerListener \
92	CountValue \
93	DTraceException \
94	DataEvent \
95	Distribution \
96	Drop \
97	DropEvent \
98	Error \
99	ErrorEvent \
100	ExceptionHandler \
101	ExitRecord \
102	Flow \
103	InterfaceAttributes \
104	KernelStackRecord \
105	KernelSymbolRecord \
106	LinearDistribution \
107	LocalConsumer \
108	LogDistribution \
109	LogLinearDistribution \
110	MaxValue \
111	MinValue \
112	NativeException \
113	Option \
114	PrintaRecord \
115	PrintfRecord \
116	Probe \
117	ProbeData \
118	ProbeDescription \
119	ProbeInfo \
120	ProcessEvent \
121	ProcessState \
122	Program \
123	ProgramInfo \
124	Record \
125	ResourceLimitException \
126	ScalarRecord \
127	StackFrame \
128	StackValueRecord \
129	StddevValue \
130	SumValue \
131	SymbolValueRecord \
132	Tuple \
133	UserStackRecord \
134	UserSymbolRecord \
135	Utility \
136	ValueRecord
137
138API_CLASSES=${API_CLASSNAMES:%=%.class}
139DTRACE_API_CLASSES=${API_CLASSES:%=$(CLASSES)/$(PKGPATH)/%}
140
141
142all:            $(CLASSES) $(DTRACE_API_CLASSES)
143
144clean:
145		-$(RM) $(CLASSES)/$(PKGPATH)/*.class
146		-$(RM) -r $(DOCAPI)
147
148clobber:	clean
149		-$(RM) $(JARS)/*.jar
150
151# Make the class dir, if it doesn't exist
152$(CLASSES):
153		-@mkdir -p $@
154
155$(CLASSES)/$(PKGPATH):
156		$(INS.dir)
157
158$(JARS)/$(APIJAR): $(DTRACE_API_CLASSES) $(APIMANI)
159		-@mkdir -p $(JARS)
160		$(JAR) cfm $@ $(APIMANI) -C $(CLASSES) .
161
162$(JARDESTDIR):
163		$(INS.dir)
164
165install:	all $(JARDESTDIR) $(INSJARS)
166
167# empty targets for top-level building compatability
168install_h:
169
170# create API javadoc
171doc:
172		-@mkdir -p $(DOCAPI)
173		cd $(APIJAVASRC); umask 022; \
174		$(JAVADOC) -protected -use -notimestamp \
175		-classpath $(APICLASSPATH) -d $(DOCAPI) \
176		$(PKGNAME)
177