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