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