jdk-options.m4 revision 1868:8b46c6cecc37
1# 2# Copyright (c) 2011, 2015, 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 (HotSpot build only)) @<:@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 and slowdebug]) 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 # Compress jars 180 COMPRESS_JARS=false 181 182 AC_SUBST(COMPRESS_JARS) 183 184 # Setup default copyright year. Mostly overridden when building close to a new year. 185 AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year], 186 [Set copyright year value for build @<:@current year@:>@])]) 187 if test "x$with_copyright_year" = xyes; then 188 AC_MSG_ERROR([Copyright year must have a value]) 189 elif test "x$with_copyright_year" != x; then 190 COPYRIGHT_YEAR="$with_copyright_year" 191 else 192 COPYRIGHT_YEAR=`date +'%Y'` 193 fi 194 AC_SUBST(COPYRIGHT_YEAR) 195]) 196 197############################################################################### 198# 199# Enable or disable the elliptic curve crypto implementation 200# 201AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], 202[ 203 AC_MSG_CHECKING([if elliptic curve crypto implementation is present]) 204 205 if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then 206 ENABLE_INTREE_EC=yes 207 AC_MSG_RESULT([yes]) 208 else 209 ENABLE_INTREE_EC=no 210 AC_MSG_RESULT([no]) 211 fi 212 213 AC_SUBST(ENABLE_INTREE_EC) 214]) 215 216AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS], 217[ 218 # 219 # NATIVE_DEBUG_SYMBOLS 220 # This must be done after the toolchain is setup, since we're looking at objcopy. 221 # 222 AC_MSG_CHECKING([what type of native debug symbols to use]) 223 AC_ARG_WITH([native-debug-symbols], 224 [AS_HELP_STRING([--with-native-debug-symbols], 225 [set the native debug symbol configuration (none, internal, external, zipped) @<:@zipped@:>@])], 226 [ 227 if test "x$OPENJDK_TARGET_OS" = xaix; then 228 if test "x$withval" = xexternal || test "x$withval" = xzipped; then 229 AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols]) 230 fi 231 fi 232 ], 233 [ 234 if test "x$OPENJDK_TARGET_OS" = xaix; then 235 # AIX doesn't support 'zipped' so use 'internal' as default 236 with_native_debug_symbols="internal" 237 else 238 with_native_debug_symbols="zipped" 239 fi 240 ]) 241 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 242 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 243 244 if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 245 246 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 247 if test "x$OBJCOPY" = x; then 248 # enabling of enable-debug-symbols and can't find objcopy 249 # this is an error 250 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 251 fi 252 fi 253 254 ENABLE_DEBUG_SYMBOLS=true 255 ZIP_DEBUGINFO_FILES=true 256 # -g is already added by ENABLE_DEBUG_SYMBOLS and the hotspot makefiles 257 # will basically do slowdebug builds when DEBUG_BINARIES is set for 258 # fastdebug builds 259 DEBUG_BINARIES=false 260 STRIP_POLICY=min_strip 261 elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then 262 ENABLE_DEBUG_SYMBOLS=false 263 ZIP_DEBUGINFO_FILES=false 264 DEBUG_BINARIES=false 265 STRIP_POLICY=no_strip 266 elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then 267 ENABLE_DEBUG_SYMBOLS=false # -g option only 268 ZIP_DEBUGINFO_FILES=false 269 # Fastdebug builds with this setting will essentially be slowdebug 270 # in hotspot. 271 DEBUG_BINARIES=true 272 STRIP_POLICY=no_strip 273 STRIP="" 274 elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then 275 276 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 277 if test "x$OBJCOPY" = x; then 278 # enabling of enable-debug-symbols and can't find objcopy 279 # this is an error 280 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 281 fi 282 fi 283 284 ENABLE_DEBUG_SYMBOLS=true 285 ZIP_DEBUGINFO_FILES=false 286 # -g is already added by ENABLE_DEBUG_SYMBOLS and the hotspot makefiles 287 # will basically do slowdebug builds when DEBUG_BINARIES is set for 288 # fastdebug builds 289 DEBUG_BINARIES=false 290 STRIP_POLICY=min_strip 291 else 292 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 293 fi 294 295 # --enable-debug-symbols is deprecated. 296 # Please use --with-native-debug-symbols=[internal,external,zipped] . 297 BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols, 298 [Please use --with-native-debug-symbols=[[internal,external,zipped]] .]) 299 300 # --enable-zip-debug-info is deprecated. 301 # Please use --with-native-debug-symbols=zipped . 302 BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info, 303 [Please use --with-native-debug-symbols=zipped .]) 304 305 AC_SUBST(NATIVE_DEBUG_SYMBOLS) 306 AC_SUBST(DEBUG_BINARIES) 307 AC_SUBST(STRIP_POLICY) 308 AC_SUBST(ENABLE_DEBUG_SYMBOLS) 309 AC_SUBST(ZIP_DEBUGINFO_FILES) 310]) 311 312################################################################################ 313# 314# Gcov coverage data for hotspot 315# 316AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 317[ 318 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 319 [enable native compilation with code coverage data@<:@disabled@:>@])]) 320 GCOV_ENABLED="false" 321 if test "x$enable_native_coverage" = "xyes"; then 322 if test "x$TOOLCHAIN_TYPE" = "xgcc"; then 323 AC_MSG_CHECKING([if native coverage is enabled]) 324 AC_MSG_RESULT([yes]) 325 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 326 GCOV_LDFLAGS="-fprofile-arcs" 327 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $GCOV_CFLAGS" 328 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $GCOV_CFLAGS" 329 LEGACY_EXTRA_LDFLAGS="$LEGACY_EXTRA_LDFLAGS $GCOV_LDFLAGS" 330 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 331 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 332 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 333 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 334 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 335 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 336 GCOV_ENABLED="true" 337 else 338 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc]) 339 fi 340 elif test "x$enable_native_coverage" = "xno"; then 341 AC_MSG_CHECKING([if native coverage is enabled]) 342 AC_MSG_RESULT([no]) 343 elif test "x$enable_native_coverage" != "x"; then 344 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 345 fi 346 347 AC_SUBST(GCOV_ENABLED) 348]) 349 350################################################################################ 351# 352# Static build support. When enabled will generate static 353# libraries instead of shared libraries for all JDK libs. 354# 355AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 356[ 357 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 358 [enable static library build @<:@disabled@:>@])]) 359 STATIC_BUILD=false 360 if test "x$enable_static_build" = "xyes"; then 361 AC_MSG_CHECKING([if static build is enabled]) 362 AC_MSG_RESULT([yes]) 363 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 364 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 365 fi 366 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 367 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $STATIC_BUILD_CFLAGS" 368 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $STATIC_BUILD_CFLAGS" 369 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 370 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 371 STATIC_BUILD=true 372 elif test "x$enable_static_build" = "xno"; then 373 AC_MSG_CHECKING([if static build is enabled]) 374 AC_MSG_RESULT([no]) 375 elif test "x$enable_static_build" != "x"; then 376 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 377 fi 378 379 AC_SUBST(STATIC_BUILD) 380]) 381