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