631 * To install on an rpm-based Linux, try running `sudo yum install
632 alsa-lib-devel`.
633
634 Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA
635 files.
636
637 ### libffi
638
639 libffi, the [Portable Foreign Function Interface Library](
640 http://sourceware.org/libffi) is required when building the Zero version of
641 Hotspot.
642
643 * To install on an apt-based Linux, try running `sudo apt-get install
644 libffi-dev`.
645 * To install on an rpm-based Linux, try running `sudo yum install
646 libffi-devel`.
647
648 Use `--with-libffi=<path>` if `configure` does not properly locate your libffi
649 files.
650
651 ### libelf
652
653 libelf from the [elfutils project](http://sourceware.org/elfutils) is required
654 when building the AOT feature of Hotspot.
655
656 * To install on an apt-based Linux, try running `sudo apt-get install
657 libelf-dev`.
658 * To install on an rpm-based Linux, try running `sudo yum install
659 elfutils-libelf-devel`.
660
661 Use `--with-libelf=<path>` if `configure` does not properly locate your libelf
662 files.
663
664 ## Other Tooling Requirements
665
666 ### GNU Make
667
668 OpenJDK requires [GNU Make](http://www.gnu.org/software/make). No other flavors
669 of make are supported.
670
671 At least version 3.81 of GNU Make must be used. For distributions supporting
672 GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful
673 functionality to handle parallel building (supported by `--with-output-sync`)
674 and speed and stability improvements.
675
676 Note that `configure` locates and verifies a properly functioning version of
677 `make` and stores the path to this `make` binary in the configuration. If you
678 start a build using `make` on the command line, you will be using the version
679 of make found first in your `PATH`, and not necessarily the one stored in the
680 configuration. This initial make will be used as "bootstrap make", and in a
681 second stage, the make located by `configure` will be called. Normally, this
682 will present no issues, but if you have a very old `make`, or a non-GNU Make
683 `make` in your path, this might cause issues.
796 * `--with-extra-path=<path>[;<path>]` - Prepend these directories to the
797 default path when searching for all kinds of binaries
798 * `--with-toolchain-path=<path>[;<path>]` - Prepend these directories when
799 searching for toolchain binaries (compilers etc)
800 * `--with-extra-cflags=<flags>` - Append these flags when compiling JDK C
801 files
802 * `--with-extra-cxxflags=<flags>` - Append these flags when compiling JDK C++
803 files
804 * `--with-extra-ldflags=<flags>` - Append these flags when linking JDK
805 libraries
806
807 #### Configure Arguments for External Dependencies
808
809 * `--with-boot-jdk=<path>` - Set the path to the [Boot JDK](
810 #boot-jdk-requirements)
811 * `--with-freetype=<path>` - Set the path to [FreeType](#freetype)
812 * `--with-cups=<path>` - Set the path to [CUPS](#cups)
813 * `--with-x=<path>` - Set the path to [X11](#x11)
814 * `--with-alsa=<path>` - Set the path to [ALSA](#alsa)
815 * `--with-libffi=<path>` - Set the path to [libffi](#libffi)
816 * `--with-libelf=<path>` - Set the path to [libelf](#libelf)
817 * `--with-jtreg=<path>` - Set the path to JTReg. See [Running Tests](
818 #running-tests)
819
820 Certain third-party libraries used by OpenJDK (libjpeg, giflib, libpng, lcms
821 and zlib) are included in the OpenJDK repository. The default behavior of the
822 OpenJDK build is to use this version of these libraries, but they might be
823 replaced by an external version. To do so, specify `system` as the `<source>`
824 option in these arguments. (The default is `bundled`).
825
826 * `--with-libjpeg=<source>` - Use the specified source for libjpeg
827 * `--with-giflib=<source>` - Use the specified source for giflib
828 * `--with-libpng=<source>` - Use the specified source for libpng
829 * `--with-lcms=<source>` - Use the specified source for lcms
830 * `--with-zlib=<source>` - Use the specified source for zlib
831
832 On Linux, it is possible to select either static or dynamic linking of the C++
833 runtime. The default is static linking, with dynamic linking as fallback if the
834 static library is not found.
835
836 * `--with-stdc++lib=<method>` - Use the specified method (`static`, `dynamic`
|
631 * To install on an rpm-based Linux, try running `sudo yum install
632 alsa-lib-devel`.
633
634 Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA
635 files.
636
637 ### libffi
638
639 libffi, the [Portable Foreign Function Interface Library](
640 http://sourceware.org/libffi) is required when building the Zero version of
641 Hotspot.
642
643 * To install on an apt-based Linux, try running `sudo apt-get install
644 libffi-dev`.
645 * To install on an rpm-based Linux, try running `sudo yum install
646 libffi-devel`.
647
648 Use `--with-libffi=<path>` if `configure` does not properly locate your libffi
649 files.
650
651 ## Other Tooling Requirements
652
653 ### GNU Make
654
655 OpenJDK requires [GNU Make](http://www.gnu.org/software/make). No other flavors
656 of make are supported.
657
658 At least version 3.81 of GNU Make must be used. For distributions supporting
659 GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful
660 functionality to handle parallel building (supported by `--with-output-sync`)
661 and speed and stability improvements.
662
663 Note that `configure` locates and verifies a properly functioning version of
664 `make` and stores the path to this `make` binary in the configuration. If you
665 start a build using `make` on the command line, you will be using the version
666 of make found first in your `PATH`, and not necessarily the one stored in the
667 configuration. This initial make will be used as "bootstrap make", and in a
668 second stage, the make located by `configure` will be called. Normally, this
669 will present no issues, but if you have a very old `make`, or a non-GNU Make
670 `make` in your path, this might cause issues.
783 * `--with-extra-path=<path>[;<path>]` - Prepend these directories to the
784 default path when searching for all kinds of binaries
785 * `--with-toolchain-path=<path>[;<path>]` - Prepend these directories when
786 searching for toolchain binaries (compilers etc)
787 * `--with-extra-cflags=<flags>` - Append these flags when compiling JDK C
788 files
789 * `--with-extra-cxxflags=<flags>` - Append these flags when compiling JDK C++
790 files
791 * `--with-extra-ldflags=<flags>` - Append these flags when linking JDK
792 libraries
793
794 #### Configure Arguments for External Dependencies
795
796 * `--with-boot-jdk=<path>` - Set the path to the [Boot JDK](
797 #boot-jdk-requirements)
798 * `--with-freetype=<path>` - Set the path to [FreeType](#freetype)
799 * `--with-cups=<path>` - Set the path to [CUPS](#cups)
800 * `--with-x=<path>` - Set the path to [X11](#x11)
801 * `--with-alsa=<path>` - Set the path to [ALSA](#alsa)
802 * `--with-libffi=<path>` - Set the path to [libffi](#libffi)
803 * `--with-jtreg=<path>` - Set the path to JTReg. See [Running Tests](
804 #running-tests)
805
806 Certain third-party libraries used by OpenJDK (libjpeg, giflib, libpng, lcms
807 and zlib) are included in the OpenJDK repository. The default behavior of the
808 OpenJDK build is to use this version of these libraries, but they might be
809 replaced by an external version. To do so, specify `system` as the `<source>`
810 option in these arguments. (The default is `bundled`).
811
812 * `--with-libjpeg=<source>` - Use the specified source for libjpeg
813 * `--with-giflib=<source>` - Use the specified source for giflib
814 * `--with-libpng=<source>` - Use the specified source for libpng
815 * `--with-lcms=<source>` - Use the specified source for lcms
816 * `--with-zlib=<source>` - Use the specified source for zlib
817
818 On Linux, it is possible to select either static or dynamic linking of the C++
819 runtime. The default is static linking, with dynamic linking as fallback if the
820 static library is not found.
821
822 * `--with-stdc++lib=<method>` - Use the specified method (`static`, `dynamic`
|