1dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*- 2dnl configure.ac serves as input for the GNU autoconf package 3dnl in order to create a configure script. 4 5# The version number in the second argument to AC_INIT should be four numbers separated by 6# periods. Some parts of the code requires the first one to be less than 128 and the others to be less 7# than 256. The four numbers can optionally be followed by a period and a free-form string containing 8# no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or 9# several non-alphanumeric characters, those are split off and used only for the 10# ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea. 11 12AC_INIT([LibreOffice],[7.2.0.0.alpha0+],[],[],[http://documentfoundation.org/]) 13 14dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed 15dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard 16dnl so check for the version of autoconf that is actually used to create the configure script 17AC_PREREQ([2.59]) 18m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1, 19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])]) 20 21if test -n "$BUILD_TYPE"; then 22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.]) 23fi 24 25save_CC=$CC 26save_CXX=$CXX 27 28first_arg_basename() 29{ 30 for i in $1; do 31 basename "$i" 32 break 33 done 34} 35 36CC_BASE=`first_arg_basename "$CC"` 37CXX_BASE=`first_arg_basename "$CXX"` 38 39BUILD_TYPE="LibO" 40SCPDEFS="" 41GIT_NEEDED_SUBMODULES="" 42LO_PATH= # used by path_munge to construct a PATH variable 43 44FilterLibs() 45{ 46 # Return value: $filteredlibs 47 48 filteredlibs= 49 for f in $1; do 50 case "$f" in 51 # let's start with Fedora's paths for now 52 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/) 53 # ignore it: on UNIXoids it is searched by default anyway 54 # but if it's given explicitly then it may override other paths 55 # (on macOS it would be an error to use it instead of SDK) 56 ;; 57 *) 58 filteredlibs="$filteredlibs $f" 59 ;; 60 esac 61 done 62} 63 64PathFormat() 65{ 66 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this 67 # function is called also on Unix. 68 # 69 # Return value: $formatted_path and $formatted_path_unix. 70 # 71 # $formatted_path is the argument in Windows format, but using forward slashes instead of 72 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces 73 # or shell metacharacters). 74 # 75 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if 76 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a 77 # Unix pathname. 78 # 79 # Errors out if 8.3 names are needed but aren't present for some of the path components. 80 81 # Examples: 82 # 83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised 84 # 85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe 86 # 87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1 88 # 89 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt 90 # 91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10 92 # 93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/ 94 # 95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe 96 97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then 98 printf "PathFormat $1 ==> " 99 fi 100 101 formatted_path="$1" 102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then 103 if test "$build_os" = "wsl"; then 104 formatted_path=$(echo "$formatted_path" | tr -d '\r') 105 fi 106 107 pf_conv_to_dos= 108 # spaces,parentheses,brackets,braces are problematic in pathname 109 # so are backslashes 110 case "$formatted_path" in 111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* ) 112 pf_conv_to_dos="yes" 113 ;; 114 esac 115 if test "$pf_conv_to_dos" = "yes"; then 116 if test "$build_os" = "wsl"; then 117 case "$formatted_path" in 118 /*) 119 formatted_path=$(wslpath -w "$formatted_path") 120 ;; 121 esac 122 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path") 123 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 124 formatted_path=`cygpath -sm "$formatted_path"` 125 else 126 formatted_path=`cygpath -d "$formatted_path"` 127 fi 128 if test $? -ne 0; then 129 AC_MSG_ERROR([path conversion failed for "$1".]) 130 fi 131 fi 132 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"` 133 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"` 134 if test "$fp_count_slash$fp_count_colon" != "00"; then 135 if test "$fp_count_colon" = "0"; then 136 new_formatted_path=`realpath "$formatted_path"` 137 if test $? -ne 0; then 138 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.]) 139 else 140 formatted_path="$new_formatted_path" 141 fi 142 fi 143 if test "$build_os" = "wsl"; then 144 if test "$fp_count_colon" != "0"; then 145 formatted_path=$(wslpath "$formatted_path") 146 local final_slash= 147 case "$formatted_path" in 148 */) 149 final_slash=/ 150 ;; 151 esac 152 formatted_path=$(wslpath -m $formatted_path) 153 case "$formatted_path" in 154 */) 155 ;; 156 *) 157 formatted_path="$formatted_path"$final_slash 158 ;; 159 esac 160 else 161 formatted_path=$(wslpath -m "$formatted_path") 162 fi 163 else 164 formatted_path=`cygpath -m "$formatted_path"` 165 fi 166 if test $? -ne 0; then 167 AC_MSG_ERROR([path conversion failed for "$1".]) 168 fi 169 fi 170 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"` 171 if test "$fp_count_space" != "0"; then 172 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?]) 173 fi 174 fi 175 if test "$build_os" = "wsl"; then 176 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format 177 formatted_path_unix=$(wslpath "$formatted_path") 178 else 179 # But Cygwin can 180 formatted_path_unix="$formatted_path" 181 fi 182} 183 184AbsolutePath() 185{ 186 # There appears to be no simple and portable method to get an absolute and 187 # canonical path, so we try creating the directory if does not exist and 188 # utilizing the shell and pwd. 189 190 # Args: $1: A possibly relative pathname 191 # Return value: $absolute_path 192 193 local rel="$1" 194 absolute_path="" 195 test ! -e "$rel" && mkdir -p "$rel" 196 if test -d "$rel" ; then 197 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".]) 198 absolute_path="$(pwd)" 199 cd - > /dev/null 200 else 201 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.]) 202 fi 203} 204 205rm -f warn 206have_WARNINGS="no" 207add_warning() 208{ 209 if test "$have_WARNINGS" = "no"; then 210 echo "*************************************" > warn 211 have_WARNINGS="yes" 212 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then 213 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@ 214 COLORWARN='*@<:@1;33;40m WARNING @<:@0m:' 215 else 216 COLORWARN="* WARNING :" 217 fi 218 fi 219 echo "$COLORWARN $@" >> warn 220} 221 222dnl Some Mac User have the bad habit of letting a lot of crap 223dnl accumulate in their PATH and even adding stuff in /usr/local/bin 224dnl that confuse the build. 225dnl For the ones that use LODE, let's be nice and protect them 226dnl from themselves 227 228mac_sanitize_path() 229{ 230 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin" 231dnl a common but nevertheless necessary thing that may be in a fancy 232dnl path location is git, so make sure we have it 233 mac_git_path=`which git 2>/dev/null` 234 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then 235 mac_path="$mac_path:`dirname $mac_git_path`" 236 fi 237dnl a not so common but nevertheless quite helpful thing that may be in a fancy 238dnl path location is gpg, so make sure we find it 239 mac_gpg_path=`which gpg 2>/dev/null` 240 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then 241 mac_path="$mac_path:`dirname $mac_gpg_path`" 242 fi 243 PATH="$mac_path" 244 unset mac_path 245 unset mac_git_path 246 unset mac_gpg_path 247} 248 249echo "********************************************************************" 250echo "*" 251echo "* Running ${PACKAGE_NAME} build configuration." 252echo "*" 253echo "********************************************************************" 254echo "" 255 256dnl =================================================================== 257dnl checks build and host OSes 258dnl do this before argument processing to allow for platform dependent defaults 259dnl =================================================================== 260 261# Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for 262# Linux on WSL) trust that. 263if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then 264 ac_cv_host="x86_64-pc-wsl" 265 ac_cv_host_cpu="x86_64" 266 ac_cv_host_os="wsl" 267 ac_cv_build="$ac_cv_host" 268 ac_cv_build_cpu="$ac_cv_host_cpu" 269 ac_cv_build_os="$ac_cv_host_os" 270 271 # Emulation of Cygwin's cygpath command for WSL. 272 cygpath() 273 { 274 if test -n "$UNITTEST_WSL_CYGPATH"; then 275 echo -n cygpath "$@" "==> " 276 fi 277 278 # Cygwin's real cygpath has a plethora of options but we use only a few here. 279 local args="$@" 280 local opt 281 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p 282 OPTIND=1 283 284 while getopts dmuwlsp opt; do 285 case "$opt" in 286 \?) 287 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args]) 288 ;; 289 ?) 290 eval opt_$opt=yes 291 ;; 292 esac 293 done 294 295 shift $((OPTIND-1)) 296 297 if test $# -ne 1; then 298 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]); 299 fi 300 301 local input="$1" 302 303 local result 304 305 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then 306 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m) 307 308 if test -n "$opt_u"; then 309 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested]) 310 fi 311 312 case "$input" in 313 /mnt/*) 314 # A Windows file in WSL format 315 input=$(wslpath -w "$input") 316 ;; 317 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*) 318 # Already in Windows format 319 ;; 320 /*) 321 input=$(wslpath -w "$input") 322 ;; 323 *) 324 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute]) 325 ;; 326 esac 327 if test -n "$opt_d" -o -n "$opt_s"; then 328 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input") 329 fi 330 if test -n "$opt_m"; then 331 input="${input//\\//}" 332 fi 333 echo "$input" 334 else 335 # Print Unix path 336 337 case "$input" in 338 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*) 339 wslpath -u "$input" 340 ;; 341 /) 342 echo "$input" 343 ;; 344 *) 345 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute]) 346 ;; 347 esac 348 fi 349 } 350 351 if test -n "$UNITTEST_WSL_CYGPATH"; then 352 BUILDDIR=. 353 354 # Nothing special with these file names, just arbitrary ones picked to test with 355 cygpath -d /usr/lib64/ld-linux-x86-64.so.2 356 cygpath -w /usr/lib64/ld-linux-x86-64.so.2 357 cygpath -m /usr/lib64/ld-linux-x86-64.so.2 358 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2 359 # At least on my machine for instance this file does have an 8.3 name 360 cygpath -d /mnt/c/windows/WindowsUpdate.log 361 # But for instance this one doesn't 362 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll 363 cygpath -ws /mnt/c/windows/WindowsUpdate.log 364 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll 365 cygpath -ms /mnt/c/windows/WindowsUpdate.log 366 367 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll' 368 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll' 369 370 exit 0 371 fi 372fi 373 374AC_CANONICAL_HOST 375AC_CANONICAL_BUILD 376 377if test -n "$UNITTEST_WSL_PATHFORMAT"; then 378 BUILDDIR=. 379 GREP=grep 380 381 # Use of PathFormat must be after AC_CANONICAL_BUILD above 382 PathFormat / 383 printf "$formatted_path , $formatted_path_unix\n" 384 385 PathFormat $PWD 386 printf "$formatted_path , $formatted_path_unix\n" 387 388 PathFormat "$PROGRAMFILESX86" 389 printf "$formatted_path , $formatted_path_unix\n" 390 391 exit 0 392fi 393 394AC_MSG_CHECKING([for product name]) 395PRODUCTNAME="AC_PACKAGE_NAME" 396if test -n "$with_product_name" -a "$with_product_name" != no; then 397 PRODUCTNAME="$with_product_name" 398fi 399if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then 400 PRODUCTNAME="${PRODUCTNAME}Dev" 401fi 402AC_MSG_RESULT([$PRODUCTNAME]) 403AC_SUBST(PRODUCTNAME) 404PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g') 405AC_SUBST(PRODUCTNAME_WITHOUT_SPACES) 406 407dnl =================================================================== 408dnl Our version is defined by the AC_INIT() at the top of this script. 409dnl =================================================================== 410 411AC_MSG_CHECKING([for package version]) 412if test -n "$with_package_version" -a "$with_package_version" != no; then 413 PACKAGE_VERSION="$with_package_version" 414fi 415AC_MSG_RESULT([$PACKAGE_VERSION]) 416 417set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"` 418 419LIBO_VERSION_MAJOR=$1 420LIBO_VERSION_MINOR=$2 421LIBO_VERSION_MICRO=$3 422LIBO_VERSION_PATCH=$4 423 424LIBO_VERSION_SUFFIX=$5 425 426# Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in 427# openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake, 428# they get undoubled before actually passed to sed. 429LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'` 430test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}" 431# LIBO_VERSION_SUFFIX, if non-empty, should include the period separator 432test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX" 433 434# The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most 435# three non-negative integers. Please find more information about CFBundleVersion at 436# https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion 437 438# The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list 439# of at most three non-negative integers. Please find more information about 440# CFBundleShortVersionString at 441# https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring 442 443# But that is enforced only in the App Store, and we apparently want to break the rules otherwise. 444 445if test "$enable_macosx_sandbox" = yes; then 446 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH` 447 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION 448else 449 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH 450 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX 451fi 452 453AC_SUBST(LIBO_VERSION_MAJOR) 454AC_SUBST(LIBO_VERSION_MINOR) 455AC_SUBST(LIBO_VERSION_MICRO) 456AC_SUBST(LIBO_VERSION_PATCH) 457AC_SUBST(LIBO_VERSION_SUFFIX) 458AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX) 459AC_SUBST(MACOSX_BUNDLE_SHORTVERSION) 460AC_SUBST(MACOSX_BUNDLE_VERSION) 461 462AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR) 463AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR) 464AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO) 465AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH) 466 467LIBO_THIS_YEAR=`date +%Y` 468AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR) 469 470dnl =================================================================== 471dnl Product version 472dnl =================================================================== 473AC_MSG_CHECKING([for product version]) 474PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR" 475AC_MSG_RESULT([$PRODUCTVERSION]) 476AC_SUBST(PRODUCTVERSION) 477 478AC_PROG_EGREP 479# AC_PROG_EGREP doesn't set GREP on all systems as well 480AC_PATH_PROG(GREP, grep) 481 482BUILDDIR=`pwd` 483cd $srcdir 484SRC_ROOT=`pwd` 485cd $BUILDDIR 486x_Cygwin=[\#] 487 488dnl ====================================== 489dnl Required GObject introspection version 490dnl ====================================== 491INTROSPECTION_REQUIRED_VERSION=1.32.0 492 493dnl =================================================================== 494dnl Search all the common names for GNU Make 495dnl =================================================================== 496AC_MSG_CHECKING([for GNU Make]) 497 498# try to use our own make if it is available and GNUMAKE was not already defined 499if test -z "$GNUMAKE"; then 500 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then 501 GNUMAKE="$LODE_HOME/opt/bin/make" 502 elif test -x "/opt/lo/bin/make"; then 503 GNUMAKE="/opt/lo/bin/make" 504 fi 505fi 506 507GNUMAKE_WIN_NATIVE= 508for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do 509 if test -n "$a"; then 510 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null 511 if test $? -eq 0; then 512 if test "$build_os" = "cygwin"; then 513 if test -n "$($a -v | grep 'Built for Windows')" ; then 514 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")" 515 GNUMAKE_WIN_NATIVE="TRUE" 516 else 517 GNUMAKE=`which $a` 518 fi 519 else 520 GNUMAKE=`which $a` 521 fi 522 break 523 fi 524 fi 525done 526AC_MSG_RESULT($GNUMAKE) 527if test -z "$GNUMAKE"; then 528 AC_MSG_ERROR([not found. install GNU Make.]) 529else 530 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 531 AC_MSG_NOTICE([Using a native Win32 GNU Make version.]) 532 fi 533fi 534 535win_short_path_for_make() 536{ 537 local short_path="$1" 538 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 539 cygpath -sm "$short_path" 540 else 541 cygpath -u "$(cygpath -d "$short_path")" 542 fi 543} 544 545 546if test "$build_os" = "cygwin"; then 547 PathFormat "$SRC_ROOT" 548 SRC_ROOT="$formatted_path" 549 PathFormat "$BUILDDIR" 550 BUILDDIR="$formatted_path" 551 x_Cygwin= 552 AC_MSG_CHECKING(for explicit COMSPEC) 553 if test -z "$COMSPEC"; then 554 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun]) 555 else 556 AC_MSG_RESULT([found: $COMSPEC]) 557 fi 558fi 559 560AC_SUBST(SRC_ROOT) 561AC_SUBST(BUILDDIR) 562AC_SUBST(x_Cygwin) 563AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT") 564AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT") 565AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR") 566 567if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then 568 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account]) 569fi 570 571# need sed in os checks... 572AC_PATH_PROGS(SED, sed) 573if test -z "$SED"; then 574 AC_MSG_ERROR([install sed to run this script]) 575fi 576 577# Set the ENABLE_LTO variable 578# =================================================================== 579AC_MSG_CHECKING([whether to use link-time optimization]) 580if test -n "$enable_lto" -a "$enable_lto" != "no"; then 581 ENABLE_LTO="TRUE" 582 AC_MSG_RESULT([yes]) 583else 584 ENABLE_LTO="" 585 AC_MSG_RESULT([no]) 586fi 587AC_SUBST(ENABLE_LTO) 588 589AC_ARG_ENABLE(fuzz-options, 590 AS_HELP_STRING([--enable-fuzz-options], 591 [Randomly enable or disable each of those configurable options 592 that are supposed to be freely selectable without interdependencies, 593 or where bad interaction from interdependencies is automatically avoided.]) 594) 595 596dnl =================================================================== 597dnl When building for Android, --with-android-ndk, 598dnl --with-android-ndk-toolchain-version and --with-android-sdk are 599dnl mandatory 600dnl =================================================================== 601 602AC_ARG_WITH(android-ndk, 603 AS_HELP_STRING([--with-android-ndk], 604 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]), 605,) 606 607AC_ARG_WITH(android-ndk-toolchain-version, 608 AS_HELP_STRING([--with-android-ndk-toolchain-version], 609 [Specify which toolchain version to use, of those present in the 610 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),, 611 with_android_ndk_toolchain_version=clang5.0) 612 613AC_ARG_WITH(android-sdk, 614 AS_HELP_STRING([--with-android-sdk], 615 [Specify location of the Android SDK. Mandatory when building for Android.]), 616,) 617 618AC_ARG_WITH(android-api-level, 619 AS_HELP_STRING([--with-android-api-level], 620 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]), 621,) 622 623ANDROID_NDK_HOME= 624if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then 625 with_android_ndk="$SRC_ROOT/external/android-ndk" 626fi 627if test -n "$with_android_ndk"; then 628 eval ANDROID_NDK_HOME=$with_android_ndk 629 630 # Set up a lot of pre-canned defaults 631 632 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then 633 if test ! -f $ANDROID_NDK_HOME/source.properties; then 634 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.]) 635 fi 636 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties` 637 else 638 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT` 639 fi 640 if test -z "$ANDROID_NDK_VERSION"; then 641 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.]) 642 fi 643 case $ANDROID_NDK_VERSION in 644 r9*|r10*) 645 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*]) 646 ;; 647 11.1.*|12.1.*|13.1.*|14.1.*) 648 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*]) 649 ;; 650 16.*|17.*|18.*|19.*|20.*) 651 ;; 652 *) 653 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.]) 654 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk." 655 ;; 656 esac 657 658 ANDROID_API_LEVEL=16 659 if test -n "$with_android_api_level" ; then 660 ANDROID_API_LEVEL="$with_android_api_level" 661 fi 662 663 android_cpu=$host_cpu 664 if test $host_cpu = arm; then 665 android_platform_prefix=arm-linux-androideabi 666 android_gnu_prefix=$android_platform_prefix 667 LLVM_TRIPLE=armv7a-linux-androideabi 668 ANDROID_APP_ABI=armeabi-v7a 669 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8" 670 elif test $host_cpu = aarch64; then 671 android_platform_prefix=aarch64-linux-android 672 android_gnu_prefix=$android_platform_prefix 673 LLVM_TRIPLE=$android_platform_prefix 674 # minimum android version that supports aarch64 675 if test "$ANDROID_API_LEVEL" -lt "21" ; then 676 ANDROID_API_LEVEL=21 677 fi 678 ANDROID_APP_ABI=arm64-v8a 679 elif test $host_cpu = x86_64; then 680 android_platform_prefix=x86_64-linux-android 681 android_gnu_prefix=$android_platform_prefix 682 LLVM_TRIPLE=$android_platform_prefix 683 # minimum android version that supports x86_64 684 ANDROID_API_LEVEL=21 685 ANDROID_APP_ABI=x86_64 686 else 687 # host_cpu is something like "i386" or "i686" I guess, NDK uses 688 # "x86" in some contexts 689 android_cpu=x86 690 android_platform_prefix=$android_cpu 691 android_gnu_prefix=i686-linux-android 692 LLVM_TRIPLE=$android_gnu_prefix 693 ANDROID_APP_ABI=x86 694 fi 695 696 case "$with_android_ndk_toolchain_version" in 697 clang5.0) 698 ANDROID_GCC_TOOLCHAIN_VERSION=4.9 699 ;; 700 *) 701 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*]) 702 esac 703 704 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL]) 705 706 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit 707 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't 708 # manage to link the (app-specific) single huge .so that is built for the app in 709 # android/source/ if there is debug information in a significant part of the object files. 710 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if 711 # all objects have been built with debug information.) 712 case $build_os in 713 linux-gnu*) 714 android_HOST_TAG=linux-x86_64 715 ;; 716 darwin*) 717 android_HOST_TAG=darwin-x86_64 718 ;; 719 *) 720 AC_MSG_ERROR([We only support building for Android from Linux or macOS]) 721 # ndk would also support windows and windows-x86_64 722 ;; 723 esac 724 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG 725 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin 726 dnl TODO: NSS build uses it... 727 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG 728 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT) 729 730 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar 731 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm 732 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump 733 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib 734 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip 735 736 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}" 737 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments" 738 if test "$ENABLE_LTO" = TRUE; then 739 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of 740 # $CC and $CXX when building external libraries 741 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2" 742 fi 743 744 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++" 745 746 if test -z "$CC"; then 747 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS" 748 CC_BASE="clang" 749 fi 750 if test -z "$CXX"; then 751 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS" 752 CXX_BASE="clang++" 753 fi 754fi 755AC_SUBST(ANDROID_NDK_HOME) 756AC_SUBST(ANDROID_APP_ABI) 757AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION) 758 759dnl =================================================================== 760dnl --with-android-sdk 761dnl =================================================================== 762ANDROID_SDK_HOME= 763if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then 764 with_android_sdk="$SRC_ROOT/external/android-sdk-linux" 765fi 766if test -n "$with_android_sdk"; then 767 eval ANDROID_SDK_HOME=$with_android_sdk 768 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH" 769fi 770AC_SUBST(ANDROID_SDK_HOME) 771 772AC_ARG_ENABLE([android-lok], 773 AS_HELP_STRING([--enable-android-lok], 774 [The Android app from the android/ subdir needs several tweaks all 775 over the place that break the LOK when used in the Online-based 776 Android app. This switch indicates that the intent of this build is 777 actually the Online-based, non-modified LOK.]) 778) 779ENABLE_ANDROID_LOK= 780if test -n "$ANDROID_NDK_HOME" ; then 781 if test "$enable_android_lok" = yes; then 782 ENABLE_ANDROID_LOK=TRUE 783 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK) 784 AC_MSG_NOTICE([building the Android version... for the Online-based Android app]) 785 else 786 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir]) 787 fi 788fi 789AC_SUBST([ENABLE_ANDROID_LOK]) 790 791libo_FUZZ_ARG_ENABLE([android-editing], 792 AS_HELP_STRING([--enable-android-editing], 793 [Enable the experimental editing feature on Android.]) 794) 795ENABLE_ANDROID_EDITING= 796if test "$enable_android_editing" = yes; then 797 ENABLE_ANDROID_EDITING=TRUE 798fi 799AC_SUBST([ENABLE_ANDROID_EDITING]) 800 801dnl =================================================================== 802dnl The following is a list of supported systems. 803dnl Sequential to keep the logic very simple 804dnl These values may be checked and reset later. 805dnl =================================================================== 806#defaults unless the os test overrides this: 807test_randr=yes 808test_xrender=yes 809test_cups=yes 810test_dbus=yes 811test_fontconfig=yes 812test_cairo=no 813test_gdb_index=no 814test_split_debug=no 815 816# Default values, as such probably valid just for Linux, set 817# differently below just for Mac OSX, but at least better than 818# hardcoding these as we used to do. Much of this is duplicated also 819# in solenv for old build system and for gbuild, ideally we should 820# perhaps define stuff like this only here in configure.ac? 821 822LINKFLAGSSHL="-shared" 823PICSWITCH="-fpic" 824DLLPOST=".so" 825 826LINKFLAGSNOUNDEFS="-Wl,-z,defs" 827 828INSTROOTBASESUFFIX= 829INSTROOTCONTENTSUFFIX= 830SDKDIRNAME=sdk 831 832HOST_PLATFORM="$host" 833 834host_cpu_for_clang="$host_cpu" 835 836case "$host_os" in 837 838solaris*) 839 build_gstreamer_1_0=yes 840 test_freetype=yes 841 build_skia=yes 842 _os=SunOS 843 844 dnl =========================================================== 845 dnl Check whether we're using Solaris 10 - SPARC or Intel. 846 dnl =========================================================== 847 AC_MSG_CHECKING([the Solaris operating system release]) 848 _os_release=`echo $host_os | $SED -e s/solaris2\.//` 849 if test "$_os_release" -lt "10"; then 850 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice]) 851 else 852 AC_MSG_RESULT([ok ($_os_release)]) 853 fi 854 855 dnl Check whether we're using a SPARC or i386 processor 856 AC_MSG_CHECKING([the processor type]) 857 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then 858 AC_MSG_RESULT([ok ($host_cpu)]) 859 else 860 AC_MSG_ERROR([only SPARC and i386 processors are supported]) 861 fi 862 ;; 863 864linux-gnu*|k*bsd*-gnu*) 865 build_gstreamer_1_0=yes 866 test_kf5=yes 867 test_gtk3_kde5=yes 868 build_skia=yes 869 test_gdb_index=yes 870 test_split_debug=yes 871 if test "$enable_fuzzers" != yes; then 872 test_freetype=yes 873 test_fontconfig=yes 874 else 875 test_freetype=no 876 test_fontconfig=no 877 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE" 878 fi 879 _os=Linux 880 ;; 881 882gnu) 883 test_randr=no 884 test_xrender=no 885 _os=GNU 886 ;; 887 888cygwin*|wsl*) 889 890 # When building on Windows normally with MSVC under Cygwin, 891 # configure thinks that the host platform (the platform the 892 # built code will run on) is Cygwin, even if it obviously is 893 # Windows, which in Autoconf terminology is called 894 # "mingw32". (Which is misleading as MinGW is the name of the 895 # tool-chain, not an operating system.) 896 897 # Somewhat confusing, yes. But this configure script doesn't 898 # look at $host etc that much, it mostly uses its own $_os 899 # variable, set here in this case statement. 900 901 test_cups=no 902 test_dbus=no 903 test_randr=no 904 test_xrender=no 905 test_freetype=no 906 test_fontconfig=no 907 build_skia=yes 908 _os=WINNT 909 910 DLLPOST=".dll" 911 LINKFLAGSNOUNDEFS= 912 913 if test "$host_cpu" = "aarch64"; then 914 enable_gpgmepp=no 915 enable_coinmp=no 916 enable_firebird_sdbc=no 917 fi 918 ;; 919 920darwin*|macos*) # macOS 921 test_randr=no 922 test_xrender=no 923 test_freetype=no 924 test_fontconfig=no 925 test_dbus=no 926 if test -n "$LODE_HOME" ; then 927 mac_sanitize_path 928 AC_MSG_NOTICE([sanitized the PATH to $PATH]) 929 fi 930 _os=Darwin 931 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app 932 INSTROOTCONTENTSUFFIX=/Contents 933 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK 934 # See comment above the case "$host_os" 935 LINKFLAGSSHL="-dynamiclib -single_module" 936 937 # -fPIC is default 938 PICSWITCH="" 939 940 DLLPOST=".dylib" 941 942 # -undefined error is the default 943 LINKFLAGSNOUNDEFS="" 944 case "$host_cpu" in 945 aarch64|arm64) 946 case "$host_os" in 947 macos*) 948 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like 949 # the "macos" part so be sure to use aarch64-apple-darwin for now. 950 HOST_PLATFORM=aarch64-apple-darwin 951 ;; 952 esac 953 954 # Apple's Clang uses "arm64" 955 host_cpu_for_clang=arm64 956 esac 957;; 958 959ios*) # iOS 960 test_randr=no 961 test_xrender=no 962 test_freetype=no 963 test_fontconfig=no 964 test_dbus=no 965 if test -n "$LODE_HOME" ; then 966 mac_sanitize_path 967 AC_MSG_NOTICE([sanitized the PATH to $PATH]) 968 fi 969 enable_gpgmepp=no 970 _os=iOS 971 test_cups=no 972 enable_mpl_subset=yes 973 enable_lotuswordpro=no 974 enable_coinmp=no 975 enable_lpsolve=no 976 enable_mariadb_sdbc=no 977 enable_postgresql_sdbc=no 978 enable_extension_integration=no 979 enable_report_builder=no 980 with_ppds=no 981 if test "$enable_ios_simulator" = "yes"; then 982 host=x86_64-apple-darwin 983 fi 984 # See comment above the case "$host_os" 985 LINKFLAGSSHL="-dynamiclib -single_module" 986 987 # -fPIC is default 988 PICSWITCH="" 989 990 DLLPOST=".dylib" 991 992 # -undefined error is the default 993 LINKFLAGSNOUNDEFS="" 994 995 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios" 996 # part, so use aarch64-apple-darwin for now. 997 HOST_PLATFORM=aarch64-apple-darwin 998 999 # Apple's Clang uses "arm64" 1000 host_cpu_for_clang=arm64 1001;; 1002 1003freebsd*) 1004 build_gstreamer_1_0=yes 1005 test_kf5=yes 1006 test_gtk3_kde5=yes 1007 test_freetype=yes 1008 build_skia=yes 1009 AC_MSG_CHECKING([the FreeBSD operating system release]) 1010 if test -n "$with_os_version"; then 1011 OSVERSION="$with_os_version" 1012 else 1013 OSVERSION=`/sbin/sysctl -n kern.osreldate` 1014 fi 1015 AC_MSG_RESULT([found OSVERSION=$OSVERSION]) 1016 AC_MSG_CHECKING([which thread library to use]) 1017 if test "$OSVERSION" -lt "500016"; then 1018 PTHREAD_CFLAGS="-D_THREAD_SAFE" 1019 PTHREAD_LIBS="-pthread" 1020 elif test "$OSVERSION" -lt "502102"; then 1021 PTHREAD_CFLAGS="-D_THREAD_SAFE" 1022 PTHREAD_LIBS="-lc_r" 1023 else 1024 PTHREAD_CFLAGS="" 1025 PTHREAD_LIBS="-pthread" 1026 fi 1027 AC_MSG_RESULT([$PTHREAD_LIBS]) 1028 _os=FreeBSD 1029 ;; 1030 1031*netbsd*) 1032 build_gstreamer_1_0=yes 1033 test_kf5=yes 1034 test_gtk3_kde5=yes 1035 test_freetype=yes 1036 build_skia=yes 1037 PTHREAD_LIBS="-pthread -lpthread" 1038 _os=NetBSD 1039 ;; 1040 1041aix*) 1042 test_randr=no 1043 test_freetype=yes 1044 PTHREAD_LIBS=-pthread 1045 _os=AIX 1046 ;; 1047 1048openbsd*) 1049 test_freetype=yes 1050 PTHREAD_CFLAGS="-D_THREAD_SAFE" 1051 PTHREAD_LIBS="-pthread" 1052 _os=OpenBSD 1053 ;; 1054 1055dragonfly*) 1056 build_gstreamer_1_0=yes 1057 test_kf5=yes 1058 test_gtk3_kde5=yes 1059 test_freetype=yes 1060 build_skia=yes 1061 PTHREAD_LIBS="-pthread" 1062 _os=DragonFly 1063 ;; 1064 1065linux-android*) 1066 build_gstreamer_1_0=no 1067 enable_lotuswordpro=no 1068 enable_mpl_subset=yes 1069 enable_coinmp=yes 1070 enable_lpsolve=no 1071 enable_mariadb_sdbc=no 1072 enable_report_builder=no 1073 enable_odk=no 1074 enable_postgresql_sdbc=no 1075 enable_python=no 1076 test_cups=no 1077 test_dbus=no 1078 test_fontconfig=no 1079 test_freetype=no 1080 test_kf5=no 1081 test_qt5=no 1082 test_gtk3_kde5=no 1083 test_randr=no 1084 test_xrender=no 1085 _os=Android 1086 1087 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX) 1088 BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE" 1089 ;; 1090 1091haiku*) 1092 test_cups=no 1093 test_dbus=no 1094 test_randr=no 1095 test_xrender=no 1096 test_freetype=yes 1097 enable_odk=no 1098 enable_gstreamer_1_0=no 1099 enable_coinmp=no 1100 enable_pdfium=no 1101 enable_sdremote=no 1102 enable_postgresql_sdbc=no 1103 enable_firebird_sdbc=no 1104 _os=Haiku 1105 ;; 1106 1107*) 1108 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!]) 1109 ;; 1110esac 1111 1112AC_SUBST(HOST_PLATFORM) 1113 1114if test "$_os" = "Android" ; then 1115 # Verify that the NDK and SDK options are proper 1116 if test -z "$with_android_ndk"; then 1117 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.]) 1118 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then 1119 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK]) 1120 fi 1121 1122 if test -z "$ANDROID_SDK_HOME"; then 1123 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.]) 1124 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then 1125 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK]) 1126 fi 1127 1128 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle` 1129 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then 1130 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with 1131 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION 1132 or adjust change $SRC_ROOT/android/source/build.gradle accordingly]) 1133 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with" 1134 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION" 1135 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly" 1136 fi 1137 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then 1138 AC_MSG_WARN([android support repository not found - install with 1139 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository 1140 to allow the build to download the specified version of the android support libraries]) 1141 add_warning "android support repository not found - install with" 1142 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository" 1143 add_warning "to allow the build to download the specified version of the android support libraries" 1144 fi 1145fi 1146 1147if test "$_os" = "AIX"; then 1148 AC_PATH_PROG(GAWK, gawk) 1149 if test -z "$GAWK"; then 1150 AC_MSG_ERROR([gawk not found in \$PATH]) 1151 fi 1152fi 1153 1154AC_SUBST(SDKDIRNAME) 1155 1156AC_SUBST(PTHREAD_CFLAGS) 1157AC_SUBST(PTHREAD_LIBS) 1158 1159# Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS. 1160# By default use the ones specified by our build system, 1161# but explicit override is possible. 1162AC_MSG_CHECKING(for explicit AFLAGS) 1163if test -n "$AFLAGS"; then 1164 AC_MSG_RESULT([$AFLAGS]) 1165 x_AFLAGS= 1166else 1167 AC_MSG_RESULT(no) 1168 x_AFLAGS=[\#] 1169fi 1170AC_MSG_CHECKING(for explicit CFLAGS) 1171if test -n "$CFLAGS"; then 1172 AC_MSG_RESULT([$CFLAGS]) 1173 x_CFLAGS= 1174else 1175 AC_MSG_RESULT(no) 1176 x_CFLAGS=[\#] 1177fi 1178AC_MSG_CHECKING(for explicit CXXFLAGS) 1179if test -n "$CXXFLAGS"; then 1180 AC_MSG_RESULT([$CXXFLAGS]) 1181 x_CXXFLAGS= 1182else 1183 AC_MSG_RESULT(no) 1184 x_CXXFLAGS=[\#] 1185fi 1186AC_MSG_CHECKING(for explicit OBJCFLAGS) 1187if test -n "$OBJCFLAGS"; then 1188 AC_MSG_RESULT([$OBJCFLAGS]) 1189 x_OBJCFLAGS= 1190else 1191 AC_MSG_RESULT(no) 1192 x_OBJCFLAGS=[\#] 1193fi 1194AC_MSG_CHECKING(for explicit OBJCXXFLAGS) 1195if test -n "$OBJCXXFLAGS"; then 1196 AC_MSG_RESULT([$OBJCXXFLAGS]) 1197 x_OBJCXXFLAGS= 1198else 1199 AC_MSG_RESULT(no) 1200 x_OBJCXXFLAGS=[\#] 1201fi 1202AC_MSG_CHECKING(for explicit LDFLAGS) 1203if test -n "$LDFLAGS"; then 1204 AC_MSG_RESULT([$LDFLAGS]) 1205 x_LDFLAGS= 1206else 1207 AC_MSG_RESULT(no) 1208 x_LDFLAGS=[\#] 1209fi 1210AC_SUBST(AFLAGS) 1211AC_SUBST(CFLAGS) 1212AC_SUBST(CXXFLAGS) 1213AC_SUBST(OBJCFLAGS) 1214AC_SUBST(OBJCXXFLAGS) 1215AC_SUBST(LDFLAGS) 1216AC_SUBST(x_AFLAGS) 1217AC_SUBST(x_CFLAGS) 1218AC_SUBST(x_CXXFLAGS) 1219AC_SUBST(x_OBJCFLAGS) 1220AC_SUBST(x_OBJCXXFLAGS) 1221AC_SUBST(x_LDFLAGS) 1222 1223dnl These are potentially set for MSVC, in the code checking for UCRT below: 1224my_original_CFLAGS=$CFLAGS 1225my_original_CXXFLAGS=$CXXFLAGS 1226my_original_CPPFLAGS=$CPPFLAGS 1227 1228dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32) 1229dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call 1230dnl AC_PROG_CC internally. 1231if test "$_os" != "WINNT"; then 1232 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that 1233 save_CFLAGS=$CFLAGS 1234 AC_PROG_CC 1235 CFLAGS=$save_CFLAGS 1236 if test -z "$CC_BASE"; then 1237 CC_BASE=`first_arg_basename "$CC"` 1238 fi 1239fi 1240 1241if test "$_os" != "WINNT"; then 1242 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little]) 1243else 1244 ENDIANNESS=little 1245fi 1246AC_SUBST(ENDIANNESS) 1247 1248if test $_os != "WINNT"; then 1249 save_LIBS="$LIBS" 1250 AC_SEARCH_LIBS([dlsym], [dl], 1251 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac], 1252 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])]) 1253 LIBS="$save_LIBS" 1254fi 1255AC_SUBST(DLOPEN_LIBS) 1256 1257AC_ARG_ENABLE(ios-simulator, 1258 AS_HELP_STRING([--enable-ios-simulator], 1259 [build for iOS simulator]) 1260) 1261 1262############################################################################### 1263# Extensions switches --enable/--disable 1264############################################################################### 1265# By default these should be enabled unless having extra dependencies. 1266# If there is extra dependency over configure options then the enable should 1267# be automagic based on whether the requiring feature is enabled or not. 1268# All this options change anything only with --enable-extension-integration. 1269 1270# The name of this option and its help string makes it sound as if 1271# extensions are built anyway, just not integrated in the installer, 1272# if you use --disable-extension-integration. Is that really the 1273# case? 1274 1275libo_FUZZ_ARG_ENABLE(extension-integration, 1276 AS_HELP_STRING([--disable-extension-integration], 1277 [Disable integration of the built extensions in the installer of the 1278 product. Use this switch to disable the integration.]) 1279) 1280 1281AC_ARG_ENABLE(avmedia, 1282 AS_HELP_STRING([--disable-avmedia], 1283 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]) 1284) 1285 1286AC_ARG_ENABLE(database-connectivity, 1287 AS_HELP_STRING([--disable-database-connectivity], 1288 [Disable various database connectivity. Work in progress, use only if you are hacking on it.]) 1289) 1290 1291# This doesn't mean not building (or "integrating") extensions 1292# (although it probably should; i.e. it should imply 1293# --disable-extension-integration I guess), it means not supporting 1294# any extension mechanism at all 1295libo_FUZZ_ARG_ENABLE(extensions, 1296 AS_HELP_STRING([--disable-extensions], 1297 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.]) 1298) 1299 1300AC_ARG_ENABLE(scripting, 1301 AS_HELP_STRING([--disable-scripting], 1302 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]) 1303) 1304 1305# This is mainly for Android and iOS, but could potentially be used in some 1306# special case otherwise, too, so factored out as a separate setting 1307 1308AC_ARG_ENABLE(dynamic-loading, 1309 AS_HELP_STRING([--disable-dynamic-loading], 1310 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.]) 1311) 1312 1313libo_FUZZ_ARG_ENABLE(report-builder, 1314 AS_HELP_STRING([--disable-report-builder], 1315 [Disable the Report Builder.]) 1316) 1317 1318libo_FUZZ_ARG_ENABLE(ext-wiki-publisher, 1319 AS_HELP_STRING([--enable-ext-wiki-publisher], 1320 [Enable the Wiki Publisher extension.]) 1321) 1322 1323libo_FUZZ_ARG_ENABLE(lpsolve, 1324 AS_HELP_STRING([--disable-lpsolve], 1325 [Disable compilation of the lp solve solver ]) 1326) 1327libo_FUZZ_ARG_ENABLE(coinmp, 1328 AS_HELP_STRING([--disable-coinmp], 1329 [Disable compilation of the CoinMP solver ]) 1330) 1331 1332libo_FUZZ_ARG_ENABLE(pdfimport, 1333 AS_HELP_STRING([--disable-pdfimport], 1334 [Disable building the PDF import feature.]) 1335) 1336 1337libo_FUZZ_ARG_ENABLE(pdfium, 1338 AS_HELP_STRING([--disable-pdfium], 1339 [Disable building PDFium. Results in unsecure PDF signature verification.]) 1340) 1341 1342libo_FUZZ_ARG_ENABLE(skia, 1343 AS_HELP_STRING([--disable-skia], 1344 [Disable building Skia. Use --enable-skia=debug to build without optimizations.]) 1345) 1346 1347############################################################################### 1348 1349dnl ---------- *** ---------- 1350 1351libo_FUZZ_ARG_ENABLE(mergelibs, 1352 AS_HELP_STRING([--enable-mergelibs], 1353 [Merge several of the smaller libraries into one big, "merged", one.]) 1354) 1355 1356libo_FUZZ_ARG_ENABLE(breakpad, 1357 AS_HELP_STRING([--enable-breakpad], 1358 [Enables breakpad for crash reporting.]) 1359) 1360 1361libo_FUZZ_ARG_ENABLE(crashdump, 1362 AS_HELP_STRING([--disable-crashdump], 1363 [Disable dump.ini and dump-file, when --enable-breakpad]) 1364) 1365 1366AC_ARG_ENABLE(fetch-external, 1367 AS_HELP_STRING([--disable-fetch-external], 1368 [Disables fetching external tarballs from web sources.]) 1369) 1370 1371AC_ARG_ENABLE(fuzzers, 1372 AS_HELP_STRING([--enable-fuzzers], 1373 [Enables building libfuzzer targets for fuzz testing.]) 1374) 1375 1376libo_FUZZ_ARG_ENABLE(pch, 1377 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>], 1378 [Enables precompiled header support for C++. Forced default on Windows/VC build. 1379 Using 'system' will include only external headers, 'base' will add also headers 1380 from base modules, 'normal' will also add all headers except from the module built, 1381 'full' will use all suitable headers even from a module itself.]) 1382) 1383 1384libo_FUZZ_ARG_ENABLE(epm, 1385 AS_HELP_STRING([--enable-epm], 1386 [LibreOffice includes self-packaging code, that requires epm, however epm is 1387 useless for large scale package building.]) 1388) 1389 1390libo_FUZZ_ARG_ENABLE(odk, 1391 AS_HELP_STRING([--disable-odk], 1392 [LibreOffice includes an ODK, office development kit which some packagers may 1393 wish to build without.]) 1394) 1395 1396AC_ARG_ENABLE(mpl-subset, 1397 AS_HELP_STRING([--enable-mpl-subset], 1398 [Don't compile any pieces which are not MPL or more liberally licensed]) 1399) 1400 1401libo_FUZZ_ARG_ENABLE(evolution2, 1402 AS_HELP_STRING([--enable-evolution2], 1403 [Allows the built-in evolution 2 addressbook connectivity build to be 1404 enabled.]) 1405) 1406 1407AC_ARG_ENABLE(avahi, 1408 AS_HELP_STRING([--enable-avahi], 1409 [Determines whether to use Avahi to advertise Impress to remote controls.]) 1410) 1411 1412libo_FUZZ_ARG_ENABLE(werror, 1413 AS_HELP_STRING([--enable-werror], 1414 [Turn warnings to errors. (Has no effect in modules where the treating 1415 of warnings as errors is disabled explicitly.)]), 1416,) 1417 1418libo_FUZZ_ARG_ENABLE(assert-always-abort, 1419 AS_HELP_STRING([--enable-assert-always-abort], 1420 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]), 1421,) 1422 1423libo_FUZZ_ARG_ENABLE(dbgutil, 1424 AS_HELP_STRING([--enable-dbgutil], 1425 [Provide debugging support from --enable-debug and include additional debugging 1426 utilities such as object counting or more expensive checks. 1427 This is the recommended option for developers. 1428 Note that this makes the build ABI incompatible, it is not possible to mix object 1429 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.])) 1430 1431libo_FUZZ_ARG_ENABLE(debug, 1432 AS_HELP_STRING([--enable-debug], 1433 [Include debugging information, disable compiler optimization and inlining plus 1434 extra debugging code like assertions. Extra large build! (enables -g compiler flag).])) 1435 1436libo_FUZZ_ARG_ENABLE(split-debug, 1437 AS_HELP_STRING([--disable-split-debug], 1438 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information 1439 saves disk space and build time, but requires tools that support it (both build tools and debuggers).])) 1440 1441libo_FUZZ_ARG_ENABLE(gdb-index, 1442 AS_HELP_STRING([--disable-gdb-index], 1443 [Disables creating debug information in the gdb index format, which makes gdb start faster. 1444 The feature requires the gold or lld linker.])) 1445 1446libo_FUZZ_ARG_ENABLE(sal-log, 1447 AS_HELP_STRING([--enable-sal-log], 1448 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.])) 1449 1450libo_FUZZ_ARG_ENABLE(symbols, 1451 AS_HELP_STRING([--enable-symbols], 1452 [Generate debug information. 1453 By default, enabled for --enable-debug and --enable-dbgutil, disabled 1454 otherwise. It is possible to explicitly specify gbuild build targets 1455 (where 'all' means everything, '-' prepended means to not enable, '/' appended means 1456 everything in the directory; there is no ordering, more specific overrides 1457 more general, and disabling takes precedence). 1458 Example: --enable-symbols="all -sw/ -Library_sc".])) 1459 1460libo_FUZZ_ARG_ENABLE(optimized, 1461 AS_HELP_STRING([--enable-optimized=<yes/no/debug>], 1462 [Whether to compile with optimization flags. 1463 By default, disabled for --enable-debug and --enable-dbgutil, enabled 1464 otherwise. Using 'debug' will try to use only optimizations that should 1465 not interfere with debugging.])) 1466 1467libo_FUZZ_ARG_ENABLE(runtime-optimizations, 1468 AS_HELP_STRING([--disable-runtime-optimizations], 1469 [Statically disable certain runtime optimizations (like rtl/alloc.h or 1470 JVM JIT) that are known to interact badly with certain dynamic analysis 1471 tools (like -fsanitize=address or Valgrind). By default, disabled iff 1472 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations 1473 are typically disabled dynamically via RUNNING_ON_VALGRIND.)])) 1474 1475AC_ARG_WITH(valgrind, 1476 AS_HELP_STRING([--with-valgrind], 1477 [Make availability of Valgrind headers a hard requirement.])) 1478 1479libo_FUZZ_ARG_ENABLE(compiler-plugins, 1480 AS_HELP_STRING([--enable-compiler-plugins], 1481 [Enable compiler plugins that will perform additional checks during 1482 building. Enabled automatically by --enable-dbgutil. 1483 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.])) 1484COMPILER_PLUGINS_DEBUG= 1485if test "$enable_compiler_plugins" = debug; then 1486 enable_compiler_plugins=yes 1487 COMPILER_PLUGINS_DEBUG=TRUE 1488fi 1489 1490libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch, 1491 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch], 1492 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not 1493 relevant in the --disable-compiler-plugins case.])) 1494 1495libo_FUZZ_ARG_ENABLE(ooenv, 1496 AS_HELP_STRING([--enable-ooenv], 1497 [Enable ooenv for the instdir installation.])) 1498 1499AC_ARG_ENABLE(lto, 1500 AS_HELP_STRING([--enable-lto], 1501 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take 1502 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold' 1503 linker. For MSVC, this option is broken at the moment. This is experimental work 1504 in progress that shouldn't be used unless you are working on it.)])) 1505 1506AC_ARG_ENABLE(python, 1507 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>], 1508 [Enables or disables Python support at run-time. 1509 Also specifies what Python to use at build-time. 1510 'fully-internal' even forces the internal version for uses of Python 1511 during the build. 1512 On macOS the only choices are 1513 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'. 1514 ])) 1515 1516libo_FUZZ_ARG_ENABLE(gtk3, 1517 AS_HELP_STRING([--disable-gtk3], 1518 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]), 1519,test "${enable_gtk3+set}" = set || enable_gtk3=yes) 1520 1521AC_ARG_ENABLE(introspection, 1522 AS_HELP_STRING([--enable-introspection], 1523 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by 1524 Linux distributions.)])) 1525 1526AC_ARG_ENABLE(split-app-modules, 1527 AS_HELP_STRING([--enable-split-app-modules], 1528 [Split file lists for app modules, e.g. base, calc. 1529 Has effect only with make distro-pack-install]), 1530,) 1531 1532AC_ARG_ENABLE(split-opt-features, 1533 AS_HELP_STRING([--enable-split-opt-features], 1534 [Split file lists for some optional features, e.g. pyuno, testtool. 1535 Has effect only with make distro-pack-install]), 1536,) 1537 1538libo_FUZZ_ARG_ENABLE(cairo-canvas, 1539 AS_HELP_STRING([--disable-cairo-canvas], 1540 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]), 1541,) 1542 1543libo_FUZZ_ARG_ENABLE(dbus, 1544 AS_HELP_STRING([--disable-dbus], 1545 [Determines whether to enable features that depend on dbus. 1546 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]), 1547,test "${enable_dbus+set}" = set || enable_dbus=yes) 1548 1549libo_FUZZ_ARG_ENABLE(sdremote, 1550 AS_HELP_STRING([--disable-sdremote], 1551 [Determines whether to enable Impress remote control (i.e. the server component).]), 1552,test "${enable_sdremote+set}" = set || enable_sdremote=yes) 1553 1554libo_FUZZ_ARG_ENABLE(sdremote-bluetooth, 1555 AS_HELP_STRING([--disable-sdremote-bluetooth], 1556 [Determines whether to build sdremote with bluetooth support. 1557 Requires dbus on Linux.])) 1558 1559libo_FUZZ_ARG_ENABLE(gio, 1560 AS_HELP_STRING([--disable-gio], 1561 [Determines whether to use the GIO support.]), 1562,test "${enable_gio+set}" = set || enable_gio=yes) 1563 1564AC_ARG_ENABLE(qt5, 1565 AS_HELP_STRING([--enable-qt5], 1566 [Determines whether to use Qt5 vclplug on platforms where Qt5 is 1567 available.]), 1568,) 1569 1570AC_ARG_ENABLE(kf5, 1571 AS_HELP_STRING([--enable-kf5], 1572 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and 1573 KF5 are available.]), 1574,) 1575 1576AC_ARG_ENABLE(kde5, 1577 AS_HELP_STRING([--enable-kde5], 1578 [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!]) 1579,) 1580 1581AC_ARG_ENABLE(gtk3_kde5, 1582 AS_HELP_STRING([--enable-gtk3-kde5], 1583 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on 1584 platforms where Gtk3, Qt5 and Plasma is available.]), 1585,) 1586 1587AC_ARG_ENABLE(gui, 1588 AS_HELP_STRING([--disable-gui], 1589 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]), 1590,enable_gui=yes) 1591 1592libo_FUZZ_ARG_ENABLE(randr, 1593 AS_HELP_STRING([--disable-randr], 1594 [Disable RandR support in the vcl project.]), 1595,test "${enable_randr+set}" = set || enable_randr=yes) 1596 1597libo_FUZZ_ARG_ENABLE(gstreamer-1-0, 1598 AS_HELP_STRING([--disable-gstreamer-1-0], 1599 [Disable building with the gstreamer 1.0 avmedia backend.]), 1600,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes) 1601 1602libo_FUZZ_ARG_ENABLE(neon, 1603 AS_HELP_STRING([--disable-neon], 1604 [Disable neon and the compilation of webdav binding.]), 1605,) 1606 1607libo_FUZZ_ARG_ENABLE([eot], 1608 [AS_HELP_STRING([--enable-eot], 1609 [Enable support for Embedded OpenType fonts.])], 1610,test "${enable_eot+set}" = set || enable_eot=no) 1611 1612libo_FUZZ_ARG_ENABLE(cve-tests, 1613 AS_HELP_STRING([--disable-cve-tests], 1614 [Prevent CVE tests to be executed]), 1615,) 1616 1617libo_FUZZ_ARG_ENABLE(chart-tests, 1618 AS_HELP_STRING([--enable-chart-tests], 1619 [Executes chart XShape tests. In a perfect world these tests would be 1620 stable and everyone could run them, in reality it is best to run them 1621 only on a few machines that are known to work and maintained by people 1622 who can judge if a test failure is a regression or not.]), 1623,) 1624 1625AC_ARG_ENABLE(build-opensymbol, 1626 AS_HELP_STRING([--enable-build-opensymbol], 1627 [Do not use the prebuilt opens___.ttf. Build it instead. This needs 1628 fontforge installed.]), 1629,) 1630 1631AC_ARG_ENABLE(dependency-tracking, 1632 AS_HELP_STRING([--enable-dependency-tracking], 1633 [Do not reject slow dependency extractors.])[ 1634 --disable-dependency-tracking 1635 Disables generation of dependency information. 1636 Speed up one-time builds.], 1637,) 1638 1639AC_ARG_ENABLE(icecream, 1640 AS_HELP_STRING([--enable-icecream], 1641 [Use the 'icecream' distributed compiling tool to speedup the compilation. 1642 It defaults to /opt/icecream for the location of the icecream gcc/g++ 1643 wrappers, you can override that using --with-gcc-home=/the/path switch.]), 1644,) 1645 1646AC_ARG_ENABLE(ld, 1647 AS_HELP_STRING([--enable-ld=<linker>], 1648 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster. 1649 By default tries to use the best linker possible, use --disable-ld to use the default linker. 1650 If <linker> contains any ':', the part before the first ':' is used as the value of 1651 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is 1652 needed for Clang 12).]), 1653,) 1654 1655libo_FUZZ_ARG_ENABLE(cups, 1656 AS_HELP_STRING([--disable-cups], 1657 [Do not build cups support.]) 1658) 1659 1660AC_ARG_ENABLE(ccache, 1661 AS_HELP_STRING([--disable-ccache], 1662 [Do not try to use ccache automatically. 1663 By default, unless on Windows, we will try to detect if ccache is available; in that case if 1664 CC/CXX are not yet set, and --enable-icecream is not given, we 1665 attempt to use ccache. --disable-ccache disables ccache completely. 1666 Additionally ccache's depend mode is enabled if possible, 1667 use --enable-ccache=nodepend to enable ccache without depend mode. 1668]), 1669,) 1670 1671libo_FUZZ_ARG_ENABLE(online-update, 1672 AS_HELP_STRING([--enable-online-update], 1673 [Enable the online update service that will check for new versions of 1674 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux. 1675 If the value is "mar", the experimental Mozilla-like update will be 1676 enabled instead of the traditional update mechanism.]), 1677,) 1678 1679AC_ARG_WITH(update-config, 1680 AS_HELP_STRING([--with-update-config=/tmp/update.ini], 1681 [Path to the update config ini file])) 1682 1683libo_FUZZ_ARG_ENABLE(extension-update, 1684 AS_HELP_STRING([--disable-extension-update], 1685 [Disable possibility to update installed extensions.]), 1686,) 1687 1688libo_FUZZ_ARG_ENABLE(release-build, 1689 AS_HELP_STRING([--enable-release-build], 1690 [Enable release build. Note that the "release build" choice is orthogonal to 1691 whether symbols are present, debug info is generated, or optimization 1692 is done. 1693 See http://wiki.documentfoundation.org/Development/DevBuild]), 1694,) 1695 1696AC_ARG_ENABLE(windows-build-signing, 1697 AS_HELP_STRING([--enable-windows-build-signing], 1698 [Enable signing of windows binaries (*.exe, *.dll)]), 1699,) 1700 1701AC_ARG_ENABLE(silent-msi, 1702 AS_HELP_STRING([--enable-silent-msi], 1703 [Enable MSI with LIMITUI=1 (silent install).]), 1704,) 1705 1706AC_ARG_ENABLE(macosx-code-signing, 1707 AS_HELP_STRING([--enable-macosx-code-signing=<identity>], 1708 [Sign executables, dylibs, frameworks and the app bundle. If you 1709 don't provide an identity the first suitable certificate 1710 in your keychain is used.]), 1711,) 1712 1713AC_ARG_ENABLE(macosx-package-signing, 1714 AS_HELP_STRING([--enable-macosx-package-signing=<identity>], 1715 [Create a .pkg suitable for uploading to the Mac App Store and sign 1716 it. If you don't provide an identity the first suitable certificate 1717 in your keychain is used.]), 1718,) 1719 1720AC_ARG_ENABLE(macosx-sandbox, 1721 AS_HELP_STRING([--enable-macosx-sandbox], 1722 [Make the app bundle run in a sandbox. Requires code signing. 1723 Is required by apps distributed in the Mac App Store, and implies 1724 adherence to App Store rules.]), 1725,) 1726 1727AC_ARG_WITH(macosx-bundle-identifier, 1728 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice], 1729 [Define the macOS bundle identifier. Default is the somewhat weird 1730 org.libreoffice.script ("script", huh?).]), 1731,with_macosx_bundle_identifier=org.libreoffice.script) 1732 1733AC_ARG_WITH(product-name, 1734 AS_HELP_STRING([--with-product-name='My Own Office Suite'], 1735 [Define the product name. Default is AC_PACKAGE_NAME.]), 1736,with_product_name=$PRODUCTNAME) 1737 1738libo_FUZZ_ARG_ENABLE(community-flavor, 1739 AS_HELP_STRING([--disable-community-flavor], 1740 [Disable the Community branding.]), 1741,) 1742 1743AC_ARG_WITH(package-version, 1744 AS_HELP_STRING([--with-package-version='3.1.4.5'], 1745 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]), 1746,) 1747 1748libo_FUZZ_ARG_ENABLE(readonly-installset, 1749 AS_HELP_STRING([--enable-readonly-installset], 1750 [Prevents any attempts by LibreOffice to write into its installation. That means 1751 at least that no "system-wide" extensions can be added. Partly experimental work in 1752 progress, probably not fully implemented. Always enabled for macOS.]), 1753,) 1754 1755libo_FUZZ_ARG_ENABLE(mariadb-sdbc, 1756 AS_HELP_STRING([--disable-mariadb-sdbc], 1757 [Disable the build of the MariaDB/MySQL-SDBC driver.]) 1758) 1759 1760libo_FUZZ_ARG_ENABLE(postgresql-sdbc, 1761 AS_HELP_STRING([--disable-postgresql-sdbc], 1762 [Disable the build of the PostgreSQL-SDBC driver.]) 1763) 1764 1765libo_FUZZ_ARG_ENABLE(lotuswordpro, 1766 AS_HELP_STRING([--disable-lotuswordpro], 1767 [Disable the build of the Lotus Word Pro filter.]), 1768,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes) 1769 1770libo_FUZZ_ARG_ENABLE(firebird-sdbc, 1771 AS_HELP_STRING([--disable-firebird-sdbc], 1772 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]), 1773,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes) 1774 1775AC_ARG_ENABLE(bogus-pkg-config, 1776 AS_HELP_STRING([--enable-bogus-pkg-config], 1777 [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]), 1778) 1779 1780AC_ARG_ENABLE(openssl, 1781 AS_HELP_STRING([--disable-openssl], 1782 [Disable using libssl/libcrypto from OpenSSL. If disabled, 1783 components will either use GNUTLS or NSS. Work in progress, 1784 use only if you are hacking on it.]), 1785,enable_openssl=yes) 1786 1787libo_FUZZ_ARG_ENABLE(cipher-openssl-backend, 1788 AS_HELP_STRING([--enable-cipher-openssl-backend], 1789 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality. 1790 Requires --enable-openssl.])) 1791 1792AC_ARG_ENABLE(library-bin-tar, 1793 AS_HELP_STRING([--enable-library-bin-tar], 1794 [Enable the building and reused of tarball of binary build for some 'external' libraries. 1795 Some libraries can save their build result in a tarball 1796 stored in TARFILE_LOCATION. That binary tarball is 1797 uniquely identified by the source tarball, 1798 the content of the config_host.mk file and the content 1799 of the top-level directory in core for that library 1800 If this option is enabled, then if such a tarfile exist, it will be untarred 1801 instead of the source tarfile, and the build step will be skipped for that 1802 library. 1803 If a proper tarfile does not exist, then the normal source-based 1804 build is done for that library and a proper binary tarfile is created 1805 for the next time.]), 1806) 1807 1808AC_ARG_ENABLE(dconf, 1809 AS_HELP_STRING([--disable-dconf], 1810 [Disable the dconf configuration backend (enabled by default where 1811 available).])) 1812 1813libo_FUZZ_ARG_ENABLE(formula-logger, 1814 AS_HELP_STRING( 1815 [--enable-formula-logger], 1816 [Enable formula logger for logging formula calculation flow in Calc.] 1817 ) 1818) 1819 1820AC_ARG_ENABLE(ldap, 1821 AS_HELP_STRING([--disable-ldap], 1822 [Disable LDAP support.]), 1823,enable_ldap=yes) 1824 1825AC_ARG_ENABLE(opencl, 1826 AS_HELP_STRING([--disable-opencl], 1827 [Disable OpenCL support.]), 1828,enable_opencl=yes) 1829 1830libo_FUZZ_ARG_ENABLE(librelogo, 1831 AS_HELP_STRING([--disable-librelogo], 1832 [Do not build LibreLogo.]), 1833,enable_librelogo=yes) 1834 1835dnl =================================================================== 1836dnl Optional Packages (--with/without-) 1837dnl =================================================================== 1838 1839AC_ARG_WITH(gcc-home, 1840 AS_HELP_STRING([--with-gcc-home], 1841 [Specify the location of gcc/g++ manually. This can be used in conjunction 1842 with --enable-icecream when icecream gcc/g++ wrappers are installed in a 1843 non-default path.]), 1844,) 1845 1846AC_ARG_WITH(gnu-patch, 1847 AS_HELP_STRING([--with-gnu-patch], 1848 [Specify location of GNU patch on Solaris or FreeBSD.]), 1849,) 1850 1851AC_ARG_WITH(build-platform-configure-options, 1852 AS_HELP_STRING([--with-build-platform-configure-options], 1853 [Specify options for the configure script run for the *build* platform in a cross-compilation]), 1854,) 1855 1856AC_ARG_WITH(gnu-cp, 1857 AS_HELP_STRING([--with-gnu-cp], 1858 [Specify location of GNU cp on Solaris or FreeBSD.]), 1859,) 1860 1861AC_ARG_WITH(external-tar, 1862 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>], 1863 [Specify an absolute path of where to find (and store) tarfiles.]), 1864 TARFILE_LOCATION=$withval , 1865) 1866 1867AC_ARG_WITH(referenced-git, 1868 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>], 1869 [Specify another checkout directory to reference. This makes use of 1870 git submodule update --reference, and saves a lot of diskspace 1871 when having multiple trees side-by-side.]), 1872 GIT_REFERENCE_SRC=$withval , 1873) 1874 1875AC_ARG_WITH(linked-git, 1876 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>], 1877 [Specify a directory where the repositories of submodules are located. 1878 This uses a method similar to git-new-workdir to get submodules.]), 1879 GIT_LINK_SRC=$withval , 1880) 1881 1882AC_ARG_WITH(galleries, 1883 AS_HELP_STRING([--with-galleries], 1884 [Specify how galleries should be built. It is possible either to 1885 build these internally from source ("build"), 1886 or to disable them ("no")]), 1887) 1888 1889AC_ARG_WITH(theme, 1890 AS_HELP_STRING([--with-theme="theme1 theme2..."], 1891 [Choose which themes to include. By default those themes with an '*' are included. 1892 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary, 1893 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]), 1894,) 1895 1896libo_FUZZ_ARG_WITH(helppack-integration, 1897 AS_HELP_STRING([--without-helppack-integration], 1898 [It will not integrate the helppacks to the installer 1899 of the product. Please use this switch to use the online help 1900 or separate help packages.]), 1901,) 1902 1903libo_FUZZ_ARG_WITH(fonts, 1904 AS_HELP_STRING([--without-fonts], 1905 [LibreOffice includes some third-party fonts to provide a reliable basis for 1906 help content, templates, samples, etc. When these fonts are already 1907 known to be available on the system then you should use this option.]), 1908,) 1909 1910AC_ARG_WITH(epm, 1911 AS_HELP_STRING([--with-epm], 1912 [Decides which epm to use. Default is to use the one from the system if 1913 one is built. When either this is not there or you say =internal epm 1914 will be built.]), 1915,) 1916 1917AC_ARG_WITH(package-format, 1918 AS_HELP_STRING([--with-package-format], 1919 [Specify package format(s) for LibreOffice installation sets. The 1920 implicit --without-package-format leads to no installation sets being 1921 generated. Possible values: aix, archive, bsd, deb, dmg, 1922 installed, msi, pkg, and rpm. 1923 Example: --with-package-format='deb rpm']), 1924,) 1925 1926AC_ARG_WITH(tls, 1927 AS_HELP_STRING([--with-tls], 1928 [Decides which TLS/SSL and cryptographic implementations to use for 1929 LibreOffice's code. Notice that this doesn't apply for depending 1930 libraries like "neon", for example. Default is to use NSS 1931 although OpenSSL is also possible. Notice that selecting NSS restricts 1932 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't 1933 restrict by now the usage of NSS in LO's code. Possible values: 1934 openssl, nss. Example: --with-tls="nss"]), 1935,) 1936 1937AC_ARG_WITH(system-libs, 1938 AS_HELP_STRING([--with-system-libs], 1939 [Use libraries already on system -- enables all --with-system-* flags.]), 1940,) 1941 1942AC_ARG_WITH(system-bzip2, 1943 AS_HELP_STRING([--with-system-bzip2], 1944 [Use bzip2 already on system. Used only when --enable-online-update=mar]),, 1945 [with_system_bzip2="$with_system_libs"]) 1946 1947AC_ARG_WITH(system-headers, 1948 AS_HELP_STRING([--with-system-headers], 1949 [Use headers already on system -- enables all --with-system-* flags for 1950 external packages whose headers are the only entities used i.e. 1951 boost/odbc/sane-header(s).]),, 1952 [with_system_headers="$with_system_libs"]) 1953 1954AC_ARG_WITH(system-jars, 1955 AS_HELP_STRING([--without-system-jars], 1956 [When building with --with-system-libs, also the needed jars are expected 1957 on the system. Use this to disable that]),, 1958 [with_system_jars="$with_system_libs"]) 1959 1960AC_ARG_WITH(system-cairo, 1961 AS_HELP_STRING([--with-system-cairo], 1962 [Use cairo libraries already on system. Happens automatically for 1963 (implicit) --enable-gtk3.])) 1964 1965AC_ARG_WITH(system-epoxy, 1966 AS_HELP_STRING([--with-system-epoxy], 1967 [Use epoxy libraries already on system. Happens automatically for 1968 (implicit) --enable-gtk3.]),, 1969 [with_system_epoxy="$with_system_libs"]) 1970 1971AC_ARG_WITH(myspell-dicts, 1972 AS_HELP_STRING([--with-myspell-dicts], 1973 [Adds myspell dictionaries to the LibreOffice installation set]), 1974,) 1975 1976AC_ARG_WITH(system-dicts, 1977 AS_HELP_STRING([--without-system-dicts], 1978 [Do not use dictionaries from system paths.]), 1979,) 1980 1981AC_ARG_WITH(external-dict-dir, 1982 AS_HELP_STRING([--with-external-dict-dir], 1983 [Specify external dictionary dir.]), 1984,) 1985 1986AC_ARG_WITH(external-hyph-dir, 1987 AS_HELP_STRING([--with-external-hyph-dir], 1988 [Specify external hyphenation pattern dir.]), 1989,) 1990 1991AC_ARG_WITH(external-thes-dir, 1992 AS_HELP_STRING([--with-external-thes-dir], 1993 [Specify external thesaurus dir.]), 1994,) 1995 1996AC_ARG_WITH(system-zlib, 1997 AS_HELP_STRING([--with-system-zlib], 1998 [Use zlib already on system.]),, 1999 [with_system_zlib=auto]) 2000 2001AC_ARG_WITH(system-jpeg, 2002 AS_HELP_STRING([--with-system-jpeg], 2003 [Use jpeg already on system.]),, 2004 [with_system_jpeg="$with_system_libs"]) 2005 2006AC_ARG_WITH(system-clucene, 2007 AS_HELP_STRING([--with-system-clucene], 2008 [Use clucene already on system.]),, 2009 [with_system_clucene="$with_system_libs"]) 2010 2011AC_ARG_WITH(system-expat, 2012 AS_HELP_STRING([--with-system-expat], 2013 [Use expat already on system.]),, 2014 [with_system_expat="$with_system_libs"]) 2015 2016AC_ARG_WITH(system-libxml, 2017 AS_HELP_STRING([--with-system-libxml], 2018 [Use libxml/libxslt already on system.]),, 2019 [with_system_libxml=auto]) 2020 2021AC_ARG_WITH(system-icu, 2022 AS_HELP_STRING([--with-system-icu], 2023 [Use icu already on system.]),, 2024 [with_system_icu="$with_system_libs"]) 2025 2026AC_ARG_WITH(system-ucpp, 2027 AS_HELP_STRING([--with-system-ucpp], 2028 [Use ucpp already on system.]),, 2029 []) 2030 2031AC_ARG_WITH(system-openldap, 2032 AS_HELP_STRING([--with-system-openldap], 2033 [Use the OpenLDAP LDAP SDK already on system.]),, 2034 [with_system_openldap="$with_system_libs"]) 2035 2036libo_FUZZ_ARG_ENABLE(poppler, 2037 AS_HELP_STRING([--disable-poppler], 2038 [Disable building Poppler.]) 2039) 2040 2041AC_ARG_WITH(system-poppler, 2042 AS_HELP_STRING([--with-system-poppler], 2043 [Use system poppler (only needed for PDF import).]),, 2044 [with_system_poppler="$with_system_libs"]) 2045 2046libo_FUZZ_ARG_ENABLE(gpgmepp, 2047 AS_HELP_STRING([--disable-gpgmepp], 2048 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.]) 2049) 2050 2051AC_ARG_WITH(system-gpgmepp, 2052 AS_HELP_STRING([--with-system-gpgmepp], 2053 [Use gpgmepp already on system]),, 2054 [with_system_gpgmepp="$with_system_libs"]) 2055 2056AC_ARG_WITH(system-apache-commons, 2057 AS_HELP_STRING([--with-system-apache-commons], 2058 [Use Apache commons libraries already on system.]),, 2059 [with_system_apache_commons="$with_system_jars"]) 2060 2061AC_ARG_WITH(system-mariadb, 2062 AS_HELP_STRING([--with-system-mariadb], 2063 [Use MariaDB/MySQL libraries already on system.]),, 2064 [with_system_mariadb="$with_system_libs"]) 2065 2066AC_ARG_ENABLE(bundle-mariadb, 2067 AS_HELP_STRING([--enable-bundle-mariadb], 2068 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.]) 2069) 2070 2071AC_ARG_WITH(system-postgresql, 2072 AS_HELP_STRING([--with-system-postgresql], 2073 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC 2074 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),, 2075 [with_system_postgresql="$with_system_libs"]) 2076 2077AC_ARG_WITH(libpq-path, 2078 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>], 2079 [Use this PostgreSQL C interface (libpq) installation for building 2080 the PostgreSQL-SDBC extension.]), 2081,) 2082 2083AC_ARG_WITH(system-firebird, 2084 AS_HELP_STRING([--with-system-firebird], 2085 [Use Firebird libraries already on system, for building the Firebird-SDBC 2086 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),, 2087 [with_system_firebird="$with_system_libs"]) 2088 2089AC_ARG_WITH(system-libtommath, 2090 AS_HELP_STRING([--with-system-libtommath], 2091 [Use libtommath already on system]),, 2092 [with_system_libtommath="$with_system_libs"]) 2093 2094AC_ARG_WITH(system-hsqldb, 2095 AS_HELP_STRING([--with-system-hsqldb], 2096 [Use hsqldb already on system.])) 2097 2098AC_ARG_WITH(hsqldb-jar, 2099 AS_HELP_STRING([--with-hsqldb-jar=JARFILE], 2100 [Specify path to jarfile manually.]), 2101 HSQLDB_JAR=$withval) 2102 2103libo_FUZZ_ARG_ENABLE(scripting-beanshell, 2104 AS_HELP_STRING([--disable-scripting-beanshell], 2105 [Disable support for scripts in BeanShell.]), 2106, 2107) 2108 2109AC_ARG_WITH(system-beanshell, 2110 AS_HELP_STRING([--with-system-beanshell], 2111 [Use beanshell already on system.]),, 2112 [with_system_beanshell="$with_system_jars"]) 2113 2114AC_ARG_WITH(beanshell-jar, 2115 AS_HELP_STRING([--with-beanshell-jar=JARFILE], 2116 [Specify path to jarfile manually.]), 2117 BSH_JAR=$withval) 2118 2119libo_FUZZ_ARG_ENABLE(scripting-javascript, 2120 AS_HELP_STRING([--disable-scripting-javascript], 2121 [Disable support for scripts in JavaScript.]), 2122, 2123) 2124 2125AC_ARG_WITH(system-rhino, 2126 AS_HELP_STRING([--with-system-rhino], 2127 [Use rhino already on system.]),,) 2128# [with_system_rhino="$with_system_jars"]) 2129# Above is not used as we have different debug interface 2130# patched into internal rhino. This code needs to be fixed 2131# before we can enable it by default. 2132 2133AC_ARG_WITH(rhino-jar, 2134 AS_HELP_STRING([--with-rhino-jar=JARFILE], 2135 [Specify path to jarfile manually.]), 2136 RHINO_JAR=$withval) 2137 2138AC_ARG_WITH(commons-logging-jar, 2139 AS_HELP_STRING([--with-commons-logging-jar=JARFILE], 2140 [Specify path to jarfile manually.]), 2141 COMMONS_LOGGING_JAR=$withval) 2142 2143AC_ARG_WITH(system-jfreereport, 2144 AS_HELP_STRING([--with-system-jfreereport], 2145 [Use JFreeReport already on system.]),, 2146 [with_system_jfreereport="$with_system_jars"]) 2147 2148AC_ARG_WITH(sac-jar, 2149 AS_HELP_STRING([--with-sac-jar=JARFILE], 2150 [Specify path to jarfile manually.]), 2151 SAC_JAR=$withval) 2152 2153AC_ARG_WITH(libxml-jar, 2154 AS_HELP_STRING([--with-libxml-jar=JARFILE], 2155 [Specify path to jarfile manually.]), 2156 LIBXML_JAR=$withval) 2157 2158AC_ARG_WITH(flute-jar, 2159 AS_HELP_STRING([--with-flute-jar=JARFILE], 2160 [Specify path to jarfile manually.]), 2161 FLUTE_JAR=$withval) 2162 2163AC_ARG_WITH(jfreereport-jar, 2164 AS_HELP_STRING([--with-jfreereport-jar=JARFILE], 2165 [Specify path to jarfile manually.]), 2166 JFREEREPORT_JAR=$withval) 2167 2168AC_ARG_WITH(liblayout-jar, 2169 AS_HELP_STRING([--with-liblayout-jar=JARFILE], 2170 [Specify path to jarfile manually.]), 2171 LIBLAYOUT_JAR=$withval) 2172 2173AC_ARG_WITH(libloader-jar, 2174 AS_HELP_STRING([--with-libloader-jar=JARFILE], 2175 [Specify path to jarfile manually.]), 2176 LIBLOADER_JAR=$withval) 2177 2178AC_ARG_WITH(libformula-jar, 2179 AS_HELP_STRING([--with-libformula-jar=JARFILE], 2180 [Specify path to jarfile manually.]), 2181 LIBFORMULA_JAR=$withval) 2182 2183AC_ARG_WITH(librepository-jar, 2184 AS_HELP_STRING([--with-librepository-jar=JARFILE], 2185 [Specify path to jarfile manually.]), 2186 LIBREPOSITORY_JAR=$withval) 2187 2188AC_ARG_WITH(libfonts-jar, 2189 AS_HELP_STRING([--with-libfonts-jar=JARFILE], 2190 [Specify path to jarfile manually.]), 2191 LIBFONTS_JAR=$withval) 2192 2193AC_ARG_WITH(libserializer-jar, 2194 AS_HELP_STRING([--with-libserializer-jar=JARFILE], 2195 [Specify path to jarfile manually.]), 2196 LIBSERIALIZER_JAR=$withval) 2197 2198AC_ARG_WITH(libbase-jar, 2199 AS_HELP_STRING([--with-libbase-jar=JARFILE], 2200 [Specify path to jarfile manually.]), 2201 LIBBASE_JAR=$withval) 2202 2203AC_ARG_WITH(system-odbc, 2204 AS_HELP_STRING([--with-system-odbc], 2205 [Use the odbc headers already on system.]),, 2206 [with_system_odbc="auto"]) 2207 2208AC_ARG_WITH(system-sane, 2209 AS_HELP_STRING([--with-system-sane], 2210 [Use sane.h already on system.]),, 2211 [with_system_sane="$with_system_headers"]) 2212 2213AC_ARG_WITH(system-bluez, 2214 AS_HELP_STRING([--with-system-bluez], 2215 [Use bluetooth.h already on system.]),, 2216 [with_system_bluez="$with_system_headers"]) 2217 2218AC_ARG_WITH(system-curl, 2219 AS_HELP_STRING([--with-system-curl], 2220 [Use curl already on system.]),, 2221 [with_system_curl=auto]) 2222 2223AC_ARG_WITH(system-boost, 2224 AS_HELP_STRING([--with-system-boost], 2225 [Use boost already on system.]),, 2226 [with_system_boost="$with_system_headers"]) 2227 2228AC_ARG_WITH(system-glm, 2229 AS_HELP_STRING([--with-system-glm], 2230 [Use glm already on system.]),, 2231 [with_system_glm="$with_system_headers"]) 2232 2233AC_ARG_WITH(system-hunspell, 2234 AS_HELP_STRING([--with-system-hunspell], 2235 [Use libhunspell already on system.]),, 2236 [with_system_hunspell="$with_system_libs"]) 2237 2238libo_FUZZ_ARG_ENABLE(zxing, 2239 AS_HELP_STRING([--disable-zxing], 2240 [Disable use of zxing external library.])) 2241 2242AC_ARG_WITH(system-zxing, 2243 AS_HELP_STRING([--with-system-zxing], 2244 [Use libzxing already on system.]),, 2245 [with_system_zxing="$with_system_libs"]) 2246 2247AC_ARG_WITH(system-box2d, 2248 AS_HELP_STRING([--with-system-box2d], 2249 [Use box2d already on system.]),, 2250 [with_system_box2d="$with_system_libs"]) 2251 2252AC_ARG_WITH(system-mythes, 2253 AS_HELP_STRING([--with-system-mythes], 2254 [Use mythes already on system.]),, 2255 [with_system_mythes="$with_system_libs"]) 2256 2257AC_ARG_WITH(system-altlinuxhyph, 2258 AS_HELP_STRING([--with-system-altlinuxhyph], 2259 [Use ALTLinuxhyph already on system.]),, 2260 [with_system_altlinuxhyph="$with_system_libs"]) 2261 2262AC_ARG_WITH(system-lpsolve, 2263 AS_HELP_STRING([--with-system-lpsolve], 2264 [Use lpsolve already on system.]),, 2265 [with_system_lpsolve="$with_system_libs"]) 2266 2267AC_ARG_WITH(system-coinmp, 2268 AS_HELP_STRING([--with-system-coinmp], 2269 [Use CoinMP already on system.]),, 2270 [with_system_coinmp="$with_system_libs"]) 2271 2272AC_ARG_WITH(system-liblangtag, 2273 AS_HELP_STRING([--with-system-liblangtag], 2274 [Use liblangtag library already on system.]),, 2275 [with_system_liblangtag="$with_system_libs"]) 2276 2277AC_ARG_WITH(webdav, 2278 AS_HELP_STRING([--with-webdav], 2279 [Specify which library to use for webdav implementation. 2280 Possible values: "neon", "serf", "no". The default value is "neon". 2281 Example: --with-webdav="serf"]), 2282 WITH_WEBDAV=$withval, 2283 WITH_WEBDAV="neon") 2284 2285AC_ARG_WITH(linker-hash-style, 2286 AS_HELP_STRING([--with-linker-hash-style], 2287 [Use linker with --hash-style=<style> when linking shared objects. 2288 Possible values: "sysv", "gnu", "both". The default value is "gnu" 2289 if supported on the build system, and "sysv" otherwise.])) 2290 2291AC_ARG_WITH(jdk-home, 2292 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>], 2293 [If you have installed JDK 9 or later on your system please supply the 2294 path here. Note that this is not the location of the java command but the 2295 location of the entire distribution. In case of cross-compiling, this 2296 is the JDK of the host os. Use --with-build-platform-configure-options 2297 to point to a different build platform JDK.]), 2298,) 2299 2300AC_ARG_WITH(help, 2301 AS_HELP_STRING([--with-help], 2302 [Enable the build of help. There is a special parameter "common" that 2303 can be used to bundle only the common part, .e.g help-specific icons. 2304 This is useful when you build the helpcontent separately.]) 2305 [ 2306 Usage: --with-help build the old local help 2307 --without-help no local help (default) 2308 --with-help=html build the new HTML local help 2309 --with-help=online build the new HTML online help 2310 ], 2311,) 2312 2313AC_ARG_WITH(omindex, 2314 AS_HELP_STRING([--with-omindex], 2315 [Enable the support of xapian-omega index for online help.]) 2316 [ 2317 Usage: --with-omindex=server prepare the pages for omindex 2318 but let xapian-omega be built in server. 2319 --with-omindex=noxap do not prepare online pages 2320 for xapian-omega 2321 ], 2322,) 2323 2324libo_FUZZ_ARG_WITH(java, 2325 AS_HELP_STRING([--with-java=<java command>], 2326 [Specify the name of the Java interpreter command. Typically "java" 2327 which is the default. 2328 2329 To build without support for Java components, applets, accessibility 2330 or the XML filters written in Java, use --without-java or --with-java=no.]), 2331 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ], 2332 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ] 2333) 2334 2335AC_ARG_WITH(jvm-path, 2336 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>], 2337 [Use a specific JVM search path at runtime. 2338 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]), 2339,) 2340 2341AC_ARG_WITH(ant-home, 2342 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>], 2343 [If you have installed Apache Ant on your system, please supply the path here. 2344 Note that this is not the location of the Ant binary but the location 2345 of the entire distribution.]), 2346,) 2347 2348AC_ARG_WITH(symbol-config, 2349 AS_HELP_STRING([--with-symbol-config], 2350 [Configuration for the crashreport symbol upload]), 2351 [], 2352 [with_symbol_config=no]) 2353 2354AC_ARG_WITH(export-validation, 2355 AS_HELP_STRING([--without-export-validation], 2356 [Disable validating OOXML and ODF files as exported from in-tree tests.]), 2357,with_export_validation=auto) 2358 2359AC_ARG_WITH(bffvalidator, 2360 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>], 2361 [Enables export validation for Microsoft Binary formats (doc, xls, ppt). 2362 Requires installed Microsoft Office Binary File Format Validator. 2363 Note: export-validation (--with-export-validation) is required to be turned on. 2364 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]), 2365,with_bffvalidator=no) 2366 2367libo_FUZZ_ARG_WITH(junit, 2368 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>], 2369 [Specifies the JUnit 4 jar file to use for JUnit-based tests. 2370 --without-junit disables those tests. Not relevant in the --without-java case.]), 2371,with_junit=yes) 2372 2373AC_ARG_WITH(hamcrest, 2374 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>], 2375 [Specifies the hamcrest jar file to use for JUnit-based tests. 2376 --without-junit disables those tests. Not relevant in the --without-java case.]), 2377,with_hamcrest=yes) 2378 2379AC_ARG_WITH(perl-home, 2380 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>], 2381 [If you have installed Perl 5 Distribution, on your system, please 2382 supply the path here. Note that this is not the location of the Perl 2383 binary but the location of the entire distribution.]), 2384,) 2385 2386libo_FUZZ_ARG_WITH(doxygen, 2387 AS_HELP_STRING( 2388 [--with-doxygen=<absolute path to doxygen executable>], 2389 [Specifies the doxygen executable to use when generating ODK C/C++ 2390 documentation. --without-doxygen disables generation of ODK C/C++ 2391 documentation. Not relevant in the --disable-odk case.]), 2392,with_doxygen=yes) 2393 2394AC_ARG_WITH(visual-studio, 2395 AS_HELP_STRING([--with-visual-studio=<2019>], 2396 [Specify which Visual Studio version to use in case several are 2397 installed. Currently only 2019 (default) is supported.]), 2398,) 2399 2400AC_ARG_WITH(windows-sdk, 2401 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>], 2402 [Specify which Windows SDK, or "Windows Kit", version to use 2403 in case the one that came with the selected Visual Studio 2404 is not what you want for some reason. Note that not all compiler/SDK 2405 combinations are supported. The intent is that this option should not 2406 be needed.]), 2407,) 2408 2409AC_ARG_WITH(lang, 2410 AS_HELP_STRING([--with-lang="es sw tu cs sk"], 2411 [Use this option to build LibreOffice with additional UI language support. 2412 English (US) is always included by default. 2413 Separate multiple languages with space. 2414 For all languages, use --with-lang=ALL.]), 2415,) 2416 2417AC_ARG_WITH(locales, 2418 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"], 2419 [Use this option to limit the locale information built in. 2420 Separate multiple locales with space. 2421 Very experimental and might well break stuff. 2422 Just a desperate measure to shrink code and data size. 2423 By default all the locales available is included. 2424 This option is completely unrelated to --with-lang.]) 2425 [ 2426 Affects also our character encoding conversion 2427 tables for encodings mainly targeted for a 2428 particular locale, like EUC-CN and EUC-TW for 2429 zh, ISO-2022-JP for ja. 2430 2431 Affects also our add-on break iterator data for 2432 some languages. 2433 2434 For the default, all locales, don't use this switch at all. 2435 Specifying just the language part of a locale means all matching 2436 locales will be included. 2437 ], 2438,) 2439 2440# Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5 2441libo_FUZZ_ARG_WITH(krb5, 2442 AS_HELP_STRING([--with-krb5], 2443 [Enable MIT Kerberos 5 support in modules that support it. 2444 By default automatically enabled on platforms 2445 where a good system Kerberos 5 is available.]), 2446,) 2447 2448libo_FUZZ_ARG_WITH(gssapi, 2449 AS_HELP_STRING([--with-gssapi], 2450 [Enable GSSAPI support in modules that support it. 2451 By default automatically enabled on platforms 2452 where a good system GSSAPI is available.]), 2453,) 2454 2455AC_ARG_WITH(iwyu, 2456 AS_HELP_STRING([--with-iwyu], 2457 [Use given IWYU binary path to check unneeded includes instead of building. 2458 Use only if you are hacking on it.]), 2459,) 2460 2461libo_FUZZ_ARG_WITH(lxml, 2462 AS_HELP_STRING([--without-lxml], 2463 [gla11y will use python lxml when available, potentially building a local copy if necessary. 2464 --without-lxml tells it to not use python lxml at all, which means that gla11y will only 2465 report widget classes and ids.]), 2466,) 2467 2468libo_FUZZ_ARG_WITH(latest-c++, 2469 AS_HELP_STRING([--with-latest-c++], 2470 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a 2471 published standard.]),, 2472 [with_latest_c__=no]) 2473 2474dnl =================================================================== 2475dnl Branding 2476dnl =================================================================== 2477 2478AC_ARG_WITH(branding, 2479 AS_HELP_STRING([--with-branding=/path/to/images], 2480 [Use given path to retrieve branding images set.]) 2481 [ 2482 Search for intro.png about.svg and logo.svg. 2483 If any is missing, default ones will be used instead. 2484 2485 Search also progress.conf for progress 2486 settings on intro screen : 2487 2488 PROGRESSBARCOLOR="255,255,255" Set color of 2489 progress bar. Comma separated RGB decimal values. 2490 PROGRESSSIZE="407,6" Set size of progress bar. 2491 Comma separated decimal values (width, height). 2492 PROGRESSPOSITION="61,317" Set position of progress 2493 bar from left,top. Comma separated decimal values. 2494 PROGRESSFRAMECOLOR="20,136,3" Set color of progress 2495 bar frame. Comma separated RGB decimal values. 2496 PROGRESSTEXTCOLOR="0,0,0" Set color of progress 2497 bar text. Comma separated RGB decimal values. 2498 PROGRESSTEXTBASELINE="287" Set vertical position of 2499 progress bar text from top. Decimal value. 2500 2501 Default values will be used if not found. 2502 ], 2503,) 2504 2505 2506AC_ARG_WITH(extra-buildid, 2507 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"], 2508 [Show addition build identification in about dialog.]), 2509,) 2510 2511 2512AC_ARG_WITH(vendor, 2513 AS_HELP_STRING([--with-vendor="John the Builder"], 2514 [Set vendor of the build.]), 2515,) 2516 2517AC_ARG_WITH(android-package-name, 2518 AS_HELP_STRING([--with-android-package-name="org.libreoffice"], 2519 [Set Android package name of the build.]), 2520,) 2521 2522AC_ARG_WITH(compat-oowrappers, 2523 AS_HELP_STRING([--with-compat-oowrappers], 2524 [Install oo* wrappers in parallel with 2525 lo* ones to keep backward compatibility. 2526 Has effect only with make distro-pack-install]), 2527,) 2528 2529AC_ARG_WITH(os-version, 2530 AS_HELP_STRING([--with-os-version=<OSVERSION>], 2531 [For FreeBSD users, use this option to override the detected OSVERSION.]), 2532,) 2533 2534AC_ARG_WITH(idlc-cpp, 2535 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>], 2536 [Specify the C Preprocessor to use for idlc. Default is ucpp.]), 2537,) 2538 2539AC_ARG_WITH(parallelism, 2540 AS_HELP_STRING([--with-parallelism], 2541 [Number of jobs to run simultaneously during build. Parallel builds can 2542 save a lot of time on multi-cpu machines. Defaults to the number of 2543 CPUs on the machine, unless you configure --enable-icecream - then to 2544 40.]), 2545,) 2546 2547AC_ARG_WITH(all-tarballs, 2548 AS_HELP_STRING([--with-all-tarballs], 2549 [Download all external tarballs unconditionally])) 2550 2551AC_ARG_WITH(gdrive-client-id, 2552 AS_HELP_STRING([--with-gdrive-client-id], 2553 [Provides the client id of the application for OAuth2 authentication 2554 on Google Drive. If either this or --with-gdrive-client-secret is 2555 empty, the feature will be disabled]), 2556) 2557 2558AC_ARG_WITH(gdrive-client-secret, 2559 AS_HELP_STRING([--with-gdrive-client-secret], 2560 [Provides the client secret of the application for OAuth2 2561 authentication on Google Drive. If either this or 2562 --with-gdrive-client-id is empty, the feature will be disabled]), 2563) 2564 2565AC_ARG_WITH(alfresco-cloud-client-id, 2566 AS_HELP_STRING([--with-alfresco-cloud-client-id], 2567 [Provides the client id of the application for OAuth2 authentication 2568 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is 2569 empty, the feature will be disabled]), 2570) 2571 2572AC_ARG_WITH(alfresco-cloud-client-secret, 2573 AS_HELP_STRING([--with-alfresco-cloud-client-secret], 2574 [Provides the client secret of the application for OAuth2 2575 authentication on Alfresco Cloud. If either this or 2576 --with-alfresco-cloud-client-id is empty, the feature will be disabled]), 2577) 2578 2579AC_ARG_WITH(onedrive-client-id, 2580 AS_HELP_STRING([--with-onedrive-client-id], 2581 [Provides the client id of the application for OAuth2 authentication 2582 on OneDrive. If either this or --with-onedrive-client-secret is 2583 empty, the feature will be disabled]), 2584) 2585 2586AC_ARG_WITH(onedrive-client-secret, 2587 AS_HELP_STRING([--with-onedrive-client-secret], 2588 [Provides the client secret of the application for OAuth2 2589 authentication on OneDrive. If either this or 2590 --with-onedrive-client-id is empty, the feature will be disabled]), 2591) 2592dnl =================================================================== 2593dnl Do we want to use pre-build binary tarball for recompile 2594dnl =================================================================== 2595 2596if test "$enable_library_bin_tar" = "yes" ; then 2597 USE_LIBRARY_BIN_TAR=TRUE 2598else 2599 USE_LIBRARY_BIN_TAR= 2600fi 2601AC_SUBST(USE_LIBRARY_BIN_TAR) 2602 2603dnl =================================================================== 2604dnl Test whether build target is Release Build 2605dnl =================================================================== 2606AC_MSG_CHECKING([whether build target is Release Build]) 2607if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then 2608 AC_MSG_RESULT([no]) 2609 ENABLE_RELEASE_BUILD= 2610 GET_TASK_ALLOW_ENTITLEMENT=' 2611 <!-- We want to be able to debug a hardened process when not building for release --> 2612 <key>com.apple.security.get-task-allow</key> 2613 <true/>' 2614else 2615 AC_MSG_RESULT([yes]) 2616 ENABLE_RELEASE_BUILD=TRUE 2617 GET_TASK_ALLOW_ENTITLEMENT='' 2618fi 2619AC_SUBST(ENABLE_RELEASE_BUILD) 2620AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT) 2621 2622AC_MSG_CHECKING([whether to build a Community flavor]) 2623if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then 2624 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR) 2625 AC_MSG_RESULT([yes]) 2626else 2627 AC_MSG_RESULT([no]) 2628fi 2629 2630dnl =================================================================== 2631dnl Test whether to sign Windows Build 2632dnl =================================================================== 2633AC_MSG_CHECKING([whether to sign windows build]) 2634if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then 2635 AC_MSG_RESULT([yes]) 2636 WINDOWS_BUILD_SIGNING="TRUE" 2637else 2638 AC_MSG_RESULT([no]) 2639 WINDOWS_BUILD_SIGNING="FALSE" 2640fi 2641AC_SUBST(WINDOWS_BUILD_SIGNING) 2642 2643dnl =================================================================== 2644dnl MacOSX build and runtime environment options 2645dnl =================================================================== 2646 2647AC_ARG_WITH(macosx-sdk, 2648 AS_HELP_STRING([--with-macosx-sdk=<version>], 2649 [Prefer a specific SDK for building.]) 2650 [ 2651 If the requested SDK is not available, a search for the oldest one will be done. 2652 With current Xcode versions, only the latest SDK is included, so this option is 2653 not terribly useful. It works fine to build with a new SDK and run the result 2654 on an older OS. 2655 2656 e. g.: --with-macosx-sdk=10.10 2657 2658 there are 3 options to control the MacOSX build: 2659 --with-macosx-sdk (referred as 'sdk' below) 2660 --with-macosx-version-min-required (referred as 'min' below) 2661 --with-macosx-version-max-allowed (referred as 'max' below) 2662 2663 the connection between these value and the default they take is as follow: 2664 ( ? means not specified on the command line, s means the SDK version found, 2665 constraint: 8 <= x <= y <= z) 2666 2667 ========================================== 2668 command line || config result 2669 ========================================== 2670 min | max | sdk || min | max | sdk | 2671 ? | ? | ? || 10.10 | 10.s | 10.s | 2672 ? | ? | 10.x || 10.10 | 10.x | 10.x | 2673 ? | 10.x | ? || 10.10 | 10.s | 10.s | 2674 ? | 10.x | 10.y || 10.10 | 10.x | 10.y | 2675 10.x | ? | ? || 10.x | 10.s | 10.s | 2676 10.x | ? | 10.y || 10.x | 10.y | 10.y | 2677 10.x | 10.y | ? || 10.x | 10.y | 10.y | 2678 10.x | 10.y | 10.z || 10.x | 10.y | 10.z | 2679 2680 2681 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html 2682 for a detailed technical explanation of these variables 2683 2684 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'. 2685 ], 2686,) 2687 2688AC_ARG_WITH(macosx-version-min-required, 2689 AS_HELP_STRING([--with-macosx-version-min-required=<version>], 2690 [set the minimum OS version needed to run the built LibreOffice]) 2691 [ 2692 e. g.: --with-macosx-version-min-required=10.10 2693 see --with-macosx-sdk for more info 2694 ], 2695,) 2696 2697AC_ARG_WITH(macosx-version-max-allowed, 2698 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>], 2699 [set the maximum allowed OS version the LibreOffice compilation can use APIs from]) 2700 [ 2701 e. g.: --with-macosx-version-max-allowed=10.10 2702 see --with-macosx-sdk for more info 2703 ], 2704,) 2705 2706 2707dnl =================================================================== 2708dnl options for stuff used during cross-compilation build 2709dnl Not quite superseded by --with-build-platform-configure-options. 2710dnl TODO: check, if the "force" option is still needed anywhere. 2711dnl =================================================================== 2712 2713AC_ARG_WITH(system-icu-for-build, 2714 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force], 2715 [Use icu already on system for build tools (cross-compilation only).])) 2716 2717 2718dnl =================================================================== 2719dnl Check for incompatible options set by fuzzing, and reset those 2720dnl automatically to working combinations 2721dnl =================================================================== 2722 2723if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \ 2724 "$enable_dbus" != "$enable_avahi"; then 2725 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus]) 2726 enable_avahi=$enable_dbus 2727fi 2728 2729add_lopath_after () 2730{ 2731 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then 2732 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1" 2733 fi 2734} 2735 2736add_lopath_before () 2737{ 2738 local IFS=${P_SEP} 2739 local path_cleanup 2740 local dir 2741 for dir in $LO_PATH ; do 2742 if test "$dir" != "$1" ; then 2743 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir 2744 fi 2745 done 2746 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}" 2747} 2748 2749dnl =================================================================== 2750dnl check for required programs (grep, awk, sed, bash) 2751dnl =================================================================== 2752 2753pathmunge () 2754{ 2755 local new_path 2756 if test -n "$1"; then 2757 if test "$build_os" = "cygwin"; then 2758 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 2759 PathFormat "$1" 2760 new_path=`cygpath -sm "$formatted_path"` 2761 else 2762 PathFormat "$1" 2763 new_path=`cygpath -u "$formatted_path"` 2764 fi 2765 else 2766 new_path="$1" 2767 fi 2768 if test "$2" = "after"; then 2769 add_lopath_after "$new_path" 2770 else 2771 add_lopath_before "$new_path" 2772 fi 2773 fi 2774} 2775 2776AC_PROG_AWK 2777AC_PATH_PROG( AWK, $AWK) 2778if test -z "$AWK"; then 2779 AC_MSG_ERROR([install awk to run this script]) 2780fi 2781 2782AC_PATH_PROG(BASH, bash) 2783if test -z "$BASH"; then 2784 AC_MSG_ERROR([bash not found in \$PATH]) 2785fi 2786AC_SUBST(BASH) 2787 2788AC_MSG_CHECKING([for GNU or BSD tar]) 2789for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do 2790 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null 2791 if test $? -eq 0; then 2792 GNUTAR=$a 2793 break 2794 fi 2795done 2796AC_MSG_RESULT($GNUTAR) 2797if test -z "$GNUTAR"; then 2798 AC_MSG_ERROR([not found. install GNU or BSD tar.]) 2799fi 2800AC_SUBST(GNUTAR) 2801 2802AC_MSG_CHECKING([for tar's option to strip components]) 2803$GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null 2804if test $? -eq 0; then 2805 STRIP_COMPONENTS="--strip-components" 2806else 2807 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null 2808 if test $? -eq 0; then 2809 STRIP_COMPONENTS="--strip-path" 2810 else 2811 STRIP_COMPONENTS="unsupported" 2812 fi 2813fi 2814AC_MSG_RESULT($STRIP_COMPONENTS) 2815if test x$STRIP_COMPONENTS = xunsupported; then 2816 AC_MSG_ERROR([you need a tar that is able to strip components.]) 2817fi 2818AC_SUBST(STRIP_COMPONENTS) 2819 2820dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal" 2821dnl desktop OSes from "mobile" ones. 2822 2823dnl We assume that a non-DESKTOP build type is also a non-NATIVE one. 2824dnl In other words, that when building for an OS that is not a 2825dnl "desktop" one but a "mobile" one, we are always cross-compiling. 2826 2827dnl Note the direction of the implication; there is no assumption that 2828dnl cross-compiling would imply a non-desktop OS. 2829 2830if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then 2831 BUILD_TYPE="$BUILD_TYPE DESKTOP" 2832 AC_DEFINE(HAVE_FEATURE_DESKTOP) 2833 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT) 2834fi 2835 2836# Whether to build "avmedia" functionality or not. 2837 2838if test -z "$enable_avmedia"; then 2839 enable_avmedia=yes 2840fi 2841 2842BUILD_TYPE="$BUILD_TYPE AVMEDIA" 2843if test "$enable_avmedia" = yes; then 2844 AC_DEFINE(HAVE_FEATURE_AVMEDIA) 2845else 2846 USE_AVMEDIA_DUMMY='TRUE' 2847fi 2848AC_SUBST(USE_AVMEDIA_DUMMY) 2849 2850# Decide whether to build database connectivity stuff (including 2851# Base) or not. We probably don't want to on non-desktop OSes. 2852if test -z "$enable_database_connectivity"; then 2853 # --disable-database-connectivity is unfinished work in progress 2854 # and the iOS test app doesn't link if we actually try to use it. 2855 # if test $_os != iOS -a $_os != Android; then 2856 if test $_os != iOS; then 2857 enable_database_connectivity=yes 2858 fi 2859fi 2860 2861if test "$enable_database_connectivity" = yes; then 2862 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY" 2863 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY) 2864fi 2865 2866if test -z "$enable_extensions"; then 2867 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions. 2868 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then 2869 enable_extensions=yes 2870 fi 2871fi 2872 2873if test "$enable_extensions" = yes; then 2874 BUILD_TYPE="$BUILD_TYPE EXTENSIONS" 2875 AC_DEFINE(HAVE_FEATURE_EXTENSIONS) 2876fi 2877 2878if test -z "$enable_scripting"; then 2879 # Disable scripting for iOS unless specifically overridden 2880 # with --enable-scripting. 2881 if test $_os != iOS; then 2882 enable_scripting=yes 2883 fi 2884fi 2885 2886DISABLE_SCRIPTING='' 2887if test "$enable_scripting" = yes; then 2888 BUILD_TYPE="$BUILD_TYPE SCRIPTING" 2889 AC_DEFINE(HAVE_FEATURE_SCRIPTING) 2890else 2891 DISABLE_SCRIPTING='TRUE' 2892 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING" 2893fi 2894 2895if test $_os = iOS -o $_os = Android; then 2896 # Disable dynamic_loading always for iOS and Android 2897 enable_dynamic_loading=no 2898elif test -z "$enable_dynamic_loading"; then 2899 # Otherwise enable it unless specifically disabled 2900 enable_dynamic_loading=yes 2901fi 2902 2903DISABLE_DYNLOADING='' 2904if test "$enable_dynamic_loading" = yes; then 2905 BUILD_TYPE="$BUILD_TYPE DYNLOADING" 2906else 2907 DISABLE_DYNLOADING='TRUE' 2908fi 2909AC_SUBST(DISABLE_DYNLOADING) 2910 2911# remember SYSBASE value 2912AC_SUBST(SYSBASE) 2913 2914dnl =================================================================== 2915dnl Sort out various gallery compilation options 2916dnl =================================================================== 2917WITH_GALLERY_BUILD=TRUE 2918AC_MSG_CHECKING([how to build and package galleries]) 2919if test -n "${with_galleries}"; then 2920 if test "$with_galleries" = "build"; then 2921 AC_MSG_RESULT([build from source images internally]) 2922 elif test "$with_galleries" = "no"; then 2923 WITH_GALLERY_BUILD= 2924 AC_MSG_RESULT([disable non-internal gallery build]) 2925 else 2926 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries]) 2927 fi 2928else 2929 if test $_os != iOS -a $_os != Android; then 2930 AC_MSG_RESULT([internal src images for desktop]) 2931 else 2932 WITH_GALLERY_BUILD= 2933 AC_MSG_RESULT([disable src image build]) 2934 fi 2935fi 2936AC_SUBST(WITH_GALLERY_BUILD) 2937 2938dnl =================================================================== 2939dnl Checks if ccache is available 2940dnl =================================================================== 2941CCACHE_DEPEND_MODE= 2942if test "$_os" = "WINNT"; then 2943 # on windows/VC build do not use ccache 2944 CCACHE="" 2945elif test "$enable_ccache" = "no"; then 2946 CCACHE="" 2947elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then 2948 case "%$CC%$CXX%" in 2949 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc), 2950 # assume that's good then 2951 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*) 2952 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX]) 2953 CCACHE_DEPEND_MODE=1 2954 ;; 2955 *) 2956 AC_PATH_PROG([CCACHE],[ccache],[not found]) 2957 if test "$CCACHE" = "not found"; then 2958 CCACHE="" 2959 else 2960 CCACHE_DEPEND_MODE=1 2961 # Need to check for ccache version: otherwise prevents 2962 # caching of the results (like "-x objective-c++" for Mac) 2963 if test $_os = Darwin -o $_os = iOS; then 2964 # Check ccache version 2965 AC_MSG_CHECKING([whether version of ccache is suitable]) 2966 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'` 2967 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` 2968 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then 2969 AC_MSG_RESULT([yes, $CCACHE_VERSION]) 2970 else 2971 AC_MSG_RESULT([no, $CCACHE_VERSION]) 2972 CCACHE="" 2973 CCACHE_DEPEND_MODE= 2974 fi 2975 fi 2976 fi 2977 ;; 2978 esac 2979else 2980 CCACHE="" 2981fi 2982if test "$enable_ccache" = "nodepend"; then 2983 CCACHE_DEPEND_MODE="" 2984fi 2985AC_SUBST(CCACHE_DEPEND_MODE) 2986 2987if test "$CCACHE" != ""; then 2988 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//']) 2989 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//') 2990 if test "$ccache_size" = ""; then 2991 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//') 2992 if test "$ccache_size" = ""; then 2993 ccache_size=0 2994 fi 2995 # we could not determine the size or it was less than 1GB -> disable auto-ccache 2996 if test $ccache_size -lt 1024; then 2997 CCACHE="" 2998 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection]) 2999 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled" 3000 else 3001 # warn that ccache may be too small for debug build 3002 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build]) 3003 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build" 3004 fi 3005 else 3006 if test $ccache_size -lt 5; then 3007 #warn that ccache may be too small for debug build 3008 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build]) 3009 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build" 3010 fi 3011 fi 3012fi 3013 3014dnl =================================================================== 3015dnl Checks for C compiler, 3016dnl The check for the C++ compiler is later on. 3017dnl =================================================================== 3018if test "$_os" != "WINNT"; then 3019 GCC_HOME_SET="true" 3020 AC_MSG_CHECKING([gcc home]) 3021 if test -z "$with_gcc_home"; then 3022 if test "$enable_icecream" = "yes"; then 3023 if test -d "/usr/lib/icecc/bin"; then 3024 GCC_HOME="/usr/lib/icecc/" 3025 elif test -d "/usr/libexec/icecc/bin"; then 3026 GCC_HOME="/usr/libexec/icecc/" 3027 elif test -d "/opt/icecream/bin"; then 3028 GCC_HOME="/opt/icecream/" 3029 else 3030 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home]) 3031 3032 fi 3033 else 3034 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,` 3035 GCC_HOME_SET="false" 3036 fi 3037 else 3038 GCC_HOME="$with_gcc_home" 3039 fi 3040 AC_MSG_RESULT($GCC_HOME) 3041 AC_SUBST(GCC_HOME) 3042 3043 if test "$GCC_HOME_SET" = "true"; then 3044 if test -z "$CC"; then 3045 CC="$GCC_HOME/bin/gcc" 3046 CC_BASE="gcc" 3047 fi 3048 if test -z "$CXX"; then 3049 CXX="$GCC_HOME/bin/g++" 3050 CXX_BASE="g++" 3051 fi 3052 fi 3053fi 3054 3055COMPATH=`dirname "$CC"` 3056if test "$COMPATH" = "."; then 3057 AC_PATH_PROGS(COMPATH, $CC) 3058 dnl double square bracket to get single because of M4 quote... 3059 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"` 3060fi 3061COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"` 3062 3063dnl =================================================================== 3064dnl Java support 3065dnl =================================================================== 3066AC_MSG_CHECKING([whether to build with Java support]) 3067if test "$with_java" != "no"; then 3068 if test "$DISABLE_SCRIPTING" = TRUE; then 3069 AC_MSG_RESULT([no, overridden by --disable-scripting]) 3070 ENABLE_JAVA="" 3071 with_java=no 3072 else 3073 AC_MSG_RESULT([yes]) 3074 ENABLE_JAVA="TRUE" 3075 AC_DEFINE(HAVE_FEATURE_JAVA) 3076 fi 3077else 3078 AC_MSG_RESULT([no]) 3079 ENABLE_JAVA="" 3080fi 3081 3082AC_SUBST(ENABLE_JAVA) 3083 3084dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java 3085 3086dnl ENABLE_JAVA="" indicate no Java support at all 3087 3088dnl =================================================================== 3089dnl Check macOS SDK and compiler 3090dnl =================================================================== 3091 3092if test $_os = Darwin; then 3093 3094 # If no --with-macosx-sdk option is given, look for one 3095 3096 # The intent is that for "most" Mac-based developers, a suitable 3097 # SDK will be found automatically without any configure options. 3098 3099 # For developers with a current Xcode, the lowest-numbered SDK 3100 # higher than or equal to the minimum required should be found. 3101 3102 AC_MSG_CHECKING([what macOS SDK to use]) 3103 for _macosx_sdk in ${with_macosx_sdk-11.1 11.0 10.15 10.14 10.13}; do 3104 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null` 3105 if test -d "$MACOSX_SDK_PATH"; then 3106 with_macosx_sdk="${_macosx_sdk}" 3107 break 3108 else 3109 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk" 3110 if test -d "$MACOSX_SDK_PATH"; then 3111 with_macosx_sdk="${_macosx_sdk}" 3112 break 3113 fi 3114 fi 3115 done 3116 if test ! -d "$MACOSX_SDK_PATH"; then 3117 AC_MSG_ERROR([Could not find an appropriate macOS SDK]) 3118 fi 3119 3120 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH]) 3121 3122 case $with_macosx_sdk in 3123 10.13) 3124 MACOSX_SDK_VERSION=101300 3125 ;; 3126 10.14) 3127 MACOSX_SDK_VERSION=101400 3128 ;; 3129 10.15) 3130 MACOSX_SDK_VERSION=101500 3131 ;; 3132 11.0) 3133 MACOSX_SDK_VERSION=110000 3134 ;; 3135 11.1) 3136 MACOSX_SDK_VERSION=110100 3137 ;; 3138 *) 3139 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.1]) 3140 ;; 3141 esac 3142 3143 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then 3144 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon]) 3145 fi 3146 3147 if test "$with_macosx_version_min_required" = "" ; then 3148 if test "$host_cpu" = x86_64; then 3149 with_macosx_version_min_required="10.10"; 3150 else 3151 with_macosx_version_min_required="11.0"; 3152 fi 3153 fi 3154 3155 if test "$with_macosx_version_max_allowed" = "" ; then 3156 with_macosx_version_max_allowed="$with_macosx_sdk" 3157 fi 3158 3159 # export this so that "xcrun" invocations later return matching values 3160 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}" 3161 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}" 3162 export DEVELOPER_DIR 3163 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks" 3164 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required" 3165 3166 AC_MSG_CHECKING([whether Xcode is new enough]) 3167 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1) 3168 my_xcode_ver2=${my_xcode_ver1#Xcode } 3169 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }') 3170 if test "$my_xcode_ver3" -ge 1103; then 3171 AC_MSG_RESULT([yes ($my_xcode_ver2)]) 3172 else 3173 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3]) 3174 fi 3175 3176 case "$with_macosx_version_min_required" in 3177 10.10) 3178 MAC_OS_X_VERSION_MIN_REQUIRED="101000" 3179 ;; 3180 10.11) 3181 MAC_OS_X_VERSION_MIN_REQUIRED="101100" 3182 ;; 3183 10.12) 3184 MAC_OS_X_VERSION_MIN_REQUIRED="101200" 3185 ;; 3186 10.13) 3187 MAC_OS_X_VERSION_MIN_REQUIRED="101300" 3188 ;; 3189 10.14) 3190 MAC_OS_X_VERSION_MIN_REQUIRED="101400" 3191 ;; 3192 10.15) 3193 MAC_OS_X_VERSION_MIN_REQUIRED="101500" 3194 ;; 3195 10.16) 3196 MAC_OS_X_VERSION_MIN_REQUIRED="101600" 3197 ;; 3198 11.0) 3199 MAC_OS_X_VERSION_MIN_REQUIRED="110000" 3200 ;; 3201 11.1) 3202 MAC_OS_X_VERSION_MIN_REQUIRED="110100" 3203 ;; 3204 *) 3205 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.1]) 3206 ;; 3207 esac 3208 3209 LIBTOOL=/usr/bin/libtool 3210 INSTALL_NAME_TOOL=install_name_tool 3211 if test -z "$save_CC"; then 3212 stdlib=-stdlib=libc++ 3213 3214 AC_MSG_CHECKING([what C compiler to use]) 3215 CC="`xcrun -find clang`" 3216 CC_BASE=`first_arg_basename "$CC"` 3217 if test "$host_cpu" = x86_64; then 3218 CC+=" -target x86_64-apple-macos" 3219 else 3220 CC+=" -target arm64-apple-macos" 3221 fi 3222 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH" 3223 AC_MSG_RESULT([$CC]) 3224 3225 AC_MSG_CHECKING([what C++ compiler to use]) 3226 CXX="`xcrun -find clang++`" 3227 CXX_BASE=`first_arg_basename "$CXX"` 3228 if test "$host_cpu" = x86_64; then 3229 CXX+=" -target x86_64-apple-macos" 3230 else 3231 CXX+=" -target arm64-apple-macos" 3232 fi 3233 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH" 3234 AC_MSG_RESULT([$CXX]) 3235 3236 INSTALL_NAME_TOOL=`xcrun -find install_name_tool` 3237 AR=`xcrun -find ar` 3238 NM=`xcrun -find nm` 3239 STRIP=`xcrun -find strip` 3240 LIBTOOL=`xcrun -find libtool` 3241 RANLIB=`xcrun -find ranlib` 3242 fi 3243 3244 case "$with_macosx_version_max_allowed" in 3245 10.10) 3246 MAC_OS_X_VERSION_MAX_ALLOWED="101000" 3247 ;; 3248 10.11) 3249 MAC_OS_X_VERSION_MAX_ALLOWED="101100" 3250 ;; 3251 10.12) 3252 MAC_OS_X_VERSION_MAX_ALLOWED="101200" 3253 ;; 3254 10.13) 3255 MAC_OS_X_VERSION_MAX_ALLOWED="101300" 3256 ;; 3257 10.14) 3258 MAC_OS_X_VERSION_MAX_ALLOWED="101400" 3259 ;; 3260 10.15) 3261 MAC_OS_X_VERSION_MAX_ALLOWED="101500" 3262 ;; 3263 11.0) 3264 MAC_OS_X_VERSION_MAX_ALLOWED="110000" 3265 ;; 3266 11.1) 3267 MAC_OS_X_VERSION_MAX_ALLOWED="110100" 3268 ;; 3269 *) 3270 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.1]) 3271 ;; 3272 esac 3273 3274 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed]) 3275 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then 3276 AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED]) 3277 else 3278 AC_MSG_RESULT([ok]) 3279 fi 3280 3281 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk]) 3282 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then 3283 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level]) 3284 else 3285 AC_MSG_RESULT([ok]) 3286 fi 3287 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED]) 3288 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED]) 3289 3290 AC_MSG_CHECKING([whether to do code signing]) 3291 3292 if test "$enable_macosx_code_signing" = yes; then 3293 # By default use the first suitable certificate (?). 3294 3295 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application 3296 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution 3297 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in 3298 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the 3299 # "Developer ID Application" one. 3300 3301 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1` 3302 if test -n "$identity"; then 3303 MACOSX_CODESIGNING_IDENTITY=$identity 3304 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'` 3305 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name]) 3306 else 3307 AC_MSG_ERROR([cannot determine identity to use]) 3308 fi 3309 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then 3310 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing 3311 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'` 3312 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name]) 3313 else 3314 AC_MSG_RESULT([no]) 3315 fi 3316 3317 AC_MSG_CHECKING([whether to create a Mac App Store package]) 3318 3319 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then 3320 AC_MSG_RESULT([no]) 3321 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then 3322 AC_MSG_ERROR([You forgot --enable-macosx-code-signing]) 3323 elif test "$enable_macosx_package_signing" = yes; then 3324 # By default use the first suitable certificate. 3325 # It should be a "3rd Party Mac Developer Installer" one 3326 3327 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1` 3328 if test -n "$identity"; then 3329 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity 3330 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'` 3331 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name]) 3332 else 3333 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate]) 3334 fi 3335 else 3336 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing 3337 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'` 3338 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name]) 3339 fi 3340 3341 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then 3342 AC_MSG_ERROR([You should not use the same identity for code and package signing]) 3343 fi 3344 3345 AC_MSG_CHECKING([whether to sandbox the application]) 3346 3347 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then 3348 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java]) 3349 elif test "$enable_macosx_sandbox" = yes; then 3350 ENABLE_MACOSX_SANDBOX=TRUE 3351 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX) 3352 AC_MSG_RESULT([yes]) 3353 else 3354 AC_MSG_RESULT([no]) 3355 fi 3356 3357 AC_MSG_CHECKING([what macOS app bundle identifier to use]) 3358 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier 3359 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER]) 3360fi 3361AC_SUBST(MACOSX_SDK_PATH) 3362AC_SUBST(MACOSX_DEPLOYMENT_TARGET) 3363AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED) 3364AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED) 3365AC_SUBST(INSTALL_NAME_TOOL) 3366AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool 3367AC_SUBST(MACOSX_CODESIGNING_IDENTITY) 3368AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY) 3369AC_SUBST(ENABLE_MACOSX_SANDBOX) 3370AC_SUBST(MACOSX_BUNDLE_IDENTIFIER) 3371 3372dnl =================================================================== 3373dnl Check iOS SDK and compiler 3374dnl =================================================================== 3375 3376if test $_os = iOS; then 3377 AC_MSG_CHECKING([what iOS SDK to use]) 3378 current_sdk_ver=14.4 3379 older_sdk_vers="14.3 14.2 14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2" 3380 if test "$enable_ios_simulator" = "yes"; then 3381 platform=iPhoneSimulator 3382 versionmin=-mios-simulator-version-min=12.2 3383 else 3384 platform=iPhoneOS 3385 versionmin=-miphoneos-version-min=12.2 3386 fi 3387 xcode_developer=`xcode-select -print-path` 3388 3389 for sdkver in $current_sdk_ver $older_sdk_vers; do 3390 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk 3391 if test -d $t; then 3392 sysroot=$t 3393 break 3394 fi 3395 done 3396 3397 if test -z "$sysroot"; then 3398 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk]) 3399 fi 3400 3401 AC_MSG_RESULT($sysroot) 3402 3403 stdlib="-stdlib=libc++" 3404 3405 AC_MSG_CHECKING([what C compiler to use]) 3406 CC="`xcrun -find clang`" 3407 CC_BASE=`first_arg_basename "$CC"` 3408 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin" 3409 AC_MSG_RESULT([$CC]) 3410 3411 AC_MSG_CHECKING([what C++ compiler to use]) 3412 CXX="`xcrun -find clang++`" 3413 CXX_BASE=`first_arg_basename "$CXX"` 3414 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin" 3415 AC_MSG_RESULT([$CXX]) 3416 3417 INSTALL_NAME_TOOL=`xcrun -find install_name_tool` 3418 AR=`xcrun -find ar` 3419 NM=`xcrun -find nm` 3420 STRIP=`xcrun -find strip` 3421 LIBTOOL=`xcrun -find libtool` 3422 RANLIB=`xcrun -find ranlib` 3423fi 3424 3425AC_MSG_CHECKING([whether to treat the installation as read-only]) 3426 3427if test $_os = Darwin; then 3428 enable_readonly_installset=yes 3429elif test "$enable_extensions" != yes; then 3430 enable_readonly_installset=yes 3431fi 3432if test "$enable_readonly_installset" = yes; then 3433 AC_MSG_RESULT([yes]) 3434 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET) 3435else 3436 AC_MSG_RESULT([no]) 3437fi 3438 3439dnl =================================================================== 3440dnl Structure of install set 3441dnl =================================================================== 3442 3443if test $_os = Darwin; then 3444 LIBO_BIN_FOLDER=MacOS 3445 LIBO_ETC_FOLDER=Resources 3446 LIBO_LIBEXEC_FOLDER=MacOS 3447 LIBO_LIB_FOLDER=Frameworks 3448 LIBO_LIB_PYUNO_FOLDER=Resources 3449 LIBO_SHARE_FOLDER=Resources 3450 LIBO_SHARE_HELP_FOLDER=Resources/help 3451 LIBO_SHARE_JAVA_FOLDER=Resources/java 3452 LIBO_SHARE_PRESETS_FOLDER=Resources/presets 3453 LIBO_SHARE_READMES_FOLDER=Resources/readmes 3454 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource 3455 LIBO_SHARE_SHELL_FOLDER=Resources/shell 3456 LIBO_URE_BIN_FOLDER=MacOS 3457 LIBO_URE_ETC_FOLDER=Resources/ure/etc 3458 LIBO_URE_LIB_FOLDER=Frameworks 3459 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc 3460 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java 3461elif test $_os = WINNT; then 3462 LIBO_BIN_FOLDER=program 3463 LIBO_ETC_FOLDER=program 3464 LIBO_LIBEXEC_FOLDER=program 3465 LIBO_LIB_FOLDER=program 3466 LIBO_LIB_PYUNO_FOLDER=program 3467 LIBO_SHARE_FOLDER=share 3468 LIBO_SHARE_HELP_FOLDER=help 3469 LIBO_SHARE_JAVA_FOLDER=program/classes 3470 LIBO_SHARE_PRESETS_FOLDER=presets 3471 LIBO_SHARE_READMES_FOLDER=readmes 3472 LIBO_SHARE_RESOURCE_FOLDER=program/resource 3473 LIBO_SHARE_SHELL_FOLDER=program/shell 3474 LIBO_URE_BIN_FOLDER=program 3475 LIBO_URE_ETC_FOLDER=program 3476 LIBO_URE_LIB_FOLDER=program 3477 LIBO_URE_MISC_FOLDER=program 3478 LIBO_URE_SHARE_JAVA_FOLDER=program/classes 3479else 3480 LIBO_BIN_FOLDER=program 3481 LIBO_ETC_FOLDER=program 3482 LIBO_LIBEXEC_FOLDER=program 3483 LIBO_LIB_FOLDER=program 3484 LIBO_LIB_PYUNO_FOLDER=program 3485 LIBO_SHARE_FOLDER=share 3486 LIBO_SHARE_HELP_FOLDER=help 3487 LIBO_SHARE_JAVA_FOLDER=program/classes 3488 LIBO_SHARE_PRESETS_FOLDER=presets 3489 LIBO_SHARE_READMES_FOLDER=readmes 3490 if test "$enable_fuzzers" != yes; then 3491 LIBO_SHARE_RESOURCE_FOLDER=program/resource 3492 else 3493 LIBO_SHARE_RESOURCE_FOLDER=resource 3494 fi 3495 LIBO_SHARE_SHELL_FOLDER=program/shell 3496 LIBO_URE_BIN_FOLDER=program 3497 LIBO_URE_ETC_FOLDER=program 3498 LIBO_URE_LIB_FOLDER=program 3499 LIBO_URE_MISC_FOLDER=program 3500 LIBO_URE_SHARE_JAVA_FOLDER=program/classes 3501fi 3502AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER") 3503AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER") 3504AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER") 3505AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER") 3506AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER") 3507AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER") 3508AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER") 3509AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER") 3510AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER") 3511AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER") 3512AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER") 3513AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER") 3514AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER") 3515AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER") 3516AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER") 3517AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER") 3518 3519# Not all of them needed in config_host.mk, add more if need arises 3520AC_SUBST(LIBO_BIN_FOLDER) 3521AC_SUBST(LIBO_ETC_FOLDER) 3522AC_SUBST(LIBO_LIB_FOLDER) 3523AC_SUBST(LIBO_LIB_PYUNO_FOLDER) 3524AC_SUBST(LIBO_SHARE_FOLDER) 3525AC_SUBST(LIBO_SHARE_HELP_FOLDER) 3526AC_SUBST(LIBO_SHARE_JAVA_FOLDER) 3527AC_SUBST(LIBO_SHARE_PRESETS_FOLDER) 3528AC_SUBST(LIBO_SHARE_READMES_FOLDER) 3529AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER) 3530AC_SUBST(LIBO_URE_BIN_FOLDER) 3531AC_SUBST(LIBO_URE_ETC_FOLDER) 3532AC_SUBST(LIBO_URE_LIB_FOLDER) 3533AC_SUBST(LIBO_URE_MISC_FOLDER) 3534AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER) 3535 3536dnl =================================================================== 3537dnl Windows specific tests and stuff 3538dnl =================================================================== 3539 3540reg_get_value() 3541{ 3542 # Return value: $regvalue 3543 unset regvalue 3544 3545 if test "$build_os" = "wsl"; then 3546 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null) 3547 return 3548 fi 3549 3550 local _regentry="/proc/registry${1}/${2}" 3551 if test -f "$_regentry"; then 3552 # Stop bash complaining about \0 bytes in input, as it can't handle them. 3553 # Registry keys read via /proc/registry* are always \0 terminated! 3554 local _regvalue=$(tr -d '\0' < "$_regentry") 3555 if test $? -eq 0; then 3556 regvalue=$_regvalue 3557 fi 3558 fi 3559} 3560 3561# Get a value from the 32-bit side of the Registry 3562reg_get_value_32() 3563{ 3564 reg_get_value "32" "$1" 3565} 3566 3567# Get a value from the 64-bit side of the Registry 3568reg_get_value_64() 3569{ 3570 reg_get_value "64" "$1" 3571} 3572 3573case "$host_os" in 3574cygwin*|wsl*) 3575 COM=MSC 3576 USING_X11= 3577 OS=WNT 3578 RTL_OS=Windows 3579 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 3580 P_SEP=";" 3581 else 3582 P_SEP=: 3583 fi 3584 case "$host_cpu" in 3585 x86_64) 3586 CPUNAME=X86_64 3587 RTL_ARCH=X86_64 3588 PLATFORMID=windows_x86_64 3589 WINDOWS_X64=1 3590 SCPDEFS="$SCPDEFS -DWINDOWS_X64" 3591 WIN_HOST_ARCH="x64" 3592 WIN_MULTI_ARCH="x86" 3593 WIN_HOST_BITS=64 3594 ;; 3595 i*86) 3596 CPUNAME=INTEL 3597 RTL_ARCH=x86 3598 PLATFORMID=windows_x86 3599 WIN_HOST_ARCH="x86" 3600 WIN_HOST_BITS=32 3601 WIN_OTHER_ARCH="x64" 3602 ;; 3603 aarch64) 3604 CPUNAME=AARCH64 3605 RTL_ARCH=AARCH64 3606 PLATFORMID=windows_aarch64 3607 WINDOWS_X64=1 3608 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64" 3609 WIN_HOST_ARCH="arm64" 3610 WIN_HOST_BITS=64 3611 with_ucrt_dir=no 3612 ;; 3613 *) 3614 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 3615 ;; 3616 esac 3617 3618 case "$build_cpu" in 3619 x86_64) WIN_BUILD_ARCH="x64" ;; 3620 i*86) WIN_BUILD_ARCH="x86" ;; 3621 aarch64) WIN_BUILD_ARCH="arm64" ;; 3622 *) 3623 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os]) 3624 ;; 3625 esac 3626 3627 SCPDEFS="$SCPDEFS -D_MSC_VER" 3628 ;; 3629esac 3630 3631# multi-arch is an arch, which can execute on the host (x86 on x64), while 3632# other-arch won't, but wouldn't break the build (x64 on x86). 3633if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then 3634 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH]) 3635fi 3636 3637 3638if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then 3639 # To allow building Windows multi-arch releases without cross-tooling 3640 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then 3641 cross_compiling="yes" 3642 fi 3643fi 3644if test "$cross_compiling" = "yes"; then 3645 export CROSS_COMPILING=TRUE 3646else 3647 CROSS_COMPILING= 3648 BUILD_TYPE="$BUILD_TYPE NATIVE" 3649fi 3650AC_SUBST(CROSS_COMPILING) 3651 3652# Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers. 3653# NOTE: must _not_ be used for bundled external libraries! 3654ISYSTEM= 3655if test "$GCC" = "yes"; then 3656 AC_MSG_CHECKING( for -isystem ) 3657 save_CFLAGS=$CFLAGS 3658 CFLAGS="$CFLAGS -Werror" 3659 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[]) 3660 CFLAGS=$save_CFLAGS 3661 if test -n "$ISYSTEM"; then 3662 AC_MSG_RESULT(yes) 3663 else 3664 AC_MSG_RESULT(no) 3665 fi 3666fi 3667if test -z "$ISYSTEM"; then 3668 # fall back to using -I 3669 ISYSTEM=-I 3670fi 3671AC_SUBST(ISYSTEM) 3672 3673dnl =================================================================== 3674dnl Check which Visual Studio compiler is used 3675dnl =================================================================== 3676 3677map_vs_year_to_version() 3678{ 3679 # Return value: $vsversion 3680 3681 unset vsversion 3682 3683 case $1 in 3684 2019) 3685 vsversion=16;; 3686 *) 3687 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);; 3688 esac 3689} 3690 3691vs_versions_to_check() 3692{ 3693 # Args: $1 (optional) : versions to check, in the order of preference 3694 # Return value: $vsversions 3695 3696 unset vsversions 3697 3698 if test -n "$1"; then 3699 map_vs_year_to_version "$1" 3700 vsversions=$vsversion 3701 else 3702 # We accept only 2019 3703 vsversions="16" 3704 fi 3705} 3706 3707win_get_env_from_vsvars32bat() 3708{ 3709 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`" 3710 # Also seems to be located in another directory under the same name: vsvars32.bat 3711 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57 3712 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH 3713 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space 3714 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH 3715 local result 3716 if test "$build_os" = "wsl"; then 3717 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r') 3718 else 3719 chmod +x $WRAPPERBATCHFILEPATH 3720 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r') 3721 fi 3722 rm -f $WRAPPERBATCHFILEPATH 3723 printf '%s' "$result" 3724} 3725 3726find_ucrt() 3727{ 3728 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder" 3729 if test -n "$regvalue"; then 3730 PathFormat "$regvalue" 3731 UCRTSDKDIR=$formatted_path_unix 3732 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion" 3733 UCRTVERSION=$regvalue 3734 # Rest if not exist 3735 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then 3736 UCRTSDKDIR= 3737 fi 3738 fi 3739 if test -z "$UCRTSDKDIR"; then 3740 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/" 3741 ide_env_file="${ide_env_dir}VsDevCmd.bat" 3742 if test -f "$ide_env_file"; then 3743 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)" 3744 UCRTSDKDIR=$formatted_path 3745 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion) 3746 dnl Hack needed at least by tml: 3747 if test "$UCRTVERSION" = 10.0.15063.0 \ 3748 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \ 3749 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h" 3750 then 3751 UCRTVERSION=10.0.14393.0 3752 fi 3753 else 3754 AC_MSG_ERROR([No UCRT found]) 3755 fi 3756 fi 3757} 3758 3759find_msvc() 3760{ 3761 # Find Visual C++ 2019 3762 # Args: $1 (optional) : The VS version year 3763 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber 3764 3765 unset vctest vcnum vcnumwithdot vcbuildnumber 3766 3767 vs_versions_to_check "$1" 3768 if test "$build_os" = wsl; then 3769 vswhere="$PROGRAMFILESX86" 3770 else 3771 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')" 3772 fi 3773 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe" 3774 PathFormat "$vswhere" 3775 vswhere=$formatted_path_unix 3776 for ver in $vsversions; do 3777 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1` 3778 # Fall back to all MS products (this includes VC++ Build Tools) 3779 if ! test -n "$vswhereoutput"; then 3780 AC_MSG_CHECKING([VC++ Build Tools and similar]) 3781 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1` 3782 fi 3783 if test -n "$vswhereoutput"; then 3784 PathFormat "$vswhereoutput" 3785 vctest=$formatted_path_unix 3786 break 3787 fi 3788 done 3789 3790 if test -n "$vctest"; then 3791 vcnumwithdot="$ver.0" 3792 case "$vcnumwithdot" in 3793 16.0) 3794 vcyear=2019 3795 vcnum=160 3796 ;; 3797 esac 3798 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1` 3799 3800 fi 3801} 3802 3803test_cl_exe() 3804{ 3805 AC_MSG_CHECKING([$1 compiler]) 3806 3807 CL_EXE_PATH="$2/cl.exe" 3808 3809 if test ! -f "$CL_EXE_PATH"; then 3810 if test "$1" = "multi-arch"; then 3811 AC_MSG_WARN([no compiler (cl.exe) in $2]) 3812 return 1 3813 else 3814 AC_MSG_ERROR([no compiler (cl.exe) in $2]) 3815 fi 3816 fi 3817 3818 dnl =========================================================== 3819 dnl Check for the corresponding mspdb*.dll 3820 dnl =========================================================== 3821 3822 # MSVC 15.0 has libraries from 14.0? 3823 mspdbnum="140" 3824 3825 if test ! -e "$2/mspdb${mspdbnum}.dll"; then 3826 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?]) 3827 fi 3828 3829 # The compiles has to find its shared libraries 3830 OLD_PATH="$PATH" 3831 TEMP_PATH=`cygpath -d "$2"` 3832 PATH="`cygpath -u "$TEMP_PATH"`:$PATH" 3833 3834 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then 3835 AC_MSG_ERROR([no compiler (cl.exe) in $2]) 3836 fi 3837 3838 PATH="$OLD_PATH" 3839 3840 AC_MSG_RESULT([$CL_EXE_PATH]) 3841} 3842 3843SOLARINC= 3844MSBUILD_PATH= 3845DEVENV= 3846if test "$_os" = "WINNT"; then 3847 AC_MSG_CHECKING([Visual C++]) 3848 find_msvc "$with_visual_studio" 3849 if test -z "$vctest"; then 3850 if test -n "$with_visual_studio"; then 3851 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found]) 3852 else 3853 AC_MSG_ERROR([no Visual Studio 2019 installation found]) 3854 fi 3855 fi 3856 AC_MSG_RESULT([]) 3857 3858 VC_PRODUCT_DIR="$vctest/VC" 3859 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber" 3860 3861 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch 3862 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then 3863 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}" 3864 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH" 3865 if test $? -ne 0; then 3866 WIN_MULTI_ARCH="" 3867 WIN_OTHER_ARCH="" 3868 fi 3869 fi 3870 3871 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then 3872 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH" 3873 test_cl_exe "build" "$MSVC_BUILD_PATH" 3874 fi 3875 3876 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then 3877 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH" 3878 test_cl_exe "host" "$MSVC_HOST_PATH" 3879 else 3880 MSVC_HOST_PATH="$MSVC_BUILD_PATH" 3881 fi 3882 3883 AC_MSG_CHECKING([for short pathname of VC product directory]) 3884 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"` 3885 AC_MSG_RESULT([$VC_PRODUCT_DIR]) 3886 3887 UCRTSDKDIR= 3888 UCRTVERSION= 3889 3890 AC_MSG_CHECKING([for UCRT location]) 3891 find_ucrt 3892 # find_ucrt errors out if it doesn't find it 3893 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)]) 3894 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt" 3895 ucrtincpath_formatted=$formatted_path 3896 # SOLARINC is used for external modules and must be set too. 3897 # And no, it's not sufficient to set SOLARINC only, as configure 3898 # itself doesn't honour it. 3899 SOLARINC="$SOLARINC -I$ucrtincpath_formatted" 3900 CFLAGS="$CFLAGS -I$ucrtincpath_formatted" 3901 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted" 3902 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted" 3903 3904 AC_SUBST(UCRTSDKDIR) 3905 AC_SUBST(UCRTVERSION) 3906 3907 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot]) 3908 # Find the proper version of MSBuild.exe to use based on the VS version 3909 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath 3910 if test -n "$regvalue" ; then 3911 AC_MSG_RESULT([found: $regvalue]) 3912 MSBUILD_PATH=`win_short_path_for_make "$regvalue"` 3913 else 3914 if test "$vcnumwithdot" = "16.0"; then 3915 if test "$WIN_BUILD_ARCH" != "x64"; then 3916 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin" 3917 else 3918 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64" 3919 fi 3920 else 3921 if test "$WIN_BUILD_ARCH" != "x64"; then 3922 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin" 3923 else 3924 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64" 3925 fi 3926 fi 3927 MSBUILD_PATH=`win_short_path_for_make "$regvalue"` 3928 AC_MSG_RESULT([$regvalue]) 3929 fi 3930 3931 # Find the version of devenv.exe 3932 # MSVC 2017 devenv does not start properly from a DOS 8.3 path 3933 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe") 3934 DEVENV_unix=$(cygpath -u "$DEVENV") 3935 if test ! -e "$DEVENV_unix"; then 3936 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools]) 3937 fi 3938 3939 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl, 3940 dnl needed when building CLR code: 3941 if test -z "$MSVC_CXX"; then 3942 # This gives us a posix path with 8.3 filename restrictions 3943 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"` 3944 fi 3945 3946 if test -z "$CC"; then 3947 CC=$MSVC_CXX 3948 CC_BASE=`first_arg_basename "$CC"` 3949 fi 3950 if test -z "$CXX"; then 3951 CXX=$MSVC_CXX 3952 CXX_BASE=`first_arg_basename "$CXX"` 3953 fi 3954 3955 if test -n "$CC"; then 3956 # Remove /cl.exe from CC case insensitive 3957 AC_MSG_NOTICE([found Visual C++ $vcyear]) 3958 3959 main_include_dir=`cygpath -d -m "$COMPATH/Include"` 3960 CPPFLAGS="$CPPFLAGS -I$main_include_dir" 3961 3962 PathFormat "$COMPATH" 3963 COMPATH=`win_short_path_for_make "$formatted_path"` 3964 3965 VCVER=$vcnum 3966 3967 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones 3968 # are always "better", we list them in reverse chronological order. 3969 3970 case "$vcnum" in 3971 160) 3972 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0" 3973 ;; 3974 esac 3975 3976 # The expectation is that --with-windows-sdk should not need to be used 3977 if test -n "$with_windows_sdk"; then 3978 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in 3979 *" "$with_windows_sdk" "*) 3980 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk 3981 ;; 3982 *) 3983 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear]) 3984 ;; 3985 esac 3986 fi 3987 3988 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC) 3989 ac_objext=obj 3990 ac_exeext=exe 3991 3992 else 3993 AC_MSG_ERROR([Visual C++ not found after all, huh]) 3994 fi 3995 3996 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5]) 3997 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 3998 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping 3999 // between Visual Studio versions and _MSC_VER: 4000 #if _MSC_VER < 1925 4001 #error 4002 #endif 4003 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])]) 4004 4005 # Check for 64-bit (cross-)compiler to use to build the 64-bit 4006 # version of the Explorer extension (and maybe other small 4007 # bits, too) needed when installing a 32-bit LibreOffice on a 4008 # 64-bit OS. The 64-bit Explorer extension is a feature that 4009 # has been present since long in OOo. Don't confuse it with 4010 # building LibreOffice itself as 64-bit code. 4011 4012 BUILD_X64= 4013 CXX_X64_BINARY= 4014 4015 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then 4016 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions]) 4017 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \ 4018 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib" 4019 then 4020 BUILD_X64=TRUE 4021 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"` 4022 AC_MSG_RESULT([found]) 4023 else 4024 AC_MSG_RESULT([not found]) 4025 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions]) 4026 fi 4027 elif test "$WIN_HOST_ARCH" = "x64"; then 4028 CXX_X64_BINARY=$CXX 4029 fi 4030 AC_SUBST(BUILD_X64) 4031 4032 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk 4033 AC_SUBST(CXX_X64_BINARY) 4034 4035 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim 4036 # needed to support TWAIN scan on both 32- and 64-bit systems 4037 4038 case "$WIN_HOST_ARCH" in 4039 x64) 4040 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support]) 4041 if test -n "$CXX_X86_BINARY"; then 4042 BUILD_X86=TRUE 4043 AC_MSG_RESULT([preset]) 4044 elif test -n "$WIN_MULTI_ARCH"; then 4045 BUILD_X86=TRUE 4046 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"` 4047 CXX_X86_BINARY+=" /arch:SSE" 4048 AC_MSG_RESULT([found]) 4049 else 4050 AC_MSG_RESULT([not found]) 4051 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support]) 4052 fi 4053 ;; 4054 x86) 4055 BUILD_X86=TRUE 4056 CXX_X86_BINARY=$MSVC_CXX 4057 ;; 4058 esac 4059 AC_SUBST(BUILD_X86) 4060 AC_SUBST(CXX_X86_BINARY) 4061fi 4062AC_SUBST(VCVER) 4063AC_SUBST(DEVENV) 4064AC_SUBST(MSVC_CXX) 4065 4066COM_IS_CLANG= 4067AC_MSG_CHECKING([whether the compiler is actually Clang]) 4068AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 4069 #ifndef __clang__ 4070 you lose 4071 #endif 4072 int foo=42; 4073 ]])], 4074 [AC_MSG_RESULT([yes]) 4075 COM_IS_CLANG=TRUE], 4076 [AC_MSG_RESULT([no])]) 4077AC_SUBST(COM_IS_CLANG) 4078 4079CC_PLAIN=$CC 4080CLANGVER= 4081if test "$COM_IS_CLANG" = TRUE; then 4082 AC_MSG_CHECKING([whether Clang is new enough]) 4083 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 4084 #if !defined __apple_build_version__ 4085 #error 4086 #endif 4087 ]])], 4088 [my_apple_clang=yes],[my_apple_clang=]) 4089 if test "$my_apple_clang" = yes; then 4090 AC_MSG_RESULT([assumed yes (Apple Clang)]) 4091 else 4092 if test "$_os" = WINNT; then 4093 dnl In which case, assume clang-cl: 4094 my_args="/EP /TC" 4095 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for 4096 dnl clang-cl: 4097 CC_PLAIN= 4098 for i in $CC; do 4099 case $i in 4100 -FIIntrin.h) 4101 ;; 4102 *) 4103 CC_PLAIN="$CC_PLAIN $i" 4104 ;; 4105 esac 4106 done 4107 else 4108 my_args="-E -P" 4109 fi 4110 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'` 4111 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -` 4112 CLANGVER=`echo $clang_version \ 4113 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'` 4114 if test "$CLANGVER" -ge 50002; then 4115 AC_MSG_RESULT([yes ($clang_version)]) 4116 else 4117 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2]) 4118 fi 4119 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER) 4120 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION) 4121 fi 4122fi 4123 4124SHOWINCLUDES_PREFIX= 4125if test "$_os" = WINNT; then 4126 dnl We need to guess the prefix of the -showIncludes output, it can be 4127 dnl localized 4128 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)]) 4129 echo "#include <stdlib.h>" > conftest.c 4130 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \ 4131 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'` 4132 rm -f conftest.c conftest.obj 4133 if test -z "$SHOWINCLUDES_PREFIX"; then 4134 AC_MSG_ERROR([cannot determine the -showIncludes prefix]) 4135 else 4136 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"]) 4137 fi 4138fi 4139AC_SUBST(SHOWINCLUDES_PREFIX) 4140 4141# 4142# prefix C with ccache if needed 4143# 4144if test "$CCACHE" != ""; then 4145 AC_MSG_CHECKING([whether $CC_BASE is already ccached]) 4146 4147 AC_LANG_PUSH([C]) 4148 save_CFLAGS=$CFLAGS 4149 CFLAGS="$CFLAGS --ccache-skip -O2" 4150 dnl an empty program will do, we're checking the compiler flags 4151 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], 4152 [use_ccache=yes], [use_ccache=no]) 4153 CFLAGS=$save_CFLAGS 4154 if test $use_ccache = yes; then 4155 AC_MSG_RESULT([yes]) 4156 else 4157 CC="$CCACHE $CC" 4158 CC_BASE="ccache $CC_BASE" 4159 AC_MSG_RESULT([no]) 4160 fi 4161 AC_LANG_POP([C]) 4162fi 4163 4164# =================================================================== 4165# check various GCC options that Clang does not support now but maybe 4166# will somewhen in the future, check them even for GCC, so that the 4167# flags are set 4168# =================================================================== 4169 4170HAVE_GCC_GGDB2= 4171if test "$GCC" = "yes"; then 4172 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2]) 4173 save_CFLAGS=$CFLAGS 4174 CFLAGS="$CFLAGS -Werror -ggdb2" 4175 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[]) 4176 CFLAGS=$save_CFLAGS 4177 if test "$HAVE_GCC_GGDB2" = "TRUE"; then 4178 AC_MSG_RESULT([yes]) 4179 else 4180 AC_MSG_RESULT([no]) 4181 fi 4182 4183 if test "$host_cpu" = "m68k"; then 4184 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets]) 4185 save_CFLAGS=$CFLAGS 4186 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets" 4187 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[]) 4188 CFLAGS=$save_CFLAGS 4189 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then 4190 AC_MSG_RESULT([yes]) 4191 else 4192 AC_MSG_ERROR([no]) 4193 fi 4194 fi 4195fi 4196AC_SUBST(HAVE_GCC_GGDB2) 4197 4198dnl =================================================================== 4199dnl Test the gcc version 4200dnl =================================================================== 4201if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then 4202 AC_MSG_CHECKING([the GCC version]) 4203 _gcc_version=`$CC -dumpversion` 4204 gcc_full_version=$(printf '%s' "$_gcc_version" | \ 4205 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }') 4206 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'` 4207 4208 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)]) 4209 4210 if test "$gcc_full_version" -lt 70000; then 4211 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0]) 4212 fi 4213else 4214 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses. 4215 # GCC version should generally be checked only when handling GCC-specific bugs, for testing 4216 # things like features configure checks should be used, otherwise they may e.g. fail with Clang 4217 # (which reports itself as GCC 4.2.1). 4218 GCC_VERSION= 4219fi 4220AC_SUBST(GCC_VERSION) 4221 4222dnl Set the ENABLE_DBGUTIL variable 4223dnl =================================================================== 4224AC_MSG_CHECKING([whether to build with additional debug utilities]) 4225if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then 4226 ENABLE_DBGUTIL="TRUE" 4227 # this is an extra var so it can have different default on different MSVC 4228 # versions (in case there are version specific problems with it) 4229 MSVC_USE_DEBUG_RUNTIME="TRUE" 4230 4231 AC_MSG_RESULT([yes]) 4232 # cppunit and graphite expose STL in public headers 4233 if test "$with_system_cppunit" = "yes"; then 4234 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil]) 4235 else 4236 with_system_cppunit=no 4237 fi 4238 if test "$with_system_graphite" = "yes"; then 4239 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil]) 4240 else 4241 with_system_graphite=no 4242 fi 4243 if test "$with_system_orcus" = "yes"; then 4244 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil]) 4245 else 4246 with_system_orcus=no 4247 fi 4248 if test "$with_system_libcmis" = "yes"; then 4249 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil]) 4250 else 4251 with_system_libcmis=no 4252 fi 4253 if test "$with_system_hunspell" = "yes"; then 4254 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil]) 4255 else 4256 with_system_hunspell=no 4257 fi 4258 if test "$with_system_gpgmepp" = "yes"; then 4259 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil]) 4260 else 4261 with_system_gpgmepp=no 4262 fi 4263 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see 4264 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the 4265 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR 4266 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither 4267 # of those two is using the system variant: 4268 if test "$with_system_libnumbertext" = "yes"; then 4269 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil]) 4270 else 4271 with_system_libnumbertext=no 4272 fi 4273 if test "$with_system_libwps" = "yes"; then 4274 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil]) 4275 else 4276 with_system_libwps=no 4277 fi 4278else 4279 ENABLE_DBGUTIL="" 4280 MSVC_USE_DEBUG_RUNTIME="" 4281 AC_MSG_RESULT([no]) 4282fi 4283AC_SUBST(ENABLE_DBGUTIL) 4284AC_SUBST(MSVC_USE_DEBUG_RUNTIME) 4285 4286dnl Set the ENABLE_DEBUG variable. 4287dnl =================================================================== 4288if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then 4289 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols]) 4290fi 4291if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then 4292 if test -z "$libo_fuzzed_enable_debug"; then 4293 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil]) 4294 else 4295 AC_MSG_NOTICE([Resetting --enable-debug=yes]) 4296 enable_debug=yes 4297 fi 4298fi 4299 4300AC_MSG_CHECKING([whether to do a debug build]) 4301if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then 4302 ENABLE_DEBUG="TRUE" 4303 if test -n "$ENABLE_DBGUTIL" ; then 4304 AC_MSG_RESULT([yes (dbgutil)]) 4305 else 4306 AC_MSG_RESULT([yes]) 4307 fi 4308else 4309 ENABLE_DEBUG="" 4310 AC_MSG_RESULT([no]) 4311fi 4312AC_SUBST(ENABLE_DEBUG) 4313 4314dnl =================================================================== 4315dnl Select the linker to use (gold/lld/ld.bfd). 4316dnl This is done only after compiler checks (need to know if Clang is 4317dnl used, for different defaults) and after checking if a debug build 4318dnl is wanted (non-debug builds get the default linker if not explicitly 4319dnl specified otherwise). 4320dnl All checks for linker features/options should come after this. 4321dnl =================================================================== 4322check_use_ld() 4323{ 4324 use_ld=-fuse-ld=${1%%:*} 4325 use_ld_path=${1#*:} 4326 if test "$use_ld_path" != "$1"; then 4327 use_ld="$use_ld --ld-path=$use_ld_path" 4328 fi 4329 use_ld_fail_if_error=$2 4330 use_ld_ok= 4331 AC_MSG_CHECKING([for $use_ld linker support]) 4332 use_ld_ldflags_save="$LDFLAGS" 4333 LDFLAGS="$LDFLAGS $use_ld" 4334 AC_LINK_IFELSE([AC_LANG_PROGRAM([ 4335#include <stdio.h> 4336 ],[ 4337printf ("hello world\n"); 4338 ])], USE_LD=$use_ld, []) 4339 if test -n "$USE_LD"; then 4340 AC_MSG_RESULT( yes ) 4341 use_ld_ok=yes 4342 else 4343 if test -n "$use_ld_fail_if_error"; then 4344 AC_MSG_ERROR( no ) 4345 else 4346 AC_MSG_RESULT( no ) 4347 fi 4348 fi 4349 if test -n "$use_ld_ok"; then 4350 dnl keep the value of LDFLAGS 4351 return 0 4352 fi 4353 LDFLAGS="$use_ld_ldflags_save" 4354 return 1 4355} 4356USE_LD= 4357if test "$enable_ld" != "no"; then 4358 if test "$GCC" = "yes"; then 4359 if test -n "$enable_ld"; then 4360 check_use_ld "$enable_ld" fail_if_error 4361 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4362 dnl non-debug builds default to the default linker 4363 true 4364 elif test -n "$COM_IS_CLANG"; then 4365 check_use_ld lld 4366 if test $? -ne 0; then 4367 check_use_ld gold 4368 fi 4369 else 4370 # For gcc first try gold, new versions also support lld. 4371 check_use_ld gold 4372 if test $? -ne 0; then 4373 check_use_ld lld 4374 fi 4375 fi 4376 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null) 4377 rm conftest.out 4378 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)') 4379 if test -z "$ld_used"; then 4380 ld_used="unknown" 4381 fi 4382 AC_MSG_CHECKING([for linker that is used]) 4383 AC_MSG_RESULT([$ld_used]) 4384 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4385 if echo "$ld_used" | grep -q "^GNU ld"; then 4386 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.]) 4387 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker." 4388 fi 4389 fi 4390 else 4391 if test "$enable_ld" = "yes"; then 4392 AC_MSG_ERROR([--enable-ld not supported]) 4393 fi 4394 fi 4395fi 4396AC_SUBST(USE_LD) 4397 4398HAVE_LD_BSYMBOLIC_FUNCTIONS= 4399if test "$GCC" = "yes"; then 4400 AC_MSG_CHECKING([for -Bsymbolic-functions linker support]) 4401 bsymbolic_functions_ldflags_save=$LDFLAGS 4402 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions" 4403 AC_LINK_IFELSE([AC_LANG_PROGRAM([ 4404#include <stdio.h> 4405 ],[ 4406printf ("hello world\n"); 4407 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, []) 4408 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then 4409 AC_MSG_RESULT( found ) 4410 else 4411 AC_MSG_RESULT( not found ) 4412 fi 4413 LDFLAGS=$bsymbolic_functions_ldflags_save 4414fi 4415AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS) 4416 4417LD_GC_SECTIONS= 4418if test "$GCC" = "yes"; then 4419 for flag in "--gc-sections" "-dead_strip"; do 4420 AC_MSG_CHECKING([for $flag linker support]) 4421 ldflags_save=$LDFLAGS 4422 LDFLAGS="$LDFLAGS -Wl,$flag" 4423 AC_LINK_IFELSE([AC_LANG_PROGRAM([ 4424#include <stdio.h> 4425 ],[ 4426printf ("hello world\n"); 4427 ])],[ 4428 LD_GC_SECTIONS="-Wl,$flag" 4429 AC_MSG_RESULT( found ) 4430 ], [ 4431 AC_MSG_RESULT( not found ) 4432 ]) 4433 LDFLAGS=$ldflags_save 4434 if test -n "$LD_GC_SECTIONS"; then 4435 break 4436 fi 4437 done 4438fi 4439AC_SUBST(LD_GC_SECTIONS) 4440 4441HAVE_GSPLIT_DWARF= 4442if test "$enable_split_debug" != no; then 4443 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms. 4444 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then 4445 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf]) 4446 save_CFLAGS=$CFLAGS 4447 CFLAGS="$CFLAGS -Werror -gsplit-dwarf" 4448 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[]) 4449 CFLAGS=$save_CFLAGS 4450 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then 4451 AC_MSG_RESULT([yes]) 4452 else 4453 if test "$enable_split_debug" = yes; then 4454 AC_MSG_ERROR([no]) 4455 else 4456 AC_MSG_RESULT([no]) 4457 fi 4458 fi 4459 fi 4460 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4461 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.]) 4462 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space." 4463 fi 4464fi 4465AC_SUBST(HAVE_GCC_SPLIT_DWARF) 4466 4467HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR= 4468AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor]) 4469save_CFLAGS=$CFLAGS 4470CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor" 4471AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[]) 4472CFLAGS=$save_CFLAGS 4473if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then 4474 AC_MSG_RESULT([yes]) 4475else 4476 AC_MSG_RESULT([no]) 4477fi 4478AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR) 4479 4480ENABLE_GDB_INDEX= 4481if test "$enable_gdb_index" != "no"; then 4482 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms. 4483 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then 4484 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames]) 4485 save_CFLAGS=$CFLAGS 4486 CFLAGS="$CFLAGS -Werror -ggnu-pubnames" 4487 have_ggnu_pubnames= 4488 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=]) 4489 if test "$have_ggnu_pubnames" != "TRUE"; then 4490 if test "$enable_gdb_index" = "yes"; then 4491 AC_MSG_ERROR([no, --enable-gdb-index not supported]) 4492 else 4493 AC_MSG_RESULT( no ) 4494 fi 4495 else 4496 AC_MSG_RESULT( yes ) 4497 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index]) 4498 ldflags_save=$LDFLAGS 4499 LDFLAGS="$LDFLAGS -Wl,--gdb-index" 4500 AC_LINK_IFELSE([AC_LANG_PROGRAM([ 4501#include <stdio.h> 4502 ],[ 4503printf ("hello world\n"); 4504 ])], ENABLE_GDB_INDEX=TRUE, []) 4505 if test "$ENABLE_GDB_INDEX" = "TRUE"; then 4506 AC_MSG_RESULT( yes ) 4507 else 4508 if test "$enable_gdb_index" = "yes"; then 4509 AC_MSG_ERROR( no ) 4510 else 4511 AC_MSG_RESULT( no ) 4512 fi 4513 fi 4514 LDFLAGS=$ldflags_save 4515 fi 4516 CFLAGS=$save_CFLAGS 4517 fi 4518 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4519 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.]) 4520 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow." 4521 fi 4522fi 4523AC_SUBST(ENABLE_GDB_INDEX) 4524 4525if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then 4526 enable_sal_log=yes 4527fi 4528if test "$enable_sal_log" = yes; then 4529 ENABLE_SAL_LOG=TRUE 4530fi 4531AC_SUBST(ENABLE_SAL_LOG) 4532 4533dnl Check for enable symbols option 4534dnl =================================================================== 4535AC_MSG_CHECKING([whether to generate debug information]) 4536if test -z "$enable_symbols"; then 4537 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4538 enable_symbols=yes 4539 else 4540 enable_symbols=no 4541 fi 4542fi 4543if test "$enable_symbols" = yes; then 4544 ENABLE_SYMBOLS_FOR=all 4545 AC_MSG_RESULT([yes]) 4546elif test "$enable_symbols" = no; then 4547 ENABLE_SYMBOLS_FOR= 4548 AC_MSG_RESULT([no]) 4549else 4550 # Selective debuginfo. 4551 ENABLE_SYMBOLS_FOR="$enable_symbols" 4552 AC_MSG_RESULT([for "$enable_symbols"]) 4553fi 4554AC_SUBST(ENABLE_SYMBOLS_FOR) 4555 4556if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then 4557 # Building on Android with full symbols: without enough memory the linker never finishes currently. 4558 AC_MSG_CHECKING([whether enough memory is available for linking]) 4559 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/') 4560 # Check for 15GB, as Linux reports a bit less than the physical memory size. 4561 if test -n "$mem_size" -a $mem_size -lt 15728640; then 4562 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported]) 4563 else 4564 AC_MSG_RESULT([yes]) 4565 fi 4566fi 4567 4568ENABLE_OPTIMIZED= 4569ENABLE_OPTIMIZED_DEBUG= 4570AC_MSG_CHECKING([whether to compile with optimization flags]) 4571if test -z "$enable_optimized"; then 4572 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 4573 enable_optimized=no 4574 else 4575 enable_optimized=yes 4576 fi 4577fi 4578if test "$enable_optimized" = yes; then 4579 ENABLE_OPTIMIZED=TRUE 4580 AC_MSG_RESULT([yes]) 4581elif test "$enable_optimized" = debug; then 4582 ENABLE_OPTIMIZED_DEBUG=TRUE 4583 AC_MSG_RESULT([yes (debug)]) 4584 HAVE_GCC_OG= 4585 if test "$GCC" = "yes"; then 4586 AC_MSG_CHECKING([whether $CC_BASE supports -Og]) 4587 save_CFLAGS=$CFLAGS 4588 CFLAGS="$CFLAGS -Werror -Og" 4589 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[]) 4590 CFLAGS=$save_CFLAGS 4591 if test "$HAVE_GCC_OG" = "TRUE"; then 4592 AC_MSG_RESULT([yes]) 4593 else 4594 AC_MSG_RESULT([no]) 4595 fi 4596 fi 4597 if test -z "$HAVE_GCC_OG"; then 4598 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.]) 4599 fi 4600else 4601 AC_MSG_RESULT([no]) 4602fi 4603AC_SUBST(ENABLE_OPTIMIZED) 4604AC_SUBST(ENABLE_OPTIMIZED_DEBUG) 4605 4606# 4607# determine CPUNAME, OS, ... 4608# The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option. 4609# 4610case "$host_os" in 4611 4612aix*) 4613 COM=GCC 4614 CPUNAME=POWERPC 4615 USING_X11=TRUE 4616 OS=AIX 4617 RTL_OS=AIX 4618 RTL_ARCH=PowerPC 4619 PLATFORMID=aix_powerpc 4620 P_SEP=: 4621 ;; 4622 4623cygwin*|wsl*) 4624 # Already handled 4625 ;; 4626 4627darwin*|macos*) 4628 COM=GCC 4629 USING_X11= 4630 OS=MACOSX 4631 RTL_OS=MacOSX 4632 P_SEP=: 4633 4634 case "$host_cpu" in 4635 aarch64|arm64) 4636 if test "$enable_ios_simulator" = "yes"; then 4637 OS=iOS 4638 else 4639 CPUNAME=AARCH64 4640 RTL_ARCH=AARCH64 4641 PLATFORMID=macosx_aarch64 4642 fi 4643 ;; 4644 x86_64) 4645 if test "$enable_ios_simulator" = "yes"; then 4646 OS=iOS 4647 fi 4648 CPUNAME=X86_64 4649 RTL_ARCH=X86_64 4650 PLATFORMID=macosx_x86_64 4651 ;; 4652 *) 4653 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4654 ;; 4655 esac 4656 ;; 4657 4658ios*) 4659 COM=GCC 4660 USING_X11= 4661 OS=iOS 4662 RTL_OS=iOS 4663 P_SEP=: 4664 4665 case "$host_cpu" in 4666 aarch64|arm64) 4667 if test "$enable_ios_simulator" = "yes"; then 4668 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS]) 4669 fi 4670 ;; 4671 *) 4672 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4673 ;; 4674 esac 4675 CPUNAME=AARCH64 4676 RTL_ARCH=AARCH64 4677 PLATFORMID=ios_arm64 4678 ;; 4679 4680dragonfly*) 4681 COM=GCC 4682 USING_X11=TRUE 4683 OS=DRAGONFLY 4684 RTL_OS=DragonFly 4685 P_SEP=: 4686 4687 case "$host_cpu" in 4688 i*86) 4689 CPUNAME=INTEL 4690 RTL_ARCH=x86 4691 PLATFORMID=dragonfly_x86 4692 ;; 4693 x86_64) 4694 CPUNAME=X86_64 4695 RTL_ARCH=X86_64 4696 PLATFORMID=dragonfly_x86_64 4697 ;; 4698 *) 4699 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4700 ;; 4701 esac 4702 ;; 4703 4704freebsd*) 4705 COM=GCC 4706 USING_X11=TRUE 4707 RTL_OS=FreeBSD 4708 OS=FREEBSD 4709 P_SEP=: 4710 4711 case "$host_cpu" in 4712 aarch64) 4713 CPUNAME=AARCH64 4714 PLATFORMID=freebsd_aarch64 4715 RTL_ARCH=AARCH64 4716 ;; 4717 i*86) 4718 CPUNAME=INTEL 4719 RTL_ARCH=x86 4720 PLATFORMID=freebsd_x86 4721 ;; 4722 x86_64|amd64) 4723 CPUNAME=X86_64 4724 RTL_ARCH=X86_64 4725 PLATFORMID=freebsd_x86_64 4726 ;; 4727 powerpc64) 4728 CPUNAME=POWERPC64 4729 RTL_ARCH=PowerPC_64 4730 PLATFORMID=freebsd_powerpc64 4731 ;; 4732 powerpc|powerpcspe) 4733 CPUNAME=POWERPC 4734 RTL_ARCH=PowerPC 4735 PLATFORMID=freebsd_powerpc 4736 ;; 4737 *) 4738 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4739 ;; 4740 esac 4741 ;; 4742 4743haiku*) 4744 COM=GCC 4745 USING_X11= 4746 GUIBASE=haiku 4747 RTL_OS=Haiku 4748 OS=HAIKU 4749 P_SEP=: 4750 4751 case "$host_cpu" in 4752 i*86) 4753 CPUNAME=INTEL 4754 RTL_ARCH=x86 4755 PLATFORMID=haiku_x86 4756 ;; 4757 x86_64|amd64) 4758 CPUNAME=X86_64 4759 RTL_ARCH=X86_64 4760 PLATFORMID=haiku_x86_64 4761 ;; 4762 *) 4763 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4764 ;; 4765 esac 4766 ;; 4767 4768kfreebsd*) 4769 COM=GCC 4770 USING_X11=TRUE 4771 OS=LINUX 4772 RTL_OS=kFreeBSD 4773 P_SEP=: 4774 4775 case "$host_cpu" in 4776 4777 i*86) 4778 CPUNAME=INTEL 4779 RTL_ARCH=x86 4780 PLATFORMID=kfreebsd_x86 4781 ;; 4782 x86_64) 4783 CPUNAME=X86_64 4784 RTL_ARCH=X86_64 4785 PLATFORMID=kfreebsd_x86_64 4786 ;; 4787 *) 4788 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4789 ;; 4790 esac 4791 ;; 4792 4793linux-gnu*) 4794 COM=GCC 4795 USING_X11=TRUE 4796 OS=LINUX 4797 RTL_OS=Linux 4798 P_SEP=: 4799 4800 case "$host_cpu" in 4801 4802 aarch64) 4803 CPUNAME=AARCH64 4804 PLATFORMID=linux_aarch64 4805 RTL_ARCH=AARCH64 4806 EPM_FLAGS="-a arm64" 4807 ;; 4808 alpha) 4809 CPUNAME=AXP 4810 RTL_ARCH=ALPHA 4811 PLATFORMID=linux_alpha 4812 ;; 4813 arm*) 4814 CPUNAME=ARM 4815 EPM_FLAGS="-a arm" 4816 RTL_ARCH=ARM_EABI 4817 PLATFORMID=linux_arm_eabi 4818 case "$host_cpu" in 4819 arm*-linux) 4820 RTL_ARCH=ARM_OABI 4821 PLATFORMID=linux_arm_oabi 4822 ;; 4823 esac 4824 ;; 4825 hppa) 4826 CPUNAME=HPPA 4827 RTL_ARCH=HPPA 4828 EPM_FLAGS="-a hppa" 4829 PLATFORMID=linux_hppa 4830 ;; 4831 i*86) 4832 CPUNAME=INTEL 4833 RTL_ARCH=x86 4834 PLATFORMID=linux_x86 4835 ;; 4836 ia64) 4837 CPUNAME=IA64 4838 RTL_ARCH=IA64 4839 PLATFORMID=linux_ia64 4840 ;; 4841 mips) 4842 CPUNAME=GODSON 4843 RTL_ARCH=MIPS_EB 4844 EPM_FLAGS="-a mips" 4845 PLATFORMID=linux_mips_eb 4846 ;; 4847 mips64) 4848 CPUNAME=GODSON64 4849 RTL_ARCH=MIPS64_EB 4850 EPM_FLAGS="-a mips64" 4851 PLATFORMID=linux_mips64_eb 4852 ;; 4853 mips64el) 4854 CPUNAME=GODSON64 4855 RTL_ARCH=MIPS64_EL 4856 EPM_FLAGS="-a mips64el" 4857 PLATFORMID=linux_mips64_el 4858 ;; 4859 mipsel) 4860 CPUNAME=GODSON 4861 RTL_ARCH=MIPS_EL 4862 EPM_FLAGS="-a mipsel" 4863 PLATFORMID=linux_mips_el 4864 ;; 4865 m68k) 4866 CPUNAME=M68K 4867 RTL_ARCH=M68K 4868 PLATFORMID=linux_m68k 4869 ;; 4870 powerpc) 4871 CPUNAME=POWERPC 4872 RTL_ARCH=PowerPC 4873 PLATFORMID=linux_powerpc 4874 ;; 4875 powerpc64) 4876 CPUNAME=POWERPC64 4877 RTL_ARCH=PowerPC_64 4878 PLATFORMID=linux_powerpc64 4879 ;; 4880 powerpc64le) 4881 CPUNAME=POWERPC64 4882 RTL_ARCH=PowerPC_64_LE 4883 PLATFORMID=linux_powerpc64_le 4884 ;; 4885 sparc) 4886 CPUNAME=SPARC 4887 RTL_ARCH=SPARC 4888 PLATFORMID=linux_sparc 4889 ;; 4890 sparc64) 4891 CPUNAME=SPARC64 4892 RTL_ARCH=SPARC64 4893 PLATFORMID=linux_sparc64 4894 ;; 4895 s390) 4896 CPUNAME=S390 4897 RTL_ARCH=S390 4898 PLATFORMID=linux_s390 4899 ;; 4900 s390x) 4901 CPUNAME=S390X 4902 RTL_ARCH=S390x 4903 PLATFORMID=linux_s390x 4904 ;; 4905 x86_64) 4906 CPUNAME=X86_64 4907 RTL_ARCH=X86_64 4908 PLATFORMID=linux_x86_64 4909 ;; 4910 *) 4911 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4912 ;; 4913 esac 4914 ;; 4915 4916linux-android*) 4917 COM=GCC 4918 USING_X11= 4919 OS=ANDROID 4920 RTL_OS=Android 4921 P_SEP=: 4922 4923 case "$host_cpu" in 4924 4925 arm|armel) 4926 CPUNAME=ARM 4927 RTL_ARCH=ARM_EABI 4928 PLATFORMID=android_arm_eabi 4929 ;; 4930 aarch64) 4931 CPUNAME=AARCH64 4932 RTL_ARCH=AARCH64 4933 PLATFORMID=android_aarch64 4934 ;; 4935 i*86) 4936 CPUNAME=INTEL 4937 RTL_ARCH=x86 4938 PLATFORMID=android_x86 4939 ;; 4940 x86_64) 4941 CPUNAME=X86_64 4942 RTL_ARCH=X86_64 4943 PLATFORMID=android_x86_64 4944 ;; 4945 *) 4946 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4947 ;; 4948 esac 4949 ;; 4950 4951*netbsd*) 4952 COM=GCC 4953 USING_X11=TRUE 4954 OS=NETBSD 4955 RTL_OS=NetBSD 4956 P_SEP=: 4957 4958 case "$host_cpu" in 4959 i*86) 4960 CPUNAME=INTEL 4961 RTL_ARCH=x86 4962 PLATFORMID=netbsd_x86 4963 ;; 4964 powerpc) 4965 CPUNAME=POWERPC 4966 RTL_ARCH=PowerPC 4967 PLATFORMID=netbsd_powerpc 4968 ;; 4969 sparc) 4970 CPUNAME=SPARC 4971 RTL_ARCH=SPARC 4972 PLATFORMID=netbsd_sparc 4973 ;; 4974 x86_64) 4975 CPUNAME=X86_64 4976 RTL_ARCH=X86_64 4977 PLATFORMID=netbsd_x86_64 4978 ;; 4979 *) 4980 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 4981 ;; 4982 esac 4983 ;; 4984 4985openbsd*) 4986 COM=GCC 4987 USING_X11=TRUE 4988 OS=OPENBSD 4989 RTL_OS=OpenBSD 4990 P_SEP=: 4991 4992 case "$host_cpu" in 4993 i*86) 4994 CPUNAME=INTEL 4995 RTL_ARCH=x86 4996 PLATFORMID=openbsd_x86 4997 ;; 4998 x86_64) 4999 CPUNAME=X86_64 5000 RTL_ARCH=X86_64 5001 PLATFORMID=openbsd_x86_64 5002 ;; 5003 *) 5004 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 5005 ;; 5006 esac 5007 SOLARINC="$SOLARINC -I/usr/local/include" 5008 ;; 5009 5010solaris*) 5011 COM=GCC 5012 USING_X11=TRUE 5013 OS=SOLARIS 5014 RTL_OS=Solaris 5015 P_SEP=: 5016 5017 case "$host_cpu" in 5018 i*86) 5019 CPUNAME=INTEL 5020 RTL_ARCH=x86 5021 PLATFORMID=solaris_x86 5022 ;; 5023 sparc) 5024 CPUNAME=SPARC 5025 RTL_ARCH=SPARC 5026 PLATFORMID=solaris_sparc 5027 ;; 5028 sparc64) 5029 CPUNAME=SPARC64 5030 RTL_ARCH=SPARC64 5031 PLATFORMID=solaris_sparc64 5032 ;; 5033 *) 5034 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os]) 5035 ;; 5036 esac 5037 SOLARINC="$SOLARINC -I/usr/local/include" 5038 ;; 5039 5040*) 5041 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!]) 5042 ;; 5043esac 5044 5045if test "$with_x" = "no"; then 5046 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.]) 5047fi 5048 5049DISABLE_GUI="" 5050if test "$enable_gui" = "no"; then 5051 if test "$USING_X11" != TRUE; then 5052 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.]) 5053 fi 5054 USING_X11= 5055 DISABLE_GUI=TRUE 5056 AC_DEFINE(HAVE_FEATURE_UI,0) 5057 test_cairo=yes 5058fi 5059AC_SUBST(DISABLE_GUI) 5060 5061WORKDIR="${BUILDDIR}/workdir" 5062INSTDIR="${BUILDDIR}/instdir" 5063INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX} 5064INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX} 5065SOLARINC="-I$SRC_ROOT/include $SOLARINC" 5066AC_SUBST(COM) 5067AC_SUBST(CPUNAME) 5068AC_SUBST(RTL_OS) 5069AC_SUBST(RTL_ARCH) 5070AC_SUBST(EPM_FLAGS) 5071AC_SUBST(USING_X11) 5072AC_SUBST([INSTDIR]) 5073AC_SUBST([INSTROOT]) 5074AC_SUBST([INSTROOTBASE]) 5075AC_SUBST(OS) 5076AC_SUBST(P_SEP) 5077AC_SUBST(WORKDIR) 5078AC_SUBST(PLATFORMID) 5079AC_SUBST(WINDOWS_X64) 5080AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR") 5081 5082dnl =================================================================== 5083dnl Test which package format to use 5084dnl =================================================================== 5085AC_MSG_CHECKING([which package format to use]) 5086if test -n "$with_package_format" -a "$with_package_format" != no; then 5087 for i in $with_package_format; do 5088 case "$i" in 5089 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi) 5090 ;; 5091 *) 5092 AC_MSG_ERROR([unsupported format $i. Supported by EPM are: 5093aix - AIX software distribution 5094bsd - FreeBSD, NetBSD, or OpenBSD software distribution 5095deb - Debian software distribution 5096pkg - Solaris software distribution 5097rpm - RedHat software distribution 5098 5099LibreOffice additionally supports: 5100archive - .tar.gz or .zip 5101dmg - macOS .dmg 5102installed - installation tree 5103msi - Windows .msi 5104 ]) 5105 ;; 5106 esac 5107 done 5108 # fakeroot is needed to ensure correct file ownerships/permissions 5109 # inside deb packages and tar archives created on Linux and Solaris. 5110 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then 5111 AC_PATH_PROG(FAKEROOT, fakeroot, no) 5112 if test "$FAKEROOT" = "no"; then 5113 AC_MSG_ERROR( 5114 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.]) 5115 fi 5116 fi 5117 PKGFORMAT="$with_package_format" 5118 AC_MSG_RESULT([$PKGFORMAT]) 5119else 5120 PKGFORMAT= 5121 AC_MSG_RESULT([none]) 5122fi 5123AC_SUBST(PKGFORMAT) 5124 5125dnl =================================================================== 5126dnl Set up a different compiler to produce tools to run on the build 5127dnl machine when doing cross-compilation 5128dnl =================================================================== 5129 5130m4_pattern_allow([PKG_CONFIG_FOR_BUILD]) 5131m4_pattern_allow([PKG_CONFIG_LIBDIR]) 5132if test "$cross_compiling" = "yes"; then 5133 AC_MSG_CHECKING([for BUILD platform configuration]) 5134 echo 5135 rm -rf CONF-FOR-BUILD config_build.mk 5136 mkdir CONF-FOR-BUILD 5137 # Here must be listed all files needed when running the configure script. In particular, also 5138 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity, 5139 # keep them in the same order as there. 5140 (cd $SRC_ROOT && tar cf - \ 5141 config.guess \ 5142 bin/get_config_variables \ 5143 solenv/bin/getcompver.awk \ 5144 solenv/inc/langlist.mk \ 5145 download.lst \ 5146 config_host.mk.in \ 5147 config_host_lang.mk.in \ 5148 Makefile.in \ 5149 bin/bffvalidator.sh.in \ 5150 bin/odfvalidator.sh.in \ 5151 bin/officeotron.sh.in \ 5152 hardened_runtime.xcent.in \ 5153 instsetoo_native/util/openoffice.lst.in \ 5154 config_host/*.in \ 5155 sysui/desktop/macosx/Info.plist.in \ 5156 .vscode/vs-code-template.code-workspace.in \ 5157 ) \ 5158 | (cd CONF-FOR-BUILD && tar xf -) 5159 cp configure CONF-FOR-BUILD 5160 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null 5161 ( 5162 unset COM USING_X11 OS CPUNAME 5163 unset CC CXX SYSBASE CFLAGS 5164 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP 5165 unset CPPUNIT_CFLAGS CPPUNIT_LIBS 5166 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR 5167 if test -n "$CC_FOR_BUILD"; then 5168 export CC="$CC_FOR_BUILD" 5169 CC_BASE=`first_arg_basename "$CC"` 5170 fi 5171 if test -n "$CXX_FOR_BUILD"; then 5172 export CXX="$CXX_FOR_BUILD" 5173 CXX_BASE=`first_arg_basename "$CXX"` 5174 fi 5175 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD" 5176 cd CONF-FOR-BUILD 5177 5178 sub_conf_opts="" 5179 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache" 5180 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home" 5181 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit" 5182 if test -n "$ENABLE_JAVA"; then 5183 case "$_os" in 5184 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be 5185 Android) 5186 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience 5187 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home" 5188 ;; 5189 *) 5190 if test -z "$with_jdk_home"; then 5191 AC_MSG_ERROR([Missing host JDK! This can't be detected for the build OS, so you have to specify it with --with-jdk-home.]) 5192 fi 5193 ;; 5194 esac 5195 else 5196 sub_conf_opts="$sub_conf_opts --without-java" 5197 fi 5198 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION" 5199 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu" 5200 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no" 5201 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options" 5202 5203 # Don't bother having configure look for stuff not needed for the build platform anyway 5204 ./configure \ 5205 --build="$build_alias" \ 5206 --disable-cups \ 5207 --disable-firebird-sdbc \ 5208 --disable-gpgmepp \ 5209 --disable-gstreamer-1-0 \ 5210 --disable-gtk3 \ 5211 --disable-mariadb-sdbc \ 5212 --disable-online-update \ 5213 --disable-opencl \ 5214 --disable-pdfimport \ 5215 --disable-postgresql-sdbc \ 5216 --disable-skia \ 5217 --enable-icecream="$enable_icecream" \ 5218 --without-doxygen \ 5219 --without-webdav \ 5220 --with-parallelism="$with_parallelism" \ 5221 --with-theme="$with_theme" \ 5222 --with-tls=openssl \ 5223 $sub_conf_opts \ 5224 --srcdir=$srcdir \ 5225 2>&1 | sed -e 's/^/ /' 5226 if test [${PIPESTATUS[0]}] -ne 0; then 5227 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log]) 5228 fi 5229 5230 # filter permitted build targets 5231 PERMITTED_BUILD_TARGETS=" 5232 AVMEDIA 5233 BOOST 5234 CLUCENE 5235 DBCONNECTIVITY 5236 DESKTOP 5237 DYNLOADING 5238 EPOXY 5239 EXPAT 5240 GLM 5241 GRAPHITE 5242 HARFBUZZ 5243 ICU 5244 LCMS2 5245 LIBJPEG_TURBO 5246 LIBLANGTAG 5247 LibO 5248 LIBFFI 5249 LIBPN 5250 LIBXML2 5251 LIBXSLT 5252 MDDS 5253 NATIVE 5254 OPENSSL 5255 ORCUS 5256 PYTHON 5257 SCRIPTING 5258 ZLIB 5259" 5260 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace, 5261 # newlined lists, to use grep as a filter 5262 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//') 5263 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')" 5264 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')" 5265 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk 5266 5267 cp config_host.mk ../config_build.mk 5268 cp config_host_lang.mk ../config_build_lang.mk 5269 mv config.log ../config.Build.log 5270 mkdir -p ../config_build 5271 mv config_host/*.h ../config_build 5272 5273 # all these will get a _FOR_BUILD postfix 5274 DIRECT_FOR_BUILD_SETTINGS=" 5275 CC 5276 CXX 5277 ILIB 5278 JAVA_HOME 5279 JAVAIFLAGS 5280 JDK 5281 LIBO_BIN_FOLDER 5282 LIBO_LIB_FOLDER 5283 LIBO_URE_LIB_FOLDER 5284 LIBO_URE_MISC_FOLDER 5285 OS 5286 SDKDIRNAME 5287 SYSTEM_LIBXML 5288 SYSTEM_LIBXSLT 5289" 5290 # these overwrite host config with build config 5291 OVERWRITING_SETTINGS=" 5292 ANT 5293 ANT_HOME 5294 ANT_LIB 5295 HSQLDB_USE_JDBC_4_1 5296 JAVA_CLASSPATH_NOT_SET 5297 JAVA_SOURCE_VER 5298 JAVA_TARGET_VER 5299 JAVACFLAGS 5300 JAVACOMPILER 5301 JAVADOC 5302 JAVADOCISGJDOC 5303" 5304 # these need some special handling 5305 EXTRA_HANDLED_SETTINGS=" 5306 INSTDIR 5307 INSTROOT 5308 PATH 5309 WORKDIR 5310" 5311 OLD_PATH=$PATH 5312 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS 5313 BUILD_PATH=$PATH 5314 PATH=$OLD_PATH 5315 5316 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'` 5317 echo "$line" >>build-config 5318 5319 for V in $DIRECT_FOR_BUILD_SETTINGS; do 5320 VV='$'$V 5321 VV=`eval "echo $VV"` 5322 if test -n "$VV"; then 5323 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}' 5324 echo "$line" >>build-config 5325 fi 5326 done 5327 5328 for V in $OVERWRITING_SETTINGS; do 5329 VV='$'$V 5330 VV=`eval "echo $VV"` 5331 if test -n "$VV"; then 5332 line=${V}='${'${V}:-$VV'}' 5333 echo "$line" >>build-config 5334 fi 5335 done 5336 5337 for V in INSTDIR INSTROOT WORKDIR; do 5338 VV='$'$V 5339 VV=`eval "echo $VV"` 5340 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"` 5341 if test -n "$VV"; then 5342 line="${V}_FOR_BUILD='$VV'" 5343 echo "$line" >>build-config 5344 fi 5345 done 5346 5347 ) 5348 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log]) 5349 test -f config_build.mk || AC_MSG_ERROR([A file called config_build.mk was supposed to have been copied here, but it isn't found]) 5350 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \ 5351 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk 5352 5353 eval `cat CONF-FOR-BUILD/build-config` 5354 5355 AC_MSG_RESULT([checking for BUILD platform configuration... done]) 5356 5357 rm -rf CONF-FOR-BUILD 5358else 5359 OS_FOR_BUILD="$OS" 5360 CC_FOR_BUILD="$CC" 5361 CXX_FOR_BUILD="$CXX" 5362 INSTDIR_FOR_BUILD="$INSTDIR" 5363 INSTROOT_FOR_BUILD="$INSTROOT" 5364 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER" 5365 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER" 5366 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER" 5367 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER" 5368 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME" 5369 WORKDIR_FOR_BUILD="$WORKDIR" 5370fi 5371AC_SUBST(OS_FOR_BUILD) 5372AC_SUBST(INSTDIR_FOR_BUILD) 5373AC_SUBST(INSTROOT_FOR_BUILD) 5374AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD) 5375AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD) 5376AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD) 5377AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD) 5378AC_SUBST(SDKDIRNAME_FOR_BUILD) 5379AC_SUBST(WORKDIR_FOR_BUILD) 5380AC_SUBST(CC_FOR_BUILD) 5381AC_SUBST(CXX_FOR_BUILD) 5382 5383dnl =================================================================== 5384dnl Check for syslog header 5385dnl =================================================================== 5386AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H)) 5387 5388dnl Set the ENABLE_WERROR variable. (Activate --enable-werror) 5389dnl =================================================================== 5390AC_MSG_CHECKING([whether to turn warnings to errors]) 5391if test -n "$enable_werror" -a "$enable_werror" != "no"; then 5392 ENABLE_WERROR="TRUE" 5393 PYTHONWARNINGS="error" 5394 AC_MSG_RESULT([yes]) 5395else 5396 if test -n "$LODE_HOME" -a -z "$enable_werror"; then 5397 ENABLE_WERROR="TRUE" 5398 PYTHONWARNINGS="error" 5399 AC_MSG_RESULT([yes]) 5400 else 5401 AC_MSG_RESULT([no]) 5402 fi 5403fi 5404AC_SUBST(ENABLE_WERROR) 5405AC_SUBST(PYTHONWARNINGS) 5406 5407dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT 5408dnl =================================================================== 5409AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug]) 5410if test -z "$enable_assert_always_abort"; then 5411 if test "$ENABLE_DEBUG" = TRUE; then 5412 enable_assert_always_abort=yes 5413 else 5414 enable_assert_always_abort=no 5415 fi 5416fi 5417if test "$enable_assert_always_abort" = "yes"; then 5418 ASSERT_ALWAYS_ABORT="TRUE" 5419 AC_MSG_RESULT([yes]) 5420else 5421 ASSERT_ALWAYS_ABORT="FALSE" 5422 AC_MSG_RESULT([no]) 5423fi 5424AC_SUBST(ASSERT_ALWAYS_ABORT) 5425 5426# Determine whether to use ooenv for the instdir installation 5427# =================================================================== 5428if test $_os != "WINNT" -a $_os != "Darwin"; then 5429 AC_MSG_CHECKING([whether to use ooenv for the instdir installation]) 5430 if test -z "$enable_ooenv"; then 5431 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then 5432 enable_ooenv=yes 5433 else 5434 enable_ooenv=no 5435 fi 5436 fi 5437 if test "$enable_ooenv" = "no"; then 5438 AC_MSG_RESULT([no]) 5439 else 5440 ENABLE_OOENV="TRUE" 5441 AC_MSG_RESULT([yes]) 5442 fi 5443fi 5444AC_SUBST(ENABLE_OOENV) 5445 5446if test "$USING_X11" != TRUE; then 5447 # be sure to do not mess with unneeded stuff 5448 test_randr=no 5449 test_xrender=no 5450 test_cups=no 5451 test_dbus=no 5452 build_gstreamer_1_0=no 5453 test_kf5=no 5454 test_qt5=no 5455 test_gtk3_kde5=no 5456 enable_cairo_canvas=no 5457fi 5458 5459if test "$OS" = "HAIKU"; then 5460 enable_cairo_canvas=yes 5461 test_kf5=yes 5462fi 5463 5464if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then 5465 AC_MSG_WARN([The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!]) 5466 add_warning "The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!" 5467 enable_kf5=yes 5468fi 5469 5470if test "$test_kf5" = "yes"; then 5471 test_qt5=yes 5472fi 5473 5474if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then 5475 if test "$enable_qt5" = "no"; then 5476 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5]) 5477 else 5478 enable_qt5=yes 5479 fi 5480fi 5481 5482dnl =================================================================== 5483dnl check for cups support 5484dnl =================================================================== 5485ENABLE_CUPS="" 5486 5487if test "$enable_cups" = "no"; then 5488 test_cups=no 5489fi 5490 5491AC_MSG_CHECKING([whether to enable CUPS support]) 5492if test "$test_cups" = "yes"; then 5493 ENABLE_CUPS="TRUE" 5494 AC_MSG_RESULT([yes]) 5495 5496 AC_MSG_CHECKING([whether cups support is present]) 5497 AC_CHECK_LIB([cups], [cupsPrintFiles], [:]) 5498 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H)) 5499 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then 5500 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.]) 5501 fi 5502 5503else 5504 AC_MSG_RESULT([no]) 5505fi 5506 5507AC_SUBST(ENABLE_CUPS) 5508 5509# fontconfig checks 5510if test "$test_fontconfig" = "yes"; then 5511 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1]) 5512 SYSTEM_FONTCONFIG=TRUE 5513 FilterLibs "${FONTCONFIG_LIBS}" 5514 FONTCONFIG_LIBS="${filteredlibs}" 5515fi 5516AC_SUBST(FONTCONFIG_CFLAGS) 5517AC_SUBST(FONTCONFIG_LIBS) 5518AC_SUBST([SYSTEM_FONTCONFIG]) 5519 5520dnl whether to find & fetch external tarballs? 5521dnl =================================================================== 5522if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then 5523 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 5524 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`" 5525 else 5526 TARFILE_LOCATION="$LODE_HOME/ext_tar" 5527 fi 5528fi 5529if test -z "$TARFILE_LOCATION"; then 5530 if test -d "$SRC_ROOT/src" ; then 5531 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs" 5532 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src" 5533 fi 5534 TARFILE_LOCATION="$SRC_ROOT/external/tarballs" 5535else 5536 AbsolutePath "$TARFILE_LOCATION" 5537 PathFormat "${absolute_path}" 5538 TARFILE_LOCATION="${formatted_path}" 5539fi 5540AC_SUBST(TARFILE_LOCATION) 5541 5542AC_MSG_CHECKING([whether we want to fetch tarballs]) 5543if test "$enable_fetch_external" != "no"; then 5544 if test "$with_all_tarballs" = "yes"; then 5545 AC_MSG_RESULT([yes, all of them]) 5546 DO_FETCH_TARBALLS="ALL" 5547 else 5548 AC_MSG_RESULT([yes, if we use them]) 5549 DO_FETCH_TARBALLS="TRUE" 5550 fi 5551else 5552 AC_MSG_RESULT([no]) 5553 DO_FETCH_TARBALLS= 5554fi 5555AC_SUBST(DO_FETCH_TARBALLS) 5556 5557AC_MSG_CHECKING([whether to build help]) 5558if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then 5559 BUILD_TYPE="$BUILD_TYPE HELP" 5560 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES" 5561 case "$with_help" in 5562 "html") 5563 ENABLE_HTMLHELP=TRUE 5564 SCPDEFS="$SCPDEFS -DWITH_HELP" 5565 AC_MSG_RESULT([HTML]) 5566 ;; 5567 "online") 5568 ENABLE_HTMLHELP=TRUE 5569 HELP_ONLINE=TRUE 5570 AC_MSG_RESULT([HTML]) 5571 ;; 5572 yes) 5573 SCPDEFS="$SCPDEFS -DWITH_HELP" 5574 AC_MSG_RESULT([yes]) 5575 ;; 5576 *) 5577 AC_MSG_ERROR([Unknown --with-help=$with_help]) 5578 ;; 5579 esac 5580else 5581 AC_MSG_RESULT([no]) 5582fi 5583AC_SUBST([ENABLE_HTMLHELP]) 5584AC_SUBST([HELP_ONLINE]) 5585 5586AC_MSG_CHECKING([whether to enable xapian-omega support for help]) 5587if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then 5588 BUILD_TYPE="$BUILD_TYPE HELP" 5589 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES" 5590 case "$with_omindex" in 5591 "server") 5592 ENABLE_HTMLHELP=TRUE 5593 HELP_ONLINE=TRUE 5594 HELP_OMINDEX_PAGE=TRUE 5595 AC_MSG_RESULT([SERVER]) 5596 ;; 5597 "noxap") 5598 ENABLE_HTMLHELP=TRUE 5599 HELP_ONLINE=TRUE 5600 HELP_OMINDEX_PAGE=FALSE 5601 AC_MSG_RESULT([NOXAP]) 5602 ;; 5603 *) 5604 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex]) 5605 ;; 5606 esac 5607else 5608 HELP_OMINDEX_PAGE=FALSE 5609 AC_MSG_RESULT([no]) 5610fi 5611AC_SUBST([ENABLE_HTMLHELP]) 5612AC_SUBST([HELP_OMINDEX_PAGE]) 5613AC_SUBST([HELP_ONLINE]) 5614 5615 5616dnl Test whether to include MySpell dictionaries 5617dnl =================================================================== 5618AC_MSG_CHECKING([whether to include MySpell dictionaries]) 5619if test "$with_myspell_dicts" = "yes"; then 5620 AC_MSG_RESULT([yes]) 5621 WITH_MYSPELL_DICTS=TRUE 5622 BUILD_TYPE="$BUILD_TYPE DICTIONARIES" 5623 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES" 5624else 5625 AC_MSG_RESULT([no]) 5626 WITH_MYSPELL_DICTS= 5627fi 5628AC_SUBST(WITH_MYSPELL_DICTS) 5629 5630# There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS. 5631if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then 5632 if test "$with_system_dicts" = yes; then 5633 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]); 5634 fi 5635 with_system_dicts=no 5636fi 5637 5638AC_MSG_CHECKING([whether to use dicts from external paths]) 5639if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then 5640 AC_MSG_RESULT([yes]) 5641 SYSTEM_DICTS=TRUE 5642 AC_MSG_CHECKING([for spelling dictionary directory]) 5643 if test -n "$with_external_dict_dir"; then 5644 DICT_SYSTEM_DIR=file://$with_external_dict_dir 5645 else 5646 DICT_SYSTEM_DIR=file:///usr/share/hunspell 5647 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then 5648 DICT_SYSTEM_DIR=file:///usr/share/myspell 5649 fi 5650 fi 5651 AC_MSG_RESULT([$DICT_SYSTEM_DIR]) 5652 AC_MSG_CHECKING([for hyphenation patterns directory]) 5653 if test -n "$with_external_hyph_dir"; then 5654 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir 5655 else 5656 HYPH_SYSTEM_DIR=file:///usr/share/hyphen 5657 fi 5658 AC_MSG_RESULT([$HYPH_SYSTEM_DIR]) 5659 AC_MSG_CHECKING([for thesaurus directory]) 5660 if test -n "$with_external_thes_dir"; then 5661 THES_SYSTEM_DIR=file://$with_external_thes_dir 5662 else 5663 THES_SYSTEM_DIR=file:///usr/share/mythes 5664 fi 5665 AC_MSG_RESULT([$THES_SYSTEM_DIR]) 5666else 5667 AC_MSG_RESULT([no]) 5668 SYSTEM_DICTS= 5669fi 5670AC_SUBST(SYSTEM_DICTS) 5671AC_SUBST(DICT_SYSTEM_DIR) 5672AC_SUBST(HYPH_SYSTEM_DIR) 5673AC_SUBST(THES_SYSTEM_DIR) 5674 5675dnl =================================================================== 5676dnl Precompiled headers. 5677ENABLE_PCH="" 5678AC_MSG_CHECKING([whether to enable pch feature]) 5679if test -z "$enable_pch"; then 5680 if test "$_os" = "WINNT"; then 5681 # Enabled by default on Windows. 5682 enable_pch=yes 5683 else 5684 enable_pch=no 5685 fi 5686fi 5687if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then 5688 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler]) 5689fi 5690if test "$enable_pch" = "system"; then 5691 ENABLE_PCH="1" 5692 AC_MSG_RESULT([yes (system headers)]) 5693elif test "$enable_pch" = "base"; then 5694 ENABLE_PCH="2" 5695 AC_MSG_RESULT([yes (system and base headers)]) 5696elif test "$enable_pch" = "normal"; then 5697 ENABLE_PCH="3" 5698 AC_MSG_RESULT([yes (normal)]) 5699elif test "$enable_pch" = "full"; then 5700 ENABLE_PCH="4" 5701 AC_MSG_RESULT([yes (full)]) 5702elif test "$enable_pch" = "yes"; then 5703 # Pick a suitable default. 5704 if test "$GCC" = "yes"; then 5705 # With Clang and GCC higher levels do not seem to make a noticeable improvement, 5706 # while making the PCHs larger and rebuilds more likely. 5707 ENABLE_PCH="2" 5708 AC_MSG_RESULT([yes (system and base headers)]) 5709 else 5710 # With MSVC the highest level makes a significant difference, 5711 # and it was the default when there used to be no PCH levels. 5712 ENABLE_PCH="4" 5713 AC_MSG_RESULT([yes (full)]) 5714 fi 5715elif test "$enable_pch" = "no"; then 5716 AC_MSG_RESULT([no]) 5717else 5718 AC_MSG_ERROR([Unknown value for --enable-pch]) 5719fi 5720AC_SUBST(ENABLE_PCH) 5721# ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode 5722if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then 5723 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found]) 5724 if test "$CCACHE_BIN" != "not found"; then 5725 AC_MSG_CHECKING([ccache version]) 5726 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'` 5727 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` 5728 AC_MSG_RESULT([$CCACHE_VERSION]) 5729 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH]) 5730 if test "$CCACHE_NUMVER" -gt "030701"; then 5731 AC_MSG_RESULT([yes]) 5732 else 5733 AC_MSG_RESULT([no (not newer than 3.7.1)]) 5734 CCACHE_DEPEND_MODE= 5735 fi 5736 fi 5737fi 5738 5739PCH_INSTANTIATE_TEMPLATES= 5740if test -n "$ENABLE_PCH"; then 5741 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates]) 5742 save_CFLAGS=$CFLAGS 5743 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates" 5744 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[]) 5745 CFLAGS=$save_CFLAGS 5746 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then 5747 AC_MSG_RESULT(yes) 5748 else 5749 AC_MSG_RESULT(no) 5750 fi 5751fi 5752AC_SUBST(PCH_INSTANTIATE_TEMPLATES) 5753 5754BUILDING_PCH_WITH_OBJ= 5755if test -n "$ENABLE_PCH"; then 5756 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj]) 5757 save_CFLAGS=$CFLAGS 5758 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj" 5759 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[]) 5760 CFLAGS=$save_CFLAGS 5761 if test -n "$BUILDING_PCH_WITH_OBJ"; then 5762 AC_MSG_RESULT(yes) 5763 else 5764 AC_MSG_RESULT(no) 5765 fi 5766fi 5767AC_SUBST(BUILDING_PCH_WITH_OBJ) 5768 5769PCH_CODEGEN= 5770PCH_NO_CODEGEN= 5771if test -n "$BUILDING_PCH_WITH_OBJ"; then 5772 AC_MSG_CHECKING([whether $CC supports -fpch-codegen]) 5773 save_CFLAGS=$CFLAGS 5774 CFLAGS="$CFLAGS -Werror -fpch-codegen" 5775 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])], 5776 [ 5777 PCH_CODEGEN="-fpch-codegen" 5778 PCH_NO_CODEGEN="-fno-pch-codegen" 5779 ],[]) 5780 CFLAGS=$save_CFLAGS 5781 if test -n "$PCH_CODEGEN"; then 5782 AC_MSG_RESULT(yes) 5783 else 5784 AC_MSG_RESULT(no) 5785 fi 5786fi 5787AC_SUBST(PCH_CODEGEN) 5788AC_SUBST(PCH_NO_CODEGEN) 5789PCH_DEBUGINFO= 5790if test -n "$BUILDING_PCH_WITH_OBJ"; then 5791 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo]) 5792 save_CFLAGS=$CFLAGS 5793 CFLAGS="$CFLAGS -Werror -fpch-debuginfo" 5794 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[]) 5795 CFLAGS=$save_CFLAGS 5796 if test -n "$PCH_DEBUGINFO"; then 5797 AC_MSG_RESULT(yes) 5798 else 5799 AC_MSG_RESULT(no) 5800 fi 5801fi 5802AC_SUBST(PCH_DEBUGINFO) 5803 5804TAB=`printf '\t'` 5805 5806AC_MSG_CHECKING([the GNU Make version]) 5807_make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'` 5808_make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` 5809if test "$_make_longver" -ge "038200"; then 5810 AC_MSG_RESULT([$GNUMAKE $_make_version]) 5811 5812elif test "$_make_longver" -ge "038100"; then 5813 if test "$build_os" = "cygwin"; then 5814 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed]) 5815 fi 5816 AC_MSG_RESULT([$GNUMAKE $_make_version]) 5817 5818 dnl =================================================================== 5819 dnl Search all the common names for sha1sum 5820 dnl =================================================================== 5821 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl) 5822 if test -z "$SHA1SUM"; then 5823 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS]) 5824 elif test "$SHA1SUM" = "openssl"; then 5825 SHA1SUM="openssl sha1" 5826 fi 5827 AC_MSG_CHECKING([for GNU Make bug 20033]) 5828 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX` 5829 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF 5830A := \$(wildcard *.a) 5831 5832.PHONY: all 5833all: \$(A:.a=.b) 5834<TAB>@echo survived bug20033. 5835 5836.PHONY: setup 5837setup: 5838<TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a 5839 5840define d1 5841@echo lala \$(1) 5842@sleep 1 5843endef 5844 5845define d2 5846@echo tyty \$(1) 5847@sleep 1 5848endef 5849 5850%.b : %.a 5851<TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\ 5852<TAB>\$(call d1,\$(CHECKSUM)),\ 5853<TAB>\$(call d2,\$(CHECKSUM))) 5854EOF 5855 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then 5856 no_parallelism_make="YES" 5857 AC_MSG_RESULT([yes, disable parallelism]) 5858 else 5859 AC_MSG_RESULT([no, keep parallelism enabled]) 5860 fi 5861 rm -rf $TESTGMAKEBUG20033 5862else 5863 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed]) 5864fi 5865 5866# find if gnumake support file function 5867AC_MSG_CHECKING([whether GNU Make supports the 'file' function]) 5868TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`" 5869if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 5870 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC` 5871fi 5872$SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF 5873\$(file >test.txt,Success ) 5874 5875.PHONY: all 5876all: 5877<TAB>@cat test.txt 5878 5879EOF 5880$GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2 5881if test -f $TESTGMAKEFILEFUNC/test.txt; then 5882 HAVE_GNUMAKE_FILE_FUNC=TRUE 5883 AC_MSG_RESULT([yes]) 5884else 5885 AC_MSG_RESULT([no]) 5886fi 5887rm -rf $TESTGMAKEFILEFUNC 5888AC_SUBST(HAVE_GNUMAKE_FILE_FUNC) 5889AC_SUBST(GNUMAKE_WIN_NATIVE) 5890 5891_make_ver_check=`$GNUMAKE --version | grep "Built for Windows"` 5892STALE_MAKE= 5893if test "$_make_ver_check" = ""; then 5894 STALE_MAKE=TRUE 5895fi 5896 5897HAVE_LD_HASH_STYLE=FALSE 5898WITH_LINKER_HASH_STYLE= 5899AC_MSG_CHECKING([for --hash-style gcc linker support]) 5900if test "$GCC" = "yes"; then 5901 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then 5902 hash_styles="gnu sysv" 5903 elif test "$with_linker_hash_style" = "no"; then 5904 hash_styles= 5905 else 5906 hash_styles="$with_linker_hash_style" 5907 fi 5908 5909 for hash_style in $hash_styles; do 5910 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue 5911 hash_style_ldflags_save=$LDFLAGS 5912 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style" 5913 5914 AC_RUN_IFELSE([AC_LANG_PROGRAM( 5915 [ 5916#include <stdio.h> 5917 ],[ 5918printf (""); 5919 ])], 5920 [ 5921 HAVE_LD_HASH_STYLE=TRUE 5922 WITH_LINKER_HASH_STYLE=$hash_style 5923 ], 5924 [HAVE_LD_HASH_STYLE=FALSE], 5925 [HAVE_LD_HASH_STYLE=FALSE]) 5926 LDFLAGS=$hash_style_ldflags_save 5927 done 5928 5929 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then 5930 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE ) 5931 else 5932 AC_MSG_RESULT( no ) 5933 fi 5934 LDFLAGS=$hash_style_ldflags_save 5935else 5936 AC_MSG_RESULT( no ) 5937fi 5938AC_SUBST(HAVE_LD_HASH_STYLE) 5939AC_SUBST(WITH_LINKER_HASH_STYLE) 5940 5941dnl =================================================================== 5942dnl Check whether there's a Perl version available. 5943dnl =================================================================== 5944if test -z "$with_perl_home"; then 5945 AC_PATH_PROG(PERL, perl) 5946else 5947 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"` 5948 _perl_path="$with_perl_home/bin/perl" 5949 if test -x "$_perl_path"; then 5950 PERL=$_perl_path 5951 else 5952 AC_MSG_ERROR([$_perl_path not found]) 5953 fi 5954fi 5955 5956dnl =================================================================== 5957dnl Testing for Perl version 5 or greater. 5958dnl $] is the Perl version variable, it is returned as an integer 5959dnl =================================================================== 5960if test "$PERL"; then 5961 AC_MSG_CHECKING([the Perl version]) 5962 ${PERL} -e "exit($]);" 5963 _perl_version=$? 5964 if test "$_perl_version" -lt 5; then 5965 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5]) 5966 fi 5967 AC_MSG_RESULT([Perl $_perl_version]) 5968else 5969 AC_MSG_ERROR([Perl not found, install Perl 5]) 5970fi 5971 5972dnl =================================================================== 5973dnl Testing for required Perl modules 5974dnl =================================================================== 5975 5976AC_MSG_CHECKING([for required Perl modules]) 5977perl_use_string="use Cwd ; use Digest::MD5" 5978if test "$_os" = "WINNT"; then 5979 if test -n "$PKGFORMAT"; then 5980 for i in $PKGFORMAT; do 5981 case "$i" in 5982 msi) 5983 # for getting fonts versions to use in MSI 5984 perl_use_string="$perl_use_string ; use Font::TTF::Font" 5985 ;; 5986 esac 5987 done 5988 fi 5989fi 5990if test "$with_system_hsqldb" = "yes"; then 5991 perl_use_string="$perl_use_string ; use Archive::Zip" 5992fi 5993if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then 5994 # OpenSSL needs that to build 5995 perl_use_string="$perl_use_string ; use FindBin" 5996fi 5997if $PERL -e "$perl_use_string">/dev/null 2>&1; then 5998 AC_MSG_RESULT([all modules found]) 5999else 6000 AC_MSG_RESULT([failed to find some modules]) 6001 # Find out which modules are missing. 6002 for i in $perl_use_string; do 6003 if test "$i" != "use" -a "$i" != ";"; then 6004 if ! $PERL -e "use $i;">/dev/null 2>&1; then 6005 missing_perl_modules="$missing_perl_modules $i" 6006 fi 6007 fi 6008 done 6009 AC_MSG_ERROR([ 6010 The missing Perl modules are: $missing_perl_modules 6011 Install them as superuser/administrator with "cpan -i $missing_perl_modules"]) 6012fi 6013 6014dnl =================================================================== 6015dnl Check for pkg-config 6016dnl =================================================================== 6017if test "$_os" != "WINNT"; then 6018 PKG_PROG_PKG_CONFIG 6019fi 6020 6021if test "$_os" != "WINNT"; then 6022 6023 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache 6024 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars 6025 # explicitly. Or put /path/to/compiler in PATH yourself. 6026 6027 # Use wrappers for LTO 6028 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then 6029 AC_CHECK_TOOL(AR,gcc-ar) 6030 AC_CHECK_TOOL(NM,gcc-nm) 6031 AC_CHECK_TOOL(RANLIB,gcc-ranlib) 6032 else 6033 AC_CHECK_TOOL(AR,ar) 6034 AC_CHECK_TOOL(NM,nm) 6035 AC_CHECK_TOOL(RANLIB,ranlib) 6036 fi 6037 AC_CHECK_TOOL(OBJDUMP,objdump) 6038 AC_CHECK_TOOL(READELF,readelf) 6039 AC_CHECK_TOOL(STRIP,strip) 6040 if test "$_os" = "WINNT"; then 6041 AC_CHECK_TOOL(DLLTOOL,dlltool) 6042 AC_CHECK_TOOL(WINDRES,windres) 6043 fi 6044fi 6045AC_SUBST(AR) 6046AC_SUBST(DLLTOOL) 6047AC_SUBST(NM) 6048AC_SUBST(OBJDUMP) 6049AC_SUBST(PKG_CONFIG) 6050AC_SUBST(RANLIB) 6051AC_SUBST(READELF) 6052AC_SUBST(STRIP) 6053AC_SUBST(WINDRES) 6054 6055dnl =================================================================== 6056dnl pkg-config checks on macOS 6057dnl =================================================================== 6058 6059if test $_os = Darwin; then 6060 AC_MSG_CHECKING([for bogus pkg-config]) 6061 if test -n "$PKG_CONFIG"; then 6062 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then 6063 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG]) 6064 else 6065 if test "$enable_bogus_pkg_config" = "yes"; then 6066 AC_MSG_RESULT([yes, user-approved from unknown origin.]) 6067 else 6068 AC_MSG_ERROR([yes, from unknown origin. This *will* break the build. Please modify your PATH variable so that $PKG_CONFIG is no longer found by configure scripts.]) 6069 fi 6070 fi 6071 else 6072 AC_MSG_RESULT([no, good]) 6073 fi 6074fi 6075 6076find_csc() 6077{ 6078 # Return value: $csctest 6079 6080 unset csctest 6081 6082 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath" 6083 if test -n "$regvalue"; then 6084 csctest=$regvalue 6085 return 6086 fi 6087} 6088 6089find_al() 6090{ 6091 # Return value: $altest 6092 6093 unset altest 6094 6095 # We need this check to detect 4.6.1 or above. 6096 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do 6097 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder" 6098 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then 6099 altest=$regvalue 6100 return 6101 fi 6102 done 6103 6104 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do 6105 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder" 6106 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then 6107 altest=$regvalue 6108 return 6109 fi 6110 done 6111} 6112 6113find_dotnetsdk46() 6114{ 6115 unset frametest 6116 6117 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do 6118 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder" 6119 if test -n "$regvalue"; then 6120 frametest=$regvalue 6121 return 6122 fi 6123 done 6124} 6125 6126find_winsdk_version() 6127{ 6128 # Args: $1 : SDK version as in "8.0", "8.1A" etc 6129 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir 6130 6131 unset winsdktest winsdkbinsubdir winsdklibsubdir 6132 6133 case "$1" in 6134 8.0|8.0A) 6135 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot" 6136 if test -n "$regvalue"; then 6137 winsdktest=$regvalue 6138 winsdklibsubdir=win8 6139 return 6140 fi 6141 ;; 6142 8.1|8.1A) 6143 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81" 6144 if test -n "$regvalue"; then 6145 winsdktest=$regvalue 6146 winsdklibsubdir=winv6.3 6147 return 6148 fi 6149 ;; 6150 10.0) 6151 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder" 6152 if test -n "$regvalue"; then 6153 winsdktest=$regvalue 6154 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion" 6155 if test -n "$regvalue"; then 6156 winsdkbinsubdir="$regvalue".0 6157 winsdklibsubdir=$winsdkbinsubdir 6158 local tmppath="$winsdktest\\Include\\$winsdklibsubdir" 6159 local tmppath_unix=$(cygpath -u "$tmppath") 6160 # test exist the SDK path 6161 if test -d "$tmppath_unix"; then 6162 # when path is convertible to a short path then path is okay 6163 cygpath -d "$tmppath" >/dev/null 2>&1 6164 if test $? -ne 0; then 6165 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation]) 6166 fi 6167 else 6168 AC_MSG_ERROR([The Windows SDK not found, check the installation]) 6169 fi 6170 fi 6171 return 6172 fi 6173 ;; 6174 esac 6175} 6176 6177find_winsdk() 6178{ 6179 # Return value: From find_winsdk_version 6180 6181 unset winsdktest 6182 6183 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do 6184 find_winsdk_version $ver 6185 if test -n "$winsdktest"; then 6186 return 6187 fi 6188 done 6189} 6190 6191find_msms() 6192{ 6193 # Return value: $msmdir 6194 6195 AC_MSG_CHECKING([for MSVC merge modules directory]) 6196 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm 6197 local my_msm_dir 6198 6199 case "$VCVER" in 6200 160) 6201 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}" 6202 ;; 6203 esac 6204 for f in $my_msm_files; do 6205 echo "$as_me:$LINENO: searching for $f" >&5 6206 done 6207 6208 msmdir= 6209 for ver in 14.0 15.0; do 6210 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir 6211 if test -n "$regvalue"; then 6212 for f in ${my_msm_files}; do 6213 if test -e "$regvalue/${f}"; then 6214 msmdir=$regvalue 6215 break 6216 fi 6217 done 6218 fi 6219 done 6220 dnl Is the following fallback really necessary, or was it added in response 6221 dnl to never having started Visual Studio on a given machine, so the 6222 dnl registry keys checked above had presumably not yet been created? 6223 dnl Anyway, if it really is necessary, it might be worthwhile to extend it 6224 dnl to also check %CommonProgramFiles(X86)% (typically expanding to 6225 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles% 6226 dnl expanding to "C:\Program Files\Common Files"), which would need 6227 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to 6228 dnl obtain its value from cygwin: 6229 if test -z "$msmdir"; then 6230 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/" 6231 for f in ${my_msm_files}; do 6232 if test -e "$my_msm_dir/${f}"; then 6233 msmdir=$my_msm_dir 6234 fi 6235 done 6236 fi 6237 6238 dnl Starting from MSVC 15.0, merge modules are located in different directory 6239 case "$VCVER" in 6240 160) 6241 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do 6242 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5 6243 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/" 6244 for f in ${my_msm_files}; do 6245 if test -e "$my_msm_dir/${f}"; then 6246 msmdir=$my_msm_dir 6247 break 6248 fi 6249 done 6250 done 6251 ;; 6252 esac 6253 6254 if test -n "$msmdir"; then 6255 msmdir=`cygpath -m "$msmdir"` 6256 AC_MSG_RESULT([$msmdir]) 6257 else 6258 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then 6259 AC_MSG_FAILURE([not found]) 6260 else 6261 AC_MSG_WARN([not found (check config.log)]) 6262 add_warning "MSM none of ${my_msm_files} found" 6263 fi 6264 fi 6265} 6266 6267find_msvc_x64_dlls() 6268{ 6269 # Return value: $msvcdllpath, $msvcdlls 6270 6271 AC_MSG_CHECKING([for MSVC x64 DLL path]) 6272 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT" 6273 case "$VCVER" in 6274 160) 6275 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do 6276 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5 6277 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then 6278 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" 6279 break 6280 fi 6281 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5 6282 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then 6283 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" 6284 break 6285 fi 6286 done 6287 ;; 6288 esac 6289 AC_MSG_RESULT([$msvcdllpath]) 6290 AC_MSG_CHECKING([for MSVC x64 DLLs]) 6291 msvcdlls="msvcp140.dll vcruntime140.dll" 6292 for dll in $msvcdlls; do 6293 if ! test -f "$msvcdllpath/$dll"; then 6294 AC_MSG_FAILURE([missing $dll]) 6295 fi 6296 done 6297 AC_MSG_RESULT([found all ($msvcdlls)]) 6298} 6299 6300dnl ========================================= 6301dnl Check for the Windows SDK. 6302dnl ========================================= 6303if test "$_os" = "WINNT"; then 6304 AC_MSG_CHECKING([for Windows SDK]) 6305 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then 6306 find_winsdk 6307 WINDOWS_SDK_HOME=$winsdktest 6308 6309 # normalize if found 6310 if test -n "$WINDOWS_SDK_HOME"; then 6311 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"` 6312 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"` 6313 fi 6314 6315 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir 6316 fi 6317 6318 if test -n "$WINDOWS_SDK_HOME"; then 6319 # Remove a possible trailing backslash 6320 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'` 6321 6322 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \ 6323 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \ 6324 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then 6325 have_windows_sdk_headers=yes 6326 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \ 6327 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \ 6328 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then 6329 have_windows_sdk_headers=yes 6330 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \ 6331 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \ 6332 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then 6333 have_windows_sdk_headers=yes 6334 else 6335 have_windows_sdk_headers=no 6336 fi 6337 6338 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then 6339 have_windows_sdk_libs=yes 6340 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then 6341 have_windows_sdk_libs=yes 6342 else 6343 have_windows_sdk_libs=no 6344 fi 6345 6346 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then 6347 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of 6348the Windows SDK are installed.]) 6349 fi 6350 fi 6351 6352 if test -z "$WINDOWS_SDK_HOME"; then 6353 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?]) 6354 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then 6355 WINDOWS_SDK_VERSION=80 6356 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)]) 6357 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then 6358 WINDOWS_SDK_VERSION=81 6359 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)]) 6360 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then 6361 WINDOWS_SDK_VERSION=10 6362 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)]) 6363 else 6364 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)]) 6365 fi 6366 PathFormat "$WINDOWS_SDK_HOME" 6367 WINDOWS_SDK_HOME="$formatted_path" 6368 WINDOWS_SDK_HOME_unix="$formatted_path_unix" 6369 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then 6370 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include" 6371 if test -d "$WINDOWS_SDK_HOME/include/um"; then 6372 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared" 6373 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then 6374 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared" 6375 fi 6376 fi 6377 6378 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a 6379 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1 6380 dnl but not in v8.0), so allow this to be overridden with a 6381 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid 6382 dnl and configuration error if no WiLangId.vbs is found would arguably be 6383 dnl better, but I do not know under which conditions exactly it is needed by 6384 dnl msiglobal.pm: 6385 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then 6386 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs 6387 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID") 6388 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then 6389 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs" 6390 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID") 6391 fi 6392 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then 6393 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs 6394 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID") 6395 fi 6396 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then 6397 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs") 6398 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID") 6399 fi 6400 fi 6401 if test -n "$with_lang" -a "$with_lang" != "en-US"; then 6402 if test -n "$with_package_format" -a "$with_package_format" != no; then 6403 for i in "$with_package_format"; do 6404 if test "$i" = "msi"; then 6405 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then 6406 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail]) 6407 fi 6408 fi 6409 done 6410 fi 6411 fi 6412fi 6413AC_SUBST(WINDOWS_SDK_HOME) 6414AC_SUBST(WINDOWS_SDK_LIB_SUBDIR) 6415AC_SUBST(WINDOWS_SDK_VERSION) 6416AC_SUBST(WINDOWS_SDK_WILANGID) 6417 6418if test "$build_os" = "cygwin"; then 6419 dnl Check midl.exe; this being the first check for a tool in the SDK bin 6420 dnl dir, it also determines that dir's path w/o an arch segment if any, 6421 dnl WINDOWS_SDK_BINDIR_NO_ARCH: 6422 AC_MSG_CHECKING([for midl.exe]) 6423 6424 find_winsdk 6425 if test -n "$winsdkbinsubdir" \ 6426 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe" 6427 then 6428 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH 6429 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir 6430 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then 6431 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH 6432 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin 6433 elif test -f "$winsdktest/Bin/midl.exe"; then 6434 MIDL_PATH=$winsdktest/Bin 6435 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin 6436 fi 6437 if test ! -f "$MIDL_PATH/midl.exe"; then 6438 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?]) 6439 else 6440 AC_MSG_RESULT([$MIDL_PATH/midl.exe]) 6441 fi 6442 6443 # Convert to posix path with 8.3 filename restrictions ( No spaces ) 6444 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"` 6445 6446 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \ 6447 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \ 6448 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \ 6449 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then : 6450 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \ 6451 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \ 6452 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \ 6453 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then : 6454 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \ 6455 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \ 6456 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \ 6457 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then : 6458 else 6459 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.]) 6460 fi 6461 6462 dnl Check csc.exe 6463 AC_MSG_CHECKING([for csc.exe]) 6464 find_csc 6465 if test -f "$csctest/csc.exe"; then 6466 CSC_PATH="$csctest" 6467 fi 6468 if test ! -f "$CSC_PATH/csc.exe"; then 6469 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe]) 6470 else 6471 AC_MSG_RESULT([$CSC_PATH/csc.exe]) 6472 fi 6473 6474 CSC_PATH=`win_short_path_for_make "$CSC_PATH"` 6475 6476 dnl Check al.exe 6477 AC_MSG_CHECKING([for al.exe]) 6478 find_winsdk 6479 if test -n "$winsdkbinsubdir" \ 6480 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe" 6481 then 6482 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH" 6483 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then 6484 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH" 6485 elif test -f "$winsdktest/Bin/al.exe"; then 6486 AL_PATH="$winsdktest/Bin" 6487 fi 6488 6489 if test -z "$AL_PATH"; then 6490 find_al 6491 if test -f "$altest/bin/al.exe"; then 6492 AL_PATH="$altest/bin" 6493 elif test -f "$altest/al.exe"; then 6494 AL_PATH="$altest" 6495 fi 6496 fi 6497 if test ! -f "$AL_PATH/al.exe"; then 6498 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe]) 6499 else 6500 AC_MSG_RESULT([$AL_PATH/al.exe]) 6501 fi 6502 6503 AL_PATH=`win_short_path_for_make "$AL_PATH"` 6504 6505 dnl Check mscoree.lib / .NET Framework dir 6506 AC_MSG_CHECKING(.NET Framework) 6507 find_dotnetsdk46 6508 PathFormat "$frametest" 6509 frametest="$formatted_path" 6510 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then 6511 DOTNET_FRAMEWORK_HOME="$frametest" 6512 else 6513 find_winsdk 6514 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then 6515 DOTNET_FRAMEWORK_HOME="$winsdktest" 6516 fi 6517 fi 6518 if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then 6519 AC_MSG_ERROR([mscoree.lib not found]) 6520 fi 6521 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME]) 6522 6523 PathFormat "$MIDL_PATH" 6524 MIDL_PATH="$formatted_path" 6525 6526 PathFormat "$AL_PATH" 6527 AL_PATH="$formatted_path" 6528 6529 PathFormat "$DOTNET_FRAMEWORK_HOME" 6530 DOTNET_FRAMEWORK_HOME="$formatted_path" 6531 6532 PathFormat "$CSC_PATH" 6533 CSC_PATH="$formatted_path" 6534fi 6535 6536dnl =================================================================== 6537dnl Testing for C++ compiler and version... 6538dnl =================================================================== 6539 6540if test "$_os" != "WINNT"; then 6541 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that 6542 save_CXXFLAGS=$CXXFLAGS 6543 AC_PROG_CXX 6544 CXXFLAGS=$save_CXXFLAGS 6545 if test -z "$CXX_BASE"; then 6546 CXX_BASE=`first_arg_basename "$CXX"` 6547 fi 6548fi 6549 6550dnl check for GNU C++ compiler version 6551if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then 6552 AC_MSG_CHECKING([the GNU C++ compiler version]) 6553 6554 _gpp_version=`$CXX -dumpversion` 6555 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'` 6556 6557 if test "$_gpp_majmin" -lt "700"; then 6558 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.]) 6559 else 6560 AC_MSG_RESULT([ok (g++ $_gpp_version)]) 6561 fi 6562 6563 dnl see https://code.google.com/p/android/issues/detail?id=41770 6564 glibcxx_threads=no 6565 AC_LANG_PUSH([C++]) 6566 AC_REQUIRE_CPP 6567 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread]) 6568 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ 6569 #include <bits/c++config.h>]],[[ 6570 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \ 6571 && !defined(_GLIBCXX__PTHREADS) \ 6572 && !defined(_GLIBCXX_HAS_GTHREADS) 6573 choke me 6574 #endif 6575 ]])],[AC_MSG_RESULT([yes]) 6576 glibcxx_threads=yes],[AC_MSG_RESULT([no])]) 6577 AC_LANG_POP([C++]) 6578 if test $glibcxx_threads = yes; then 6579 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS" 6580 fi 6581fi 6582AC_SUBST(BOOST_CXXFLAGS) 6583 6584# 6585# prefx CXX with ccache if needed 6586# 6587if test "$CCACHE" != ""; then 6588 AC_MSG_CHECKING([whether $CXX_BASE is already ccached]) 6589 AC_LANG_PUSH([C++]) 6590 save_CXXFLAGS=$CXXFLAGS 6591 CXXFLAGS="$CXXFLAGS --ccache-skip -O2" 6592 dnl an empty program will do, we're checking the compiler flags 6593 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], 6594 [use_ccache=yes], [use_ccache=no]) 6595 if test $use_ccache = yes; then 6596 AC_MSG_RESULT([yes]) 6597 else 6598 CXX="$CCACHE $CXX" 6599 CXX_BASE="ccache $CXX_BASE" 6600 AC_MSG_RESULT([no]) 6601 fi 6602 CXXFLAGS=$save_CXXFLAGS 6603 AC_LANG_POP([C++]) 6604fi 6605 6606dnl =================================================================== 6607dnl Find pre-processors.(should do that _after_ messing with CC/CXX) 6608dnl =================================================================== 6609 6610if test "$_os" != "WINNT"; then 6611 AC_PROG_CXXCPP 6612 6613 dnl Check whether there's a C pre-processor. 6614 AC_PROG_CPP 6615fi 6616 6617 6618dnl =================================================================== 6619dnl Find integral type sizes and alignments 6620dnl =================================================================== 6621 6622if test "$_os" != "WINNT"; then 6623 6624 AC_CHECK_SIZEOF(long) 6625 AC_CHECK_SIZEOF(short) 6626 AC_CHECK_SIZEOF(int) 6627 AC_CHECK_SIZEOF(long long) 6628 AC_CHECK_SIZEOF(double) 6629 AC_CHECK_SIZEOF(void*) 6630 6631 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short 6632 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int 6633 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long 6634 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long 6635 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp 6636 6637 dnl Allow build without AC_CHECK_ALIGNOF, grrr 6638 m4_pattern_allow([AC_CHECK_ALIGNOF]) 6639 m4_ifdef([AC_CHECK_ALIGNOF], 6640 [ 6641 AC_CHECK_ALIGNOF(short,[#include <stddef.h>]) 6642 AC_CHECK_ALIGNOF(int,[#include <stddef.h>]) 6643 AC_CHECK_ALIGNOF(long,[#include <stddef.h>]) 6644 AC_CHECK_ALIGNOF(double,[#include <stddef.h>]) 6645 ], 6646 [ 6647 case "$_os-$host_cpu" in 6648 Linux-i686) 6649 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2 6650 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4 6651 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4 6652 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4 6653 ;; 6654 Linux-x86_64) 6655 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2 6656 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4 6657 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8 6658 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8 6659 ;; 6660 *) 6661 if test -z "$ac_cv_alignof_short" -o \ 6662 -z "$ac_cv_alignof_int" -o \ 6663 -z "$ac_cv_alignof_long" -o \ 6664 -z "$ac_cv_alignof_double"; then 6665 AC_MSG_ERROR([Your Autoconf doesn't have [AC_][CHECK_ALIGNOF]. You need to set the environment variables ac_cv_alignof_short, ac_cv_alignof_int, ac_cv_alignof_long and ac_cv_alignof_double.]) 6666 fi 6667 ;; 6668 esac 6669 ]) 6670 6671 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short 6672 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int 6673 if test $ac_cv_sizeof_long -eq 8; then 6674 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long 6675 elif test $ac_cv_sizeof_double -eq 8; then 6676 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double 6677 else 6678 AC_MSG_ERROR([Cannot find alignment of 8 byte types.]) 6679 fi 6680 6681 dnl Check for large file support 6682 AC_SYS_LARGEFILE 6683 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then 6684 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" 6685 fi 6686 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then 6687 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES" 6688 fi 6689else 6690 # Hardcode for MSVC 6691 SAL_TYPES_SIZEOFSHORT=2 6692 SAL_TYPES_SIZEOFINT=4 6693 SAL_TYPES_SIZEOFLONG=4 6694 SAL_TYPES_SIZEOFLONGLONG=8 6695 if test $WIN_HOST_BITS -eq 32; then 6696 SAL_TYPES_SIZEOFPOINTER=4 6697 else 6698 SAL_TYPES_SIZEOFPOINTER=8 6699 fi 6700 SAL_TYPES_ALIGNMENT2=2 6701 SAL_TYPES_ALIGNMENT4=4 6702 SAL_TYPES_ALIGNMENT8=8 6703 LFS_CFLAGS='' 6704fi 6705AC_SUBST(LFS_CFLAGS) 6706 6707AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT) 6708AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT) 6709AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG) 6710AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG) 6711AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER) 6712AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2) 6713AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4) 6714AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8) 6715 6716dnl =================================================================== 6717dnl Check whether to enable runtime optimizations 6718dnl =================================================================== 6719ENABLE_RUNTIME_OPTIMIZATIONS= 6720AC_MSG_CHECKING([whether to enable runtime optimizations]) 6721if test -z "$enable_runtime_optimizations"; then 6722 for i in $CC; do 6723 case $i in 6724 -fsanitize=*) 6725 enable_runtime_optimizations=no 6726 break 6727 ;; 6728 esac 6729 done 6730fi 6731if test "$enable_runtime_optimizations" != no; then 6732 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE 6733 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS) 6734 AC_MSG_RESULT([yes]) 6735else 6736 AC_MSG_RESULT([no]) 6737fi 6738AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS]) 6739 6740dnl =================================================================== 6741dnl Check if valgrind headers are available 6742dnl =================================================================== 6743ENABLE_VALGRIND= 6744if test "$cross_compiling" != yes -a "$with_valgrind" != no; then 6745 prev_cppflags=$CPPFLAGS 6746 # Is VALGRIND_CFLAGS something one is supposed to have in the environment, 6747 # or where does it come from? 6748 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS" 6749 AC_CHECK_HEADER([valgrind/valgrind.h], 6750 [ENABLE_VALGRIND=TRUE]) 6751 CPPFLAGS=$prev_cppflags 6752fi 6753AC_SUBST([ENABLE_VALGRIND]) 6754if test -z "$ENABLE_VALGRIND"; then 6755 if test "$with_valgrind" = yes; then 6756 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found]) 6757 fi 6758 VALGRIND_CFLAGS= 6759fi 6760AC_SUBST([VALGRIND_CFLAGS]) 6761 6762 6763dnl =================================================================== 6764dnl Check if SDT probes (for systemtap, gdb, dtrace) are available 6765dnl =================================================================== 6766 6767# We need at least the sys/sdt.h include header. 6768AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE']) 6769if test "$SDT_H_FOUND" = "TRUE"; then 6770 # Found sys/sdt.h header, now make sure the c++ compiler works. 6771 # Old g++ versions had problems with probes in constructors/destructors. 6772 AC_MSG_CHECKING([working sys/sdt.h and c++ support]) 6773 AC_LANG_PUSH([C++]) 6774 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 6775 #include <sys/sdt.h> 6776 class ProbeClass 6777 { 6778 private: 6779 int& ref; 6780 const char *name; 6781 6782 public: 6783 ProbeClass(int& v, const char *n) : ref(v), name(n) 6784 { 6785 DTRACE_PROBE2(_test_, cons, name, ref); 6786 } 6787 6788 void method(int min) 6789 { 6790 DTRACE_PROBE3(_test_, meth, name, ref, min); 6791 ref -= min; 6792 } 6793 6794 ~ProbeClass() 6795 { 6796 DTRACE_PROBE2(_test_, dest, name, ref); 6797 } 6798 }; 6799 ]],[[ 6800 int i = 64; 6801 DTRACE_PROBE1(_test_, call, i); 6802 ProbeClass inst = ProbeClass(i, "call"); 6803 inst.method(24); 6804 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])], 6805 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])]) 6806 AC_LANG_POP([C++]) 6807fi 6808AC_CONFIG_HEADERS([config_host/config_probes.h]) 6809 6810dnl =================================================================== 6811dnl GCC features 6812dnl =================================================================== 6813HAVE_GCC_STACK_CLASH_PROTECTION= 6814if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then 6815 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection]) 6816 save_CFLAGS=$CFLAGS 6817 CFLAGS="$CFLAGS -Werror -fstack-clash-protection" 6818 AC_LINK_IFELSE( 6819 [AC_LANG_PROGRAM(, [[return 0;]])], 6820 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE], 6821 [AC_MSG_RESULT([no])]) 6822 CFLAGS=$save_CFLAGS 6823 6824 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx]) 6825 save_CFLAGS=$CFLAGS 6826 CFLAGS="$CFLAGS -Werror -mno-avx" 6827 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[]) 6828 CFLAGS=$save_CFLAGS 6829 if test "$HAVE_GCC_AVX" = "TRUE"; then 6830 AC_MSG_RESULT([yes]) 6831 else 6832 AC_MSG_RESULT([no]) 6833 fi 6834 6835 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions]) 6836 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ 6837 int v = 0; 6838 if (__sync_add_and_fetch(&v, 1) != 1 || 6839 __sync_sub_and_fetch(&v, 1) != 0) 6840 return 1; 6841 __sync_synchronize(); 6842 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 || 6843 v != 1) 6844 return 1; 6845 return 0; 6846]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[]) 6847 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then 6848 AC_MSG_RESULT([yes]) 6849 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC) 6850 else 6851 AC_MSG_RESULT([no]) 6852 fi 6853 6854 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h]) 6855 AC_LANG_PUSH([C++]) 6856 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6857 #include <cstddef> 6858 #include <cxxabi.h> 6859 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); } 6860 ])], [ 6861 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1]) 6862 AC_MSG_RESULT([yes]) 6863 ], [AC_MSG_RESULT([no])]) 6864 AC_LANG_POP([C++]) 6865 6866 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h]) 6867 AC_LANG_PUSH([C++]) 6868 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6869 #include <cstddef> 6870 #include <cxxabi.h> 6871 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); } 6872 ])], [ 6873 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1]) 6874 AC_MSG_RESULT([yes]) 6875 ], [AC_MSG_RESULT([no])]) 6876 AC_LANG_POP([C++]) 6877 6878 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h]) 6879 AC_LANG_PUSH([C++]) 6880 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6881 #include <cxxabi.h> 6882 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); } 6883 ])], [ 6884 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1]) 6885 AC_MSG_RESULT([yes]) 6886 ], [AC_MSG_RESULT([no])]) 6887 AC_LANG_POP([C++]) 6888 6889 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h]) 6890 AC_LANG_PUSH([C++]) 6891 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6892 #include <cstddef> 6893 #include <cxxabi.h> 6894 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); } 6895 ])], [ 6896 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1]) 6897 AC_MSG_RESULT([yes]) 6898 ], [AC_MSG_RESULT([no])]) 6899 AC_LANG_POP([C++]) 6900 6901 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h]) 6902 AC_LANG_PUSH([C++]) 6903 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6904 #include <cstddef> 6905 #include <cxxabi.h> 6906 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); } 6907 ])], [ 6908 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1]) 6909 AC_MSG_RESULT([yes]) 6910 ], [AC_MSG_RESULT([no])]) 6911 AC_LANG_POP([C++]) 6912 6913 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h]) 6914 AC_LANG_PUSH([C++]) 6915 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6916 #include <cxxabi.h> 6917 void * f() { return __cxxabiv1::__cxa_get_globals(); } 6918 ])], [ 6919 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1]) 6920 AC_MSG_RESULT([yes]) 6921 ], [AC_MSG_RESULT([no])]) 6922 AC_LANG_POP([C++]) 6923 6924 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h]) 6925 AC_LANG_PUSH([C++]) 6926 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6927 #include <cxxabi.h> 6928 void * f() { return __cxxabiv1::__cxa_current_exception_type(); } 6929 ])], [ 6930 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1]) 6931 AC_MSG_RESULT([yes]) 6932 ], [AC_MSG_RESULT([no])]) 6933 AC_LANG_POP([C++]) 6934 6935 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h]) 6936 AC_LANG_PUSH([C++]) 6937 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6938 #include <cxxabi.h> 6939 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); } 6940 ])], [ 6941 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1]) 6942 AC_MSG_RESULT([yes]) 6943 ], [AC_MSG_RESULT([no])]) 6944 AC_LANG_POP([C++]) 6945 6946 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h]) 6947 AC_LANG_PUSH([C++]) 6948 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6949 #include <cstddef> 6950 #include <cxxabi.h> 6951 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); } 6952 ])], [ 6953 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1]) 6954 AC_MSG_RESULT([yes]) 6955 ], [AC_MSG_RESULT([no])]) 6956 AC_LANG_POP([C++]) 6957 6958 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h]) 6959 AC_LANG_PUSH([C++]) 6960 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 6961 #include <cstddef> 6962 #include <cxxabi.h> 6963 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); } 6964 ])], [ 6965 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1]) 6966 AC_MSG_RESULT([yes]) 6967 ], [AC_MSG_RESULT([no])]) 6968 AC_LANG_POP([C++]) 6969fi 6970 6971AC_SUBST(HAVE_GCC_AVX) 6972AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC) 6973AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION) 6974 6975dnl =================================================================== 6976dnl Identify the C++ library 6977dnl =================================================================== 6978 6979AC_MSG_CHECKING([what the C++ library is]) 6980AC_LANG_PUSH([C++]) 6981AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 6982#include <utility> 6983#ifndef __GLIBCXX__ 6984foo bar 6985#endif 6986]])], 6987 [CPP_LIBRARY=GLIBCXX 6988 cpp_library_name="GNU libstdc++" 6989 ], 6990 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 6991#include <utility> 6992#ifndef _LIBCPP_VERSION 6993foo bar 6994#endif 6995]])], 6996 [CPP_LIBRARY=LIBCPP 6997 cpp_library_name="LLVM libc++" 6998 AC_DEFINE([HAVE_LIBCXX]) 6999 ], 7000 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 7001#include <utility> 7002#ifndef _MSC_VER 7003foo bar 7004#endif 7005]])], 7006 [CPP_LIBRARY=MSVCRT 7007 cpp_library_name="Microsoft" 7008 ], 7009 AC_MSG_ERROR([Could not figure out what C++ library this is])))) 7010AC_MSG_RESULT([$cpp_library_name]) 7011AC_LANG_POP([C++]) 7012 7013dnl =================================================================== 7014dnl Check for gperf 7015dnl =================================================================== 7016AC_PATH_PROG(GPERF, gperf) 7017if test -z "$GPERF"; then 7018 AC_MSG_ERROR([gperf not found but needed. Install it.]) 7019fi 7020if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 7021 GPERF=`cygpath -m $GPERF` 7022fi 7023AC_MSG_CHECKING([whether gperf is new enough]) 7024my_gperf_ver1=$($GPERF --version | head -n 1) 7025my_gperf_ver2=${my_gperf_ver1#GNU gperf } 7026my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }') 7027if test "$my_gperf_ver3" -ge 301; then 7028 AC_MSG_RESULT([yes ($my_gperf_ver2)]) 7029else 7030 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1]) 7031fi 7032AC_SUBST(GPERF) 7033 7034dnl =================================================================== 7035dnl Check for system libcmis 7036dnl =================================================================== 7037# libcmis requires curl and we can't build curl for iOS 7038if test $_os != iOS; then 7039 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2]) 7040 ENABLE_LIBCMIS=TRUE 7041else 7042 ENABLE_LIBCMIS= 7043fi 7044AC_SUBST(ENABLE_LIBCMIS) 7045 7046dnl =================================================================== 7047dnl C++11 7048dnl =================================================================== 7049 7050AC_MSG_CHECKING([whether $CXX_BASE supports C++17]) 7051CXXFLAGS_CXX11= 7052if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then 7053 if test "$with_latest_c__" = yes; then 7054 CXXFLAGS_CXX11=-std:c++latest 7055 else 7056 CXXFLAGS_CXX11=-std:c++17 7057 fi 7058 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus" 7059elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then 7060 my_flags='-std=c++17 -std=c++1z' 7061 if test "$with_latest_c__" = yes; then 7062 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags" 7063 fi 7064 for flag in $my_flags; do 7065 if test "$COM" = MSC; then 7066 flag="-Xclang $flag" 7067 fi 7068 save_CXXFLAGS=$CXXFLAGS 7069 CXXFLAGS="$CXXFLAGS $flag -Werror" 7070 if test "$SYSTEM_LIBCMIS" = TRUE; then 7071 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS" 7072 fi 7073 AC_LANG_PUSH([C++]) 7074 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 7075 #include <algorithm> 7076 #include <functional> 7077 #include <vector> 7078 7079 #if defined SYSTEM_LIBCMIS 7080 // See ucb/source/ucp/cmis/auth_provider.hxx: 7081 #if !defined __clang__ 7082 #pragma GCC diagnostic push 7083 #pragma GCC diagnostic ignored "-Wdeprecated" 7084 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter" 7085 #endif 7086 #include <libcmis/libcmis.hxx> 7087 #if !defined __clang__ 7088 #pragma GCC diagnostic pop 7089 #endif 7090 #endif 7091 7092 void f(std::vector<int> & v, std::function<bool(int, int)> fn) { 7093 std::sort(v.begin(), v.end(), fn); 7094 } 7095 ]])],[CXXFLAGS_CXX11=$flag]) 7096 AC_LANG_POP([C++]) 7097 CXXFLAGS=$save_CXXFLAGS 7098 if test -n "$CXXFLAGS_CXX11"; then 7099 break 7100 fi 7101 done 7102fi 7103if test -n "$CXXFLAGS_CXX11"; then 7104 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)]) 7105else 7106 AC_MSG_ERROR(no) 7107fi 7108AC_SUBST(CXXFLAGS_CXX11) 7109 7110if test "$GCC" = "yes"; then 7111 save_CXXFLAGS=$CXXFLAGS 7112 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7113 CHECK_L_ATOMIC 7114 CXXFLAGS=$save_CXXFLAGS 7115 AC_SUBST(ATOMIC_LIB) 7116fi 7117 7118dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where 7119dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced 7120dnl an additional member _M_size into C++11 std::list towards 4.7.0 and 7121dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it 7122dnl again towards 4.7.2: 7123if test $CPP_LIBRARY = GLIBCXX; then 7124 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage]) 7125 AC_LANG_PUSH([C++]) 7126 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 7127#include <list> 7128#if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614) 7129 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>: 7130 // GCC 4.7.0: 20120322 7131 // GCC 4.7.1: 20120614 7132 // and using a range check is not possible as the mapping between 7133 // __GLIBCXX__ values and GCC versions is not monotonic 7134/* ok */ 7135#else 7136abi broken 7137#endif 7138 ]])], [AC_MSG_RESULT(no, ok)], 7139 [AC_MSG_ERROR(yes)]) 7140 AC_LANG_POP([C++]) 7141fi 7142 7143AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757]) 7144save_CXXFLAGS=$CXXFLAGS 7145CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7146AC_LANG_PUSH([C++]) 7147 7148AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 7149#include <stddef.h> 7150 7151template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S]; 7152 7153namespace 7154{ 7155 struct b 7156 { 7157 int i; 7158 int j; 7159 }; 7160} 7161]], [[ 7162struct a 7163{ 7164 int i; 7165 int j; 7166}; 7167a thinga[]={{0,0}, {1,1}}; 7168b thingb[]={{0,0}, {1,1}}; 7169size_t i = sizeof(sal_n_array_size(thinga)); 7170size_t j = sizeof(sal_n_array_size(thingb)); 7171return !(i != 0 && j != 0); 7172]]) 7173 ], [ AC_MSG_RESULT(yes) ], 7174 [ AC_MSG_ERROR(no)]) 7175AC_LANG_POP([C++]) 7176CXXFLAGS=$save_CXXFLAGS 7177 7178HAVE_GCC_FNO_SIZED_DEALLOCATION= 7179if test "$GCC" = yes; then 7180 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation]) 7181 AC_LANG_PUSH([C++]) 7182 save_CXXFLAGS=$CXXFLAGS 7183 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation" 7184 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE]) 7185 CXXFLAGS=$save_CXXFLAGS 7186 AC_LANG_POP([C++]) 7187 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then 7188 AC_MSG_RESULT([yes]) 7189 else 7190 AC_MSG_RESULT([no]) 7191 fi 7192fi 7193AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION]) 7194 7195AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval]) 7196dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code 7197dnl from consteval constructor initializing const variable" or 7198dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant 7199dnl expression' with consteval constructor": 7200AC_LANG_PUSH([C++]) 7201save_CXXFLAGS=$CXXFLAGS 7202CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7203AC_RUN_IFELSE([AC_LANG_PROGRAM([ 7204 struct S { 7205 consteval S() { i = 1; } 7206 int i = 0; 7207 }; 7208 S const s; 7209 7210 struct S1 { consteval S1(int) {} }; 7211 struct S2 { 7212 S1 x; 7213 S2(): x(0) {} 7214 }; 7215 ], [ 7216 return (s.i == 1) ? 0 : 1; 7217 ])], [ 7218 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1]) 7219 AC_MSG_RESULT([yes]) 7220 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])]) 7221CXXFLAGS=$save_CXXFLAGS 7222AC_LANG_POP([C++]) 7223 7224AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors]) 7225AC_LANG_PUSH([C++]) 7226save_CXXFLAGS=$CXXFLAGS 7227CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7228AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7229 #include <algorithm> 7230 #include <initializer_list> 7231 #include <vector> 7232 template<typename T> class S { 7233 private: 7234 std::vector<T> v_; 7235 public: 7236 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); } 7237 }; 7238 constinit S<int> s{3, 2, 1}; 7239 ])], [ 7240 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1]) 7241 AC_MSG_RESULT([yes]) 7242 ], [AC_MSG_RESULT([no])]) 7243CXXFLAGS=$save_CXXFLAGS 7244AC_LANG_POP([C++]) 7245 7246AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type]) 7247AC_LANG_PUSH([C++]) 7248save_CXXFLAGS=$CXXFLAGS 7249CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7250AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7251 #include <span> 7252 #include <type_traits> 7253 // Don't check size_type directly, as it was called index_type before P1872R0: 7254 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); }; 7255 ])], [ 7256 AC_DEFINE([HAVE_CPP_SPAN],[1]) 7257 AC_MSG_RESULT([yes]) 7258 ], [AC_MSG_RESULT([no])]) 7259CXXFLAGS=$save_CXXFLAGS 7260AC_LANG_POP([C++]) 7261 7262AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3]) 7263AC_LANG_PUSH([C++]) 7264save_CXXFLAGS=$CXXFLAGS 7265CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" 7266AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7267 struct S1 { S1(S1 &&); }; 7268 struct S2: S1 {}; 7269 S1 f(S2 s) { return s; } 7270 ])], [ 7271 AC_DEFINE([HAVE_P1155R3],[1]) 7272 AC_MSG_RESULT([yes]) 7273 ], [AC_MSG_RESULT([no])]) 7274CXXFLAGS=$save_CXXFLAGS 7275AC_LANG_POP([C++]) 7276 7277dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but 7278dnl which is included in -Wextra anyway): 7279HAVE_WDEPRECATED_COPY_DTOR= 7280if test "$GCC" = yes; then 7281 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor]) 7282 AC_LANG_PUSH([C++]) 7283 save_CXXFLAGS=$CXXFLAGS 7284 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor" 7285 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [ 7286 HAVE_WDEPRECATED_COPY_DTOR=TRUE 7287 AC_MSG_RESULT([yes]) 7288 ], [AC_MSG_RESULT([no])]) 7289 CXXFLAGS=$save_CXXFLAGS 7290 AC_LANG_POP([C++]) 7291fi 7292AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR]) 7293 7294dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe- 7295dnl uninitialized warning for code like 7296dnl 7297dnl OString f(); 7298dnl boost::optional<OString> * g(bool b) { 7299dnl boost::optional<OString> o; 7300dnl if (b) o = f(); 7301dnl return new boost::optional<OString>(o); 7302dnl } 7303dnl 7304dnl (as is e.g. present, in a slightly more elaborate form, in 7305dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below 7306dnl code is meant to be a faithfully stripped-down and self-contained version of the above code: 7307HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED= 7308if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then 7309 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized]) 7310 AC_LANG_PUSH([C++]) 7311 save_CXXFLAGS=$CXXFLAGS 7312 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized" 7313 if test "$ENABLE_OPTIMIZED" = TRUE; then 7314 CXXFLAGS="$CXXFLAGS -O2" 7315 else 7316 CXXFLAGS="$CXXFLAGS -O0" 7317 fi 7318 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 7319 #include <new> 7320 void f1(int); 7321 struct S1 { 7322 ~S1() { f1(n); } 7323 int n = 0; 7324 }; 7325 struct S2 { 7326 S2() {} 7327 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); } 7328 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); } 7329 void set(S1 s) { 7330 new (stg) S1(s); 7331 init = true; 7332 } 7333 bool init = false; 7334 char stg[sizeof (S1)]; 7335 } ; 7336 S1 f2(); 7337 S2 * f3(bool b) { 7338 S2 o; 7339 if (b) o.set(f2()); 7340 return new S2(o); 7341 } 7342 ]])], [AC_MSG_RESULT([no])], [ 7343 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE 7344 AC_MSG_RESULT([yes]) 7345 ]) 7346 CXXFLAGS=$save_CXXFLAGS 7347 AC_LANG_POP([C++]) 7348fi 7349AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED]) 7350 7351dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression] 7352dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which 7353dnl hits us e.g. with GCC 10 and --enable-optimized at 7354dnl 7355dnl In file included from include/rtl/string.hxx:49, 7356dnl from include/rtl/ustring.hxx:43, 7357dnl from include/osl/file.hxx:35, 7358dnl from include/codemaker/global.hxx:28, 7359dnl from include/codemaker/options.hxx:23, 7360dnl from codemaker/source/commoncpp/commoncpp.cxx:24: 7361dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’, 7362dnl inlined from ‘static char* rtl::ToStringHelper<const char [N]>::addData(char*, const char*) [with long unsigned int N = 3]’ at include/rtl/stringconcat.hxx:147:85, 7363dnl inlined from ‘char* rtl::OStringConcat<T1, T2>::addData(char*) const [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/stringconcat.hxx:226:103, 7364dnl inlined from ‘rtl::OStringBuffer& rtl::OStringBuffer::append(rtl::OStringConcat<T1, T2>&&) [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/strbuf.hxx:599:30, 7365dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55: 7366dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=] 7367dnl 78 | memcpy( buffer, data, length ); 7368dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ 7369HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW= 7370if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then 7371 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=]) 7372 AC_LANG_PUSH([C++]) 7373 save_CXXFLAGS=$CXXFLAGS 7374 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow" 7375 if test "$ENABLE_OPTIMIZED" = TRUE; then 7376 CXXFLAGS="$CXXFLAGS -O2" 7377 else 7378 CXXFLAGS="$CXXFLAGS -O0" 7379 fi 7380 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>: 7381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 7382 void fill(char const * begin, char const * end, char c); 7383 struct q { 7384 char ids[4]; 7385 char username[6]; 7386 }; 7387 void test(q & c) { 7388 fill(c.ids, c.ids + sizeof(c.ids), '\0'); 7389 __builtin_strncpy(c.username, "root", sizeof(c.username)); 7390 } 7391 ]])], [AC_MSG_RESULT([no])], [ 7392 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE 7393 AC_MSG_RESULT([yes]) 7394 ]) 7395 CXXFLAGS=$save_CXXFLAGS 7396 AC_LANG_POP([C++]) 7397fi 7398AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW]) 7399 7400dnl =================================================================== 7401dnl CPU Intrinsics support - SSE, AVX 7402dnl =================================================================== 7403 7404CXXFLAGS_INTRINSICS_SSE2= 7405CXXFLAGS_INTRINSICS_SSSE3= 7406CXXFLAGS_INTRINSICS_SSE41= 7407CXXFLAGS_INTRINSICS_SSE42= 7408CXXFLAGS_INTRINSICS_AVX= 7409CXXFLAGS_INTRINSICS_AVX2= 7410CXXFLAGS_INTRINSICS_AVX512= 7411CXXFLAGS_INTRINSICS_F16C= 7412CXXFLAGS_INTRINSICS_FMA= 7413 7414if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then 7415 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together) 7416 flag_sse2=-msse2 7417 flag_ssse3=-mssse3 7418 flag_sse41=-msse4.1 7419 flag_sse42=-msse4.2 7420 flag_avx=-mavx 7421 flag_avx2=-mavx2 7422 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd" 7423 flag_f16c=-mf16c 7424 flag_fma=-mfma 7425else 7426 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86 7427 # MSVC seems to differentiate only between SSE and SSE2, where in fact 7428 # SSE2 seems to be SSE2+. 7429 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable 7430 # is not empty (and can be tested in gbuild). 7431 flag_sse2=-arch:SSE2 7432 flag_ssse3=-arch:SSE2 7433 flag_sse41=-arch:SSE2 7434 flag_sse42=-arch:SSE2 7435 flag_avx=-arch:AVX 7436 flag_avx2=-arch:AVX2 7437 flag_avx512=-arch:AVX512 7438 # These are part of -arch:AVX2 7439 flag_f16c=-arch:AVX2 7440 flag_fma=-arch:AVX2 7441fi 7442 7443AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics]) 7444AC_LANG_PUSH([C++]) 7445save_CXXFLAGS=$CXXFLAGS 7446CXXFLAGS="$CXXFLAGS $flag_sse2" 7447AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7448 #include <emmintrin.h> 7449 int main () { 7450 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 7451 c = _mm_xor_si128 (a, b); 7452 return 0; 7453 } 7454 ])], 7455 [can_compile_sse2=yes], 7456 [can_compile_sse2=no]) 7457AC_LANG_POP([C++]) 7458CXXFLAGS=$save_CXXFLAGS 7459AC_MSG_RESULT([${can_compile_sse2}]) 7460if test "${can_compile_sse2}" = "yes" ; then 7461 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2" 7462fi 7463 7464AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics]) 7465AC_LANG_PUSH([C++]) 7466save_CXXFLAGS=$CXXFLAGS 7467CXXFLAGS="$CXXFLAGS $flag_ssse3" 7468AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7469 #include <tmmintrin.h> 7470 int main () { 7471 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 7472 c = _mm_maddubs_epi16 (a, b); 7473 return 0; 7474 } 7475 ])], 7476 [can_compile_ssse3=yes], 7477 [can_compile_ssse3=no]) 7478AC_LANG_POP([C++]) 7479CXXFLAGS=$save_CXXFLAGS 7480AC_MSG_RESULT([${can_compile_ssse3}]) 7481if test "${can_compile_ssse3}" = "yes" ; then 7482 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3" 7483fi 7484 7485AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics]) 7486AC_LANG_PUSH([C++]) 7487save_CXXFLAGS=$CXXFLAGS 7488CXXFLAGS="$CXXFLAGS $flag_sse41" 7489AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7490 #include <smmintrin.h> 7491 int main () { 7492 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 7493 c = _mm_cmpeq_epi64 (a, b); 7494 return 0; 7495 } 7496 ])], 7497 [can_compile_sse41=yes], 7498 [can_compile_sse41=no]) 7499AC_LANG_POP([C++]) 7500CXXFLAGS=$save_CXXFLAGS 7501AC_MSG_RESULT([${can_compile_sse41}]) 7502if test "${can_compile_sse41}" = "yes" ; then 7503 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41" 7504fi 7505 7506AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics]) 7507AC_LANG_PUSH([C++]) 7508save_CXXFLAGS=$CXXFLAGS 7509CXXFLAGS="$CXXFLAGS $flag_sse42" 7510AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7511 #include <nmmintrin.h> 7512 int main () { 7513 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 7514 c = _mm_cmpgt_epi64 (a, b); 7515 return 0; 7516 } 7517 ])], 7518 [can_compile_sse42=yes], 7519 [can_compile_sse42=no]) 7520AC_LANG_POP([C++]) 7521CXXFLAGS=$save_CXXFLAGS 7522AC_MSG_RESULT([${can_compile_sse42}]) 7523if test "${can_compile_sse42}" = "yes" ; then 7524 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42" 7525fi 7526 7527AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics]) 7528AC_LANG_PUSH([C++]) 7529save_CXXFLAGS=$CXXFLAGS 7530CXXFLAGS="$CXXFLAGS $flag_avx" 7531AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7532 #include <immintrin.h> 7533 int main () { 7534 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c; 7535 c = _mm256_xor_ps(a, b); 7536 return 0; 7537 } 7538 ])], 7539 [can_compile_avx=yes], 7540 [can_compile_avx=no]) 7541AC_LANG_POP([C++]) 7542CXXFLAGS=$save_CXXFLAGS 7543AC_MSG_RESULT([${can_compile_avx}]) 7544if test "${can_compile_avx}" = "yes" ; then 7545 CXXFLAGS_INTRINSICS_AVX="$flag_avx" 7546fi 7547 7548AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics]) 7549AC_LANG_PUSH([C++]) 7550save_CXXFLAGS=$CXXFLAGS 7551CXXFLAGS="$CXXFLAGS $flag_avx2" 7552AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7553 #include <immintrin.h> 7554 int main () { 7555 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c; 7556 c = _mm256_maddubs_epi16(a, b); 7557 return 0; 7558 } 7559 ])], 7560 [can_compile_avx2=yes], 7561 [can_compile_avx2=no]) 7562AC_LANG_POP([C++]) 7563CXXFLAGS=$save_CXXFLAGS 7564AC_MSG_RESULT([${can_compile_avx2}]) 7565if test "${can_compile_avx2}" = "yes" ; then 7566 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2" 7567fi 7568 7569AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics]) 7570AC_LANG_PUSH([C++]) 7571save_CXXFLAGS=$CXXFLAGS 7572CXXFLAGS="$CXXFLAGS $flag_avx512" 7573AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7574 #include <immintrin.h> 7575 int main () { 7576 __m512i a = _mm512_loadu_si512(0); 7577 return 0; 7578 } 7579 ])], 7580 [can_compile_avx512=yes], 7581 [can_compile_avx512=no]) 7582AC_LANG_POP([C++]) 7583CXXFLAGS=$save_CXXFLAGS 7584AC_MSG_RESULT([${can_compile_avx512}]) 7585if test "${can_compile_avx512}" = "yes" ; then 7586 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512" 7587fi 7588 7589AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics]) 7590AC_LANG_PUSH([C++]) 7591save_CXXFLAGS=$CXXFLAGS 7592CXXFLAGS="$CXXFLAGS $flag_f16c" 7593AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7594 #include <immintrin.h> 7595 int main () { 7596 __m128i a = _mm_set1_epi32 (0); 7597 __m128 c; 7598 c = _mm_cvtph_ps(a); 7599 return 0; 7600 } 7601 ])], 7602 [can_compile_f16c=yes], 7603 [can_compile_f16c=no]) 7604AC_LANG_POP([C++]) 7605CXXFLAGS=$save_CXXFLAGS 7606AC_MSG_RESULT([${can_compile_f16c}]) 7607if test "${can_compile_f16c}" = "yes" ; then 7608 CXXFLAGS_INTRINSICS_F16C="$flag_f16c" 7609fi 7610 7611AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics]) 7612AC_LANG_PUSH([C++]) 7613save_CXXFLAGS=$CXXFLAGS 7614CXXFLAGS="$CXXFLAGS $flag_fma" 7615AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 7616 #include <immintrin.h> 7617 int main () { 7618 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d; 7619 d = _mm256_fmadd_ps(a, b, c); 7620 return 0; 7621 } 7622 ])], 7623 [can_compile_fma=yes], 7624 [can_compile_fma=no]) 7625AC_LANG_POP([C++]) 7626CXXFLAGS=$save_CXXFLAGS 7627AC_MSG_RESULT([${can_compile_fma}]) 7628if test "${can_compile_fma}" = "yes" ; then 7629 CXXFLAGS_INTRINSICS_FMA="$flag_fma" 7630fi 7631 7632AC_SUBST([CXXFLAGS_INTRINSICS_SSE2]) 7633AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3]) 7634AC_SUBST([CXXFLAGS_INTRINSICS_SSE41]) 7635AC_SUBST([CXXFLAGS_INTRINSICS_SSE42]) 7636AC_SUBST([CXXFLAGS_INTRINSICS_AVX]) 7637AC_SUBST([CXXFLAGS_INTRINSICS_AVX2]) 7638AC_SUBST([CXXFLAGS_INTRINSICS_AVX512]) 7639AC_SUBST([CXXFLAGS_INTRINSICS_F16C]) 7640AC_SUBST([CXXFLAGS_INTRINSICS_FMA]) 7641 7642dnl =================================================================== 7643dnl system stl sanity tests 7644dnl =================================================================== 7645if test "$_os" != "WINNT"; then 7646 7647 AC_LANG_PUSH([C++]) 7648 7649 save_CPPFLAGS="$CPPFLAGS" 7650 if test -n "$MACOSX_SDK_PATH"; then 7651 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS" 7652 fi 7653 7654 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++ 7655 # only. 7656 if test "$CPP_LIBRARY" = GLIBCXX; then 7657 dnl gcc#19664, gcc#22482, rhbz#162935 7658 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)]) 7659 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no) 7660 AC_MSG_RESULT([$stlvisok]) 7661 if test "$stlvisok" = "no"; then 7662 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.]) 7663 fi 7664 fi 7665 7666 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant 7667 # when we don't make any dynamic libraries? 7668 if test "$DISABLE_DYNLOADING" = ""; then 7669 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)]) 7670 cat > conftestlib1.cc <<_ACEOF 7671template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} }; 7672struct S2: S1<int> { virtual ~S2(); }; 7673S2::~S2() {} 7674_ACEOF 7675 cat > conftestlib2.cc <<_ACEOF 7676template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} }; 7677struct S2: S1<int> { virtual ~S2(); }; 7678struct S3: S2 { virtual ~S3(); }; S3::~S3() {} 7679_ACEOF 7680 gccvisinlineshiddenok=yes 7681 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then 7682 gccvisinlineshiddenok=no 7683 else 7684 dnl At least Clang -fsanitize=address and -fsanitize=undefined are 7685 dnl known to not work with -z defs (unsetting which makes the test 7686 dnl moot, though): 7687 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS 7688 if test "$COM_IS_CLANG" = TRUE; then 7689 for i in $CXX $CXXFLAGS; do 7690 case $i in 7691 -fsanitize=*) 7692 my_linkflagsnoundefs= 7693 break 7694 ;; 7695 esac 7696 done 7697 fi 7698 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then 7699 gccvisinlineshiddenok=no 7700 fi 7701 fi 7702 7703 rm -fr libconftest* 7704 AC_MSG_RESULT([$gccvisinlineshiddenok]) 7705 if test "$gccvisinlineshiddenok" = "no"; then 7706 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.]) 7707 fi 7708 fi 7709 7710 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)]) 7711 cat >visibility.cxx <<_ACEOF 7712#pragma GCC visibility push(hidden) 7713struct __attribute__ ((visibility ("default"))) TestStruct { 7714 static void Init(); 7715}; 7716__attribute__ ((visibility ("default"))) void TestFunc() { 7717 TestStruct::Init(); 7718} 7719_ACEOF 7720 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then 7721 gccvisbroken=yes 7722 else 7723 case "$host_cpu" in 7724 i?86|x86_64) 7725 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then 7726 gccvisbroken=no 7727 else 7728 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then 7729 gccvisbroken=no 7730 else 7731 gccvisbroken=yes 7732 fi 7733 fi 7734 ;; 7735 *) 7736 gccvisbroken=no 7737 ;; 7738 esac 7739 fi 7740 rm -f visibility.s visibility.cxx 7741 7742 AC_MSG_RESULT([$gccvisbroken]) 7743 if test "$gccvisbroken" = "yes"; then 7744 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.]) 7745 fi 7746 7747 CPPFLAGS="$save_CPPFLAGS" 7748 7749 AC_LANG_POP([C++]) 7750fi 7751 7752dnl =================================================================== 7753dnl Clang++ tests 7754dnl =================================================================== 7755 7756HAVE_GCC_FNO_ENFORCE_EH_SPECS= 7757if test "$GCC" = "yes"; then 7758 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs]) 7759 AC_LANG_PUSH([C++]) 7760 save_CXXFLAGS=$CXXFLAGS 7761 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs" 7762 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[]) 7763 CXXFLAGS=$save_CXXFLAGS 7764 AC_LANG_POP([C++]) 7765 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then 7766 AC_MSG_RESULT([yes]) 7767 else 7768 AC_MSG_RESULT([no]) 7769 fi 7770fi 7771AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS) 7772 7773dnl =================================================================== 7774dnl Compiler plugins 7775dnl =================================================================== 7776 7777COMPILER_PLUGINS= 7778# currently only Clang 7779 7780if test "$COM_IS_CLANG" != "TRUE"; then 7781 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then 7782 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no]) 7783 enable_compiler_plugins=no 7784 fi 7785fi 7786 7787COMPILER_PLUGINS_COM_IS_CLANG= 7788if test "$COM_IS_CLANG" = "TRUE"; then 7789 if test -n "$enable_compiler_plugins"; then 7790 compiler_plugins="$enable_compiler_plugins" 7791 elif test -n "$ENABLE_DBGUTIL"; then 7792 compiler_plugins=test 7793 else 7794 compiler_plugins=no 7795 fi 7796 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then 7797 if test "$CLANGVER" -lt 50002; then 7798 if test "$compiler_plugins" = yes; then 7799 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.]) 7800 else 7801 compiler_plugins=no 7802 fi 7803 fi 7804 fi 7805 if test "$compiler_plugins" != "no"; then 7806 dnl The prefix where Clang resides, override to where Clang resides if 7807 dnl using a source build: 7808 if test -z "$CLANGDIR"; then 7809 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1))))) 7810 fi 7811 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with. 7812 if test -z "$COMPILER_PLUGINS_CXX"; then 7813 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')] 7814 fi 7815 clangbindir=$CLANGDIR/bin 7816 if test "$build_os" = "cygwin"; then 7817 clangbindir=$(cygpath -u "$clangbindir") 7818 fi 7819 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH) 7820 if test -n "$LLVM_CONFIG"; then 7821 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags) 7822 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ') 7823 if test -z "$CLANGLIBDIR"; then 7824 CLANGLIBDIR=$($LLVM_CONFIG --libdir) 7825 fi 7826 # Try if clang is built from source (in which case its includes are not together with llvm includes). 7827 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang 7828 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root)) 7829 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then 7830 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include" 7831 fi 7832 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang 7833 clangobjdir=$($LLVM_CONFIG --obj-root) 7834 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then 7835 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include" 7836 fi 7837 fi 7838 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS]) 7839 AC_LANG_PUSH([C++]) 7840 save_CXX=$CXX 7841 save_CXXCPP=$CXXCPP 7842 save_CPPFLAGS=$CPPFLAGS 7843 save_CXXFLAGS=$CXXFLAGS 7844 save_LDFLAGS=$LDFLAGS 7845 save_LIBS=$LIBS 7846 CXX=$COMPILER_PLUGINS_CXX 7847 CXXCPP="$COMPILER_PLUGINS_CXX -E" 7848 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS" 7849 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS" 7850 AC_CHECK_HEADER(clang/Basic/SourceLocation.h, 7851 [COMPILER_PLUGINS=TRUE], 7852 [ 7853 if test "$compiler_plugins" = "yes"; then 7854 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.]) 7855 else 7856 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled]) 7857 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled." 7858 fi 7859 ]) 7860 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO 7861 dnl comment in compilerplugins/Makefile-clang.mk: 7862 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then 7863 LDFLAGS="" 7864 AC_MSG_CHECKING([for clang libraries to use]) 7865 if test -z "$CLANGTOOLLIBS"; then 7866 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \ 7867 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS" 7868 AC_LINK_IFELSE([ 7869 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]], 7870 [[ clang::FullSourceLoc().dump(); ]]) 7871 ],[CLANGTOOLLIBS="$LIBS"],[]) 7872 fi 7873 if test -z "$CLANGTOOLLIBS"; then 7874 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS" 7875 AC_LINK_IFELSE([ 7876 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]], 7877 [[ clang::FullSourceLoc().dump(); ]]) 7878 ],[CLANGTOOLLIBS="$LIBS"],[]) 7879 fi 7880 AC_MSG_RESULT([$CLANGTOOLLIBS]) 7881 if test -z "$CLANGTOOLLIBS"; then 7882 if test "$compiler_plugins" = "yes"; then 7883 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.]) 7884 else 7885 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled]) 7886 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled." 7887 fi 7888 COMPILER_PLUGINS= 7889 fi 7890 if test -n "$COMPILER_PLUGINS"; then 7891 if test -z "$CLANGSYSINCLUDE"; then 7892 if test -n "$LLVM_CONFIG"; then 7893 # Path to the clang system headers (no idea if there's a better way to get it). 7894 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include 7895 fi 7896 fi 7897 fi 7898 fi 7899 CXX=$save_CXX 7900 CXXCPP=$save_CXXCPP 7901 CPPFLAGS=$save_CPPFLAGS 7902 CXXFLAGS=$save_CXXFLAGS 7903 LDFLAGS=$save_LDFLAGS 7904 LIBS="$save_LIBS" 7905 AC_LANG_POP([C++]) 7906 7907 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang]) 7908 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 7909 #ifndef __clang__ 7910 you lose 7911 #endif 7912 int foo=42; 7913 ]])], 7914 [AC_MSG_RESULT([yes]) 7915 COMPILER_PLUGINS_COM_IS_CLANG=TRUE], 7916 [AC_MSG_RESULT([no])]) 7917 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG) 7918 fi 7919else 7920 if test "$enable_compiler_plugins" = "yes"; then 7921 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.]) 7922 fi 7923fi 7924COMPILER_PLUGINS_ANALYZER_PCH= 7925if test "$enable_compiler_plugins_analyzer_pch" != no; then 7926 COMPILER_PLUGINS_ANALYZER_PCH=TRUE 7927fi 7928AC_SUBST(COMPILER_PLUGINS) 7929AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH) 7930AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG) 7931AC_SUBST(COMPILER_PLUGINS_CXX) 7932AC_SUBST(COMPILER_PLUGINS_CXXFLAGS) 7933AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS) 7934AC_SUBST(COMPILER_PLUGINS_DEBUG) 7935AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS) 7936AC_SUBST(CLANGDIR) 7937AC_SUBST(CLANGLIBDIR) 7938AC_SUBST(CLANGTOOLLIBS) 7939AC_SUBST(CLANGSYSINCLUDE) 7940 7941# Plugin to help linker. 7942# Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input. 7943# This makes --enable-lto build with clang work. 7944AC_SUBST(LD_PLUGIN) 7945 7946AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO]) 7947AC_SUBST(HAVE_POSIX_FALLOCATE) 7948 7949JITC_PROCESSOR_TYPE="" 7950if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then 7951 # IBMs JDK needs this... 7952 JITC_PROCESSOR_TYPE=6 7953 export JITC_PROCESSOR_TYPE 7954fi 7955AC_SUBST([JITC_PROCESSOR_TYPE]) 7956 7957# Misc Windows Stuff 7958AC_ARG_WITH(ucrt-dir, 7959 AS_HELP_STRING([--with-ucrt-dir], 7960 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables 7961 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install 7962 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files: 7963 Windows6.1-KB2999226-x64.msu 7964 Windows6.1-KB2999226-x86.msu 7965 Windows8.1-KB2999226-x64.msu 7966 Windows8.1-KB2999226-x86.msu 7967 Windows8-RT-KB2999226-x64.msu 7968 Windows8-RT-KB2999226-x86.msu 7969 A zip archive including those files is available from Microsoft site: 7970 https://www.microsoft.com/en-us/download/details.aspx?id=48234]), 7971,) 7972 7973UCRT_REDISTDIR="$with_ucrt_dir" 7974if test $_os = "WINNT"; then 7975 find_msvc_x64_dlls 7976 for i in $PKGFORMAT; do 7977 if test "$i" = msi; then 7978 find_msms 7979 break 7980 fi 7981 done 7982 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"` 7983 MSVC_DLLS="$msvcdlls" 7984 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"` 7985 # MSVC 15.3 changed it to VC141 7986 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then 7987 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST" 7988 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then 7989 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST" 7990 else 7991 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST" 7992 fi 7993 7994 if test "$UCRT_REDISTDIR" = "no"; then 7995 dnl explicitly disabled 7996 UCRT_REDISTDIR="" 7997 else 7998 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \ 7999 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \ 8000 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \ 8001 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \ 8002 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \ 8003 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then 8004 UCRT_REDISTDIR="" 8005 if test -n "$PKGFORMAT"; then 8006 for i in $PKGFORMAT; do 8007 case "$i" in 8008 msi) 8009 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency]) 8010 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency" 8011 ;; 8012 esac 8013 done 8014 fi 8015 fi 8016 fi 8017fi 8018 8019AC_SUBST(UCRT_REDISTDIR) 8020AC_SUBST(MSVC_DLL_PATH) 8021AC_SUBST(MSVC_DLLS) 8022AC_SUBST(MSM_PATH) 8023 8024dnl =================================================================== 8025dnl Checks for Java 8026dnl =================================================================== 8027if test "$ENABLE_JAVA" != ""; then 8028 8029 # Windows-specific tests 8030 if test "$build_os" = "cygwin"; then 8031 if test -z "$with_jdk_home"; then 8032 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12- 8033 dnl AB10-49F82F720027> section "Windows Registry Key Changes": 8034 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion" 8035 if test -n "$regvalue"; then 8036 ver=$regvalue 8037 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome" 8038 with_jdk_home=$regvalue 8039 fi 8040 howfound="found automatically" 8041 else 8042 with_jdk_home=`win_short_path_for_make "$with_jdk_home"` 8043 howfound="you passed" 8044 fi 8045 8046 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then 8047 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9]) 8048 fi 8049 fi 8050 8051 # macOS: /usr/libexec/java_home helps to set the current JDK_HOME. Actually JDK_HOME should NOT be set where java (/usr/bin/java) is located. 8052 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries 8053 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then 8054 with_jdk_home=`/usr/libexec/java_home` 8055 fi 8056 8057 JAVA_HOME=; export JAVA_HOME 8058 if test -z "$with_jdk_home"; then 8059 AC_PATH_PROG(JAVAINTERPRETER, $with_java) 8060 else 8061 _java_path="$with_jdk_home/bin/$with_java" 8062 dnl Check if there is a Java interpreter at all. 8063 if test -x "$_java_path"; then 8064 JAVAINTERPRETER=$_java_path 8065 else 8066 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home]) 8067 fi 8068 fi 8069 8070 dnl Check that the JDK found is correct architecture (at least 2 reasons to 8071 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be 8072 dnl loaded by java to run JunitTests: 8073 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then 8074 shortjdkhome=`cygpath -d "$with_jdk_home"` 8075 if test $WIN_HOST_BITS -eq 64 -a -f "$with_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then 8076 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit]) 8077 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK]) 8078 elif test $WIN_HOST_BITS -eq 32 -a -f "$with_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then 8079 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit]) 8080 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK]) 8081 fi 8082 8083 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then 8084 JAVAINTERPRETER="${JAVAINTERPRETER}.exe" 8085 fi 8086 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"` 8087 elif test "$cross_compiling" != "yes"; then 8088 case $CPUNAME in 8089 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64) 8090 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then 8091 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit]) 8092 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK]) 8093 fi 8094 ;; 8095 *) # assumption: everything else 32-bit 8096 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then 8097 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit]) 8098 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK]) 8099 fi 8100 ;; 8101 esac 8102 fi 8103fi 8104 8105dnl =================================================================== 8106dnl Checks for JDK. 8107dnl =================================================================== 8108 8109# Whether all the complexity here actually is needed any more or not, no idea. 8110 8111if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then 8112 _gij_longver=0 8113 AC_MSG_CHECKING([the installed JDK]) 8114 if test -n "$JAVAINTERPRETER"; then 8115 dnl java -version sends output to stderr! 8116 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then 8117 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac]) 8118 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then 8119 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac]) 8120 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then 8121 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac]) 8122 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then 8123 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac]) 8124 else 8125 JDK=sun 8126 8127 dnl Sun JDK specific tests 8128 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//` 8129 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'` 8130 8131 if test "$_jdk_ver" -lt 10900; then 8132 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)]) 8133 fi 8134 if test "$_jdk_ver" -gt 10900; then 8135 JAVA_CLASSPATH_NOT_SET=TRUE 8136 fi 8137 8138 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"` 8139 if test "$_os" = "WINNT"; then 8140 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"` 8141 fi 8142 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)]) 8143 8144 # set to limit VM usage for JunitTests 8145 JAVAIFLAGS=-Xmx64M 8146 # set to limit VM usage for javac 8147 JAVACFLAGS=-J-Xmx128M 8148 fi 8149 else 8150 AC_MSG_ERROR([Java not found. You need at least JDK 9]) 8151 fi 8152else 8153 if test -z "$ENABLE_JAVA"; then 8154 dnl Java disabled 8155 JAVA_HOME= 8156 export JAVA_HOME 8157 elif test "$cross_compiling" = "yes"; then 8158 # Just assume compatibility of build and host JDK 8159 JDK=$JDK_FOR_BUILD 8160 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD 8161 fi 8162fi 8163 8164dnl =================================================================== 8165dnl Checks for javac 8166dnl =================================================================== 8167if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then 8168 javacompiler="javac" 8169 : ${JAVA_SOURCE_VER=8} 8170 : ${JAVA_TARGET_VER=8} 8171 if test -z "$with_jdk_home"; then 8172 AC_PATH_PROG(JAVACOMPILER, $javacompiler) 8173 else 8174 _javac_path="$with_jdk_home/bin/$javacompiler" 8175 dnl Check if there is a Java compiler at all. 8176 if test -x "$_javac_path"; then 8177 JAVACOMPILER=$_javac_path 8178 fi 8179 fi 8180 if test -z "$JAVACOMPILER"; then 8181 AC_MSG_ERROR([$javacompiler not found set with_jdk_home]) 8182 fi 8183 if test "$build_os" = "cygwin"; then 8184 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then 8185 JAVACOMPILER="${JAVACOMPILER}.exe" 8186 fi 8187 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"` 8188 fi 8189fi 8190 8191dnl =================================================================== 8192dnl Checks for javadoc 8193dnl =================================================================== 8194if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then 8195 if test -z "$with_jdk_home"; then 8196 AC_PATH_PROG(JAVADOC, javadoc) 8197 else 8198 _javadoc_path="$with_jdk_home/bin/javadoc" 8199 dnl Check if there is a javadoc at all. 8200 if test -x "$_javadoc_path"; then 8201 JAVADOC=$_javadoc_path 8202 else 8203 AC_PATH_PROG(JAVADOC, javadoc) 8204 fi 8205 fi 8206 if test -z "$JAVADOC"; then 8207 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home]) 8208 fi 8209 if test "$build_os" = "cygwin"; then 8210 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then 8211 JAVADOC="${JAVADOC}.exe" 8212 fi 8213 JAVADOC=`win_short_path_for_make "$JAVADOC"` 8214 fi 8215 8216 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then 8217 JAVADOCISGJDOC="yes" 8218 fi 8219fi 8220AC_SUBST(JAVADOC) 8221AC_SUBST(JAVADOCISGJDOC) 8222 8223if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then 8224 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr 8225 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then 8226 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then 8227 # try to recover first by looking whether we have an alternative 8228 # system as in Debian or newer SuSEs where following /usr/bin/javac 8229 # over /etc/alternatives/javac leads to the right bindir where we 8230 # just need to strip a bit away to get a valid JAVA_HOME 8231 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER)) 8232 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then 8233 # maybe only one level of symlink (e.g. on Mac) 8234 JAVA_HOME=$(readlink $JAVACOMPILER) 8235 if test "$(dirname $JAVA_HOME)" = "."; then 8236 # we've got no path to trim back 8237 JAVA_HOME="" 8238 fi 8239 else 8240 # else warn 8241 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect]) 8242 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home]) 8243 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect" 8244 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home" 8245 fi 8246 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it... 8247 if test "$JAVA_HOME" != "/usr"; then 8248 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then 8249 dnl Leopard returns a non-suitable path with readlink - points to "Current" only 8250 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,) 8251 dnl Tiger already returns a JDK path... 8252 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,) 8253 else 8254 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,) 8255 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script 8256 dnl that checks which version to run 8257 if test -f "$JAVA_HOME"; then 8258 JAVA_HOME=""; # set JAVA_HOME to null if it's a file 8259 fi 8260 fi 8261 fi 8262 fi 8263 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink 8264 8265 dnl now if JAVA_HOME has been set to empty, then call findhome to find it 8266 if test -z "$JAVA_HOME"; then 8267 if test "x$with_jdk_home" = "x"; then 8268 cat > findhome.java <<_ACEOF 8269[import java.io.File; 8270 8271class findhome 8272{ 8273 public static void main(String args[]) 8274 { 8275 String jrelocation = System.getProperty("java.home"); 8276 File jre = new File(jrelocation); 8277 System.out.println(jre.getParent()); 8278 } 8279}] 8280_ACEOF 8281 AC_MSG_CHECKING([if javac works]) 8282 javac_cmd="$JAVACOMPILER findhome.java 1>&2" 8283 AC_TRY_EVAL(javac_cmd) 8284 if test $? = 0 -a -f ./findhome.class; then 8285 AC_MSG_RESULT([javac works]) 8286 else 8287 echo "configure: javac test failed" >&5 8288 cat findhome.java >&5 8289 AC_MSG_ERROR([javac does not work - java projects will not build!]) 8290 fi 8291 AC_MSG_CHECKING([if gij knows its java.home]) 8292 JAVA_HOME=`$JAVAINTERPRETER findhome` 8293 if test $? = 0 -a "$JAVA_HOME" != ""; then 8294 AC_MSG_RESULT([$JAVA_HOME]) 8295 else 8296 echo "configure: java test failed" >&5 8297 cat findhome.java >&5 8298 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home]) 8299 fi 8300 # clean-up after ourselves 8301 rm -f ./findhome.java ./findhome.class 8302 else 8303 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"` 8304 fi 8305 fi 8306 8307 # now check if $JAVA_HOME is really valid 8308 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then 8309 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then 8310 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script]) 8311 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed]) 8312 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly]) 8313 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script" 8314 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed" 8315 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly" 8316 fi 8317 fi 8318 PathFormat "$JAVA_HOME" 8319 JAVA_HOME="$formatted_path" 8320fi 8321 8322if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \ 8323 "$_os" != Darwin 8324then 8325 AC_MSG_CHECKING([for JAWT lib]) 8326 if test "$_os" = WINNT; then 8327 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB: 8328 JAWTLIB=jawt.lib 8329 else 8330 case "$host_cpu" in 8331 arm*) 8332 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm]) 8333 JAVA_ARCH=$my_java_arch 8334 ;; 8335 i*86) 8336 my_java_arch=i386 8337 ;; 8338 m68k) 8339 my_java_arch=m68k 8340 ;; 8341 powerpc) 8342 my_java_arch=ppc 8343 ;; 8344 powerpc64) 8345 my_java_arch=ppc64 8346 ;; 8347 powerpc64le) 8348 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64]) 8349 JAVA_ARCH=$my_java_arch 8350 ;; 8351 sparc64) 8352 my_java_arch=sparcv9 8353 ;; 8354 x86_64) 8355 my_java_arch=amd64 8356 ;; 8357 *) 8358 my_java_arch=$host_cpu 8359 ;; 8360 esac 8361 # This is where JDK9 puts the library 8362 if test -e "$JAVA_HOME/lib/libjawt.so"; then 8363 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt" 8364 else 8365 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt" 8366 fi 8367 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])]) 8368 fi 8369 AC_MSG_RESULT([$JAWTLIB]) 8370fi 8371AC_SUBST(JAWTLIB) 8372 8373if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then 8374 case "$host_os" in 8375 8376 aix*) 8377 JAVAINC="-I$JAVA_HOME/include" 8378 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix" 8379 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8380 ;; 8381 8382 cygwin*|wsl*) 8383 JAVAINC="-I$JAVA_HOME/include/win32" 8384 JAVAINC="$JAVAINC -I$JAVA_HOME/include" 8385 ;; 8386 8387 darwin*|macos*) 8388 if test -d "$JAVA_HOME/include/darwin"; then 8389 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin" 8390 else 8391 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers 8392 fi 8393 ;; 8394 8395 dragonfly*) 8396 JAVAINC="-I$JAVA_HOME/include" 8397 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8398 ;; 8399 8400 freebsd*) 8401 JAVAINC="-I$JAVA_HOME/include" 8402 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd" 8403 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd" 8404 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux" 8405 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8406 ;; 8407 8408 k*bsd*-gnu*) 8409 JAVAINC="-I$JAVA_HOME/include" 8410 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux" 8411 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8412 ;; 8413 8414 linux-gnu*) 8415 JAVAINC="-I$JAVA_HOME/include" 8416 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux" 8417 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8418 ;; 8419 8420 *netbsd*) 8421 JAVAINC="-I$JAVA_HOME/include" 8422 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd" 8423 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8424 ;; 8425 8426 openbsd*) 8427 JAVAINC="-I$JAVA_HOME/include" 8428 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd" 8429 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8430 ;; 8431 8432 solaris*) 8433 JAVAINC="-I$JAVA_HOME/include" 8434 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris" 8435 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" 8436 ;; 8437 esac 8438fi 8439SOLARINC="$SOLARINC $JAVAINC" 8440 8441if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then 8442 JAVA_HOME_FOR_BUILD=$JAVA_HOME 8443 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS 8444 JDK_FOR_BUILD=$JDK 8445fi 8446 8447AC_SUBST(JAVACFLAGS) 8448AC_SUBST(JAVACOMPILER) 8449AC_SUBST(JAVAINTERPRETER) 8450AC_SUBST(JAVAIFLAGS) 8451AC_SUBST(JAVAIFLAGS_FOR_BUILD) 8452AC_SUBST(JAVA_CLASSPATH_NOT_SET) 8453AC_SUBST(JAVA_HOME) 8454AC_SUBST(JAVA_HOME_FOR_BUILD) 8455AC_SUBST(JDK) 8456AC_SUBST(JDK_FOR_BUILD) 8457AC_SUBST(JAVA_SOURCE_VER) 8458AC_SUBST(JAVA_TARGET_VER) 8459 8460 8461dnl =================================================================== 8462dnl Export file validation 8463dnl =================================================================== 8464AC_MSG_CHECKING([whether to enable export file validation]) 8465if test "$with_export_validation" != "no"; then 8466 if test -z "$ENABLE_JAVA"; then 8467 if test "$with_export_validation" = "yes"; then 8468 AC_MSG_ERROR([requested, but Java is disabled]) 8469 else 8470 AC_MSG_RESULT([no, as Java is disabled]) 8471 fi 8472 elif ! test -d "${SRC_ROOT}/schema"; then 8473 if test "$with_export_validation" = "yes"; then 8474 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)]) 8475 else 8476 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)]) 8477 fi 8478 else 8479 AC_MSG_RESULT([yes]) 8480 AC_DEFINE(HAVE_EXPORT_VALIDATION) 8481 8482 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator) 8483 if test -z "$ODFVALIDATOR"; then 8484 # remember to download the ODF toolkit with validator later 8485 AC_MSG_NOTICE([no odfvalidator found, will download it]) 8486 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR" 8487 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh" 8488 8489 # and fetch name of odfvalidator jar name from download.lst 8490 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst` 8491 AC_SUBST(ODFVALIDATOR_JAR) 8492 8493 if test -z "$ODFVALIDATOR_JAR"; then 8494 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)]) 8495 fi 8496 fi 8497 if test "$build_os" = "cygwin"; then 8498 # In case of Cygwin it will be executed from Windows, 8499 # so we need to run bash and absolute path to validator 8500 # so instead of "odfvalidator" it will be 8501 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator" 8502 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`" 8503 else 8504 ODFVALIDATOR="sh $ODFVALIDATOR" 8505 fi 8506 AC_SUBST(ODFVALIDATOR) 8507 8508 8509 AC_PATH_PROGS(OFFICEOTRON, officeotron) 8510 if test -z "$OFFICEOTRON"; then 8511 # remember to download the officeotron with validator later 8512 AC_MSG_NOTICE([no officeotron found, will download it]) 8513 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON" 8514 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh" 8515 8516 # and fetch name of officeotron jar name from download.lst 8517 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst` 8518 AC_SUBST(OFFICEOTRON_JAR) 8519 8520 if test -z "$OFFICEOTRON_JAR"; then 8521 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)]) 8522 fi 8523 else 8524 # check version of existing officeotron 8525 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` 8526 if test 0"$OFFICEOTRON_VER" -lt 704; then 8527 AC_MSG_ERROR([officeotron too old]) 8528 fi 8529 fi 8530 if test "$build_os" = "cygwin"; then 8531 # In case of Cygwin it will be executed from Windows, 8532 # so we need to run bash and absolute path to validator 8533 # so instead of "odfvalidator" it will be 8534 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator" 8535 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`" 8536 else 8537 OFFICEOTRON="sh $OFFICEOTRON" 8538 fi 8539 fi 8540 AC_SUBST(OFFICEOTRON) 8541else 8542 AC_MSG_RESULT([no]) 8543fi 8544 8545AC_MSG_CHECKING([for Microsoft Binary File Format Validator]) 8546if test "$with_bffvalidator" != "no"; then 8547 AC_DEFINE(HAVE_BFFVALIDATOR) 8548 8549 if test "$with_export_validation" = "no"; then 8550 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!]) 8551 fi 8552 8553 if test "$with_bffvalidator" = "yes"; then 8554 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"` 8555 else 8556 BFFVALIDATOR="$with_bffvalidator" 8557 fi 8558 8559 if test "$build_os" = "cygwin"; then 8560 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then 8561 AC_MSG_RESULT($BFFVALIDATOR) 8562 else 8563 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator]) 8564 fi 8565 elif test -n "$BFFVALIDATOR"; then 8566 # We are not in Cygwin but need to run Windows binary with wine 8567 AC_PATH_PROGS(WINE, wine) 8568 8569 # so swap in a shell wrapper that converts paths transparently 8570 BFFVALIDATOR_EXE="$BFFVALIDATOR" 8571 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh" 8572 AC_SUBST(BFFVALIDATOR_EXE) 8573 AC_MSG_RESULT($BFFVALIDATOR) 8574 else 8575 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator]) 8576 fi 8577 AC_SUBST(BFFVALIDATOR) 8578else 8579 AC_MSG_RESULT([no]) 8580fi 8581 8582dnl =================================================================== 8583dnl Check for C preprocessor to use 8584dnl =================================================================== 8585AC_MSG_CHECKING([which C preprocessor to use in idlc]) 8586if test -n "$with_idlc_cpp"; then 8587 AC_MSG_RESULT([$with_idlc_cpp]) 8588 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp) 8589else 8590 AC_MSG_RESULT([ucpp]) 8591 AC_MSG_CHECKING([which ucpp tp use]) 8592 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then 8593 AC_MSG_RESULT([external]) 8594 AC_PATH_PROG(SYSTEM_UCPP, ucpp) 8595 else 8596 AC_MSG_RESULT([internal]) 8597 BUILD_TYPE="$BUILD_TYPE UCPP" 8598 fi 8599fi 8600AC_SUBST(SYSTEM_UCPP) 8601 8602dnl =================================================================== 8603dnl Check for epm (not needed for Windows) 8604dnl =================================================================== 8605AC_MSG_CHECKING([whether to enable EPM for packing]) 8606if test "$enable_epm" = "yes"; then 8607 AC_MSG_RESULT([yes]) 8608 if test "$_os" != "WINNT"; then 8609 if test $_os = Darwin; then 8610 EPM=internal 8611 elif test -n "$with_epm"; then 8612 EPM=$with_epm 8613 else 8614 AC_PATH_PROG(EPM, epm, no) 8615 fi 8616 if test "$EPM" = "no" -o "$EPM" = "internal"; then 8617 AC_MSG_NOTICE([EPM will be built.]) 8618 BUILD_TYPE="$BUILD_TYPE EPM" 8619 EPM=${WORKDIR}/UnpackedTarball/epm/epm 8620 else 8621 # Gentoo has some epm which is something different... 8622 AC_MSG_CHECKING([whether the found epm is the right epm]) 8623 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then 8624 AC_MSG_RESULT([yes]) 8625 else 8626 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm]) 8627 fi 8628 AC_MSG_CHECKING([epm version]) 8629 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//` 8630 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \ 8631 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then 8632 AC_MSG_RESULT([OK, >= 3.7]) 8633 else 8634 AC_MSG_RESULT([too old. epm >= 3.7 is required.]) 8635 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm]) 8636 fi 8637 fi 8638 fi 8639 8640 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then 8641 AC_MSG_CHECKING([for rpm]) 8642 for a in "$RPM" rpmbuild rpm; do 8643 $a --usage >/dev/null 2> /dev/null 8644 if test $? -eq 0; then 8645 RPM=$a 8646 break 8647 else 8648 $a --version >/dev/null 2> /dev/null 8649 if test $? -eq 0; then 8650 RPM=$a 8651 break 8652 fi 8653 fi 8654 done 8655 if test -z "$RPM"; then 8656 AC_MSG_ERROR([not found]) 8657 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then 8658 RPM_PATH=`which $RPM` 8659 AC_MSG_RESULT([$RPM_PATH]) 8660 SCPDEFS="$SCPDEFS -DWITH_RPM" 8661 else 8662 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.]) 8663 fi 8664 fi 8665 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then 8666 AC_PATH_PROG(DPKG, dpkg, no) 8667 if test "$DPKG" = "no"; then 8668 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.]) 8669 fi 8670 fi 8671 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \ 8672 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then 8673 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then 8674 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then 8675 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs]) 8676 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then 8677 AC_MSG_RESULT([yes]) 8678 else 8679 AC_MSG_RESULT([no]) 8680 if echo "$PKGFORMAT" | $GREP -q rpm; then 8681 _pt="rpm" 8682 AC_MSG_WARN([the rpms will need to be installed with --nodeps]) 8683 add_warning "the rpms will need to be installed with --nodeps" 8684 else 8685 _pt="pkg" 8686 fi 8687 AC_MSG_WARN([the ${_pt}s will not be relocatable]) 8688 add_warning "the ${_pt}s will not be relocatable" 8689 AC_MSG_WARN([if you want to make sure installation without --nodeps and 8690 relocation will work, you need to patch your epm with the 8691 patch in epm/epm-3.7.patch or build with 8692 --with-epm=internal which will build a suitable epm]) 8693 fi 8694 fi 8695 fi 8696 fi 8697 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then 8698 AC_PATH_PROG(PKGMK, pkgmk, no) 8699 if test "$PKGMK" = "no"; then 8700 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.]) 8701 fi 8702 fi 8703 AC_SUBST(RPM) 8704 AC_SUBST(DPKG) 8705 AC_SUBST(PKGMK) 8706else 8707 for i in $PKGFORMAT; do 8708 case "$i" in 8709 aix | bsd | deb | pkg | rpm | native | portable) 8710 AC_MSG_ERROR( 8711 [--with-package-format='$PKGFORMAT' requires --enable-epm]) 8712 ;; 8713 esac 8714 done 8715 AC_MSG_RESULT([no]) 8716 EPM=NO 8717fi 8718AC_SUBST(EPM) 8719 8720ENABLE_LWP= 8721if test "$enable_lotuswordpro" = "yes"; then 8722 ENABLE_LWP="TRUE" 8723fi 8724AC_SUBST(ENABLE_LWP) 8725 8726dnl =================================================================== 8727dnl Check for building ODK 8728dnl =================================================================== 8729if test "$enable_odk" = no; then 8730 unset DOXYGEN 8731else 8732 if test "$with_doxygen" = no; then 8733 AC_MSG_CHECKING([for doxygen]) 8734 unset DOXYGEN 8735 AC_MSG_RESULT([no]) 8736 else 8737 if test "$with_doxygen" = yes; then 8738 AC_PATH_PROG([DOXYGEN], [doxygen]) 8739 if test -z "$DOXYGEN"; then 8740 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen]) 8741 fi 8742 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then 8743 if ! dot -V 2>/dev/null; then 8744 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen]) 8745 fi 8746 fi 8747 else 8748 AC_MSG_CHECKING([for doxygen]) 8749 DOXYGEN=$with_doxygen 8750 AC_MSG_RESULT([$DOXYGEN]) 8751 fi 8752 if test -n "$DOXYGEN"; then 8753 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null` 8754 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'` 8755 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then 8756 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen]) 8757 fi 8758 fi 8759 fi 8760fi 8761AC_SUBST([DOXYGEN]) 8762 8763AC_MSG_CHECKING([whether to build the ODK]) 8764if test "$enable_odk" = "" -o "$enable_odk" != "no"; then 8765 AC_MSG_RESULT([yes]) 8766 BUILD_TYPE="$BUILD_TYPE ODK" 8767else 8768 AC_MSG_RESULT([no]) 8769fi 8770 8771dnl =================================================================== 8772dnl Check for system zlib 8773dnl =================================================================== 8774if test "$with_system_zlib" = "auto"; then 8775 case "$_os" in 8776 WINNT) 8777 with_system_zlib="$with_system_libs" 8778 ;; 8779 *) 8780 if test "$enable_fuzzers" != "yes"; then 8781 with_system_zlib=yes 8782 else 8783 with_system_zlib=no 8784 fi 8785 ;; 8786 esac 8787fi 8788 8789dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid 8790dnl and has no pkg-config for it at least on some tinderboxes, 8791dnl so leaving that out for now 8792dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib]) 8793AC_MSG_CHECKING([which zlib to use]) 8794if test "$with_system_zlib" = "yes"; then 8795 AC_MSG_RESULT([external]) 8796 SYSTEM_ZLIB=TRUE 8797 AC_CHECK_HEADER(zlib.h, [], 8798 [AC_MSG_ERROR(zlib.h not found. install zlib)], []) 8799 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ], 8800 [AC_MSG_ERROR(zlib not found or functional)], []) 8801else 8802 AC_MSG_RESULT([internal]) 8803 SYSTEM_ZLIB= 8804 BUILD_TYPE="$BUILD_TYPE ZLIB" 8805 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib" 8806 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib" 8807fi 8808AC_SUBST(ZLIB_CFLAGS) 8809AC_SUBST(ZLIB_LIBS) 8810AC_SUBST(SYSTEM_ZLIB) 8811 8812dnl =================================================================== 8813dnl Check for system jpeg 8814dnl =================================================================== 8815AC_MSG_CHECKING([which libjpeg to use]) 8816if test "$with_system_jpeg" = "yes"; then 8817 AC_MSG_RESULT([external]) 8818 SYSTEM_LIBJPEG=TRUE 8819 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ], 8820 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], []) 8821 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ], 8822 [AC_MSG_ERROR(jpeg library not found or functional)], []) 8823else 8824 SYSTEM_LIBJPEG= 8825 AC_MSG_RESULT([internal, libjpeg-turbo]) 8826 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO" 8827 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo" 8828 if test "$COM" = "MSC"; then 8829 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib" 8830 else 8831 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg" 8832 fi 8833 8834 case "$host_cpu" in 8835 x86_64 | amd64 | i*86 | x86 | ia32) 8836 AC_CHECK_PROGS(NASM, [nasm nasmw yasm]) 8837 if test -z "$NASM" -a "$build_os" = "cygwin"; then 8838 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then 8839 NASM="$LODE_HOME/opt/bin/nasm" 8840 elif test -x "/opt/lo/bin/nasm"; then 8841 NASM="/opt/lo/bin/nasm" 8842 fi 8843 fi 8844 8845 if test -n "$NASM"; then 8846 AC_MSG_CHECKING([for object file format of host system]) 8847 case "$host_os" in 8848 cygwin* | mingw* | pw32* | wsl*) 8849 case "$host_cpu" in 8850 x86_64) 8851 objfmt='Win64-COFF' 8852 ;; 8853 *) 8854 objfmt='Win32-COFF' 8855 ;; 8856 esac 8857 ;; 8858 msdosdjgpp* | go32*) 8859 objfmt='COFF' 8860 ;; 8861 os2-emx*) # not tested 8862 objfmt='MSOMF' # obj 8863 ;; 8864 linux*coff* | linux*oldld*) 8865 objfmt='COFF' # ??? 8866 ;; 8867 linux*aout*) 8868 objfmt='a.out' 8869 ;; 8870 linux*) 8871 case "$host_cpu" in 8872 x86_64) 8873 objfmt='ELF64' 8874 ;; 8875 *) 8876 objfmt='ELF' 8877 ;; 8878 esac 8879 ;; 8880 kfreebsd* | freebsd* | netbsd* | openbsd*) 8881 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 8882 objfmt='BSD-a.out' 8883 else 8884 case "$host_cpu" in 8885 x86_64 | amd64) 8886 objfmt='ELF64' 8887 ;; 8888 *) 8889 objfmt='ELF' 8890 ;; 8891 esac 8892 fi 8893 ;; 8894 solaris* | sunos* | sysv* | sco*) 8895 case "$host_cpu" in 8896 x86_64) 8897 objfmt='ELF64' 8898 ;; 8899 *) 8900 objfmt='ELF' 8901 ;; 8902 esac 8903 ;; 8904 darwin* | rhapsody* | nextstep* | openstep* | macos*) 8905 case "$host_cpu" in 8906 x86_64) 8907 objfmt='Mach-O64' 8908 ;; 8909 *) 8910 objfmt='Mach-O' 8911 ;; 8912 esac 8913 ;; 8914 *) 8915 objfmt='ELF ?' 8916 ;; 8917 esac 8918 8919 AC_MSG_RESULT([$objfmt]) 8920 if test "$objfmt" = 'ELF ?'; then 8921 objfmt='ELF' 8922 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.]) 8923 fi 8924 8925 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ]) 8926 case "$objfmt" in 8927 MSOMF) NAFLAGS='-fobj -DOBJ32';; 8928 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';; 8929 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';; 8930 COFF) NAFLAGS='-fcoff -DCOFF';; 8931 a.out) NAFLAGS='-faout -DAOUT';; 8932 BSD-a.out) NAFLAGS='-faoutb -DAOUT';; 8933 ELF) NAFLAGS='-felf -DELF';; 8934 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';; 8935 RDF) NAFLAGS='-frdf -DRDF';; 8936 Mach-O) NAFLAGS='-fmacho -DMACHO';; 8937 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';; 8938 esac 8939 AC_MSG_RESULT([$NAFLAGS]) 8940 8941 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works]) 8942 cat > conftest.asm << EOF 8943 [%line __oline__ "configure" 8944 section .text 8945 global _main,main 8946 _main: 8947 main: xor eax,eax 8948 ret 8949 ] 8950EOF 8951 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm' 8952 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then 8953 AC_MSG_RESULT(yes) 8954 else 8955 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD 8956 cat conftest.asm >&AS_MESSAGE_LOG_FD 8957 rm -rf conftest* 8958 AC_MSG_RESULT(no) 8959 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.]) 8960 NASM="" 8961 fi 8962 8963 fi 8964 8965 if test -z "$NASM"; then 8966cat << _EOS 8967**************************************************************************** 8968You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally. 8969To get one please: 8970 8971_EOS 8972 if test "$build_os" = "cygwin"; then 8973cat << _EOS 8974install a pre-compiled binary for Win32 8975 8976mkdir -p /opt/lo/bin 8977cd /opt/lo/bin 8978wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe 8979chmod +x nasm 8980 8981or get and install one from http://www.nasm.us/ 8982 8983Then re-run autogen.sh 8984 8985Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined. 8986Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it. 8987 8988_EOS 8989 else 8990cat << _EOS 8991consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md 8992 8993_EOS 8994 fi 8995 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found]) 8996 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo" 8997 fi 8998 ;; 8999 esac 9000fi 9001 9002AC_SUBST(NASM) 9003AC_SUBST(LIBJPEG_CFLAGS) 9004AC_SUBST(LIBJPEG_LIBS) 9005AC_SUBST(SYSTEM_LIBJPEG) 9006 9007dnl =================================================================== 9008dnl Check for system clucene 9009dnl =================================================================== 9010dnl we should rather be using 9011dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here 9012dnl but the contribs-lib check seems tricky 9013AC_MSG_CHECKING([which clucene to use]) 9014if test "$with_system_clucene" = "yes"; then 9015 AC_MSG_RESULT([external]) 9016 SYSTEM_CLUCENE=TRUE 9017 PKG_CHECK_MODULES(CLUCENE, libclucene-core) 9018 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")] 9019 FilterLibs "${CLUCENE_LIBS}" 9020 CLUCENE_LIBS="${filteredlibs}" 9021 AC_LANG_PUSH([C++]) 9022 save_CXXFLAGS=$CXXFLAGS 9023 save_CPPFLAGS=$CPPFLAGS 9024 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS" 9025 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS" 9026 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446 9027 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795 9028 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [], 9029 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>]) 9030 CXXFLAGS=$save_CXXFLAGS 9031 CPPFLAGS=$save_CPPFLAGS 9032 AC_LANG_POP([C++]) 9033 9034 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib" 9035else 9036 AC_MSG_RESULT([internal]) 9037 SYSTEM_CLUCENE= 9038 BUILD_TYPE="$BUILD_TYPE CLUCENE" 9039fi 9040AC_SUBST(SYSTEM_CLUCENE) 9041AC_SUBST(CLUCENE_CFLAGS) 9042AC_SUBST(CLUCENE_LIBS) 9043 9044dnl =================================================================== 9045dnl Check for system expat 9046dnl =================================================================== 9047libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat]) 9048 9049dnl =================================================================== 9050dnl Check for system xmlsec 9051dnl =================================================================== 9052libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28]) 9053 9054AC_MSG_CHECKING([whether to enable Embedded OpenType support]) 9055if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then 9056 ENABLE_EOT="TRUE" 9057 AC_DEFINE([ENABLE_EOT]) 9058 AC_MSG_RESULT([yes]) 9059 9060 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01]) 9061else 9062 ENABLE_EOT= 9063 AC_MSG_RESULT([no]) 9064fi 9065AC_SUBST([ENABLE_EOT]) 9066 9067dnl =================================================================== 9068dnl Check for DLP libs 9069dnl =================================================================== 9070AS_IF([test "$COM" = "MSC"], 9071 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"], 9072 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"] 9073) 9074libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"]) 9075 9076libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1]) 9077 9078libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1]) 9079 9080AS_IF([test "$COM" = "MSC"], 9081 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"], 9082 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"] 9083) 9084libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"]) 9085 9086libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3]) 9087 9088libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4]) 9089libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12]) 9090 9091libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1]) 9092 9093libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1]) 9094 9095libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1]) 9096 9097libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1]) 9098libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17]) 9099 9100libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1]) 9101libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8]) 9102 9103libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1]) 9104 9105libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1]) 9106libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2]) 9107 9108libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1]) 9109 9110libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0]) 9111 9112libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0]) 9113 9114libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0]) 9115 9116libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0]) 9117libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7]) 9118 9119dnl =================================================================== 9120dnl Check for system lcms2 9121dnl =================================================================== 9122if test "$with_system_lcms2" != "yes"; then 9123 SYSTEM_LCMS2= 9124fi 9125libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"]) 9126if test "$GCC" = "yes"; then 9127 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long" 9128fi 9129if test "$COM" = "MSC"; then # override the above 9130 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib 9131fi 9132 9133dnl =================================================================== 9134dnl Check for system cppunit 9135dnl =================================================================== 9136if test "$_os" != "Android" ; then 9137 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0]) 9138fi 9139 9140dnl =================================================================== 9141dnl Check whether freetype is available 9142dnl =================================================================== 9143if test "$test_freetype" = "yes"; then 9144 AC_MSG_CHECKING([whether freetype is available]) 9145 # FreeType has 3 different kinds of versions 9146 # * release, like 2.4.10 9147 # * libtool, like 13.0.7 (this what pkg-config returns) 9148 # * soname 9149 # FreeType's docs/VERSION.DLL provides a table mapping between the three 9150 # 9151 # 9.9.3 is 2.2.0 9152 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3) 9153 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 9154 FilterLibs "${FREETYPE_LIBS}" 9155 FREETYPE_LIBS="${filteredlibs}" 9156 SYSTEM_FREETYPE=TRUE 9157else 9158 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include" 9159 if test "x$ac_config_site_64bit_host" = xYES; then 9160 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype" 9161 else 9162 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype" 9163 fi 9164fi 9165AC_SUBST(FREETYPE_CFLAGS) 9166AC_SUBST(FREETYPE_LIBS) 9167AC_SUBST([SYSTEM_FREETYPE]) 9168 9169# =================================================================== 9170# Check for system libxslt 9171# to prevent incompatibilities between internal libxml2 and external libxslt, 9172# or vice versa, use with_system_libxml here 9173# =================================================================== 9174if test "$with_system_libxml" = "auto"; then 9175 case "$_os" in 9176 WINNT|iOS|Android) 9177 with_system_libxml="$with_system_libs" 9178 ;; 9179 *) 9180 if test "$enable_fuzzers" != "yes"; then 9181 with_system_libxml=yes 9182 else 9183 with_system_libxml=no 9184 fi 9185 ;; 9186 esac 9187fi 9188 9189AC_MSG_CHECKING([which libxslt to use]) 9190if test "$with_system_libxml" = "yes"; then 9191 AC_MSG_RESULT([external]) 9192 SYSTEM_LIBXSLT=TRUE 9193 if test "$_os" = "Darwin"; then 9194 dnl make sure to use SDK path 9195 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2" 9196 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS" 9197 dnl omit -L/usr/lib 9198 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm" 9199 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS" 9200 else 9201 PKG_CHECK_MODULES(LIBXSLT, libxslt) 9202 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 9203 FilterLibs "${LIBXSLT_LIBS}" 9204 LIBXSLT_LIBS="${filteredlibs}" 9205 PKG_CHECK_MODULES(LIBEXSLT, libexslt) 9206 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 9207 FilterLibs "${LIBEXSLT_LIBS}" 9208 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//") 9209 fi 9210 9211 dnl Check for xsltproc 9212 AC_PATH_PROG(XSLTPROC, xsltproc, no) 9213 if test "$XSLTPROC" = "no"; then 9214 AC_MSG_ERROR([xsltproc is required]) 9215 fi 9216else 9217 AC_MSG_RESULT([internal]) 9218 SYSTEM_LIBXSLT= 9219 BUILD_TYPE="$BUILD_TYPE LIBXSLT" 9220fi 9221AC_SUBST(SYSTEM_LIBXSLT) 9222if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then 9223 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT" 9224fi 9225AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD) 9226 9227AC_SUBST(LIBEXSLT_CFLAGS) 9228AC_SUBST(LIBEXSLT_LIBS) 9229AC_SUBST(LIBXSLT_CFLAGS) 9230AC_SUBST(LIBXSLT_LIBS) 9231AC_SUBST(XSLTPROC) 9232 9233# =================================================================== 9234# Check for system libxml 9235# =================================================================== 9236AC_MSG_CHECKING([which libxml to use]) 9237if test "$with_system_libxml" = "yes"; then 9238 AC_MSG_RESULT([external]) 9239 SYSTEM_LIBXML=TRUE 9240 if test "$_os" = "Darwin"; then 9241 dnl make sure to use SDK path 9242 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2" 9243 dnl omit -L/usr/lib 9244 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm" 9245 elif test $_os = iOS; then 9246 dnl make sure to use SDK path 9247 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'` 9248 LIBXML_CFLAGS="-I$usr/include/libxml2" 9249 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv" 9250 else 9251 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0) 9252 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 9253 FilterLibs "${LIBXML_LIBS}" 9254 LIBXML_LIBS="${filteredlibs}" 9255 fi 9256 9257 dnl Check for xmllint 9258 AC_PATH_PROG(XMLLINT, xmllint, no) 9259 if test "$XMLLINT" = "no"; then 9260 AC_MSG_ERROR([xmllint is required]) 9261 fi 9262else 9263 AC_MSG_RESULT([internal]) 9264 SYSTEM_LIBXML= 9265 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include" 9266 if test "$COM" = "MSC"; then 9267 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common" 9268 fi 9269 if test "$COM" = "MSC"; then 9270 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib" 9271 else 9272 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2" 9273 if test "$_os" = Android; then 9274 LIBXML_LIBS="$LIBXML_LIBS -lm" 9275 fi 9276 fi 9277 BUILD_TYPE="$BUILD_TYPE LIBXML2" 9278fi 9279AC_SUBST(SYSTEM_LIBXML) 9280if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then 9281 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML" 9282fi 9283AC_SUBST(SYSTEM_LIBXML_FOR_BUILD) 9284AC_SUBST(LIBXML_CFLAGS) 9285AC_SUBST(LIBXML_LIBS) 9286AC_SUBST(XMLLINT) 9287 9288# ===================================================================== 9289# Checking for a Python interpreter with version >= 3.3. 9290# Optionally user can pass an option to configure, i. e. 9291# ./configure PYTHON=/usr/bin/python 9292# ===================================================================== 9293if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then 9294 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal' 9295 # unless PYTHON is defined as above which allows 'system' 9296 enable_python=internal 9297fi 9298if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then 9299 if test -n "$PYTHON"; then 9300 PYTHON_FOR_BUILD=$PYTHON 9301 else 9302 # This allows a lack of system python with no error, we use internal one in that case. 9303 AM_PATH_PYTHON([3.3],, [:]) 9304 # Clean PYTHON_VERSION checked below if cross-compiling 9305 PYTHON_VERSION="" 9306 if test "$PYTHON" != ":"; then 9307 PYTHON_FOR_BUILD=$PYTHON 9308 fi 9309 fi 9310fi 9311AC_SUBST(PYTHON_FOR_BUILD) 9312 9313# Checks for Python to use for Pyuno 9314AC_MSG_CHECKING([which Python to use for Pyuno]) 9315case "$enable_python" in 9316no|disable) 9317 if test -z $PYTHON_FOR_BUILD; then 9318 # Python is required to build LibreOffice. In theory we could separate the build-time Python 9319 # requirement from the choice whether to include Python stuff in the installer, but why 9320 # bother? 9321 AC_MSG_ERROR([Python is required at build time.]) 9322 fi 9323 enable_python=no 9324 AC_MSG_RESULT([none]) 9325 ;; 9326""|yes|auto) 9327 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then 9328 AC_MSG_RESULT([no, overridden by --disable-scripting]) 9329 enable_python=no 9330 elif test $build_os = cygwin; then 9331 dnl When building on Windows we don't attempt to use any installed 9332 dnl "system" Python. 9333 AC_MSG_RESULT([fully internal]) 9334 enable_python=internal 9335 elif test "$cross_compiling" = yes; then 9336 AC_MSG_RESULT([system]) 9337 enable_python=system 9338 else 9339 # Unset variables set by the above AM_PATH_PYTHON so that 9340 # we actually do check anew. 9341 AC_MSG_RESULT([]) 9342 unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir 9343 AM_PATH_PYTHON([3.3],, [:]) 9344 AC_MSG_CHECKING([which Python to use for Pyuno]) 9345 if test "$PYTHON" = ":"; then 9346 if test -z "$PYTHON_FOR_BUILD"; then 9347 AC_MSG_RESULT([fully internal]) 9348 else 9349 AC_MSG_RESULT([internal]) 9350 fi 9351 enable_python=internal 9352 else 9353 AC_MSG_RESULT([system]) 9354 enable_python=system 9355 fi 9356 fi 9357 ;; 9358internal) 9359 AC_MSG_RESULT([internal]) 9360 ;; 9361fully-internal) 9362 AC_MSG_RESULT([fully internal]) 9363 enable_python=internal 9364 ;; 9365system) 9366 AC_MSG_RESULT([system]) 9367 if test "$_os" = Darwin -a -z "$PYTHON"; then 9368 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete]) 9369 fi 9370 ;; 9371*) 9372 AC_MSG_ERROR([Incorrect --enable-python option]) 9373 ;; 9374esac 9375 9376if test $enable_python != no; then 9377 BUILD_TYPE="$BUILD_TYPE PYUNO" 9378fi 9379 9380if test $enable_python = system; then 9381 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then 9382 # Fallback: Accept these in the environment, or as set above 9383 # for MacOSX. 9384 : 9385 elif test "$cross_compiling" != yes; then 9386 # Unset variables set by the above AM_PATH_PYTHON so that 9387 # we actually do check anew. 9388 unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir 9389 # This causes an error if no python command is found 9390 AM_PATH_PYTHON([3.3]) 9391 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"` 9392 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"` 9393 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"` 9394 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"` 9395 if test -z "$PKG_CONFIG"; then 9396 PYTHON_CFLAGS="-I$python_include" 9397 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs" 9398 elif $PKG_CONFIG --exists python-$python_version-embed; then 9399 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`" 9400 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs" 9401 elif $PKG_CONFIG --exists python-$python_version; then 9402 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`" 9403 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs" 9404 else 9405 PYTHON_CFLAGS="-I$python_include" 9406 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs" 9407 fi 9408 FilterLibs "${PYTHON_LIBS}" 9409 PYTHON_LIBS="${filteredlibs}" 9410 else 9411 dnl How to find out the cross-compilation Python installation path? 9412 AC_MSG_CHECKING([for python version]) 9413 AS_IF([test -n "$PYTHON_VERSION"], 9414 [AC_MSG_RESULT([$PYTHON_VERSION])], 9415 [AC_MSG_RESULT([not found]) 9416 AC_MSG_ERROR([no usable python found])]) 9417 test -n "$PYTHON_CFLAGS" && break 9418 fi 9419 9420 dnl Check if the headers really work 9421 save_CPPFLAGS="$CPPFLAGS" 9422 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS" 9423 AC_CHECK_HEADER(Python.h) 9424 CPPFLAGS="$save_CPPFLAGS" 9425 9426 # let the PYTHON_FOR_BUILD match the same python installation that 9427 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be 9428 # better for PythonTests. 9429 PYTHON_FOR_BUILD=$PYTHON 9430fi 9431 9432if test "$with_lxml" != no; then 9433 if test -z "$PYTHON_FOR_BUILD"; then 9434 case $build_os in 9435 cygwin) 9436 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids]) 9437 ;; 9438 *) 9439 if test "$cross_compiling" != yes ; then 9440 BUILD_TYPE="$BUILD_TYPE LXML" 9441 fi 9442 ;; 9443 esac 9444 else 9445 AC_MSG_CHECKING([for python lxml]) 9446 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then 9447 AC_MSG_RESULT([yes]) 9448 else 9449 case $build_os in 9450 cygwin) 9451 AC_MSG_RESULT([no, gla11y will only report widget classes and ids]) 9452 ;; 9453 *) 9454 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then 9455 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then 9456 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids]) 9457 else 9458 BUILD_TYPE="$BUILD_TYPE LXML" 9459 AC_MSG_RESULT([no, using internal lxml]) 9460 fi 9461 else 9462 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids]) 9463 fi 9464 ;; 9465 esac 9466 fi 9467 fi 9468fi 9469 9470dnl By now enable_python should be "system", "internal" or "no" 9471case $enable_python in 9472system) 9473 SYSTEM_PYTHON=TRUE 9474 9475 if test "x$ac_cv_header_Python_h" != "xyes"; then 9476 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.]) 9477 fi 9478 9479 AC_LANG_PUSH(C) 9480 CFLAGS="$CFLAGS $PYTHON_CFLAGS" 9481 AC_MSG_CHECKING([for correct python library version]) 9482 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 9483#include <Python.h> 9484 9485int main(int argc, char **argv) { 9486 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0; 9487 else return 1; 9488} 9489 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])]) 9490 AC_LANG_POP(C) 9491 9492 dnl FIXME Check if the Python library can be linked with, too? 9493 ;; 9494 9495internal) 9496 SYSTEM_PYTHON= 9497 PYTHON_VERSION_MAJOR=3 9498 PYTHON_VERSION_MINOR=8 9499 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.8 9500 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then 9501 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst]) 9502 fi 9503 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"]) 9504 BUILD_TYPE="$BUILD_TYPE PYTHON" 9505 if test "$OS" = LINUX -o "$OS" = WNT ; then 9506 BUILD_TYPE="$BUILD_TYPE LIBFFI" 9507 fi 9508 # Embedded Python dies without Home set 9509 if test "$HOME" = ""; then 9510 export HOME="" 9511 fi 9512 ;; 9513no) 9514 DISABLE_PYTHON=TRUE 9515 SYSTEM_PYTHON= 9516 ;; 9517*) 9518 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"]) 9519 ;; 9520esac 9521 9522AC_SUBST(DISABLE_PYTHON) 9523AC_SUBST(SYSTEM_PYTHON) 9524AC_SUBST(PYTHON_CFLAGS) 9525AC_SUBST(PYTHON_LIBS) 9526AC_SUBST(PYTHON_VERSION) 9527AC_SUBST(PYTHON_VERSION_MAJOR) 9528AC_SUBST(PYTHON_VERSION_MINOR) 9529 9530AC_MSG_CHECKING([whether to build LibreLogo]) 9531case "$enable_python" in 9532no|disable) 9533 AC_MSG_RESULT([no; Python disabled]) 9534 ;; 9535*) 9536 if test "${enable_librelogo}" = "no"; then 9537 AC_MSG_RESULT([no]) 9538 else 9539 AC_MSG_RESULT([yes]) 9540 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO" 9541 AC_DEFINE([ENABLE_LIBRELOGO],1) 9542 fi 9543 ;; 9544esac 9545AC_SUBST(ENABLE_LIBRELOGO) 9546 9547ENABLE_MARIADBC= 9548MARIADBC_MAJOR=1 9549MARIADBC_MINOR=0 9550MARIADBC_MICRO=2 9551AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver]) 9552if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then 9553 ENABLE_MARIADBC=TRUE 9554 AC_MSG_RESULT([yes]) 9555 BUILD_TYPE="$BUILD_TYPE MARIADBC" 9556else 9557 AC_MSG_RESULT([no]) 9558fi 9559AC_SUBST(ENABLE_MARIADBC) 9560AC_SUBST(MARIADBC_MAJOR) 9561AC_SUBST(MARIADBC_MINOR) 9562AC_SUBST(MARIADBC_MICRO) 9563 9564if test "$ENABLE_MARIADBC" = "TRUE"; then 9565 dnl =================================================================== 9566 dnl Check for system MariaDB 9567 dnl =================================================================== 9568 AC_MSG_CHECKING([which MariaDB to use]) 9569 if test "$with_system_mariadb" = "yes"; then 9570 AC_MSG_RESULT([external]) 9571 SYSTEM_MARIADB_CONNECTOR_C=TRUE 9572 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config]) 9573 if test -z "$MARIADBCONFIG"; then 9574 AC_PATH_PROG(MARIADBCONFIG, [mysql_config]) 9575 if test -z "$MARIADBCONFIG"; then 9576 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.]) 9577 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.]) 9578 fi 9579 fi 9580 AC_MSG_CHECKING([MariaDB version]) 9581 MARIADB_VERSION=`$MARIADBCONFIG --version` 9582 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1` 9583 if test "$MARIADB_MAJOR" -ge "5"; then 9584 AC_MSG_RESULT([OK]) 9585 else 9586 AC_MSG_ERROR([too old, use 5.0.x or later]) 9587 fi 9588 AC_MSG_CHECKING([for MariaDB Client library]) 9589 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags` 9590 if test "$COM_IS_CLANG" = TRUE; then 9591 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//) 9592 fi 9593 MARIADB_LIBS=`$MARIADBCONFIG --libs_r` 9594 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus 9595 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under 9596 dnl linux32: 9597 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then 9598 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//) 9599 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \ 9600 | sed -e 's|/lib64/|/lib/|') 9601 fi 9602 FilterLibs "${MARIADB_LIBS}" 9603 MARIADB_LIBS="${filteredlibs}" 9604 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS']) 9605 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library]) 9606 if test "$enable_bundle_mariadb" = "yes"; then 9607 AC_MSG_RESULT([yes]) 9608 BUNDLE_MARIADB_CONNECTOR_C=TRUE 9609 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\ 9610\1\ 9611/g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\ 9612\1\ 9613/g' | grep -E '(mysqlclient|mariadb)') 9614 if test "$_os" = "Darwin"; then 9615 LIBMARIADB=${LIBMARIADB}.dylib 9616 elif test "$_os" = "WINNT"; then 9617 LIBMARIADB=${LIBMARIADB}.dll 9618 else 9619 LIBMARIADB=${LIBMARIADB}.so 9620 fi 9621 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir) 9622 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH]) 9623 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then 9624 AC_MSG_RESULT([found.]) 9625 PathFormat "$LIBMARIADB_PATH" 9626 LIBMARIADB_PATH="$formatted_path" 9627 else 9628 AC_MSG_ERROR([not found.]) 9629 fi 9630 else 9631 AC_MSG_RESULT([no]) 9632 BUNDLE_MARIADB_CONNECTOR_C= 9633 fi 9634 else 9635 AC_MSG_RESULT([internal]) 9636 SYSTEM_MARIADB_CONNECTOR_C= 9637 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include" 9638 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c" 9639 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C" 9640 fi 9641 9642 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C) 9643 AC_SUBST(MARIADB_CFLAGS) 9644 AC_SUBST(MARIADB_LIBS) 9645 AC_SUBST(LIBMARIADB) 9646 AC_SUBST(LIBMARIADB_PATH) 9647 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C) 9648fi 9649 9650dnl =================================================================== 9651dnl Check for system hsqldb 9652dnl =================================================================== 9653if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then 9654 HSQLDB_USE_JDBC_4_1= 9655 AC_MSG_CHECKING([which hsqldb to use]) 9656 if test "$with_system_hsqldb" = "yes"; then 9657 AC_MSG_RESULT([external]) 9658 SYSTEM_HSQLDB=TRUE 9659 if test -z $HSQLDB_JAR; then 9660 HSQLDB_JAR=/usr/share/java/hsqldb.jar 9661 fi 9662 if ! test -f $HSQLDB_JAR; then 9663 AC_MSG_ERROR(hsqldb.jar not found.) 9664 fi 9665 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x]) 9666 export HSQLDB_JAR 9667 if $PERL -e \ 9668 'use Archive::Zip; 9669 my $file = "$ENV{'HSQLDB_JAR'}"; 9670 my $zip = Archive::Zip->new( $file ); 9671 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" ); 9672 if ( $mf =~ m/Specification-Version: 1.8.*/ ) 9673 { 9674 push @l, split(/\n/, $mf); 9675 foreach my $line (@l) 9676 { 9677 if ($line =~ m/Specification-Version:/) 9678 { 9679 ($t, $version) = split (/:/,$line); 9680 $version =~ s/^\s//; 9681 ($a, $b, $c, $d) = split (/\./,$version); 9682 if ($c == "0" && $d > "8") 9683 { 9684 exit 0; 9685 } 9686 else 9687 { 9688 exit 1; 9689 } 9690 } 9691 } 9692 } 9693 else 9694 { 9695 exit 1; 9696 }'; then 9697 AC_MSG_RESULT([yes]) 9698 else 9699 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1]) 9700 fi 9701 else 9702 AC_MSG_RESULT([internal]) 9703 SYSTEM_HSQLDB= 9704 BUILD_TYPE="$BUILD_TYPE HSQLDB" 9705 NEED_ANT=TRUE 9706 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1]) 9707 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk` 9708 if expr "$javanumver" '>=' 000100060000 > /dev/null; then 9709 AC_MSG_RESULT([yes]) 9710 HSQLDB_USE_JDBC_4_1=TRUE 9711 else 9712 AC_MSG_RESULT([no]) 9713 fi 9714 fi 9715else 9716 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then 9717 BUILD_TYPE="$BUILD_TYPE HSQLDB" 9718 fi 9719fi 9720AC_SUBST(SYSTEM_HSQLDB) 9721AC_SUBST(HSQLDB_JAR) 9722AC_SUBST([HSQLDB_USE_JDBC_4_1]) 9723 9724dnl =================================================================== 9725dnl Check for PostgreSQL stuff 9726dnl =================================================================== 9727AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver]) 9728if test "x$enable_postgresql_sdbc" != "xno"; then 9729 AC_MSG_RESULT([yes]) 9730 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC" 9731 9732 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then 9733 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.]) 9734 fi 9735 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then 9736 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.]) 9737 fi 9738 9739 postgres_interface="" 9740 if test "$with_system_postgresql" = "yes"; then 9741 postgres_interface="external PostgreSQL" 9742 SYSTEM_POSTGRESQL=TRUE 9743 if test "$_os" = Darwin; then 9744 supp_path='' 9745 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do 9746 pg_supp_path="$P_SEP$d$pg_supp_path" 9747 done 9748 fi 9749 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path) 9750 if test -n "$PGCONFIG"; then 9751 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir) 9752 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)" 9753 else 9754 PKG_CHECK_MODULES(POSTGRESQL, libpq, [ 9755 POSTGRESQL_INC=$POSTGRESQL_CFLAGS 9756 POSTGRESQL_LIB=$POSTGRESQL_LIBS 9757 ],[ 9758 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH]) 9759 ]) 9760 fi 9761 FilterLibs "${POSTGRESQL_LIB}" 9762 POSTGRESQL_LIB="${filteredlibs}" 9763 else 9764 # if/when anything else than PostgreSQL uses Kerberos, 9765 # move this out of `test "x$enable_postgresql_sdbc" != "xno"' 9766 WITH_KRB5= 9767 WITH_GSSAPI= 9768 case "$_os" in 9769 Darwin) 9770 # macOS has system MIT Kerberos 5 since 10.4 9771 if test "$with_krb5" != "no"; then 9772 WITH_KRB5=TRUE 9773 save_LIBS=$LIBS 9774 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely 9775 # that the libraries where these functions are located on macOS will change, is it? 9776 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9777 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) 9778 KRB5_LIBS=$LIBS 9779 LIBS=$save_LIBS 9780 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9781 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) 9782 KRB5_LIBS="$KRB5_LIBS $LIBS" 9783 LIBS=$save_LIBS 9784 fi 9785 if test "$with_gssapi" != "no"; then 9786 WITH_GSSAPI=TRUE 9787 save_LIBS=$LIBS 9788 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], 9789 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) 9790 GSSAPI_LIBS=$LIBS 9791 LIBS=$save_LIBS 9792 fi 9793 ;; 9794 WINNT) 9795 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then 9796 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.]) 9797 fi 9798 ;; 9799 Linux|GNU|*BSD|DragonFly) 9800 if test "$with_krb5" != "no"; then 9801 WITH_KRB5=TRUE 9802 save_LIBS=$LIBS 9803 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9804 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) 9805 KRB5_LIBS=$LIBS 9806 LIBS=$save_LIBS 9807 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9808 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) 9809 KRB5_LIBS="$KRB5_LIBS $LIBS" 9810 LIBS=$save_LIBS 9811 fi 9812 if test "$with_gssapi" != "no"; then 9813 WITH_GSSAPI=TRUE 9814 save_LIBS=$LIBS 9815 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], 9816 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) 9817 GSSAPI_LIBS=$LIBS 9818 LIBS=$save_LIBS 9819 fi 9820 ;; 9821 *) 9822 if test "$with_krb5" = "yes"; then 9823 WITH_KRB5=TRUE 9824 save_LIBS=$LIBS 9825 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9826 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])]) 9827 KRB5_LIBS=$LIBS 9828 LIBS=$save_LIBS 9829 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [], 9830 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])]) 9831 KRB5_LIBS="$KRB5_LIBS $LIBS" 9832 LIBS=$save_LIBS 9833 fi 9834 if test "$with_gssapi" = "yes"; then 9835 WITH_GSSAPI=TRUE 9836 save_LIBS=$LIBS 9837 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], 9838 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) 9839 LIBS=$save_LIBS 9840 GSSAPI_LIBS=$LIBS 9841 fi 9842 esac 9843 9844 if test -n "$with_libpq_path"; then 9845 SYSTEM_POSTGRESQL=TRUE 9846 postgres_interface="external libpq" 9847 POSTGRESQL_LIB="-L${with_libpq_path}/lib/" 9848 POSTGRESQL_INC=-I"${with_libpq_path}/include/" 9849 else 9850 SYSTEM_POSTGRESQL= 9851 postgres_interface="internal" 9852 POSTGRESQL_LIB="" 9853 POSTGRESQL_INC="%OVERRIDE_ME%" 9854 BUILD_TYPE="$BUILD_TYPE POSTGRESQL" 9855 fi 9856 fi 9857 9858 AC_MSG_CHECKING([PostgreSQL C interface]) 9859 AC_MSG_RESULT([$postgres_interface]) 9860 9861 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then 9862 AC_MSG_NOTICE([checking system PostgreSQL prerequisites]) 9863 save_CFLAGS=$CFLAGS 9864 save_CPPFLAGS=$CPPFLAGS 9865 save_LIBS=$LIBS 9866 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}" 9867 LIBS="${LIBS} ${POSTGRESQL_LIB}" 9868 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], []) 9869 AC_CHECK_LIB([pq], [PQconnectdbParams], [:], 9870 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], []) 9871 CFLAGS=$save_CFLAGS 9872 CPPFLAGS=$save_CPPFLAGS 9873 LIBS=$save_LIBS 9874 fi 9875 BUILD_POSTGRESQL_SDBC=TRUE 9876else 9877 AC_MSG_RESULT([no]) 9878fi 9879AC_SUBST(WITH_KRB5) 9880AC_SUBST(WITH_GSSAPI) 9881AC_SUBST(GSSAPI_LIBS) 9882AC_SUBST(KRB5_LIBS) 9883AC_SUBST(BUILD_POSTGRESQL_SDBC) 9884AC_SUBST(SYSTEM_POSTGRESQL) 9885AC_SUBST(POSTGRESQL_INC) 9886AC_SUBST(POSTGRESQL_LIB) 9887 9888dnl =================================================================== 9889dnl Check for Firebird stuff 9890dnl =================================================================== 9891ENABLE_FIREBIRD_SDBC= 9892if test "$enable_firebird_sdbc" = "yes" ; then 9893 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC" 9894 9895 dnl =================================================================== 9896 dnl Check for system Firebird 9897 dnl =================================================================== 9898 AC_MSG_CHECKING([which Firebird to use]) 9899 if test "$with_system_firebird" = "yes"; then 9900 AC_MSG_RESULT([external]) 9901 SYSTEM_FIREBIRD=TRUE 9902 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config]) 9903 if test -z "$FIREBIRDCONFIG"; then 9904 AC_MSG_NOTICE([No fb_config -- using pkg-config]) 9905 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [ 9906 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed]) 9907 ]) 9908 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"` 9909 else 9910 AC_MSG_NOTICE([fb_config found]) 9911 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version` 9912 AC_MSG_CHECKING([for Firebird Client library]) 9913 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags` 9914 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs` 9915 FilterLibs "${FIREBIRD_LIBS}" 9916 FIREBIRD_LIBS="${filteredlibs}" 9917 fi 9918 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS']) 9919 AC_MSG_CHECKING([Firebird version]) 9920 if test -n "${FIREBIRD_VERSION}"; then 9921 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1` 9922 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2` 9923 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then 9924 AC_MSG_RESULT([OK]) 9925 else 9926 AC_MSG_ERROR([Ensure firebird 3.0.x is installed]) 9927 fi 9928 else 9929 save_CFLAGS="${CFLAGS}" 9930 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}" 9931 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h> 9932#if defined(FB_API_VER) && FB_API_VER == 30 9933int fb_api_is_30(void) { return 0; } 9934#else 9935#error "Wrong Firebird API version" 9936#endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed])) 9937 CFLAGS="$save_CFLAGS" 9938 fi 9939 ENABLE_FIREBIRD_SDBC=TRUE 9940 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1) 9941 elif test "$enable_database_connectivity" != yes; then 9942 AC_MSG_RESULT([none]) 9943 elif test "$cross_compiling" = "yes"; then 9944 AC_MSG_RESULT([none]) 9945 else 9946 dnl Embedded Firebird has version 3.0 9947 AC_DEFINE(HAVE_FIREBIRD_30, 1) 9948 dnl We need libatomic_ops for any non X86/X64 system 9949 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then 9950 dnl =================================================================== 9951 dnl Check for system libatomic_ops 9952 dnl =================================================================== 9953 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2]) 9954 if test "$with_system_libatomic_ops" = "yes"; then 9955 SYSTEM_LIBATOMIC_OPS=TRUE 9956 AC_CHECK_HEADERS(atomic_ops.h, [], 9957 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], []) 9958 else 9959 SYSTEM_LIBATOMIC_OPS= 9960 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include" 9961 LIBATOMIC_OPS_LIBS="-latomic_ops" 9962 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS" 9963 fi 9964 fi 9965 9966 AC_MSG_RESULT([internal]) 9967 SYSTEM_FIREBIRD= 9968 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include" 9969 FIREBIRD_LIBS="-lfbclient" 9970 9971 if test "$with_system_libtommath" = "yes"; then 9972 SYSTEM_LIBTOMMATH=TRUE 9973 dnl check for tommath presence 9974 save_LIBS=$LIBS 9975 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package)) 9976 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package)) 9977 LIBS=$save_LIBS 9978 else 9979 SYSTEM_LIBTOMMATH= 9980 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath" 9981 LIBTOMMATH_LIBS="-ltommath" 9982 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH" 9983 fi 9984 9985 BUILD_TYPE="$BUILD_TYPE FIREBIRD" 9986 ENABLE_FIREBIRD_SDBC=TRUE 9987 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1) 9988 fi 9989fi 9990AC_SUBST(ENABLE_FIREBIRD_SDBC) 9991AC_SUBST(SYSTEM_LIBATOMIC_OPS) 9992AC_SUBST(LIBATOMIC_OPS_CFLAGS) 9993AC_SUBST(LIBATOMIC_OPS_LIBS) 9994AC_SUBST(SYSTEM_FIREBIRD) 9995AC_SUBST(FIREBIRD_CFLAGS) 9996AC_SUBST(FIREBIRD_LIBS) 9997AC_SUBST(SYSTEM_LIBTOMMATH) 9998AC_SUBST(LIBTOMMATH_CFLAGS) 9999AC_SUBST(LIBTOMMATH_LIBS) 10000 10001dnl =================================================================== 10002dnl Check for system curl 10003dnl =================================================================== 10004AC_MSG_CHECKING([which libcurl to use]) 10005if test "$with_system_curl" = "auto"; then 10006 with_system_curl="$with_system_libs" 10007fi 10008 10009if test "$with_system_curl" = "yes"; then 10010 AC_MSG_RESULT([external]) 10011 SYSTEM_CURL=TRUE 10012 10013 # First try PKGCONFIG and then fall back 10014 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:]) 10015 10016 if test -n "$CURL_PKG_ERRORS"; then 10017 AC_PATH_PROG(CURLCONFIG, curl-config) 10018 if test -z "$CURLCONFIG"; then 10019 AC_MSG_ERROR([curl development files not found]) 10020 fi 10021 CURL_LIBS=`$CURLCONFIG --libs` 10022 FilterLibs "${CURL_LIBS}" 10023 CURL_LIBS="${filteredlibs}" 10024 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g") 10025 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'` 10026 10027 AC_MSG_CHECKING([whether libcurl is >= 7.19.4]) 10028 case $curl_version in 10029 dnl brackets doubled below because Autoconf uses them as m4 quote characters, 10030 dnl so they need to be doubled to end up in the configure script 10031 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*) 10032 AC_MSG_RESULT([yes]) 10033 ;; 10034 *) 10035 AC_MSG_ERROR([no, you have $curl_version]) 10036 ;; 10037 esac 10038 fi 10039 10040 ENABLE_CURL=TRUE 10041else 10042 AC_MSG_RESULT([internal]) 10043 SYSTEM_CURL= 10044 BUILD_TYPE="$BUILD_TYPE CURL" 10045 ENABLE_CURL=TRUE 10046fi 10047AC_SUBST(SYSTEM_CURL) 10048AC_SUBST(CURL_CFLAGS) 10049AC_SUBST(CURL_LIBS) 10050AC_SUBST(ENABLE_CURL) 10051 10052dnl =================================================================== 10053dnl Check for system boost 10054dnl =================================================================== 10055AC_MSG_CHECKING([which boost to use]) 10056if test "$with_system_boost" = "yes"; then 10057 AC_MSG_RESULT([external]) 10058 SYSTEM_BOOST=TRUE 10059 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])]) 10060 AX_BOOST_DATE_TIME 10061 AX_BOOST_FILESYSTEM 10062 AX_BOOST_IOSTREAMS 10063 AX_BOOST_LOCALE 10064 AC_LANG_PUSH([C++]) 10065 save_CXXFLAGS=$CXXFLAGS 10066 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11" 10067 AC_CHECK_HEADER(boost/shared_ptr.hpp, [], 10068 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], []) 10069 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [], 10070 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], []) 10071 CXXFLAGS=$save_CXXFLAGS 10072 AC_LANG_POP([C++]) 10073 # this is in m4/ax_boost_base.m4 10074 FilterLibs "${BOOST_LDFLAGS}" 10075 BOOST_LDFLAGS="${filteredlibs}" 10076else 10077 AC_MSG_RESULT([internal]) 10078 BUILD_TYPE="$BUILD_TYPE BOOST" 10079 SYSTEM_BOOST= 10080 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then 10081 # use warning-suppressing wrapper headers 10082 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost" 10083 else 10084 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost" 10085 fi 10086fi 10087AC_SUBST(SYSTEM_BOOST) 10088 10089dnl =================================================================== 10090dnl Check for system mdds 10091dnl =================================================================== 10092libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"]) 10093 10094dnl =================================================================== 10095dnl Check for system glm 10096dnl =================================================================== 10097AC_MSG_CHECKING([which glm to use]) 10098if test "$with_system_glm" = "yes"; then 10099 AC_MSG_RESULT([external]) 10100 SYSTEM_GLM=TRUE 10101 AC_LANG_PUSH([C++]) 10102 AC_CHECK_HEADER([glm/glm.hpp], [], 10103 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], []) 10104 AC_LANG_POP([C++]) 10105else 10106 AC_MSG_RESULT([internal]) 10107 BUILD_TYPE="$BUILD_TYPE GLM" 10108 SYSTEM_GLM= 10109 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm" 10110fi 10111AC_SUBST([GLM_CFLAGS]) 10112AC_SUBST([SYSTEM_GLM]) 10113 10114dnl =================================================================== 10115dnl Check for system odbc 10116dnl =================================================================== 10117AC_MSG_CHECKING([which odbc headers to use]) 10118if test "$with_system_odbc" = "yes" -o '(' "$with_system_headers" = "yes" -a "$with_system_odbc" = "auto" ')' -o '(' "$_os" = "WINNT" -a "$with_system_odbc" != "no" ')'; then 10119 AC_MSG_RESULT([external]) 10120 SYSTEM_ODBC_HEADERS=TRUE 10121 10122 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then 10123 save_CPPFLAGS=$CPPFLAGS 10124 find_winsdk 10125 PathFormat "$winsdktest" 10126 CPPFLAGS="$CPPFLAGS -I$formatted_path/include/um -I$formatted_path/Include/$winsdklibsubdir/um -I$formatted_path/include -I$formatted_path/include/shared -I$formatted_path/include/$winsdklibsubdir/shared" 10127 AC_CHECK_HEADER(sqlext.h, [], 10128 [AC_MSG_ERROR(odbc not found. install odbc)], 10129 [#include <windows.h>]) 10130 CPPFLAGS=$save_CPPFLAGS 10131 else 10132 AC_CHECK_HEADER(sqlext.h, [], 10133 [AC_MSG_ERROR(odbc not found. install odbc)],[]) 10134 fi 10135elif test "$enable_database_connectivity" != yes; then 10136 AC_MSG_RESULT([none]) 10137else 10138 AC_MSG_RESULT([internal]) 10139 SYSTEM_ODBC_HEADERS= 10140fi 10141AC_SUBST(SYSTEM_ODBC_HEADERS) 10142 10143dnl =================================================================== 10144dnl Enable LDAP support 10145dnl =================================================================== 10146 10147if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then 10148AC_MSG_CHECKING([whether to enable LDAP support]) 10149 if test "$enable_ldap" != "yes"; then 10150 AC_MSG_RESULT([no]) 10151 ENABLE_LDAP="" 10152 enable_ldap=no 10153 else 10154 AC_MSG_RESULT([yes]) 10155 ENABLE_LDAP="TRUE" 10156 fi 10157fi 10158AC_SUBST(ENABLE_LDAP) 10159 10160dnl =================================================================== 10161dnl Check for system openldap 10162dnl =================================================================== 10163 10164if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then 10165AC_MSG_CHECKING([which openldap library to use]) 10166if test "$with_system_openldap" = "yes"; then 10167 AC_MSG_RESULT([external]) 10168 SYSTEM_OPENLDAP=TRUE 10169 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], []) 10170 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], []) 10171 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], []) 10172else 10173 AC_MSG_RESULT([internal]) 10174 SYSTEM_OPENLDAP= 10175 BUILD_TYPE="$BUILD_TYPE OPENLDAP" 10176fi 10177fi 10178AC_SUBST(SYSTEM_OPENLDAP) 10179 10180dnl =================================================================== 10181dnl Check for system NSS 10182dnl =================================================================== 10183if test "$enable_fuzzers" != "yes"; then 10184 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8]) 10185 AC_DEFINE(HAVE_FEATURE_NSS) 10186 ENABLE_NSS="TRUE" 10187 AC_DEFINE(ENABLE_NSS) 10188elif test $_os != iOS ; then 10189 with_tls=openssl 10190fi 10191AC_SUBST(ENABLE_NSS) 10192 10193dnl =================================================================== 10194dnl Check for TLS/SSL and cryptographic implementation to use 10195dnl =================================================================== 10196AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use]) 10197if test -n "$with_tls"; then 10198 case $with_tls in 10199 openssl) 10200 AC_DEFINE(USE_TLS_OPENSSL) 10201 TLS=OPENSSL 10202 AC_MSG_RESULT([$TLS]) 10203 10204 if test "$enable_openssl" != "yes"; then 10205 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."]) 10206 fi 10207 10208 # warn that OpenSSL has been selected but not all TLS code has this option 10209 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS]) 10210 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS" 10211 ;; 10212 nss) 10213 AC_DEFINE(USE_TLS_NSS) 10214 TLS=NSS 10215 AC_MSG_RESULT([$TLS]) 10216 ;; 10217 no) 10218 AC_MSG_RESULT([none]) 10219 AC_MSG_WARN([Skipping TLS/SSL]) 10220 ;; 10221 *) 10222 AC_MSG_RESULT([]) 10223 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are: 10224openssl - OpenSSL 10225nss - Mozilla's Network Security Services (NSS) 10226 ]) 10227 ;; 10228 esac 10229else 10230 # default to using NSS, it results in smaller oox lib 10231 AC_DEFINE(USE_TLS_NSS) 10232 TLS=NSS 10233 AC_MSG_RESULT([$TLS]) 10234fi 10235AC_SUBST(TLS) 10236 10237dnl =================================================================== 10238dnl Check for system sane 10239dnl =================================================================== 10240AC_MSG_CHECKING([which sane header to use]) 10241if test "$with_system_sane" = "yes"; then 10242 AC_MSG_RESULT([external]) 10243 AC_CHECK_HEADER(sane/sane.h, [], 10244 [AC_MSG_ERROR(sane not found. install sane)], []) 10245else 10246 AC_MSG_RESULT([internal]) 10247 BUILD_TYPE="$BUILD_TYPE SANE" 10248fi 10249 10250dnl =================================================================== 10251dnl Check for system icu 10252dnl =================================================================== 10253SYSTEM_GENBRK= 10254SYSTEM_GENCCODE= 10255SYSTEM_GENCMN= 10256 10257ICU_MAJOR=68 10258ICU_MINOR=1 10259ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE" 10260ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE" 10261ICU_RECLASSIFIED_HEBREW_LETTER="TRUE" 10262AC_MSG_CHECKING([which icu to use]) 10263if test "$with_system_icu" = "yes"; then 10264 AC_MSG_RESULT([external]) 10265 SYSTEM_ICU=TRUE 10266 AC_LANG_PUSH([C++]) 10267 AC_MSG_CHECKING([for unicode/rbbi.h]) 10268 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])]) 10269 AC_LANG_POP([C++]) 10270 10271 if test "$cross_compiling" != "yes"; then 10272 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6) 10273 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null` 10274 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1` 10275 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2` 10276 fi 10277 10278 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then 10279 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null` 10280 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1` 10281 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2` 10282 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible]) 10283 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then 10284 AC_MSG_RESULT([yes]) 10285 else 10286 AC_MSG_RESULT([no]) 10287 if test "$with_system_icu_for_build" != "force"; then 10288 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU. 10289You can use --with-system-icu-for-build=force to use it anyway.]) 10290 fi 10291 fi 10292 fi 10293 10294 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then 10295 # using the system icu tools can lead to version confusion, use the 10296 # ones from the build environment when cross-compiling 10297 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin]) 10298 if test -z "$SYSTEM_GENBRK"; then 10299 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\']) 10300 fi 10301 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin]) 10302 if test -z "$SYSTEM_GENCCODE"; then 10303 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\']) 10304 fi 10305 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin]) 10306 if test -z "$SYSTEM_GENCMN"; then 10307 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\']) 10308 fi 10309 if test "$ICU_MAJOR" -ge "49"; then 10310 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE" 10311 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE" 10312 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE" 10313 else 10314 ICU_RECLASSIFIED_PREPEND_SET_EMPTY= 10315 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER= 10316 ICU_RECLASSIFIED_HEBREW_LETTER= 10317 fi 10318 fi 10319 10320 if test "$cross_compiling" = "yes"; then 10321 if test "$ICU_MAJOR" -ge "50"; then 10322 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more]) 10323 ICU_MINOR="" 10324 fi 10325 fi 10326else 10327 AC_MSG_RESULT([internal]) 10328 SYSTEM_ICU= 10329 BUILD_TYPE="$BUILD_TYPE ICU" 10330 # surprisingly set these only for "internal" (to be used by various other 10331 # external libs): the system icu-config is quite unhelpful and spits out 10332 # dozens of weird flags and also default path -I/usr/include 10333 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common" 10334 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib" 10335fi 10336if test "$ICU_MAJOR" -ge "59"; then 10337 # As of ICU 59 it defaults to typedef char16_t UChar; which is available 10338 # with -std=c++11 but not all external libraries can be built with that, 10339 # for those use a bit-compatible typedef uint16_t UChar; see 10340 # icu/source/common/unicode/umachine.h 10341 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t" 10342else 10343 ICU_UCHAR_TYPE="" 10344fi 10345AC_SUBST(SYSTEM_ICU) 10346AC_SUBST(SYSTEM_GENBRK) 10347AC_SUBST(SYSTEM_GENCCODE) 10348AC_SUBST(SYSTEM_GENCMN) 10349AC_SUBST(ICU_MAJOR) 10350AC_SUBST(ICU_MINOR) 10351AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY) 10352AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER) 10353AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER) 10354AC_SUBST(ICU_CFLAGS) 10355AC_SUBST(ICU_LIBS) 10356AC_SUBST(ICU_UCHAR_TYPE) 10357 10358dnl ================================================================== 10359dnl Breakpad 10360dnl ================================================================== 10361DEFAULT_CRASHDUMP_VALUE="true" 10362AC_MSG_CHECKING([whether to enable breakpad]) 10363if test "$enable_breakpad" != yes; then 10364 AC_MSG_RESULT([no]) 10365else 10366 AC_MSG_RESULT([yes]) 10367 ENABLE_BREAKPAD="TRUE" 10368 AC_DEFINE(ENABLE_BREAKPAD) 10369 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1) 10370 BUILD_TYPE="$BUILD_TYPE BREAKPAD" 10371 10372 AC_MSG_CHECKING([for disable crash dump]) 10373 if test "$enable_crashdump" = no; then 10374 DEFAULT_CRASHDUMP_VALUE="false" 10375 AC_MSG_RESULT([yes]) 10376 else 10377 AC_MSG_RESULT([no]) 10378 fi 10379 10380 AC_MSG_CHECKING([for crashreport config]) 10381 if test "$with_symbol_config" = "no"; then 10382 BREAKPAD_SYMBOL_CONFIG="invalid" 10383 AC_MSG_RESULT([no]) 10384 else 10385 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config" 10386 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG) 10387 AC_MSG_RESULT([yes]) 10388 fi 10389 AC_SUBST(BREAKPAD_SYMBOL_CONFIG) 10390fi 10391AC_SUBST(ENABLE_BREAKPAD) 10392AC_SUBST(DEFAULT_CRASHDUMP_VALUE) 10393 10394dnl ================================================================== 10395dnl libfuzzer 10396dnl ================================================================== 10397AC_MSG_CHECKING([whether to enable fuzzers]) 10398if test "$enable_fuzzers" != yes; then 10399 AC_MSG_RESULT([no]) 10400else 10401 if test $LIB_FUZZING_ENGINE == ""; then 10402 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.]) 10403 fi 10404 AC_MSG_RESULT([yes]) 10405 ENABLE_FUZZERS="TRUE" 10406 AC_DEFINE([ENABLE_FUZZERS],1) 10407 BUILD_TYPE="$BUILD_TYPE FUZZERS" 10408fi 10409AC_SUBST(LIB_FUZZING_ENGINE) 10410AC_SUBST(ENABLE_FUZZERS) 10411 10412dnl =================================================================== 10413dnl Orcus 10414dnl =================================================================== 10415libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0]) 10416if test "$with_system_orcus" != "yes"; then 10417 if test "$SYSTEM_BOOST" = "TRUE"; then 10418 # =========================================================== 10419 # Determine if we are going to need to link with Boost.System 10420 # =========================================================== 10421 dnl This seems to be necessary since boost 1.50 (1.48 does not need it, 10422 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned 10423 dnl in documentation has no effect. 10424 AC_MSG_CHECKING([if we need to link with Boost.System]) 10425 AC_LANG_PUSH([C++]) 10426 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 10427 @%:@include <boost/version.hpp> 10428 ]],[[ 10429 #if BOOST_VERSION >= 105000 10430 # error yes, we need to link with Boost.System 10431 #endif 10432 ]])],[ 10433 AC_MSG_RESULT([no]) 10434 ],[ 10435 AC_MSG_RESULT([yes]) 10436 AX_BOOST_SYSTEM 10437 ]) 10438 AC_LANG_POP([C++]) 10439 fi 10440fi 10441dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world 10442SYSTEM_LIBORCUS=$SYSTEM_ORCUS 10443AC_SUBST([BOOST_SYSTEM_LIB]) 10444AC_SUBST(SYSTEM_LIBORCUS) 10445 10446dnl =================================================================== 10447dnl HarfBuzz 10448dnl =================================================================== 10449libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3], 10450 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"], 10451 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"]) 10452 10453libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42], 10454 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"], 10455 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"]) 10456 10457if test "$COM" = "MSC"; then # override the above 10458 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib" 10459 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib" 10460fi 10461 10462if test "$with_system_harfbuzz" = "yes"; then 10463 if test "$with_system_graphite" = "no"; then 10464 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used]) 10465 fi 10466 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support]) 10467 save_LIBS="$LIBS" 10468 save_CFLAGS="$CFLAGS" 10469 LIBS="$LIBS $HARFBUZZ_LIBS" 10470 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" 10471 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])]) 10472 LIBS="$save_LIBS" 10473 CFLAGS="$save_CFLAGS" 10474else 10475 if test "$with_system_graphite" = "yes"; then 10476 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used]) 10477 fi 10478fi 10479 10480AC_MSG_CHECKING([whether to use X11]) 10481dnl *************************************** 10482dnl testing for X libraries and includes... 10483dnl *************************************** 10484if test "$USING_X11" = TRUE; then 10485 AC_DEFINE(HAVE_FEATURE_X11) 10486fi 10487AC_MSG_RESULT([$USING_X11]) 10488 10489if test "$USING_X11" = TRUE; then 10490 AC_PATH_X 10491 AC_PATH_XTRA 10492 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 10493 10494 if test -z "$x_includes"; then 10495 x_includes="default_x_includes" 10496 fi 10497 if test -z "$x_libraries"; then 10498 x_libraries="default_x_libraries" 10499 fi 10500 CFLAGS="$CFLAGS $X_CFLAGS" 10501 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS" 10502 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])]) 10503else 10504 x_includes="no_x_includes" 10505 x_libraries="no_x_libraries" 10506fi 10507 10508if test "$USING_X11" = TRUE; then 10509 dnl =================================================================== 10510 dnl Check for extension headers 10511 dnl =================================================================== 10512 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])], 10513 [#include <X11/extensions/shape.h>]) 10514 10515 # vcl needs ICE and SM 10516 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])]) 10517 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:], 10518 [AC_MSG_ERROR(ICE library not found)]) 10519 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])]) 10520 AC_CHECK_LIB([SM], [SmcOpenConnection], [:], 10521 [AC_MSG_ERROR(SM library not found)]) 10522fi 10523 10524if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then 10525 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt 10526 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])]) 10527fi 10528 10529dnl =================================================================== 10530dnl Check for system Xrender 10531dnl =================================================================== 10532AC_MSG_CHECKING([whether to use Xrender]) 10533if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then 10534 AC_MSG_RESULT([yes]) 10535 PKG_CHECK_MODULES(XRENDER, xrender) 10536 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10537 FilterLibs "${XRENDER_LIBS}" 10538 XRENDER_LIBS="${filteredlibs}" 10539 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:], 10540 [AC_MSG_ERROR(libXrender not found or functional)], []) 10541 AC_CHECK_HEADER(X11/extensions/Xrender.h, [], 10542 [AC_MSG_ERROR(Xrender not found. install X)], []) 10543else 10544 AC_MSG_RESULT([no]) 10545fi 10546AC_SUBST(XRENDER_CFLAGS) 10547AC_SUBST(XRENDER_LIBS) 10548 10549dnl =================================================================== 10550dnl Check for XRandr 10551dnl =================================================================== 10552AC_MSG_CHECKING([whether to enable RandR support]) 10553if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then 10554 AC_MSG_RESULT([yes]) 10555 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="") 10556 if test "$ENABLE_RANDR" != "TRUE"; then 10557 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [], 10558 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], []) 10559 XRANDR_CFLAGS=" " 10560 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:], 10561 [ AC_MSG_ERROR(libXrandr not found or functional) ], []) 10562 XRANDR_LIBS="-lXrandr " 10563 ENABLE_RANDR="TRUE" 10564 fi 10565 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10566 FilterLibs "${XRANDR_LIBS}" 10567 XRANDR_LIBS="${filteredlibs}" 10568else 10569 ENABLE_RANDR="" 10570 AC_MSG_RESULT([no]) 10571fi 10572AC_SUBST(XRANDR_CFLAGS) 10573AC_SUBST(XRANDR_LIBS) 10574AC_SUBST(ENABLE_RANDR) 10575 10576if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then 10577 if test -z "$WITH_WEBDAV"; then 10578 WITH_WEBDAV="serf" 10579 fi 10580fi 10581if test $_os = iOS -o $_os = Android; then 10582 WITH_WEBDAV="no" 10583fi 10584AC_MSG_CHECKING([for webdav library]) 10585case "$WITH_WEBDAV" in 10586serf) 10587 AC_MSG_RESULT([serf]) 10588 # Check for system apr-util 10589 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1], 10590 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"], 10591 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"]) 10592 if test "$COM" = "MSC"; then 10593 APR_LIB_DIR="LibR" 10594 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD" 10595 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib" 10596 fi 10597 10598 # Check for system serf 10599 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"], 10600 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"]) 10601 if test "$COM" = "MSC"; then 10602 SERF_LIB_DIR="Release" 10603 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug" 10604 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib" 10605 fi 10606 ;; 10607neon) 10608 AC_MSG_RESULT([neon]) 10609 # Check for system neon 10610 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1]) 10611 if test "$with_system_neon" = "yes"; then 10612 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`" 10613 else 10614 NEON_VERSION=0311 10615 fi 10616 AC_SUBST(NEON_VERSION) 10617 ;; 10618*) 10619 AC_MSG_RESULT([none, disabled]) 10620 WITH_WEBDAV="" 10621 ;; 10622esac 10623AC_SUBST(WITH_WEBDAV) 10624 10625dnl =================================================================== 10626dnl Check for disabling cve_tests 10627dnl =================================================================== 10628AC_MSG_CHECKING([whether to execute CVE tests]) 10629# If not explicitly enabled or disabled, default 10630if test -z "$enable_cve_tests"; then 10631 case "$OS" in 10632 WNT) 10633 # Default cves off for Windows with its wild and wonderful 10634 # variety of AV software kicking in and panicking 10635 enable_cve_tests=no 10636 ;; 10637 *) 10638 # otherwise yes 10639 enable_cve_tests=yes 10640 ;; 10641 esac 10642fi 10643if test "$enable_cve_tests" = "no"; then 10644 AC_MSG_RESULT([no]) 10645 DISABLE_CVE_TESTS=TRUE 10646 AC_SUBST(DISABLE_CVE_TESTS) 10647else 10648 AC_MSG_RESULT([yes]) 10649fi 10650 10651dnl =================================================================== 10652dnl Check for enabling chart XShape tests 10653dnl =================================================================== 10654AC_MSG_CHECKING([whether to execute chart XShape tests]) 10655if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then 10656 AC_MSG_RESULT([yes]) 10657 ENABLE_CHART_TESTS=TRUE 10658 AC_SUBST(ENABLE_CHART_TESTS) 10659else 10660 AC_MSG_RESULT([no]) 10661fi 10662 10663dnl =================================================================== 10664dnl Check for system openssl 10665dnl =================================================================== 10666DISABLE_OPENSSL= 10667AC_MSG_CHECKING([whether to disable OpenSSL usage]) 10668if test "$enable_openssl" = "yes"; then 10669 AC_MSG_RESULT([no]) 10670 if test "$_os" = Darwin ; then 10671 # OpenSSL is deprecated when building for 10.7 or later. 10672 # 10673 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion 10674 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion 10675 10676 with_system_openssl=no 10677 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl]) 10678 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \ 10679 && test "$with_system_openssl" != "no"; then 10680 with_system_openssl=yes 10681 SYSTEM_OPENSSL=TRUE 10682 OPENSSL_CFLAGS= 10683 OPENSSL_LIBS="-lssl -lcrypto" 10684 else 10685 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl]) 10686 fi 10687 if test "$with_system_openssl" = "yes"; then 10688 AC_MSG_CHECKING([whether openssl supports SHA512]) 10689 AC_LANG_PUSH([C]) 10690 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[ 10691 SHA512_CTX context; 10692]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])]) 10693 AC_LANG_POP(C) 10694 fi 10695else 10696 AC_MSG_RESULT([yes]) 10697 DISABLE_OPENSSL=TRUE 10698 10699 # warn that although OpenSSL is disabled, system libraries may depend on it 10700 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies]) 10701 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies" 10702fi 10703 10704AC_SUBST([DISABLE_OPENSSL]) 10705 10706if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then 10707 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then 10708 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no]) 10709 enable_cipher_openssl_backend=no 10710 else 10711 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.]) 10712 fi 10713fi 10714AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h]) 10715ENABLE_CIPHER_OPENSSL_BACKEND= 10716if test "$enable_cipher_openssl_backend" = yes; then 10717 AC_MSG_RESULT([yes]) 10718 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE 10719else 10720 AC_MSG_RESULT([no]) 10721fi 10722AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND]) 10723 10724dnl =================================================================== 10725dnl Check for building gnutls 10726dnl =================================================================== 10727AC_MSG_CHECKING([whether to use gnutls]) 10728if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then 10729 AC_MSG_RESULT([yes]) 10730 AM_PATH_LIBGCRYPT() 10731 PKG_CHECK_MODULES(GNUTLS, [gnutls],, 10732 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not 10733 available in the system to use as replacement.]])) 10734 FilterLibs "${LIBGCRYPT_LIBS}" 10735 LIBGCRYPT_LIBS="${filteredlibs}" 10736else 10737 AC_MSG_RESULT([no]) 10738fi 10739 10740AC_SUBST([LIBGCRYPT_CFLAGS]) 10741AC_SUBST([LIBGCRYPT_LIBS]) 10742 10743dnl =================================================================== 10744dnl Check for system redland 10745dnl =================================================================== 10746dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base) 10747dnl raptor2: need at least 2.0.7 for CVE-2012-0037 10748libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7]) 10749if test "$with_system_redland" = "yes"; then 10750 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:], 10751 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], []) 10752else 10753 RAPTOR_MAJOR="0" 10754 RASQAL_MAJOR="3" 10755 REDLAND_MAJOR="0" 10756fi 10757AC_SUBST(RAPTOR_MAJOR) 10758AC_SUBST(RASQAL_MAJOR) 10759AC_SUBST(REDLAND_MAJOR) 10760 10761dnl =================================================================== 10762dnl Check for system hunspell 10763dnl =================================================================== 10764AC_MSG_CHECKING([which libhunspell to use]) 10765if test "$with_system_hunspell" = "yes"; then 10766 AC_MSG_RESULT([external]) 10767 SYSTEM_HUNSPELL=TRUE 10768 AC_LANG_PUSH([C++]) 10769 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" ) 10770 if test "$HUNSPELL_PC" != "TRUE"; then 10771 AC_CHECK_HEADER(hunspell.hxx, [], 10772 [ 10773 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ], 10774 [AC_MSG_ERROR(hunspell headers not found.)], []) 10775 ], []) 10776 AC_CHECK_LIB([hunspell], [main], [:], 10777 [ AC_MSG_ERROR(hunspell library not found.) ], []) 10778 HUNSPELL_LIBS=-lhunspell 10779 fi 10780 AC_LANG_POP([C++]) 10781 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10782 FilterLibs "${HUNSPELL_LIBS}" 10783 HUNSPELL_LIBS="${filteredlibs}" 10784else 10785 AC_MSG_RESULT([internal]) 10786 SYSTEM_HUNSPELL= 10787 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell" 10788 if test "$COM" = "MSC"; then 10789 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib" 10790 else 10791 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7" 10792 fi 10793 BUILD_TYPE="$BUILD_TYPE HUNSPELL" 10794fi 10795AC_SUBST(SYSTEM_HUNSPELL) 10796AC_SUBST(HUNSPELL_CFLAGS) 10797AC_SUBST(HUNSPELL_LIBS) 10798 10799dnl =================================================================== 10800dnl Check for system zxing 10801dnl =================================================================== 10802AC_MSG_CHECKING([whether to use zxing]) 10803if test "$enable_zxing" = "no"; then 10804 AC_MSG_RESULT([no]) 10805 ENABLE_ZXING= 10806 SYSTEM_ZXING= 10807else 10808 AC_MSG_RESULT([yes]) 10809 ENABLE_ZXING=TRUE 10810 AC_MSG_CHECKING([which libzxing to use]) 10811 if test "$with_system_zxing" = "yes"; then 10812 AC_MSG_RESULT([external]) 10813 SYSTEM_ZXING=TRUE 10814 AC_LANG_PUSH([C++]) 10815 AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [], 10816 [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>]) 10817 ZXING_CFLAGS=-I/usr/include/ZXing 10818 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing], 10819 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore], 10820 [ AC_MSG_ERROR(zxing C++ library not found.) ])], []) 10821 AC_LANG_POP([C++]) 10822 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10823 FilterLibs "${ZXING_LIBS}" 10824 ZXING_LIBS="${filteredlibs}" 10825 else 10826 AC_MSG_RESULT([internal]) 10827 SYSTEM_ZXING= 10828 BUILD_TYPE="$BUILD_TYPE ZXING" 10829 fi 10830 if test "$ENABLE_ZXING" = TRUE; then 10831 AC_DEFINE(ENABLE_ZXING) 10832 fi 10833fi 10834AC_SUBST(SYSTEM_ZXING) 10835AC_SUBST(ENABLE_ZXING) 10836AC_SUBST(ZXING_CFLAGS) 10837AC_SUBST(ZXING_LIBS) 10838 10839dnl =================================================================== 10840dnl Check for system box2d 10841dnl =================================================================== 10842AC_MSG_CHECKING([which box2d to use]) 10843if test "$with_system_box2d" = "yes"; then 10844 AC_MSG_RESULT([external]) 10845 SYSTEM_BOX2D=TRUE 10846 AC_LANG_PUSH([C++]) 10847 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'], 10848 [BOX2D_H_FOUND='FALSE']) 10849 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+ 10850 _BOX2D_LIB=box2d 10851 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>) 10852 else 10853 # fail this. there's no other alternative to check when we are here. 10854 AC_CHECK_HEADER([Box2D/Box2D.h], [], 10855 [AC_MSG_ERROR(box2d headers not found.)]) 10856 _BOX2D_LIB=Box2D 10857 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>) 10858 fi 10859 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:], 10860 [ AC_MSG_ERROR(box2d library not found.) ], []) 10861 BOX2D_LIBS=-l$_BOX2D_LIB 10862 AC_LANG_POP([C++]) 10863 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10864 FilterLibs "${BOX2D_LIBS}" 10865 BOX2D_LIBS="${filteredlibs}" 10866else 10867 AC_MSG_RESULT([internal]) 10868 SYSTEM_BOX2D= 10869 BUILD_TYPE="$BUILD_TYPE BOX2D" 10870fi 10871AC_SUBST(SYSTEM_BOX2D) 10872AC_SUBST(BOX2D_CFLAGS) 10873AC_SUBST(BOX2D_LIBS) 10874 10875dnl =================================================================== 10876dnl Checking for altlinuxhyph 10877dnl =================================================================== 10878AC_MSG_CHECKING([which altlinuxhyph to use]) 10879if test "$with_system_altlinuxhyph" = "yes"; then 10880 AC_MSG_RESULT([external]) 10881 SYSTEM_HYPH=TRUE 10882 AC_CHECK_HEADER(hyphen.h, [], 10883 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], []) 10884 AC_CHECK_MEMBER(struct _HyphenDict.cset, [], 10885 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)], 10886 [#include <hyphen.h>]) 10887 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen], 10888 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], []) 10889 if test -z "$HYPHEN_LIB"; then 10890 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph], 10891 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], []) 10892 fi 10893 if test -z "$HYPHEN_LIB"; then 10894 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj], 10895 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], []) 10896 fi 10897else 10898 AC_MSG_RESULT([internal]) 10899 SYSTEM_HYPH= 10900 BUILD_TYPE="$BUILD_TYPE HYPHEN" 10901 if test "$COM" = "MSC"; then 10902 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib" 10903 else 10904 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen" 10905 fi 10906fi 10907AC_SUBST(SYSTEM_HYPH) 10908AC_SUBST(HYPHEN_LIB) 10909 10910dnl =================================================================== 10911dnl Checking for mythes 10912dnl =================================================================== 10913AC_MSG_CHECKING([which mythes to use]) 10914if test "$with_system_mythes" = "yes"; then 10915 AC_MSG_RESULT([external]) 10916 SYSTEM_MYTHES=TRUE 10917 AC_LANG_PUSH([C++]) 10918 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no) 10919 if test "$MYTHES_PKGCONFIG" = "no"; then 10920 AC_CHECK_HEADER(mythes.hxx, [], 10921 [ AC_MSG_ERROR(mythes.hxx headers not found.)], []) 10922 AC_CHECK_LIB([mythes-1.2], [main], [:], 10923 [ MYTHES_FOUND=no], []) 10924 if test "$MYTHES_FOUND" = "no"; then 10925 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes], 10926 [ MYTHES_FOUND=no], []) 10927 fi 10928 if test "$MYTHES_FOUND" = "no"; then 10929 AC_MSG_ERROR([mythes library not found!.]) 10930 fi 10931 fi 10932 AC_LANG_POP([C++]) 10933 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 10934 FilterLibs "${MYTHES_LIBS}" 10935 MYTHES_LIBS="${filteredlibs}" 10936else 10937 AC_MSG_RESULT([internal]) 10938 SYSTEM_MYTHES= 10939 BUILD_TYPE="$BUILD_TYPE MYTHES" 10940 if test "$COM" = "MSC"; then 10941 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib" 10942 else 10943 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2" 10944 fi 10945fi 10946AC_SUBST(SYSTEM_MYTHES) 10947AC_SUBST(MYTHES_CFLAGS) 10948AC_SUBST(MYTHES_LIBS) 10949 10950dnl =================================================================== 10951dnl How should we build the linear programming solver ? 10952dnl =================================================================== 10953 10954ENABLE_COINMP= 10955AC_MSG_CHECKING([whether to build with CoinMP]) 10956if test "$enable_coinmp" != "no"; then 10957 ENABLE_COINMP=TRUE 10958 AC_MSG_RESULT([yes]) 10959 if test "$with_system_coinmp" = "yes"; then 10960 SYSTEM_COINMP=TRUE 10961 PKG_CHECK_MODULES(COINMP, coinmp coinutils) 10962 FilterLibs "${COINMP_LIBS}" 10963 COINMP_LIBS="${filteredlibs}" 10964 else 10965 BUILD_TYPE="$BUILD_TYPE COINMP" 10966 fi 10967else 10968 AC_MSG_RESULT([no]) 10969fi 10970AC_SUBST(ENABLE_COINMP) 10971AC_SUBST(SYSTEM_COINMP) 10972AC_SUBST(COINMP_CFLAGS) 10973AC_SUBST(COINMP_LIBS) 10974 10975ENABLE_LPSOLVE= 10976AC_MSG_CHECKING([whether to build with lpsolve]) 10977if test "$enable_lpsolve" != "no"; then 10978 ENABLE_LPSOLVE=TRUE 10979 AC_MSG_RESULT([yes]) 10980else 10981 AC_MSG_RESULT([no]) 10982fi 10983AC_SUBST(ENABLE_LPSOLVE) 10984 10985if test "$ENABLE_LPSOLVE" = TRUE; then 10986 AC_MSG_CHECKING([which lpsolve to use]) 10987 if test "$with_system_lpsolve" = "yes"; then 10988 AC_MSG_RESULT([external]) 10989 SYSTEM_LPSOLVE=TRUE 10990 AC_CHECK_HEADER(lpsolve/lp_lib.h, [], 10991 [ AC_MSG_ERROR(lpsolve headers not found.)], []) 10992 save_LIBS=$LIBS 10993 # some systems need this. Like Ubuntu... 10994 AC_CHECK_LIB(m, floor) 10995 AC_CHECK_LIB(dl, dlopen) 10996 AC_CHECK_LIB([lpsolve55], [make_lp], [:], 10997 [ AC_MSG_ERROR(lpsolve library not found or too old.)], []) 10998 LIBS=$save_LIBS 10999 else 11000 AC_MSG_RESULT([internal]) 11001 SYSTEM_LPSOLVE= 11002 BUILD_TYPE="$BUILD_TYPE LPSOLVE" 11003 fi 11004fi 11005AC_SUBST(SYSTEM_LPSOLVE) 11006 11007dnl =================================================================== 11008dnl Checking for libexttextcat 11009dnl =================================================================== 11010libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1]) 11011if test "$with_system_libexttextcat" = "yes"; then 11012 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat` 11013fi 11014AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA) 11015 11016dnl =================================================================== 11017dnl Checking for libnumbertext 11018dnl =================================================================== 11019libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6]) 11020if test "$with_system_libnumbertext" = "yes"; then 11021 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext` 11022 SYSTEM_LIBNUMBERTEXT=YES 11023else 11024 SYSTEM_LIBNUMBERTEXT= 11025 AC_LANG_PUSH([C++]) 11026 save_CPPFLAGS=$CPPFLAGS 11027 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11" 11028 AC_CHECK_HEADERS([codecvt regex]) 11029 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes], 11030 [ LIBNUMBERTEXT_CFLAGS='' 11031 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9). 11032 Enable libnumbertext fallback (missing number to number name conversion).]) 11033 ]) 11034 CPPFLAGS=$save_CPPFLAGS 11035 AC_LANG_POP([C++]) 11036fi 11037AC_SUBST(SYSTEM_LIBNUMBERTEXT) 11038AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA) 11039AC_SUBST(LIBNUMBERTEXT_CFLAGS) 11040 11041dnl *************************************** 11042dnl testing libc version for Linux... 11043dnl *************************************** 11044if test "$_os" = "Linux"; then 11045 AC_MSG_CHECKING([whether libc is >= 2.1.1]) 11046 exec 6>/dev/null # no output 11047 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC) 11048 exec 6>&1 # output on again 11049 if test "$HAVE_LIBC"; then 11050 AC_MSG_RESULT([yes]) 11051 else 11052 AC_MSG_ERROR([no, upgrade libc]) 11053 fi 11054fi 11055 11056dnl ========================================= 11057dnl Check for uuidgen 11058dnl ========================================= 11059if test "$_os" = "WINNT"; then 11060 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in 11061 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check. 11062 UUIDGEN=uuidgen.exe 11063 AC_SUBST(UUIDGEN) 11064else 11065 AC_PATH_PROG([UUIDGEN], [uuidgen]) 11066 if test -z "$UUIDGEN"; then 11067 AC_MSG_WARN([uuid is needed for building installation sets]) 11068 fi 11069fi 11070 11071dnl *************************************** 11072dnl Checking for bison and flex 11073dnl *************************************** 11074AC_PATH_PROG(BISON, bison) 11075if test -z "$BISON"; then 11076 AC_MSG_ERROR([no bison found in \$PATH, install it]) 11077else 11078 AC_MSG_CHECKING([the bison version]) 11079 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'` 11080 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'` 11081 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and 11082 dnl cause 11083 dnl 11084 dnl idlc/source/parser.y:222:15: error: externally available entity 'YYSTYPE' is not previously declared in an included file (if it is only used in this translation unit, put it in an unnamed namespace; otherwise, provide a declaration of it in an included file) [loplugin:external] 11085 dnl typedef union YYSTYPE 11086 dnl ~~~~~~^~~~~~~ 11087 dnl 11088 dnl while at least 3.4.1 is know to be good: 11089 if test "$COMPILER_PLUGINS" = TRUE; then 11090 if test "$_bison_longver" -lt 2004; then 11091 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)]) 11092 fi 11093 else 11094 if test "$_bison_longver" -lt 2000; then 11095 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)]) 11096 fi 11097 fi 11098fi 11099AC_SUBST([BISON]) 11100 11101AC_PATH_PROG(FLEX, flex) 11102if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 11103 FLEX=`cygpath -m $FLEX` 11104fi 11105if test -z "$FLEX"; then 11106 AC_MSG_ERROR([no flex found in \$PATH, install it]) 11107else 11108 AC_MSG_CHECKING([the flex version]) 11109 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/') 11110 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then 11111 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)]) 11112 fi 11113fi 11114AC_SUBST([FLEX]) 11115dnl *************************************** 11116dnl Checking for patch 11117dnl *************************************** 11118AC_PATH_PROG(PATCH, patch) 11119if test -z "$PATCH"; then 11120 AC_MSG_ERROR(["patch" not found in \$PATH, install it]) 11121fi 11122 11123dnl On Solaris or macOS, check if --with-gnu-patch was used 11124if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then 11125 if test -z "$with_gnu_patch"; then 11126 GNUPATCH=$PATCH 11127 else 11128 if test -x "$with_gnu_patch"; then 11129 GNUPATCH=$with_gnu_patch 11130 else 11131 AC_MSG_ERROR([--with-gnu-patch did not point to an executable]) 11132 fi 11133 fi 11134 11135 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch]) 11136 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then 11137 AC_MSG_RESULT([yes]) 11138 else 11139 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it]) 11140 fi 11141else 11142 GNUPATCH=$PATCH 11143fi 11144 11145if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 11146 GNUPATCH=`cygpath -m $GNUPATCH` 11147fi 11148 11149dnl We also need to check for --with-gnu-cp 11150 11151if test -z "$with_gnu_cp"; then 11152 # check the place where the good stuff is hidden on Solaris... 11153 if test -x /usr/gnu/bin/cp; then 11154 GNUCP=/usr/gnu/bin/cp 11155 else 11156 AC_PATH_PROGS(GNUCP, gnucp cp) 11157 fi 11158 if test -z $GNUCP; then 11159 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it]) 11160 fi 11161else 11162 if test -x "$with_gnu_cp"; then 11163 GNUCP=$with_gnu_cp 11164 else 11165 AC_MSG_ERROR([--with-gnu-cp did not point to an executable]) 11166 fi 11167fi 11168 11169if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 11170 GNUCP=`cygpath -m $GNUCP` 11171fi 11172 11173AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support]) 11174if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then 11175 AC_MSG_RESULT([yes]) 11176elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then 11177 AC_MSG_RESULT([yes]) 11178else 11179 case "$build_os" in 11180 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*) 11181 x_GNUCP=[\#] 11182 GNUCP='' 11183 AC_MSG_RESULT([no gnucp found - using the system's cp command]) 11184 ;; 11185 *) 11186 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it]) 11187 ;; 11188 esac 11189fi 11190 11191AC_SUBST(GNUPATCH) 11192AC_SUBST(GNUCP) 11193AC_SUBST(x_GNUCP) 11194 11195dnl *************************************** 11196dnl testing assembler path 11197dnl *************************************** 11198ML_EXE="" 11199if test "$_os" = "WINNT"; then 11200 case "$WIN_HOST_ARCH" in 11201 x86) assembler=ml.exe ;; 11202 x64) assembler=ml64.exe ;; 11203 arm64) assembler=armasm64.exe ;; 11204 esac 11205 11206 AC_MSG_CHECKING([for the MSVC assembler ($assembler)]) 11207 if test -f "$MSVC_HOST_PATH/$assembler"; then 11208 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"` 11209 AC_MSG_RESULT([$ML_EXE]) 11210 else 11211 AC_MSG_ERROR([not found in $MSVC_HOST_PATH]) 11212 fi 11213fi 11214 11215AC_SUBST(ML_EXE) 11216 11217dnl =================================================================== 11218dnl We need zip and unzip 11219dnl =================================================================== 11220AC_PATH_PROG(ZIP, zip) 11221test -z "$ZIP" && AC_MSG_ERROR([zip is required]) 11222if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then 11223 AC_MSG_ERROR([Zip version 3.0 or newer is required to build, please install it and make sure it is the one found first in PATH],,) 11224fi 11225 11226AC_PATH_PROG(UNZIP, unzip) 11227test -z "$UNZIP" && AC_MSG_ERROR([unzip is required]) 11228 11229dnl =================================================================== 11230dnl Zip must be a specific type for different build types. 11231dnl =================================================================== 11232if test $build_os = cygwin; then 11233 if test -n "`$ZIP -h | $GREP -i WinNT`"; then 11234 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.]) 11235 fi 11236fi 11237 11238dnl =================================================================== 11239dnl We need touch with -h option support. 11240dnl =================================================================== 11241AC_PATH_PROG(TOUCH, touch) 11242test -z "$TOUCH" && AC_MSG_ERROR([touch is required]) 11243touch warn 11244if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then 11245 AC_MSG_ERROR([touch version with -h option support is required to build, please install it and make sure it is the one found first in PATH],,) 11246fi 11247 11248dnl =================================================================== 11249dnl Check for system epoxy 11250dnl =================================================================== 11251libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"]) 11252 11253dnl =================================================================== 11254dnl Set vcl option: coordinate device in double or sal_Int32 11255dnl =================================================================== 11256 11257dnl disabled for now, we don't want subtle differences between OSs 11258dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates]) 11259dnl if test "$_os" = "Darwin" -o $_os = iOS ; then 11260dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL) 11261dnl AC_MSG_RESULT([double]) 11262dnl else 11263dnl AC_MSG_RESULT([sal_Int32]) 11264dnl fi 11265 11266dnl =================================================================== 11267dnl Test which vclplugs have to be built. 11268dnl =================================================================== 11269R="" 11270if test "$USING_X11" != TRUE; then 11271 enable_gtk3=no 11272fi 11273 11274ENABLE_GTK3="" 11275if test "x$enable_gtk3" = "xyes"; then 11276 ENABLE_GTK3="TRUE" 11277 AC_DEFINE(ENABLE_GTK3) 11278 R="$R gtk3" 11279fi 11280AC_SUBST(ENABLE_GTK3) 11281 11282ENABLE_GTK3_KDE5="" 11283if test "x$enable_gtk3_kde5" = "xyes"; then 11284 ENABLE_GTK3_KDE5="TRUE" 11285 AC_DEFINE(ENABLE_GTK3_KDE5) 11286 R="$R gtk3_kde5" 11287fi 11288AC_SUBST(ENABLE_GTK3_KDE5) 11289 11290ENABLE_QT5="" 11291if test "x$enable_qt5" = "xyes"; then 11292 ENABLE_QT5="TRUE" 11293 AC_DEFINE(ENABLE_QT5) 11294 R="$R qt5" 11295fi 11296AC_SUBST(ENABLE_QT5) 11297 11298ENABLE_KF5="" 11299if test "x$enable_kf5" = "xyes"; then 11300 ENABLE_KF5="TRUE" 11301 AC_DEFINE(ENABLE_KF5) 11302 R="$R kf5" 11303fi 11304AC_SUBST(ENABLE_KF5) 11305 11306GTK3_CFLAGS="" 11307GTK3_LIBS="" 11308if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then 11309 if test "$with_system_cairo" = no; then 11310 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.' 11311 fi 11312 : ${with_system_cairo:=yes} 11313 PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo) 11314 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 11315 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" 11316 FilterLibs "${GTK3_LIBS}" 11317 GTK3_LIBS="${filteredlibs}" 11318 11319 dnl We require egl only for the gtk3 plugin. Otherwise we use glx. 11320 if test "$with_system_epoxy" != "yes"; then 11321 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.])) 11322 AC_CHECK_HEADER(EGL/eglplatform.h, [], 11323 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], []) 11324 fi 11325fi 11326AC_SUBST(GTK3_LIBS) 11327AC_SUBST(GTK3_CFLAGS) 11328 11329if test "$enable_introspection" = yes; then 11330 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then 11331 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION) 11332 else 11333 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3]) 11334 fi 11335fi 11336 11337if test "$_os" = "WINNT"; then 11338 R="$R win" 11339elif test "$_os" = "Darwin"; then 11340 R="$R osx" 11341elif test "$_os" = "iOS"; then 11342 R="ios (builtin)" 11343fi 11344 11345build_vcl_plugins="$R" 11346if test -z "$build_vcl_plugins"; then 11347 build_vcl_plugins="none" 11348fi 11349AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins]) 11350 11351dnl =================================================================== 11352dnl check for dbus support 11353dnl =================================================================== 11354ENABLE_DBUS="" 11355DBUS_CFLAGS="" 11356DBUS_LIBS="" 11357DBUS_GLIB_CFLAGS="" 11358DBUS_GLIB_LIBS="" 11359DBUS_HAVE_GLIB="" 11360 11361if test "$enable_dbus" = "no"; then 11362 test_dbus=no 11363fi 11364 11365AC_MSG_CHECKING([whether to enable DBUS support]) 11366if test "$test_dbus" = "yes"; then 11367 ENABLE_DBUS="TRUE" 11368 AC_MSG_RESULT([yes]) 11369 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60) 11370 AC_DEFINE(ENABLE_DBUS) 11371 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 11372 FilterLibs "${DBUS_LIBS}" 11373 DBUS_LIBS="${filteredlibs}" 11374 11375 # Glib is needed for BluetoothServer 11376 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful. 11377 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4], 11378 [ 11379 DBUS_HAVE_GLIB="TRUE" 11380 AC_DEFINE(DBUS_HAVE_GLIB,1) 11381 ], 11382 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]]) 11383 ) 11384else 11385 AC_MSG_RESULT([no]) 11386fi 11387 11388AC_SUBST(ENABLE_DBUS) 11389AC_SUBST(DBUS_CFLAGS) 11390AC_SUBST(DBUS_LIBS) 11391AC_SUBST(DBUS_GLIB_CFLAGS) 11392AC_SUBST(DBUS_GLIB_LIBS) 11393AC_SUBST(DBUS_HAVE_GLIB) 11394 11395AC_MSG_CHECKING([whether to enable Impress remote control]) 11396if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then 11397 AC_MSG_RESULT([yes]) 11398 ENABLE_SDREMOTE=TRUE 11399 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control]) 11400 11401 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then 11402 # The Bluetooth code doesn't compile with macOS SDK 10.15 11403 if test "$enable_sdremote_bluetooth" = yes; then 11404 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth]) 11405 fi 11406 enable_sdremote_bluetooth=no 11407 fi 11408 # If not explicitly enabled or disabled, default 11409 if test -z "$enable_sdremote_bluetooth"; then 11410 case "$OS" in 11411 LINUX|MACOSX|WNT) 11412 # Default to yes for these 11413 enable_sdremote_bluetooth=yes 11414 ;; 11415 *) 11416 # otherwise no 11417 enable_sdremote_bluetooth=no 11418 ;; 11419 esac 11420 fi 11421 # $enable_sdremote_bluetooth is guaranteed non-empty now 11422 11423 if test "$enable_sdremote_bluetooth" != "no"; then 11424 if test "$OS" = "LINUX"; then 11425 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then 11426 AC_MSG_RESULT([yes]) 11427 ENABLE_SDREMOTE_BLUETOOTH=TRUE 11428 dnl =================================================================== 11429 dnl Check for system bluez 11430 dnl =================================================================== 11431 AC_MSG_CHECKING([which Bluetooth header to use]) 11432 if test "$with_system_bluez" = "yes"; then 11433 AC_MSG_RESULT([external]) 11434 AC_CHECK_HEADER(bluetooth/bluetooth.h, [], 11435 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], []) 11436 SYSTEM_BLUEZ=TRUE 11437 else 11438 AC_MSG_RESULT([internal]) 11439 SYSTEM_BLUEZ= 11440 fi 11441 else 11442 AC_MSG_RESULT([no, dbus disabled]) 11443 ENABLE_SDREMOTE_BLUETOOTH= 11444 SYSTEM_BLUEZ= 11445 fi 11446 else 11447 AC_MSG_RESULT([yes]) 11448 ENABLE_SDREMOTE_BLUETOOTH=TRUE 11449 SYSTEM_BLUEZ= 11450 fi 11451 else 11452 AC_MSG_RESULT([no]) 11453 ENABLE_SDREMOTE_BLUETOOTH= 11454 SYSTEM_BLUEZ= 11455 fi 11456else 11457 ENABLE_SDREMOTE= 11458 SYSTEM_BLUEZ= 11459 AC_MSG_RESULT([no]) 11460fi 11461AC_SUBST(ENABLE_SDREMOTE) 11462AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH) 11463AC_SUBST(SYSTEM_BLUEZ) 11464 11465dnl =================================================================== 11466dnl Check whether to enable GIO support 11467dnl =================================================================== 11468if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then 11469 AC_MSG_CHECKING([whether to enable GIO support]) 11470 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then 11471 dnl Need at least 2.26 for the dbus support. 11472 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26], 11473 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""]) 11474 if test "$ENABLE_GIO" = "TRUE"; then 11475 AC_DEFINE(ENABLE_GIO) 11476 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 11477 FilterLibs "${GIO_LIBS}" 11478 GIO_LIBS="${filteredlibs}" 11479 fi 11480 else 11481 AC_MSG_RESULT([no]) 11482 fi 11483fi 11484AC_SUBST(ENABLE_GIO) 11485AC_SUBST(GIO_CFLAGS) 11486AC_SUBST(GIO_LIBS) 11487 11488 11489dnl =================================================================== 11490 11491SPLIT_APP_MODULES="" 11492if test "$enable_split_app_modules" = "yes"; then 11493 SPLIT_APP_MODULES="TRUE" 11494fi 11495AC_SUBST(SPLIT_APP_MODULES) 11496 11497SPLIT_OPT_FEATURES="" 11498if test "$enable_split_opt_features" = "yes"; then 11499 SPLIT_OPT_FEATURES="TRUE" 11500fi 11501AC_SUBST(SPLIT_OPT_FEATURES) 11502 11503if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then 11504 if test "$enable_cairo_canvas" = yes; then 11505 AC_MSG_ERROR([The cairo canvas should not be used for this platform]) 11506 fi 11507 enable_cairo_canvas=no 11508elif test -z "$enable_cairo_canvas"; then 11509 enable_cairo_canvas=yes 11510fi 11511 11512ENABLE_CAIRO_CANVAS="" 11513if test "$enable_cairo_canvas" = "yes"; then 11514 test_cairo=yes 11515 ENABLE_CAIRO_CANVAS="TRUE" 11516 AC_DEFINE(ENABLE_CAIRO_CANVAS) 11517fi 11518AC_SUBST(ENABLE_CAIRO_CANVAS) 11519 11520dnl =================================================================== 11521dnl Check whether the GStreamer libraries are available. 11522dnl =================================================================== 11523 11524ENABLE_GSTREAMER_1_0="" 11525 11526if test "$build_gstreamer_1_0" = "yes"; then 11527 11528 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend]) 11529 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then 11530 ENABLE_GSTREAMER_1_0="TRUE" 11531 AC_MSG_RESULT([yes]) 11532 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] ) 11533 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 11534 FilterLibs "${GSTREAMER_1_0_LIBS}" 11535 GSTREAMER_1_0_LIBS="${filteredlibs}" 11536 AC_DEFINE(ENABLE_GSTREAMER_1_0) 11537 else 11538 AC_MSG_RESULT([no]) 11539 fi 11540fi 11541AC_SUBST(GSTREAMER_1_0_CFLAGS) 11542AC_SUBST(GSTREAMER_1_0_LIBS) 11543AC_SUBST(ENABLE_GSTREAMER_1_0) 11544 11545ENABLE_OPENGL_TRANSITIONS= 11546ENABLE_OPENGL_CANVAS= 11547if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then 11548 : # disable 11549elif test "$_os" = "Darwin"; then 11550 # We use frameworks on macOS, no need for detail checks 11551 ENABLE_OPENGL_TRANSITIONS=TRUE 11552 AC_DEFINE(HAVE_FEATURE_OPENGL,1) 11553 ENABLE_OPENGL_CANVAS=TRUE 11554elif test $_os = WINNT; then 11555 ENABLE_OPENGL_TRANSITIONS=TRUE 11556 AC_DEFINE(HAVE_FEATURE_OPENGL,1) 11557 ENABLE_OPENGL_CANVAS=TRUE 11558else 11559 if test "$USING_X11" = TRUE; then 11560 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.])) 11561 ENABLE_OPENGL_TRANSITIONS=TRUE 11562 AC_DEFINE(HAVE_FEATURE_OPENGL,1) 11563 ENABLE_OPENGL_CANVAS=TRUE 11564 fi 11565fi 11566 11567AC_SUBST(ENABLE_OPENGL_TRANSITIONS) 11568AC_SUBST(ENABLE_OPENGL_CANVAS) 11569 11570dnl ================================================= 11571dnl Check whether to build with OpenCL support. 11572dnl ================================================= 11573 11574if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then 11575 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the 11576 # platform (optional at run-time, used through clew). 11577 BUILD_TYPE="$BUILD_TYPE OPENCL" 11578 AC_DEFINE(HAVE_FEATURE_OPENCL) 11579fi 11580 11581dnl ================================================= 11582dnl Check whether to build with dconf support. 11583dnl ================================================= 11584 11585if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then 11586 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [ 11587 if test "$enable_dconf" = yes; then 11588 AC_MSG_ERROR([dconf not found]) 11589 else 11590 enable_dconf=no 11591 fi]) 11592fi 11593AC_MSG_CHECKING([whether to enable dconf]) 11594if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then 11595 DCONF_CFLAGS= 11596 DCONF_LIBS= 11597 ENABLE_DCONF= 11598 AC_MSG_RESULT([no]) 11599else 11600 ENABLE_DCONF=TRUE 11601 AC_DEFINE(ENABLE_DCONF) 11602 AC_MSG_RESULT([yes]) 11603fi 11604AC_SUBST([DCONF_CFLAGS]) 11605AC_SUBST([DCONF_LIBS]) 11606AC_SUBST([ENABLE_DCONF]) 11607 11608# pdf import? 11609AC_MSG_CHECKING([whether to build the PDF import feature]) 11610ENABLE_PDFIMPORT= 11611if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then 11612 AC_MSG_RESULT([yes]) 11613 ENABLE_PDFIMPORT=TRUE 11614 AC_DEFINE(HAVE_FEATURE_PDFIMPORT) 11615else 11616 AC_MSG_RESULT([no]) 11617fi 11618 11619# Pdfium? 11620AC_MSG_CHECKING([whether to build PDFium]) 11621ENABLE_PDFIUM= 11622if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then 11623 AC_MSG_RESULT([yes]) 11624 ENABLE_PDFIUM=TRUE 11625 AC_DEFINE(HAVE_FEATURE_PDFIUM) 11626 BUILD_TYPE="$BUILD_TYPE PDFIUM" 11627else 11628 AC_MSG_RESULT([no]) 11629fi 11630AC_SUBST(ENABLE_PDFIUM) 11631 11632dnl =================================================================== 11633dnl Check for poppler 11634dnl =================================================================== 11635ENABLE_POPPLER= 11636AC_MSG_CHECKING([whether to build Poppler]) 11637if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then 11638 AC_MSG_RESULT([yes]) 11639 ENABLE_POPPLER=TRUE 11640 AC_DEFINE(HAVE_FEATURE_POPPLER) 11641else 11642 AC_MSG_RESULT([no]) 11643fi 11644AC_SUBST(ENABLE_POPPLER) 11645 11646if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then 11647 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.]) 11648fi 11649 11650if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then 11651 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.]) 11652fi 11653 11654if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then 11655 dnl =================================================================== 11656 dnl Check for system poppler 11657 dnl =================================================================== 11658 AC_MSG_CHECKING([which PDF import poppler to use]) 11659 if test "$with_system_poppler" = "yes"; then 11660 AC_MSG_RESULT([external]) 11661 SYSTEM_POPPLER=TRUE 11662 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 ) 11663 AC_LANG_PUSH([C++]) 11664 save_CXXFLAGS=$CXXFLAGS 11665 save_CPPFLAGS=$CPPFLAGS 11666 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS" 11667 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS" 11668 AC_CHECK_HEADER([cpp/poppler-version.h], 11669 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)], 11670 []) 11671 CXXFLAGS=$save_CXXFLAGS 11672 CPPFLAGS=$save_CPPFLAGS 11673 AC_LANG_POP([C++]) 11674 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 11675 11676 FilterLibs "${POPPLER_LIBS}" 11677 POPPLER_LIBS="${filteredlibs}" 11678 else 11679 AC_MSG_RESULT([internal]) 11680 SYSTEM_POPPLER= 11681 BUILD_TYPE="$BUILD_TYPE POPPLER" 11682 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1) 11683 fi 11684 AC_DEFINE([ENABLE_PDFIMPORT],1) 11685fi 11686AC_SUBST(ENABLE_PDFIMPORT) 11687AC_SUBST(SYSTEM_POPPLER) 11688AC_SUBST(POPPLER_CFLAGS) 11689AC_SUBST(POPPLER_LIBS) 11690 11691# Skia? 11692AC_MSG_CHECKING([whether to build Skia]) 11693ENABLE_SKIA= 11694if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then 11695 if test "$enable_skia" = "debug"; then 11696 AC_MSG_RESULT([yes (debug)]) 11697 ENABLE_SKIA_DEBUG=TRUE 11698 else 11699 AC_MSG_RESULT([yes]) 11700 ENABLE_SKIA_DEBUG= 11701 fi 11702 ENABLE_SKIA=TRUE 11703 AC_DEFINE(HAVE_FEATURE_SKIA) 11704 BUILD_TYPE="$BUILD_TYPE SKIA" 11705else 11706 AC_MSG_RESULT([no]) 11707fi 11708AC_SUBST(ENABLE_SKIA) 11709AC_SUBST(ENABLE_SKIA_DEBUG) 11710 11711LO_CLANG_CXXFLAGS_INTRINSICS_SSE2= 11712LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3= 11713LO_CLANG_CXXFLAGS_INTRINSICS_SSE41= 11714LO_CLANG_CXXFLAGS_INTRINSICS_SSE42= 11715LO_CLANG_CXXFLAGS_INTRINSICS_AVX= 11716LO_CLANG_CXXFLAGS_INTRINSICS_AVX2= 11717LO_CLANG_CXXFLAGS_INTRINSICS_AVX512= 11718LO_CLANG_CXXFLAGS_INTRINSICS_F16C= 11719LO_CLANG_CXXFLAGS_INTRINSICS_FMA= 11720 11721if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "AARCH64" \); then 11722 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then 11723 AC_MSG_CHECKING([for Clang]) 11724 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX]) 11725 else 11726 if test "$_os" = "WINNT"; then 11727 AC_MSG_CHECKING([for clang-cl]) 11728 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then 11729 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"` 11730 dnl explicitly set -m32/-m64 11731 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS" 11732 LO_CLANG_CXX="$LO_CLANG_CC" 11733 AC_MSG_RESULT([$LO_CLANG_CC]) 11734 else 11735 AC_MSG_RESULT([no]) 11736 fi 11737 else 11738 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[]) 11739 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[]) 11740 fi 11741 fi 11742 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then 11743 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'` 11744 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'` 11745 if test "$clang2_ver" -lt 50002; then 11746 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2]) 11747 LO_CLANG_CC= 11748 LO_CLANG_CXX= 11749 fi 11750 fi 11751 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then 11752 # Skia is the default on Windows, so hard-require Clang. 11753 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used. 11754 if test "$_os" = "WINNT"; then 11755 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.]) 11756 else 11757 AC_MSG_WARN([Clang compiler not found.]) 11758 fi 11759 else 11760 11761 save_CXX="$CXX" 11762 CXX="$LO_CLANG_CXX" 11763 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl 11764 flag_sse2=-msse2 11765 flag_ssse3=-mssse3 11766 flag_sse41=-msse4.1 11767 flag_sse42=-msse4.2 11768 flag_avx=-mavx 11769 flag_avx2=-mavx2 11770 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd" 11771 flag_f16c=-mf16c 11772 flag_fma=-mfma 11773 11774 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics]) 11775 AC_LANG_PUSH([C++]) 11776 save_CXXFLAGS=$CXXFLAGS 11777 CXXFLAGS="$CXXFLAGS $flag_sse2" 11778 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11779 #include <emmintrin.h> 11780 int main () { 11781 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 11782 c = _mm_xor_si128 (a, b); 11783 return 0; 11784 } 11785 ])], 11786 [can_compile_sse2=yes], 11787 [can_compile_sse2=no]) 11788 AC_LANG_POP([C++]) 11789 CXXFLAGS=$save_CXXFLAGS 11790 AC_MSG_RESULT([${can_compile_sse2}]) 11791 if test "${can_compile_sse2}" = "yes" ; then 11792 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2" 11793 fi 11794 11795 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics]) 11796 AC_LANG_PUSH([C++]) 11797 save_CXXFLAGS=$CXXFLAGS 11798 CXXFLAGS="$CXXFLAGS $flag_ssse3" 11799 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11800 #include <tmmintrin.h> 11801 int main () { 11802 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 11803 c = _mm_maddubs_epi16 (a, b); 11804 return 0; 11805 } 11806 ])], 11807 [can_compile_ssse3=yes], 11808 [can_compile_ssse3=no]) 11809 AC_LANG_POP([C++]) 11810 CXXFLAGS=$save_CXXFLAGS 11811 AC_MSG_RESULT([${can_compile_ssse3}]) 11812 if test "${can_compile_ssse3}" = "yes" ; then 11813 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3" 11814 fi 11815 11816 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics]) 11817 AC_LANG_PUSH([C++]) 11818 save_CXXFLAGS=$CXXFLAGS 11819 CXXFLAGS="$CXXFLAGS $flag_sse41" 11820 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11821 #include <smmintrin.h> 11822 int main () { 11823 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 11824 c = _mm_cmpeq_epi64 (a, b); 11825 return 0; 11826 } 11827 ])], 11828 [can_compile_sse41=yes], 11829 [can_compile_sse41=no]) 11830 AC_LANG_POP([C++]) 11831 CXXFLAGS=$save_CXXFLAGS 11832 AC_MSG_RESULT([${can_compile_sse41}]) 11833 if test "${can_compile_sse41}" = "yes" ; then 11834 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41" 11835 fi 11836 11837 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics]) 11838 AC_LANG_PUSH([C++]) 11839 save_CXXFLAGS=$CXXFLAGS 11840 CXXFLAGS="$CXXFLAGS $flag_sse42" 11841 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11842 #include <nmmintrin.h> 11843 int main () { 11844 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c; 11845 c = _mm_cmpgt_epi64 (a, b); 11846 return 0; 11847 } 11848 ])], 11849 [can_compile_sse42=yes], 11850 [can_compile_sse42=no]) 11851 AC_LANG_POP([C++]) 11852 CXXFLAGS=$save_CXXFLAGS 11853 AC_MSG_RESULT([${can_compile_sse42}]) 11854 if test "${can_compile_sse42}" = "yes" ; then 11855 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42" 11856 fi 11857 11858 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics]) 11859 AC_LANG_PUSH([C++]) 11860 save_CXXFLAGS=$CXXFLAGS 11861 CXXFLAGS="$CXXFLAGS $flag_avx" 11862 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11863 #include <immintrin.h> 11864 int main () { 11865 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c; 11866 c = _mm256_xor_ps(a, b); 11867 return 0; 11868 } 11869 ])], 11870 [can_compile_avx=yes], 11871 [can_compile_avx=no]) 11872 AC_LANG_POP([C++]) 11873 CXXFLAGS=$save_CXXFLAGS 11874 AC_MSG_RESULT([${can_compile_avx}]) 11875 if test "${can_compile_avx}" = "yes" ; then 11876 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx" 11877 fi 11878 11879 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics]) 11880 AC_LANG_PUSH([C++]) 11881 save_CXXFLAGS=$CXXFLAGS 11882 CXXFLAGS="$CXXFLAGS $flag_avx2" 11883 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11884 #include <immintrin.h> 11885 int main () { 11886 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c; 11887 c = _mm256_maddubs_epi16(a, b); 11888 return 0; 11889 } 11890 ])], 11891 [can_compile_avx2=yes], 11892 [can_compile_avx2=no]) 11893 AC_LANG_POP([C++]) 11894 CXXFLAGS=$save_CXXFLAGS 11895 AC_MSG_RESULT([${can_compile_avx2}]) 11896 if test "${can_compile_avx2}" = "yes" ; then 11897 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2" 11898 fi 11899 11900 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics]) 11901 AC_LANG_PUSH([C++]) 11902 save_CXXFLAGS=$CXXFLAGS 11903 CXXFLAGS="$CXXFLAGS $flag_avx512" 11904 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11905 #include <immintrin.h> 11906 int main () { 11907 __m512i a = _mm512_loadu_si512(0); 11908 return 0; 11909 } 11910 ])], 11911 [can_compile_avx512=yes], 11912 [can_compile_avx512=no]) 11913 AC_LANG_POP([C++]) 11914 CXXFLAGS=$save_CXXFLAGS 11915 AC_MSG_RESULT([${can_compile_avx512}]) 11916 if test "${can_compile_avx512}" = "yes" ; then 11917 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512" 11918 fi 11919 11920 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics]) 11921 AC_LANG_PUSH([C++]) 11922 save_CXXFLAGS=$CXXFLAGS 11923 CXXFLAGS="$CXXFLAGS $flag_f16c" 11924 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11925 #include <immintrin.h> 11926 int main () { 11927 __m128i a = _mm_set1_epi32 (0); 11928 __m128 c; 11929 c = _mm_cvtph_ps(a); 11930 return 0; 11931 } 11932 ])], 11933 [can_compile_f16c=yes], 11934 [can_compile_f16c=no]) 11935 AC_LANG_POP([C++]) 11936 CXXFLAGS=$save_CXXFLAGS 11937 AC_MSG_RESULT([${can_compile_f16c}]) 11938 if test "${can_compile_f16c}" = "yes" ; then 11939 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c" 11940 fi 11941 11942 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics]) 11943 AC_LANG_PUSH([C++]) 11944 save_CXXFLAGS=$CXXFLAGS 11945 CXXFLAGS="$CXXFLAGS $flag_fma" 11946 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 11947 #include <immintrin.h> 11948 int main () { 11949 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d; 11950 d = _mm256_fmadd_ps(a, b, c); 11951 return 0; 11952 } 11953 ])], 11954 [can_compile_fma=yes], 11955 [can_compile_fma=no]) 11956 AC_LANG_POP([C++]) 11957 CXXFLAGS=$save_CXXFLAGS 11958 AC_MSG_RESULT([${can_compile_fma}]) 11959 if test "${can_compile_fma}" = "yes" ; then 11960 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma" 11961 fi 11962 11963 CXX="$save_CXX" 11964 fi 11965fi 11966# 11967# prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed 11968# 11969if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then 11970 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached]) 11971 AC_LANG_PUSH([C]) 11972 save_CC="$CC" 11973 CC="$LO_CLANG_CC" 11974 save_CFLAGS=$CFLAGS 11975 CFLAGS="$CFLAGS --ccache-skip -O2" 11976 dnl an empty program will do, we're checking the compiler flags 11977 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], 11978 [use_ccache=yes], [use_ccache=no]) 11979 CFLAGS=$save_CFLAGS 11980 CC=$save_CC 11981 if test $use_ccache = yes; then 11982 AC_MSG_RESULT([yes]) 11983 else 11984 LO_CLANG_CC="$CCACHE $LO_CLANG_CC" 11985 AC_MSG_RESULT([no]) 11986 fi 11987 AC_LANG_POP([C]) 11988 11989 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached]) 11990 AC_LANG_PUSH([C++]) 11991 save_CXX="$CXX" 11992 CXX="$LO_CLANG_CXX" 11993 save_CXXFLAGS=$CXXFLAGS 11994 CXXFLAGS="$CXXFLAGS --ccache-skip -O2" 11995 dnl an empty program will do, we're checking the compiler flags 11996 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], 11997 [use_ccache=yes], [use_ccache=no]) 11998 if test $use_ccache = yes; then 11999 AC_MSG_RESULT([yes]) 12000 else 12001 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX" 12002 AC_MSG_RESULT([no]) 12003 fi 12004 CXXFLAGS=$save_CXXFLAGS 12005 CXX=$save_CXX 12006 AC_LANG_POP([C++]) 12007fi 12008 12009AC_SUBST(LO_CLANG_CC) 12010AC_SUBST(LO_CLANG_CXX) 12011AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2) 12012AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3) 12013AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41) 12014AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42) 12015AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX) 12016AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2) 12017AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512) 12018AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C) 12019AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA) 12020AC_SUBST(CLANG_USE_LD) 12021 12022SYSTEM_GPGMEPP= 12023 12024if test "$enable_gpgmepp" = no; then 12025 AC_MSG_CHECKING([whether to enable gpgmepp]) 12026 AC_MSG_RESULT([no]) 12027elif test "$enable_mpl_subset" = "yes"; then 12028 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL]) 12029 AC_MSG_RESULT([yes]) 12030elif test "$enable_fuzzers" = "yes"; then 12031 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz]) 12032 AC_MSG_RESULT([yes]) 12033elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then 12034 dnl =================================================================== 12035 dnl Check for system gpgme 12036 dnl =================================================================== 12037 AC_MSG_CHECKING([which gpgmepp to use]) 12038 if test "$with_system_gpgmepp" = "yes"; then 12039 AC_MSG_RESULT([external]) 12040 SYSTEM_GPGMEPP=TRUE 12041 12042 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way 12043 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ], 12044 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], []) 12045 # progress_callback is the only func with plain C linkage 12046 # checking for it also filters out older, KDE-dependent libgpgmepp versions 12047 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ], 12048 [AC_MSG_ERROR(gpgmepp not found or not functional)], []) 12049 AC_CHECK_HEADER(gpgme.h, [], 12050 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], []) 12051 else 12052 AC_MSG_RESULT([internal]) 12053 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP" 12054 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY]) 12055 12056 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src" 12057 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src" 12058 if test "$_os" != "WINNT"; then 12059 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error" 12060 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan" 12061 fi 12062 fi 12063 ENABLE_GPGMEPP=TRUE 12064 AC_DEFINE([HAVE_FEATURE_GPGME]) 12065 AC_PATH_PROG(GPG, gpg) 12066 # TODO: Windows's cygwin gpg does not seem to work with our gpgme, 12067 # so let's exclude that manually for the moment 12068 if test -n "$GPG" -a "$_os" != "WINNT"; then 12069 # make sure we not only have a working gpgme, but a full working 12070 # gpg installation to run OpenPGP signature verification 12071 AC_DEFINE([HAVE_FEATURE_GPGVERIFY]) 12072 fi 12073 if test "$_os" = "Linux"; then 12074 uid=`id -u` 12075 AC_MSG_CHECKING([for /run/user/$uid]) 12076 if test -d /run/user/$uid; then 12077 AC_MSG_RESULT([yes]) 12078 AC_PATH_PROG(GPGCONF, gpgconf) 12079 12080 # Older versions of gpgconf are not working as expected, since 12081 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating 12082 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx 12083 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E ) 12084 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ]) 12085 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'` 12086 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'` 12087 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then 12088 AC_MSG_RESULT([yes, $GPGCONF_VERSION]) 12089 AC_MSG_CHECKING([for gpgconf --create-socketdir... ]) 12090 if $GPGCONF --dump-options > /dev/null ; then 12091 if $GPGCONF --dump-options | grep -q create-socketdir ; then 12092 AC_MSG_RESULT([yes]) 12093 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR]) 12094 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"]) 12095 else 12096 AC_MSG_RESULT([no]) 12097 fi 12098 else 12099 AC_MSG_RESULT([no. missing or broken gpgconf?]) 12100 fi 12101 else 12102 AC_MSG_RESULT([no, $GPGCONF_VERSION]) 12103 fi 12104 else 12105 AC_MSG_RESULT([no]) 12106 fi 12107 fi 12108fi 12109AC_SUBST(ENABLE_GPGMEPP) 12110AC_SUBST(SYSTEM_GPGMEPP) 12111AC_SUBST(GPG_ERROR_CFLAGS) 12112AC_SUBST(GPG_ERROR_LIBS) 12113AC_SUBST(LIBASSUAN_CFLAGS) 12114AC_SUBST(LIBASSUAN_LIBS) 12115AC_SUBST(GPGMEPP_CFLAGS) 12116AC_SUBST(GPGMEPP_LIBS) 12117 12118AC_MSG_CHECKING([whether to build the Wiki Publisher extension]) 12119if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then 12120 AC_MSG_RESULT([yes]) 12121 ENABLE_MEDIAWIKI=TRUE 12122 BUILD_TYPE="$BUILD_TYPE XSLTML" 12123 if test "x$with_java" = "xno"; then 12124 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.]) 12125 fi 12126else 12127 AC_MSG_RESULT([no]) 12128 ENABLE_MEDIAWIKI= 12129 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI" 12130fi 12131AC_SUBST(ENABLE_MEDIAWIKI) 12132 12133AC_MSG_CHECKING([whether to build the Report Builder]) 12134if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then 12135 AC_MSG_RESULT([yes]) 12136 ENABLE_REPORTBUILDER=TRUE 12137 AC_MSG_CHECKING([which jfreereport libs to use]) 12138 if test "$with_system_jfreereport" = "yes"; then 12139 SYSTEM_JFREEREPORT=TRUE 12140 AC_MSG_RESULT([external]) 12141 if test -z $SAC_JAR; then 12142 SAC_JAR=/usr/share/java/sac.jar 12143 fi 12144 if ! test -f $SAC_JAR; then 12145 AC_MSG_ERROR(sac.jar not found.) 12146 fi 12147 12148 if test -z $LIBXML_JAR; then 12149 if test -f /usr/share/java/libxml-1.0.0.jar; then 12150 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar 12151 elif test -f /usr/share/java/libxml.jar; then 12152 LIBXML_JAR=/usr/share/java/libxml.jar 12153 else 12154 AC_MSG_ERROR(libxml.jar replacement not found.) 12155 fi 12156 elif ! test -f $LIBXML_JAR; then 12157 AC_MSG_ERROR(libxml.jar not found.) 12158 fi 12159 12160 if test -z $FLUTE_JAR; then 12161 if test -f /usr/share/java/flute-1.3.0.jar; then 12162 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar 12163 elif test -f /usr/share/java/flute.jar; then 12164 FLUTE_JAR=/usr/share/java/flute.jar 12165 else 12166 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.) 12167 fi 12168 elif ! test -f $FLUTE_JAR; then 12169 AC_MSG_ERROR(flute-1.3.0.jar not found.) 12170 fi 12171 12172 if test -z $JFREEREPORT_JAR; then 12173 if test -f /usr/share/java/flow-engine-0.9.2.jar; then 12174 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar 12175 elif test -f /usr/share/java/flow-engine.jar; then 12176 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar 12177 else 12178 AC_MSG_ERROR(jfreereport.jar replacement not found.) 12179 fi 12180 elif ! test -f $JFREEREPORT_JAR; then 12181 AC_MSG_ERROR(jfreereport.jar not found.) 12182 fi 12183 12184 if test -z $LIBLAYOUT_JAR; then 12185 if test -f /usr/share/java/liblayout-0.2.9.jar; then 12186 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar 12187 elif test -f /usr/share/java/liblayout.jar; then 12188 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar 12189 else 12190 AC_MSG_ERROR(liblayout.jar replacement not found.) 12191 fi 12192 elif ! test -f $LIBLAYOUT_JAR; then 12193 AC_MSG_ERROR(liblayout.jar not found.) 12194 fi 12195 12196 if test -z $LIBLOADER_JAR; then 12197 if test -f /usr/share/java/libloader-1.0.0.jar; then 12198 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar 12199 elif test -f /usr/share/java/libloader.jar; then 12200 LIBLOADER_JAR=/usr/share/java/libloader.jar 12201 else 12202 AC_MSG_ERROR(libloader.jar replacement not found.) 12203 fi 12204 elif ! test -f $LIBLOADER_JAR; then 12205 AC_MSG_ERROR(libloader.jar not found.) 12206 fi 12207 12208 if test -z $LIBFORMULA_JAR; then 12209 if test -f /usr/share/java/libformula-0.2.0.jar; then 12210 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar 12211 elif test -f /usr/share/java/libformula.jar; then 12212 LIBFORMULA_JAR=/usr/share/java/libformula.jar 12213 else 12214 AC_MSG_ERROR(libformula.jar replacement not found.) 12215 fi 12216 elif ! test -f $LIBFORMULA_JAR; then 12217 AC_MSG_ERROR(libformula.jar not found.) 12218 fi 12219 12220 if test -z $LIBREPOSITORY_JAR; then 12221 if test -f /usr/share/java/librepository-1.0.0.jar; then 12222 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar 12223 elif test -f /usr/share/java/librepository.jar; then 12224 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar 12225 else 12226 AC_MSG_ERROR(librepository.jar replacement not found.) 12227 fi 12228 elif ! test -f $LIBREPOSITORY_JAR; then 12229 AC_MSG_ERROR(librepository.jar not found.) 12230 fi 12231 12232 if test -z $LIBFONTS_JAR; then 12233 if test -f /usr/share/java/libfonts-1.0.0.jar; then 12234 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar 12235 elif test -f /usr/share/java/libfonts.jar; then 12236 LIBFONTS_JAR=/usr/share/java/libfonts.jar 12237 else 12238 AC_MSG_ERROR(libfonts.jar replacement not found.) 12239 fi 12240 elif ! test -f $LIBFONTS_JAR; then 12241 AC_MSG_ERROR(libfonts.jar not found.) 12242 fi 12243 12244 if test -z $LIBSERIALIZER_JAR; then 12245 if test -f /usr/share/java/libserializer-1.0.0.jar; then 12246 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar 12247 elif test -f /usr/share/java/libserializer.jar; then 12248 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar 12249 else 12250 AC_MSG_ERROR(libserializer.jar replacement not found.) 12251 fi 12252 elif ! test -f $LIBSERIALIZER_JAR; then 12253 AC_MSG_ERROR(libserializer.jar not found.) 12254 fi 12255 12256 if test -z $LIBBASE_JAR; then 12257 if test -f /usr/share/java/libbase-1.0.0.jar; then 12258 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar 12259 elif test -f /usr/share/java/libbase.jar; then 12260 LIBBASE_JAR=/usr/share/java/libbase.jar 12261 else 12262 AC_MSG_ERROR(libbase.jar replacement not found.) 12263 fi 12264 elif ! test -f $LIBBASE_JAR; then 12265 AC_MSG_ERROR(libbase.jar not found.) 12266 fi 12267 12268 else 12269 AC_MSG_RESULT([internal]) 12270 SYSTEM_JFREEREPORT= 12271 BUILD_TYPE="$BUILD_TYPE JFREEREPORT" 12272 NEED_ANT=TRUE 12273 fi 12274else 12275 AC_MSG_RESULT([no]) 12276 ENABLE_REPORTBUILDER= 12277 SYSTEM_JFREEREPORT= 12278fi 12279AC_SUBST(ENABLE_REPORTBUILDER) 12280AC_SUBST(SYSTEM_JFREEREPORT) 12281AC_SUBST(SAC_JAR) 12282AC_SUBST(LIBXML_JAR) 12283AC_SUBST(FLUTE_JAR) 12284AC_SUBST(JFREEREPORT_JAR) 12285AC_SUBST(LIBBASE_JAR) 12286AC_SUBST(LIBLAYOUT_JAR) 12287AC_SUBST(LIBLOADER_JAR) 12288AC_SUBST(LIBFORMULA_JAR) 12289AC_SUBST(LIBREPOSITORY_JAR) 12290AC_SUBST(LIBFONTS_JAR) 12291AC_SUBST(LIBSERIALIZER_JAR) 12292 12293# this has to be here because both the Wiki Publisher and the SRB use 12294# commons-logging 12295COMMONS_LOGGING_VERSION=1.2 12296if test "$ENABLE_REPORTBUILDER" = "TRUE"; then 12297 AC_MSG_CHECKING([which Apache commons-* libs to use]) 12298 if test "$with_system_apache_commons" = "yes"; then 12299 SYSTEM_APACHE_COMMONS=TRUE 12300 AC_MSG_RESULT([external]) 12301 if test -z $COMMONS_LOGGING_JAR; then 12302 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then 12303 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar 12304 elif test -f /usr/share/java/commons-logging.jar; then 12305 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar 12306 else 12307 AC_MSG_ERROR(commons-logging.jar replacement not found.) 12308 fi 12309 elif ! test -f $COMMONS_LOGGING_JAR; then 12310 AC_MSG_ERROR(commons-logging.jar not found.) 12311 fi 12312 else 12313 AC_MSG_RESULT([internal]) 12314 SYSTEM_APACHE_COMMONS= 12315 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS" 12316 NEED_ANT=TRUE 12317 fi 12318fi 12319AC_SUBST(SYSTEM_APACHE_COMMONS) 12320AC_SUBST(COMMONS_LOGGING_JAR) 12321AC_SUBST(COMMONS_LOGGING_VERSION) 12322 12323# scripting provider for BeanShell? 12324AC_MSG_CHECKING([whether to build support for scripts in BeanShell]) 12325if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then 12326 AC_MSG_RESULT([yes]) 12327 ENABLE_SCRIPTING_BEANSHELL=TRUE 12328 12329 dnl =================================================================== 12330 dnl Check for system beanshell 12331 dnl =================================================================== 12332 AC_MSG_CHECKING([which beanshell to use]) 12333 if test "$with_system_beanshell" = "yes"; then 12334 AC_MSG_RESULT([external]) 12335 SYSTEM_BSH=TRUE 12336 if test -z $BSH_JAR; then 12337 BSH_JAR=/usr/share/java/bsh.jar 12338 fi 12339 if ! test -f $BSH_JAR; then 12340 AC_MSG_ERROR(bsh.jar not found.) 12341 fi 12342 else 12343 AC_MSG_RESULT([internal]) 12344 SYSTEM_BSH= 12345 BUILD_TYPE="$BUILD_TYPE BSH" 12346 fi 12347else 12348 AC_MSG_RESULT([no]) 12349 ENABLE_SCRIPTING_BEANSHELL= 12350 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL" 12351fi 12352AC_SUBST(ENABLE_SCRIPTING_BEANSHELL) 12353AC_SUBST(SYSTEM_BSH) 12354AC_SUBST(BSH_JAR) 12355 12356# scripting provider for JavaScript? 12357AC_MSG_CHECKING([whether to build support for scripts in JavaScript]) 12358if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then 12359 AC_MSG_RESULT([yes]) 12360 ENABLE_SCRIPTING_JAVASCRIPT=TRUE 12361 12362 dnl =================================================================== 12363 dnl Check for system rhino 12364 dnl =================================================================== 12365 AC_MSG_CHECKING([which rhino to use]) 12366 if test "$with_system_rhino" = "yes"; then 12367 AC_MSG_RESULT([external]) 12368 SYSTEM_RHINO=TRUE 12369 if test -z $RHINO_JAR; then 12370 RHINO_JAR=/usr/share/java/js.jar 12371 fi 12372 if ! test -f $RHINO_JAR; then 12373 AC_MSG_ERROR(js.jar not found.) 12374 fi 12375 else 12376 AC_MSG_RESULT([internal]) 12377 SYSTEM_RHINO= 12378 BUILD_TYPE="$BUILD_TYPE RHINO" 12379 NEED_ANT=TRUE 12380 fi 12381else 12382 AC_MSG_RESULT([no]) 12383 ENABLE_SCRIPTING_JAVASCRIPT= 12384 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT" 12385fi 12386AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT) 12387AC_SUBST(SYSTEM_RHINO) 12388AC_SUBST(RHINO_JAR) 12389 12390# This is only used in Qt5/KF5 checks to determine if /usr/lib64 12391# paths should be added to library search path. So lets put all 64-bit 12392# platforms there. 12393supports_multilib= 12394case "$host_cpu" in 12395x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el) 12396 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then 12397 supports_multilib="yes" 12398 fi 12399 ;; 12400*) 12401 ;; 12402esac 12403 12404dnl =================================================================== 12405dnl QT5 Integration 12406dnl =================================================================== 12407 12408QT5_CFLAGS="" 12409QT5_LIBS="" 12410QMAKE5="qmake" 12411MOC5="moc" 12412QT5_GOBJECT_CFLAGS="" 12413QT5_GOBJECT_LIBS="" 12414QT5_HAVE_GOBJECT="" 12415if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \ 12416 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \ 12417 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \) 12418then 12419 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes" 12420 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries" 12421 12422 if test -n "$supports_multilib"; then 12423 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64" 12424 fi 12425 12426 qt5_test_include="QtWidgets/qapplication.h" 12427 qt5_test_library="libQt5Widgets.so" 12428 12429 dnl Check for qmake5 12430 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH]) 12431 if test "$QMAKE5" = "no"; then 12432 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".]) 12433 else 12434 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`" 12435 if test -z "$qmake5_test_ver"; then 12436 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".]) 12437 fi 12438 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`" 12439 qt5_minimal_minor="6" 12440 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then 12441 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.]) 12442 else 12443 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver]) 12444 fi 12445 fi 12446 12447 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs" 12448 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs" 12449 12450 AC_MSG_CHECKING([for Qt5 headers]) 12451 qt5_incdir="no" 12452 for inc_dir in $qt5_incdirs; do 12453 if test -r "$inc_dir/$qt5_test_include"; then 12454 qt5_incdir="$inc_dir" 12455 break 12456 fi 12457 done 12458 AC_MSG_RESULT([$qt5_incdir]) 12459 if test "x$qt5_incdir" = "xno"; then 12460 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".]) 12461 fi 12462 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686 12463 AC_LANG_PUSH([C++]) 12464 save_CPPFLAGS=$CPPFLAGS 12465 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}" 12466 AC_CHECK_HEADER(QtCore/qconfig.h, [], 12467 [AC_MSG_ERROR(qconfig.h header not found.)], []) 12468 CPPFLAGS=$save_CPPFLAGS 12469 AC_LANG_POP([C++]) 12470 12471 AC_MSG_CHECKING([for Qt5 libraries]) 12472 qt5_libdir="no" 12473 for lib_dir in $qt5_libdirs; do 12474 if test -r "$lib_dir/$qt5_test_library"; then 12475 qt5_libdir="$lib_dir" 12476 break 12477 fi 12478 done 12479 AC_MSG_RESULT([$qt5_libdir]) 12480 if test "x$qt5_libdir" = "xno"; then 12481 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".]) 12482 fi 12483 12484 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING" 12485 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12486 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network" 12487 12488 if test "$USING_X11" = TRUE; then 12489 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])]) 12490 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[ 12491 QT5_HAVE_XCB_ICCCM=1 12492 AC_DEFINE(QT5_HAVE_XCB_ICCCM) 12493 ],[ 12494 AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)]) 12495 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)" 12496 ]) 12497 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS" 12498 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras" 12499 QT5_USING_X11=1 12500 AC_DEFINE(QT5_USING_X11) 12501 fi 12502 12503 dnl Check for Meta Object Compiler 12504 12505 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH]) 12506 if test "$MOC5" = "no"; then 12507 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify 12508the root of your Qt installation by exporting QT5DIR before running "configure".]) 12509 fi 12510 12511 if test "$build_gstreamer_1_0" = "yes"; then 12512 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [ 12513 QT5_HAVE_GOBJECT=1 12514 AC_DEFINE(QT5_HAVE_GOBJECT) 12515 ], 12516 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]]) 12517 ) 12518 fi 12519fi 12520AC_SUBST(QT5_CFLAGS) 12521AC_SUBST(QT5_LIBS) 12522AC_SUBST(MOC5) 12523AC_SUBST(QT5_GOBJECT_CFLAGS) 12524AC_SUBST(QT5_GOBJECT_LIBS) 12525AC_SUBST(QT5_HAVE_GOBJECT) 12526 12527dnl =================================================================== 12528dnl KF5 Integration 12529dnl =================================================================== 12530 12531KF5_CFLAGS="" 12532KF5_LIBS="" 12533KF5_CONFIG="kf5-config" 12534if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \ 12535 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \) 12536then 12537 if test "$OS" = "HAIKU"; then 12538 haiku_arch="`echo $RTL_ARCH | tr X x`" 12539 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`" 12540 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`" 12541 fi 12542 12543 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes" 12544 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries" 12545 if test -n "$supports_multilib"; then 12546 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel" 12547 fi 12548 12549 kf5_test_include="KF5/kcoreaddons_version.h" 12550 kf5_test_library="libKF5CoreAddons.so" 12551 kf5_libdirs="$qt5_libdir $kf5_libdirs" 12552 12553 dnl kf5 KDE4 support compatibility installed 12554 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, ) 12555 if test "$KF5_CONFIG" != "no"; then 12556 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs" 12557 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs" 12558 fi 12559 12560 dnl Check for KF5 headers 12561 AC_MSG_CHECKING([for KF5 headers]) 12562 kf5_incdir="no" 12563 for kf5_check in $kf5_incdirs; do 12564 if test -r "$kf5_check/$kf5_test_include"; then 12565 kf5_incdir="$kf5_check/KF5" 12566 break 12567 fi 12568 done 12569 AC_MSG_RESULT([$kf5_incdir]) 12570 if test "x$kf5_incdir" = "xno"; then 12571 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".]) 12572 fi 12573 12574 dnl Check for KF5 libraries 12575 AC_MSG_CHECKING([for KF5 libraries]) 12576 kf5_libdir="no" 12577 for kf5_check in $kf5_libdirs; do 12578 if test -r "$kf5_check/$kf5_test_library"; then 12579 kf5_libdir="$kf5_check" 12580 break 12581 fi 12582 done 12583 12584 AC_MSG_RESULT([$kf5_libdir]) 12585 if test "x$kf5_libdir" = "xno"; then 12586 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".]) 12587 fi 12588 12589 KF5_CFLAGS="-I$kf5_incdir -I$kf5_incdir/KCoreAddons -I$kf5_incdir/KI18n -I$kf5_incdir/KConfigCore -I$kf5_incdir/KWindowSystem -I$kf5_incdir/KIOCore -I$kf5_incdir/KIOWidgets -I$kf5_incdir/KIOFileWidgets -I$qt5_incdir -I$qt5_incdir/QtCore -I$qt5_incdir/QtGui -I$qt5_incdir/QtWidgets -I$qt5_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING" 12590 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network" 12591 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12592 12593 if test "$USING_X11" = TRUE; then 12594 KF5_LIBS="$KF5_LIBS -lQt5X11Extras" 12595 fi 12596 12597 AC_LANG_PUSH([C++]) 12598 save_CXXFLAGS=$CXXFLAGS 12599 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS" 12600 AC_MSG_CHECKING([whether KDE is >= 5.0]) 12601 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 12602#include <kcoreaddons_version.h> 12603 12604int main(int argc, char **argv) { 12605 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0; 12606 else return 1; 12607} 12608 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[]) 12609 CXXFLAGS=$save_CXXFLAGS 12610 AC_LANG_POP([C++]) 12611fi 12612AC_SUBST(KF5_CFLAGS) 12613AC_SUBST(KF5_LIBS) 12614 12615dnl =================================================================== 12616dnl Test whether to include Evolution 2 support 12617dnl =================================================================== 12618AC_MSG_CHECKING([whether to enable evolution 2 support]) 12619if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then 12620 AC_MSG_RESULT([yes]) 12621 PKG_CHECK_MODULES(GOBJECT, gobject-2.0) 12622 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12623 FilterLibs "${GOBJECT_LIBS}" 12624 GOBJECT_LIBS="${filteredlibs}" 12625 ENABLE_EVOAB2="TRUE" 12626else 12627 ENABLE_EVOAB2="" 12628 AC_MSG_RESULT([no]) 12629fi 12630AC_SUBST(ENABLE_EVOAB2) 12631AC_SUBST(GOBJECT_CFLAGS) 12632AC_SUBST(GOBJECT_LIBS) 12633 12634dnl =================================================================== 12635dnl Test which themes to include 12636dnl =================================================================== 12637AC_MSG_CHECKING([which themes to include]) 12638# if none given use default subset of available themes 12639if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then 12640 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg" 12641fi 12642 12643WITH_THEMES="" 12644if test "x$with_theme" != "xno"; then 12645 for theme in $with_theme; do 12646 case $theme in 12647 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;; 12648 default) real_theme=colibre ;; 12649 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;; 12650 esac 12651 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '` 12652 done 12653fi 12654AC_MSG_RESULT([$WITH_THEMES]) 12655AC_SUBST([WITH_THEMES]) 12656# FIXME: remove this, and the convenience default->colibre remapping after a grace period 12657for theme in $with_theme; do 12658 case $theme in 12659 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;; 12660 *) ;; 12661 esac 12662done 12663 12664dnl =================================================================== 12665dnl Test whether to integrate helppacks into the product's installer 12666dnl =================================================================== 12667AC_MSG_CHECKING([for helppack integration]) 12668if test "$with_helppack_integration" = "no"; then 12669 AC_MSG_RESULT([no integration]) 12670else 12671 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION" 12672 AC_MSG_RESULT([integration]) 12673fi 12674 12675############################################################################### 12676# Extensions checking 12677############################################################################### 12678AC_MSG_CHECKING([for extensions integration]) 12679if test "x$enable_extension_integration" != "xno"; then 12680 WITH_EXTENSION_INTEGRATION=TRUE 12681 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION" 12682 AC_MSG_RESULT([yes, use integration]) 12683else 12684 WITH_EXTENSION_INTEGRATION= 12685 AC_MSG_RESULT([no, do not integrate]) 12686fi 12687AC_SUBST(WITH_EXTENSION_INTEGRATION) 12688 12689dnl Should any extra extensions be included? 12690dnl There are standalone tests for each of these below. 12691WITH_EXTRA_EXTENSIONS= 12692AC_SUBST([WITH_EXTRA_EXTENSIONS]) 12693 12694libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[]) 12695libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt]) 12696if test "x$with_java" != "xno"; then 12697 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[]) 12698 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[]) 12699fi 12700 12701AC_MSG_CHECKING([whether to build opens___.ttf]) 12702if test "$enable_build_opensymbol" = "yes"; then 12703 AC_MSG_RESULT([yes]) 12704 AC_PATH_PROG(FONTFORGE, fontforge) 12705 if test -z "$FONTFORGE"; then 12706 AC_MSG_ERROR([fontforge not installed]) 12707 fi 12708else 12709 AC_MSG_RESULT([no]) 12710 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf 12711 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL" 12712fi 12713AC_SUBST(OPENSYMBOL_TTF) 12714AC_SUBST(FONTFORGE) 12715 12716dnl =================================================================== 12717dnl Test whether to include fonts 12718dnl =================================================================== 12719AC_MSG_CHECKING([whether to include third-party fonts]) 12720if test "$with_fonts" != "no"; then 12721 AC_MSG_RESULT([yes]) 12722 WITH_FONTS=TRUE 12723 BUILD_TYPE="$BUILD_TYPE MORE_FONTS" 12724 AC_DEFINE(HAVE_MORE_FONTS) 12725else 12726 AC_MSG_RESULT([no]) 12727 WITH_FONTS= 12728 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS" 12729fi 12730AC_SUBST(WITH_FONTS) 12731 12732 12733dnl =================================================================== 12734dnl Test whether to enable online update service 12735dnl =================================================================== 12736AC_MSG_CHECKING([whether to enable online update]) 12737ENABLE_ONLINE_UPDATE= 12738ENABLE_ONLINE_UPDATE_MAR= 12739UPDATE_CONFIG= 12740if test "$enable_online_update" = ""; then 12741 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then 12742 AC_MSG_RESULT([yes]) 12743 ENABLE_ONLINE_UPDATE="TRUE" 12744 else 12745 AC_MSG_RESULT([no]) 12746 fi 12747else 12748 if test "$enable_online_update" = "mar"; then 12749 AC_MSG_RESULT([yes - MAR-based online update]) 12750 ENABLE_ONLINE_UPDATE_MAR="TRUE" 12751 if test "$with_update_config" = ""; then 12752 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config]) 12753 fi 12754 UPDATE_CONFIG="$with_update_config" 12755 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR) 12756 elif test "$enable_online_update" = "yes"; then 12757 AC_MSG_RESULT([yes]) 12758 ENABLE_ONLINE_UPDATE="TRUE" 12759 else 12760 AC_MSG_RESULT([no]) 12761 fi 12762fi 12763AC_SUBST(ENABLE_ONLINE_UPDATE) 12764AC_SUBST(ENABLE_ONLINE_UPDATE_MAR) 12765AC_SUBST(UPDATE_CONFIG) 12766 12767dnl =================================================================== 12768dnl Test whether we need bzip2 12769dnl =================================================================== 12770SYSTEM_BZIP2= 12771if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then 12772 AC_MSG_CHECKING([whether to use system bzip2]) 12773 if test "$with_system_bzip2" = yes; then 12774 SYSTEM_BZIP2=TRUE 12775 AC_MSG_RESULT([yes]) 12776 PKG_CHECK_MODULES(BZIP2, bzip2) 12777 FilterLibs "${BZIP2_LIBS}" 12778 BZIP2_LIBS="${filteredlibs}" 12779 else 12780 AC_MSG_RESULT([no]) 12781 BUILD_TYPE="$BUILD_TYPE BZIP2" 12782 fi 12783fi 12784AC_SUBST(SYSTEM_BZIP2) 12785AC_SUBST(BZIP2_CFLAGS) 12786AC_SUBST(BZIP2_LIBS) 12787 12788dnl =================================================================== 12789dnl Test whether to enable extension update 12790dnl =================================================================== 12791AC_MSG_CHECKING([whether to enable extension update]) 12792ENABLE_EXTENSION_UPDATE= 12793if test "x$enable_extension_update" = "xno"; then 12794 AC_MSG_RESULT([no]) 12795else 12796 AC_MSG_RESULT([yes]) 12797 ENABLE_EXTENSION_UPDATE="TRUE" 12798 AC_DEFINE(ENABLE_EXTENSION_UPDATE) 12799 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE" 12800fi 12801AC_SUBST(ENABLE_EXTENSION_UPDATE) 12802 12803 12804dnl =================================================================== 12805dnl Test whether to create MSI with LIMITUI=1 (silent install) 12806dnl =================================================================== 12807AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)]) 12808if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then 12809 AC_MSG_RESULT([no]) 12810 ENABLE_SILENT_MSI= 12811else 12812 AC_MSG_RESULT([yes]) 12813 ENABLE_SILENT_MSI=TRUE 12814 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI" 12815fi 12816AC_SUBST(ENABLE_SILENT_MSI) 12817 12818AC_MSG_CHECKING([whether and how to use Xinerama]) 12819if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then 12820 if test "$x_libraries" = "default_x_libraries"; then 12821 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama` 12822 if test "x$XINERAMALIB" = x; then 12823 XINERAMALIB="/usr/lib" 12824 fi 12825 else 12826 XINERAMALIB="$x_libraries" 12827 fi 12828 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then 12829 # we have both versions, let the user decide but use the dynamic one 12830 # per default 12831 USE_XINERAMA=TRUE 12832 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then 12833 XINERAMA_LINK=dynamic 12834 else 12835 XINERAMA_LINK=static 12836 fi 12837 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then 12838 # we have only the dynamic version 12839 USE_XINERAMA=TRUE 12840 XINERAMA_LINK=dynamic 12841 elif test -e "$XINERAMALIB/libXinerama.a"; then 12842 # static version 12843 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then 12844 USE_XINERAMA=TRUE 12845 XINERAMA_LINK=static 12846 else 12847 USE_XINERAMA= 12848 XINERAMA_LINK=none 12849 fi 12850 else 12851 # no Xinerama 12852 USE_XINERAMA= 12853 XINERAMA_LINK=none 12854 fi 12855 if test "$USE_XINERAMA" = "TRUE"; then 12856 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking]) 12857 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [], 12858 [AC_MSG_ERROR(Xinerama header not found.)], []) 12859 XEXTLIBS=`$PKG_CONFIG --variable=libs xext` 12860 if test "x$XEXTLIB" = x; then 12861 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext" 12862 fi 12863 XINERAMA_EXTRA_LIBS="$XEXTLIBS" 12864 if test "$_os" = "FreeBSD"; then 12865 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt" 12866 fi 12867 if test "$_os" = "Linux"; then 12868 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl" 12869 fi 12870 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:], 12871 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS]) 12872 else 12873 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.]) 12874 fi 12875else 12876 USE_XINERAMA= 12877 XINERAMA_LINK=none 12878 AC_MSG_RESULT([no]) 12879fi 12880AC_SUBST(USE_XINERAMA) 12881AC_SUBST(XINERAMA_LINK) 12882 12883dnl =================================================================== 12884dnl Test whether to build cairo or rely on the system version 12885dnl =================================================================== 12886 12887if test "$USING_X11" = TRUE; then 12888 # Used in vcl/Library_vclplug_gen.mk 12889 test_cairo=yes 12890fi 12891 12892if test "$test_cairo" = "yes"; then 12893 AC_MSG_CHECKING([whether to use the system cairo]) 12894 12895 : ${with_system_cairo:=$with_system_libs} 12896 if test "$with_system_cairo" = "yes"; then 12897 SYSTEM_CAIRO=TRUE 12898 AC_MSG_RESULT([yes]) 12899 12900 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 ) 12901 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12902 FilterLibs "${CAIRO_LIBS}" 12903 CAIRO_LIBS="${filteredlibs}" 12904 12905 if test "$test_xrender" = "yes"; then 12906 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8]) 12907 AC_LANG_PUSH([C]) 12908 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[ 12909#ifdef PictStandardA8 12910#else 12911 return fail; 12912#endif 12913]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])]) 12914 12915 AC_LANG_POP([C]) 12916 fi 12917 else 12918 SYSTEM_CAIRO= 12919 AC_MSG_RESULT([no]) 12920 12921 BUILD_TYPE="$BUILD_TYPE CAIRO" 12922 fi 12923fi 12924 12925AC_SUBST(SYSTEM_CAIRO) 12926AC_SUBST(CAIRO_CFLAGS) 12927AC_SUBST(CAIRO_LIBS) 12928 12929dnl =================================================================== 12930dnl Test whether to use avahi 12931dnl =================================================================== 12932if test "$_os" = "WINNT"; then 12933 # Windows uses bundled mDNSResponder 12934 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER" 12935elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then 12936 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10], 12937 [ENABLE_AVAHI="TRUE"]) 12938 AC_DEFINE(HAVE_FEATURE_AVAHI) 12939 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12940 FilterLibs "${AVAHI_LIBS}" 12941 AVAHI_LIBS="${filteredlibs}" 12942fi 12943 12944AC_SUBST(ENABLE_AVAHI) 12945AC_SUBST(AVAHI_CFLAGS) 12946AC_SUBST(AVAHI_LIBS) 12947 12948dnl =================================================================== 12949dnl Test whether to use liblangtag 12950dnl =================================================================== 12951SYSTEM_LIBLANGTAG= 12952AC_MSG_CHECKING([whether to use system liblangtag]) 12953if test "$with_system_liblangtag" = yes; then 12954 SYSTEM_LIBLANGTAG=TRUE 12955 AC_MSG_RESULT([yes]) 12956 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0) 12957 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword" 12958 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])]) 12959 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") 12960 FilterLibs "${LIBLANGTAG_LIBS}" 12961 LIBLANGTAG_LIBS="${filteredlibs}" 12962else 12963 SYSTEM_LIBLANGTAG= 12964 AC_MSG_RESULT([no]) 12965 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG" 12966 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag" 12967 if test "$COM" = "MSC"; then 12968 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib" 12969 else 12970 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag" 12971 fi 12972fi 12973AC_SUBST(SYSTEM_LIBLANGTAG) 12974AC_SUBST(LIBLANGTAG_CFLAGS) 12975AC_SUBST(LIBLANGTAG_LIBS) 12976 12977dnl =================================================================== 12978dnl Test whether to build libpng or rely on the system version 12979dnl =================================================================== 12980 12981libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"]) 12982 12983dnl =================================================================== 12984dnl Check for runtime JVM search path 12985dnl =================================================================== 12986if test "$ENABLE_JAVA" != ""; then 12987 AC_MSG_CHECKING([whether to use specific JVM search path at runtime]) 12988 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then 12989 AC_MSG_RESULT([yes]) 12990 if ! test -d "$with_jvm_path"; then 12991 AC_MSG_ERROR(["$with_jvm_path" not a directory]) 12992 fi 12993 if ! test -d "$with_jvm_path"jvm; then 12994 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm]) 12995 fi 12996 JVM_ONE_PATH_CHECK="$with_jvm_path" 12997 AC_SUBST(JVM_ONE_PATH_CHECK) 12998 else 12999 AC_MSG_RESULT([no]) 13000 fi 13001fi 13002 13003dnl =================================================================== 13004dnl Test for the presence of Ant and that it works 13005dnl =================================================================== 13006 13007if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then 13008 ANT_HOME=; export ANT_HOME 13009 WITH_ANT_HOME=; export WITH_ANT_HOME 13010 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then 13011 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then 13012 if test "$_os" = "WINNT"; then 13013 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`" 13014 else 13015 with_ant_home="$LODE_HOME/opt/ant" 13016 fi 13017 elif test -x "$LODE_HOME/opt/bin/ant" ; then 13018 with_ant_home="$LODE_HOME/opt/ant" 13019 fi 13020 fi 13021 if test -z "$with_ant_home"; then 13022 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd]) 13023 else 13024 if test "$_os" = "WINNT"; then 13025 # AC_PATH_PROGS needs unix path 13026 with_ant_home=`cygpath -u "$with_ant_home"` 13027 fi 13028 AbsolutePath "$with_ant_home" 13029 with_ant_home=$absolute_path 13030 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH) 13031 WITH_ANT_HOME=$with_ant_home 13032 ANT_HOME=$with_ant_home 13033 fi 13034 13035 if test -z "$ANT"; then 13036 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home]) 13037 else 13038 # resolve relative or absolute symlink 13039 while test -h "$ANT"; do 13040 a_cwd=`pwd` 13041 a_basename=`basename "$ANT"` 13042 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"` 13043 cd "`dirname "$ANT"`" 13044 cd "`dirname "$a_script"`" 13045 ANT="`pwd`"/"`basename "$a_script"`" 13046 cd "$a_cwd" 13047 done 13048 13049 AC_MSG_CHECKING([if $ANT works]) 13050 mkdir -p conftest.dir 13051 a_cwd=$(pwd) 13052 cd conftest.dir 13053 cat > conftest.java << EOF 13054 public class conftest { 13055 int testmethod(int a, int b) { 13056 return a + b; 13057 } 13058 } 13059EOF 13060 13061 cat > conftest.xml << EOF 13062 <project name="conftest" default="conftest"> 13063 <target name="conftest"> 13064 <javac srcdir="." includes="conftest.java"> 13065 </javac> 13066 </target> 13067 </project> 13068EOF 13069 13070 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2) 13071 if test $? = 0 -a -f ./conftest.class; then 13072 AC_MSG_RESULT([Ant works]) 13073 if test -z "$WITH_ANT_HOME"; then 13074 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"` 13075 if test -z "$ANT_HOME"; then 13076 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"` 13077 fi 13078 else 13079 ANT_HOME="$WITH_ANT_HOME" 13080 fi 13081 else 13082 echo "configure: Ant test failed" >&5 13083 cat conftest.java >&5 13084 cat conftest.xml >&5 13085 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!]) 13086 fi 13087 cd "$a_cwd" 13088 rm -fr conftest.dir 13089 fi 13090 if test -z "$ANT_HOME"; then 13091 ANT_HOME="NO_ANT_HOME" 13092 else 13093 PathFormat "$ANT_HOME" 13094 ANT_HOME="$formatted_path" 13095 PathFormat "$ANT" 13096 ANT="$formatted_path" 13097 fi 13098 13099 dnl Checking for ant.jar 13100 if test "$ANT_HOME" != "NO_ANT_HOME"; then 13101 AC_MSG_CHECKING([Ant lib directory]) 13102 if test -f $ANT_HOME/lib/ant.jar; then 13103 ANT_LIB="$ANT_HOME/lib" 13104 else 13105 if test -f $ANT_HOME/ant.jar; then 13106 ANT_LIB="$ANT_HOME" 13107 else 13108 if test -f /usr/share/java/ant.jar; then 13109 ANT_LIB=/usr/share/java 13110 else 13111 if test -f /usr/share/ant-core/lib/ant.jar; then 13112 ANT_LIB=/usr/share/ant-core/lib 13113 else 13114 if test -f $ANT_HOME/lib/ant/ant.jar; then 13115 ANT_LIB="$ANT_HOME/lib/ant" 13116 else 13117 if test -f /usr/share/lib/ant/ant.jar; then 13118 ANT_LIB=/usr/share/lib/ant 13119 else 13120 AC_MSG_ERROR([Ant libraries not found!]) 13121 fi 13122 fi 13123 fi 13124 fi 13125 fi 13126 fi 13127 PathFormat "$ANT_LIB" 13128 ANT_LIB="$formatted_path" 13129 AC_MSG_RESULT([Ant lib directory found.]) 13130 fi 13131 13132 ant_minver=1.6.0 13133 ant_minminor1=`echo $ant_minver | cut -d"." -f2` 13134 13135 AC_MSG_CHECKING([whether Ant is >= $ant_minver]) 13136 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'` 13137 ant_version_major=`echo $ant_version | cut -d. -f1` 13138 ant_version_minor=`echo $ant_version | cut -d. -f2` 13139 echo "configure: ant_version $ant_version " >&5 13140 echo "configure: ant_version_major $ant_version_major " >&5 13141 echo "configure: ant_version_minor $ant_version_minor " >&5 13142 if test "$ant_version_major" -ge "2"; then 13143 AC_MSG_RESULT([yes, $ant_version]) 13144 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then 13145 AC_MSG_RESULT([yes, $ant_version]) 13146 else 13147 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver]) 13148 fi 13149 13150 rm -f conftest* core core.* *.core 13151fi 13152AC_SUBST(ANT) 13153AC_SUBST(ANT_HOME) 13154AC_SUBST(ANT_LIB) 13155 13156OOO_JUNIT_JAR= 13157HAMCREST_JAR= 13158if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then 13159 AC_MSG_CHECKING([for JUnit 4]) 13160 if test "$with_junit" = "yes"; then 13161 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then 13162 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar" 13163 elif test -e /usr/share/java/junit4.jar; then 13164 OOO_JUNIT_JAR=/usr/share/java/junit4.jar 13165 else 13166 if test -e /usr/share/lib/java/junit.jar; then 13167 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar 13168 else 13169 OOO_JUNIT_JAR=/usr/share/java/junit.jar 13170 fi 13171 fi 13172 else 13173 OOO_JUNIT_JAR=$with_junit 13174 fi 13175 if test "$_os" = "WINNT"; then 13176 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"` 13177 fi 13178 printf 'import org.junit.Before;' > conftest.java 13179 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then 13180 AC_MSG_RESULT([$OOO_JUNIT_JAR]) 13181 else 13182 AC_MSG_ERROR( 13183[cannot find JUnit 4 jar; please install one in the default location (/usr/share/java), 13184 specify its pathname via --with-junit=..., or disable it via --without-junit]) 13185 fi 13186 rm -f conftest.class conftest.java 13187 if test $OOO_JUNIT_JAR != ""; then 13188 BUILD_TYPE="$BUILD_TYPE QADEVOOO" 13189 fi 13190 13191 AC_MSG_CHECKING([for included Hamcrest]) 13192 printf 'import org.hamcrest.BaseDescription;' > conftest.java 13193 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then 13194 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR]) 13195 else 13196 AC_MSG_RESULT([Not included]) 13197 AC_MSG_CHECKING([for standalone hamcrest jar.]) 13198 if test "$with_hamcrest" = "yes"; then 13199 if test -e /usr/share/lib/java/hamcrest.jar; then 13200 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar 13201 elif test -e /usr/share/java/hamcrest/core.jar; then 13202 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar 13203 else 13204 HAMCREST_JAR=/usr/share/java/hamcrest.jar 13205 fi 13206 else 13207 HAMCREST_JAR=$with_hamcrest 13208 fi 13209 if test "$_os" = "WINNT"; then 13210 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"` 13211 fi 13212 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then 13213 AC_MSG_RESULT([$HAMCREST_JAR]) 13214 else 13215 AC_MSG_ERROR([junit does not contain hamcrest; please use a junit jar that includes hamcrest, install a hamcrest jar in the default location (/usr/share/java), 13216 specify its path with --with-hamcrest=..., or disable junit with --without-junit]) 13217 fi 13218 fi 13219 rm -f conftest.class conftest.java 13220fi 13221AC_SUBST(OOO_JUNIT_JAR) 13222AC_SUBST(HAMCREST_JAR) 13223 13224 13225AC_SUBST(SCPDEFS) 13226 13227# 13228# check for wget and curl 13229# 13230WGET= 13231CURL= 13232 13233if test "$enable_fetch_external" != "no"; then 13234 13235CURL=`which curl 2>/dev/null` 13236 13237for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do 13238 # wget new enough? 13239 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null 13240 if test $? -eq 0; then 13241 WGET=$i 13242 break 13243 fi 13244done 13245 13246if test -z "$WGET" -a -z "$CURL"; then 13247 AC_MSG_ERROR([neither wget nor curl found!]) 13248fi 13249 13250fi 13251 13252AC_SUBST(WGET) 13253AC_SUBST(CURL) 13254 13255# 13256# check for sha256sum 13257# 13258SHA256SUM= 13259 13260for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do 13261 eval "$i -a 256 --version" > /dev/null 2>&1 13262 ret=$? 13263 if test $ret -eq 0; then 13264 SHA256SUM="$i -a 256" 13265 break 13266 fi 13267done 13268 13269if test -z "$SHA256SUM"; then 13270 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do 13271 eval "$i --version" > /dev/null 2>&1 13272 ret=$? 13273 if test $ret -eq 0; then 13274 SHA256SUM=$i 13275 break 13276 fi 13277 done 13278fi 13279 13280if test -z "$SHA256SUM"; then 13281 AC_MSG_ERROR([no sha256sum found!]) 13282fi 13283 13284AC_SUBST(SHA256SUM) 13285 13286dnl =================================================================== 13287dnl Dealing with l10n options 13288dnl =================================================================== 13289AC_MSG_CHECKING([which languages to be built]) 13290# get list of all languages 13291# generate shell variable from completelangiso= from solenv/inc/langlist.mk 13292# the sed command does the following: 13293# + if a line ends with a backslash, append the next line to it 13294# + adds " on the beginning of the value (after =) 13295# + adds " at the end of the value 13296# + removes en-US; we want to put it on the beginning 13297# + prints just the section starting with 'completelangiso=' and ending with the " at the end of line 13298[eval $(sed -e :a -e '/\\$/N; s/\\\n//; ta' -n -e 's/=/="/;s/\([^\\]\)$/\1"/;s/en-US//;/^completelangiso/p' $SRC_ROOT/solenv/inc/langlist.mk)] 13299ALL_LANGS="en-US $completelangiso" 13300# check the configured localizations 13301WITH_LANG="$with_lang" 13302 13303# Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no". 13304# (Norwegian is "nb" and "nn".) 13305if test "$WITH_LANG" = "no"; then 13306 WITH_LANG= 13307fi 13308 13309if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then 13310 AC_MSG_RESULT([en-US]) 13311else 13312 AC_MSG_RESULT([$WITH_LANG]) 13313 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES" 13314 if test -z "$MSGFMT"; then 13315 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then 13316 MSGFMT="$LODE_HOME/opt/bin/msgfmt" 13317 elif test -x "/opt/lo/bin/msgfmt"; then 13318 MSGFMT="/opt/lo/bin/msgfmt" 13319 else 13320 AC_CHECK_PROGS(MSGFMT, [msgfmt]) 13321 if test -z "$MSGFMT"; then 13322 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.]) 13323 fi 13324 fi 13325 fi 13326 if test -z "$MSGUNIQ"; then 13327 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then 13328 MSGUNIQ="$LODE_HOME/opt/bin/msguniq" 13329 elif test -x "/opt/lo/bin/msguniq"; then 13330 MSGUNIQ="/opt/lo/bin/msguniq" 13331 else 13332 AC_CHECK_PROGS(MSGUNIQ, [msguniq]) 13333 if test -z "$MSGUNIQ"; then 13334 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.]) 13335 fi 13336 fi 13337 fi 13338fi 13339AC_SUBST(MSGFMT) 13340AC_SUBST(MSGUNIQ) 13341# check that the list is valid 13342for lang in $WITH_LANG; do 13343 test "$lang" = "ALL" && continue 13344 # need to check for the exact string, so add space before and after the list of all languages 13345 for vl in $ALL_LANGS; do 13346 if test "$vl" = "$lang"; then 13347 break 13348 fi 13349 done 13350 if test "$vl" != "$lang"; then 13351 # if you're reading this - you prolly quoted your languages remove the quotes ... 13352 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS]) 13353 fi 13354done 13355if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then 13356 echo $WITH_LANG | grep -q en-US 13357 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US` 13358fi 13359# list with substituted ALL 13360WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"` 13361test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US" 13362test "$WITH_LANG" = "en-US" && WITH_LANG= 13363if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then 13364 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz` 13365 ALL_LANGS=`echo $ALL_LANGS qtz` 13366fi 13367AC_SUBST(ALL_LANGS) 13368AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG") 13369AC_SUBST(WITH_LANG) 13370AC_SUBST(WITH_LANG_LIST) 13371AC_SUBST(GIT_NEEDED_SUBMODULES) 13372 13373WITH_POOR_HELP_LOCALIZATIONS= 13374if test -d "$SRC_ROOT/translations/source"; then 13375 for l in `ls -1 $SRC_ROOT/translations/source`; do 13376 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then 13377 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l" 13378 fi 13379 done 13380fi 13381AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS) 13382 13383if test -n "$with_locales"; then 13384 WITH_LOCALES="$with_locales" 13385 13386 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`" 13387 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see 13388 # config_host/config_locales.h.in 13389 for locale in $WITH_LOCALES; do 13390 lang=${locale%_*} 13391 13392 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1) 13393 13394 case $lang in 13395 hi|mr*ne) 13396 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva) 13397 ;; 13398 bg|ru) 13399 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl) 13400 ;; 13401 esac 13402 done 13403else 13404 AC_DEFINE(WITH_LOCALE_ALL) 13405fi 13406AC_SUBST(WITH_LOCALES) 13407 13408dnl git submodule update --reference 13409dnl =================================================================== 13410if test -n "${GIT_REFERENCE_SRC}"; then 13411 for repo in ${GIT_NEEDED_SUBMODULES}; do 13412 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then 13413 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}]) 13414 fi 13415 done 13416fi 13417AC_SUBST(GIT_REFERENCE_SRC) 13418 13419dnl git submodules linked dirs 13420dnl =================================================================== 13421if test -n "${GIT_LINK_SRC}"; then 13422 for repo in ${GIT_NEEDED_SUBMODULES}; do 13423 if ! test -d "${GIT_LINK_SRC}"/${repo}; then 13424 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}]) 13425 fi 13426 done 13427fi 13428AC_SUBST(GIT_LINK_SRC) 13429 13430dnl branding 13431dnl =================================================================== 13432AC_MSG_CHECKING([for alternative branding images directory]) 13433# initialize mapped arrays 13434BRAND_INTRO_IMAGES="intro.png intro-highres.png" 13435brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg" 13436 13437if test -z "$with_branding" -o "$with_branding" = "no"; then 13438 AC_MSG_RESULT([none]) 13439 DEFAULT_BRAND_IMAGES="$brand_files" 13440else 13441 if ! test -d $with_branding ; then 13442 AC_MSG_ERROR([No directory $with_branding, falling back to default branding]) 13443 else 13444 AC_MSG_RESULT([$with_branding]) 13445 CUSTOM_BRAND_DIR="$with_branding" 13446 for lfile in $brand_files 13447 do 13448 if ! test -f $with_branding/$lfile ; then 13449 AC_MSG_WARN([Branded file $lfile does not exist, using the default one]) 13450 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile" 13451 else 13452 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile" 13453 fi 13454 done 13455 check_for_progress="yes" 13456 fi 13457fi 13458AC_SUBST([BRAND_INTRO_IMAGES]) 13459AC_SUBST([CUSTOM_BRAND_DIR]) 13460AC_SUBST([CUSTOM_BRAND_IMAGES]) 13461AC_SUBST([DEFAULT_BRAND_IMAGES]) 13462 13463 13464AC_MSG_CHECKING([for 'intro' progress settings]) 13465PROGRESSBARCOLOR= 13466PROGRESSSIZE= 13467PROGRESSPOSITION= 13468PROGRESSFRAMECOLOR= 13469PROGRESSTEXTCOLOR= 13470PROGRESSTEXTBASELINE= 13471 13472if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then 13473 source "$with_branding/progress.conf" 13474 AC_MSG_RESULT([settings found in $with_branding/progress.conf]) 13475else 13476 AC_MSG_RESULT([none]) 13477fi 13478 13479AC_SUBST(PROGRESSBARCOLOR) 13480AC_SUBST(PROGRESSSIZE) 13481AC_SUBST(PROGRESSPOSITION) 13482AC_SUBST(PROGRESSFRAMECOLOR) 13483AC_SUBST(PROGRESSTEXTCOLOR) 13484AC_SUBST(PROGRESSTEXTBASELINE) 13485 13486 13487dnl =================================================================== 13488dnl Custom build version 13489dnl =================================================================== 13490AC_MSG_CHECKING([for extra build ID]) 13491if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then 13492 EXTRA_BUILDID="$with_extra_buildid" 13493fi 13494# in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch 13495if test -n "$EXTRA_BUILDID" ; then 13496 AC_MSG_RESULT([$EXTRA_BUILDID]) 13497else 13498 AC_MSG_RESULT([not set]) 13499fi 13500AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"]) 13501 13502OOO_VENDOR= 13503AC_MSG_CHECKING([for vendor]) 13504if test -z "$with_vendor" -o "$with_vendor" = "no"; then 13505 OOO_VENDOR="$USERNAME" 13506 13507 if test -z "$OOO_VENDOR"; then 13508 OOO_VENDOR="$USER" 13509 fi 13510 13511 if test -z "$OOO_VENDOR"; then 13512 OOO_VENDOR="`id -u -n`" 13513 fi 13514 13515 AC_MSG_RESULT([not set, using $OOO_VENDOR]) 13516else 13517 OOO_VENDOR="$with_vendor" 13518 AC_MSG_RESULT([$OOO_VENDOR]) 13519fi 13520AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR") 13521AC_SUBST(OOO_VENDOR) 13522 13523if test "$_os" = "Android" ; then 13524 ANDROID_PACKAGE_NAME= 13525 AC_MSG_CHECKING([for Android package name]) 13526 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then 13527 if test -n "$ENABLE_DEBUG"; then 13528 # Default to the package name that makes ndk-gdb happy. 13529 ANDROID_PACKAGE_NAME="org.libreoffice" 13530 else 13531 ANDROID_PACKAGE_NAME="org.example.libreoffice" 13532 fi 13533 13534 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME]) 13535 else 13536 ANDROID_PACKAGE_NAME="$with_android_package_name" 13537 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME]) 13538 fi 13539 AC_SUBST(ANDROID_PACKAGE_NAME) 13540fi 13541 13542AC_MSG_CHECKING([whether to install the compat oo* wrappers]) 13543if test "$with_compat_oowrappers" = "yes"; then 13544 WITH_COMPAT_OOWRAPPERS=TRUE 13545 AC_MSG_RESULT(yes) 13546else 13547 WITH_COMPAT_OOWRAPPERS= 13548 AC_MSG_RESULT(no) 13549fi 13550AC_SUBST(WITH_COMPAT_OOWRAPPERS) 13551 13552INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'` 13553AC_MSG_CHECKING([for install dirname]) 13554if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then 13555 INSTALLDIRNAME="$with_install_dirname" 13556fi 13557AC_MSG_RESULT([$INSTALLDIRNAME]) 13558AC_SUBST(INSTALLDIRNAME) 13559 13560AC_MSG_CHECKING([for prefix]) 13561test "x$prefix" = xNONE && prefix=$ac_default_prefix 13562test "x$exec_prefix" = xNONE && exec_prefix=$prefix 13563PREFIXDIR="$prefix" 13564AC_MSG_RESULT([$PREFIXDIR]) 13565AC_SUBST(PREFIXDIR) 13566 13567LIBDIR=[$(eval echo $(eval echo $libdir))] 13568AC_SUBST(LIBDIR) 13569 13570DATADIR=[$(eval echo $(eval echo $datadir))] 13571AC_SUBST(DATADIR) 13572 13573MANDIR=[$(eval echo $(eval echo $mandir))] 13574AC_SUBST(MANDIR) 13575 13576DOCDIR=[$(eval echo $(eval echo $docdir))] 13577AC_SUBST(DOCDIR) 13578 13579BINDIR=[$(eval echo $(eval echo $bindir))] 13580AC_SUBST(BINDIR) 13581 13582INSTALLDIR="$LIBDIR/$INSTALLDIRNAME" 13583AC_SUBST(INSTALLDIR) 13584 13585TESTINSTALLDIR="${BUILDDIR}/test-install" 13586AC_SUBST(TESTINSTALLDIR) 13587 13588 13589# =================================================================== 13590# OAuth2 id and secrets 13591# =================================================================== 13592 13593AC_MSG_CHECKING([for Google Drive client id and secret]) 13594if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then 13595 AC_MSG_RESULT([not set]) 13596 GDRIVE_CLIENT_ID="\"\"" 13597 GDRIVE_CLIENT_SECRET="\"\"" 13598else 13599 AC_MSG_RESULT([set]) 13600 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\"" 13601 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\"" 13602fi 13603AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID) 13604AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET) 13605 13606AC_MSG_CHECKING([for Alfresco Cloud client id and secret]) 13607if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then 13608 AC_MSG_RESULT([not set]) 13609 ALFRESCO_CLOUD_CLIENT_ID="\"\"" 13610 ALFRESCO_CLOUD_CLIENT_SECRET="\"\"" 13611else 13612 AC_MSG_RESULT([set]) 13613 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\"" 13614 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\"" 13615fi 13616AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID) 13617AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET) 13618 13619AC_MSG_CHECKING([for OneDrive client id and secret]) 13620if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then 13621 AC_MSG_RESULT([not set]) 13622 ONEDRIVE_CLIENT_ID="\"\"" 13623 ONEDRIVE_CLIENT_SECRET="\"\"" 13624else 13625 AC_MSG_RESULT([set]) 13626 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\"" 13627 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\"" 13628fi 13629AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID) 13630AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET) 13631 13632 13633dnl =================================================================== 13634dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent 13635dnl --enable-dependency-tracking configure option 13636dnl =================================================================== 13637AC_MSG_CHECKING([whether to enable dependency tracking]) 13638if test "$enable_dependency_tracking" = "no"; then 13639 nodep=TRUE 13640 AC_MSG_RESULT([no]) 13641else 13642 AC_MSG_RESULT([yes]) 13643fi 13644AC_SUBST(nodep) 13645 13646dnl =================================================================== 13647dnl Number of CPUs to use during the build 13648dnl =================================================================== 13649AC_MSG_CHECKING([for number of processors to use]) 13650# plain --with-parallelism is just the default 13651if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then 13652 if test "$with_parallelism" = "no"; then 13653 PARALLELISM=0 13654 else 13655 PARALLELISM=$with_parallelism 13656 fi 13657else 13658 if test "$enable_icecream" = "yes"; then 13659 PARALLELISM="40" 13660 else 13661 case `uname -s` in 13662 13663 Darwin|FreeBSD|NetBSD|OpenBSD) 13664 PARALLELISM=`sysctl -n hw.ncpu` 13665 ;; 13666 13667 Linux) 13668 PARALLELISM=`getconf _NPROCESSORS_ONLN` 13669 ;; 13670 # what else than above does profit here *and* has /proc? 13671 *) 13672 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l` 13673 ;; 13674 esac 13675 13676 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an 13677 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all). 13678 fi 13679fi 13680 13681if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then 13682 if test -z "$with_parallelism"; then 13683 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.]) 13684 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this." 13685 PARALLELISM="1" 13686 else 13687 add_warning "make 3.81 is prone to crashes with parallelism > 1. Since --with-parallelism was explicitly given, it is honored, but do not complain when make segfaults on you." 13688 fi 13689fi 13690 13691if test $PARALLELISM -eq 0; then 13692 AC_MSG_RESULT([explicit make -j option needed]) 13693else 13694 AC_MSG_RESULT([$PARALLELISM]) 13695fi 13696AC_SUBST(PARALLELISM) 13697 13698IWYU_PATH="$with_iwyu" 13699AC_SUBST(IWYU_PATH) 13700if test ! -z "$IWYU_PATH"; then 13701 if test ! -f "$IWYU_PATH"; then 13702 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu]) 13703 fi 13704fi 13705 13706# 13707# Set up ILIB for MSVC build 13708# 13709ILIB1= 13710if test "$build_os" = "cygwin"; then 13711 ILIB="." 13712 if test -n "$JAVA_HOME"; then 13713 ILIB="$ILIB;$JAVA_HOME/lib" 13714 fi 13715 ILIB1=-link 13716 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH" 13717 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH" 13718 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH" 13719 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH" 13720 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then 13721 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH" 13722 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH" 13723 fi 13724 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH" 13725 ucrtlibpath_formatted=$formatted_path 13726 ILIB="$ILIB;$ucrtlibpath_formatted" 13727 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted" 13728 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then 13729 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib" 13730 else 13731 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH" 13732 fi 13733 13734 if test "$cross_compiling" != "yes"; then 13735 ILIB_FOR_BUILD="$ILIB" 13736 fi 13737fi 13738AC_SUBST(ILIB) 13739AC_SUBST(ILIB_FOR_BUILD) 13740 13741# =================================================================== 13742# Creating bigger shared library to link against 13743# =================================================================== 13744AC_MSG_CHECKING([whether to create huge library]) 13745MERGELIBS= 13746 13747if test $_os = iOS -o $_os = Android; then 13748 # Never any point in mergelibs for these as we build just static 13749 # libraries anyway... 13750 enable_mergelibs=no 13751fi 13752 13753if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then 13754 if test $_os != Linux -a $_os != WINNT; then 13755 add_warning "--enable-mergelibs is not tested for this platform" 13756 fi 13757 MERGELIBS="TRUE" 13758 AC_MSG_RESULT([yes]) 13759 AC_DEFINE(ENABLE_MERGELIBS) 13760else 13761 AC_MSG_RESULT([no]) 13762fi 13763AC_SUBST([MERGELIBS]) 13764 13765dnl =================================================================== 13766dnl icerun is a wrapper that stops us spawning tens of processes 13767dnl locally - for tools that can't be executed on the compile cluster 13768dnl this avoids a dozen javac's ganging up on your laptop to kill it. 13769dnl =================================================================== 13770AC_MSG_CHECKING([whether to use icerun wrapper]) 13771ICECREAM_RUN= 13772if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then 13773 ICECREAM_RUN=icerun 13774 AC_MSG_RESULT([yes]) 13775else 13776 AC_MSG_RESULT([no]) 13777fi 13778AC_SUBST(ICECREAM_RUN) 13779 13780dnl =================================================================== 13781dnl Setup the ICECC_VERSION for the build the same way it was set for 13782dnl configure, so that CC/CXX and ICECC_VERSION are in sync 13783dnl =================================================================== 13784x_ICECC_VERSION=[\#] 13785if test -n "$ICECC_VERSION" ; then 13786 x_ICECC_VERSION= 13787fi 13788AC_SUBST(x_ICECC_VERSION) 13789AC_SUBST(ICECC_VERSION) 13790 13791dnl =================================================================== 13792 13793AC_MSG_CHECKING([MPL subset]) 13794MPL_SUBSET= 13795 13796if test "$enable_mpl_subset" = "yes"; then 13797 warn_report=false 13798 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then 13799 warn_report=true 13800 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then 13801 warn_report=true 13802 fi 13803 if test "$warn_report" = "true"; then 13804 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.]) 13805 fi 13806 if test "x$enable_postgresql_sdbc" != "xno"; then 13807 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.]) 13808 fi 13809 if test "$enable_lotuswordpro" = "yes"; then 13810 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.]) 13811 fi 13812 if test "$WITH_WEBDAV" = "neon"; then 13813 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.]) 13814 fi 13815 if test -n "$ENABLE_POPPLER"; then 13816 if test "x$SYSTEM_POPPLER" = "x"; then 13817 AC_MSG_ERROR([need to disable PDF import via poppler or use system library]) 13818 fi 13819 fi 13820 # cf. m4/libo_check_extension.m4 13821 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then 13822 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS']) 13823 fi 13824 for theme in $WITH_THEMES; do 13825 case $theme in 13826 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL 13827 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;; 13828 *) : ;; 13829 esac 13830 done 13831 13832 ENABLE_OPENGL_TRANSITIONS= 13833 13834 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then 13835 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.]) 13836 fi 13837 13838 MPL_SUBSET="TRUE" 13839 AC_DEFINE(MPL_HAVE_SUBSET) 13840 AC_MSG_RESULT([only]) 13841else 13842 AC_MSG_RESULT([no restrictions]) 13843fi 13844AC_SUBST(MPL_SUBSET) 13845 13846dnl =================================================================== 13847 13848AC_MSG_CHECKING([formula logger]) 13849ENABLE_FORMULA_LOGGER= 13850 13851if test "x$enable_formula_logger" = "xyes"; then 13852 AC_MSG_RESULT([yes]) 13853 AC_DEFINE(ENABLE_FORMULA_LOGGER) 13854 ENABLE_FORMULA_LOGGER=TRUE 13855elif test -n "$ENABLE_DBGUTIL" ; then 13856 AC_MSG_RESULT([yes]) 13857 AC_DEFINE(ENABLE_FORMULA_LOGGER) 13858 ENABLE_FORMULA_LOGGER=TRUE 13859else 13860 AC_MSG_RESULT([no]) 13861fi 13862 13863AC_SUBST(ENABLE_FORMULA_LOGGER) 13864 13865dnl =================================================================== 13866dnl Checking for active Antivirus software. 13867dnl =================================================================== 13868 13869if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then 13870 AC_MSG_CHECKING([for active Antivirus software]) 13871 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs` 13872 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then 13873 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then 13874 AC_MSG_RESULT([found]) 13875 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' 13876 echo $EICAR_STRING > $SRC_ROOT/eicar 13877 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar` 13878 rm $SRC_ROOT/eicar 13879 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then 13880 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST]) 13881 fi 13882 echo $EICAR_STRING > $BUILDDIR/eicar 13883 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar` 13884 rm $BUILDDIR/eicar 13885 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then 13886 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST]) 13887 fi 13888 add_warning "To speed up builds and avoid failures in unit tests, it is highly recommended that you exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST" 13889 else 13890 AC_MSG_RESULT([not found]) 13891 fi 13892 else 13893 AC_MSG_RESULT([n/a]) 13894 fi 13895fi 13896 13897dnl =================================================================== 13898dnl Setting up the environment. 13899dnl =================================================================== 13900AC_MSG_NOTICE([setting up the build environment variables...]) 13901 13902AC_SUBST(COMPATH) 13903 13904if test "$build_os" = "cygwin"; then 13905 if test -d "$COMPATH/atlmfc/lib/spectre"; then 13906 ATL_LIB="$COMPATH/atlmfc/lib/spectre" 13907 ATL_INCLUDE="$COMPATH/atlmfc/include" 13908 elif test -d "$COMPATH/atlmfc/lib"; then 13909 ATL_LIB="$COMPATH/atlmfc/lib" 13910 ATL_INCLUDE="$COMPATH/atlmfc/include" 13911 else 13912 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE 13913 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl" 13914 fi 13915 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH" 13916 ATL_LIB=`win_short_path_for_make "$ATL_LIB"` 13917 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"` 13918 13919 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/ 13920 PathFormat "/usr/bin/find.exe" 13921 FIND="$formatted_path" 13922 PathFormat "/usr/bin/sort.exe" 13923 SORT="$formatted_path" 13924 PathFormat "/usr/bin/grep.exe" 13925 WIN_GREP="$formatted_path" 13926 PathFormat "/usr/bin/ls.exe" 13927 WIN_LS="$formatted_path" 13928 PathFormat "/usr/bin/touch.exe" 13929 WIN_TOUCH="$formatted_path" 13930else 13931 FIND=find 13932 SORT=sort 13933fi 13934 13935AC_SUBST(ATL_INCLUDE) 13936AC_SUBST(ATL_LIB) 13937AC_SUBST(FIND) 13938AC_SUBST(SORT) 13939AC_SUBST(WIN_GREP) 13940AC_SUBST(WIN_LS) 13941AC_SUBST(WIN_TOUCH) 13942 13943AC_SUBST(BUILD_TYPE) 13944 13945AC_SUBST(SOLARINC) 13946 13947PathFormat "$PERL" 13948PERL="$formatted_path" 13949AC_SUBST(PERL) 13950 13951if test -n "$TMPDIR"; then 13952 TEMP_DIRECTORY="$TMPDIR" 13953else 13954 TEMP_DIRECTORY="/tmp" 13955fi 13956if test "$build_os" = "cygwin"; then 13957 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"` 13958fi 13959AC_SUBST(TEMP_DIRECTORY) 13960 13961# setup the PATH for the environment 13962if test -n "$LO_PATH_FOR_BUILD"; then 13963 LO_PATH="$LO_PATH_FOR_BUILD" 13964 case "$host_os" in 13965 cygwin*|wsl*) 13966 pathmunge "$MSVC_HOST_PATH" "before" 13967 ;; 13968 esac 13969else 13970 LO_PATH="$PATH" 13971 13972 case "$host_os" in 13973 13974 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*) 13975 if test "$ENABLE_JAVA" != ""; then 13976 pathmunge "$JAVA_HOME/bin" "after" 13977 fi 13978 ;; 13979 13980 cygwin*|wsl*) 13981 # Win32 make needs native paths 13982 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then 13983 LO_PATH=`cygpath -p -m "$PATH"` 13984 fi 13985 if test "$WIN_BUILD_ARCH" = "x64"; then 13986 # needed for msi packaging 13987 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before" 13988 fi 13989 # .NET 4.6 and higher don't have bin directory 13990 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then 13991 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before" 13992 fi 13993 pathmunge "$WINDOWS_SDK_HOME/bin" "before" 13994 pathmunge "$CSC_PATH" "before" 13995 pathmunge "$MIDL_PATH" "before" 13996 pathmunge "$AL_PATH" "before" 13997 pathmunge "$MSVC_MULTI_PATH" "before" 13998 pathmunge "$MSVC_BUILD_PATH" "before" 13999 if test -n "$MSBUILD_PATH" ; then 14000 pathmunge "$MSBUILD_PATH" "before" 14001 fi 14002 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before" 14003 if test "$ENABLE_JAVA" != ""; then 14004 if test -d "$JAVA_HOME/jre/bin/client"; then 14005 pathmunge "$JAVA_HOME/jre/bin/client" "before" 14006 fi 14007 if test -d "$JAVA_HOME/jre/bin/hotspot"; then 14008 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before" 14009 fi 14010 pathmunge "$JAVA_HOME/bin" "before" 14011 fi 14012 pathmunge "$MSVC_HOST_PATH" "before" 14013 ;; 14014 14015 solaris*) 14016 pathmunge "/usr/css/bin" "before" 14017 if test "$ENABLE_JAVA" != ""; then 14018 pathmunge "$JAVA_HOME/bin" "after" 14019 fi 14020 ;; 14021 esac 14022fi 14023 14024AC_SUBST(LO_PATH) 14025 14026# Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects: 14027if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then 14028 x_LO_ELFCHECK_ALLOWLIST= 14029else 14030 x_LO_ELFCHECK_ALLOWLIST=[\#] 14031fi 14032AC_SUBST(x_LO_ELFCHECK_ALLOWLIST) 14033AC_SUBST(LO_ELFCHECK_ALLOWLIST) 14034 14035libo_FUZZ_SUMMARY 14036 14037# Generate a configuration sha256 we can use for deps 14038if test -f config_host.mk; then 14039 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"` 14040fi 14041if test -f config_host_lang.mk; then 14042 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"` 14043fi 14044 14045CFLAGS=$my_original_CFLAGS 14046CXXFLAGS=$my_original_CXXFLAGS 14047CPPFLAGS=$my_original_CPPFLAGS 14048 14049AC_CONFIG_LINKS([include:include]) 14050 14051# Keep in sync with list of files far up, at AC_MSG_CHECKING([for 14052# BUILD platform configuration] - otherwise breaks cross building 14053AC_CONFIG_FILES([config_host.mk 14054 config_host_lang.mk 14055 Makefile 14056 bin/bffvalidator.sh 14057 bin/odfvalidator.sh 14058 bin/officeotron.sh 14059 hardened_runtime.xcent 14060 instsetoo_native/util/openoffice.lst 14061 sysui/desktop/macosx/Info.plist 14062 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in]) 14063AC_CONFIG_HEADERS([config_host/config_buildid.h]) 14064AC_CONFIG_HEADERS([config_host/config_box2d.h]) 14065AC_CONFIG_HEADERS([config_host/config_clang.h]) 14066AC_CONFIG_HEADERS([config_host/config_dconf.h]) 14067AC_CONFIG_HEADERS([config_host/config_eot.h]) 14068AC_CONFIG_HEADERS([config_host/config_extensions.h]) 14069AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h]) 14070AC_CONFIG_HEADERS([config_host/config_cxxabi.h]) 14071AC_CONFIG_HEADERS([config_host/config_dbus.h]) 14072AC_CONFIG_HEADERS([config_host/config_features.h]) 14073AC_CONFIG_HEADERS([config_host/config_feature_desktop.h]) 14074AC_CONFIG_HEADERS([config_host/config_feature_opencl.h]) 14075AC_CONFIG_HEADERS([config_host/config_firebird.h]) 14076AC_CONFIG_HEADERS([config_host/config_folders.h]) 14077AC_CONFIG_HEADERS([config_host/config_fuzzers.h]) 14078AC_CONFIG_HEADERS([config_host/config_gio.h]) 14079AC_CONFIG_HEADERS([config_host/config_global.h]) 14080AC_CONFIG_HEADERS([config_host/config_gpgme.h]) 14081AC_CONFIG_HEADERS([config_host/config_java.h]) 14082AC_CONFIG_HEADERS([config_host/config_langs.h]) 14083AC_CONFIG_HEADERS([config_host/config_lgpl.h]) 14084AC_CONFIG_HEADERS([config_host/config_libcxx.h]) 14085AC_CONFIG_HEADERS([config_host/config_liblangtag.h]) 14086AC_CONFIG_HEADERS([config_host/config_locales.h]) 14087AC_CONFIG_HEADERS([config_host/config_mpl.h]) 14088AC_CONFIG_HEADERS([config_host/config_oox.h]) 14089AC_CONFIG_HEADERS([config_host/config_options.h]) 14090AC_CONFIG_HEADERS([config_host/config_options_calc.h]) 14091AC_CONFIG_HEADERS([config_host/config_zxing.h]) 14092AC_CONFIG_HEADERS([config_host/config_skia.h]) 14093AC_CONFIG_HEADERS([config_host/config_typesizes.h]) 14094AC_CONFIG_HEADERS([config_host/config_vendor.h]) 14095AC_CONFIG_HEADERS([config_host/config_vcl.h]) 14096AC_CONFIG_HEADERS([config_host/config_vclplug.h]) 14097AC_CONFIG_HEADERS([config_host/config_version.h]) 14098AC_CONFIG_HEADERS([config_host/config_oauth2.h]) 14099AC_CONFIG_HEADERS([config_host/config_poppler.h]) 14100AC_CONFIG_HEADERS([config_host/config_python.h]) 14101AC_CONFIG_HEADERS([config_host/config_writerperfect.h]) 14102AC_OUTPUT 14103 14104if test "$CROSS_COMPILING" = TRUE; then 14105 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk 14106fi 14107 14108# touch the config timestamp file 14109if test ! -f config_host.mk.stamp; then 14110 echo > config_host.mk.stamp 14111elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then 14112 echo "Host Configuration unchanged - avoiding scp2 stamp update" 14113else 14114 echo > config_host.mk.stamp 14115fi 14116 14117# touch the config lang timestamp file 14118if test ! -f config_host_lang.mk.stamp; then 14119 echo > config_host_lang.mk.stamp 14120elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then 14121 echo "Language Configuration unchanged - avoiding scp2 stamp update" 14122else 14123 echo > config_host_lang.mk.stamp 14124fi 14125 14126 14127if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \ 14128 -a "$build_os" = "cygwin"; then 14129 14130cat << _EOS 14131**************************************************************************** 14132WARNING: 14133Your make version is known to be horribly slow, and hard to debug 14134problems with. To get a reasonably functional make please do: 14135 14136to install a pre-compiled binary make for Win32 14137 14138 mkdir -p /opt/lo/bin 14139 cd /opt/lo/bin 14140 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe 14141 cp make-4.2.1-msvc.exe make 14142 chmod +x make 14143 14144to install from source: 14145place yourself in a working directory of you choice. 14146 14147 git clone git://git.savannah.gnu.org/make.git 14148 14149 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"] 14150 set PATH=%PATH%;C:\Cygwin\bin 14151 [or Cygwin64, if that is what you have] 14152 cd path-to-make-repo-you-cloned-above 14153 build_w32.bat --without-guile 14154 14155should result in a WinRel/gnumake.exe. 14156Copy it to the Cygwin /opt/lo/bin directory as make.exe 14157 14158Then re-run autogen.sh 14159 14160Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined. 14161Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it. 14162 14163_EOS 14164if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then 14165 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later]) 14166fi 14167fi 14168 14169 14170cat << _EOF 14171**************************************************************************** 14172 14173To build, run: 14174$GNUMAKE 14175 14176To view some help, run: 14177$GNUMAKE help 14178 14179_EOF 14180 14181if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then 14182 cat << _EOF 14183After the build has finished successfully, you can immediately run what you built using the command: 14184_EOF 14185 14186 if test $_os = Darwin; then 14187 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app 14188 else 14189 echo instdir/program/soffice 14190 fi 14191 cat << _EOF 14192 14193If you want to run the smoketest, run: 14194$GNUMAKE check 14195 14196_EOF 14197fi 14198 14199if test -f warn; then 14200 cat warn 14201 rm warn 14202fi 14203 14204dnl vim:set shiftwidth=4 softtabstop=4 expandtab: 14205
