510 * To install on an rpm-based Linux, try running `sudo yum install 511 alsa-lib-devel`. 512 513 Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA 514 files. 515 516 ### libffi 517 518 libffi, the [Portable Foreign Function Interface Library]( 519 http://sourceware.org/libffi) is required when building the Zero version of 520 Hotspot. 521 522 * To install on an apt-based Linux, try running `sudo apt-get install 523 libffi-dev`. 524 * To install on an rpm-based Linux, try running `sudo yum install 525 libffi-devel`. 526 527 Use `--with-libffi=<path>` if `configure` does not properly locate your libffi 528 files. 529 530 ## Build Tools Requirements 531 532 ### Autoconf 533 534 The JDK requires [Autoconf](http://www.gnu.org/software/autoconf) on all 535 platforms. At least version 2.69 is required. 536 537 * To install on an apt-based Linux, try running `sudo apt-get install 538 autoconf`. 539 * To install on an rpm-based Linux, try running `sudo yum install 540 autoconf`. 541 * To install on macOS, try running `brew install autoconf`. 542 * To install on Windows, try running `<path to Cygwin setup>/setup-x86_64 -q 543 -P autoconf`. 544 545 If `configure` has problems locating your installation of autoconf, you can 546 specify it using the `AUTOCONF` environment variable, like this: 547 548 ``` 549 AUTOCONF=<path to autoconf> configure ... 677 * `--with-extra-path=<path>[;<path>]` - Prepend these directories to the 678 default path when searching for all kinds of binaries 679 * `--with-toolchain-path=<path>[;<path>]` - Prepend these directories when 680 searching for toolchain binaries (compilers etc) 681 * `--with-extra-cflags=<flags>` - Append these flags when compiling JDK C 682 files 683 * `--with-extra-cxxflags=<flags>` - Append these flags when compiling JDK C++ 684 files 685 * `--with-extra-ldflags=<flags>` - Append these flags when linking JDK 686 libraries 687 688 #### Configure Arguments for External Dependencies 689 690 * `--with-boot-jdk=<path>` - Set the path to the [Boot JDK]( 691 #boot-jdk-requirements) 692 * `--with-freetype=<path>` - Set the path to [FreeType](#freetype) 693 * `--with-cups=<path>` - Set the path to [CUPS](#cups) 694 * `--with-x=<path>` - Set the path to [X11](#x11) 695 * `--with-alsa=<path>` - Set the path to [ALSA](#alsa) 696 * `--with-libffi=<path>` - Set the path to [libffi](#libffi) 697 * `--with-jtreg=<path>` - Set the path to JTReg. See [Running Tests]( 698 #running-tests) 699 700 Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms 701 and zlib) are included in the JDK repository. The default behavior of the 702 JDK build is to use this version of these libraries, but they might be 703 replaced by an external version. To do so, specify `system` as the `<source>` 704 option in these arguments. (The default is `bundled`). 705 706 * `--with-libjpeg=<source>` - Use the specified source for libjpeg 707 * `--with-giflib=<source>` - Use the specified source for giflib 708 * `--with-libpng=<source>` - Use the specified source for libpng 709 * `--with-lcms=<source>` - Use the specified source for lcms 710 * `--with-zlib=<source>` - Use the specified source for zlib 711 712 On Linux, it is possible to select either static or dynamic linking of the C++ 713 runtime. The default is static linking, with dynamic linking as fallback if the 714 static library is not found. 715 716 * `--with-stdc++lib=<method>` - Use the specified method (`static`, `dynamic` | 510 * To install on an rpm-based Linux, try running `sudo yum install 511 alsa-lib-devel`. 512 513 Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA 514 files. 515 516 ### libffi 517 518 libffi, the [Portable Foreign Function Interface Library]( 519 http://sourceware.org/libffi) is required when building the Zero version of 520 Hotspot. 521 522 * To install on an apt-based Linux, try running `sudo apt-get install 523 libffi-dev`. 524 * To install on an rpm-based Linux, try running `sudo yum install 525 libffi-devel`. 526 527 Use `--with-libffi=<path>` if `configure` does not properly locate your libffi 528 files. 529 530 ### SoftFloat 531 532 [Berkeley SoftFloat-3](http://www.jhauser.us/arithmetic/SoftFloat.html) 533 can be used on ARM processors without FPU to slightly enhance 534 the arithmetic precision of some floating point operations. It is not 535 required, system softfp routines can be used without any problems. 536 The precision loss is extremely small, but [the JCK detects it]( 537 http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html). 538 539 * To build the library, you will have to download its source and build it 540 for the target platform. To do so, take a look in its 541 `build/Linux-ARM-VFPv2-GCC` subdirectory. 542 543 You can enable this library by specifying a library prefix 544 via `--with-sflt=<path>` or by specifying path to softfloat.a 545 via `--with-sflt-lib=<path>` and path to directory 546 containing softfloat.h via `--with-sflt-include=<path>`. You 547 will also need to specify path to the SoftFloat license file with 548 `--with-sflt-license=<path>`. If you want to use the prefix option, ensure that 549 `<prefix>/lib/softfloat.a`, `<prefix>/include/softfloat.h` and 550 `<prefix>/share/softfloat/softfloat.md` exist. However you can override 551 the defaults by using the options above. 552 553 If you do not enable this library, standard system libraries 554 will be used instead. 555 556 ## Build Tools Requirements 557 558 ### Autoconf 559 560 The JDK requires [Autoconf](http://www.gnu.org/software/autoconf) on all 561 platforms. At least version 2.69 is required. 562 563 * To install on an apt-based Linux, try running `sudo apt-get install 564 autoconf`. 565 * To install on an rpm-based Linux, try running `sudo yum install 566 autoconf`. 567 * To install on macOS, try running `brew install autoconf`. 568 * To install on Windows, try running `<path to Cygwin setup>/setup-x86_64 -q 569 -P autoconf`. 570 571 If `configure` has problems locating your installation of autoconf, you can 572 specify it using the `AUTOCONF` environment variable, like this: 573 574 ``` 575 AUTOCONF=<path to autoconf> configure ... 703 * `--with-extra-path=<path>[;<path>]` - Prepend these directories to the 704 default path when searching for all kinds of binaries 705 * `--with-toolchain-path=<path>[;<path>]` - Prepend these directories when 706 searching for toolchain binaries (compilers etc) 707 * `--with-extra-cflags=<flags>` - Append these flags when compiling JDK C 708 files 709 * `--with-extra-cxxflags=<flags>` - Append these flags when compiling JDK C++ 710 files 711 * `--with-extra-ldflags=<flags>` - Append these flags when linking JDK 712 libraries 713 714 #### Configure Arguments for External Dependencies 715 716 * `--with-boot-jdk=<path>` - Set the path to the [Boot JDK]( 717 #boot-jdk-requirements) 718 * `--with-freetype=<path>` - Set the path to [FreeType](#freetype) 719 * `--with-cups=<path>` - Set the path to [CUPS](#cups) 720 * `--with-x=<path>` - Set the path to [X11](#x11) 721 * `--with-alsa=<path>` - Set the path to [ALSA](#alsa) 722 * `--with-libffi=<path>` - Set the path to [libffi](#libffi) 723 * `--with-sflt=<path>` - Enable and set the path to [SoftFloat](#softfloat) 724 library. 725 * `--with-jtreg=<path>` - Set the path to JTReg. See [Running Tests]( 726 #running-tests) 727 728 Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms 729 and zlib) are included in the JDK repository. The default behavior of the 730 JDK build is to use this version of these libraries, but they might be 731 replaced by an external version. To do so, specify `system` as the `<source>` 732 option in these arguments. (The default is `bundled`). 733 734 * `--with-libjpeg=<source>` - Use the specified source for libjpeg 735 * `--with-giflib=<source>` - Use the specified source for giflib 736 * `--with-libpng=<source>` - Use the specified source for libpng 737 * `--with-lcms=<source>` - Use the specified source for lcms 738 * `--with-zlib=<source>` - Use the specified source for zlib 739 740 On Linux, it is possible to select either static or dynamic linking of the C++ 741 runtime. The default is static linking, with dynamic linking as fallback if the 742 static library is not found. 743 744 * `--with-stdc++lib=<method>` - Use the specified method (`static`, `dynamic` |