1 # 2 # Copyright (c) 2011, 2018, 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 AC_MSG_CHECKING([which variant of the JDK to build]) 37 AC_ARG_WITH([jdk-variant], [AS_HELP_STRING([--with-jdk-variant], 38 [JDK variant to build (normal) @<:@normal@:>@])]) 39 40 if test "x$with_jdk_variant" = xnormal || test "x$with_jdk_variant" = x; then 41 JDK_VARIANT="normal" 42 else 43 AC_MSG_ERROR([The available JDK variants are: normal]) 44 fi 45 46 AC_SUBST(JDK_VARIANT) 47 48 AC_MSG_RESULT([$JDK_VARIANT]) 49 ]) 50 51 ############################################################################### 52 # Set the debug level 53 # release: no debug information, all optimizations, no asserts. 54 # optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'. 55 # fastdebug: debug information (-g), all optimizations, all asserts 56 # slowdebug: debug information (-g), no optimizations, all asserts 57 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL], 58 [ 59 DEBUG_LEVEL="release" 60 AC_MSG_CHECKING([which debug level to use]) 61 AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], 62 [set the debug level to fastdebug (shorthand for --with-debug-level=fastdebug) @<:@disabled@:>@])], 63 [ 64 ENABLE_DEBUG="${enableval}" 65 DEBUG_LEVEL="fastdebug" 66 ], [ENABLE_DEBUG="no"]) 67 68 AC_ARG_WITH([debug-level], [AS_HELP_STRING([--with-debug-level], 69 [set the debug level (release, fastdebug, slowdebug, optimized) @<:@release@:>@])], 70 [ 71 DEBUG_LEVEL="${withval}" 72 if test "x$ENABLE_DEBUG" = xyes; then 73 AC_MSG_ERROR([You cannot use both --enable-debug and --with-debug-level at the same time.]) 74 fi 75 ]) 76 AC_MSG_RESULT([$DEBUG_LEVEL]) 77 78 if test "x$DEBUG_LEVEL" != xrelease && \ 79 test "x$DEBUG_LEVEL" != xoptimized && \ 80 test "x$DEBUG_LEVEL" != xfastdebug && \ 81 test "x$DEBUG_LEVEL" != xslowdebug; then 82 AC_MSG_ERROR([Allowed debug levels are: release, fastdebug, slowdebug and optimized]) 83 fi 84 85 # Translate DEBUG_LEVEL to debug level used by Hotspot 86 HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL" 87 if test "x$DEBUG_LEVEL" = xrelease; then 88 HOTSPOT_DEBUG_LEVEL="product" 89 elif test "x$DEBUG_LEVEL" = xslowdebug; then 90 HOTSPOT_DEBUG_LEVEL="debug" 91 fi 92 93 if test "x$DEBUG_LEVEL" = xoptimized; then 94 # The debug level 'optimized' is a little special because it is currently only 95 # applicable to the HotSpot build where it means to build a completely 96 # optimized version of the VM without any debugging code (like for the 97 # 'release' debug level which is called 'product' in the HotSpot build) but 98 # with the exception that it can contain additional code which is otherwise 99 # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to 100 # test new and/or experimental features which are not intended for customer 101 # shipment. Because these new features need to be tested and benchmarked in 102 # real world scenarios, we want to build the containing JDK at the 'release' 103 # debug level. 104 DEBUG_LEVEL="release" 105 fi 106 107 AC_SUBST(HOTSPOT_DEBUG_LEVEL) 108 AC_SUBST(DEBUG_LEVEL) 109 ]) 110 111 ############################################################################### 112 # 113 # Should we build only OpenJDK even if closed sources are present? 114 # 115 AC_DEFUN_ONCE([JDKOPT_SETUP_OPEN_OR_CUSTOM], 116 [ 117 AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only], 118 [suppress building custom source even if present @<:@disabled@:>@])],,[enable_openjdk_only="no"]) 119 120 AC_MSG_CHECKING([if custom source is suppressed (openjdk-only)]) 121 AC_MSG_RESULT([$enable_openjdk_only]) 122 if test "x$enable_openjdk_only" = "xyes"; then 123 SUPPRESS_CUSTOM_EXTENSIONS="true" 124 elif test "x$enable_openjdk_only" = "xno"; then 125 SUPPRESS_CUSTOM_EXTENSIONS="false" 126 else 127 AC_MSG_ERROR([Invalid value for --enable-openjdk-only: $enable_openjdk_only]) 128 fi 129 130 # custom-make-dir is deprecated. Please use your custom-hook.m4 to override 131 # the IncludeCustomExtension macro. 132 BASIC_DEPRECATED_ARG_WITH(custom-make-dir) 133 ]) 134 135 AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS], 136 [ 137 # Should we build a JDK without a graphical UI? 138 AC_MSG_CHECKING([headless only]) 139 AC_ARG_ENABLE([headless-only], [AS_HELP_STRING([--enable-headless-only], 140 [only build headless (no GUI) support @<:@disabled@:>@])]) 141 142 if test "x$enable_headless_only" = "xyes"; then 143 ENABLE_HEADLESS_ONLY="true" 144 AC_MSG_RESULT([yes]) 145 elif test "x$enable_headless_only" = "xno"; then 146 ENABLE_HEADLESS_ONLY="false" 147 AC_MSG_RESULT([no]) 148 elif test "x$enable_headless_only" = "x"; then 149 ENABLE_HEADLESS_ONLY="false" 150 AC_MSG_RESULT([no]) 151 else 152 AC_MSG_ERROR([--enable-headless-only can only take yes or no]) 153 fi 154 155 AC_SUBST(ENABLE_HEADLESS_ONLY) 156 157 # Should we build the complete docs, or just a lightweight version? 158 AC_ARG_ENABLE([full-docs], [AS_HELP_STRING([--enable-full-docs], 159 [build complete documentation @<:@enabled if all tools found@:>@])]) 160 161 # Verify dependencies 162 AC_MSG_CHECKING([for graphviz dot]) 163 if test "x$DOT" != "x"; then 164 AC_MSG_RESULT([yes]) 165 else 166 AC_MSG_RESULT([no, cannot generate full docs]) 167 FULL_DOCS_DEP_MISSING=true 168 fi 169 170 AC_MSG_CHECKING([for pandoc]) 171 if test "x$PANDOC" != "x"; then 172 AC_MSG_RESULT([yes]) 173 else 174 AC_MSG_RESULT([no, cannot generate full docs]) 175 FULL_DOCS_DEP_MISSING=true 176 fi 177 178 AC_MSG_CHECKING([full docs]) 179 if test "x$enable_full_docs" = xyes; then 180 if test "x$FULL_DOCS_DEP_MISSING" = "xtrue"; then 181 AC_MSG_RESULT([no, missing dependencies]) 182 HELP_MSG_MISSING_DEPENDENCY([dot]) 183 AC_MSG_ERROR([Cannot enable full docs with missing dependencies. See above. $HELP_MSG]) 184 else 185 ENABLE_FULL_DOCS=true 186 AC_MSG_RESULT([yes, forced]) 187 fi 188 elif test "x$enable_full_docs" = xno; then 189 ENABLE_FULL_DOCS=false 190 AC_MSG_RESULT([no, forced]) 191 elif test "x$enable_full_docs" = x; then 192 # Check for prerequisites 193 if test "x$FULL_DOCS_DEP_MISSING" = xtrue; then 194 ENABLE_FULL_DOCS=false 195 AC_MSG_RESULT([no, missing dependencies]) 196 else 197 ENABLE_FULL_DOCS=true 198 AC_MSG_RESULT([yes, dependencies present]) 199 fi 200 else 201 AC_MSG_ERROR([--enable-full-docs can only take yes or no]) 202 fi 203 204 AC_SUBST(ENABLE_FULL_DOCS) 205 206 # Choose cacerts source file 207 AC_ARG_WITH(cacerts-file, [AS_HELP_STRING([--with-cacerts-file], 208 [specify alternative cacerts file])]) 209 AC_MSG_CHECKING([for cacerts file]) 210 if test "x$with_cacerts_file" == x; then 211 AC_MSG_RESULT([default]) 212 else 213 CACERTS_FILE=$with_cacerts_file 214 if test ! -f "$CACERTS_FILE"; then 215 AC_MSG_RESULT([fail]) 216 AC_MSG_ERROR([Specified cacerts file "$CACERTS_FILE" does not exist]) 217 fi 218 AC_MSG_RESULT([$CACERTS_FILE]) 219 fi 220 AC_SUBST(CACERTS_FILE) 221 222 # Enable or disable unlimited crypto 223 AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--disable-unlimited-crypto], 224 [Disable unlimited crypto policy @<:@enabled@:>@])],, 225 [enable_unlimited_crypto=yes]) 226 if test "x$enable_unlimited_crypto" = "xyes"; then 227 UNLIMITED_CRYPTO=true 228 else 229 UNLIMITED_CRYPTO=false 230 fi 231 AC_SUBST(UNLIMITED_CRYPTO) 232 233 # Should we build the serviceability agent (SA)? 234 INCLUDE_SA=true 235 if HOTSPOT_CHECK_JVM_VARIANT(zero); then 236 INCLUDE_SA=false 237 fi 238 if test "x$OPENJDK_TARGET_OS" = xaix ; then 239 INCLUDE_SA=false 240 fi 241 if test "x$OPENJDK_TARGET_CPU" = xs390x ; then 242 INCLUDE_SA=false 243 fi 244 AC_SUBST(INCLUDE_SA) 245 246 # Compress jars 247 COMPRESS_JARS=false 248 249 AC_SUBST(COMPRESS_JARS) 250 251 # Setup default copyright year. Mostly overridden when building close to a new year. 252 AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year], 253 [Set copyright year value for build @<:@current year@:>@])]) 254 if test "x$with_copyright_year" = xyes; then 255 AC_MSG_ERROR([Copyright year must have a value]) 256 elif test "x$with_copyright_year" != x; then 257 COPYRIGHT_YEAR="$with_copyright_year" 258 else 259 COPYRIGHT_YEAR=`$DATE +'%Y'` 260 fi 261 AC_SUBST(COPYRIGHT_YEAR) 262 ]) 263 264 ############################################################################### 265 # 266 # Enable or disable the elliptic curve crypto implementation 267 # 268 AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], 269 [ 270 AC_MSG_CHECKING([if elliptic curve crypto implementation is present]) 271 272 if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then 273 ENABLE_INTREE_EC=true 274 AC_MSG_RESULT([yes]) 275 else 276 ENABLE_INTREE_EC=false 277 AC_MSG_RESULT([no]) 278 fi 279 280 AC_SUBST(ENABLE_INTREE_EC) 281 ]) 282 283 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS], 284 [ 285 # 286 # NATIVE_DEBUG_SYMBOLS 287 # This must be done after the toolchain is setup, since we're looking at objcopy. 288 # 289 AC_MSG_CHECKING([what type of native debug symbols to use]) 290 AC_ARG_WITH([native-debug-symbols], 291 [AS_HELP_STRING([--with-native-debug-symbols], 292 [set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])], 293 [ 294 if test "x$OPENJDK_TARGET_OS" = xaix; then 295 if test "x$withval" = xexternal || test "x$withval" = xzipped; then 296 AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols]) 297 fi 298 fi 299 ], 300 [ 301 if test "x$OPENJDK_TARGET_OS" = xaix; then 302 # AIX doesn't support 'external' so use 'internal' as default 303 with_native_debug_symbols="internal" 304 else 305 if test "x$STATIC_BUILD" = xtrue; then 306 with_native_debug_symbols="none" 307 else 308 with_native_debug_symbols="external" 309 fi 310 fi 311 ]) 312 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 313 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 314 315 if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 316 317 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 318 if test "x$OBJCOPY" = x; then 319 # enabling of enable-debug-symbols and can't find objcopy 320 # this is an error 321 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 322 fi 323 fi 324 325 COMPILE_WITH_DEBUG_SYMBOLS=true 326 COPY_DEBUG_SYMBOLS=true 327 ZIP_EXTERNAL_DEBUG_SYMBOLS=true 328 elif 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 else 350 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 351 fi 352 353 # --enable-debug-symbols is deprecated. 354 # Please use --with-native-debug-symbols=[internal,external,zipped] . 355 BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols, 356 [Please use --with-native-debug-symbols=[[internal,external,zipped]] .]) 357 358 # --enable-zip-debug-info is deprecated. 359 # Please use --with-native-debug-symbols=zipped . 360 BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info, 361 [Please use --with-native-debug-symbols=zipped .]) 362 363 AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS) 364 AC_SUBST(COPY_DEBUG_SYMBOLS) 365 AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS) 366 ]) 367 368 ################################################################################ 369 # 370 # Gcov coverage data for hotspot 371 # 372 AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 373 [ 374 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 375 [enable native compilation with code coverage data@<:@disabled@:>@])]) 376 GCOV_ENABLED="false" 377 if test "x$enable_native_coverage" = "xyes"; then 378 if test "x$TOOLCHAIN_TYPE" = "xgcc"; then 379 AC_MSG_CHECKING([if native coverage is enabled]) 380 AC_MSG_RESULT([yes]) 381 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 382 GCOV_LDFLAGS="-fprofile-arcs" 383 JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS" 384 JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS" 385 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 386 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 387 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 388 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 389 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 390 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 391 GCOV_ENABLED="true" 392 else 393 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc]) 394 fi 395 elif test "x$enable_native_coverage" = "xno"; then 396 AC_MSG_CHECKING([if native coverage is enabled]) 397 AC_MSG_RESULT([no]) 398 elif test "x$enable_native_coverage" != "x"; then 399 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 400 fi 401 402 AC_SUBST(GCOV_ENABLED) 403 ]) 404 405 ############################################################################### 406 # 407 # AddressSanitizer 408 # 409 AC_DEFUN_ONCE([JDKOPT_SETUP_ADDRESS_SANITIZER], 410 [ 411 AC_ARG_ENABLE(asan, [AS_HELP_STRING([--enable-asan], 412 [enable AddressSanitizer if possible @<:@disabled@:>@])]) 413 ASAN_ENABLED="no" 414 if test "x$enable_asan" = "xyes"; then 415 case $TOOLCHAIN_TYPE in 416 gcc | clang) 417 AC_MSG_CHECKING([if asan is enabled]) 418 AC_MSG_RESULT([yes]) 419 ASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer" 420 ASAN_LDFLAGS="-fsanitize=address" 421 JVM_CFLAGS="$JVM_CFLAGS $ASAN_CFLAGS" 422 JVM_LDFLAGS="$JVM_LDFLAGS $ASAN_LDFLAGS" 423 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $ASAN_CFLAGS" 424 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $ASAN_CFLAGS" 425 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $ASAN_CFLAGS" 426 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $ASAN_CFLAGS" 427 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $ASAN_LDFLAGS" 428 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $ASAN_LDFLAGS" 429 ASAN_ENABLED="yes" 430 ;; 431 *) 432 AC_MSG_ERROR([--enable-asan only works with toolchain type gcc or clang]) 433 ;; 434 esac 435 elif test "x$enable_asan" = "xno"; then 436 AC_MSG_CHECKING([if asan is enabled]) 437 AC_MSG_RESULT([no]) 438 elif test "x$enable_asan" != "x"; then 439 AC_MSG_ERROR([--enable-asan can only be assigned "yes" or "no"]) 440 fi 441 442 AC_SUBST(ASAN_ENABLED) 443 ]) 444 445 ################################################################################ 446 # 447 # Static build support. When enabled will generate static 448 # libraries instead of shared libraries for all JDK libs. 449 # 450 AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 451 [ 452 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 453 [enable static library build @<:@disabled@:>@])]) 454 STATIC_BUILD=false 455 if test "x$enable_static_build" = "xyes"; then 456 AC_MSG_CHECKING([if static build is enabled]) 457 AC_MSG_RESULT([yes]) 458 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 459 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 460 fi 461 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 462 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 463 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 464 STATIC_BUILD=true 465 elif test "x$enable_static_build" = "xno"; then 466 AC_MSG_CHECKING([if static build is enabled]) 467 AC_MSG_RESULT([no]) 468 elif test "x$enable_static_build" != "x"; then 469 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 470 fi 471 472 AC_SUBST(STATIC_BUILD) 473 ]) 474 475 ################################################################################ 476 # 477 # jlink options. 478 # We always keep packaged modules in JDK image. 479 # 480 AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS], 481 [ 482 AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules], 483 [Do not keep packaged modules in jdk image @<:@enable@:>@])]) 484 485 AC_MSG_CHECKING([if packaged modules are kept]) 486 if test "x$enable_keep_packaged_modules" = "xyes"; then 487 AC_MSG_RESULT([yes]) 488 JLINK_KEEP_PACKAGED_MODULES=true 489 elif test "x$enable_keep_packaged_modules" = "xno"; then 490 AC_MSG_RESULT([no]) 491 JLINK_KEEP_PACKAGED_MODULES=false 492 elif test "x$enable_keep_packaged_modules" = "x"; then 493 AC_MSG_RESULT([yes (default)]) 494 JLINK_KEEP_PACKAGED_MODULES=true 495 else 496 AC_MSG_RESULT([error]) 497 AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument]) 498 fi 499 500 AC_SUBST(JLINK_KEEP_PACKAGED_MODULES) 501 ]) 502 503 ################################################################################ 504 # 505 # Check if building of the jtreg failure handler should be enabled. 506 # 507 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER], 508 [ 509 AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler], 510 [forces build of the jtreg failure handler to be enabled, missing dependencies 511 become fatal errors. Default is auto, where the failure handler is built if all 512 dependencies are present and otherwise just disabled.])]) 513 514 AC_MSG_CHECKING([if jtreg failure handler should be built]) 515 516 if test "x$enable_jtreg_failure_handler" = "xyes"; then 517 if test "x$JT_HOME" = "x"; then 518 AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.]) 519 else 520 BUILD_FAILURE_HANDLER=true 521 AC_MSG_RESULT([yes, forced]) 522 fi 523 elif test "x$enable_jtreg_failure_handler" = "xno"; then 524 BUILD_FAILURE_HANDLER=false 525 AC_MSG_RESULT([no, forced]) 526 elif test "x$enable_jtreg_failure_handler" = "xauto" \ 527 || test "x$enable_jtreg_failure_handler" = "x"; then 528 if test "x$JT_HOME" = "x"; then 529 BUILD_FAILURE_HANDLER=false 530 AC_MSG_RESULT([no, missing jtreg]) 531 else 532 BUILD_FAILURE_HANDLER=true 533 AC_MSG_RESULT([yes, jtreg present]) 534 fi 535 else 536 AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler]) 537 fi 538 539 AC_SUBST(BUILD_FAILURE_HANDLER) 540 ]) 541 542 ################################################################################ 543 # 544 # Enable or disable generation of the classlist at build time 545 # 546 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST], 547 [ 548 AC_ARG_ENABLE([generate-classlist], [AS_HELP_STRING([--disable-generate-classlist], 549 [forces enabling or disabling of the generation of a CDS classlist at build time. 550 Default is to generate it when either the server or client JVMs are built and 551 enable-cds is true.])]) 552 553 # Check if it's likely that it's possible to generate the classlist. Depending 554 # on exact jvm configuration it could be possible anyway. 555 if test "x$ENABLE_CDS" = "xtrue" && (HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client)); then 556 ENABLE_GENERATE_CLASSLIST_POSSIBLE="true" 557 else 558 ENABLE_GENERATE_CLASSLIST_POSSIBLE="false" 559 fi 560 561 AC_MSG_CHECKING([if the CDS classlist generation should be enabled]) 562 if test "x$enable_generate_classlist" = "xyes"; then 563 AC_MSG_RESULT([yes, forced]) 564 ENABLE_GENERATE_CLASSLIST="true" 565 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xfalse"; then 566 AC_MSG_WARN([Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS and enable-cds=$ENABLE_CDS]) 567 fi 568 elif test "x$enable_generate_classlist" = "xno"; then 569 AC_MSG_RESULT([no, forced]) 570 ENABLE_GENERATE_CLASSLIST="false" 571 elif test "x$enable_generate_classlist" = "x"; then 572 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xtrue"; then 573 AC_MSG_RESULT([yes]) 574 ENABLE_GENERATE_CLASSLIST="true" 575 else 576 AC_MSG_RESULT([no]) 577 ENABLE_GENERATE_CLASSLIST="false" 578 fi 579 else 580 AC_MSG_ERROR([Invalid value for --enable-generate-classlist: $enable_generate_classlist]) 581 fi 582 583 AC_SUBST(ENABLE_GENERATE_CLASSLIST) 584 ]) 585 586 ################################################################################ 587 # 588 # Optionally filter resource translations 589 # 590 AC_DEFUN([JDKOPT_EXCLUDE_TRANSLATIONS], 591 [ 592 AC_ARG_WITH([exclude-translations], [AS_HELP_STRING([--with-exclude-translations], 593 [a comma separated list of locales to exclude translations for. Default is 594 to include all translations present in the source.])]) 595 596 EXCLUDE_TRANSLATIONS="" 597 AC_MSG_CHECKING([if any translations should be excluded]) 598 if test "x$with_exclude_translations" != "x"; then 599 EXCLUDE_TRANSLATIONS="${with_exclude_translations//,/ }" 600 AC_MSG_RESULT([yes: $EXCLUDE_TRANSLATIONS]) 601 else 602 AC_MSG_RESULT([no]) 603 fi 604 605 AC_SUBST(EXCLUDE_TRANSLATIONS) 606 ]) 607 608 ################################################################################ 609 # 610 # Optionally disable man pages 611 # 612 AC_DEFUN([JDKOPT_ENABLE_DISABLE_MANPAGES], 613 [ 614 AC_ARG_ENABLE([manpages], [AS_HELP_STRING([--disable-manpages], 615 [Set to disable building of man pages @<:@enabled@:>@])]) 616 617 BUILD_MANPAGES="true" 618 AC_MSG_CHECKING([if man pages should be built]) 619 if test "x$enable_manpages" = "x"; then 620 AC_MSG_RESULT([yes]) 621 elif test "x$enable_manpages" = "xyes"; then 622 AC_MSG_RESULT([yes, forced]) 623 elif test "x$enable_manpages" = "xno"; then 624 AC_MSG_RESULT([no, forced]) 625 BUILD_MANPAGES="false" 626 else 627 AC_MSG_RESULT([no]) 628 AC_MSG_ERROR([--enable-manpages can only yes/no or empty]) 629 fi 630 631 AC_SUBST(BUILD_MANPAGES) 632 ]) 633 634 ################################################################################ 635 # 636 # Disable CDS archive generation 637 # 638 AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE], 639 [ 640 AC_ARG_ENABLE([cds-archive], [AS_HELP_STRING([--disable-cds-archive], 641 [Set to disable generation of a default CDS archive in the product image @<:@enabled@:>@])]) 642 643 AC_MSG_CHECKING([if a CDS archive should be generated]) 644 if test "x$COMPILE_TYPE" = "xcross"; then 645 AC_MSG_RESULT([no, not possible with cross compilation]) 646 BUILD_CDS_ARCHIVE="false" 647 elif test "x$enable_cds_archive" = "xyes"; then 648 AC_MSG_RESULT([yes, forced]) 649 BUILD_CDS_ARCHIVE="true" 650 elif HOTSPOT_CHECK_JVM_VARIANT(zero); then 651 AC_MSG_RESULT([no, not possible with JVM variant zero]) 652 BUILD_CDS_ARCHIVE="false" 653 elif test "x$enable_cds_archive" = "x"; then 654 AC_MSG_RESULT([yes]) 655 BUILD_CDS_ARCHIVE="true" 656 elif test "x$enable_cds_archive" = "xno"; then 657 AC_MSG_RESULT([no, forced]) 658 BUILD_CDS_ARCHIVE="false" 659 else 660 AC_MSG_RESULT([no]) 661 AC_MSG_ERROR([--enable-cds_archive can only be yes/no or empty]) 662 fi 663 664 AC_SUBST(BUILD_CDS_ARCHIVE) 665 ])