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 
  26 AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
  27 [
  28   AC_CHECK_PROGS(PKGHANDLER, apt-get yum 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       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 
  63 cygwin_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="
  79 The freetype library can now be build during the configure process.
  80 Download the freetype sources and unpack them into an arbitrary directory:
  81 
  82 wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
  83 tar -xzf freetype-2.5.3.tar.gz
  84 
  85 Then run configure with '--with-freetype-src=<freetype_src>'. This will
  86 automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
  87 builds or into '<freetype_src>/lib32' for 32-bit builds.
  88 Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
  89 and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds.
  90 
  91 Alternatively you can unpack the sources like this to use the default directory:
  92 
  93 tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
  94       ;;
  95   esac
  96 }
  97 
  98 msys_help() {
  99   PKGHANDLER_COMMAND=""
 100 }
 101 
 102 apt_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 
 127 yum_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 
 146 port_help() {
 147   PKGHANDLER_COMMAND=""
 148 }
 149 
 150 pkgutil_help() {
 151   PKGHANDLER_COMMAND=""
 152 }
 153 
 154 pkgadd_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.
 162 AC_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 
 188 AC_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 
 280 AC_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 ])