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 ################################################################################ 27 # Build the freetype lib from source 28 ################################################################################ 29 AC_DEFUN([LIB_BUILD_FREETYPE], 30 [ 31 FREETYPE_SRC_PATH="$1" 32 BUILD_FREETYPE=yes 33 34 # Check if the freetype sources are acessible.. 35 if ! test -d $FREETYPE_SRC_PATH; then 36 AC_MSG_WARN([--with-freetype-src specified, but can not find path "$FREETYPE_SRC_PATH" - ignoring --with-freetype-src]) 37 BUILD_FREETYPE=no 38 fi 39 # ..and contain a vc2010 project file 40 vcxproj_path="$FREETYPE_SRC_PATH/builds/windows/vc2010/freetype.vcxproj" 41 if test "x$BUILD_FREETYPE" = xyes && ! test -s $vcxproj_path; then 42 AC_MSG_WARN([Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src]) 43 BUILD_FREETYPE=no 44 fi 45 # Now check if configure found a version of 'msbuild.exe' 46 if test "x$BUILD_FREETYPE" = xyes && test "x$MSBUILD" == x ; then 47 AC_MSG_WARN([Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src]) 48 BUILD_FREETYPE=no 49 fi 50 51 # Ready to go.. 52 if test "x$BUILD_FREETYPE" = xyes; then 53 # msbuild requires trailing slashes for output directories 54 freetype_lib_path="$FREETYPE_SRC_PATH/lib$OPENJDK_TARGET_CPU_BITS/" 55 freetype_lib_path_unix="$freetype_lib_path" 56 freetype_obj_path="$FREETYPE_SRC_PATH/obj$OPENJDK_TARGET_CPU_BITS/" 57 BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(vcxproj_path) 58 BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(freetype_lib_path) 59 BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(freetype_obj_path) 60 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 61 freetype_platform=x64 62 else 63 freetype_platform=win32 64 fi 65 66 # The original freetype project file is for VS 2010 (i.e. 'v100'), 67 # so we have to adapt the toolset if building with any other toolsed (i.e. SDK). 68 # Currently 'PLATFORM_TOOLSET' is set in 'TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT'/ 69 # 'TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT' in toolchain_windows.m4 70 AC_MSG_NOTICE([Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ...]) 71 72 # First we try to build the freetype.dll 73 $ECHO -e "@echo off\n"\ 74 "$MSBUILD $vcxproj_path "\ 75 "/p:PlatformToolset=$PLATFORM_TOOLSET "\ 76 "/p:Configuration=\"Release Multithreaded\" "\ 77 "/p:Platform=$freetype_platform "\ 78 "/p:ConfigurationType=DynamicLibrary "\ 79 "/p:TargetName=freetype "\ 80 "/p:OutDir=\"$freetype_lib_path\" "\ 81 "/p:IntDir=\"$freetype_obj_path\" > freetype.log" > freetype.bat 82 cmd /c freetype.bat 83 84 if test -s "$freetype_lib_path_unix/freetype.dll"; then 85 # If that succeeds we also build freetype.lib 86 $ECHO -e "@echo off\n"\ 87 "$MSBUILD $vcxproj_path "\ 88 "/p:PlatformToolset=$PLATFORM_TOOLSET "\ 89 "/p:Configuration=\"Release Multithreaded\" "\ 90 "/p:Platform=$freetype_platform "\ 91 "/p:ConfigurationType=StaticLibrary "\ 92 "/p:TargetName=freetype "\ 93 "/p:OutDir=\"$freetype_lib_path\" "\ 94 "/p:IntDir=\"$freetype_obj_path\" >> freetype.log" > freetype.bat 95 cmd /c freetype.bat 96 97 if test -s "$freetype_lib_path_unix/freetype.lib"; then 98 # Once we build both, lib and dll, set freetype lib and include path appropriately 99 POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_SRC_PATH/include" 100 POTENTIAL_FREETYPE_LIB_PATH="$freetype_lib_path_unix" 101 AC_MSG_NOTICE([Compiling freetype sources succeeded! (see freetype.log for build results)]) 102 else 103 BUILD_FREETYPE=no 104 fi 105 else 106 BUILD_FREETYPE=no 107 fi 108 fi 109 ]) 110 111 ################################################################################ 112 # Check if a potential freeype library match is correct and usable 113 ################################################################################ 114 AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE], 115 [ 116 POTENTIAL_FREETYPE_INCLUDE_PATH="$1" 117 POTENTIAL_FREETYPE_LIB_PATH="$2" 118 METHOD="$3" 119 120 # Let's start with an optimistic view of the world :-) 121 FOUND_FREETYPE=yes 122 123 # First look for the canonical freetype main include file ft2build.h. 124 if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then 125 # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite. 126 POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2" 127 if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then 128 # Fail. 129 FOUND_FREETYPE=no 130 fi 131 fi 132 133 if test "x$FOUND_FREETYPE" = xyes; then 134 # Include file found, let's continue the sanity check. 135 AC_MSG_NOTICE([Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD]) 136 137 # Reset to default value 138 FREETYPE_BASE_NAME=freetype 139 FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}" 140 if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then 141 if test "x$OPENJDK_TARGET_OS" = xmacosx \ 142 && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then 143 # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check 144 # for the .6 version explicitly. 145 FREETYPE_BASE_NAME=freetype.6 146 FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}" 147 AC_MSG_NOTICE([Compensating for missing symlink by using version 6 explicitly]) 148 else 149 AC_MSG_NOTICE([Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location.]) 150 FOUND_FREETYPE=no 151 fi 152 else 153 if test "x$OPENJDK_TARGET_OS" = xwindows; then 154 # On Windows, we will need both .lib and .dll file. 155 if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then 156 AC_MSG_NOTICE([Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location.]) 157 FOUND_FREETYPE=no 158 fi 159 elif test "x$OPENJDK_TARGET_OS" = xsolaris \ 160 && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then 161 # Found lib in isa dir, use that instead. 162 POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR" 163 AC_MSG_NOTICE([Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead]) 164 fi 165 fi 166 fi 167 168 if test "x$FOUND_FREETYPE" = xyes; then 169 BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_INCLUDE_PATH) 170 BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_LIB_PATH) 171 172 FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH" 173 AC_MSG_CHECKING([for freetype includes]) 174 AC_MSG_RESULT([$FREETYPE_INCLUDE_PATH]) 175 FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH" 176 AC_MSG_CHECKING([for freetype libraries]) 177 AC_MSG_RESULT([$FREETYPE_LIB_PATH]) 178 fi 179 ]) 180 181 ################################################################################ 182 # Setup freetype (The FreeType2 font rendering library) 183 ################################################################################ 184 AC_DEFUN_ONCE([LIB_SETUP_FREETYPE], 185 [ 186 AC_ARG_WITH(freetype, [AS_HELP_STRING([--with-freetype], 187 [specify prefix directory for the freetype package 188 (expecting the libraries under PATH/lib and the headers under PATH/include)])]) 189 AC_ARG_WITH(freetype-include, [AS_HELP_STRING([--with-freetype-include], 190 [specify directory for the freetype include files])]) 191 AC_ARG_WITH(freetype-lib, [AS_HELP_STRING([--with-freetype-lib], 192 [specify directory for the freetype library])]) 193 AC_ARG_WITH(freetype-src, [AS_HELP_STRING([--with-freetype-src], 194 [specify directory with freetype sources to automatically build the library (experimental, Windows-only)])]) 195 AC_ARG_ENABLE(freetype-bundling, [AS_HELP_STRING([--disable-freetype-bundling], 196 [disable bundling of the freetype library with the build result @<:@enabled on Windows or when using --with-freetype, disabled otherwise@:>@])]) 197 AC_ARG_WITH(freetype-license, [AS_HELP_STRING([--with-freetype-license], 198 [if bundling freetype, also bundle this license file])]) 199 200 # Need to specify explicitly since it needs to be overridden on some versions of macosx 201 FREETYPE_BASE_NAME=freetype 202 FREETYPE_CFLAGS= 203 FREETYPE_LIBS= 204 FREETYPE_BUNDLE_LIB_PATH= 205 206 if test "x$NEEDS_LIB_FREETYPE" = xfalse; then 207 if (test "x$with_freetype" != x && test "x$with_freetype" != xno) || \ 208 (test "x$with_freetype_include" != x && test "x$with_freetype_include" != xno) || \ 209 (test "x$with_freetype_lib" != x && test "x$with_freetype_lib" != xno) || \ 210 (test "x$with_freetype_src" != x && test "x$with_freetype_src" != xno); then 211 AC_MSG_WARN([[freetype not used, so --with-freetype[-*] is ignored]]) 212 fi 213 if (test "x$enable_freetype_bundling" != x && test "x$enable_freetype_bundling" != xno); then 214 AC_MSG_WARN([freetype not used, so --enable-freetype-bundling is ignored]) 215 fi 216 else 217 # freetype is needed to build; go get it! 218 219 BUNDLE_FREETYPE="$enable_freetype_bundling" 220 221 if test "x$with_freetype_src" != x; then 222 if test "x$OPENJDK_TARGET_OS" = xwindows; then 223 # Try to build freetype if --with-freetype-src was given on Windows 224 LIB_BUILD_FREETYPE([$with_freetype_src]) 225 if test "x$BUILD_FREETYPE" = xyes; then 226 # Okay, we built it. Check that it works. 227 LIB_CHECK_POTENTIAL_FREETYPE($POTENTIAL_FREETYPE_INCLUDE_PATH, $POTENTIAL_FREETYPE_LIB_PATH, [--with-freetype-src]) 228 if test "x$FOUND_FREETYPE" != xyes; then 229 AC_MSG_ERROR([Can not use the built freetype at location given by --with-freetype-src]) 230 fi 231 else 232 AC_MSG_NOTICE([User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)]) 233 AC_MSG_ERROR([Consider building freetype manually and using --with-freetype instead.]) 234 fi 235 else 236 AC_MSG_WARN([--with-freetype-src is currently only supported on Windows - ignoring]) 237 fi 238 fi 239 240 if test "x$with_freetype" != x || test "x$with_freetype_include" != x || test "x$with_freetype_lib" != x; then 241 # User has specified settings 242 243 if test "x$BUNDLE_FREETYPE" = x; then 244 # If not specified, default is to bundle freetype 245 BUNDLE_FREETYPE=yes 246 fi 247 248 if test "x$with_freetype" != x; then 249 POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype/include" 250 POTENTIAL_FREETYPE_LIB_PATH="$with_freetype/lib" 251 fi 252 253 # Allow --with-freetype-lib and --with-freetype-include to override 254 if test "x$with_freetype_include" != x; then 255 POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype_include" 256 fi 257 if test "x$with_freetype_lib" != x; then 258 POTENTIAL_FREETYPE_LIB_PATH="$with_freetype_lib" 259 fi 260 261 if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x && test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then 262 # Okay, we got it. Check that it works. 263 LIB_CHECK_POTENTIAL_FREETYPE($POTENTIAL_FREETYPE_INCLUDE_PATH, $POTENTIAL_FREETYPE_LIB_PATH, [--with-freetype]) 264 if test "x$FOUND_FREETYPE" != xyes; then 265 AC_MSG_ERROR([Can not find or use freetype at location given by --with-freetype]) 266 fi 267 else 268 # User specified only one of lib or include. This is an error. 269 if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" = x ; then 270 AC_MSG_NOTICE([User specified --with-freetype-lib but not --with-freetype-include]) 271 AC_MSG_ERROR([Need both freetype lib and include paths. Consider using --with-freetype instead.]) 272 else 273 AC_MSG_NOTICE([User specified --with-freetype-include but not --with-freetype-lib]) 274 AC_MSG_ERROR([Need both freetype lib and include paths. Consider using --with-freetype instead.]) 275 fi 276 fi 277 else 278 # User did not specify settings, but we need freetype. Try to locate it. 279 280 if test "x$BUNDLE_FREETYPE" = x; then 281 # If not specified, default is to bundle freetype only on windows 282 if test "x$OPENJDK_TARGET_OS" = xwindows; then 283 BUNDLE_FREETYPE=yes 284 else 285 BUNDLE_FREETYPE=no 286 fi 287 fi 288 289 # If we have a sysroot, assume that's where we are supposed to look and skip pkg-config. 290 if test "x$SYSROOT" = x; then 291 if test "x$FOUND_FREETYPE" != xyes; then 292 # Check modules using pkg-config, but only if we have it (ugly output results otherwise) 293 if test "x$PKG_CONFIG" != x; then 294 PKG_CHECK_MODULES(FREETYPE, freetype2, [FOUND_FREETYPE=yes], [FOUND_FREETYPE=no]) 295 if test "x$FOUND_FREETYPE" = xyes; then 296 # On solaris, pkg_check adds -lz to freetype libs, which isn't necessary for us. 297 FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's/-lz//g'` 298 # 64-bit libs for Solaris x86 are installed in the amd64 subdirectory, change lib to lib/amd64 299 if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64; then 300 FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's?/lib?/lib/amd64?g'` 301 fi 302 # PKG_CHECK_MODULES will set FREETYPE_CFLAGS and _LIBS, but we don't get a lib path for bundling. 303 if test "x$BUNDLE_FREETYPE" = xyes; then 304 AC_MSG_NOTICE([Found freetype using pkg-config, but ignoring since we can not bundle that]) 305 FOUND_FREETYPE=no 306 else 307 AC_MSG_CHECKING([for freetype]) 308 AC_MSG_RESULT([yes (using pkg-config)]) 309 fi 310 fi 311 fi 312 fi 313 fi 314 315 if test "x$FOUND_FREETYPE" != xyes; then 316 # Check in well-known locations 317 if test "x$OPENJDK_TARGET_OS" = xwindows; then 318 FREETYPE_BASE_DIR="$PROGRAMFILES/GnuWin32" 319 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR) 320 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 321 if test "x$FOUND_FREETYPE" != xyes; then 322 FREETYPE_BASE_DIR="$ProgramW6432/GnuWin32" 323 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR) 324 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 325 fi 326 if test "x$FOUND_FREETYPE" != xyes; then 327 FREETYPE_BASE_DIR="$HOME/freetype" 328 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR) 329 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 330 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib64], [well-known location]) 331 else 332 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location]) 333 fi 334 if test "x$FOUND_FREETYPE" != xyes && test -d $FREETYPE_BASE_DIR \ 335 && test -s "$FREETYPE_BASE_DIR/builds/windows/vc2010/freetype.vcxproj" && test "x$MSBUILD" != x; then 336 # Source is available, as a last resort try to build freetype in default location 337 LIB_BUILD_FREETYPE($FREETYPE_BASE_DIR) 338 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 339 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib64], [well-known location]) 340 else 341 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location]) 342 fi 343 fi 344 fi 345 else 346 FREETYPE_BASE_DIR="$SYSROOT/usr" 347 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 348 349 if test "x$FOUND_FREETYPE" != xyes; then 350 FREETYPE_BASE_DIR="$SYSROOT/usr/X11" 351 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 352 fi 353 if test "x$FOUND_FREETYPE" != xyes; then 354 FREETYPE_BASE_DIR="$SYSROOT/usr/local" 355 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 356 fi 357 358 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 359 if test "x$FOUND_FREETYPE" != xyes; then 360 # Due to changes in OSX 10.11 XQuartz now installs to /opt/X11 361 FREETYPE_BASE_DIR="$SYSROOT/opt/X11" 362 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location]) 363 fi 364 fi 365 366 if test "x$FOUND_FREETYPE" != xyes; then 367 FREETYPE_BASE_DIR="$SYSROOT/usr" 368 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 369 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/$OPENJDK_TARGET_CPU-linux-gnu], [well-known location]) 370 else 371 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/i386-linux-gnu], [well-known location]) 372 if test "x$FOUND_FREETYPE" != xyes; then 373 LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location]) 374 fi 375 fi 376 fi 377 fi 378 fi # end check in well-known locations 379 380 if test "x$FOUND_FREETYPE" != xyes; then 381 HELP_MSG_MISSING_DEPENDENCY([freetype]) 382 AC_MSG_ERROR([Could not find freetype! $HELP_MSG ]) 383 fi 384 fi # end user specified settings 385 386 # Set FREETYPE_CFLAGS, _LIBS and _LIB_PATH from include and lib dir. 387 if test "x$FREETYPE_CFLAGS" = x; then 388 BASIC_FIXUP_PATH(FREETYPE_INCLUDE_PATH) 389 if test -d $FREETYPE_INCLUDE_PATH/freetype2/freetype; then 390 FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH/freetype2 -I$FREETYPE_INCLUDE_PATH" 391 else 392 FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH" 393 fi 394 fi 395 396 if test "x$FREETYPE_LIBS" = x; then 397 BASIC_FIXUP_PATH(FREETYPE_LIB_PATH) 398 if test "x$OPENJDK_TARGET_OS" = xwindows; then 399 FREETYPE_LIBS="$FREETYPE_LIB_PATH/$FREETYPE_BASE_NAME.lib" 400 else 401 FREETYPE_LIBS="-L$FREETYPE_LIB_PATH -l$FREETYPE_BASE_NAME" 402 fi 403 fi 404 405 # Try to compile it 406 AC_MSG_CHECKING([if we can compile and link with freetype]) 407 AC_LANG_PUSH(C++) 408 PREV_CXXCFLAGS="$CXXFLAGS" 409 PREV_LIBS="$LIBS" 410 PREV_CXX="$CXX" 411 CXXFLAGS="$CXXFLAGS $FREETYPE_CFLAGS" 412 LIBS="$LIBS $FREETYPE_LIBS" 413 CXX="$FIXPATH $CXX" 414 AC_LINK_IFELSE([AC_LANG_SOURCE([[ 415 #include<ft2build.h> 416 #include FT_FREETYPE_H 417 int main () { 418 FT_Init_FreeType(NULL); 419 return 0; 420 } 421 ]])], 422 [ 423 AC_MSG_RESULT([yes]) 424 ], 425 [ 426 AC_MSG_RESULT([no]) 427 AC_MSG_NOTICE([Could not compile and link with freetype. This might be a 32/64-bit mismatch.]) 428 AC_MSG_NOTICE([Using FREETYPE_CFLAGS=$FREETYPE_CFLAGS and FREETYPE_LIBS=$FREETYPE_LIBS]) 429 430 HELP_MSG_MISSING_DEPENDENCY([freetype]) 431 432 AC_MSG_ERROR([Can not continue without freetype. $HELP_MSG]) 433 ] 434 ) 435 CXXCFLAGS="$PREV_CXXFLAGS" 436 LIBS="$PREV_LIBS" 437 CXX="$PREV_CXX" 438 AC_LANG_POP(C++) 439 440 AC_MSG_CHECKING([if we should bundle freetype]) 441 if test "x$BUNDLE_FREETYPE" = xyes; then 442 FREETYPE_BUNDLE_LIB_PATH="$FREETYPE_LIB_PATH" 443 fi 444 AC_MSG_RESULT([$BUNDLE_FREETYPE]) 445 446 if test "x$BUNDLE_FREETYPE" = xyes; then 447 FREETYPE_LICENSE="" 448 AC_MSG_CHECKING([for freetype license]) 449 if test "x$with_freetype_license" = "xyes"; then 450 AC_MSG_RESULT([no]) 451 AC_MSG_ERROR([--with-freetype-license must have a value]) 452 elif test "x$with_freetype_license" != "x"; then 453 AC_MSG_RESULT([$with_freetype_license]) 454 FREETYPE_LICENSE="$with_freetype_license" 455 BASIC_FIXUP_PATH(FREETYPE_LICENSE) 456 if test ! -f "$FREETYPE_LICENSE"; then 457 AC_MSG_ERROR([$FREETYPE_LICENSE cannot be found]) 458 fi 459 else 460 if test "x$with_freetype" != "x" && test -f $with_freetype/freetype.md; then 461 FREETYPE_LICENSE="$with_freetype/freetype.md" 462 AC_MSG_RESULT([$FREETYPE_LICENSE]) 463 BASIC_FIXUP_PATH(FREETYPE_LICENSE) 464 else 465 AC_MSG_RESULT([no]) 466 fi 467 fi 468 fi 469 470 fi # end freetype needed 471 472 AC_SUBST(FREETYPE_BUNDLE_LIB_PATH) 473 AC_SUBST(FREETYPE_CFLAGS) 474 AC_SUBST(FREETYPE_LIBS) 475 AC_SUBST(FREETYPE_LICENSE) 476 ])