1 # 2 # Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 default: all 27 28 include $(SPEC) 29 include MakeBase.gmk 30 include JavaCompilation.gmk 31 include NativeCompilation.gmk 32 include SetupJavaCompilers.gmk 33 34 # Prepare the find cache. 35 $(eval $(call FillCacheFind, $(JDK_TOPDIR)/src)) 36 37 # Append demo goals to this variable. 38 BUILD_DEMOS = 39 40 # The demo structure and contents should really be cleaned up. 41 # Now every other demo has its own quirks where to put the 42 # READMEs and other files. 43 44 DEMO_SHARE_SRC := $(JDK_TOPDIR)/src/demo/share 45 DEMO_CLOSED_SHARE_SRC := $(JDK_TOPDIR)/src/closed/demo/share 46 DEMO_SOLARIS_SRC := $(JDK_TOPDIR)/src/demo/solaris 47 DEMO_OS_API_SRC := $(JDK_TOPDIR)/src/demo/$(OPENJDK_TARGET_OS_API_DIR) 48 VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc 49 50 ################################################################################################## 51 52 define SetupAppletDemo 53 $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_APPLET_$1, \ 54 SETUP := GENERATE_USINGJDKBYTECODE, \ 55 SRC := $(JDK_TOPDIR)/src/$3demo/share/applets/$1, \ 56 BIN := $(JDK_OUTPUTDIR)/demo/applets/$1, \ 57 COPY := .html .java .xyz .obj .au .gif, \ 58 DISABLE_SJAVAC := $2)) 59 BUILD_DEMOS += $$(BUILD_DEMO_APPLET_$1) 60 endef 61 62 63 ################################################################################################## 64 65 PATTERNS_TO_COPY = .html .txt .properties .js .gif .jpg .theme .data .opt README .c .h .png .ttf .xyz .obj 66 67 define SetupDemo 68 # Param 1 = Name of the demo 69 # Param 2 = Subdirectory of the demo below the demo directory. 70 # Param 3 = Additional javac flags. 71 # Param 4 = The main class for the jar. 72 # Param 5 = Additional source directory. 73 # Param 6 = Extra dir below $(JDK_TOPDIR)/src (closed) 74 # Param 7 = List of files to copy 75 # Param 8 = Base name of jar file. Defaults to $1 76 # Param 9 = Exclude list 77 # Param 10 = Extra copy patterns 78 # Param 11 = Extra manifest attribute 79 # Param 12 = Suffix for compiler setup name 80 81 $1_SRC_BASE := $(JDK_TOPDIR)/src/$6demo/share/$2/$1 82 # In some demos the source is found in a subdir called src. 83 $1_MAIN_SRC := $$(wildcard $$($1_SRC_BASE)/src) 84 ifeq ($$($1_MAIN_SRC), ) 85 $1_MAIN_SRC := $$($1_SRC_BASE) 86 endif 87 88 ifneq ($8, ) 89 $1_JARFILE := $8.jar 90 else 91 $1_JARFILE := $1.jar 92 endif 93 94 ifeq ($(findstring $1,Laffy SwingSet3), ) 95 $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_$1, \ 96 SETUP := GENERATE_USINGJDKBYTECODE, \ 97 ADD_JAVAC_FLAGS := $3, \ 98 SRC := $$($1_MAIN_SRC) $5, \ 99 BIN := $(JDK_OUTPUTDIR)/democlasses/$2/$1, \ 100 COPY := $(PATTERNS_TO_COPY) $(10), \ 101 JAR := $(JDK_OUTPUTDIR)/demo/$2/$1/$$($1_JARFILE), \ 102 JARMAIN := $4, \ 103 MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \ 104 EXTRA_MANIFEST_ATTR := $(11), \ 105 SRCZIP := $(JDK_OUTPUTDIR)/demo/$2/$1/src.zip, \ 106 EXCLUDE_FILES := $9, \ 107 DISABLE_SJAVAC := $(12))) 108 109 BUILD_DEMOS += $$(BUILD_DEMO_$1) \ 110 $(JDK_OUTPUTDIR)/demo/$2/$1/$$($1_JARFILE) \ 111 $(JDK_OUTPUTDIR)/demo/$2/$1/src.zip 112 endif 113 114 # Copy files. 115 $1_COPY_TARGETS := $$(patsubst $$($1_SRC_BASE)/%, \ 116 $(JDK_OUTPUTDIR)/demo/$2/$1/%, \ 117 $$(wildcard $$(addprefix $$($1_SRC_BASE)/, $7))) 118 ifneq ($7, ) 119 $(JDK_OUTPUTDIR)/demo/$2/$1/%: $$($1_SRC_BASE)/% 120 $$(call install-file) 121 $(CHMOD) -f ug+w $$@ 122 123 BUILD_DEMOS += $$($1_COPY_TARGETS) 124 endif 125 126 endef 127 128 $(eval $(call SetupDemo,CodePointIM,jfc,,CodePointIM,,,*.html)) 129 $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.services: \ 130 $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar \ 131 $(DEMO_SHARE_SRC)/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor 132 (cd $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM && \ 133 $(MKDIR) -p _the.tmp/META-INF/services && \ 134 $(CP) $(DEMO_SHARE_SRC)/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor _the.tmp/META-INF/services && \ 135 cd _the.tmp && \ 136 $(JAR) uf $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar META-INF/services/java.awt.im.spi.InputMethodDescriptor && \ 137 cd META-INF/services && \ 138 $(JAR) uf $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar java.awt.im.spi.InputMethodDescriptor) 139 $(RM) -r $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.tmp 140 $(TOUCH) $@ 141 142 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.services 143 144 $(eval $(call SetupDemo,FileChooserDemo,jfc,,FileChooserDemo,,,README*)) 145 $(eval $(call SetupDemo,Metalworks,jfc,,Metalworks,,,README*)) 146 $(eval $(call SetupDemo,Notepad,jfc,,Notepad,,,README*)) 147 $(eval $(call SetupDemo,SampleTree,jfc,,SampleTree,,,README*)) 148 $(eval $(call SetupDemo,TableExample,jfc,,TableExample,,,README*)) 149 $(eval $(call SetupDemo,TransparentRuler,jfc,,transparentruler.Ruler,,,README*)) 150 $(eval $(call SetupDemo,jconsole-plugin,scripting,,,,,*.xml *.txt,,,,Main-Class: \n)) 151 $(eval $(call SetupDemo,FullThreadDump,management,,FullThreadDump,,,README*)) 152 $(eval $(call SetupDemo,JTop,management,,JTop,,,README*)) 153 $(eval $(call SetupDemo,MemoryMonitor,management,,MemoryMonitor,,,README*)) 154 $(eval $(call SetupDemo,VerboseGC,management,,VerboseGC,,,README*)) 155 156 ifndef OPENJDK 157 $(eval $(call SetupDemo,Laffy,jfc,,,,closed/,*)) 158 $(eval $(call SetupDemo,SwingSet3,jfc,,,,closed/,*)) 159 160 $(eval $(call SetupDemo,Stylepad,jfc,,Stylepad, \ 161 $(DEMO_SHARE_SRC)/jfc/Notepad,closed/,*.txt,,$(DEMO_SHARE_SRC)/jfc/Notepad/README.txt)) 162 163 BUILD_DEMOS += $(patsubst $(DEMO_CLOSED_SHARE_SRC)/nbproject/%, \ 164 $(JDK_OUTPUTDIR)/demo/nbproject/%, \ 165 $(call CacheFind, $(DEMO_CLOSED_SHARE_SRC)/nbproject)) 166 167 $(JDK_OUTPUTDIR)/demo/nbproject/%: $(DEMO_CLOSED_SHARE_SRC)/nbproject/% 168 $(call install-file) 169 $(CHMOD) -f ug+w $@ 170 endif 171 172 ################################################################################################## 173 174 # In the old makefiles, j2dbench was not compiled. 175 #$(eval $(call SetupDemo,J2DBench, java2d, /src, , j2dbench/J2DBench)) 176 177 # JVMTI demos are a bit strange and share some files, but be careful the 178 # shared files are just the *.c and *.h files, not the README or sample 179 # makefiles. So we always exclude the README.txt and sample.makefile.txt 180 # from the extra sources. 181 define SetupJVMTIDemo 182 # Param 1 = Name of the demo 183 # Param 2 = add these directories to the includes, default is agent_util 184 # Param 3 = extra CFLAGS 185 # Param 4 = C or C++ (defaults to C) 186 # Param 5 = libs for posix 187 # Param 6 = libs for windows 188 # Param 7 = libs for solaris 189 # Param 8 = libs for linux 190 # Param 9 = extra directories with required sources 191 BUILD_DEMO_JVMTI_$1_EXTRA_SRC := \ 192 $$(wildcard $(DEMO_OS_API_SRC)/jvmti/$1) \ 193 $$(wildcard $$(addprefix $(DEMO_SHARE_SRC)/jvmti/, $2)) \ 194 $9 195 BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE := \ 196 $$(wildcard $$(patsubst %, $(DEMO_SHARE_SRC)/jvmti/%/README.txt, $2)) \ 197 $$(wildcard $$(patsubst %, $(DEMO_SHARE_SRC)/jvmti/%/sample.makefile.txt, $2)) 198 BUILD_DEMO_JVMTI_$1_EXTRA_INC := $$(addprefix -I, $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC)) 199 BUILD_DEMO_JVMTI_$1_LANG := C 200 ifneq (, $4) 201 BUILD_DEMO_JVMTI_$1_LANG := $4 202 endif 203 ifeq (C++, $4) 204 $1_EXTRA_CXX := $(LDFLAGS_CXX_JDK) $(LIBCXX) 205 endif 206 207 $1_CXXFLAGS := $(CXXFLAGS_JDKLIB) -I$(DEMO_SHARE_SRC)/jvmti/$1 \ 208 $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 \ 209 $(CXXFLAGS_DEBUG_SYMBOLS) 210 ifeq ($1-$(OPENJDK_TARGET_CPU_ARCH), waiters-sparc) 211 $1_FILTER := -xregs=no%appl 212 $1_CXXFLAGS := $$(filter-out $$($1_FILTER), $$($1_CXXFLAGS)) 213 endif 214 215 # Workaround for CFLAGS_JDKLIB containing ',' on solaris. If this is added as 'CFLAGS' to the 216 # eval call below, the comma gets expanded too early. 217 BUILD_DEMO_JVMTI_$1_CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_DEBUG_SYMBOLS) \ 218 -I$(DEMO_SHARE_SRC)/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 219 220 # Remove the -incremental:no setting to get .ilk-files like in the old build. 221 $$(eval $$(call SetupNativeCompilation,BUILD_DEMO_JVMTI_$1, \ 222 SRC := $(DEMO_SHARE_SRC)/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC), \ 223 LANG := $$(BUILD_DEMO_JVMTI_$1_LANG), \ 224 OPTIMIZATION := LOW, \ 225 CXXFLAGS := $$($1_CXXFLAGS), \ 226 LDFLAGS := $(filter-out -incremental:no -opt:ref, $(LDFLAGS_JDKLIB)), \ 227 LDFLAGS_macosx := $(call SET_EXECUTABLE_ORIGIN), \ 228 LDFLAGS_SUFFIX := $$($1_EXTRA_CXX), \ 229 LDFLAGS_SUFFIX_posix := $5, \ 230 LDFLAGS_SUFFIX_windows := $6, \ 231 LDFLAGS_SUFFIX_solaris := $7 -lc, \ 232 LDFLAGS_SUFFIX_linux := $8, \ 233 VERSIONINFO_RESOURCE := $(VERSION_INFO_RESOURCE), \ 234 RC_FLAGS := $$(RC_FLAGS) \ 235 -D "JDK_FNAME=$1.dll" \ 236 -D "JDK_INTERNAL_NAME=$1" \ 237 -D "JDK_FTYPE=0x2L", \ 238 OBJECT_DIR := $(JDK_OUTPUTDIR)/demoobjs/jvmti/$1, \ 239 OUTPUT_DIR := $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib, \ 240 LIBRARY := $1)) 241 242 $$(eval $$(call SetupZipArchive,BUILD_DEMO_JVMTI_SRC_$1, \ 243 SRC := $(DEMO_SHARE_SRC)/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC), \ 244 EXCLUDE_FILES := $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE), \ 245 ZIP := $(JDK_OUTPUTDIR)/demo/jvmti/$1/src.zip)) 246 247 $(JDK_OUTPUTDIR)/demo/jvmti/$1/README.txt: $(DEMO_SHARE_SRC)/jvmti/$1/README.txt 248 $$(call install-file) 249 $(CHMOD) -f ug+w $$@ 250 251 ifneq (, $$(wildcard $(DEMO_SHARE_SRC)/jvmti/$1/*.java)) 252 $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_JVMTI_$1_JAVA, \ 253 SETUP := GENERATE_USINGJDKBYTECODE, \ 254 SRC := $(DEMO_SHARE_SRC)/jvmti/$1, \ 255 BIN := $(JDK_OUTPUTDIR)/democlasses/jvmti/$1, \ 256 COPY := $(PATTERNS_TO_COPY), \ 257 JAR := $(JDK_OUTPUTDIR)/demo/jvmti/$1/$1.jar, \ 258 EXTRA_MANIFEST_ATTR := Main-Class: \n, \ 259 MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf)) 260 261 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jvmti/$1/$1.jar 262 endif 263 264 BUILD_DEMOS += $$(BUILD_DEMO_JVMTI_$1) \ 265 $(JDK_OUTPUTDIR)/demo/jvmti/$1/src.zip \ 266 $(JDK_OUTPUTDIR)/demo/jvmti/$1/README.txt 267 268 ifeq ($(OPENJDK_TARGET_OS), windows) 269 # These files normally end up in OBJECT_DIR but for demos they 270 # are supposed to be included in the distro. 271 $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.lib: $$(BUILD_DEMO_JVMTI_$1) 272 $(CP) $(JDK_OUTPUTDIR)/demoobjs/jvmti/$1/$1.lib $$@ 273 274 $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.exp: $$(BUILD_DEMO_JVMTI_$1) 275 $(CP) $(JDK_OUTPUTDIR)/demoobjs/jvmti/$1/$1.exp $$@ 276 277 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.lib \ 278 $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.exp 279 endif 280 endef 281 282 $(eval $(call SetupJVMTIDemo,compiledMethodLoad, agent_util)) 283 $(eval $(call SetupJVMTIDemo,gctest, agent_util)) 284 $(eval $(call SetupJVMTIDemo,heapTracker, agent_util java_crw_demo)) 285 $(eval $(call SetupJVMTIDemo,heapViewer, agent_util)) 286 $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo)) 287 $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo)) 288 $(eval $(call SetupJVMTIDemo,waiters, agent_util, , C++)) 289 $(eval $(call SetupJVMTIDemo,versionCheck, agent_util)) 290 291 ################################################################################################## 292 293 $(JDK_OUTPUTDIR)/demo/management/index.html: $(DEMO_SHARE_SRC)/management/index.html 294 $(call install-file) 295 $(CHMOD) -f ug+w $@ 296 297 $(JDK_OUTPUTDIR)/demo/jvmti/index.html: $(DEMO_SHARE_SRC)/jvmti/index.html 298 $(call install-file) 299 $(CHMOD) -f ug+w $@ 300 301 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/management/index.html \ 302 $(JDK_OUTPUTDIR)/demo/jvmti/index.html 303 304 ################################################################################################## 305 306 # The netbeans project files are copied into the demo directory. 307 ifeq ($(OPENJDK_TARGET_OS), solaris) 308 BUILD_DEMOS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \ 309 $(JDK_OUTPUTDIR)/demo/nbproject/%, \ 310 $(filter-out $(DEMO_SHARE_SRC)/nbproject/jfc/SwingApplet%, \ 311 $(call CacheFind, $(DEMO_SHARE_SRC)/nbproject))) 312 else 313 BUILD_DEMOS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \ 314 $(JDK_OUTPUTDIR)/demo/nbproject/%, \ 315 $(call CacheFind, $(DEMO_SHARE_SRC)/nbproject)) 316 endif 317 318 $(JDK_OUTPUTDIR)/demo/nbproject/%: $(DEMO_SHARE_SRC)/nbproject/% 319 $(call install-file) 320 $(CHMOD) -f ug+w $@ 321 322 ################################################################################################## 323 324 $(JDK_OUTPUTDIR)/demo/README: $(DEMO_SHARE_SRC)/README 325 $(call install-file) 326 327 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/README 328 329 ################################################################################################## 330 331 ifeq ($(OPENJDK_TARGET_OS), solaris) 332 333 $(JDK_OUTPUTDIR)/democlasses/jni/Poller/%: $(DEMO_SOLARIS_SRC)/jni/Poller/% 334 $(call install-file) 335 $(CHMOD) -f ug+w $@ 336 337 $(JDK_OUTPUTDIR)/demo/jni/Poller/README.txt: $(DEMO_SOLARIS_SRC)/jni/Poller/README.txt 338 $(call install-file) 339 $(CHMOD) -f ug+w $@ 340 341 $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar: \ 342 $(JDK_OUTPUTDIR)/democlasses/jni/Poller/README.txt $(JDK_OUTPUTDIR)/democlasses/jni/Poller/Poller.c 343 344 $(eval $(call SetupJavaCompilation,BUILD_DEMO_POLLER_JAR, \ 345 SETUP := GENERATE_USINGJDKBYTECODE, \ 346 SRC := $(DEMO_SOLARIS_SRC)/jni/Poller, \ 347 BIN := $(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ 348 HEADERS := $(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ 349 JAR := $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar, \ 350 MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \ 351 SRCZIP := $(JDK_OUTPUTDIR)/demo/jni/Poller/src.zip, \ 352 COPY := README.txt Poller.c, \ 353 JARMAIN := Client)) 354 355 356 357 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar $(JDK_OUTPUTDIR)/demo/jni/Poller/src.zip \ 358 $(JDK_OUTPUTDIR)/demo/jni/Poller/README.txt 359 360 $(eval $(call SetupNativeCompilation,BUILD_LIBPOLLER, \ 361 SRC := $(DEMO_SOLARIS_SRC)/jni/Poller, \ 362 LANG := C, \ 363 OPTIMIZATION := LOW, \ 364 CFLAGS := $(CFLAGS_JDKLIB) $(SHARED_LIBRARY_FLAGS) \ 365 -I$(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ 366 LDFLAGS := $(LDFLAGS_JDKLIB), \ 367 LDFLAGS_SUFFIX_solaris := -lc, \ 368 OBJECT_DIR := $(JDK_OUTPUTDIR)/demoobjs/jni/Poller, \ 369 OUTPUT_DIR := $(JDK_OUTPUTDIR)/demoobjs, \ 370 LIBRARY := Poller)) 371 372 # 373 # We can only compile native code after jar has been build (since we depend on generated .h files) 374 # 375 $(JDK_OUTPUTDIR)/demoobjs/jni/Poller/Poller.o: $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar 376 377 $(JDK_OUTPUTDIR)/demo/jni/Poller/lib/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX): \ 378 $(JDK_OUTPUTDIR)/demoobjs/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX) 379 $(call install-file) 380 381 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jni/Poller/lib/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX) 382 383 endif 384 385 ################################################################################################## 386 387 ifndef OPENJDK 388 DB_ZIP_DIR := $(wildcard $(JDK_TOPDIR)/src/closed/db) 389 DB_DEMO_ZIPFILE := $(wildcard $(DB_ZIP_DIR)/*.zip) 390 391 $(JDK_OUTPUTDIR)/demo/_the.db.unzipped: $(DB_DEMO_ZIPFILE) 392 $(MKDIR) -p $(@D) 393 $(RM) -r $(JDK_OUTPUTDIR)/demo/db $(JDK_OUTPUTDIR)/demo/demo 394 $(CD) $(JDK_OUTPUTDIR)/demo && $(UNZIP) -q -o $< 395 $(MV) $(JDK_OUTPUTDIR)/demo/db-derby-*-bin/demo $(JDK_OUTPUTDIR)/demo/db 396 $(CD) $(JDK_OUTPUTDIR)/demo && $(RM) -r db-derby-*-bin 397 $(TOUCH) $@ 398 399 # Copy this after the unzip above to avoid race with directory creation and mv command. 400 $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html: \ 401 $(DB_ZIP_DIR)/README-JDK-DEMOS.html \ 402 | $(JDK_OUTPUTDIR)/demo/_the.db.unzipped 403 $(MKDIR) -p $(@D) 404 $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(DB_ZIP_DIR)/COPYRIGHTYEAR)/" > $@ 405 406 BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/_the.db.unzipped $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html 407 endif 408 409 ################################################################################################## 410 411 all: $(BUILD_DEMOS) 412 413 .PHONY: all