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 2007 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26# ident "%Z%%M% %I% %E% SMI" 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 40JNI=$(APIDIR)/native 41JARS=$(APIDIR)/lib 42DOCS=$(APIDIR)/docs 43DOCAPI=$(DOCS)/api 44DOCEXAMPLES=$(DOCS)/examples 45DOCHTML=$(DOCS)/html 46DOCIMAGES=$(DOCS)/images 47MANIFEST=$(APIDIR)/manifest 48APIJAVASRC=$(APIDIR)/src 49 50# Java DTrace API jar file, its ultimate destination, and packaging details 51APIJAR=dtrace.jar 52JARDESTDIR=$(ROOT)/usr/share/lib/java 53INSJARS=$(JARDESTDIR)/$(APIJAR) 54# javadoc 55DOCDESTDIR=$(ROOT)/usr/share/lib/java/javadoc/dtrace 56DOCAPIDESTDIR=$(DOCDESTDIR)/api 57DOCEXAMPLESDESTDIR=$(DOCDESTDIR)/examples 58DOCHTMLDESTDIR=$(DOCDESTDIR)/html 59DOCIMAGESDESTDIR=$(DOCDESTDIR)/images 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) -deprecation 82JFLAGS += -target 1.5 83 84# The default make rule for Java files 85COMPILE.java=$(JAVAC) $(JFLAGS) 86 87$(CLASSES)/$(PKGPATH)/%.class: $(APIJAVASRC)/$(PKGPATH)/%.java 88 $(COMPILE.java) $< 89 90# javah generated headers 91APIHDR= LocalConsumer.h 92JNIHDRS=$(JNI)/$(APIHDRS) 93 94# API classes with native methods 95JNI_CLASSNAMES=\ 96 LocalConsumer 97 98JNI_CLASSES=${JNI_CLASSNAMES:%=%.class} 99DTRACE_JNI_CLASSES=${JNI_CLASSES:%=$(CLASSES)/$(PKGPATH)/%} 100JNI_FULL_CLASSNAMES=${JNI_CLASSNAMES:%=$(PKGNAME).%} 101 102# All API classes 103API_CLASSNAMES=\ 104 AbstractAggregationValue \ 105 Aggregate \ 106 AggregateSpec \ 107 Aggregation \ 108 AggregationRecord \ 109 AggregationValue \ 110 AvgValue \ 111 Consumer \ 112 ConsumerAdapter \ 113 ConsumerEvent \ 114 ConsumerException \ 115 ConsumerListener \ 116 CountValue \ 117 DTraceException \ 118 DataEvent \ 119 Distribution \ 120 Drop \ 121 DropEvent \ 122 Error \ 123 ErrorEvent \ 124 ExceptionHandler \ 125 ExitRecord \ 126 Flow \ 127 InterfaceAttributes \ 128 KernelStackRecord \ 129 KernelSymbolRecord \ 130 LinearDistribution \ 131 LocalConsumer \ 132 LogDistribution \ 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 SumValue \ 153 SymbolValueRecord \ 154 Tuple \ 155 UserStackRecord \ 156 UserSymbolRecord \ 157 Utility \ 158 ValueRecord 159 160API_CLASSES=${API_CLASSNAMES:%=%.class} 161DTRACE_API_CLASSES=${API_CLASSES:%=$(CLASSES)/$(PKGPATH)/%} 162 163 164all: $(CLASSES) $(DTRACE_API_CLASSES) $(JNI)/$(APIHDR) 165 166clean: 167 -$(RM) $(CLASSES)/$(PKGPATH)/*.class 168 -$(RM) $(JNI)/*.h 169 -$(RM) -r $(DOCAPI) 170 171clobber: clean 172 -$(RM) $(JARS)/*.jar 173 174# Make the class dir, if it doesn't exist 175$(CLASSES): 176 -@mkdir -p $@ 177 178# Make the directory for javah-generated headers, if it doesn't exist 179$(JNI): 180 -@mkdir -p $@ 181 182$(JNI)/$(APIHDR): $(JNI) $(DTRACE_JNI_CLASSES) 183 $(JAVAH) -o $@ -classpath $(CLASSES) $(JNI_FULL_CLASSNAMES) 184 -@touch $@ 185 186# Rule for installing API javadoc. 187$(DOCAPIDESTDIR)/index.html: $(DTRACE_API_CLASSES) 188 -@mkdir -p $(DOCAPIDESTDIR) 189 -$(RM) -r $(DOCAPIDESTDIR)/* 190 cd $(APIJAVASRC); umask 022; \ 191 $(JAVADOC) -protected -use -notimestamp \ 192 -classpath $(APICLASSPATH) -d $(DOCAPIDESTDIR) \ 193 $(PKGNAME) 194 195$(CLASSES)/$(PKGPATH): 196 $(INS.dir) 197 198$(JARS)/$(APIJAR): $(DTRACE_API_CLASSES) $(APIMANI) 199 -@mkdir -p $(JARS) 200 $(JAR) cfm $@ $(APIMANI) -C $(CLASSES) . 201 202$(JARDESTDIR): 203 $(INS.dir) 204 205$(DOCDESTDIR): 206 $(INS.dir) 207 208$(DOCAPIDESTDIR): 209 $(INS.dir) 210 211$(DOCEXAMPLESDESTDIR): 212 $(INS.dir) 213 214$(DOCHTMLDESTDIR): 215 $(INS.dir) 216 217$(DOCIMAGESDESTDIR): 218 $(INS.dir) 219 220install: all $(JARDESTDIR) $(INSJARS) $(DOCDESTDIR) \ 221 $(DOCAPIDESTDIR) \ 222 $(DOCAPIDESTDIR)/index.html \ 223 $(DOCEXAMPLESDESTDIR) \ 224 $(DOCEXAMPLESDESTDIR)/TestAPI.java \ 225 $(DOCEXAMPLESDESTDIR)/TestAPI2.java \ 226 $(DOCEXAMPLESDESTDIR)/TestTarget.java \ 227 $(DOCEXAMPLESDESTDIR)/hello.d \ 228 $(DOCEXAMPLESDESTDIR)/intrstat.d \ 229 $(DOCEXAMPLESDESTDIR)/syscall.d \ 230 $(DOCEXAMPLESDESTDIR)/target.d \ 231 $(DOCHTMLDESTDIR) \ 232 $(DOCHTMLDESTDIR)/JavaDTraceAPI.html \ 233 $(DOCHTMLDESTDIR)/fast.html \ 234 $(DOCIMAGESDESTDIR) \ 235 $(DOCIMAGESDESTDIR)/JavaDTraceAPI.gif 236 237# empty targets for top-level building compatability 238 239install_h lint: 240 241# create API javadoc 242 243doc: 244 -@mkdir -p $(DOCAPI) 245 cd $(APIJAVASRC); umask 022; \ 246 $(JAVADOC) -protected -use -notimestamp \ 247 -classpath $(APICLASSPATH) -d $(DOCAPI) \ 248 $(PKGNAME) 249