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