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, 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 printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n" 206 207 printf "\n" 208 printf "Tools summary:\n" 209 if test "x$OPENJDK_BUILD_OS" = "xwindows"; then 210 printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n" 211 fi 212 printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n" 213 if test "x$TOOLCHAIN_VERSION" != "x"; then 214 print_version=" $TOOLCHAIN_VERSION" 215 fi 216 printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n" 217 printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n" 218 printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n" 219 220 printf "\n" 221 printf "Build performance summary:\n" 222 printf "* Cores to use: $JOBS\n" 223 printf "* Memory limit: $MEMORY_SIZE MB\n" 224 if test "x$CCACHE_STATUS" != "x"; then 225 printf "* ccache status: $CCACHE_STATUS\n" 226 fi 227 printf "\n" 228 229 if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then 230 printf "NOTE: You have requested to build more than one version of the JVM, which\n" 231 printf "will result in longer build times.\n" 232 printf "\n" 233 fi 234 235 if test "x$FOUND_ALT_VARIABLES" != "x"; then 236 printf "WARNING: You have old-style ALT_ environment variables set.\n" 237 printf "These are not respected, and will be ignored. It is recommended\n" 238 printf "that you clean your environment. The following variables are set:\n" 239 printf "$FOUND_ALT_VARIABLES\n" 240 printf "\n" 241 fi 242 243 if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then 244 printf "WARNING: Your build output directory is not on a local disk.\n" 245 printf "This will severely degrade build performance!\n" 246 printf "It is recommended that you create an output directory on a local disk,\n" 247 printf "and run the configure script again from that directory.\n" 248 printf "\n" 249 fi 250 251 if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then 252 printf "WARNING: The result of this configuration has overridden an older\n" 253 printf "configuration. You *should* run 'make clean' to make sure you get a\n" 254 printf "proper build. Failure to do so might result in strange build problems.\n" 255 printf "\n" 256 fi 257 258 if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then 259 printf "WARNING: The result of this configuration was not saved.\n" 260 printf "You should run without '--no-create | -n' to create the configuration.\n" 261 printf "\n" 262 fi 263 ]) 264 265 AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS], 266 [ 267 # Locate config.log. 268 if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then 269 CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR" 270 elif test -e "./config.log"; then 271 CONFIG_LOG_PATH="." 272 fi 273 274 if test -e "$CONFIG_LOG_PATH/config.log"; then 275 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1 276 if test $? -eq 0; then 277 printf "The following warnings were produced. Repeated here for convenience:\n" 278 # We must quote sed expression (using []) to stop m4 from eating the []. 279 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ] 280 printf "\n" 281 fi 282 fi 283 ])