jdk-options.m4 revision 1829:5a7e1695ac8c
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 [with_native_debug_symbols="zipped"]) 228 NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols 229 AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS]) 230 231 if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then 232 233 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 234 if test "x$OBJCOPY" = x; then 235 # enabling of enable-debug-symbols and can't find objcopy 236 # this is an error 237 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 238 fi 239 fi 240 241 ENABLE_DEBUG_SYMBOLS=true 242 ZIP_DEBUGINFO_FILES=true 243 DEBUG_BINARIES=true 244 STRIP_POLICY=min_strip 245 elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then 246 ENABLE_DEBUG_SYMBOLS=false 247 ZIP_DEBUGINFO_FILES=false 248 DEBUG_BINARIES=false 249 STRIP_POLICY=no_strip 250 elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then 251 ENABLE_DEBUG_SYMBOLS=false # -g option only 252 ZIP_DEBUGINFO_FILES=false 253 DEBUG_BINARIES=true 254 STRIP_POLICY=no_strip 255 STRIP="" 256 elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then 257 258 if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then 259 if test "x$OBJCOPY" = x; then 260 # enabling of enable-debug-symbols and can't find objcopy 261 # this is an error 262 AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols]) 263 fi 264 fi 265 266 ENABLE_DEBUG_SYMBOLS=true 267 ZIP_DEBUGINFO_FILES=false 268 DEBUG_BINARIES=true 269 STRIP_POLICY=min_strip 270 else 271 AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) 272 fi 273 274 # --enable-debug-symbols is deprecated. 275 # Please use --with-native-debug-symbols=[internal,external,zipped] . 276 BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols, 277 [Please use --with-native-debug-symbols=[[internal,external,zipped]] .]) 278 279 # --enable-zip-debug-info is deprecated. 280 # Please use --with-native-debug-symbols=zipped . 281 BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info, 282 [Please use --with-native-debug-symbols=zipped .]) 283 284 AC_SUBST(NATIVE_DEBUG_SYMBOLS) 285 AC_SUBST(DEBUG_BINARIES) 286 AC_SUBST(STRIP_POLICY) 287 AC_SUBST(ENABLE_DEBUG_SYMBOLS) 288 AC_SUBST(ZIP_DEBUGINFO_FILES) 289]) 290 291################################################################################ 292# 293# Gcov coverage data for hotspot 294# 295AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE], 296[ 297 AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage], 298 [enable native compilation with code coverage data@<:@disabled@:>@])]) 299 GCOV_ENABLED="false" 300 if test "x$enable_native_coverage" = "xyes"; then 301 if test "x$TOOLCHAIN_TYPE" = "xgcc"; then 302 AC_MSG_CHECKING([if native coverage is enabled]) 303 AC_MSG_RESULT([yes]) 304 GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline" 305 GCOV_LDFLAGS="-fprofile-arcs" 306 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $GCOV_CFLAGS" 307 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $GCOV_CFLAGS" 308 LEGACY_EXTRA_LDFLAGS="$LEGACY_EXTRA_LDFLAGS $GCOV_LDFLAGS" 309 CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS" 310 CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS" 311 CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS" 312 CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS" 313 LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS" 314 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS" 315 GCOV_ENABLED="true" 316 else 317 AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc]) 318 fi 319 elif test "x$enable_native_coverage" = "xno"; then 320 AC_MSG_CHECKING([if native coverage is enabled]) 321 AC_MSG_RESULT([no]) 322 elif test "x$enable_native_coverage" != "x"; then 323 AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"]) 324 fi 325 326 AC_SUBST(GCOV_ENABLED) 327]) 328 329################################################################################ 330# 331# Static build support. When enabled will generate static 332# libraries instead of shared libraries for all JDK libs. 333# 334AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD], 335[ 336 AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build], 337 [enable static library build @<:@disabled@:>@])]) 338 STATIC_BUILD=false 339 if test "x$enable_static_build" = "xyes"; then 340 AC_MSG_CHECKING([if static build is enabled]) 341 AC_MSG_RESULT([yes]) 342 if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then 343 AC_MSG_ERROR([--enable-static-build is only supported for macosx builds]) 344 fi 345 STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1" 346 LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $STATIC_BUILD_CFLAGS" 347 LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $STATIC_BUILD_CFLAGS" 348 CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 349 CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS" 350 STATIC_BUILD=true 351 elif test "x$enable_static_build" = "xno"; then 352 AC_MSG_CHECKING([if static build is enabled]) 353 AC_MSG_RESULT([no]) 354 elif test "x$enable_static_build" != "x"; then 355 AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"]) 356 fi 357 358 AC_SUBST(STATIC_BUILD) 359]) 360