changeset 2391:0f78ff523f7f

JamVM: Taste the New --enable-jamvm Flavour! 2011-05-18 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: (clean-jamvm): Don't remove clean-extract-jamvm.stamp here; use its own target. (clean-extract-jamvm): Added. 2011-02-22 Xerxes Ranby <xerxes@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.
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 19 May 2011 01:25:06 +0100
parents eda93e00ce53
children 2713916e1aac c718b8720581
files ChangeLog Makefile.am NEWS acinclude.m4 configure.ac
diffstat 5 files changed, 179 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed May 18 23:57:28 2011 +0200
+++ b/ChangeLog	Thu May 19 01:25:06 2011 +0100
@@ -1,3 +1,49 @@
+2011-05-18  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	(clean-jamvm): Don't remove clean-extract-jamvm.stamp
+	here; use its own target.
+	(clean-extract-jamvm): Added.
+
+2011-02-22  Xerxes Ranby  <xerxes@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-05-18  Pavel Tisnovsky  <ptisnovs@redhat.com>
 
 	* Makefile.am:
--- a/Makefile.am	Wed May 18 23:57:28 2011 +0200
+++ b/Makefile.am	Thu May 19 01:25:06 2011 +0100
@@ -24,6 +24,17 @@
 CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.bz2
 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2
 
+# 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 = jdk7-jaxws2_2_2-2010_12_14.zip
 JAXWS_DROP_SHA256SUM = ef3115dde8ed9a7129e65aab8b1499e11621e343559e6e5a8df9c4542848fb9b
@@ -67,6 +78,7 @@
 REWRITER_BUILD_DIR = $(abs_top_builddir)/rewriter.build
 STAGE1_BOOT_DIR = $(abs_top_builddir)/bootstrap/boot
 STAGE2_BOOT_DIR = $(abs_top_builddir)/bootstrap/icedtea
+JAMVM_IMPORT_PATH = $(abs_top_builddir)/jamvm/install/hotspot
 
 # Source directories
 
@@ -173,8 +185,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-stage2.stamp
@@ -469,6 +486,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" \
@@ -732,7 +754,8 @@
 	clean-bootstrap-directory-symlink-stage1 icedtea icedtea-debug \
 	clean-icedtea icedtea-stage2 clean-icedtea-boot \
 	clean-rt hotspot hotspot-helper clean-jtreg clean-jtreg-reports \
-	clean-drops jtregcheck clean-remove-intree-libraries
+	clean-drops jtregcheck clean-remove-intree-libraries \
+	clean-jamvm clean-extract-jamvm
 
 env:
 	@echo 'unset JAVA_HOME'
@@ -778,11 +801,11 @@
 # Download OpenJDK sources.
 
 stamps/download.stamp: stamps/download-drops.stamp stamps/download-openjdk.stamp \
- stamps/download-cacao.stamp
+ stamps/download-cacao.stamp stamps/download-jamvm.stamp
 	mkdir -p stamps
 	touch $@
 
-clean-download: clean-drops clean-download-openjdk clean-download-cacao
+clean-download: clean-drops clean-download-openjdk clean-download-cacao clean-download-jamvm
 	rm -f stamps/download.stamp
 
 stamps/download-jaxp-drop.stamp:
@@ -1074,13 +1097,37 @@
 	rm -f $(CACAO_SRC_ZIP)
 	rm -f stamps/download-cacao.stamp
 
-stamps/extract.stamp: stamps/extract-openjdk.stamp \
- stamps/extract-cacao.stamp stamps/extract-jaxws.stamp \
- stamps/remove-intree-libraries.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-extract: clean-extract-openjdk clean-extract-cacao clean-extract-jaxws
+clean-download-jamvm:
+	rm -f $(JAMVM_SRC_ZIP)
+	rm -f stamps/download-jamvm.stamp
+
+stamps/extract.stamp: stamps/extract-openjdk.stamp \
+ stamps/extract-cacao.stamp stamps/extract-jaxws.stamp \
+ stamps/remove-intree-libraries.stamp stamps/extract-jamvm.stamp
+	mkdir -p stamps
+	touch $@
+
+clean-extract: clean-extract-openjdk clean-extract-cacao clean-extract-jaxws \
+ clean-extract-jamvm
 	rm -f stamps/extract.stamp
 
 stamps/extract-openjdk.stamp: stamps/download-openjdk.stamp
@@ -1219,6 +1266,23 @@
 clean-extract-cacao: clean-cacao
 	rm -f 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
+
+clean-extract-jamvm: clean-jamvm
+	rm -f stamps/extract-jamvm.stamp
+
 stamps/extract-jaxws.stamp: stamps/download-jaxws-drop.stamp \
  stamps/download-jaf-drop.stamp stamps/extract-openjdk.stamp
 	set -e ; \
@@ -1393,7 +1457,8 @@
 	mv openjdk/jdk/make/common/shared/Defs.gmk Defs.gmk.bak
 	cat Defs.gmk.bak > openjdk/jdk/make/common/shared/Defs.gmk
 	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)" \
@@ -1679,7 +1744,8 @@
 # you change it in the icedtea-debug target as well.
 stamps/icedtea.stamp: stamps/bootstrap-directory-symlink-stage2.stamp \
  stamps/download.stamp stamps/extract.stamp $(OPENJDK_TREE) \
- stamps/cacao.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp
+ stamps/cacao.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp \
+ stamps/jamvm.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV) \
 	  -C openjdk/ \
@@ -1734,13 +1800,17 @@
 	cp $(abs_top_builddir)/tz.properties \
 	  $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib;
 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-debug.stamp: stamps/bootstrap-directory-symlink-stage2.stamp \
  stamps/download.stamp stamps/extract.stamp $(OPENJDK_TREE) \
- stamps/cacao.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp
+ stamps/cacao.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp \
+ stamps/jamvm.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV) \
 	  -C openjdk/ \
@@ -1795,6 +1865,9 @@
 	cp $(abs_top_builddir)/tz.properties \
 	  $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib;
 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
@@ -1988,6 +2061,28 @@
 	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 stamps/jamvm.stamp
+
+clean-jamvm:
+	rm -rf jamvm
+	rm -f stamps/jamvm.stamp
+
 # CACAO
 
 stamps/cacao.stamp: stamps/rt.stamp
@@ -2343,6 +2438,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
@@ -2371,6 +2468,8 @@
 
 icedtea-stage2: stamps/icedtea-stage2.stamp
 
+jamvm: stamps/jamvm.stamp
+
 jtreg: stamps/jtreg.stamp
 
 native-ecj: stamps/native-ecj.stamp
--- a/NEWS	Wed May 18 23:57:28 2011 +0200
+++ b/NEWS	Thu May 19 01:25:06 2011 +0100
@@ -2,6 +2,7 @@
 
 * NetX and the plugin moved to the IcedTea-Web project with a separate
   release cycle.
+* Added out-of-the-box JamVM support using --enable-jamvm
 * Bug fixes
   - PR616, PR99: Don't statically link libstdc++
 * Zero/Shark
--- a/acinclude.m4	Wed May 18 23:57:28 2011 +0200
+++ b/acinclude.m4	Thu May 19 01:25:06 2011 +0100
@@ -714,7 +714,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
@@ -1293,6 +1294,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
@@ -1880,4 +1882,21 @@
   fi
   AM_CONDITIONAL(USE_SYSTEM_LCMS, test x"${ENABLE_SYSTEM_LCMS}" = "xyes")
   AC_SUBST(ENABLE_SYSTEM_LCMS)
-])
\ No newline at end of file
+])
+
+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}"
+  ],
+  [
+    ENABLE_JAMVM=no
+  ])
+
+  AC_MSG_RESULT(${ENABLE_JAMVM})
+  AM_CONDITIONAL(ENABLE_JAMVM, test x"${ENABLE_JAMVM}" = "xyes")
+  AC_SUBST(ENABLE_JAMVM)
+])
--- a/configure.ac	Wed May 18 23:57:28 2011 +0200
+++ b/configure.ac	Thu May 19 01:25:06 2011 +0100
@@ -149,6 +149,8 @@
 AC_CHECK_ENABLE_CACAO
 AC_CHECK_WITH_CACAO_HOME
 AC_CHECK_WITH_CACAO_SRC_ZIP
+IT_CHECK_ENABLE_JAMVM
+
 DISABLE_OPTIMIZATIONS
 SET_SHARK_BUILD
 ENABLE_ZERO_BUILD