aboutsummaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2013-05-08 12:52:58 +0200
committerGuido Günther <agx@sigxcpu.org>2013-05-08 12:52:58 +0200
commit9a8e56049ebf9f0878c7fe3efc0921df8aa6a0ba (patch)
tree7d61a00fa8d6ec4667663370cc42b04be03ec569 /INSTALL
Imported Upstream version 7u21-2.3.9upstream/7u21-2.3.9upstream
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL375
1 files changed, 375 insertions, 0 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..44a720d
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,375 @@
+Building IcedTea7
+=================
+
+For convenience we've provided make targets that automatically
+download, extract and patch the source code from the IcedTea forest
+(http://hg.openjdk.java.net/icedtea/jdk7/).
+
+The build requirements are as follows:
+
+A bootstrap JDK, either:
+ - GNU libgcj 4.4.0 (or equivalent class library based on GNU Classpath >= 0.95) for --enable-bootstrap mode (the default)
+ - IcedTea6 or IcedTea7 for --disable-bootstrap mode
+Eclipse Java Compiler (ecj)
+CUPS
+libX11 (libXp, libXtst, libXi, libXt)
+Freetype2
+patch
+sed
+tar
+sha256sum (from coreutils)
+wget
+alsa
+xalan
+xerces
+glib2-devel
+gtk2-devel
+ant >= 1.6.5 with the regexp task from ant-nodeps
+libXinerama-devel
+giflib-devel
+libpng-devel
+libjpeg-devel >= 6b
+zlib-devel
+rhino (can be disabled using --without-rhino)
+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)
+
+See ./configure --help if you need to override the defaults.
+
+To bootstrap IcedTea with ecj and a GNU Classpath-based JDK:
+./autogen.sh
+./configure
+make
+
+To build IcedTea with an older version of IcedTea, use:
+./autogen.sh
+./configure --disable-bootstrap
+make
+
+The following locations are checked for a 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.
+
+If bootstrapping is enabled, the following JDK locations are prepended to the above list:
+ * /usr/lib/jvm/java-gcj
+ * /usr/lib/jvm/gcj-jdk
+ * /usr/lib/jvm/cacao
+
+There is currently no install target. IcedTea ends up in
+openjdk.build when the build completes.
+
+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:
+
+* --disable-docs: Don't build the Javadoc documentation.
+* --disable-bootstrap: Perform a quick (no bootstrap) build using an installed
+ copy of IcedTea6 or IcedTea7. If a directory is not specified, a check against
+ the list presented above is performed.
+* --enable-warnings: Produce warnings from the Java compiler during the build.
+* --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.
+* --enable-system-lcms: Build using the system installation of LCMS2, not
+ the version in-tree.
+* --enable-system-zlib: Build using the system installation of Zlib, not
+ the version in-tree.
+* --enable-system-png: Build using the system installation of libpng, not
+ the version in-tree.
+* --enable-system-gif: Build using the system installation of giflib, not
+ the version in-tree.
+* --enable-system-gtk: Build and link against the system installation of
+ Gtk+ instead of trying to dynamically open it at runtime.
+* --enable-system-gio: Build and link against the system installation of
+ GIO instead of trying to dynamically open it at runtime.
+* --enable-system-fontconfig: Build and link against the system installation of
+ fontconfig instead of trying to dynamically open it at runtime.
+* --enable-compile-against-syscalls: Check for syscalls at compile-time not runtime.
+* --with-gcj: Compile ecj to native code with gcj prior to building.
+* --with-parallel-jobs: Run the specified number of parallel jobs when
+ building HotSpot and the JDK. If this option is passed without an
+ argument, the number of online processors plus one is used.
+* --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-native2ascii: Specify the location of a 'native2ascii' binary. By default,
+ ${SYSTEM_JDK_DIR}/bin/native2ascii is used. If this is absent, then the path
+ is checked for native2ascii and gnative2ascii.
+* --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-corba-src-zip: Specify the location of the CORBA tarball to avoid downloading.
+* --with-jaxp-src-zip: Specify the location of the JAXP tarball to avoid downloading.
+* --with-jaxws-src-zip: Specify the location of the JAXWS tarball to avoid downloading.
+* --with-jdk-src-zip: Specify the location of the JDK tarball to avoid downloading.
+* --with-langtools-src-zip: Specify the location of the langtools 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-jamvm-src-zip: Specify the location of a JamVM tarball 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-abs-install-dir: The final install location of the j2sdk-image, for use in the SystemTap tapset.
+* --with-llvm-config: Specify the location of the llvm-config binary.
+* --with-version-suffix: Appends the given text to the JDK version output.
+* --with-project: Build an OpenJDK project from the following: icedtea, jdk7, closures, cvmi, cacaiocavallo,
+ bsd, nio2. The default is icedtea. Use of others is at the user's risk and builds may fail. This setting
+ affects which forest is checked out when --enable-hg is used and the set of patches applied.
+* --with-hotspot-build: The HotSpot to use, defaulting to 'original' i.e. hs14 as bundled with OpenJDK.
+* --with-pax: The command used to PaX-mark built binaries.
+* --enable-Werror: Turn gcc & javac warnings into errors.
+* --disable-jar-compression: Don't compress the OpenJDK JAR files.
+* --disable-downloading: Don't download tarballs if not available; fail instead.
+
+Other options may be supplied which enable or disable new features.
+These are documented fully in the relevant section below.
+
+* --disable-tests: Disable the running of all JTReg tests.
+* --disable-hotspot-tests: Disable the running of the HotSpot JTReg suite.
+* --disable-langtools-tests: Disable the running of the langtools JTReg suite.
+* --disable-jdk-tests: Disable the running of the jdk JTreg suite.
+* --enable-pulse-java: Build the PulseAudio sound provider.
+* --disable-xrender: Don't include the XRender pipeline.
+* --enable-systemtap: Include support for tracing using systemtap.
+* --enable-nss: Enable the NSS security provider.
+* --enable-cacao: Replace HotSpot with the CACAO VM.
+* --enable-jamvm: Replace HotSpot with JamVM.
+* --enable-shark: Build the Shark LLVM-based JIT.
+* --enable-zero: Build the zero assembler port on x86/x86_64/sparc platforms.
+* --with-rhino: Include Javascript support using Rhino (location may optionally be specified).
+* --with-additional-vms=vm-list: Additional VMs to build using the system described
+ below.
+
+Testing
+=======
+
+IcedTea7 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. The --disable-tests option
+can be used to turn off all tests, and the
+--disable-{hotspot,langtools,jdk}-tests options can be used to turn
+off individual suites. This is useful when using 'make distcheck'
+as a way of avoiding running the extensive JDK test suite which
+takes several hours.
+
+The PulseAudio provider
+=======================
+
+IcedTea7 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
+===============
+
+IcedTea7 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.
+
+SystemTap
+=========
+
+IcedTea7 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/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 by generating
+a configuration file for the NSS provider. If --enable-nss is specified,
+this configuration will be turned on in lib/security/java.security.
+This can also be done manually at a later date.
+
+CACAO
+=====
+
+IcedTea7 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/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.
+
+JamVM
+=====
+
+IcedTea6 can use JamVM as the virtual machine, as opposed to HotSpot.
+When --enable-jamvm is specified, JamVM will be downloaded and built,
+followed by the JDK portion of OpenJDK resulting in a JamVM+OpenJDK
+image in openjdk.build/j2sdk-image. The --with-jamvm-src-zip option
+exists to allow the use of a pre-downloaded zip.
+
+Zero & Shark
+============
+
+IcedTea7 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.
+
+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.
+
+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
+--with-hotspot-build option which causes IcedTea to probe the
+hotspot.map file for an entry with the given build name. The
+hotspot.map file maps the name to a changeset from a given repository
+URL. During the build, it downloads HotSpot from
+${URL}/archive/${CHANGESET}.tar.gz and the resulting file is verified
+using the MD5 sum stored in hotspot.map.
+
+New build selections may be provided by providing further mappings in
+the hotspot.map file. The name can be anything
+e.g. 'shiny_new_hotspot'. This is simply used to map the argument to
+--with-hotspot-build to the values in the file and to apply
+appropriate patches (see patches/hotspot, $HSBUILD is available in
+Makefile.am for obtaining the build name). The special value
+'original' is used for patches/hotspot/original to denote those for
+the upstream HotSpot; this value does not appear in hotspot.map.
+
+The changeset and URL should refer to a valid HotSpot tree when used
+as above. The required values can be obtained from a local checkout
+or by using the web interface. The simplest way to calculate the MD5
+sum is to download the tarball and then run the 'md5sum' application
+on it. The resulting value should be added to hotspot.map.
+
+As with the OpenJDK build tarballs, the location of an alternate zip
+can be specified using --with-hotspot-src-zip. This skips the
+download stage and just verifies that the zip's MD5 sum matches that
+of the requested build.
+
+Currently, IcedTea7 only supports the 'original' HotSpot provided as
+part of the upstream IcedTea forest.
+
+Javascript Support
+==================
+
+IcedTea7 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 VMs. 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 VMs 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.
+
+Please note that using this feature does not do as extensive testing
+of the VM as would enabling it in the default full bootstrap mode,
+which compiles IcedTea and then recompiles it using the just-built
+image.