RFC: JamVM - Taste the New Flavour!

Dr Andrew John Hughes ahughes at redhat.com
Mon Feb 21 18:33:30 PST 2011


On 02:48 Tue 22 Feb     , Xerxes Rånby wrote:
> On 2011-02-21 22:40, Robert Lougher wrote:
> > Hi,
> >
> > On 21 February 2011 21:22, Dr Andrew John Hughes<ahughes at redhat.com>  wrote:
> >> On 21:20 Sat 19 Feb     , Xerxes Ranby wrote:
> >>> Greetings!
> >>>
> >>> "JamVM's got a shiny new Git repository, which contains the port to the
> >>> OpenJDK class-library."
> >>> http://draenog.blogspot.com/2011/02/openjdkjamvm-git-repository.html
> >>>
> >>> The attached patch adds Robert Lougher's new JamVM flavour to Icedtea6!
> >>>
> >> See comments below on the --enable-jamvm option.
> >> I'll leave comments on addvm to doko.
> 
> I will split this patch in two commits, one for each option, to ease 
> review, In this mail i have added the patch for the --enable-jamvm option.
> 
> I will add --with-additional-vms=jamvm in a follow up patch.
> 

This looks fine now and can go in for me.
It looks like a simple rename issue for WITH_CACAO.  Either you or I can
do it, but lets get this patch in first so those changes don't break this.

Once this is in, I plan to branch for 1.10.

> >>
> >> I think this should be ok to go in before the 1.10 branch as the changes
> >> to the build are mainly ancillary and don't affect the main options.
> >>
> >
> > Xerxes, can you take a new snapshot from the berlios git tree?  A
> > couple of people have already tested the port.  One of them (Ludovic
> > Orban) reported a crash with an application which stressed the GC
> > (failure after compaction).  I tracked this down over the weekend, and
> > the port is now running stably.
> >
> > Rob.
> >
> > P.S.  Thanks for doing the integration!
> >
> 
> Superb!
> I have grabbed the updated stable snapshot. Thank you for the fix!
> 
> >>> Index: icedtea6/Makefile.am
> >>> ===================================================================
> >>> --- icedtea6.orig/Makefile.am 2011-02-19 02:26:05.000000000 +0100
> >>> +++ icedtea6/Makefile.am      2011-02-19 20:58:34.000000000 +0100
> >>> @@ -11,6 +11,18 @@
> >>>   CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.gz
> >>>   CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz
> >>>
> >>> +# The jamvm-e9b0f82b9c9cfe5e5550f5e77de53ec2fba603a3.tar.gz got fetched from
> >>> +# http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/snapshot/jamvm-e9b0f82b9c9cfe5e5550f5e77de53ec2fba603a3.tar.gz
> >>> +# Unfortunally the generated .tar.gz by the berlios cgit snapshot function
> >>> +# keeps changing sha256sum. I have hosted a snapshot on labb.zafena.se
> >>> +# while we wait for the final JamVM 1.6.0 release.
> >>> +JAMVM_VERSION = e9b0f82b9c9cfe5e5550f5e77de53ec2fba603a3
> >>> +JAMVM_SHA256SUM = 24cf67795970d7e63d297a13b370ae8c3b141c35a22c3fd96137b5e62815a607
> >>> +JAMVM_BASE_URL = http://labb.zafena.se/jamvm
> >>> +JAMVM_URL = $(JAMVM_BASE_URL)/jamvm-$(JAMVM_VERSION).tar.gz
> >>> +JAMVM_SRC_ZIP = jamvm-$(JAMVM_VERSION).tar.gz
> >>> +JAMVM_IMPORT_PATH = \$(abs_top_builddir)/jamvm/install/hotspot
> >>> +
> >>
> >> I'd prefer JAMVM_IMPORT_PATH was with the other paths in the Makefile.am rather than here.
> 
> JAMVM_IMPORT_PATH Moved down to the other paths.
> 
> >> Is there a reason for the leading backslash?
> 
> No reason... removed.
> 
> >>>
> >>> +stamps/download-jamvm.stamp:
> >>> +if BUILD_JAMVM
> >>> +     if ! echo "$(JAMVM_SHA256SUM)  $(JAMVM_SRC_ZIP)" \
> >>> +      | $(SHA256SUM) --check ; \
> >>> +     then \
> >>> +      if [ $(JAMVM_SRC_ZIP) ] ; \
> >>> +      then \
> >>> +        mv $(JAMVM_SRC_ZIP) $(JAMVM_SRC_ZIP).old ; \
> >>> +      fi ; \
> >>> +      $(WGET) $(JAMVM_URL) -O $(JAMVM_SRC_ZIP); \
> >>> +      if ! echo "$(JAMVM_SHA256SUM)  $(JAMVM_SRC_ZIP)" \
> >>> +       | $(SHA256SUM) --check ; \
> >>> +      then echo "ERROR: Bad download of JamVM zip"; false; \
> >>> +      fi; \
> >>> +     fi
> >>> +endif
> >>> +     mkdir -p stamps
> >>> +     touch $@
> >>
> >> We need an option equivalent to --with-cacao-src-zip.  I'd suggest
> >> adding this in a follow up patch.  As with the drop tarballs, we
> >> should verify the checksum for pre-provided tarballs as well as
> >> download ones.  It should be just a matter of symlinking the tarball
> >> here if an alternate one is specified.
> >>
> 
> Noted, I will add --with-cacao-src-zip in another follow up patch.
> 
>  >> @@ -1018,6 +1080,7 @@
>  >>   	fi
>  >>
>  >>   	icedtea_version="$(PACKAGE_VERSION)$(ICEDTEA_REV)" ; \
>  >> +        if ! test "x$(WITH_JAMVM)" = "xno"; then \
>  >
>  > I don't think this will work, but it's hard to tell in patch form.
>  > It looks like WITH_CACAO is getting nested inside WITH_JAMVM which
>  > means WITH_CACAO will only be checked if WITH_JAMVM is set.
> 
> Thank you for spotting this. Yes this part was clearly wrong as can be 
> verified from the -version output of my first patch.
> 
> The goal of this part are to make sure that when using CACAO or JamVM 
> as the main VM then the Runtime environment should be named IcedTea6 
> Runtime Environment instead of OpenJDK Runtime Environment.
> 
>  >
>  > Can you include the whole rule in a reply?
>  >
> 
> New whole new rule now looks like this:
> 
>          if test "x$(WITH_CACAO)" = "xyes" || \
>             test "x$(ENABLE_JAMVM)" = "xyes"; then \
>            echo "JDK_DERIVATIVE_NAME=$${icedtea_version}" \
>              >>openjdk/jdk/make/common/shared/Defs.gmk ; \
>            echo "PRODUCT_NAME=$(ICEDTEA_NAME)" \
>              >>openjdk/jdk/make/common/shared/Defs.gmk ; \
>          else \
>            echo "JDK_DERIVATIVE_NAME=$(ICEDTEA_NAME) $${icedtea_version}" \
>              >>openjdk/jdk/make/common/shared/Defs.gmk ; \
>          fi ;
> 
> 
> And now java -version work as expected when using --enable-jamvm
> xranby at hp:~/icedtea6-jamvm-build$ ./openjdk.build/j2sdk-image/bin/java 
> -version
> java version "1.6.0_21"
> IcedTea6 Runtime Environment (1.10pre+r55566ffe7026) (Ubuntu build 
> 1.6.0_21-b21)
> JamVM (build 1.6.0-devel, inline-threaded interpreter)
> 
> >>> @@ -1694,6 +1771,61 @@
> >>>        fi
> >>>        rm -f stamps/rewrite-rhino.stamp
> >>>
> >>> +# JAMVM
> 
> Renamed to JamVM
> 
> >>> +
> >>> +stamps/jamvm.stamp: $(OPENJDK_TREE) stamps/rt.stamp
> >>> +if BUILD_JAMVM
> >>> +     cd jamvm/jamvm&&  \
> >>> +     ./autogen.sh --with-java-runtime-library=openjdk \
> >>> +       --prefix=$(abs_top_builddir)/jamvm/install ; \
> >>> +     $(MAKE) ; \
> >>> +     $(MAKE) install
> >>> +     mkdir -p $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server
> >>> +     cp $(abs_top_builddir)/jamvm/install/lib/libjvm.so $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server
> >>> +     ln -s server $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/client
> >>> +     touch $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server/Xusage.txt
> >>> +     touch $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/libjsig.so
> >>> +endif
> 
> Added missing
> 	mkdir -p stamps
> 	touch $@
> 
> >>> Index: icedtea6/configure.ac
> >>> ===================================================================
> >>> --- icedtea6.orig/configure.ac        2011-02-19 02:26:05.000000000 +0100
> >>> +++ icedtea6/configure.ac     2011-02-19 02:26:38.000000000 +0100
> >>> @@ -175,6 +175,9 @@
> >>>   AC_CHECK_WITH_CACAO_HOME
> >>>   AC_CHECK_WITH_CACAO_SRC_ZIP
> >>>   AC_CHECK_WITH_CACAO_SRC_DIR
> >>> +
> >>> +AC_CHECK_ENABLE_JAMVM
> >>> +
> >>
> >> Please use IT as the prefix rather than AC.  We are not the autoconf project :-)
> 
> Fixed, now we are the IcedTea project :-)!
> Thank you Andrew for renaming the rest whole lot!
> 
> >>
> >>>   DISABLE_OPTIMIZATIONS
> >>>   SET_SHARK_BUILD
> >>>   ENABLE_ZERO_BUILD
> >>> Index: icedtea6/acinclude.m4
> >>> ===================================================================
> >>> --- icedtea6.orig/acinclude.m4        2011-02-19 02:26:05.000000000 +0100
> >>> +++ icedtea6/acinclude.m4     2011-02-19 03:23:52.000000000 +0100
> >>> @@ -746,11 +746,15 @@
> >>>           sparc*-*-*) ;;
> >>>           x86_64-*-*) ;;
> >>>           *)
> >>> -          if test "x${WITH_CACAO}" != xno; then
> >>> +          if test "x${WITH_JAMVM}" != xno; then
> >>>               use_zero=no
> >>>             else
> >>> -            use_zero=yes
> >>> -          fi
> >>> +            if test "x${WITH_CACAO}" != xno; then
> >>> +              use_zero=no
> >>> +            else
> >>> +              use_zero=yes
> >>> +            fi
> >>> +       fi
> >>
> >> This would be clearer if you just added JAMVM as a new option
> >> rather than changing the CACAO one.
> 
> I have now changed this part to
> 
> @@ -746,7 +746,8 @@
>           sparc*-*-*) ;;
>           x86_64-*-*) ;;
>           *)
> -          if test "x${WITH_CACAO}" != xno; then
> +          if test "x${WITH_CACAO}" != xno || \
> +	     test "x${ENABLE_JAMVM}" = xyes; then
>               use_zero=no
>             else
>               use_zero=yes
> 
> 
> hope it makes things clearer.
> 
> >>
> >>>             ;;
> >>>         esac
> >>>       fi
> >>> @@ -820,6 +824,23 @@
> >>>     AM_CONDITIONAL(SHARK_BUILD, test "x${use_shark}" = xyes)
> >>>   ])
> >>>
> >>> +AC_DEFUN([AC_CHECK_ENABLE_JAMVM],
> >>> +[
> >>> +  AC_MSG_CHECKING(whether to use JamVM as VM)
> >>> +  AC_ARG_ENABLE([jamvm],
> >>> +           [AS_HELP_STRING(--enable-jamvm,use JamVM as VM [[default=no]])],
> >>> +  [
> >>> +    WITH_JAMVM="${enableval}"
> >>> +  ],
> >>> +  [
> >>> +    WITH_JAMVM=no
> >>> +  ])
> >>> +
> >>> +  AC_MSG_RESULT(${WITH_JAMVM})
> >>> +  AM_CONDITIONAL(WITH_JAMVM, test x"${WITH_JAMVM}" = "xyes")
> >>> +  AC_SUBST(WITH_JAMVM)
> >>> +])
> >>> +
> >>
> >> Again, should be IT_CHECK_ENABLE_JAMVM.
> >> Why are we using 'WITH_JAMVM' rather than 'ENABLE_JAMVM'?
> When CACAO got integrated in icedtea 1.3 then the configure option got 
> named --with-cacao this is  why the code are littered with WITH_CACAO...
> I simply copied the naming to make the code look familiar with its CACAO 
> heritage.
> 
> Noted, I will consider changing the WITH_CACAO to ENABLE_CACAO in a 
> future CACAO naming cleanup patch.
> 
>    'with' implies it's possible to
> >> take some option but we aren't using AC_ARG_WITH but AC_ARG_ENABLE.
> 
> I have switched name to ENABLE_JAMVM in the new patch.
> 
> >> Also if it is only yes/no a lot of the above would be simpler if we just tested for 'yes'.
> >> It seems to assume some other value is possible.
> 
> Updated to only check for yes.
> 
> 
> >>
> >> --
> >> Andrew :)
> >>
> >> Free Java Software Engineer
> >> Red Hat, Inc. (http://www.redhat.com)
> >>
> >> Support Free Java!
> >> Contribute to GNU Classpath and IcedTea
> >> http://www.gnu.org/software/classpath
> >> http://icedtea.classpath.org
> >> PGP Key: F5862A37 (https://keys.indymedia.org/)
> >> Fingerprint = EA30 D855 D50F 90CD F54D  0698 0713 C3ED F586 2A37
> >>
> 
> Thank you Rob and Andrew for the first review round.
> 
> New patch attached that implements the --enable-jamvm option
> 
> Ok to push?
> 
> Cheers
> Xerxes

> Index: icedtea6/Makefile.am
> ===================================================================
> --- icedtea6.orig/Makefile.am	2011-02-22 00:46:38.000000000 +0100
> +++ icedtea6/Makefile.am	2011-02-22 00:46:58.000000000 +0100
> @@ -11,6 +11,17 @@
>  CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.gz
>  CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz
>  
> +# The jamvm-3f02679901ac46985c9c3ac3f1b99e8eaf6a7e27.tar.gz got fetched from
> +# http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/snapshot/jamvm-3f02679901ac46985c9c3ac3f1b99e8eaf6a7e27.tar.gz
> +# Unfortunally the generated .tar.gz by the berlios cgit snapshot function
> +# keeps changing sha256sum. I have hosted a snapshot on labb.zafena.se
> +# while we wait for the final JamVM 1.6.0 release.
> +JAMVM_VERSION = 3f02679901ac46985c9c3ac3f1b99e8eaf6a7e27
> +JAMVM_SHA256SUM = 396daf08896a71cfcddfabfbaf2d8b3f07557d8143eaaa93be25e2d80f30e165
> +JAMVM_BASE_URL = http://labb.zafena.se/jamvm
> +JAMVM_URL = $(JAMVM_BASE_URL)/jamvm-$(JAMVM_VERSION).tar.gz
> +JAMVM_SRC_ZIP = jamvm-$(JAMVM_VERSION).tar.gz
> +
>  JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops
>  JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip
>  JAXWS_DROP_SHA256SUM = 0c460583898b968a58bf88eb53f90a0e34369e2562d65fb3a143512dfcaeb3eb
> @@ -37,6 +48,7 @@
>  ENDORSED_DIR = $(BOOT_DIR)/lib/endorsed
>  ECJ_BOOT_DIR = $(abs_top_builddir)/bootstrap/ecj
>  ICEDTEA_BOOT_DIR = $(abs_top_builddir)/bootstrap/icedtea
> +JAMVM_IMPORT_PATH = $(abs_top_builddir)/jamvm/install/hotspot
>  SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server
>  BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
>  BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
> @@ -126,8 +138,13 @@
>    ICEDTEA_BUILD_TARGET=jdk_only
>    ICEDTEA_DEBUG_BUILD_TARGET = jdk_fastdebug_only
>  else
> +if ENABLE_JAMVM
> +  ICEDTEA_BUILD_TARGET=jdk_only
> +  ICEDTEA_DEBUG_BUILD_TARGET = jdk_fastdebug_only
> +else
>    ICEDTEA_DEBUG_BUILD_TARGET = debug_build
>  endif
> +endif
>  
>  if BOOTSTRAPPING
>    BOOTSTRAP_DIRECTORY_STAMP = stamps/bootstrap-directory.stamp
> @@ -470,6 +487,11 @@
>  	ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)"
>  endif
>  
> +if ENABLE_JAMVM
> +ICEDTEA_ENV += \
> +	ALT_HOTSPOT_IMPORT_PATH="$(JAMVM_IMPORT_PATH)"
> +endif
> +
>  if DISABLE_OPTIMIZATIONS
>  ICEDTEA_ENV += \
>  	NO_OPTIMIZATIONS="true" \
> @@ -583,8 +605,10 @@
>  	clean-icedtea icedtea-against-icedtea clean-icedtea-ecj \
>  	clean-tools-jar clean-copy clean-rt hotspot \
>  	hotspot-helper clean-extra clean-jtreg clean-jtreg-reports \
> -	clean-add-zero clean-add-zero-debug clean-icedtea clean-icedtea-debug
> -	clean-icedtea-against-ecj clean-cacao clean-add-cacao clean-add-cacao-debug \
> +	clean-add-zero clean-add-zero-debug clean-icedtea clean-icedtea-debug \
> +	clean-icedtea-against-ecj \
> +	clean-jamvm \
> +	clean-cacao clean-add-cacao clean-add-cacao-debug \
>  	clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \
>  	clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \
>  	clean-rewriter clean-rewrite-rhino clean-add-systemtap clean-add-systemtap-debug \
> @@ -741,6 +765,29 @@
>  	rm -f $(CACAO_SRC_ZIP)
>  	rm -f stamps/download-cacao.stamp
>  
> +stamps/download-jamvm.stamp:
> +if BUILD_JAMVM
> +	if ! echo "$(JAMVM_SHA256SUM)  $(JAMVM_SRC_ZIP)" \
> +	 | $(SHA256SUM) --check ; \
> +	then \
> +	 if [ $(JAMVM_SRC_ZIP) ] ; \
> +	 then \
> +	   mv $(JAMVM_SRC_ZIP) $(JAMVM_SRC_ZIP).old ; \
> +	 fi ; \
> +	 $(WGET) $(JAMVM_URL) -O $(JAMVM_SRC_ZIP); \
> +	 if ! echo "$(JAMVM_SHA256SUM)  $(JAMVM_SRC_ZIP)" \
> +	  | $(SHA256SUM) --check ; \
> +	 then echo "ERROR: Bad download of JamVM zip"; false; \
> +	 fi; \
> +	fi
> +endif
> +	mkdir -p stamps
> +	touch $@
> +
> +clean-download-jamvm:
> +	rm -f $(JAMVM_SRC_ZIP)
> +	rm -f stamps/download-jamvm.stamp
> +
>  clean-drops: clean-download-jaxp-drop clean-download-jaf-drop \
>   clean-download-jaxws-drop
>  	if [ -e drops ] ; then \
> @@ -803,18 +850,19 @@
>  	rm -f stamps/download-openjdk.stamp
>  
>  stamps/download.stamp: stamps/download-drops.stamp stamps/download-cacao.stamp \
> - stamps/download-openjdk.stamp
> + stamps/download-jamvm.stamp stamps/download-openjdk.stamp
>  	touch stamps/download.stamp
>  
> -clean-download: clean-drops clean-download-cacao clean-download-openjdk
> +clean-download: clean-drops clean-download-cacao clean-download-jamvm \
> + clean-download-openjdk
>  	rm -f stamps/download.stamp
>  
>  stamps/extract.stamp: stamps/extract-openjdk.stamp \
> - stamps/extract-cacao.stamp
> + stamps/extract-cacao.stamp stamps/extract-jamvm.stamp
>  	mkdir -p stamps
>  	touch $@
>  
> -clean-extract: clean-extract-openjdk clean-cacao 
> +clean-extract: clean-extract-openjdk clean-cacao clean-jamvm
>  	rm -f stamps/extract.stamp
>  
>  stamps/extract-openjdk.stamp: stamps/download.stamp
> @@ -872,6 +920,20 @@
>  	mkdir -p stamps
>  	touch stamps/extract-cacao.stamp
>  
> +stamps/extract-jamvm.stamp:
> +if BUILD_JAMVM
> +	set -e ; \
> +	if ! test -d jamvm ; \
> +	then \
> +	  mkdir jamvm ; \
> +	  $(TAR) xf $(JAMVM_SRC_ZIP) -C jamvm ; \
> +	  dir=$$(basename jamvm/jamvm-*) ; \
> +	  ln -s $$dir jamvm/jamvm ; \
> +	fi
> +endif
> +	mkdir -p stamps
> +	touch stamps/extract-jamvm.stamp
> +
>  stamps/replace-hotspot.stamp: stamps/extract.stamp
>  if WITH_ALT_HSBUILD
>  	if test "x${HSBUILD}" != "xoriginal"; then \
> @@ -1019,7 +1081,8 @@
>  	fi
>  
>  	icedtea_version="$(PACKAGE_VERSION)$(ICEDTEA_REV)" ; \
> -	if ! test "x$(WITH_CACAO)" = "xno"; then \
> +	if test "x$(WITH_CACAO)" = "xyes" || \
> +	   test "x$(ENABLE_JAMVM)" = "xyes"; then \
>  	  echo "JDK_DERIVATIVE_NAME=$${icedtea_version}" \
>  	    >>openjdk/jdk/make/common/shared/Defs.gmk ; \
>  	  echo "PRODUCT_NAME=$(ICEDTEA_NAME)" \
> @@ -1245,7 +1308,8 @@
>  # If you change anything here in the icedtea target, please make sure
>  # you change it in the icedtea-debug target as well.
>  stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \
> - $(OPENJDK_TREE) stamps/cacao.stamp stamps/rewrite-rhino.stamp
> + $(OPENJDK_TREE) stamps/cacao.stamp stamps/rewrite-rhino.stamp \
> + stamps/jamvm.stamp
>  	$(ARCH_PREFIX) $(MAKE) \
>  	  $(ICEDTEA_ENV) \
>  	  -C openjdk \
> @@ -1263,6 +1327,9 @@
>  if WITH_CACAO
>  	printf -- '-cacao ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
>  endif
> +if ENABLE_JAMVM
> +	printf -- '-jamvm ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
> +endif
>  	@echo "IcedTea is served:" $(BUILD_OUTPUT_DIR)
>  	mkdir -p stamps
>  	touch stamps/icedtea.stamp
> @@ -1272,7 +1339,8 @@
>  	rm -f stamps/icedtea.stamp
>  
>  stamps/icedtea-debug.stamp: stamps/bootstrap-directory-symlink.stamp \
> - $(OPENJDK_TREE) stamps/cacao.stamp stamps/rewrite-rhino.stamp
> + $(OPENJDK_TREE) stamps/cacao.stamp stamps/rewrite-rhino.stamp \
> + stamps/jamvm.stamp
>  	$(ARCH_PREFIX) $(MAKE) \
>  	  $(ICEDTEA_ENV) \
>  	  -C openjdk \
> @@ -1290,6 +1358,9 @@
>  if WITH_CACAO
>  	printf -- '-cacao ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
>  endif
> +if ENABLE_JAMVM
> +	printf -- '-jamvm ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
> +endif
>  	@echo "IcedTea (debug build) is served:" \
>  	  $(DEBUG_BUILD_OUTPUT_DIR)
>  	mkdir -p stamps
> @@ -1695,6 +1766,29 @@
>  	fi
>  	rm -f stamps/rewrite-rhino.stamp
>  
> +# JamVM
> +
> +stamps/jamvm.stamp: $(OPENJDK_TREE) stamps/rt.stamp
> +if BUILD_JAMVM
> +	cd jamvm/jamvm && \
> +	./autogen.sh --with-java-runtime-library=openjdk \
> +	  --prefix=$(abs_top_builddir)/jamvm/install ; \
> +	$(MAKE) ; \
> +	$(MAKE) install
> +	mkdir -p $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server
> +	cp $(abs_top_builddir)/jamvm/install/lib/libjvm.so $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server
> +	ln -s server $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/client
> +	touch $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server/Xusage.txt
> +	touch $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/libjsig.so
> +endif
> +	mkdir -p stamps
> +	touch $@
> +
> +clean-jamvm:
> +	rm -rf jamvm
> +	rm -f stamps/jamvm.stamp
> +	rm -f stamps/extract-jamvm.stamp
> +
>  # CACAO
>  
>  stamps/cacao.stamp: $(OPENJDK_TREE) stamps/rt.stamp
> @@ -2059,6 +2153,8 @@
>  
>  download-drops: stamps/download-drops.stamp
>  
> +download-jamvm: stamps/download-jamvm.stamp
> +
>  download-jaf-drop: stamps/download-jaf-drop.stamp
>  
>  download-jaxp-drop: stamps/download-jaxp-drop.stamp
> @@ -2083,6 +2179,8 @@
>  
>  icedtea-ecj: stamps/icedtea-ecj.stamp
>  
> +jamvm: stamps/jamvm.stamp
> +
>  jtreg: stamps/jtreg.stamp
>  
>  liveconnect: stamps/liveconnect.stamp
> Index: icedtea6/configure.ac
> ===================================================================
> --- icedtea6.orig/configure.ac	2011-02-22 00:46:20.000000000 +0100
> +++ icedtea6/configure.ac	2011-02-22 00:46:58.000000000 +0100
> @@ -175,6 +175,9 @@
>  AC_CHECK_WITH_CACAO_HOME
>  AC_CHECK_WITH_CACAO_SRC_ZIP
>  AC_CHECK_WITH_CACAO_SRC_DIR
> +
> +IT_CHECK_ENABLE_JAMVM
> +
>  DISABLE_OPTIMIZATIONS
>  SET_SHARK_BUILD
>  ENABLE_ZERO_BUILD
> Index: icedtea6/acinclude.m4
> ===================================================================
> --- icedtea6.orig/acinclude.m4	2011-02-22 00:46:20.000000000 +0100
> +++ icedtea6/acinclude.m4	2011-02-22 01:55:54.000000000 +0100
> @@ -746,7 +746,8 @@
>          sparc*-*-*) ;;
>          x86_64-*-*) ;;
>          *)
> -          if test "x${WITH_CACAO}" != xno; then
> +          if test "x${WITH_CACAO}" != xno || \
> +	     test "x${ENABLE_JAMVM}" = xyes; then
>              use_zero=no
>            else
>              use_zero=yes
> @@ -820,6 +821,20 @@
>    AM_CONDITIONAL(SHARK_BUILD, test "x${use_shark}" = xyes)
>  ])
>  
> +AC_DEFUN([IT_CHECK_ENABLE_JAMVM],
> +[
> +  AC_MSG_CHECKING(whether to use JamVM as VM)
> +  AC_ARG_ENABLE([jamvm],
> +	      [AS_HELP_STRING(--enable-jamvm,use JamVM as VM [[default=no]])],
> +  [
> +    ENABLE_JAMVM="${enableval}"
> +  ])
> +
> +  AC_MSG_RESULT(${ENABLE_JAMVM})
> +  AM_CONDITIONAL(ENABLE_JAMVM, test x"${ENABLE_JAMVM}" = "xyes")
> +  AC_SUBST(ENABLE_JAMVM)
> +])
> +
>  AC_DEFUN([AC_CHECK_ENABLE_CACAO],
>  [
>    AC_MSG_CHECKING(whether to use CACAO as VM)
> @@ -1166,6 +1181,7 @@
>  AM_CONDITIONAL(ADD_CACAO_BUILD, test x$add_vm_cacao != x)
>  AM_CONDITIONAL(ADD_ZERO_BUILD,  test x$add_vm_zero  != x || test x$add_vm_shark != x)
>  AM_CONDITIONAL(ADD_SHARK_BUILD, test x$add_vm_shark != x)
> +AM_CONDITIONAL(BUILD_JAMVM, test "x${ENABLE_JAMVM}" = xyes)
>  AM_CONDITIONAL(BUILD_CACAO, test x$add_vm_cacao != x || test "x${WITH_CACAO}" = xyes)
>  
>  if test "x${WITH_CACAO}" = xyes && test "x${ADD_CACAO_BUILD_TRUE}" = x; then
> Index: icedtea6/NEWS
> ===================================================================
> --- icedtea6.orig/NEWS	2011-02-22 00:46:38.000000000 +0100
> +++ icedtea6/NEWS	2011-02-22 00:46:58.000000000 +0100
> @@ -10,6 +10,7 @@
>  
>  New in release 1.10 (2011-XX-XX):
>  
> +* Added out-of-the-box JamVM support using --enable-jamvm
>  * NetX and the plugin moved to the IcedTea-Web project with a separate
>    release cycle.
>  * Shark provided upstream rather than as part of IcedTea.
> Index: icedtea6/ChangeLog
> ===================================================================
> --- icedtea6.orig/ChangeLog	2011-02-22 01:58:56.000000000 +0100
> +++ icedtea6/ChangeLog	2011-02-22 02:44:50.000000000 +0100
> @@ -1,3 +1,42 @@
> +2011-02-22  Xerxes Ranby  <xerxes at zafena.se>
> +
> +	JamVM: Taste the New --enable-jamvm Flavour!
> +	* NEWS: Updated.
> +	* Makefile.am (JAMVM_VERSION): New variable.
> +	(JAMVM_SHA256SUM): Likewise.
> +	(JAMVM_BASE_URL): Likewise.
> +	(JAMVM_URL): Likewise.
> +	(JAMVM_SRC_ZIP): Likewise.
> +	(JAMVM_IMPORT_PATH): Likewise.
> +	(ICEDTEA_BUILD_TARGET):
> +	Build only jdk if jamvm are enabled.
> +	(ICEDTEA_DEBUG_BUILD_TARGET): Likewise.
> +	(ICEDTEA_ENV): Set ALT_HOTSPOT_IMPORT_PATH to JAMVM_IMPORT_PATH
> +	if jamvm are enabled.
> +	(PRODUCT_NAME): Make -version report IcedTea6 Runtime Environment
> +	if jamvm are enabled.
> +	(JDK_DERIVATIVE_NAME): Only show IcedTea version
> +	if jamvm are enabled.
> +	(stamps/download-jamvm.stamp): New make target.
> +	(clean-download-jamvm): Likewise.
> +	(stamps/extract-jamvm.stamp): Likewise.
> +	(stamps/jamvm.stamp): Likewise.
> +	(clean-jamvm): Likewise.
> +	(.PHONY): Add clean-jamvm.
> +	(stamps/download.stamp): Add stamps/download-jamvm.stamp.
> +	(clean-download): Add clean-download-jamvm.
> +	(stamps/extract.stamp): Add stamps/extract-jamvm.stamp.
> +	(clean-extract): Add clean-jamvm.
> +	(stamps/icedtea.stamp): Add stamps/jamvm.stamp.
> +	(download-jamvm): Alias to stamps/download-jamvm.stamp.
> +	(jamvm): Alias to stamps/jamvm.stamp.
> +	* configure.ac (IT_CHECK_ENABLE_JAMVM): Use new macro.
> +	* acinclude.m4:
> +	(ENABLE_ZERO_BUILD): Do not use zero if JamVM are enabled.
> +	(IT_CHECK_ENABLE_JAMVM): New macro.
> +	(BUILD_JAMVM): New conditional.
> +	(ENABLE_JAMVM): New conditional.
> +
>  2011-02-21  Xerxes Ranby  <xerxes at zafena.se>
>  
>  	PR600: HS19 upgrade broke CACAO build on ARM


-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and IcedTea
http://www.gnu.org/software/classpath
http://icedtea.classpath.org
PGP Key: F5862A37 (https://keys.indymedia.org/)
Fingerprint = EA30 D855 D50F 90CD F54D  0698 0713 C3ED F586 2A37



More information about the distro-pkg-dev mailing list