1 # 2 # Copyright (c) 2011, 2020, 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, zypper apt-get yum brew 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: cups, alsa etc 35 MISSING_DEPENDENCY=$1 36 37 if test "x$MISSING_DEPENDENCY" = "xopenjdk"; then 38 HELP_MSG="OpenJDK distributions are available at http://jdk.java.net/." 39 elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then 40 cygwin_help $MISSING_DEPENDENCY 41 elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then 42 msys_help $MISSING_DEPENDENCY 43 else 44 PKGHANDLER_COMMAND= 45 46 case $PKGHANDLER in 47 apt-get) 48 apt_help $MISSING_DEPENDENCY ;; 49 yum) 50 yum_help $MISSING_DEPENDENCY ;; 51 brew) 52 brew_help $MISSING_DEPENDENCY ;; 53 port) 54 port_help $MISSING_DEPENDENCY ;; 55 pkgutil) 56 pkgutil_help $MISSING_DEPENDENCY ;; 57 pkgadd) 58 pkgadd_help $MISSING_DEPENDENCY ;; 59 zypper) 60 zypper_help $MISSING_DEPENDENCY ;; 61 esac 62 63 if test "x$PKGHANDLER_COMMAND" != x; then 64 HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." 65 fi 66 fi 67 ]) 68 69 cygwin_help() { 70 case $1 in 71 unzip) 72 PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip )" 73 HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." 74 ;; 75 zip) 76 PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P zip )" 77 HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." 78 ;; 79 make) 80 PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P make )" 81 HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." 82 ;; 83 esac 84 } 85 86 msys_help() { 87 PKGHANDLER_COMMAND="" 88 } 89 90 apt_help() { 91 case $1 in 92 reduced) 93 PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;; 94 devkit) 95 PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;; 96 alsa) 97 PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;; 98 cups) 99 PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;; 100 fontconfig) 101 PKGHANDLER_COMMAND="sudo apt-get install libfontconfig1-dev" ;; 102 freetype) 103 PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;; 104 ffi) 105 PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;; 106 x11) 107 PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev" ;; 108 ccache) 109 PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; 110 dtrace) 111 PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;; 112 esac 113 } 114 115 zypper_help() { 116 case $1 in 117 devkit) 118 PKGHANDLER_COMMAND="sudo zypper install gcc gcc-c++" ;; 119 alsa) 120 PKGHANDLER_COMMAND="sudo zypper install alsa-devel" ;; 121 cups) 122 PKGHANDLER_COMMAND="sudo zypper install cups-devel" ;; 123 fontconfig) 124 PKGHANDLER_COMMAND="sudo zypper install fontconfig-devel" ;; 125 freetype) 126 PKGHANDLER_COMMAND="sudo zypper install freetype-devel" ;; 127 x11) 128 PKGHANDLER_COMMAND="sudo zypper install libX11-devel libXext-devel libXrender-devel libXrandr-devel libXtst-devel libXt-devel libXi-devel" ;; 129 ccache) 130 PKGHANDLER_COMMAND="sudo zypper install ccache" ;; 131 esac 132 } 133 134 yum_help() { 135 case $1 in 136 devkit) 137 PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;; 138 alsa) 139 PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;; 140 cups) 141 PKGHANDLER_COMMAND="sudo yum install cups-devel" ;; 142 fontconfig) 143 PKGHANDLER_COMMAND="sudo yum install fontconfig-devel" ;; 144 freetype) 145 PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;; 146 x11) 147 PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;; 148 ccache) 149 PKGHANDLER_COMMAND="sudo yum install ccache" ;; 150 esac 151 } 152 153 brew_help() { 154 case $1 in 155 freetype) 156 PKGHANDLER_COMMAND="brew install freetype" ;; 157 ccache) 158 PKGHANDLER_COMMAND="brew install ccache" ;; 159 esac 160 } 161 162 port_help() { 163 PKGHANDLER_COMMAND="" 164 } 165 166 pkgutil_help() { 167 PKGHANDLER_COMMAND="" 168 } 169 170 pkgadd_help() { 171 PKGHANDLER_COMMAND="" 172 } 173 174 # This function will check if we're called from the "configure" wrapper while 175 # printing --help. If so, we will print out additional information that can 176 # only be extracted within the autoconf script, and then exit. This must be 177 # called at the very beginning in configure.ac. 178 AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT], 179 [ 180 if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then 181 182 # Print available toolchains 183 $PRINTF "The following toolchains are valid as arguments to --with-toolchain-type.\n" 184 $PRINTF "Which are available to use depends on the build platform.\n" 185 for toolchain in $VALID_TOOLCHAINS_all; do 186 # Use indirect variable referencing 187 toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain 188 TOOLCHAIN_DESCRIPTION=${!toolchain_var_name} 189 $PRINTF " %-22s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION" 190 done 191 $PRINTF "\n" 192 193 # Print available JVM features 194 $PRINTF "The following JVM features are valid as arguments to --with-jvm-features.\n" 195 $PRINTF "Which are available to use depends on the environment and JVM variant.\n" 196 m4_foreach(FEATURE, m4_split(jvm_features_valid), [ 197 # Create an m4 variable containing the description for FEATURE. 198 m4_define(FEATURE_DESCRIPTION, [jvm_feature_desc_]m4_translit(FEATURE, -, _)) 199 $PRINTF " %-22s %s\n" FEATURE "FEATURE_DESCRIPTION" 200 m4_undefine([FEATURE_DESCRIPTION]) 201 ]) 202 203 # And now exit directly 204 exit 0 205 fi 206 ]) 207 208 AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS], 209 [ 210 # Finally output some useful information to the user 211 212 printf "\n" 213 printf "====================================================\n" 214 if test "x$no_create" != "xyes"; then 215 if test "x$IS_RECONFIGURE" != "xyes"; then 216 printf "A new configuration has been successfully created in\n%s\n" "$OUTPUTDIR" 217 else 218 printf "The existing configuration has been successfully updated in\n%s\n" "$OUTPUTDIR" 219 fi 220 else 221 if test "x$IS_RECONFIGURE" != "xyes"; then 222 printf "A configuration has been successfully checked but not created\n" 223 else 224 printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUTDIR" 225 fi 226 fi 227 if test "x$CONFIGURE_COMMAND_LINE" != x; then 228 printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n" 229 else 230 printf "using default settings.\n" 231 fi 232 233 printf "\n" 234 printf "Configuration summary:\n" 235 printf "* Debug level: $DEBUG_LEVEL\n" 236 printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n" 237 printf "* JVM variants: $JVM_VARIANTS\n" 238 printf "* JVM features: " 239 240 for variant in $JVM_VARIANTS; do 241 features_var_name=JVM_FEATURES_$variant 242 JVM_FEATURES_FOR_VARIANT=${!features_var_name} 243 printf "$variant: \'$JVM_FEATURES_FOR_VARIANT\' " 244 done 245 printf "\n" 246 247 printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n" 248 printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n" 249 250 printf "\n" 251 printf "Tools summary:\n" 252 if test "x$OPENJDK_BUILD_OS" = "xwindows"; then 253 printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION. Windows version $WINDOWS_VERSION" 254 if test "x$WINDOWS_ENV_ROOT_PATH" != "x"; then 255 printf ". Root at $WINDOWS_ENV_ROOT_PATH" 256 fi 257 printf "\n" 258 fi 259 printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n" 260 printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)\n" 261 printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n" 262 printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n" 263 264 printf "\n" 265 printf "Build performance summary:\n" 266 printf "* Cores to use: $JOBS\n" 267 printf "* Memory limit: $MEMORY_SIZE MB\n" 268 if test "x$CCACHE_STATUS" != "x"; then 269 printf "* ccache status: $CCACHE_STATUS\n" 270 fi 271 printf "\n" 272 273 if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then 274 printf "NOTE: You have requested to build more than one version of the JVM, which\n" 275 printf "will result in longer build times.\n" 276 printf "\n" 277 fi 278 279 if test "x$FOUND_ALT_VARIABLES" != "x"; then 280 printf "WARNING: You have old-style ALT_ environment variables set.\n" 281 printf "These are not respected, and will be ignored. It is recommended\n" 282 printf "that you clean your environment. The following variables are set:\n" 283 printf "$FOUND_ALT_VARIABLES\n" 284 printf "\n" 285 fi 286 287 if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then 288 printf "WARNING: Your build output directory is not on a local disk.\n" 289 printf "This will severely degrade build performance!\n" 290 printf "It is recommended that you create an output directory on a local disk,\n" 291 printf "and run the configure script again from that directory.\n" 292 printf "\n" 293 fi 294 295 if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then 296 printf "WARNING: The result of this configuration has overridden an older\n" 297 printf "configuration. You *should* run 'make clean' to make sure you get a\n" 298 printf "proper build. Failure to do so might result in strange build problems.\n" 299 printf "\n" 300 fi 301 302 if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then 303 printf "WARNING: The result of this configuration was not saved.\n" 304 printf "You should run without '--no-create | -n' to create the configuration.\n" 305 printf "\n" 306 fi 307 308 if test "x$UNSUPPORTED_TOOLCHAIN_VERSION" = "xyes"; then 309 printf "WARNING: The toolchain version used is known to have issues. Please\n" 310 printf "consider using a supported version unless you know what you are doing.\n" 311 printf "\n" 312 fi 313 ]) 314 315 AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS], 316 [ 317 # Locate config.log. 318 if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then 319 CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR" 320 elif test -e "./config.log"; then 321 CONFIG_LOG_PATH="." 322 fi 323 324 if test -e "$CONFIG_LOG_PATH/config.log"; then 325 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1 326 if test $? -eq 0; then 327 printf "The following warnings were produced. Repeated here for convenience:\n" 328 # We must quote sed expression (using []) to stop m4 from eating the []. 329 $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ] 330 printf "\n" 331 fi 332 fi 333 ])