help.m4 revision 1662:1bd7043059ae
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 26AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP], 27[ 28 AC_CHECK_PROGS(PKGHANDLER, apt-get yum port pkgutil pkgadd) 29]) 30 31AC_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 63cygwin_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=" 79The freetype library can now be build during the configure process. 80Download the freetype sources and unpack them into an arbitrary directory: 81 82wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz 83tar -xzf freetype-2.5.3.tar.gz 84 85Then run configure with '--with-freetype-src=<freetype_src>'. This will 86automatically build the freetype library into '<freetype_src>/lib64' for 64-bit 87builds or into '<freetype_src>/lib32' for 32-bit builds. 88Afterwards you can always use '--with-freetype-include=<freetype_src>/include' 89and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds." 90 ;; 91 esac 92} 93 94msys_help() { 95 PKGHANDLER_COMMAND="" 96} 97 98apt_help() { 99 case $1 in 100 reduced) 101 PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;; 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 121yum_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 libXi-devel" ;; 137 ccache) 138 PKGHANDLER_COMMAND="sudo yum install ccache" ;; 139 esac 140} 141 142port_help() { 143 PKGHANDLER_COMMAND="" 144} 145 146pkgutil_help() { 147 PKGHANDLER_COMMAND="" 148} 149 150pkgadd_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. 158AC_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 175AC_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 if test "x$no_create" != "xyes"; then 182 if test "x$IS_RECONFIGURE" != "xyes"; then 183 printf "A new configuration has been successfully created in\n%s\n" "$OUTPUT_ROOT" 184 else 185 printf "The existing configuration has been successfully updated in\n%s\n" "$OUTPUT_ROOT" 186 fi 187 else 188 if test "x$IS_RECONFIGURE" != "xyes"; then 189 printf "A configuration has been successfully checked but not created\n" 190 else 191 printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUT_ROOT" 192 fi 193 fi 194 if test "x$CONFIGURE_COMMAND_LINE" != x; then 195 printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n" 196 else 197 printf "using default settings.\n" 198 fi 199 200 printf "\n" 201 printf "Configuration summary:\n" 202 printf "* Debug level: $DEBUG_LEVEL\n" 203 printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n" 204 printf "* JDK variant: $JDK_VARIANT\n" 205 printf "* JVM variants: $with_jvm_variants\n" 206 printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n" 207 208 printf "\n" 209 printf "Tools summary:\n" 210 if test "x$OPENJDK_BUILD_OS" = "xwindows"; then 211 printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n" 212 fi 213 printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n" 214 if test "x$TOOLCHAIN_VERSION" != "x"; then 215 print_version=" $TOOLCHAIN_VERSION" 216 fi 217 printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n" 218 printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n" 219 printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n" 220 221 printf "\n" 222 printf "Build performance summary:\n" 223 printf "* Cores to use: $JOBS\n" 224 printf "* Memory limit: $MEMORY_SIZE MB\n" 225 if test "x$CCACHE_STATUS" != "x"; then 226 printf "* ccache status: $CCACHE_STATUS\n" 227 fi 228 printf "\n" 229 230 if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then 231 printf "NOTE: You have requested to build more than one version of the JVM, which\n" 232 printf "will result in longer build times.\n" 233 printf "\n" 234 fi 235 236 if test "x$FOUND_ALT_VARIABLES" != "x"; then 237 printf "WARNING: You have old-style ALT_ environment variables set.\n" 238 printf "These are not respected, and will be ignored. It is recommended\n" 239 printf "that you clean your environment. The following variables are set:\n" 240 printf "$FOUND_ALT_VARIABLES\n" 241 printf "\n" 242 fi 243 244 if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then 245 printf "WARNING: Your build output directory is not on a local disk.\n" 246 printf "This will severely degrade build performance!\n" 247 printf "It is recommended that you create an output directory on a local disk,\n" 248 printf "and run the configure script again from that directory.\n" 249 printf "\n" 250 fi 251 252 if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then 253 printf "WARNING: The result of this configuration has overridden an older\n" 254 printf "configuration. You *should* run 'make clean' to make sure you get a\n" 255 printf "proper build. Failure to do so might result in strange build problems.\n" 256 printf "\n" 257 fi 258 259 if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then 260 printf "WARNING: The result of this configuration was not saved.\n" 261 printf "You should run without '--no-create | -n' to create the configuration.\n" 262 printf "\n" 263 fi 264]) 265 266AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS], 267[ 268 # Locate config.log. 269 if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then 270 CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR" 271 elif test -e "./config.log"; then 272 CONFIG_LOG_PATH="." 273 fi 274 275 if test -e "$CONFIG_LOG_PATH/config.log"; then 276 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1 277 if test $? -eq 0; then 278 printf "The following warnings were produced. Repeated here for convenience:\n" 279 # We must quote sed expression (using []) to stop m4 from eating the []. 280 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ] 281 printf "\n" 282 fi 283 fi 284]) 285