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)