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