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