help.m4 10.9 KB
Newer Older
1
#
2
# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

26 27
AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
[
28
  AC_CHECK_PROGS(PKGHANDLER, apt-get yum brew port pkgutil pkgadd)
29 30 31 32
])

AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
[
33
  # Print a helpful message on how to acquire the necessary build dependency.
34
  # $1 is the help tag: freetype, cups, alsa etc
35 36
  MISSING_DEPENDENCY=$1

37 38 39 40 41
  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
    cygwin_help $MISSING_DEPENDENCY
  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
    msys_help $MISSING_DEPENDENCY
  else
42 43 44
    PKGHANDLER_COMMAND=

    case $PKGHANDLER in
45 46 47 48
      apt-get)
        apt_help     $MISSING_DEPENDENCY ;;
      yum)
        yum_help     $MISSING_DEPENDENCY ;;
49 50
      brew)
        brew_help    $MISSING_DEPENDENCY ;;
51 52 53 54 55 56
      port)
        port_help    $MISSING_DEPENDENCY ;;
      pkgutil)
        pkgutil_help $MISSING_DEPENDENCY ;;
      pkgadd)
        pkgadd_help  $MISSING_DEPENDENCY ;;
57 58 59
    esac

    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

O
ohair 已提交
65
cygwin_help() {
66
  case $1 in
O
ohair 已提交
67
    unzip)
68 69 70
      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip )"
      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
      ;;
O
ohair 已提交
71
    zip)
72 73 74
      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P zip )"
      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
      ;;
O
ohair 已提交
75
    make)
76 77 78
      PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P make )"
      HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
      ;;
I
ihse 已提交
79
    freetype)
80 81 82 83 84 85 86 87 88 89 90
      HELP_MSG="
The freetype library can now be build during the configure process.
Download the freetype sources and unpack them into an arbitrary directory:

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
tar -xzf freetype-2.5.3.tar.gz

Then run configure with '--with-freetype-src=<freetype_src>'. This will
automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
builds or into '<freetype_src>/lib32' for 32-bit builds.
Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
91 92 93 94 95
and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds.

Alternatively you can unpack the sources like this to use the default directory:

tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
96
      ;;
97
  esac
O
ohair 已提交
98 99
}

100 101
msys_help() {
  PKGHANDLER_COMMAND=""
O
ohair 已提交
102 103
}

104
apt_help() {
105
  case $1 in
106 107
    reduced)
      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" ;;
I
ihse 已提交
116
    freetype)
117
      PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
118 119
    ffi)
      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" ;;
E
erikj 已提交
124 125
    dtrace)
      PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
126
  esac
127 128
}

129
yum_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" ;;
I
ihse 已提交
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 145
      PKGHANDLER_COMMAND="sudo yum install ccache" ;;
  esac
146 147
}

148 149 150 151 152 153 154 155 156 157 158
brew_help() {
  case $1 in
    openjdk)
      PKGHANDLER_COMMAND="brew cask install java" ;;
    freetype)
      PKGHANDLER_COMMAND="brew install freetype" ;;
    ccache)
      PKGHANDLER_COMMAND="brew install ccache" ;;
  esac
}

159
port_help() {
160
  PKGHANDLER_COMMAND=""
161 162
}

163
pkgutil_help() {
164
  PKGHANDLER_COMMAND=""
165 166
}

167
pkgadd_help() {
168
  PKGHANDLER_COMMAND=""
169
}
170

171 172 173 174 175 176
# This function will check if we're called from the "configure" wrapper while
# printing --help. If so, we will print out additional information that can
# only be extracted within the autoconf script, and then exit. This must be
# called at the very beginning in configure.ac.
AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
[
177 178 179
  if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then

    # Print available toolchains
180 181 182 183 184 185 186 187
    $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
    $PRINTF "Which are valid to use depends on the build platform.\n"
    for toolchain in $VALID_TOOLCHAINS_all; do
      # Use indirect variable referencing
      toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
      TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
      $PRINTF "  %-10s  %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
    done
E
erikj 已提交
188 189 190 191 192 193 194
    $PRINTF "\n"

    # Print available jvm features
    $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
    $PRINTF "Which are valid to use depends on the target platform.\n  "
    $PRINTF "%s " $VALID_JVM_FEATURES
    $PRINTF "\n"
195 196 197 198 199 200

    # And now exit directly
    exit 0
  fi
])

201 202
AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
[
203 204 205 206
  # Finally output some useful information to the user

  printf "\n"
  printf "====================================================\n"
207 208
  if test "x$no_create" != "xyes"; then
    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 213 214 215 216
    fi
  else
    if test "x$IS_RECONFIGURE" != "xyes"; then
      printf "A configuration has been successfully checked but not created\n"
    else
217
      printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUT_ROOT"
218 219
    fi
  fi
220 221 222 223 224 225 226 227 228
  if test "x$CONFIGURE_COMMAND_LINE" != x; then
    printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
  else
    printf "using default settings.\n"
  fi

  printf "\n"
  printf "Configuration summary:\n"
  printf "* Debug level:    $DEBUG_LEVEL\n"
229
  printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
230
  printf "* JDK variant:    $JDK_VARIANT\n"
E
erikj 已提交
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 236 237 238 239 240

  printf "\n"
  printf "Tools summary:\n"
  if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
    printf "* Environment:    $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
  fi
  printf "* Boot JDK:       $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
241 242 243
  if test "x$TOOLCHAIN_VERSION" != "x"; then
    print_version=" $TOOLCHAIN_VERSION"
  fi
244
  printf "* Toolchain:      $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n"
245 246
  printf "* C Compiler:     Version $CC_VERSION_NUMBER (at $CC)\n"
  printf "* C++ Compiler:   Version $CXX_VERSION_NUMBER (at $CXX)\n"
247 248 249 250 251

  printf "\n"
  printf "Build performance summary:\n"
  printf "* Cores to use:   $JOBS\n"
  printf "* Memory limit:   $MEMORY_SIZE MB\n"
I
ihse 已提交
252 253
  if test "x$CCACHE_STATUS" != "x"; then
    printf "* ccache status:  $CCACHE_STATUS\n"
254
  fi
I
ihse 已提交
255
  printf "\n"
256

E
erikj 已提交
257
  if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
    printf "NOTE: You have requested to build more than one version of the JVM, which\n"
    printf "will result in longer build times.\n"
    printf "\n"
  fi

  if test "x$FOUND_ALT_VARIABLES" != "x"; then
    printf "WARNING: You have old-style ALT_ environment variables set.\n"
    printf "These are not respected, and will be ignored. It is recommended\n"
    printf "that you clean your environment. The following variables are set:\n"
    printf "$FOUND_ALT_VARIABLES\n"
    printf "\n"
  fi

  if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
    printf "WARNING: Your build output directory is not on a local disk.\n"
    printf "This will severely degrade build performance!\n"
    printf "It is recommended that you create an output directory on a local disk,\n"
    printf "and run the configure script again from that directory.\n"
    printf "\n"
  fi

279
  if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then
280 281 282 283 284
    printf "WARNING: The result of this configuration has overridden an older\n"
    printf "configuration. You *should* run 'make clean' to make sure you get a\n"
    printf "proper build. Failure to do so might result in strange build problems.\n"
    printf "\n"
  fi
285 286 287 288 289 290

  if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then
    printf "WARNING: The result of this configuration was not saved.\n"
    printf "You should run without '--no-create | -n' to create the configuration.\n"
    printf "\n"
  fi
291
])
292 293 294

AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS],
[
295 296 297 298 299
  # Locate config.log.
  if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then
    CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR"
  elif test -e "./config.log"; then
    CONFIG_LOG_PATH="."
300 301
  fi

302 303 304 305 306 307 308 309 310
  if test -e "$CONFIG_LOG_PATH/config.log"; then
    $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1
    if test $? -eq 0; then
      printf "The following warnings were produced. Repeated here for convenience:\n"
      # We must quote sed expression (using []) to stop m4 from eating the [].
      $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ]
      printf "\n"
    fi
  fi
311
])