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