help.m4 revision 2773:48ae1d50d393
1#
2# Copyright (c) 2011, 2017, 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
26AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
27[
28  AC_CHECK_PROGS(PKGHANDLER, apt-get yum brew port pkgutil pkgadd)
29])
30
31AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
32[
33  # Print a helpful message on how to acquire the necessary build dependency.
34  # $1 is the help tag: freetype, cups, alsa etc
35  MISSING_DEPENDENCY=$1
36
37  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
38    cygwin_help $MISSING_DEPENDENCY
39  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
40    msys_help $MISSING_DEPENDENCY
41  else
42    PKGHANDLER_COMMAND=
43
44    case $PKGHANDLER in
45      apt-get)
46        apt_help     $MISSING_DEPENDENCY ;;
47      yum)
48        yum_help     $MISSING_DEPENDENCY ;;
49      brew)
50        brew_help    $MISSING_DEPENDENCY ;;
51      port)
52        port_help    $MISSING_DEPENDENCY ;;
53      pkgutil)
54        pkgutil_help $MISSING_DEPENDENCY ;;
55      pkgadd)
56        pkgadd_help  $MISSING_DEPENDENCY ;;
57    esac
58
59    if test "x$PKGHANDLER_COMMAND" != x; then
60      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
61    fi
62  fi
63])
64
65cygwin_help() {
66  case $1 in
67    unzip)
68      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip )"
69      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
70      ;;
71    zip)
72      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P zip )"
73      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
74      ;;
75    make)
76      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P make )"
77      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
78      ;;
79    freetype)
80      HELP_MSG="
81The freetype library can now be build during the configure process.
82Download the freetype sources and unpack them into an arbitrary directory:
83
84wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
85tar -xzf freetype-2.5.3.tar.gz
86
87Then run configure with '--with-freetype-src=<freetype_src>'. This will
88automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
89builds or into '<freetype_src>/lib32' for 32-bit builds.
90Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
91and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds.
92
93Alternatively you can unpack the sources like this to use the default directory:
94
95tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
96      ;;
97  esac
98}
99
100msys_help() {
101  PKGHANDLER_COMMAND=""
102}
103
104apt_help() {
105  case $1 in
106    reduced)
107      PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;;
108    devkit)
109      PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
110    openjdk)
111      PKGHANDLER_COMMAND="sudo apt-get install openjdk-8-jdk" ;;
112    alsa)
113      PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
114    cups)
115      PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;;
116    freetype)
117      PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
118    ffi)
119      PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
120    x11)
121      PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
122    ccache)
123      PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
124    dtrace)
125      PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
126  esac
127}
128
129yum_help() {
130  case $1 in
131    devkit)
132      PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
133    openjdk)
134      PKGHANDLER_COMMAND="sudo yum install java-1.8.0-openjdk-devel" ;;
135    alsa)
136      PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
137    cups)
138      PKGHANDLER_COMMAND="sudo yum install cups-devel" ;;
139    freetype)
140      PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
141    x11)
142      PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel" ;;
143    ccache)
144      PKGHANDLER_COMMAND="sudo yum install ccache" ;;
145  esac
146}
147
148brew_help() {
149  case $1 in
150    openjdk)
151      PKGHANDLER_COMMAND="brew cask install java" ;;
152    freetype)
153      PKGHANDLER_COMMAND="brew install freetype" ;;
154    ccache)
155      PKGHANDLER_COMMAND="brew install ccache" ;;
156  esac
157}
158
159port_help() {
160  PKGHANDLER_COMMAND=""
161}
162
163pkgutil_help() {
164  PKGHANDLER_COMMAND=""
165}
166
167pkgadd_help() {
168  PKGHANDLER_COMMAND=""
169}
170
171# This function will check if we're called from the "configure" wrapper while
172# printing --help. If so, we will print out additional information that can
173# only be extracted within the autoconf script, and then exit. This must be
174# called at the very beginning in configure.ac.
175AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
176[
177  if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then
178
179    # Print available toolchains
180    $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
181    $PRINTF "Which are valid to use depends on the build platform.\n"
182    for toolchain in $VALID_TOOLCHAINS_all; do
183      # Use indirect variable referencing
184      toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
185      TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
186      $PRINTF "  %-10s  %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
187    done
188    $PRINTF "\n"
189
190    # Print available jvm features
191    $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
192    $PRINTF "Which are valid to use depends on the target platform.\n  "
193    $PRINTF "%s " $VALID_JVM_FEATURES
194    $PRINTF "\n"
195
196    # And now exit directly
197    exit 0
198  fi
199])
200
201AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
202[
203  # Finally output some useful information to the user
204
205  printf "\n"
206  printf "====================================================\n"
207  if test "x$no_create" != "xyes"; then
208    if test "x$IS_RECONFIGURE" != "xyes"; then
209      printf "A new configuration has been successfully created in\n%s\n" "$OUTPUT_ROOT"
210    else
211      printf "The existing configuration has been successfully updated in\n%s\n" "$OUTPUT_ROOT"
212    fi
213  else
214    if test "x$IS_RECONFIGURE" != "xyes"; then
215      printf "A configuration has been successfully checked but not created\n"
216    else
217      printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUT_ROOT"
218    fi
219  fi
220  if test "x$CONFIGURE_COMMAND_LINE" != x; then
221    printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
222  else
223    printf "using default settings.\n"
224  fi
225
226  printf "\n"
227  printf "Configuration summary:\n"
228  printf "* Debug level:    $DEBUG_LEVEL\n"
229  printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
230  printf "* JDK variant:    $JDK_VARIANT\n"
231  printf "* JVM variants:   $JVM_VARIANTS\n"
232  printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
233  printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
234
235  printf "\n"
236  printf "Tools summary:\n"
237  if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
238    printf "* Environment:    $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
239  fi
240  printf "* Boot JDK:       $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
241  if test "x$TOOLCHAIN_VERSION" != "x"; then
242    print_version=" $TOOLCHAIN_VERSION"
243  fi
244  printf "* Toolchain:      $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n"
245  printf "* C Compiler:     Version $CC_VERSION_NUMBER (at $CC)\n"
246  printf "* C++ Compiler:   Version $CXX_VERSION_NUMBER (at $CXX)\n"
247
248  printf "\n"
249  printf "Build performance summary:\n"
250  printf "* Cores to use:   $JOBS\n"
251  printf "* Memory limit:   $MEMORY_SIZE MB\n"
252  if test "x$CCACHE_STATUS" != "x"; then
253    printf "* ccache status:  $CCACHE_STATUS\n"
254  fi
255  printf "\n"
256
257  if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
258    printf "NOTE: You have requested to build more than one version of the JVM, which\n"
259    printf "will result in longer build times.\n"
260    printf "\n"
261  fi
262
263  if test "x$FOUND_ALT_VARIABLES" != "x"; then
264    printf "WARNING: You have old-style ALT_ environment variables set.\n"
265    printf "These are not respected, and will be ignored. It is recommended\n"
266    printf "that you clean your environment. The following variables are set:\n"
267    printf "$FOUND_ALT_VARIABLES\n"
268    printf "\n"
269  fi
270
271  if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
272    printf "WARNING: Your build output directory is not on a local disk.\n"
273    printf "This will severely degrade build performance!\n"
274    printf "It is recommended that you create an output directory on a local disk,\n"
275    printf "and run the configure script again from that directory.\n"
276    printf "\n"
277  fi
278
279  if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then
280    printf "WARNING: The result of this configuration has overridden an older\n"
281    printf "configuration. You *should* run 'make clean' to make sure you get a\n"
282    printf "proper build. Failure to do so might result in strange build problems.\n"
283    printf "\n"
284  fi
285
286  if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then
287    printf "WARNING: The result of this configuration was not saved.\n"
288    printf "You should run without '--no-create | -n' to create the configuration.\n"
289    printf "\n"
290  fi
291])
292
293AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS],
294[
295  # Locate config.log.
296  if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then
297    CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR"
298  elif test -e "./config.log"; then
299    CONFIG_LOG_PATH="."
300  fi
301
302  if test -e "$CONFIG_LOG_PATH/config.log"; then
303    $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1
304    if test $? -eq 0; then
305      printf "The following warnings were produced. Repeated here for convenience:\n"
306      # We must quote sed expression (using []) to stop m4 from eating the [].
307      $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ]
308      printf "\n"
309    fi
310  fi
311])
312