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 
  26 AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
  27 [
  28   AC_CHECK_PROGS(PKGHANDLER, apt-get yum brew port pkgutil pkgadd)
  29 ])
  30 
  31 AC_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 
  65 cygwin_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="
  81 The freetype library can now be build during the configure process.
  82 Download the freetype sources and unpack them into an arbitrary directory:
  83 
  84 wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
  85 tar -xzf freetype-2.5.3.tar.gz
  86 
  87 Then run configure with '--with-freetype-src=<freetype_src>'. This will
  88 automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
  89 builds or into '<freetype_src>/lib32' for 32-bit builds.
  90 Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
  91 and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds.
  92 
  93 Alternatively you can unpack the sources like this to use the default directory:
  94 
  95 tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
  96       ;;
  97   esac
  98 }
  99 
 100 msys_help() {
 101   PKGHANDLER_COMMAND=""
 102 }
 103 
 104 apt_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 
 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" ;;
 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 
 148 brew_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 
 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 # 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.
 175 AC_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 
 201 AC_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 
 293 AC_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 ])