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