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