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