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