changeset 1950:36fc1b3ae030

Update INSTALL documentation and configure help. 2010-07-21 Andrew John Hughes <ahughes@redhat.com> * INSTALL: Updated, with documentation of new options and removal of outdated information. * acinclude.m4: (WITH_OPENJDK_SRC_DIR): Add '=DIR' to the configure help. (AC_CHECK_FOR_OPENJDK): Add '[=DIR]' to the configure help. (AC_CHECK_WITH_TZDATA_DIR): Remove broken expansion of ${DEFAULT} in configure help, replacing it with the value used. (IT_CHECK_NEW_PLUGIN): Remove 'experimental'. Fix default in configure help. * configure.ac: Fix default in configure help for NIO2.
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 22 Jul 2010 09:24:52 +0100
parents 32f3cb4b987b
children 6abc3a568866
files ChangeLog INSTALL acinclude.m4 configure.ac
diffstat 4 files changed, 311 insertions(+), 94 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Jul 21 16:46:23 2010 -0400
+++ b/ChangeLog	Thu Jul 22 09:24:52 2010 +0100
@@ -1,3 +1,17 @@
+2010-07-21  Andrew John Hughes  <ahughes@redhat.com>
+
+	* INSTALL: Updated, with documentation
+	of new options and removal of outdated information.
+	* acinclude.m4:
+	(WITH_OPENJDK_SRC_DIR): Add '=DIR' to the configure help.
+	(AC_CHECK_FOR_OPENJDK): Add '[=DIR]' to the configure help.
+	(AC_CHECK_WITH_TZDATA_DIR): Remove broken expansion of ${DEFAULT}
+	in configure help, replacing it with the value used.
+	(IT_CHECK_NEW_PLUGIN): Remove 'experimental'.  Fix default in
+	configure help.
+	* configure.ac:
+	Fix default in configure help for NIO2.
+
 2010-07-21  Deepak Bhole <dbhole@redhat.com>
 
 	* rt/net/sourceforge/jnlp/JNLPFile.java: Use location as sourceLocation if
--- a/INSTALL	Wed Jul 21 16:46:23 2010 -0400
+++ b/INSTALL	Thu Jul 22 09:24:52 2010 +0100
@@ -7,8 +7,10 @@
 
 The build requirements are as follows:
 
-GNU libgcj 4.3.0 (or equivalent 1.5 class library, such as GNU Classpath >= 0.95)
-Eclipse Java Compiler
+A bootstrap JDK, either:
+  - GNU libgcj 4.3.0 (or equivalent class library based on GNU Classpath >= 0.95) for --with-gcj-home mode (the default)
+  - IcedTea6 for --with-openjdk mode
+Eclipse Java Compiler (ecj)
 CUPS
 libX11 (libXp, libXtst, libXi, libXt)
 Freetype2
@@ -29,112 +31,273 @@
 libpng-devel
 libjpeg-devel >= 6b
 zlib-devel
+xulrunner-devel (can be disabled using --disable-plugin)
 rhino (can be disabled using --without-rhino)
-
-For building the PulseAudio based mixer, you will need
-pulseaudio-libs-devel >= 0.9.11
-
-For building VisualVM, you will need
-netbeans = 6.5
-
-For building the zero-assembler port (see below), you will need libffi.
-
-For building the Shark JIT, you will need LLVM 2.5 or current SVN.
-
-For building with systemtap support (--enable-systemtap), you will need
-systemtap-sdt-devel (available since systemtap 0.9.5). This also needs
-the --with-abs-install-dir configure option to make sure the hotspot.stp.in
-tapset gets the correct installation location for the libjvm.so, it
-defaults to the root of the j2sdk-image build dir otherwise (but then
-you cannot move that to another location without adjusting the paths
-in the tapset/hotspot.stp file. For example:
- --enable-systemtap --with-abs-install-dir=/usr/lib/jvm/java-1.6.0-openjdk
-(Java method tracing works starting with systemtap 0.9.9)
+libffi (for --enable-zero or on archs other than x86/x86_64/sparc)
+pulseaudio-libs-devel >= 0.9.11 (for --enable-pulse-java)
+LLVM 2.5 or later (for --enable-shark)
+systemtap-sdl-devel >= 0.9.5 (for --enable-systemtap, Java method tracing requires systemtap >= 0.9.9)
+netbeans = 6.5 (for --enable-visualvm)
 
 See ./configure --help if you need to override the defaults.
 
-To bootstrap IcedTea with ecj and a Classpath-based JDK such as GCJ:
-autoreconf
+To bootstrap IcedTea with ecj and a GNU Classpath-based JDK:
+./autogen.sh
 ./configure 
 make
 
-To build IcedTea with an older version of IcedTea or OpenJDK, use:
-autoreconf
-./configure --with-openjdk 
-	to specify the location use --with-openjdk=/path/to/icedtea]
+The following locations are checked for a GNU Classpath-based JDK:
+   * /usr/lib/jvm/java-gcj
+   * /usr/lib/jvm/gcj-jdk
+   * /usr/lib/jvm/cacao
+in that order.
+
+To build IcedTea with an older version of IcedTea6, use:
+./autogen.sh
+./configure --with-openjdk
 make
 
-There is currently no install target.
+The following locations are checked for an IcedTea6 JDK:
+    * /usr/lib/jvm/java-openjdk
+    * /usr/lib/jvm/icedtea6
+    * /usr/lib/jvm/java-6-openjdk
+    * /usr/lib/jvm/openjdk
+    * /usr/lib/jvm/java-icedtea
+in the order given above.
+
+Note that IcedTea7 can not be used to build IcedTea6.
 
-IcedTea ends up in openjdk/build/<os>-<arch> when the build completes.
-Example instantiations of <os>-<arch> include linux-i586, linux-amd64 and linux-ppc64.
+There is currently no install target.  IcedTea ends up in
+openjdk/build/<os>-<arch> when the build completes.  Example
+instantiations of <os>-<arch> include linux-i586, linux-amd64 and
+linux-ppc64.
 
-Rebuilding The IcedTea Plugs
-----------------------------
+Most targets in IcedTea creat stamp files in the stamps directory to
+determine what and when dependencies were compiled.  Each target has a
+corresponding clean-x target which removes the output and the stamp
+file, allowing it to be rebuilt.  For example, stamps/rt.stamp (alias
+rt) builds the bootstrap classes needed in the bootstrap build and
+clean-rt removes the classes and the stamp file.
+
+Build Modification Options
+==========================
+
+The build process may be modified by passing the following options
+to configure:
 
-When IcedTea is initially built, it creates stamp files in the stamps directory
-to determine what and when dependencies were compiled. For example, to rebuild 
-the rt plugs certain files need to be deleted before restarting the build.
-
- - If the rt plugs have been modified, delete stamps/rt-class-files.stamp.
- - If a new class has been added to the rt plugs, delete
- rt-source-files.txt  so it can be recreated with the new class list.
+* --disable-docs: Don't build the Javadoc documentation.
+* --with-openjdk-src-dir: Copy the specified OpenJDK tree, rather than
+  downloading and extracting a tarball.
+* --disable-optimizations: Build with -O0.
+* --enable-hg: Checkout the OpenJDK tree from Mercurial, rather than
+  downloading and extracting a tarball.
+* --with-gcj: Compile ecj to native code with gcj prior to building.
+* --with-openjdk: Perform a quick (no bootstrap) build using an installed
+  copy of IcedTea6.  If a directory is not specified, a check against
+  the list presented above is performed.
+* --with-parallel-jobs: Run the specified number of parallel jobs when
+  building HotSpot and the JDK.
+* --with-netbeans-home: The location of NetBeans for use in the VisualVM build,
+  defaults to /usr/share/netbeans.
+* --with-ant-home: The location of Ant, defaults to /usr/share/ant.
+* --with-pkgversion=PKG: Include the specified distro package information in
+  the output of java -version.
+* --with-gcj-home: Perform a full bootstrap build using an installed
+  copy of a GNU Classpath JDK such as gcj.  If a directory is not specified,
+  a check against the list presented above is performed.
+* --with-java: Specify the location of a 'java' binary.  By default, the path
+  is checked for gij and java.
+* --with-ecj: Specify the location of a 'ecj' binary.  By default, the path
+  is checked for ecj, ecj-3.1, ecj-3.2 and ecj-3.3.
+* --with-javac: Specify the location of a 'javac' binary.  By default, the path
+  is checked for javac.
+* --with-jar: Specify the location of a 'jar' binary.  By default, the path
+  is checked for gjar and jar.
+* --with-javah: Specify the location of a 'javah' binary.  By default, the path
+  is checked for gjavah and javah.
+* --with-rmic: Specify the location of a 'rmic' binary.  By default, the path
+  is checked for grmic and rmic.
+* --with-ecj-jar: Specify the location of an ecj JAR file.  By default, the
+  following paths are checked:
+    - /usr/share/java/eclipse-ecj.jar
+    - /usr/share/java/ecj.jar
+    - /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar
+* --with-xalan2-jar: Specify the location of a xalan2 JAR file.  By default, the
+  following paths are checked:
+    - /usr/share/java/xalan-j2.jar
+    - /usr/share/java/xalan2.jar
+    - /usr/share/xalan/lib/xalan.jar
+* --with-xalan2-serializer-jar: Specify the location of a xalan2 serializer JAR file.
+  By default, the following paths are checked:
+    - /usr/share/java/xalan-j2-serializer.jar
+    - /usr/share/xalan-serializer/lib/serializer.jar
+    - /usr/share/java/serializer.jar
+* --with-xerces2-jar: Specify the location of a xerces2 JAR file.  By default, the
+  following paths are checked:
+    - /usr/share/java/xerces-j2.jar
+    - /usr/share/java/xerces2.jar
+    - /usr/share/xerces-2/lib/xercesImpl.jar
+    - /usr/share/java/xercesImpl.jar
+* --with-openjdk-src-zip: Specify the location of the OpenJDK tarball to avoid downloading.
+* --with-hotspot-src-zip: Specify the location of the HotSpot tarball to avoid downloading.
+* --with-alt-jar: Use the specified jar binary in the second stage rather than the one just built.
+* --with-cacao-home: Specify the location of an installed CACAO to use rather than downloading
+  and building one.
+* --with-cacao-src-zip: Specify the location of a CACAO tarball to avoid downloading.
+* --with-cacao-src-dir: Specify the location of a CACAO source tree to avoid downloading.
+* --with-hg-revision: Specify a hg revision to use (as opposed to tip) with the --enable-hg option.
+* --with-tzdata-dir: Specify the location of Java timezone data, defaulting to /usr/share/javazi.
+* --with-netbeans: Specify the location of NetBeans for VisualVM, defaulting to the netbeans on the path.
+* --with-abs-install-dir: The final install location of the j2sdk-image, for use in the SystemTap tapset.
 
-To view all targets that create stamp files, see 
-Makefile.am (section 'All Stamped Targets').
+Other options may be supplied which enable or disable new features.
+These are documented fully in the relevant section below.
+
+* --enable-visualvm: Build VisualVM.
+* --enable-pulse-java: Build the PulseAudio sound provider.
+* --disable-xrender: Don't include the XRender pipeline.
+* --enable-nio2: Include the NIO2 backport.
+* --enable-systemtap: Include support for tracing using systemtap.
+* --enable-nss: Enable the NSS security provider.
+* --enable-cacao: Replace HotSpot with the CACAO VM.
+* --enable-shark: Build the Shark LLVM-based JIT.
+* --enable-zero: Build the zero assembler port on x86/x86_64/sparc platforms.
+* --disable-plugin: Don't build the browser plugin.
+* --disable-npplugin: Build the old unsupported plugin rather than NPPlugin.
+* --with-hotspot-build: The HotSpot to use, defaulting to 'original' i.e. hs14 as bundled with OpenJDK.
+* --with-rhino: Include Javascript support using Rhino.
+* --with-additional-vms=vm-list: Additional VMs to build using the system described
+  below.
+
+Testing
+=======
 
-The Zero Assembler Port
------------------------
+IcedTea6 includes support for running the test suite included with
+OpenJDK, using the in-tree copy of JTReg.  Invoking 'make check' will
+cause the HotSpot, JDK and langtools test suites to be run.  The
+individual test suites may be run using the check-hotspot, check-jdk
+and check-langtools targets respectively.
+
+VisualVM
+========
+
+IcedTea6 supports the downloading and compilation of VisualVM 1.1.1
+via the --enable-visualvm option.  This requires NetBeans 6.5.  The
+build takes place following that of IcedTea, which is used to compile
+VisualVM, and the result is installed in the SDK image created by the
+OpenJDK build (i.e. openjdk/build/<os>-<arch>/j2sdk-image).
+
+The PulseAudio provider
+=======================
+
+IcedTea6 includes an implementation of the javax.sound.* APIs using
+PulseAudio which can be enabled using --enable-pulse-java.   The resulting
+provider is org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider.
+
+Xrender Support
+===============
 
-Gary Benson has developed a port of the interpreter included in the
-HotSpot virtual machine which avoids using any assembly language.  As
-a pure C++ interpreter, it should be possible to build this on most
-architectures and have a working (albeit slow) version of OpenJDK.
-Successful builds have been made on ppc, ppc64 and arm.  The zero
-assembler port is enabled by default on platforms other than x86,
-x86_64 and sparc.  To enable it on these platforms, use the
---enable-zero option.
+IcedTea6 includes support for an Xrender-based rendering pipeline
+developed by Clemens Eisserer (http://linuxhippy.blogspot.com/).  This
+is compiled by default, and can be disabled using --disable-xrender.
+To actually use the pipeline, the sun.java2d.xrender property needs to
+be set to true, e.g.  by passing the -Dsun.java2d.xrender=True option
+to java.
+
+NIO2 Backport
+=============
+
+IcedTea6 includes a backport of NIO2 from OpenJDK7; see
+http://openjdk.java.net/projects/nio/.  This provides support for
+asynchronous I/O and an improved file system API, providing access to
+POSIX file permissions, timestamps, extended attributes and ACLs and
+allowing directories to be watched.  This is enabled using the
+--enable-nio2 option.
+
+As new classes can not be added to the java.* and javax.* namespace of
+the 1.6 API, the new java.nio classes are contained in
+org.classpath.icedtea.java.nio, so code will needed to be adjusted to
+work with the backport.
 
-Gary is now working on a JIT called Shark to provide better
-performance on platforms which need to use the zero port. A
-preliminary version of this is now included with IcedTea and can be
-built with the --enable-shark option.
+SystemTap
+=========
+
+IcedTea6 includes work to allow the existing DTrace probes included in
+OpenJDK to be used with SystemTap.  This is enabled using the
+--enable-systemtap option, and requires version 0.9.5 or later (0.9.9
+or later if you want Java method tracing).  The tapset needs to know
+the final install location of the JDK, so the --with-abs-install-dir
+should also be used to specify this.  If not set, it defaults to the
+in-tree location of openjdk/build/<os>-<arch>/j2sdk-image and requires
+manual changes to tapset/hotspot.stp to work from elsewhere. For
+example, if you plan to install the resulting build in
+/usr/lib/jvm/java-1.6.0-openjdk, then you should specify
+--enable-systemtap
+--with-abs-install-dir=/usr/lib/jvm/java-1.6.0-openjdk.
+
+NSS Security Provider
+=====================
+
+OpenJDK includes an NSS-based security provider in the form of
+sun.security.pkcs11.SunPKCS11.  However, as this needs to know the
+location of the NSS installation it should use, it is not enabled
+in normal OpenJDK builds.  As IcedTea can detect NSS using configure,
+it can simplify the process of enabling this provider.  If --enable-nss
+is specified, then a configuration file for the NSS provider will be
+generated and installed, and the provider turned on.
 
 CACAO
------
+=====
 
-The CACAO virtual machine (http://cacaovm.org) can be used as an
-alternative to the HotSpot virtual machine. One advantage of this is
-that it already provides a JIT for many platforms to which HotSpot has
-not yet been ported, including ppc, ppc64, arm and mips.  To use CACAO
-as the VM, use the --with-cacao option.  This will download CACAO
-0.99.3 during the build.  To use a different version, use
---with-cacao-home=<dir> to point to an existing installation which use
-the Sun VM interface.
+IcedTea6 can use CACAO as the virtual machine, as opposed to HotSpot.
+One advantage of this is that CACAO has a JIT implementation for
+more platforms than HotSpot, including ppc, ppc64, arm and mips.
+When --enable-cacao is specified, CACAO will be downloaded and built,
+followed by the JDK portion of OpenJDK resulting in a CACAO+OpenJDK
+image in openjdk/build/<os>-<arch>/j2sdk-image.  The --with-cacao-home
+option can be used to specify the use of an existing CACAO install
+instead, and --with-cacao-src-zip/dir options exist to allow the use
+of a pre-downloaded zip or source tree respectively.
 
-Building additional virtual machines
-------------------------------------
+Zero & Shark
+============
+
+IcedTea6 includes a zero assembler port of HotSpot, which avoids
+architecture-specific code as much as possible, allowing an
+interpreter to be built and run on most platforms (albeit very
+slowly).  As HotSpot only includes JITs for x86, x86_64 and SPARC, the
+zero assembler port is automatically enabled on all other
+architectures.  On x86, x86_64 and SPARC, it may be built using
+--enable-zero.
 
-Although IcedTea can be built multiple times to use a different virtual
-machine, addtional VM's can be built without building the other components
-multiple times.
+To overcome the performance issues inherent in zero, a LLVM-based JIT
+called Shark has been developed.  This performs Just-In-Time compilation
+on any architecture supported by LLVM.  To enable it, pass the option
+--enable-shark to configure.  Please note that Shark is still in
+development and builds are still likely to fail at present.
+
+The Browser Plugin
+==================
 
-On architectures where hotspot is available, use
-   --with-additional-vms=cacao,zero  (or shark instead of zero)
-on architectures where only zero (or shark) is available, use
-   --with-additional-vms=cacao
-to build the additional VM's.  It's not possible to build cacao as the
-default VM, and zero as additional VM.
-To build zero as the default VM and shark as an additional VM, use
-   --enable-zero --with-additional-vms=shark
+IcedTea6 currently includes two browser plugins; a new supported
+plugin based on NPRuntime and an older deprecated plugin used in
+previous releases.  By default, the first will be built and this
+is the recommended option.  Passing the option --disable-npplugin
+reverts to the old plugin, while --disable-plugin turns off the
+build of a browser plugin altogether.
 
-The additional VM's are available by calling the java with the option
-`-cacao', `-zero' or `-shark', or by calling the java tools with
-`-J-<vm name>'. If the build was configured with '--enable-shark',
-use `-Xint' to just use the zero VM.
+A test suite is supplied for the browser plugin.  It can be built
+using 'make plugin-tests' and run by loading the HTML page specified
+into a browser with the plugin installed.
 
-Support for different versions of HotSpot
------------------------------------------ 
+For debugging, the environment variable ICEDTEAPLUGIN_DEBUG should be
+set to 'true'.  This will produce output on the console from the C++
+side, and output from the Java side in $HOME/.icedteaplugin/java.stdout
+and $HOME/.icedteaplugin/java.stderr.  It also starts the debug server
+on port 8787.
+
+Support for Different Versions of HotSpot
+=========================================
 
 IcedTea allows the version of HotSpot provided with the upstream build
 drop to be replaced with another.  Support for this is provided by the
@@ -169,7 +332,47 @@
 are HotSpot 14 ('original') which is provided by the upstream OpenJDK
 tarball, and 'hs16', which is used in hotspot.map to provide the
 latest version of HotSpot 16.  Thus, either --with-hotspot-build
-without an argument or --with-hotspot-build=hs16 provides the
-latest supported hs16, while no HotSpot build argument,
+without an argument or --with-hotspot-build=hs16 provides the latest
+supported hs16, while no HotSpot build argument,
 --without-hotspot-build or --with-hotspot-build=original uses the
 upstream HotSpot.
+
+Javascript Support
+==================
+
+IcedTea6 adds Javascript support via the javax.script API by using
+an existing installation of Rhino.  Support is enabled by default,
+with the following locations being searched for a Rhino JAR file:
+
+* /usr/share/java/rhino.jar
+* /usr/share/java/js.jar
+* /usr/share/rhino-1.6/lib/js.jar
+
+A JAR file can instead be specified using the --with-rhino option,
+or support may be disabled by specifying --without-rhino.
+
+Note that the final installed JAR file is a modified version with the
+namespace prefixed by 'sun.' as in the proprietary Oracle JDK.  This
+avoids conflicts between the JDK's copy of Rhino and any used by other
+applications.
+
+Building Additional Virtual Machines
+====================================
+
+Although IcedTea can be built multiple times to use a different virtual
+machine, additional VMs can be built without building the other components
+multiple times.
+
+On architectures where hotspot is available, use
+   --with-additional-vms=cacao,zero  (or shark instead of zero)
+on architectures where only zero (or shark) is available, use
+   --with-additional-vms=cacao
+to build the additional VM's.  It's not possible to build cacao as the
+default VM, and zero as additional VM.
+To build zero as the default VM and shark as an additional VM, use
+   --enable-zero --with-additional-vms=shark
+
+The additional VM's are available by calling the java with the option
+`-cacao', `-zero' or `-shark', or by calling the java tools with
+`-J-<vm name>'. If the build was configured with '--enable-shark',
+use `-Xint' to just use the zero VM.
--- a/acinclude.m4	Wed Jul 21 16:46:23 2010 -0400
+++ b/acinclude.m4	Thu Jul 22 09:24:52 2010 +0100
@@ -221,7 +221,7 @@
 [
   AC_MSG_CHECKING(for an OpenJDK source directory)
   AC_ARG_WITH([openjdk-src-dir],
-              [AS_HELP_STRING(--with-openjdk-src-dir,specify the location of the openjdk sources)],
+              [AS_HELP_STRING(--with-openjdk-src-dir=DIR,specify the location of the openjdk sources)],
   [
     OPENJDK_SRC_DIR=${withval}
     AC_MSG_RESULT(${withval})
@@ -1028,7 +1028,7 @@
 [
   AC_MSG_CHECKING([for an existing OpenJDK installation])
   AC_ARG_WITH([openjdk],
-              [AS_HELP_STRING([--with-openjdk],
+              [AS_HELP_STRING([--with-openjdk[=DIR]],
                               [perform a quick build with an installed copy of OpenJDK])],
               [
                 if test "x${withval}" = xno
@@ -1069,7 +1069,7 @@
   DEFAULT="/usr/share/javazi"
   AC_MSG_CHECKING([which Java timezone data directory to use])
   AC_ARG_WITH([tzdata-dir],
-	      [AS_HELP_STRING(--with-tzdata-dir,set the Java timezone data directory [[default=${DEFAULT}]])],
+	      [AS_HELP_STRING(--with-tzdata-dir,set the Java timezone data directory [[default=/usr/share/javazi]])],
   [
     if test "x${withval}" = x || test "x${withval}" = xyes; then
       TZDATA_DIR_SET=yes
@@ -1270,10 +1270,10 @@
 
 AC_DEFUN_ONCE([IT_CHECK_NEW_PLUGIN],
 [
-AC_MSG_CHECKING([whether to build the new experimental browser plugin based on npruntime])
+AC_MSG_CHECKING([whether to build the new browser plugin based on npruntime])
 AC_ARG_ENABLE([npplugin],
-              [AS_HELP_STRING([--enable-npplugin],
-                              [Enable compilation of browser plugin (automatically disables default plugin)])],
+              [AS_HELP_STRING([--disable-npplugin],
+                              [Disable compilation of the new browser plugin (automatically disables default plugin)])],
               [enable_npplugin="${enableval}"], [enable_npplugin="yes"])
 AC_MSG_RESULT(${enable_npplugin})
 ])
--- a/configure.ac	Wed Jul 21 16:46:23 2010 -0400
+++ b/configure.ac	Thu Jul 22 09:24:52 2010 +0100
@@ -128,8 +128,8 @@
 
 AC_MSG_CHECKING([whether to include NIO2 support])
 AC_ARG_ENABLE([nio2],
-	      [AS_HELP_STRING([--disable-nio2],
-	      		      [Disable inclusion of backported NIO2])],
+	      [AS_HELP_STRING([--enable-nio2],
+	      		      [Enable inclusion of backported NIO2])],
 	      [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='no'])
 AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes])
 AC_MSG_RESULT(${ENABLE_NIO2})