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