Wed, 18 Apr 2018 02:21:14 -0700
8057538: Build the freetype library during configure on Windows
Reviewed-by: simonis, erikj, ihse
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 #
26 AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
27 [
28 AC_CHECK_PROGS(PKGHANDLER, apt-get yum port pkgutil pkgadd)
29 ])
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, pulse, alsa etc
35 MISSING_DEPENDENCY=$1
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=
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
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 ])
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:
82 wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
83 tar -xzf freetype-2.5.3.tar.gz
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 esac
92 }
94 msys_help() {
95 PKGHANDLER_COMMAND=""
96 }
98 apt_help() {
99 case $1 in
100 devkit)
101 PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
102 openjdk)
103 PKGHANDLER_COMMAND="sudo apt-get install openjdk-7-jdk" ;;
104 alsa)
105 PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
106 cups)
107 PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;;
108 freetype)
109 PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
110 pulse)
111 PKGHANDLER_COMMAND="sudo apt-get install libpulse-dev" ;;
112 x11)
113 PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
114 ccache)
115 PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
116 esac
117 }
119 yum_help() {
120 case $1 in
121 devkit)
122 PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
123 openjdk)
124 PKGHANDLER_COMMAND="sudo yum install java-1.7.0-openjdk" ;;
125 alsa)
126 PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
127 cups)
128 PKGHANDLER_COMMAND="sudo yum install cups-devel" ;;
129 freetype)
130 PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
131 pulse)
132 PKGHANDLER_COMMAND="sudo yum install pulseaudio-libs-devel" ;;
133 x11)
134 PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel" ;;
135 ccache)
136 PKGHANDLER_COMMAND="sudo yum install ccache" ;;
137 esac
138 }
140 port_help() {
141 PKGHANDLER_COMMAND=""
142 }
144 pkgutil_help() {
145 PKGHANDLER_COMMAND=""
146 }
148 pkgadd_help() {
149 PKGHANDLER_COMMAND=""
150 }
152 # This function will check if we're called from the "configure" wrapper while
153 # printing --help. If so, we will print out additional information that can
154 # only be extracted within the autoconf script, and then exit. This must be
155 # called at the very beginning in configure.ac.
156 AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
157 [
158 if test "x$CONFIGURE_PRINT_TOOLCHAIN_LIST" != x; then
159 $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
160 $PRINTF "Which are valid to use depends on the build platform.\n"
161 for toolchain in $VALID_TOOLCHAINS_all; do
162 # Use indirect variable referencing
163 toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
164 TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
165 $PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
166 done
168 # And now exit directly
169 exit 0
170 fi
171 ])
173 AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
174 [
175 # Finally output some useful information to the user
177 printf "\n"
178 printf "====================================================\n"
179 printf "A new configuration has been successfully created in\n"
180 printf "$OUTPUT_ROOT\n"
181 if test "x$CONFIGURE_COMMAND_LINE" != x; then
182 printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
183 else
184 printf "using default settings.\n"
185 fi
187 printf "\n"
188 printf "Configuration summary:\n"
189 printf "* Debug level: $DEBUG_LEVEL\n"
190 printf "* JDK variant: $JDK_VARIANT\n"
191 printf "* JVM variants: $with_jvm_variants\n"
192 printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
194 printf "\n"
195 printf "Tools summary:\n"
196 if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
197 printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
198 fi
199 printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
200 printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)\n"
201 printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n"
202 printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n"
204 printf "\n"
205 printf "Build performance summary:\n"
206 printf "* Cores to use: $JOBS\n"
207 printf "* Memory limit: $MEMORY_SIZE MB\n"
208 if test "x$CCACHE_STATUS" != "x"; then
209 printf "* ccache status: $CCACHE_STATUS\n"
210 fi
211 printf "\n"
213 if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then
214 printf "NOTE: You have requested to build more than one version of the JVM, which\n"
215 printf "will result in longer build times.\n"
216 printf "\n"
217 fi
219 if test "x$FOUND_ALT_VARIABLES" != "x"; then
220 printf "WARNING: You have old-style ALT_ environment variables set.\n"
221 printf "These are not respected, and will be ignored. It is recommended\n"
222 printf "that you clean your environment. The following variables are set:\n"
223 printf "$FOUND_ALT_VARIABLES\n"
224 printf "\n"
225 fi
227 if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
228 printf "WARNING: Your build output directory is not on a local disk.\n"
229 printf "This will severely degrade build performance!\n"
230 printf "It is recommended that you create an output directory on a local disk,\n"
231 printf "and run the configure script again from that directory.\n"
232 printf "\n"
233 fi
235 if test "x$IS_RECONFIGURE" = "xyes"; then
236 printf "WARNING: The result of this configuration has overridden an older\n"
237 printf "configuration. You *should* run 'make clean' to make sure you get a\n"
238 printf "proper build. Failure to do so might result in strange build problems.\n"
239 printf "\n"
240 fi
241 ])