|  | # | 
|  | # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. | 
|  | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 
|  | # | 
|  | # This code is free software; you can redistribute it and/or modify it | 
|  | # under the terms of the GNU General Public License version 2 only, as | 
|  | # published by the Free Software Foundation.  Oracle designates this | 
|  | # particular file as subject to the "Classpath" exception as provided | 
|  | # by Oracle in the LICENSE file that accompanied this code. | 
|  | # | 
|  | # This code is distributed in the hope that it will be useful, but WITHOUT | 
|  | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | 
|  | # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | 
|  | # version 2 for more details (a copy is included in the LICENSE file that | 
|  | # accompanied this code). | 
|  | # | 
|  | # You should have received a copy of the GNU General Public License version | 
|  | # 2 along with this work; if not, write to the Free Software Foundation, | 
|  | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | 
|  | # | 
|  | # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | 
|  | # or visit www.oracle.com if you need additional information or have any | 
|  | # questions. | 
|  | # | 
|  |  | 
|  | default: all | 
|  |  | 
|  | include $(SPEC) | 
|  | include MakeBase.gmk | 
|  | include JavaCompilation.gmk | 
|  | include NativeCompilation.gmk | 
|  |  | 
|  | # Setup the java compilers for the JDK build. | 
|  | include Setup.gmk | 
|  |  | 
|  | # Append demo goals to this variable. | 
|  | BUILD_DEMOS= | 
|  |  | 
|  | # The demo structure and contents should really be cleaned up. | 
|  | # Now every other demo has its own quirks where to put the | 
|  | # READMEs and other files. | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | define SetupAppletDemo | 
|  | $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_APPLET_$1,\ | 
|  | SETUP:=GENERATE_USINGJDKBYTECODE,\ | 
|  | SRC:=$(JDK_TOPDIR)/src/$3share/demo/applets/$1,\ | 
|  | BIN:=$(JDK_OUTPUTDIR)/demo/applets/$1,\ | 
|  | COPY:=.html .java .xyz .obj .au .gif,\ | 
|  | DISABLE_SJAVAC:=$2)) | 
|  | BUILD_DEMOS += $$(BUILD_DEMO_APPLET_$1) | 
|  | endef | 
|  |  | 
|  | $(eval $(call SetupAppletDemo,ArcTest)) | 
|  | $(eval $(call SetupAppletDemo,BarChart)) | 
|  | $(eval $(call SetupAppletDemo,Blink)) | 
|  | $(eval $(call SetupAppletDemo,CardTest)) | 
|  | $(eval $(call SetupAppletDemo,Clock)) | 
|  | $(eval $(call SetupAppletDemo,DitherTest)) | 
|  | $(eval $(call SetupAppletDemo,DrawTest)) | 
|  | $(eval $(call SetupAppletDemo,Fractal)) | 
|  | $(eval $(call SetupAppletDemo,GraphicsTest)) | 
|  | $(eval $(call SetupAppletDemo,MoleculeViewer)) | 
|  | $(eval $(call SetupAppletDemo,NervousText)) | 
|  | $(eval $(call SetupAppletDemo,SimpleGraph)) | 
|  | $(eval $(call SetupAppletDemo,SortDemo)) | 
|  | $(eval $(call SetupAppletDemo,SpreadSheet)) | 
|  | # Build WireFrame without a server since it | 
|  | # has a class Matrix3D that also exists in MoleculeViewer. | 
|  | $(eval $(call SetupAppletDemo,WireFrame,true)) | 
|  |  | 
|  | ifndef OPENJDK | 
|  | $(eval $(call SetupAppletDemo,Animator,,closed/)) | 
|  | $(eval $(call SetupAppletDemo,GraphLayout,true,closed/)) | 
|  | $(eval $(call SetupAppletDemo,JumpingBox,,closed/)) | 
|  | $(eval $(call SetupAppletDemo,TicTacToe,,closed/)) | 
|  | endif | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | PATTERNS_TO_COPY=.html .txt .properties .js .gif .jpg .theme .data .opt README .c .h .png .ttf | 
|  |  | 
|  | define SetupDemo | 
|  | # Param 1 = Name of the demo | 
|  | # Param 2 = Subdirectory of the demo below the demo directory. | 
|  | # Param 3 = Additional javac flags. | 
|  | # Param 4 = The main class for the jar. | 
|  | # Param 5 = Additional source directory. | 
|  | # Param 6 = Extra dir below $(JDK_TOPDIR)/src (closed) | 
|  | # Param 7 = List of files to copy | 
|  | # Param 8 = Base name of jar file. Defaults to $1 | 
|  | # Param 9 = Exclude list | 
|  | # Param 10 = Extra copy patterns | 
|  | # Param 11 = Extra manifest attribute | 
|  | # Param 12 = Suffix for compiler setup name | 
|  |  | 
|  | # In some demos the source is found in a subdir called src. | 
|  | $1_MAIN_SRC:=$$(wildcard $(JDK_TOPDIR)/src/$6share/demo/$2/$1/src) | 
|  | ifeq ($$($1_MAIN_SRC),) | 
|  | $1_MAIN_SRC:=$(JDK_TOPDIR)/src/$6share/demo/$2/$1 | 
|  | endif | 
|  |  | 
|  | ifneq ($8,) | 
|  | $1_JARFILE := $8.jar | 
|  | else | 
|  | $1_JARFILE := $1.jar | 
|  | endif | 
|  |  | 
|  | ifeq ($(findstring $1,Laffy SwingSet3),) | 
|  | $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_$1,\ | 
|  | SETUP:=GENERATE_USINGJDKBYTECODE,\ | 
|  | ADD_JAVAC_FLAGS:=$3,\ | 
|  | SRC:=$$($1_MAIN_SRC) $5,\ | 
|  | BIN:=$(JDK_OUTPUTDIR)/democlasses/$2/$1,\ | 
|  | COPY:=$(PATTERNS_TO_COPY) $(10),\ | 
|  | JAR:=$(JDK_OUTPUTDIR)/demo/$2/$1/$$($1_JARFILE),\ | 
|  | JARMAIN:=$4,\ | 
|  | MANIFEST:=$(JDK_TOPDIR)/make/tools/manifest.mf,\ | 
|  | EXTRA_MANIFEST_ATTR:=$(11),\ | 
|  | SRCZIP:=$(JDK_OUTPUTDIR)/demo/$2/$1/src.zip,\ | 
|  | EXCLUDE_FILES:=$9,\ | 
|  | DISABLE_SJAVAC:=$(12))) | 
|  |  | 
|  | BUILD_DEMOS +=  $$(BUILD_DEMO_$1) \ | 
|  | $(JDK_OUTPUTDIR)/demo/$2/$1/$$($1_JARFILE) \ | 
|  | $(JDK_OUTPUTDIR)/demo/$2/$1/src.zip | 
|  | endif | 
|  |  | 
|  | # Copy files. | 
|  | $1_COPY_TARGETS :=  $$(patsubst $(JDK_TOPDIR)/src/$6share/demo/$2/$1/%,\ | 
|  | $(JDK_OUTPUTDIR)/demo/$2/$1/%,\ | 
|  | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/$6share/demo/$2/$1/,$7))) | 
|  | ifneq ($7,) | 
|  | $(JDK_OUTPUTDIR)/demo/$2/$1/% : $(JDK_TOPDIR)/src/$6share/demo/$2/$1/% | 
|  | $(MKDIR) -p $$(@D) | 
|  | $(CP) $$< $$@ | 
|  | $(CHMOD) -f ug+w $$@ | 
|  |  | 
|  | BUILD_DEMOS += $$($1_COPY_TARGETS) | 
|  | endif | 
|  |  | 
|  | endef | 
|  |  | 
|  | $(eval $(call SetupDemo,CodePointIM,jfc,,CodePointIM,,,*.html)) | 
|  | $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.services : \ | 
|  | $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar \ | 
|  | $(JDK_TOPDIR)/src/share/demo/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor | 
|  | (cd $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM && \ | 
|  | $(MKDIR) -p _the.tmp/META-INF/services && \ | 
|  | $(CP) $(JDK_TOPDIR)/src/share/demo/jfc/CodePointIM/java.awt.im.spi.InputMethodDescriptor _the.tmp/META-INF/services && \ | 
|  | cd _the.tmp && \ | 
|  | $(JAR) uf $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar META-INF/services/java.awt.im.spi.InputMethodDescriptor && \ | 
|  | cd META-INF/services && \ | 
|  | $(JAR) uf $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/CodePointIM.jar java.awt.im.spi.InputMethodDescriptor) | 
|  | $(RM) -r $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.tmp | 
|  | $(TOUCH) $@ | 
|  |  | 
|  | BUILD_DEMOS+=$(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.services | 
|  |  | 
|  | $(eval $(call SetupDemo,FileChooserDemo,jfc,,FileChooserDemo,,,README*)) | 
|  | $(eval $(call SetupDemo,Font2DTest,jfc,,Font2DTest,,,*.html *.txt)) | 
|  | $(eval $(call SetupDemo,Metalworks,jfc,,Metalworks,,,README*)) | 
|  | $(eval $(call SetupDemo,Notepad,jfc,,Notepad,,,README*)) | 
|  | $(eval $(call SetupDemo,SampleTree,jfc,,SampleTree,,,README*)) | 
|  | $(eval $(call SetupDemo,SwingApplet,jfc,,SwingApplet,,,README* *.html)) | 
|  | $(eval $(call SetupDemo,TableExample,jfc,,TableExample,,,README*)) | 
|  | $(eval $(call SetupDemo,TransparentRuler,jfc,,transparentruler.Ruler,,,README*)) | 
|  | $(eval $(call SetupDemo,jconsole-plugin,scripting,,,,,*.xml *.txt,,,,Main-Class: \n)) | 
|  | $(eval $(call SetupDemo,FullThreadDump,management,,FullThreadDump,,,README*)) | 
|  | $(eval $(call SetupDemo,JTop,management,,JTop,,,README*)) | 
|  | $(eval $(call SetupDemo,MemoryMonitor,management,,MemoryMonitor,,,README*)) | 
|  | $(eval $(call SetupDemo,VerboseGC,management,,VerboseGC,,,README*)) | 
|  | $(eval $(call SetupDemo,zipfs,nio,,,,,README* *.java,,,,Main-Class: \n)) | 
|  |  | 
|  | ifndef OPENJDK | 
|  | $(eval $(call SetupDemo,Laffy,jfc,,,,closed/,*)) | 
|  | $(eval $(call SetupDemo,SwingSet3,jfc,,,,closed/,*)) | 
|  |  | 
|  | $(eval $(call SetupDemo,Java2D,jfc,,java2d.Java2Demo,,closed/,*.html README*,Java2Demo)) | 
|  | $(eval $(call SetupDemo,Stylepad,jfc,,Stylepad,\ | 
|  | $(JDK_TOPDIR)/src/share/demo/jfc/Notepad,closed/,*.txt,,$(JDK_TOPDIR)/src/share/demo/jfc/Notepad/README.txt)) | 
|  | $(eval $(call SetupDemo,SwingSet2,jfc,,SwingSet2,,closed/,README* *.html,,,.java COPYRIGHT,\ | 
|  | SplashScreen-Image: resources/images/splash.png,true)) | 
|  |  | 
|  | BUILD_DEMOS += $(patsubst $(JDK_TOPDIR)/src/closed/share/demo/nbproject/%,\ | 
|  | $(JDK_OUTPUTDIR)/demo/nbproject/%,\ | 
|  | $(shell $(FIND) $(JDK_TOPDIR)/src/closed/share/demo/nbproject/ -type f)) | 
|  | $(JDK_OUTPUTDIR)/demo/nbproject/% : $(JDK_TOPDIR)/src/closed/share/demo/nbproject/% | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  | endif | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | # In the old makefiles, j2dbench was not compiled. | 
|  | #$(eval $(call SetupDemo,J2DBench,java2d,/src,,j2dbench/J2DBench)) | 
|  |  | 
|  | # JVMTI demos are a bit strange and share some files, but be careful the | 
|  | #    shared files are just the *.c and *.h files, not the README or sample | 
|  | #    makefiles. So we always exclude the README.txt and sample.makefile.txt | 
|  | #    from the extra sources. | 
|  | define SetupJVMTIDemo | 
|  | # Param 1 = Name of the demo | 
|  | # Param 2 = add these directories to the includes, default is agent_util | 
|  | # Param 3 = extra CFLAGS | 
|  | # Param 4 = C or C++ (defaults to C) | 
|  | # Param 5 = libs for posix | 
|  | # Param 6 = libs for windows | 
|  | # Param 7 = libs for solaris | 
|  | BUILD_DEMO_JVMTI_$1_EXTRA_SRC:= \ | 
|  | $$(wildcard $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/demo/jvmti/$1) \ | 
|  | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/,$2)) | 
|  | BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE:= \ | 
|  | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/,$2)/README.txt) \ | 
|  | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/,$2)/sample.makefile.txt) | 
|  | BUILD_DEMO_JVMTI_$1_EXTRA_INC:=$$(addprefix -I,$$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC)) | 
|  | BUILD_DEMO_JVMTI_$1_LANG:=C | 
|  | ifneq (,$4) | 
|  | BUILD_DEMO_JVMTI_$1_LANG:=$4 | 
|  | endif | 
|  | ifeq (C++,$4) | 
|  | $1_EXTRA_CXX:=$(LDFLAGS_CXX_JDK) $(LIBCXX) | 
|  | endif | 
|  |  | 
|  | $1_CXXFLAGS:=$(CXXFLAGS_JDKLIB) -I$(JDK_TOPDIR)/src/share/demo/jvmti/$1 \ | 
|  | $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 \ | 
|  | $(CXXFLAGS_DEBUG_SYMBOLS) | 
|  | ifeq ($1-$(OPENJDK_TARGET_CPU_ARCH),waiters-sparc) | 
|  | $1_FILTER:=-xregs=no%appl | 
|  | $1_CXXFLAGS:=$$(filter-out $$($1_FILTER),$$($1_CXXFLAGS)) | 
|  | endif | 
|  |  | 
|  | # Workaround for CFLAGS_JDKLIB containing ',' on solaris. If this is added as 'CFLAGS' to the | 
|  | # eval call below, the comma gets expanded too early. | 
|  | BUILD_DEMO_JVMTI_$1_CFLAGS:=$(CFLAGS_JDKLIB) $(CFLAGS_DEBUG_SYMBOLS) \ | 
|  | -I$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 | 
|  |  | 
|  | # Remove the -incremental:no setting to get .ilk-files like in the old build. | 
|  | $$(eval $$(call SetupNativeCompilation,BUILD_DEMO_JVMTI_$1,\ | 
|  | SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC),\ | 
|  | LANG:=$$(BUILD_DEMO_JVMTI_$1_LANG),\ | 
|  | OPTIMIZATION:=LOW,\ | 
|  | CXXFLAGS:=$$($1_CXXFLAGS),\ | 
|  | LDFLAGS:=$(filter-out -incremental:no -opt:ref,$(LDFLAGS_JDKLIB)),\ | 
|  | LDFLAGS_macosx:=$(call SET_EXECUTABLE_ORIGIN),\ | 
|  | LDFLAGS_SUFFIX:=$$($1_EXTRA_CXX),\ | 
|  | LDFLAGS_SUFFIX_posix:=$5,\ | 
|  | LDFLAGS_SUFFIX_windows:=$6,\ | 
|  | LDFLAGS_SUFFIX_solaris:=$7 -lc,\ | 
|  | LDFLAGS_SUFFIX_linux:=$8,\ | 
|  | VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ | 
|  | RC_FLAGS:=$$(RC_FLAGS) \ | 
|  | -D "JDK_FNAME=$1.dll" \ | 
|  | -D "JDK_INTERNAL_NAME=$1" \ | 
|  | -D "JDK_FTYPE=0x2L",\ | 
|  | OBJECT_DIR:=$(JDK_OUTPUTDIR)/demoobjs/jvmti/$1,\ | 
|  | OUTPUT_DIR:=$(JDK_OUTPUTDIR)/demo/jvmti/$1/lib,\ | 
|  | LIBRARY:=$1)) | 
|  |  | 
|  | $$(eval $$(call SetupZipArchive,BUILD_DEMO_JVMTI_SRC_$1,\ | 
|  | SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC),\ | 
|  | EXCLUDE_FILES:=$$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE), \ | 
|  | ZIP:=$(JDK_OUTPUTDIR)/demo/jvmti/$1/src.zip)) | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/README.txt : $(JDK_TOPDIR)/src/share/demo/jvmti/$1/README.txt | 
|  | $(MKDIR) -p $$(@D) | 
|  | $(CP) $$< $$@ | 
|  | $(CHMOD) -f ug+w $$@ | 
|  |  | 
|  | ifneq (,$$(wildcard $(JDK_TOPDIR)/src/share/demo/jvmti/$1/*.java)) | 
|  | $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_JVMTI_$1_JAVA,\ | 
|  | SETUP:=GENERATE_USINGJDKBYTECODE,\ | 
|  | SRC:=$(JDK_TOPDIR)/src/share/demo/jvmti/$1,\ | 
|  | BIN:=$(JDK_OUTPUTDIR)/democlasses/jvmti/$1,\ | 
|  | COPY:=$(PATTERNS_TO_COPY),\ | 
|  | JAR:=$(JDK_OUTPUTDIR)/demo/jvmti/$1/$1.jar,\ | 
|  | EXTRA_MANIFEST_ATTR:=Main-Class: \n,\ | 
|  | MANIFEST:=$(JDK_TOPDIR)/make/tools/manifest.mf)) | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jvmti/$1/$1.jar | 
|  | endif | 
|  |  | 
|  | BUILD_DEMOS += 	$$(BUILD_DEMO_JVMTI_$1) \ | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/src.zip \ | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/README.txt | 
|  |  | 
|  | ifeq ($(OPENJDK_TARGET_OS),windows) | 
|  | # These files normally end up in OBJECT_DIR but for demos they | 
|  | # are supposed to be included in the distro. | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.lib: $$(BUILD_DEMO_JVMTI_$1) | 
|  | $(CP) $(JDK_OUTPUTDIR)/demoobjs/jvmti/$1/$1.lib $$@ | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.exp: $$(BUILD_DEMO_JVMTI_$1) | 
|  | $(CP) $(JDK_OUTPUTDIR)/demoobjs/jvmti/$1/$1.exp $$@ | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.lib \ | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/$1/lib/$1.exp | 
|  | endif | 
|  | endef | 
|  |  | 
|  | $(eval $(call SetupJVMTIDemo,compiledMethodLoad,	agent_util)) | 
|  | $(eval $(call SetupJVMTIDemo,gctest,			agent_util)) | 
|  | $(eval $(call SetupJVMTIDemo,heapTracker,		agent_util java_crw_demo)) | 
|  | $(eval $(call SetupJVMTIDemo,heapViewer,		agent_util)) | 
|  | $(eval $(call SetupJVMTIDemo,hprof,			java_crw_demo,\ | 
|  | -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt,C,\ | 
|  | -ldl,ws2_32.lib winmm.lib,-lsocket -lnsl,-lpthread)) | 
|  |  | 
|  | $(eval $(call SetupJVMTIDemo,minst,			agent_util java_crw_demo)) | 
|  | $(eval $(call SetupJVMTIDemo,mtrace,			agent_util java_crw_demo)) | 
|  | $(eval $(call SetupJVMTIDemo,waiters,			agent_util,,C++)) | 
|  | $(eval $(call SetupJVMTIDemo,versionCheck,		agent_util)) | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | # The jpda demo (com/sun/tools/example) is oddly enough stored in src/share/classes. | 
|  | # At least, we do not need to compile the jpda demo, just jar/zip up the sources. | 
|  | JPDA_SOURCES:=$(shell $(FIND) $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example -type f) | 
|  | # The number of files are few enough so that we can use echo safely below to list them. | 
|  | JPDA_FILES:=$(subst $(JDK_TOPDIR)/src/share/classes/,,$(JPDA_SOURCES)) | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jpda/src.zip : $(JPDA_SOURCES) | 
|  | $(MKDIR) -p $(@D) | 
|  | (cd $(JDK_TOPDIR)/src/share/classes && $(ZIP) -qru $@ com -i "com/sun/tools/example/*") | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jpda/examples.jar : $(JPDA_SOURCES) | 
|  | $(MKDIR) -p $(@D) | 
|  | $(RM) $(@D)/_the.sources | 
|  | $(call ListPathsSafely,JPDA_FILES,\n, >> $(@D)/_the.sources) | 
|  | $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" 		\ | 
|  | -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" $(JDK_TOPDIR)/make/tools/manifest.mf > $(@D)/_the.manifest | 
|  | $(ECHO) "Main-Class: " >> $(@D)/_the.manifest | 
|  | (cd $(JDK_TOPDIR)/src/share/classes && $(JAR) cfm  $@ $(@D)/_the.manifest @$(@D)/_the.sources) | 
|  | (cd $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example && $(JAR) uf $@ README) | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jpda/com/sun/tools/example/README : $(JDK_TOPDIR)/src/share/classes/com/sun/tools/example/README | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jpda/src.zip $(JDK_OUTPUTDIR)/demo/jpda/examples.jar \ | 
|  | $(JDK_OUTPUTDIR)/demo/jpda/com/sun/tools/example/README | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/management/index.html : $(JDK_TOPDIR)/src/share/demo/management/index.html | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/index.html : $(JDK_TOPDIR)/src/share/demo/jvmti/index.html | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/management/index.html \ | 
|  | $(JDK_OUTPUTDIR)/demo/jvmti/index.html | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | # The netbeans project files are copied into the demo directory. | 
|  | BUILD_DEMOS += $(patsubst $(JDK_TOPDIR)/src/share/demo/nbproject/%,\ | 
|  | $(JDK_OUTPUTDIR)/demo/nbproject/%,\ | 
|  | $(shell $(FIND) $(JDK_TOPDIR)/src/share/demo/nbproject/ -type f)) | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/nbproject/% : $(JDK_TOPDIR)/src/share/demo/nbproject/% | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/README: $(JDK_TOPDIR)/src/share/demo/README | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/README | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | ifeq ($(OPENJDK_TARGET_OS), solaris) | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/democlasses/jni/Poller/% : $(JDK_TOPDIR)/src/solaris/demo/jni/Poller/% | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jni/Poller/README.txt : $(JDK_TOPDIR)/src/solaris/demo/jni/Poller/README.txt | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  | $(CHMOD) -f ug+w $@ | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar : \ | 
|  | $(JDK_OUTPUTDIR)/democlasses/jni/Poller/README.txt $(JDK_OUTPUTDIR)/democlasses/jni/Poller/Poller.c | 
|  |  | 
|  | $(eval $(call SetupJavaCompilation,BUILD_DEMO_POLLER_JAR,\ | 
|  | SETUP:=GENERATE_USINGJDKBYTECODE, \ | 
|  | SRC:=$(JDK_TOPDIR)/src/solaris/demo/jni/Poller, \ | 
|  | BIN:=$(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ | 
|  | HEADERS:=$(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ | 
|  | JAR:=$(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar, \ | 
|  | MANIFEST:=$(JDK_TOPDIR)/make/tools/manifest.mf, \ | 
|  | SRCZIP:=$(JDK_OUTPUTDIR)/demo/jni/Poller/src.zip, \ | 
|  | COPY:=README.txt Poller.c, \ | 
|  | JARMAIN:=Client)) | 
|  |  | 
|  |  | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar $(JDK_OUTPUTDIR)/demo/jni/Poller/src.zip \ | 
|  | $(JDK_OUTPUTDIR)/demo/jni/Poller/README.txt | 
|  |  | 
|  | $(eval $(call SetupNativeCompilation,BUILD_LIBPOLLER,\ | 
|  | SRC:=$(JDK_TOPDIR)/src/solaris/demo/jni/Poller, \ | 
|  | LANG:=C,\ | 
|  | OPTIMIZATION:=LOW,\ | 
|  | CFLAGS:=$(CFLAGS_JDKLIB) $(SHARED_LIBRARY_FLAGS) \ | 
|  | -I$(JDK_OUTPUTDIR)/democlasses/jni/Poller, \ | 
|  | LDFLAGS:=$(LDFLAGS_JDKLIB), \ | 
|  | OBJECT_DIR:=$(JDK_OUTPUTDIR)/demoobjs/jni/Poller,\ | 
|  | OUTPUT_DIR:=$(JDK_OUTPUTDIR)/demoobjs, \ | 
|  | LIBRARY:=Poller)) | 
|  |  | 
|  | # | 
|  | # We can only compile native code after jar has been build (since we depend on generated .h files) | 
|  | # | 
|  | $(JDK_OUTPUTDIR)/demoobjs/jni/Poller/Poller.o : $(JDK_OUTPUTDIR)/demo/jni/Poller/Poller.jar | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/jni/Poller/lib/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX) : \ | 
|  | $(JDK_OUTPUTDIR)/demoobjs/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX) | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) $< $@ | 
|  |  | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jni/Poller/lib/$(LIBRARY_PREFIX)Poller$(SHARED_LIBRARY_SUFFIX) | 
|  |  | 
|  | endif | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | ifndef OPENJDK | 
|  | DB_DEMO_ZIPFILE := $(shell $(FIND) $(JDK_TOPDIR)/src/closed/share/db -name "*demo*.zip") | 
|  |  | 
|  | $(JDK_OUTPUTDIR)/demo/_the.db.unzipped: $(DB_DEMO_ZIPFILE) | 
|  | $(MKDIR) -p $(@D) | 
|  | $(RM) -r $(JDK_OUTPUTDIR)/demo/db $(JDK_OUTPUTDIR)/demo/demo | 
|  | $(CD) $(JDK_OUTPUTDIR)/demo && $(UNZIP) -q -o $< | 
|  | $(MV) $(JDK_OUTPUTDIR)/demo/demo $(JDK_OUTPUTDIR)/demo/db | 
|  | $(TOUCH) $@ | 
|  |  | 
|  | #    Copy this after the unzip above to avoid race with directory creation and mv command. | 
|  | $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html: \ | 
|  | $(JDK_TOPDIR)/src/closed/share/db/README-JDK-DEMOS.html \ | 
|  | | $(JDK_OUTPUTDIR)/demo/_the.db.unzipped | 
|  | $(MKDIR) -p $(@D) | 
|  | $(CP) '$<' '$@' | 
|  | BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/_the.db.unzipped $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html | 
|  | endif | 
|  |  | 
|  | ################################################################################################## | 
|  |  | 
|  | all: $(BUILD_DEMOS) | 
|  |  | 
|  | .PHONY: all |