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 # 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 249 ############################################################################### 250 # 251 # Enable or disable the elliptic curve crypto implementation 252 # 253 AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], 254 [ 255 AC_MSG_CHECKING([if elliptic curve crypto implementation is present]) 256 257 if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then 258 ENABLE_INTREE_EC=true 259 AC_MSG_RESULT([yes]) 260 else 261 ENABLE_INTREE_EC=false 262 AC_MSG_RESULT([no]) 263 fi 264 265 AC_SUBST(ENABLE_INTREE_EC) 266 ]) 267 268 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS], 269 [ 270 # 271 # NATIVE_DEBUG_SYMBOLS 272 # This must be done after the toolchain is setup, since we're looking at objcopy. 273 # 274 AC_MSG_CHECKING([what type of native debug symbols to use]) 275 AC_ARG_WITH([native-debug-symbols], 276 [AS_HELP_STRING([--with-native-debug-symbols], 277 [set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])], 278 [ 279 if test "x$OPENJDK_TARGET_OS" = xaix; then 280 if test "x$withval" = xexternal || test "x$withval" = xzipped; then 281 AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols]) 282 fi 283 fi 284 ], 285 [ 286 if test "x$OPENJDK_TARGET_OS" = xaix; then 287 # AIX doesn't support 'external' so use 'internal' as default 288 with_native_debug_symbols="internal" 289 else 290 if test "x$STATIC_BUILD" = xtrue; then 291 with_native_debug_symbols="none" 292 else 293 with_native_debug_symbols="external" 294 fi 295 fi 296 ]) 297 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 298 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 299 300 if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 301 302 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 303 if test "x$OBJCOPY" = x; then 304 # enabling of enable-debug-symbols and can't find objcopy 305 # this is an error 306 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 307 fi 308 fi 309 310 COMPILE_WITH_DEBUG_SYMBOLS=true 311 COPY_DEBUG_SYMBOLS=true 312 ZIP_EXTERNAL_DEBUG_SYMBOLS=true 313 elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then 314 COMPILE_WITH_DEBUG_SYMBOLS=false 315 COPY_DEBUG_SYMBOLS=false 316 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 317 elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then 318 COMPILE_WITH_DEBUG_SYMBOLS=true 319 COPY_DEBUG_SYMBOLS=false 320 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 321 elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then 322 323 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 324 if test "x$OBJCOPY" = x; then 325 # enabling of enable-debug-symbols and can't find objcopy 326 # this is an error 327 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 328 fi 329 fi 330 331 COMPILE_WITH_DEBUG_SYMBOLS=true 332 COPY_DEBUG_SYMBOLS=true 333 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 334 else 335 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 336 fi 337 338 AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS) 339 AC_SUBST(COPY_DEBUG_SYMBOLS) 340 AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS) 341 ]) 342 343 ################################################################################ 344 # 345 # Gcov coverage data for hotspot 346 # 347 AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 348 [ 349 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 350 [enable native compilation with code coverage data@<:@disabled@:>@])]) 351 GCOV_ENABLED="false" 352 if test "x$enable_native_coverage" = "xyes"; then 353 if test "x$TOOLCHAIN_TYPE" = "xgcc"; then 354 AC_MSG_CHECKING([if native coverage is enabled]) 355 AC_MSG_RESULT([yes]) 356 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 357 GCOV_LDFLAGS="-fprofile-arcs" 358 JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS" 359 JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS" 360 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 361 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 362 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 363 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 364 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 365 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 366 GCOV_ENABLED="true" 367 else 368 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc]) 369 fi 370 elif test "x$enable_native_coverage" = "xno"; then 371 AC_MSG_CHECKING([if native coverage is enabled]) 372 AC_MSG_RESULT([no]) 373 elif test "x$enable_native_coverage" != "x"; then 374 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 375 fi 376 AC_SUBST(GCOV_ENABLED) 377 378 AC_ARG_WITH(jcov, [AS_HELP_STRING([--with-jcov], 379 [jcov library location])]) 380 AC_ARG_WITH(jcov-input-jdk, [AS_HELP_STRING([--with-jcov-input-jdk], 381 [jdk image to instrument])]) 382 JCOV_HOME= 383 JCOV_INPUT_JDK= 384 JCOV_ENABLED= 385 if test "x$with_jcov" = "x" ; then 386 JCOV_ENABLED="false" 387 else 388 JCOV_HOME="$with_jcov" 389 if test ! -f "$JCOV_HOME/lib/jcov.jar"; then 390 AC_MSG_RESULT([fail]) 391 AC_MSG_ERROR([Invalid JCov bundle: "$JCOV_HOME/lib/jcov.jar" does not exist]) 392 fi 393 JCOV_ENABLED="true" 394 BASIC_FIXUP_PATH(JCOV_HOME) 395 if test "x$with_jcov_input_jdk" != "x" ; then 396 JCOV_INPUT_JDK="$with_jcov_input_jdk" 397 if test ! -f "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX"; then 398 AC_MSG_RESULT([fail]) 399 AC_MSG_ERROR([Invalid JDK bundle: "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX" does not exist]) 400 fi 401 BASIC_FIXUP_PATH(JCOV_INPUT_JDK) 402 fi 403 fi 404 AC_SUBST(JCOV_ENABLED) 405 AC_SUBST(JCOV_HOME) 406 AC_SUBST(JCOV_INPUT_JDK) 407 ]) 408 409 ############################################################################### 410 # 411 # AddressSanitizer 412 # 413 AC_DEFUN_ONCE([JDKOPT_SETUP_ADDRESS_SANITIZER], 414 [ 415 AC_ARG_ENABLE(asan, [AS_HELP_STRING([--enable-asan], 416 [enable AddressSanitizer if possible @<:@disabled@:>@])]) 417 ASAN_ENABLED="no" 418 if test "x$enable_asan" = "xyes"; then 419 case $TOOLCHAIN_TYPE in 420 gcc | clang) 421 AC_MSG_CHECKING([if asan is enabled]) 422 AC_MSG_RESULT([yes]) 423 ASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer" 424 ASAN_LDFLAGS="-fsanitize=address" 425 JVM_CFLAGS="$JVM_CFLAGS $ASAN_CFLAGS" 426 JVM_LDFLAGS="$JVM_LDFLAGS $ASAN_LDFLAGS" 427 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $ASAN_CFLAGS" 428 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $ASAN_CFLAGS" 429 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $ASAN_CFLAGS" 430 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $ASAN_CFLAGS" 431 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $ASAN_LDFLAGS" 432 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $ASAN_LDFLAGS" 433 ASAN_ENABLED="yes" 434 ;; 435 *) 436 AC_MSG_ERROR([--enable-asan only works with toolchain type gcc or clang]) 437 ;; 438 esac 439 elif test "x$enable_asan" = "xno"; then 440 AC_MSG_CHECKING([if asan is enabled]) 441 AC_MSG_RESULT([no]) 442 elif test "x$enable_asan" != "x"; then 443 AC_MSG_ERROR([--enable-asan can only be assigned "yes" or "no"]) 444 fi 445 446 AC_SUBST(ASAN_ENABLED) 447 ]) 448 449 ################################################################################ 450 # 451 # Static build support. When enabled will generate static 452 # libraries instead of shared libraries for all JDK libs. 453 # 454 AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 455 [ 456 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 457 [enable static library build @<:@disabled@:>@])]) 458 STATIC_BUILD=false 459 if test "x$enable_static_build" = "xyes"; then 460 AC_MSG_CHECKING([if static build is enabled]) 461 AC_MSG_RESULT([yes]) 462 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 463 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 464 fi 465 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 466 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 467 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 468 STATIC_BUILD=true 469 elif test "x$enable_static_build" = "xno"; then 470 AC_MSG_CHECKING([if static build is enabled]) 471 AC_MSG_RESULT([no]) 472 elif test "x$enable_static_build" != "x"; then 473 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 474 fi 475 476 AC_SUBST(STATIC_BUILD) 477 ]) 478 479 ################################################################################ 480 # 481 # jlink options. 482 # We always keep packaged modules in JDK image. 483 # 484 AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS], 485 [ 486 AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules], 487 [Do not keep packaged modules in jdk image @<:@enable@:>@])]) 488 489 AC_MSG_CHECKING([if packaged modules are kept]) 490 if test "x$enable_keep_packaged_modules" = "xyes"; then 491 AC_MSG_RESULT([yes]) 492 JLINK_KEEP_PACKAGED_MODULES=true 493 elif test "x$enable_keep_packaged_modules" = "xno"; then 494 AC_MSG_RESULT([no]) 495 JLINK_KEEP_PACKAGED_MODULES=false 496 elif test "x$enable_keep_packaged_modules" = "x"; then 497 AC_MSG_RESULT([yes (default)]) 498 JLINK_KEEP_PACKAGED_MODULES=true 499 else 500 AC_MSG_RESULT([error]) 501 AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument]) 502 fi 503 504 AC_SUBST(JLINK_KEEP_PACKAGED_MODULES) 505 ]) 506 507 ################################################################################ 508 # 509 # Check if building of the jtreg failure handler should be enabled. 510 # 511 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER], 512 [ 513 AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler], 514 [forces build of the jtreg failure handler to be enabled, missing dependencies 515 become fatal errors. Default is auto, where the failure handler is built if all 516 dependencies are present and otherwise just disabled.])]) 517 518 AC_MSG_CHECKING([if jtreg failure handler should be built]) 519 520 if test "x$enable_jtreg_failure_handler" = "xyes"; then 521 if test "x$JT_HOME" = "x"; then 522 AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.]) 523 else 524 BUILD_FAILURE_HANDLER=true 525 AC_MSG_RESULT([yes, forced]) 526 fi 527 elif test "x$enable_jtreg_failure_handler" = "xno"; then 528 BUILD_FAILURE_HANDLER=false 529 AC_MSG_RESULT([no, forced]) 530 elif test "x$enable_jtreg_failure_handler" = "xauto" \ 531 || test "x$enable_jtreg_failure_handler" = "x"; then 532 if test "x$JT_HOME" = "x"; then 533 BUILD_FAILURE_HANDLER=false 534 AC_MSG_RESULT([no, missing jtreg]) 535 else 536 BUILD_FAILURE_HANDLER=true 537 AC_MSG_RESULT([yes, jtreg present]) 538 fi 539 else 540 AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler]) 541 fi 542 543 AC_SUBST(BUILD_FAILURE_HANDLER) 544 ]) 545 546 ################################################################################ 547 # 548 # Enable or disable generation of the classlist at build time 549 # 550 AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST], 551 [ 552 AC_ARG_ENABLE([generate-classlist], [AS_HELP_STRING([--disable-generate-classlist], 553 [forces enabling or disabling of the generation of a CDS classlist at build time. 554 Default is to generate it when either the server or client JVMs are built and 555 enable-cds is true.])]) 556 557 # Check if it's likely that it's possible to generate the classlist. Depending 558 # on exact jvm configuration it could be possible anyway. 559 if test "x$ENABLE_CDS" = "xtrue" && (HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) || HOTSPOT_CHECK_JVM_FEATURE(cds)); then 560 ENABLE_GENERATE_CLASSLIST_POSSIBLE="true" 561 else 562 ENABLE_GENERATE_CLASSLIST_POSSIBLE="false" 563 fi 564 565 AC_MSG_CHECKING([if the CDS classlist generation should be enabled]) 566 if test "x$enable_generate_classlist" = "xyes"; then 567 AC_MSG_RESULT([yes, forced]) 568 ENABLE_GENERATE_CLASSLIST="true" 569 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xfalse"; then 570 AC_MSG_WARN([Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS and enable-cds=$ENABLE_CDS]) 571 fi 572 elif test "x$enable_generate_classlist" = "xno"; then 573 AC_MSG_RESULT([no, forced]) 574 ENABLE_GENERATE_CLASSLIST="false" 575 elif test "x$enable_generate_classlist" = "x"; then 576 if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xtrue"; then 577 AC_MSG_RESULT([yes]) 578 ENABLE_GENERATE_CLASSLIST="true" 579 else 580 AC_MSG_RESULT([no]) 581 ENABLE_GENERATE_CLASSLIST="false" 582 fi 583 else 584 AC_MSG_ERROR([Invalid value for --enable-generate-classlist: $enable_generate_classlist]) 585 fi 586 587 AC_SUBST(ENABLE_GENERATE_CLASSLIST) 588 ]) 589 590 ################################################################################ 591 # 592 # Optionally filter resource translations 593 # 594 AC_DEFUN([JDKOPT_EXCLUDE_TRANSLATIONS], 595 [ 596 AC_ARG_WITH([exclude-translations], [AS_HELP_STRING([--with-exclude-translations], 597 [a comma separated list of locales to exclude translations for. Default is 598 to include all translations present in the source.])]) 599 600 EXCLUDE_TRANSLATIONS="" 601 AC_MSG_CHECKING([if any translations should be excluded]) 602 if test "x$with_exclude_translations" != "x"; then 603 EXCLUDE_TRANSLATIONS="${with_exclude_translations//,/ }" 604 AC_MSG_RESULT([yes: $EXCLUDE_TRANSLATIONS]) 605 else 606 AC_MSG_RESULT([no]) 607 fi 608 609 AC_SUBST(EXCLUDE_TRANSLATIONS) 610 ]) 611 612 ################################################################################ 613 # 614 # Optionally disable man pages 615 # 616 AC_DEFUN([JDKOPT_ENABLE_DISABLE_MANPAGES], 617 [ 618 AC_ARG_ENABLE([manpages], [AS_HELP_STRING([--disable-manpages], 619 [Set to disable building of man pages @<:@enabled@:>@])]) 620 621 BUILD_MANPAGES="true" 622 AC_MSG_CHECKING([if man pages should be built]) 623 if test "x$enable_manpages" = "x"; then 624 AC_MSG_RESULT([yes]) 625 elif test "x$enable_manpages" = "xyes"; then 626 AC_MSG_RESULT([yes, forced]) 627 elif test "x$enable_manpages" = "xno"; then 628 AC_MSG_RESULT([no, forced]) 629 BUILD_MANPAGES="false" 630 else 631 AC_MSG_RESULT([no]) 632 AC_MSG_ERROR([--enable-manpages can only yes/no or empty]) 633 fi 634 635 AC_SUBST(BUILD_MANPAGES) 636 ]) 637 638 ################################################################################ 639 # 640 # Disable the default CDS archive generation 641 # cross compilation - disabled 642 # 643 AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE], 644 [ 645 AC_ARG_ENABLE([cds-archive], [AS_HELP_STRING([--disable-cds-archive], 646 [Set to disable generation of a default CDS archive in the product image @<:@enabled@:>@])]) 647 648 AC_MSG_CHECKING([if a default CDS archive should be generated]) 649 if test "x$ENABLE_CDS" = "xfalse"; then 650 AC_MSG_RESULT([no, because CDS is disabled]) 651 BUILD_CDS_ARCHIVE="false" 652 elif test "x$COMPILE_TYPE" = "xcross"; then 653 AC_MSG_RESULT([no, not possible with cross compilation]) 654 BUILD_CDS_ARCHIVE="false" 655 elif test "x$enable_cds_archive" = "xyes"; then 656 AC_MSG_RESULT([yes, forced]) 657 BUILD_CDS_ARCHIVE="true" 658 elif test "x$enable_cds_archive" = "x"; then 659 AC_MSG_RESULT([yes]) 660 BUILD_CDS_ARCHIVE="true" 661 elif test "x$enable_cds_archive" = "xno"; then 662 AC_MSG_RESULT([no, forced]) 663 BUILD_CDS_ARCHIVE="false" 664 else 665 AC_MSG_RESULT([no]) 666 AC_MSG_ERROR([--enable-cds_archive can only be yes/no or empty]) 667 fi 668 669 AC_SUBST(BUILD_CDS_ARCHIVE) 670 ])