< prev index next >

doc/building.html

Print this page




  41 <li><a href="#linux">Linux</a></li>
  42 <li><a href="#aix">AIX</a></li>
  43 </ul></li>
  44 <li><a href="#native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</a><ul>
  45 <li><a href="#gcc">gcc</a></li>
  46 <li><a href="#clang">clang</a></li>
  47 <li><a href="#apple-xcode">Apple Xcode</a></li>
  48 <li><a href="#oracle-solaris-studio">Oracle Solaris Studio</a></li>
  49 <li><a href="#microsoft-visual-studio">Microsoft Visual Studio</a></li>
  50 <li><a href="#ibm-xl-cc">IBM XL C/C++</a></li>
  51 </ul></li>
  52 <li><a href="#boot-jdk-requirements">Boot JDK Requirements</a><ul>
  53 <li><a href="#getting-jdk-binaries">Getting JDK binaries</a></li>
  54 </ul></li>
  55 <li><a href="#external-library-requirements">External Library Requirements</a><ul>
  56 <li><a href="#freetype">FreeType</a></li>
  57 <li><a href="#cups">CUPS</a></li>
  58 <li><a href="#x11">X11</a></li>
  59 <li><a href="#alsa">ALSA</a></li>
  60 <li><a href="#libffi">libffi</a></li>

  61 </ul></li>
  62 <li><a href="#build-tools-requirements">Build Tools Requirements</a><ul>
  63 <li><a href="#autoconf">Autoconf</a></li>
  64 <li><a href="#gnu-make">GNU Make</a></li>
  65 <li><a href="#gnu-bash">GNU Bash</a></li>
  66 </ul></li>
  67 <li><a href="#running-configure">Running Configure</a><ul>
  68 <li><a href="#common-configure-arguments">Common Configure Arguments</a></li>
  69 <li><a href="#configure-control-variables">Configure Control Variables</a></li>
  70 </ul></li>
  71 <li><a href="#running-make">Running Make</a><ul>
  72 <li><a href="#common-make-targets">Common Make Targets</a></li>
  73 <li><a href="#make-control-variables">Make Control Variables</a></li>
  74 </ul></li>
  75 <li><a href="#running-tests">Running Tests</a></li>
  76 <li><a href="#cross-compiling">Cross-compiling</a><ul>
  77 <li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
  78 <li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
  79 <li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
  80 <li><a href="#toolchain-considerations">Toolchain Considerations</a></li>


 403 <ul>
 404 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev</code>.</li>
 405 <li>To install on an rpm-based Linux, try running <code>sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel</code>.</li>
 406 <li>To install on Solaris, try running <code>pkg install x11/header/x11-protocols x11/library/libice x11/library/libpthread-stubs x11/library/libsm x11/library/libx11 x11/library/libxau x11/library/libxcb x11/library/libxdmcp x11/library/libxevie x11/library/libxext x11/library/libxrender x11/library/libxrandr x11/library/libxscrnsaver x11/library/libxtst x11/library/toolkit/libxt</code>.</li>
 407 </ul>
 408 <p>Use <code>--with-x=&lt;path&gt;</code> if <code>configure</code> does not properly locate your X11 files.</p>
 409 <h3 id="alsa">ALSA</h3>
 410 <p>ALSA, <a href="https://www.alsa-project.org/">Advanced Linux Sound Architecture</a> is required on Linux. At least version 0.9.1 of ALSA is required.</p>
 411 <ul>
 412 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libasound2-dev</code>.</li>
 413 <li>To install on an rpm-based Linux, try running <code>sudo yum install alsa-lib-devel</code>.</li>
 414 </ul>
 415 <p>Use <code>--with-alsa=&lt;path&gt;</code> if <code>configure</code> does not properly locate your ALSA files.</p>
 416 <h3 id="libffi">libffi</h3>
 417 <p>libffi, the <a href="http://sourceware.org/libffi">Portable Foreign Function Interface Library</a> is required when building the Zero version of Hotspot.</p>
 418 <ul>
 419 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libffi-dev</code>.</li>
 420 <li>To install on an rpm-based Linux, try running <code>sudo yum install libffi-devel</code>.</li>
 421 </ul>
 422 <p>Use <code>--with-libffi=&lt;path&gt;</code> if <code>configure</code> does not properly locate your libffi files.</p>







 423 <h2 id="build-tools-requirements">Build Tools Requirements</h2>
 424 <h3 id="autoconf">Autoconf</h3>
 425 <p>The JDK requires <a href="http://www.gnu.org/software/autoconf">Autoconf</a> on all platforms. At least version 2.69 is required.</p>
 426 <ul>
 427 <li>To install on an apt-based Linux, try running <code>sudo apt-get install autoconf</code>.</li>
 428 <li>To install on an rpm-based Linux, try running <code>sudo yum install autoconf</code>.</li>
 429 <li>To install on macOS, try running <code>brew install autoconf</code>.</li>
 430 <li>To install on Windows, try running <code>&lt;path to Cygwin setup&gt;/setup-x86_64 -q -P autoconf</code>.</li>
 431 </ul>
 432 <p>If <code>configure</code> has problems locating your installation of autoconf, you can specify it using the <code>AUTOCONF</code> environment variable, like this:</p>
 433 <pre><code>AUTOCONF=&lt;path to autoconf&gt; configure ...</code></pre>
 434 <h3 id="gnu-make">GNU Make</h3>
 435 <p>The JDK requires <a href="http://www.gnu.org/software/make">GNU Make</a>. No other flavors of make are supported.</p>
 436 <p>At least version 3.81 of GNU Make must be used. For distributions supporting GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful functionality to handle parallel building (supported by <code>--with-output-sync</code>) and speed and stability improvements.</p>
 437 <p>Note that <code>configure</code> locates and verifies a properly functioning version of <code>make</code> and stores the path to this <code>make</code> binary in the configuration. If you start a build using <code>make</code> on the command line, you will be using the version of make found first in your <code>PATH</code>, and not necessarily the one stored in the configuration. This initial make will be used as &quot;bootstrap make&quot;, and in a second stage, the make located by <code>configure</code> will be called. Normally, this will present no issues, but if you have a very old <code>make</code>, or a non-GNU Make <code>make</code> in your path, this might cause issues.</p>
 438 <p>If you want to override the default make found by <code>configure</code>, use the <code>MAKE</code> configure variable, e.g. <code>configure MAKE=/opt/gnu/make</code>.</p>
 439 <p>On Solaris, it is common to call the GNU version of make by using <code>gmake</code>.</p>
 440 <h3 id="gnu-bash">GNU Bash</h3>
 441 <p>The JDK requires <a href="http://www.gnu.org/software/bash">GNU Bash</a>. No other shells are supported.</p>
 442 <p>At least version 3.2 of GNU Bash must be used.</p>


 474 <li><code>--with-jni-libpath=&lt;path&gt;</code> - Use the specified path as a default when searching for runtime libraries.</li>
 475 </ul>
 476 <h4 id="configure-arguments-for-native-compilation">Configure Arguments for Native Compilation</h4>
 477 <ul>
 478 <li><code>--with-devkit=&lt;path&gt;</code> - Use this devkit for compilers, tools and resources</li>
 479 <li><code>--with-sysroot=&lt;path&gt;</code> - Use this directory as sysroot</li>
 480 <li><code>--with-extra-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories to the default path when searching for all kinds of binaries</li>
 481 <li><code>--with-toolchain-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories when searching for toolchain binaries (compilers etc)</li>
 482 <li><code>--with-extra-cflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C files</li>
 483 <li><code>--with-extra-cxxflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C++ files</li>
 484 <li><code>--with-extra-ldflags=&lt;flags&gt;</code> - Append these flags when linking JDK libraries</li>
 485 </ul>
 486 <h4 id="configure-arguments-for-external-dependencies">Configure Arguments for External Dependencies</h4>
 487 <ul>
 488 <li><code>--with-boot-jdk=&lt;path&gt;</code> - Set the path to the <a href="#boot-jdk-requirements">Boot JDK</a></li>
 489 <li><code>--with-freetype=&lt;path&gt;</code> - Set the path to <a href="#freetype">FreeType</a></li>
 490 <li><code>--with-cups=&lt;path&gt;</code> - Set the path to <a href="#cups">CUPS</a></li>
 491 <li><code>--with-x=&lt;path&gt;</code> - Set the path to <a href="#x11">X11</a></li>
 492 <li><code>--with-alsa=&lt;path&gt;</code> - Set the path to <a href="#alsa">ALSA</a></li>
 493 <li><code>--with-libffi=&lt;path&gt;</code> - Set the path to <a href="#libffi">libffi</a></li>

 494 <li><code>--with-jtreg=&lt;path&gt;</code> - Set the path to JTReg. See <a href="#running-tests">Running Tests</a></li>
 495 </ul>
 496 <p>Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms and zlib) are included in the JDK repository. The default behavior of the JDK build is to use this version of these libraries, but they might be replaced by an external version. To do so, specify <code>system</code> as the <code>&lt;source&gt;</code> option in these arguments. (The default is <code>bundled</code>).</p>
 497 <ul>
 498 <li><code>--with-libjpeg=&lt;source&gt;</code> - Use the specified source for libjpeg</li>
 499 <li><code>--with-giflib=&lt;source&gt;</code> - Use the specified source for giflib</li>
 500 <li><code>--with-libpng=&lt;source&gt;</code> - Use the specified source for libpng</li>
 501 <li><code>--with-lcms=&lt;source&gt;</code> - Use the specified source for lcms</li>
 502 <li><code>--with-zlib=&lt;source&gt;</code> - Use the specified source for zlib</li>
 503 </ul>
 504 <p>On Linux, it is possible to select either static or dynamic linking of the C++ runtime. The default is static linking, with dynamic linking as fallback if the static library is not found.</p>
 505 <ul>
 506 <li><code>--with-stdc++lib=&lt;method&gt;</code> - Use the specified method (<code>static</code>, <code>dynamic</code> or <code>default</code>) for linking the C++ runtime.</li>
 507 </ul>
 508 <h3 id="configure-control-variables">Configure Control Variables</h3>
 509 <p>It is possible to control certain aspects of <code>configure</code> by overriding the value of <code>configure</code> variables, either on the command line or in the environment.</p>
 510 <p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken configuration. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>configure</code> will print a warning if this is detected.</p>
 511 <p>However, there are a few <code>configure</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These are variables that describe the location of tools needed by the build, like <code>MAKE</code> or <code>GREP</code>. If any such variable is specified, <code>configure</code> will use that value instead of trying to autodetect the tool. For instance, <code>bash configure MAKE=/opt/gnumake4.0/bin/make</code>.</p>
 512 <p>If a configure argument exists, use that instead, e.g. use <code>--with-jtreg</code> instead of setting <code>JTREGEXE</code>.</p>
 513 <p>Also note that, despite what autoconf claims, setting <code>CFLAGS</code> will not accomplish anything. Instead use <code>--with-extra-cflags</code> (and similar for <code>cxxflags</code> and <code>ldflags</code>).</p>




  41 <li><a href="#linux">Linux</a></li>
  42 <li><a href="#aix">AIX</a></li>
  43 </ul></li>
  44 <li><a href="#native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</a><ul>
  45 <li><a href="#gcc">gcc</a></li>
  46 <li><a href="#clang">clang</a></li>
  47 <li><a href="#apple-xcode">Apple Xcode</a></li>
  48 <li><a href="#oracle-solaris-studio">Oracle Solaris Studio</a></li>
  49 <li><a href="#microsoft-visual-studio">Microsoft Visual Studio</a></li>
  50 <li><a href="#ibm-xl-cc">IBM XL C/C++</a></li>
  51 </ul></li>
  52 <li><a href="#boot-jdk-requirements">Boot JDK Requirements</a><ul>
  53 <li><a href="#getting-jdk-binaries">Getting JDK binaries</a></li>
  54 </ul></li>
  55 <li><a href="#external-library-requirements">External Library Requirements</a><ul>
  56 <li><a href="#freetype">FreeType</a></li>
  57 <li><a href="#cups">CUPS</a></li>
  58 <li><a href="#x11">X11</a></li>
  59 <li><a href="#alsa">ALSA</a></li>
  60 <li><a href="#libffi">libffi</a></li>
  61 <li><a href="#softfloat">SoftFloat</a></li>
  62 </ul></li>
  63 <li><a href="#build-tools-requirements">Build Tools Requirements</a><ul>
  64 <li><a href="#autoconf">Autoconf</a></li>
  65 <li><a href="#gnu-make">GNU Make</a></li>
  66 <li><a href="#gnu-bash">GNU Bash</a></li>
  67 </ul></li>
  68 <li><a href="#running-configure">Running Configure</a><ul>
  69 <li><a href="#common-configure-arguments">Common Configure Arguments</a></li>
  70 <li><a href="#configure-control-variables">Configure Control Variables</a></li>
  71 </ul></li>
  72 <li><a href="#running-make">Running Make</a><ul>
  73 <li><a href="#common-make-targets">Common Make Targets</a></li>
  74 <li><a href="#make-control-variables">Make Control Variables</a></li>
  75 </ul></li>
  76 <li><a href="#running-tests">Running Tests</a></li>
  77 <li><a href="#cross-compiling">Cross-compiling</a><ul>
  78 <li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
  79 <li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
  80 <li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
  81 <li><a href="#toolchain-considerations">Toolchain Considerations</a></li>


 404 <ul>
 405 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev</code>.</li>
 406 <li>To install on an rpm-based Linux, try running <code>sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel</code>.</li>
 407 <li>To install on Solaris, try running <code>pkg install x11/header/x11-protocols x11/library/libice x11/library/libpthread-stubs x11/library/libsm x11/library/libx11 x11/library/libxau x11/library/libxcb x11/library/libxdmcp x11/library/libxevie x11/library/libxext x11/library/libxrender x11/library/libxrandr x11/library/libxscrnsaver x11/library/libxtst x11/library/toolkit/libxt</code>.</li>
 408 </ul>
 409 <p>Use <code>--with-x=&lt;path&gt;</code> if <code>configure</code> does not properly locate your X11 files.</p>
 410 <h3 id="alsa">ALSA</h3>
 411 <p>ALSA, <a href="https://www.alsa-project.org/">Advanced Linux Sound Architecture</a> is required on Linux. At least version 0.9.1 of ALSA is required.</p>
 412 <ul>
 413 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libasound2-dev</code>.</li>
 414 <li>To install on an rpm-based Linux, try running <code>sudo yum install alsa-lib-devel</code>.</li>
 415 </ul>
 416 <p>Use <code>--with-alsa=&lt;path&gt;</code> if <code>configure</code> does not properly locate your ALSA files.</p>
 417 <h3 id="libffi">libffi</h3>
 418 <p>libffi, the <a href="http://sourceware.org/libffi">Portable Foreign Function Interface Library</a> is required when building the Zero version of Hotspot.</p>
 419 <ul>
 420 <li>To install on an apt-based Linux, try running <code>sudo apt-get install libffi-dev</code>.</li>
 421 <li>To install on an rpm-based Linux, try running <code>sudo yum install libffi-devel</code>.</li>
 422 </ul>
 423 <p>Use <code>--with-libffi=&lt;path&gt;</code> if <code>configure</code> does not properly locate your libffi files.</p>
 424 <h3 id="softfloat">SoftFloat</h3>
 425 <p><a href="http://www.jhauser.us/arithmetic/SoftFloat.html">Berkeley SoftFloat-3</a> can be used on ARM processors without FPU to slightly enhance the arithmetic precision of some floating point operations. It is not required, system softfp routines can be used without any problems. The precision loss is extremely small, but <a href="http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html">the JCK detects it</a>.</p>
 426 <ul>
 427 <li>To build the library, you will have to download its source and build it for the target platform. To do so, take a look in its <code>build/Linux-ARM-VFPv2-GCC</code> subdirectory.</li>
 428 </ul>
 429 <p>You can enable this library by specifying a library prefix via <code>--with-sflt=&lt;path&gt;</code> or by specifying path to softfloat.a via <code>--with-sflt-lib=&lt;path&gt;</code> and path to directory containing softfloat.h via <code>--with-sflt-include=&lt;path&gt;</code>. You will also need to specify path to the SoftFloat license file with <code>--with-sflt-license=&lt;path&gt;</code>. If you want to use the prefix option, ensure that <code>&lt;prefix&gt;/lib/softfloat.a</code>, <code>&lt;prefix&gt;/include/softfloat.h</code> and <code>&lt;prefix&gt;/share/softfloat/softfloat.md</code> exist. However you can override the defaults by using the options above.</p>
 430 <p>If you do not enable this library, standard system libraries will be used instead.</p>
 431 <h2 id="build-tools-requirements">Build Tools Requirements</h2>
 432 <h3 id="autoconf">Autoconf</h3>
 433 <p>The JDK requires <a href="http://www.gnu.org/software/autoconf">Autoconf</a> on all platforms. At least version 2.69 is required.</p>
 434 <ul>
 435 <li>To install on an apt-based Linux, try running <code>sudo apt-get install autoconf</code>.</li>
 436 <li>To install on an rpm-based Linux, try running <code>sudo yum install autoconf</code>.</li>
 437 <li>To install on macOS, try running <code>brew install autoconf</code>.</li>
 438 <li>To install on Windows, try running <code>&lt;path to Cygwin setup&gt;/setup-x86_64 -q -P autoconf</code>.</li>
 439 </ul>
 440 <p>If <code>configure</code> has problems locating your installation of autoconf, you can specify it using the <code>AUTOCONF</code> environment variable, like this:</p>
 441 <pre><code>AUTOCONF=&lt;path to autoconf&gt; configure ...</code></pre>
 442 <h3 id="gnu-make">GNU Make</h3>
 443 <p>The JDK requires <a href="http://www.gnu.org/software/make">GNU Make</a>. No other flavors of make are supported.</p>
 444 <p>At least version 3.81 of GNU Make must be used. For distributions supporting GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful functionality to handle parallel building (supported by <code>--with-output-sync</code>) and speed and stability improvements.</p>
 445 <p>Note that <code>configure</code> locates and verifies a properly functioning version of <code>make</code> and stores the path to this <code>make</code> binary in the configuration. If you start a build using <code>make</code> on the command line, you will be using the version of make found first in your <code>PATH</code>, and not necessarily the one stored in the configuration. This initial make will be used as &quot;bootstrap make&quot;, and in a second stage, the make located by <code>configure</code> will be called. Normally, this will present no issues, but if you have a very old <code>make</code>, or a non-GNU Make <code>make</code> in your path, this might cause issues.</p>
 446 <p>If you want to override the default make found by <code>configure</code>, use the <code>MAKE</code> configure variable, e.g. <code>configure MAKE=/opt/gnu/make</code>.</p>
 447 <p>On Solaris, it is common to call the GNU version of make by using <code>gmake</code>.</p>
 448 <h3 id="gnu-bash">GNU Bash</h3>
 449 <p>The JDK requires <a href="http://www.gnu.org/software/bash">GNU Bash</a>. No other shells are supported.</p>
 450 <p>At least version 3.2 of GNU Bash must be used.</p>


 482 <li><code>--with-jni-libpath=&lt;path&gt;</code> - Use the specified path as a default when searching for runtime libraries.</li>
 483 </ul>
 484 <h4 id="configure-arguments-for-native-compilation">Configure Arguments for Native Compilation</h4>
 485 <ul>
 486 <li><code>--with-devkit=&lt;path&gt;</code> - Use this devkit for compilers, tools and resources</li>
 487 <li><code>--with-sysroot=&lt;path&gt;</code> - Use this directory as sysroot</li>
 488 <li><code>--with-extra-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories to the default path when searching for all kinds of binaries</li>
 489 <li><code>--with-toolchain-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories when searching for toolchain binaries (compilers etc)</li>
 490 <li><code>--with-extra-cflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C files</li>
 491 <li><code>--with-extra-cxxflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C++ files</li>
 492 <li><code>--with-extra-ldflags=&lt;flags&gt;</code> - Append these flags when linking JDK libraries</li>
 493 </ul>
 494 <h4 id="configure-arguments-for-external-dependencies">Configure Arguments for External Dependencies</h4>
 495 <ul>
 496 <li><code>--with-boot-jdk=&lt;path&gt;</code> - Set the path to the <a href="#boot-jdk-requirements">Boot JDK</a></li>
 497 <li><code>--with-freetype=&lt;path&gt;</code> - Set the path to <a href="#freetype">FreeType</a></li>
 498 <li><code>--with-cups=&lt;path&gt;</code> - Set the path to <a href="#cups">CUPS</a></li>
 499 <li><code>--with-x=&lt;path&gt;</code> - Set the path to <a href="#x11">X11</a></li>
 500 <li><code>--with-alsa=&lt;path&gt;</code> - Set the path to <a href="#alsa">ALSA</a></li>
 501 <li><code>--with-libffi=&lt;path&gt;</code> - Set the path to <a href="#libffi">libffi</a></li>
 502 <li><code>--with-sflt=&lt;path&gt;</code> - Enable and set the path to <a href="#softfloat">SoftFloat</a> library.</li>
 503 <li><code>--with-jtreg=&lt;path&gt;</code> - Set the path to JTReg. See <a href="#running-tests">Running Tests</a></li>
 504 </ul>
 505 <p>Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms and zlib) are included in the JDK repository. The default behavior of the JDK build is to use this version of these libraries, but they might be replaced by an external version. To do so, specify <code>system</code> as the <code>&lt;source&gt;</code> option in these arguments. (The default is <code>bundled</code>).</p>
 506 <ul>
 507 <li><code>--with-libjpeg=&lt;source&gt;</code> - Use the specified source for libjpeg</li>
 508 <li><code>--with-giflib=&lt;source&gt;</code> - Use the specified source for giflib</li>
 509 <li><code>--with-libpng=&lt;source&gt;</code> - Use the specified source for libpng</li>
 510 <li><code>--with-lcms=&lt;source&gt;</code> - Use the specified source for lcms</li>
 511 <li><code>--with-zlib=&lt;source&gt;</code> - Use the specified source for zlib</li>
 512 </ul>
 513 <p>On Linux, it is possible to select either static or dynamic linking of the C++ runtime. The default is static linking, with dynamic linking as fallback if the static library is not found.</p>
 514 <ul>
 515 <li><code>--with-stdc++lib=&lt;method&gt;</code> - Use the specified method (<code>static</code>, <code>dynamic</code> or <code>default</code>) for linking the C++ runtime.</li>
 516 </ul>
 517 <h3 id="configure-control-variables">Configure Control Variables</h3>
 518 <p>It is possible to control certain aspects of <code>configure</code> by overriding the value of <code>configure</code> variables, either on the command line or in the environment.</p>
 519 <p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken configuration. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>configure</code> will print a warning if this is detected.</p>
 520 <p>However, there are a few <code>configure</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These are variables that describe the location of tools needed by the build, like <code>MAKE</code> or <code>GREP</code>. If any such variable is specified, <code>configure</code> will use that value instead of trying to autodetect the tool. For instance, <code>bash configure MAKE=/opt/gnumake4.0/bin/make</code>.</p>
 521 <p>If a configure argument exists, use that instead, e.g. use <code>--with-jtreg</code> instead of setting <code>JTREGEXE</code>.</p>
 522 <p>Also note that, despite what autoconf claims, setting <code>CFLAGS</code> will not accomplish anything. Instead use <code>--with-extra-cflags</code> (and similar for <code>cxxflags</code> and <code>ldflags</code>).</p>


< prev index next >