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