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