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       if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
  79         HELP_MSG="To install freetype, run:
  80 wget \"http://gnuwin32.sourceforge.net/downlinks/freetype.php\" -O /tmp/freetype-setup.exe
  81 chmod +x /tmp/freetype-setup.exe
  82 /tmp/freetype-setup.exe
  83 Follow GUI prompts, and install to default directory \"C:\Program Files (x86)\GnuWin32\".
  84 After installation, locate lib/libfreetype.dll.a and make a copy with the name freetype.dll."
  85       else
  86         HELP_MSG="You need to build a 64-bit version of freetype.
  87 This is not readily available.
  88 You can find source code and build instructions on
  89 http://www.freetype.org/
  90 If you put the resulting build in \"C:\Program Files\GnuWin32\", it will be found automatically."
  91       fi
  92       ;;
  93   esac
  94 }
  95 
  96 msys_help() {
  97   PKGHANDLER_COMMAND=""
  98 }
  99 
 100 apt_help() {
 101   case $1 in
 102     devkit)
 103       PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
 104     openjdk)
 105       PKGHANDLER_COMMAND="sudo apt-get install openjdk-7-jdk" ;;
 106     alsa)
 107       PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
 108     cups)
 109       PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;;
 110     freetype)
 111       PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
 112     pulse)
 113       PKGHANDLER_COMMAND="sudo apt-get install libpulse-dev" ;;
 114     x11)
 115       PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
 116     ccache)
 117       PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
 118   esac
 119 }
 120 
 121 yum_help() {
 122   case $1 in
 123     devkit)
 124       PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
 125     openjdk)
 126       PKGHANDLER_COMMAND="sudo yum install java-1.7.0-openjdk" ;;
 127     alsa)
 128       PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
 129     cups)
 130       PKGHANDLER_COMMAND="sudo yum install cups-devel" ;;
 131     freetype)
 132       PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
 133     pulse)
 134       PKGHANDLER_COMMAND="sudo yum install pulseaudio-libs-devel" ;;
 135     x11)
 136       PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel" ;;
 137     ccache)
 138       PKGHANDLER_COMMAND="sudo yum install ccache" ;;
 139   esac
 140 }
 141 
 142 port_help() {
 143   PKGHANDLER_COMMAND=""
 144 }
 145 
 146 pkgutil_help() {
 147   PKGHANDLER_COMMAND=""
 148 }
 149 
 150 pkgadd_help() {
 151   PKGHANDLER_COMMAND=""
 152 }
 153 
 154 # This function will check if we're called from the "configure" wrapper while
 155 # printing --help. If so, we will print out additional information that can
 156 # only be extracted within the autoconf script, and then exit. This must be
 157 # called at the very beginning in configure.ac.
 158 AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
 159 [
 160   if test "x$CONFIGURE_PRINT_TOOLCHAIN_LIST" != x; then
 161     $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
 162     $PRINTF "Which are valid to use depends on the build platform.\n"
 163     for toolchain in $VALID_TOOLCHAINS_all; do
 164       # Use indirect variable referencing
 165       toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
 166       TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
 167       $PRINTF "  %-10s  %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
 168     done
 169 
 170     # And now exit directly
 171     exit 0
 172   fi
 173 ])
 174 
 175 AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
 176 [
 177   # Finally output some useful information to the user
 178 
 179   printf "\n"
 180   printf "====================================================\n"
 181   printf "A new configuration has been successfully created in\n"
 182   printf "$OUTPUT_ROOT\n"
 183   if test "x$CONFIGURE_COMMAND_LINE" != x; then
 184     printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
 185   else
 186     printf "using default settings.\n"
 187   fi
 188 
 189   printf "\n"
 190   printf "Configuration summary:\n"
 191   printf "* Debug level:    $DEBUG_LEVEL\n"
 192   printf "* JDK variant:    $JDK_VARIANT\n"
 193   printf "* JVM variants:   $with_jvm_variants\n"
 194   printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
 195 
 196   printf "\n"
 197   printf "Tools summary:\n"
 198   if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
 199     printf "* Environment:    $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
 200   fi
 201   printf "* Boot JDK:       $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
 202   printf "* Toolchain:      $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)\n"
 203   printf "* C Compiler:     Version $CC_VERSION_NUMBER (at $CC)\n"
 204   printf "* C++ Compiler:   Version $CXX_VERSION_NUMBER (at $CXX)\n"
 205 
 206   printf "\n"
 207   printf "Build performance summary:\n"
 208   printf "* Cores to use:   $JOBS\n"
 209   printf "* Memory limit:   $MEMORY_SIZE MB\n"
 210   if test "x$CCACHE_STATUS" != "x"; then
 211     printf "* ccache status:  $CCACHE_STATUS\n"
 212   fi
 213   printf "\n"
 214 
 215   if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then
 216     printf "NOTE: You have requested to build more than one version of the JVM, which\n"
 217     printf "will result in longer build times.\n"
 218     printf "\n"
 219   fi
 220 
 221   if test "x$FOUND_ALT_VARIABLES" != "x"; then
 222     printf "WARNING: You have old-style ALT_ environment variables set.\n"
 223     printf "These are not respected, and will be ignored. It is recommended\n"
 224     printf "that you clean your environment. The following variables are set:\n"
 225     printf "$FOUND_ALT_VARIABLES\n"
 226     printf "\n"
 227   fi
 228 
 229   if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
 230     printf "WARNING: Your build output directory is not on a local disk.\n"
 231     printf "This will severely degrade build performance!\n"
 232     printf "It is recommended that you create an output directory on a local disk,\n"
 233     printf "and run the configure script again from that directory.\n"
 234     printf "\n"
 235   fi
 236 
 237   if test "x$IS_RECONFIGURE" = "xyes"; then
 238     printf "WARNING: The result of this configuration has overridden an older\n"
 239     printf "configuration. You *should* run 'make clean' to make sure you get a\n"
 240     printf "proper build. Failure to do so might result in strange build problems.\n"
 241     printf "\n"
 242   fi
 243 ])