1 # 2 # Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 ############################################################################### 27 # Check which variant of the JDK that we want to build. 28 # Currently we have: 29 # normal: standard edition 30 # but the custom make system may add other variants 31 # 32 # Effectively the JDK variant gives a name to a specific set of 33 # modules to compile into the JDK. 34 AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_VARIANT], 35 [ 36 # Deprecated in JDK 12 37 BASIC_DEPRECATED_ARG_WITH([jdk-variant]) 38 ]) 39 40 ############################################################################### 41 # Set the debug level 42 # release: no debug information, all optimizations, no asserts. 43 # optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'. 44 # fastdebug: debug information (-g), all optimizations, all asserts 45 # slowdebug: debug information (-g), no optimizations, all asserts 46 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL], 47 [ 48 DEBUG_LEVEL="release" 49 AC_MSG_CHECKING([which debug level to use]) 50 AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], 51 [set the debug level to fastdebug (shorthand for --with-debug-level=fastdebug) @<:@disabled@:>@])], 52 [ 53 ENABLE_DEBUG="${enableval}" 54 DEBUG_LEVEL="fastdebug" 55 ], [ENABLE_DEBUG="no"]) 56 57 AC_ARG_WITH([debug-level], [AS_HELP_STRING([--with-debug-level], 58 [set the debug level (release, fastdebug, slowdebug, optimized) @<:@release@:>@])], 59 [ 60 DEBUG_LEVEL="${withval}" 61 if test "x$ENABLE_DEBUG" = xyes; then 62 AC_MSG_ERROR([You cannot use both --enable-debug and --with-debug-level at the same time.]) 63 fi 64 ]) 65 AC_MSG_RESULT([$DEBUG_LEVEL]) 66 67 if test "x$DEBUG_LEVEL" != xrelease && \ 68 test "x$DEBUG_LEVEL" != xoptimized && \ 69 test "x$DEBUG_LEVEL" != xfastdebug && \ 70 test "x$DEBUG_LEVEL" != xslowdebug; then 71 AC_MSG_ERROR([Allowed debug levels are: release, fastdebug, slowdebug and optimized]) 72 fi 73 74 # Translate DEBUG_LEVEL to debug level used by Hotspot 75 HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL" 76 if test "x$DEBUG_LEVEL" = xrelease; then 77 HOTSPOT_DEBUG_LEVEL="product" 78 elif test "x$DEBUG_LEVEL" = xslowdebug; then 79 HOTSPOT_DEBUG_LEVEL="debug" 80 fi 81 82 if test "x$DEBUG_LEVEL" = xoptimized; then 83 # The debug level 'optimized' is a little special because it is currently only 84 # applicable to the HotSpot build where it means to build a completely 85 # optimized version of the VM without any debugging code (like for the 86 # 'release' debug level which is called 'product' in the HotSpot build) but 87 # with the exception that it can contain additional code which is otherwise 88 # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to 89 # test new and/or experimental features which are not intended for customer 90 # shipment. Because these new features need to be tested and benchmarked in 91 # real world scenarios, we want to build the containing JDK at the 'release' 92 # debug level. 93 DEBUG_LEVEL="release" 94 fi 95 96 AC_SUBST(HOTSPOT_DEBUG_LEVEL) 97 AC_SUBST(DEBUG_LEVEL) 98 ]) 99 100 ############################################################################### 101 # 102 # Should we build only OpenJDK even if closed sources are present? 103 # 104 AC_DEFUN_ONCE([JDKOPT_SETUP_OPEN_OR_CUSTOM], 105 [ 106 AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only], 107 [suppress building custom source even if present @<:@disabled@:>@])],,[enable_openjdk_only="no"]) 108 109 AC_MSG_CHECKING([if custom source is suppressed (openjdk-only)]) 110 AC_MSG_RESULT([$enable_openjdk_only]) 111 if test "x$enable_openjdk_only" = "xyes"; then 112 SUPPRESS_CUSTOM_EXTENSIONS="true" 113 elif test "x$enable_openjdk_only" = "xno"; then 114 SUPPRESS_CUSTOM_EXTENSIONS="false" 115 else 116 AC_MSG_ERROR([Invalid value for --enable-openjdk-only: $enable_openjdk_only]) 117 fi 118 ]) 119 120 AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS], 121 [ 122 # Should we build a JDK without a graphical UI? 123 AC_MSG_CHECKING([headless only]) 124 AC_ARG_ENABLE([headless-only], [AS_HELP_STRING([--enable-headless-only], 125 [only build headless (no GUI) support @<:@disabled@:>@])]) 126 127 if test "x$enable_headless_only" = "xyes"; then 128 ENABLE_HEADLESS_ONLY="true" 129 AC_MSG_RESULT([yes]) 130 elif test "x$enable_headless_only" = "xno"; then 131 ENABLE_HEADLESS_ONLY="false" 132 AC_MSG_RESULT([no]) 133 elif test "x$enable_headless_only" = "x"; then 134 ENABLE_HEADLESS_ONLY="false" 135 AC_MSG_RESULT([no]) 136 else 137 AC_MSG_ERROR([--enable-headless-only can only take yes or no]) 138 fi 139 140 AC_SUBST(ENABLE_HEADLESS_ONLY) 141 142 # Should we build the complete docs, or just a lightweight version? 143 AC_ARG_ENABLE([full-docs], [AS_HELP_STRING([--enable-full-docs], 144 [build complete documentation @<:@enabled if all tools found@:>@])]) 145 146 # Verify dependencies 147 AC_MSG_CHECKING([for graphviz dot]) 148 if test "x$DOT" != "x"; then 149 AC_MSG_RESULT([yes]) 150 else 151 AC_MSG_RESULT([no, cannot generate full docs]) 152 FULL_DOCS_DEP_MISSING=true 153 fi 154 155 AC_MSG_CHECKING([for pandoc]) 156 if test "x$PANDOC" != "x"; then 157 AC_MSG_RESULT([yes]) 158 else 159 AC_MSG_RESULT([no, cannot generate full docs]) 160 FULL_DOCS_DEP_MISSING=true 161 fi 162 163 AC_MSG_CHECKING([full docs]) 164 if test "x$enable_full_docs" = xyes; then 165 if test "x$FULL_DOCS_DEP_MISSING" = "xtrue"; then 166 AC_MSG_RESULT([no, missing dependencies]) 167 HELP_MSG_MISSING_DEPENDENCY([dot]) 168 AC_MSG_ERROR([Cannot enable full docs with missing dependencies. See above. $HELP_MSG]) 169 else 170 ENABLE_FULL_DOCS=true 171 AC_MSG_RESULT([yes, forced]) 172 fi 173 elif test "x$enable_full_docs" = xno; then 174 ENABLE_FULL_DOCS=false 175 AC_MSG_RESULT([no, forced]) 176 elif test "x$enable_full_docs" = x; then 177 # Check for prerequisites 178 if test "x$FULL_DOCS_DEP_MISSING" = xtrue; then 179 ENABLE_FULL_DOCS=false 180 AC_MSG_RESULT([no, missing dependencies]) 181 else 182 ENABLE_FULL_DOCS=true 183 AC_MSG_RESULT([yes, dependencies present]) 184 fi 185 else 186 AC_MSG_ERROR([--enable-full-docs can only take yes or no]) 187 fi 188 189 AC_SUBST(ENABLE_FULL_DOCS) 190 191 # Choose cacerts source file 192 AC_ARG_WITH(cacerts-file, [AS_HELP_STRING([--with-cacerts-file], 193 [specify alternative cacerts file])]) 194 AC_MSG_CHECKING([for cacerts file]) 195 if test "x$with_cacerts_file" == x; then 196 AC_MSG_RESULT([default]) 197 else 198 CACERTS_FILE=$with_cacerts_file 199 if test ! -f "$CACERTS_FILE"; then 200 AC_MSG_RESULT([fail]) 201 AC_MSG_ERROR([Specified cacerts file "$CACERTS_FILE" does not exist]) 202 fi 203 AC_MSG_RESULT([$CACERTS_FILE]) 204 fi 205 AC_SUBST(CACERTS_FILE) 206 207 # Enable or disable unlimited crypto 208 AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--disable-unlimited-crypto], 209 [Disable unlimited crypto policy @<:@enabled@:>@])],, 210 [enable_unlimited_crypto=yes]) 211 if test "x$enable_unlimited_crypto" = "xyes"; then 212 UNLIMITED_CRYPTO=true 213 else 214 UNLIMITED_CRYPTO=false 215 fi 216 AC_SUBST(UNLIMITED_CRYPTO) 217 218 # Should we build the serviceability agent (SA)? 219 INCLUDE_SA=true 220 if HOTSPOT_CHECK_JVM_VARIANT(zero); then 221 INCLUDE_SA=false 222 fi 223 if test "x$OPENJDK_TARGET_OS" = xaix ; then 224 INCLUDE_SA=false 225 fi 226 if test "x$OPENJDK_TARGET_CPU" = xs390x ; then 227 INCLUDE_SA=false 228 fi 229 AC_SUBST(INCLUDE_SA) 230 231 # Compress jars 232 COMPRESS_JARS=false 233 234 AC_SUBST(COMPRESS_JARS) 235 236 # Setup default copyright year. Mostly overridden when building close to a new year. 237 AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year], 238 [Set copyright year value for build @<:@current year@:>@])]) 239 if test "x$with_copyright_year" = xyes; then 240 AC_MSG_ERROR([Copyright year must have a value]) 241 elif test "x$with_copyright_year" != x; then 242 COPYRIGHT_YEAR="$with_copyright_year" 243 else 244 COPYRIGHT_YEAR=`$DATE +'%Y'` 245 fi 246 AC_SUBST(COPYRIGHT_YEAR) 247 248 # Override default library path 249 AC_ARG_WITH([jni-libpath], [AS_HELP_STRING([--with-jni-libpath], 250 [override default JNI library search path])]) 251 AC_MSG_CHECKING([for jni library path]) 252 if test "x${with_jni_libpath}" = "x" || test "x${with_jni_libpath}" = "xno"; then 253 AC_MSG_RESULT([default]) 254 elif test "x${with_jni_libpath}" = "xyes"; then 255 AC_MSG_RESULT([invalid]) 256 AC_MSG_ERROR([The --with-jni-libpath option requires an argument.]) 257 else 258 HOTSPOT_OVERRIDE_LIBPATH=${with_jni_libpath} 259 if test "x$OPENJDK_TARGET_OS" != "xlinux" && 260 test "x$OPENJDK_TARGET_OS" != "xbsd" && 261 test "x$OPENJDK_TARGET_OS" != "xaix"; then 262 AC_MSG_RESULT([fail]) 263 AC_MSG_ERROR([Overriding JNI library path is supported only on Linux, BSD and AIX.]) 264 fi 265 AC_MSG_RESULT(${HOTSPOT_OVERRIDE_LIBPATH}) 266 fi 267 AC_SUBST(HOTSPOT_OVERRIDE_LIBPATH) 268 269 ]) 270 271 ############################################################################### 272 # 273 # Enable or disable the elliptic curve crypto implementation 274 # 275 AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], 276 [ 277 AC_MSG_CHECKING([if elliptic curve crypto implementation is present]) 278 279 if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then 280 ENABLE_INTREE_EC=true 281 AC_MSG_RESULT([yes]) 282 else 283 ENABLE_INTREE_EC=false 284 AC_MSG_RESULT([no]) 285 fi 286 287 AC_SUBST(ENABLE_INTREE_EC) 288 ]) 289 290 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS], 291 [ 292 # 293 # NATIVE_DEBUG_SYMBOLS 294 # This must be done after the toolchain is setup, since we're looking at objcopy. 295 # 296 AC_MSG_CHECKING([what type of native debug symbols to use]) 297 AC_ARG_WITH([native-debug-symbols], 298 [AS_HELP_STRING([--with-native-debug-symbols], 299 [set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])], 300 [ 301 if test "x$OPENJDK_TARGET_OS" = xaix; then 302 if test "x$withval" = xexternal || test "x$withval" = xzipped; then 303 AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols]) 304 fi 305 else 306 if test "x$OPENJDK_TARGET_OS" = xwindows; then 307 if test "x$withval" = xinternal; then 308 AC_MSG_ERROR([Windows does not support the parameter 'internal' for --with-native-debug-symbols]) 309 fi 310 fi 311 fi 312 ], 313 [ 314 if test "x$STATIC_BUILD" = xtrue; then 315 with_native_debug_symbols="none" 316 else 317 if test "x$OPENJDK_TARGET_OS" = xaix; then 318 # AIX doesn't support 'external' so use 'internal' as default 319 with_native_debug_symbols="internal" 320 else 321 with_native_debug_symbols="external" 322 fi 323 fi 324 ]) 325 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 326 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 327 328 if test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then 329 COMPILE_WITH_DEBUG_SYMBOLS=false 330 COPY_DEBUG_SYMBOLS=false 331 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 332 elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then 333 COMPILE_WITH_DEBUG_SYMBOLS=true 334 COPY_DEBUG_SYMBOLS=false 335 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 336 elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then 337 338 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 339 if test "x$OBJCOPY" = x; then 340 # enabling of enable-debug-symbols and can't find objcopy 341 # this is an error 342 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 343 fi 344 fi 345 346 COMPILE_WITH_DEBUG_SYMBOLS=true 347 COPY_DEBUG_SYMBOLS=true 348 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 349 elif test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 350 351 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 352 if test "x$OBJCOPY" = x; then 353 # enabling of enable-debug-symbols and can't find objcopy 354 # this is an error 355 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 356 fi 357 fi 358 359 COMPILE_WITH_DEBUG_SYMBOLS=true 360 COPY_DEBUG_SYMBOLS=true 361 ZIP_EXTERNAL_DEBUG_SYMBOLS=true 362 else 363 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 364 fi 365 366 AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS) 367 AC_SUBST(COPY_DEBUG_SYMBOLS) 368 AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS) 369 ]) 370 371 ################################################################################ 372 # 373 # Native and Java code coverage 374 # 375 AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 376 [ 377 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 378 [enable native compilation with code coverage data@<:@disabled@:>@])]) 379 GCOV_ENABLED="false" 380 if test "x$enable_native_coverage" = "xyes"; then 381 case $TOOLCHAIN_TYPE in 382 gcc | clang) 383 AC_MSG_CHECKING([if native coverage is enabled]) 384 AC_MSG_RESULT([yes]) 385 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 386 GCOV_LDFLAGS="-fprofile-arcs" 387 JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS" 388 JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS" 389 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 390 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 391 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 392 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 393 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 394 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 395 GCOV_ENABLED="true" 396 ;; 397 *) 398 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc or clang]) 399 ;; 400 esac 401 elif test "x$enable_native_coverage" = "xno"; then 402 AC_MSG_CHECKING([if native coverage is enabled]) 403 AC_MSG_RESULT([no]) 404 elif test "x$enable_native_coverage" != "x"; then 405 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 406 fi 407 AC_SUBST(GCOV_ENABLED) 408 409 AC_ARG_WITH(jcov, [AS_HELP_STRING([--with-jcov], 410 [jcov library location])]) 411 AC_ARG_WITH(jcov-input-jdk, [AS_HELP_STRING([--with-jcov-input-jdk], 412 [jdk image to instrument])]) 413 AC_ARG_WITH(jcov-filters, [AS_HELP_STRING([--with-jcov-filters], 414 [filters to limit code for jcov instrumentation and report generation])]) 415 JCOV_HOME= 416 JCOV_INPUT_JDK= 417 JCOV_ENABLED= 418 JCOV_FILTERS= 419 if test "x$with_jcov" = "x" ; then 420 JCOV_ENABLED="false" 421 else 422 JCOV_HOME="$with_jcov" 423 if test ! -f "$JCOV_HOME/lib/jcov.jar"; then 424 AC_MSG_RESULT([fail]) 425 AC_MSG_ERROR([Invalid JCov bundle: "$JCOV_HOME/lib/jcov.jar" does not exist]) 426 fi 427 JCOV_ENABLED="true" 428 BASIC_FIXUP_PATH(JCOV_HOME) 429 if test "x$with_jcov_input_jdk" != "x" ; then 430 JCOV_INPUT_JDK="$with_jcov_input_jdk" 431 if test ! -f "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX"; then 432 AC_MSG_RESULT([fail]) 433 AC_MSG_ERROR([Invalid JDK bundle: "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX" does not exist]) 434 fi 435 BASIC_FIXUP_PATH(JCOV_INPUT_JDK) 436 fi 437 if test "x$with_jcov_filters" != "x" ; then 438 JCOV_FILTERS="$with_jcov_filters" 439 fi 440 fi 441 AC_SUBST(JCOV_ENABLED) 442 AC_SUBST(JCOV_HOME) 443 AC_SUBST(JCOV_INPUT_JDK) 444 AC_SUBST(JCOV_FILTERS) 445 ]) 446 447 ############################################################################### 448 # 449 # AddressSanitizer 450 # 451 AC_DEFUN_ONCE([JDKOPT_SETUP_ADDRESS_SANITIZER], 452 [ 453 AC_ARG_ENABLE(asan, [AS_HELP_STRING([--enable-asan], 454 [enable AddressSanitizer if possible @<:@disabled@:>@])]) 455 ASAN_ENABLED="no" 456 if test "x$enable_asan" = "xyes"; then 457 case $TOOLCHAIN_TYPE in 458 gcc | clang) 459 AC_MSG_CHECKING([if asan is enabled]) 460 AC_MSG_RESULT([yes]) 461 ASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer" 462 ASAN_LDFLAGS="-fsanitize=address" 463 JVM_CFLAGS="$JVM_CFLAGS $ASAN_CFLAGS" 464 JVM_LDFLAGS="$JVM_LDFLAGS $ASAN_LDFLAGS" 465 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $ASAN_CFLAGS" 466 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $ASAN_CFLAGS" 467 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $ASAN_CFLAGS" 468 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $ASAN_CFLAGS" 469 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $ASAN_LDFLAGS" 470 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $ASAN_LDFLAGS" 471 ASAN_ENABLED="yes" 472 ;; 473 *) 474 AC_MSG_ERROR([--enable-asan only works with toolchain type gcc or clang]) 475 ;; 476 esac 477 elif test "x$enable_asan" = "xno"; then 478 AC_MSG_CHECKING([if asan is enabled]) 479 AC_MSG_RESULT([no]) 480 elif test "x$enable_asan" != "x"; then 481 AC_MSG_ERROR([--enable-asan can only be assigned "yes" or "no"]) 482 fi 483 484 AC_SUBST(ASAN_ENABLED) 485 ]) 486 487 ################################################################################ 488 # 489 # Static build support. When enabled will generate static 490 # libraries instead of shared libraries for all JDK libs. 491 # 492 AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 493 [ 494 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 495 [enable static library build @<:@disabled@:>@])]) 496 STATIC_BUILD=false 497 if test "x$enable_static_build" = "xyes"; then 498 AC_MSG_CHECKING([if static build is enabled]) 499 AC_MSG_RESULT([yes]) 500 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 501 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 502 fi 503 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 504 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 505 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 506 STATIC_BUILD=true 507 elif test "x$enable_static_build" = "xno"; then 508 AC_MSG_CHECKING([if static build is enabled]) 509 AC_MSG_RESULT([no]) 510 elif test "x$enable_static_build" != "x"; then 511 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 512 fi 513 514 AC_SUBST(STATIC_BUILD) 515 ]) 516 517 ################################################################################ 518 # 519 # jlink options. 520 # We always keep packaged modules in JDK image. 521 # 522 AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS], 523 [ 524 AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules], 525 [Do not keep packaged modules in jdk image @<:@enable@:>@])]) 526 527 AC_MSG_CHECKING([if packaged modules are kept]) 528 if test "x$enable_keep_packaged_modules" = "xyes"; then 529 AC_MSG_RESULT([yes]) 530 JLINK_KEEP_PACKAGED_MODULES=true 531 elif test "x$enable_keep_packaged_modules" = "xno"; then 532 AC_MSG_RESULT([no]) 533 JLINK_KEEP_PACKAGED_MODULES=false 534 elif test "x$enable_keep_packaged_modules" = "x"; then 535 AC_MSG_RESULT([yes (default)]) 536 JLINK_KEEP_PACKAGED_MODULES=true 537 else 538 AC_MSG_RESULT([error]) 539 AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument]) 540 fi 541 542 AC_SUBST(JLINK_KEEP_PACKAGED_MODULES) 543 ]) 544 545 ################################################################################ 546 # 547 # Check if building of the jtreg failure handler should be enabled. 548 # 549 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER], 550 [ 551 AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler], 552 [forces build of the jtreg failure handler to be enabled, missing dependencies 553 become fatal errors. Default is auto, where the failure handler is built if all 554 dependencies are present and otherwise just disabled.])]) 555 556 AC_MSG_CHECKING([if jtreg failure handler should be built]) 557 558 if test "x$enable_jtreg_failure_handler" = "xyes"; then 559 if test "x$JT_HOME" = "x"; then 560 AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.]) 561 else 562 BUILD_FAILURE_HANDLER=true 563 AC_MSG_RESULT([yes, forced]) 564 fi 565 elif test "x$enable_jtreg_failure_handler" = "xno"; then 566 BUILD_FAILURE_HANDLER=false 567 AC_MSG_RESULT([no, forced]) 568 elif test "x$enable_jtreg_failure_handler" = "xauto" \ 569 || test "x$enable_jtreg_failure_handler" = "x"; then 570 if test "x$JT_HOME" = "x"; then 571 BUILD_FAILURE_HANDLER=false 572 AC_MSG_RESULT([no, missing jtreg]) 573 else 574 BUILD_FAILURE_HANDLER=true 575 AC_MSG_RESULT([yes, jtreg present]) 576 fi 577 else 578 AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler]) 579 fi 580 581 AC_SUBST(BUILD_FAILURE_HANDLER) 582 ]) 583 584 ################################################################################ 585 # 586 # Enable or disable generation of the classlist at build time 587 # 588 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST], 589 [ 590 AC_ARG_ENABLE([generate-classlist], [AS_HELP_STRING([--disable-generate-classlist], 591 [forces enabling or disabling of the generation of a CDS classlist at build time. 592 Default is to generate it when either the server or client JVMs are built and 593 enable-cds is true.])]) 594 595 # Check if it's likely that it's possible to generate the classlist. Depending 596 # on exact jvm configuration it could be possible anyway. 597 if test "x$ENABLE_CDS" = "xtrue" && (HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) || HOTSPOT_CHECK_JVM_FEATURE(cds)); then 598 ENABLE_GENERATE_CLASSLIST_POSSIBLE="true" 599 else 600 ENABLE_GENERATE_CLASSLIST_POSSIBLE="false" 601 fi 602 603 AC_MSG_CHECKING([if the CDS classlist generation should be enabled]) 604 if test "x$enable_generate_classlist" = "xyes"; then 605 AC_MSG_RESULT([yes, forced]) 606 ENABLE_GENERATE_CLASSLIST="true" 607 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xfalse"; then 608 if test "x$ENABLE_CDS" = "xfalse"; then 609 # In GenerateLinkOptData.gmk, DumpLoadedClassList is used to generate the 610 # classlist file. It never will work in this case since the VM will report 611 # an error for DumpLoadedClassList when CDS is disabled. 612 AC_MSG_ERROR([Generation of classlist is not possible with enable-cds=false]) 613 else 614 AC_MSG_WARN([Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS and enable-cds=$ENABLE_CDS]) 615 fi 616 fi 617 elif test "x$enable_generate_classlist" = "xno"; then 618 AC_MSG_RESULT([no, forced]) 619 ENABLE_GENERATE_CLASSLIST="false" 620 elif test "x$enable_generate_classlist" = "x"; then 621 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xtrue"; then 622 AC_MSG_RESULT([yes]) 623 ENABLE_GENERATE_CLASSLIST="true" 624 else 625 AC_MSG_RESULT([no]) 626 ENABLE_GENERATE_CLASSLIST="false" 627 fi 628 else 629 AC_MSG_ERROR([Invalid value for --enable-generate-classlist: $enable_generate_classlist]) 630 fi 631 632 AC_SUBST(ENABLE_GENERATE_CLASSLIST) 633 ]) 634 635 ################################################################################ 636 # 637 # Optionally filter resource translations 638 # 639 AC_DEFUN([JDKOPT_EXCLUDE_TRANSLATIONS], 640 [ 641 AC_ARG_WITH([exclude-translations], [AS_HELP_STRING([--with-exclude-translations], 642 [a comma separated list of locales to exclude translations for. Default is 643 to include all translations present in the source.])]) 644 645 EXCLUDE_TRANSLATIONS="" 646 AC_MSG_CHECKING([if any translations should be excluded]) 647 if test "x$with_exclude_translations" != "x"; then 648 EXCLUDE_TRANSLATIONS="${with_exclude_translations//,/ }" 649 AC_MSG_RESULT([yes: $EXCLUDE_TRANSLATIONS]) 650 else 651 AC_MSG_RESULT([no]) 652 fi 653 654 AC_SUBST(EXCLUDE_TRANSLATIONS) 655 ]) 656 657 ################################################################################ 658 # 659 # Optionally disable man pages 660 # 661 AC_DEFUN([JDKOPT_ENABLE_DISABLE_MANPAGES], 662 [ 663 AC_ARG_ENABLE([manpages], [AS_HELP_STRING([--disable-manpages], 664 [Set to disable copy of static man pages @<:@enabled@:>@])]) 665 666 BUILD_MANPAGES="true" 667 AC_MSG_CHECKING([if static man pages should be copied]) 668 if test "x$enable_manpages" = "x"; then 669 AC_MSG_RESULT([yes]) 670 elif test "x$enable_manpages" = "xyes"; then 671 AC_MSG_RESULT([yes, forced]) 672 elif test "x$enable_manpages" = "xno"; then 673 AC_MSG_RESULT([no, forced]) 674 BUILD_MANPAGES="false" 675 else 676 AC_MSG_RESULT([no]) 677 AC_MSG_ERROR([--enable-manpages can only yes/no or empty]) 678 fi 679 680 AC_SUBST(BUILD_MANPAGES) 681 ]) 682 683 ################################################################################ 684 # 685 # Disable the default CDS archive generation 686 # cross compilation - disabled 687 # 688 AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE], 689 [ 690 AC_ARG_ENABLE([cds-archive], [AS_HELP_STRING([--disable-cds-archive], 691 [Set to disable generation of a default CDS archive in the product image @<:@enabled@:>@])]) 692 693 AC_MSG_CHECKING([if a default CDS archive should be generated]) 694 if test "x$ENABLE_CDS" = "xfalse"; then 695 AC_MSG_RESULT([no, because CDS is disabled]) 696 BUILD_CDS_ARCHIVE="false" 697 elif test "x$COMPILE_TYPE" = "xcross"; then 698 AC_MSG_RESULT([no, not possible with cross compilation]) 699 BUILD_CDS_ARCHIVE="false" 700 elif test "x$enable_cds_archive" = "xyes"; then 701 AC_MSG_RESULT([yes, forced]) 702 BUILD_CDS_ARCHIVE="true" 703 elif test "x$enable_cds_archive" = "x"; then 704 AC_MSG_RESULT([yes]) 705 BUILD_CDS_ARCHIVE="true" 706 elif test "x$enable_cds_archive" = "xno"; then 707 AC_MSG_RESULT([no, forced]) 708 BUILD_CDS_ARCHIVE="false" 709 else 710 AC_MSG_RESULT([no]) 711 AC_MSG_ERROR([--enable-cds_archive can only be yes/no or empty]) 712 fi 713 714 AC_SUBST(BUILD_CDS_ARCHIVE) 715 ])