jdk-options.m4 revision 2024:cc16e2a24f94
1# 2# Copyright (c) 2011, 2016, 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. 34AC_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 57AC_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# 115AC_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([for presence of closed sources]) 121 if test -d "$SRC_ROOT/jdk/src/closed"; then 122 CLOSED_SOURCE_PRESENT=yes 123 else 124 CLOSED_SOURCE_PRESENT=no 125 fi 126 AC_MSG_RESULT([$CLOSED_SOURCE_PRESENT]) 127 128 AC_MSG_CHECKING([if closed source is suppressed (openjdk-only)]) 129 SUPPRESS_CLOSED_SOURCE="$enable_openjdk_only" 130 AC_MSG_RESULT([$SUPPRESS_CLOSED_SOURCE]) 131 132 if test "x$CLOSED_SOURCE_PRESENT" = xno; then 133 OPENJDK=true 134 if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then 135 AC_MSG_WARN([No closed source present, --enable-openjdk-only makes no sense]) 136 fi 137 else 138 if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then 139 OPENJDK=true 140 else 141 OPENJDK=false 142 fi 143 fi 144 145 if test "x$OPENJDK" = "xtrue"; then 146 SET_OPENJDK="OPENJDK=true" 147 fi 148 149 AC_SUBST(SET_OPENJDK) 150 151 # custom-make-dir is deprecated. Please use your custom-hook.m4 to override 152 # the IncludeCustomExtension macro. 153 BASIC_DEPRECATED_ARG_WITH(custom-make-dir) 154]) 155 156AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS], 157[ 158 # Should we build a JDK/JVM with headful support (ie a graphical ui)? 159 # We always build headless support. 160 AC_MSG_CHECKING([headful support]) 161 AC_ARG_ENABLE([headful], [AS_HELP_STRING([--disable-headful], 162 [disable building headful support (graphical UI support) @<:@enabled@:>@])], 163 [SUPPORT_HEADFUL=${enable_headful}], [SUPPORT_HEADFUL=yes]) 164 165 SUPPORT_HEADLESS=yes 166 BUILD_HEADLESS="BUILD_HEADLESS:=true" 167 168 if test "x$SUPPORT_HEADFUL" = xyes; then 169 # We are building both headful and headless. 170 headful_msg="include support for both headful and headless" 171 fi 172 173 if test "x$SUPPORT_HEADFUL" = xno; then 174 # Thus we are building headless only. 175 BUILD_HEADLESS="BUILD_HEADLESS:=true" 176 headful_msg="headless only" 177 fi 178 179 AC_MSG_RESULT([$headful_msg]) 180 181 AC_SUBST(SUPPORT_HEADLESS) 182 AC_SUBST(SUPPORT_HEADFUL) 183 AC_SUBST(BUILD_HEADLESS) 184 185 # Choose cacerts source file 186 AC_ARG_WITH(cacerts-file, [AS_HELP_STRING([--with-cacerts-file], 187 [specify alternative cacerts file])]) 188 if test "x$with_cacerts_file" != x; then 189 CACERTS_FILE=$with_cacerts_file 190 fi 191 AC_SUBST(CACERTS_FILE) 192 193 # Enable or disable unlimited crypto 194 AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--enable-unlimited-crypto], 195 [Enable unlimited crypto policy @<:@disabled@:>@])],, 196 [enable_unlimited_crypto=no]) 197 if test "x$enable_unlimited_crypto" = "xyes"; then 198 UNLIMITED_CRYPTO=true 199 else 200 UNLIMITED_CRYPTO=false 201 fi 202 AC_SUBST(UNLIMITED_CRYPTO) 203 204 # Should we build the serviceability agent (SA)? 205 INCLUDE_SA=true 206 if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then 207 INCLUDE_SA=false 208 fi 209 if test "x$OPENJDK_TARGET_OS" = xaix ; then 210 INCLUDE_SA=false 211 fi 212 if test "x$OPENJDK_TARGET_CPU" = xaarch64; then 213 INCLUDE_SA=false 214 fi 215 AC_SUBST(INCLUDE_SA) 216 217 # Compress jars 218 COMPRESS_JARS=false 219 220 AC_SUBST(COMPRESS_JARS) 221 222 # Setup default copyright year. Mostly overridden when building close to a new year. 223 AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year], 224 [Set copyright year value for build @<:@current year@:>@])]) 225 if test "x$with_copyright_year" = xyes; then 226 AC_MSG_ERROR([Copyright year must have a value]) 227 elif test "x$with_copyright_year" != x; then 228 COPYRIGHT_YEAR="$with_copyright_year" 229 else 230 COPYRIGHT_YEAR=`date +'%Y'` 231 fi 232 AC_SUBST(COPYRIGHT_YEAR) 233]) 234 235############################################################################### 236# 237# Enable or disable the elliptic curve crypto implementation 238# 239AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], 240[ 241 AC_MSG_CHECKING([if elliptic curve crypto implementation is present]) 242 243 if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then 244 ENABLE_INTREE_EC=yes 245 AC_MSG_RESULT([yes]) 246 else 247 ENABLE_INTREE_EC=no 248 AC_MSG_RESULT([no]) 249 fi 250 251 AC_SUBST(ENABLE_INTREE_EC) 252]) 253 254AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS], 255[ 256 # 257 # NATIVE_DEBUG_SYMBOLS 258 # This must be done after the toolchain is setup, since we're looking at objcopy. 259 # 260 AC_MSG_CHECKING([what type of native debug symbols to use]) 261 AC_ARG_WITH([native-debug-symbols], 262 [AS_HELP_STRING([--with-native-debug-symbols], 263 [set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])], 264 [ 265 if test "x$OPENJDK_TARGET_OS" = xaix; then 266 if test "x$withval" = xexternal || test "x$withval" = xzipped; then 267 AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols]) 268 fi 269 fi 270 ], 271 [ 272 if test "x$OPENJDK_TARGET_OS" = xaix; then 273 # AIX doesn't support 'zipped' so use 'internal' as default 274 with_native_debug_symbols="internal" 275 else 276 if test "x$STATIC_BUILD" = xtrue; then 277 with_native_debug_symbols="none" 278 else 279 with_native_debug_symbols="zipped" 280 fi 281 fi 282 ]) 283 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 284 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 285 286 if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 287 288 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 289 if test "x$OBJCOPY" = x; then 290 # enabling of enable-debug-symbols and can't find objcopy 291 # this is an error 292 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 293 fi 294 fi 295 296 COMPILE_WITH_DEBUG_SYMBOLS=true 297 COPY_DEBUG_SYMBOLS=true 298 ZIP_EXTERNAL_DEBUG_SYMBOLS=true 299 300 # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true 301 DEBUG_BINARIES=false 302 STRIP_POLICY=min_strip 303 304 elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then 305 COMPILE_WITH_DEBUG_SYMBOLS=false 306 COPY_DEBUG_SYMBOLS=false 307 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 308 309 DEBUG_BINARIES=false 310 STRIP_POLICY=no_strip 311 elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then 312 COMPILE_WITH_DEBUG_SYMBOLS=true 313 COPY_DEBUG_SYMBOLS=false 314 ZIP_EXTERNAL_DEBUG_SYMBOLS=false 315 316 # Hotspot legacy support, will turn on -g when COPY_DEBUG_SYMBOLS=false 317 DEBUG_BINARIES=true 318 STRIP_POLICY=no_strip 319 STRIP="" 320 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 335 # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true 336 DEBUG_BINARIES=false 337 STRIP_POLICY=min_strip 338 else 339 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 340 fi 341 342 # --enable-debug-symbols is deprecated. 343 # Please use --with-native-debug-symbols=[internal,external,zipped] . 344 BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols, 345 [Please use --with-native-debug-symbols=[[internal,external,zipped]] .]) 346 347 # --enable-zip-debug-info is deprecated. 348 # Please use --with-native-debug-symbols=zipped . 349 BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info, 350 [Please use --with-native-debug-symbols=zipped .]) 351 352 AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS) 353 AC_SUBST(COPY_DEBUG_SYMBOLS) 354 AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS) 355 356 # Legacy values 357 AC_SUBST(DEBUG_BINARIES) 358 AC_SUBST(STRIP_POLICY) 359]) 360 361################################################################################ 362# 363# Gcov coverage data for hotspot 364# 365AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 366[ 367 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 368 [enable native compilation with code coverage data@<:@disabled@:>@])]) 369 GCOV_ENABLED="false" 370 if test "x$enable_native_coverage" = "xyes"; then 371 if test "x$TOOLCHAIN_TYPE" = "xgcc"; then 372 AC_MSG_CHECKING([if native coverage is enabled]) 373 AC_MSG_RESULT([yes]) 374 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 375 GCOV_LDFLAGS="-fprofile-arcs" 376 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $GCOV_CFLAGS" 377 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $GCOV_CFLAGS" 378 LEGACY_EXTRA_LDFLAGS="$LEGACY_EXTRA_LDFLAGS $GCOV_LDFLAGS" 379 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 380 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 381 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 382 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 383 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 384 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 385 GCOV_ENABLED="true" 386 else 387 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc]) 388 fi 389 elif test "x$enable_native_coverage" = "xno"; then 390 AC_MSG_CHECKING([if native coverage is enabled]) 391 AC_MSG_RESULT([no]) 392 elif test "x$enable_native_coverage" != "x"; then 393 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 394 fi 395 396 AC_SUBST(GCOV_ENABLED) 397]) 398 399################################################################################ 400# 401# Static build support. When enabled will generate static 402# libraries instead of shared libraries for all JDK libs. 403# 404AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 405[ 406 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 407 [enable static library build @<:@disabled@:>@])]) 408 STATIC_BUILD=false 409 if test "x$enable_static_build" = "xyes"; then 410 AC_MSG_CHECKING([if static build is enabled]) 411 AC_MSG_RESULT([yes]) 412 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 413 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 414 fi 415 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 416 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $STATIC_BUILD_CFLAGS" 417 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $STATIC_BUILD_CFLAGS" 418 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 419 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 420 STATIC_BUILD=true 421 elif test "x$enable_static_build" = "xno"; then 422 AC_MSG_CHECKING([if static build is enabled]) 423 AC_MSG_RESULT([no]) 424 elif test "x$enable_static_build" != "x"; then 425 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 426 fi 427 428 AC_SUBST(STATIC_BUILD) 429]) 430 431################################################################################ 432# 433# jlink options. 434# We always keep packaged modules in JDK image. 435# 436AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS], 437[ 438 AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules], 439 [Do not keep packaged modules in jdk image @<:@enable@:>@])]) 440 441 if test "x$enable_keep_packaged_modules" = "xyes"; then 442 AC_MSG_CHECKING([if packaged modules are kept]) 443 AC_MSG_RESULT([yes]) 444 JLINK_KEEP_PACKAGED_MODULES=true 445 elif test "x$enable_keep_packaged_modules" = "xno"; then 446 AC_MSG_CHECKING([if packaged modules are kept]) 447 AC_MSG_RESULT([no]) 448 JLINK_KEEP_PACKAGED_MODULES=false 449 elif test "x$enable_keep_packaged_modules" = "x"; then 450 AC_MSG_RESULT([yes (default)]) 451 JLINK_KEEP_PACKAGED_MODULES=true 452 else 453 AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument]) 454 fi 455 456 AC_SUBST(JLINK_KEEP_PACKAGED_MODULES) 457]) 458