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