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