1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
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.
12 AC_INIT([LibreOffice],[7.4.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_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)])])
21 if 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.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
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)
58 filteredlibs="$filteredlibs $f"
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.
69 # Return value: $formatted_path and $formatted_path_unix.
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).
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
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
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
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $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')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
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"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
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.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
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?])
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")
180 formatted_path_unix="$formatted_path"
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.
190 # Args: $1: A possibly relative pathname
191 # Return value: $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)"
201 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
211 if test "$have_WARNINGS" = "no"; then
212 echo "*************************************" > "$WARNINGS_FILE"
214 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
218 COLORWARN="* WARNING :"
221 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
232 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235 mac_git_path=`which git 2>/dev/null`
236 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237 mac_path="$mac_path:`dirname $mac_git_path`"
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241 mac_gpg_path=`which gpg 2>/dev/null`
242 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243 mac_path="$mac_path:`dirname $mac_gpg_path`"
251 echo "********************************************************************"
253 echo "* Running ${PACKAGE_NAME} build configuration."
255 echo "********************************************************************"
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266 ac_cv_host="x86_64-pc-wsl"
267 ac_cv_host_cpu="x86_64"
269 ac_cv_build="$ac_cv_host"
270 ac_cv_build_cpu="$ac_cv_host_cpu"
271 ac_cv_build_os="$ac_cv_host_os"
273 # Emulation of Cygwin's cygpath command for WSL.
276 if test -n "$UNITTEST_WSL_CYGPATH"; then
277 echo -n cygpath "$@" "==> "
280 # Cygwin's real cygpath has a plethora of options but we use only a few here.
283 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
286 while getopts dmuwlsp opt; do
289 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
299 if test $# -ne 1; then
300 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
307 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310 if test -n "$opt_u"; then
311 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
316 # A Windows file in WSL format
317 input=$(wslpath -w "$input")
319 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320 # Already in Windows format
323 input=$(wslpath -w "$input")
326 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
329 if test -n "$opt_d" -o -n "$opt_s"; then
330 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
332 if test -n "$opt_m"; then
333 input="${input//\\//}"
340 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
347 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
353 if test -n "$UNITTEST_WSL_CYGPATH"; then
356 # Nothing special with these file names, just arbitrary ones picked to test with
357 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361 # At least on my machine for instance this file does have an 8.3 name
362 cygpath -d /mnt/c/windows/WindowsUpdate.log
363 # But for instance this one doesn't
364 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365 cygpath -ws /mnt/c/windows/WindowsUpdate.log
366 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367 cygpath -ms /mnt/c/windows/WindowsUpdate.log
369 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
383 # Use of PathFormat must be after AC_CANONICAL_BUILD above
385 printf "$formatted_path , $formatted_path_unix\n"
388 printf "$formatted_path , $formatted_path_unix\n"
390 PathFormat "$PROGRAMFILESX86"
391 printf "$formatted_path , $formatted_path_unix\n"
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399 PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402 PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415 PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
451 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503 GNUMAKE="$LODE_HOME/opt/bin/make"
504 elif test -x "/opt/lo/bin/make"; then
505 GNUMAKE="/opt/lo/bin/make"
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511 if test -n "$a"; then
512 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
513 if test $? -eq 0; then
514 if test "$build_os" = "cygwin"; then
515 if test -n "$($a -v | grep 'Built for Windows')" ; then
516 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517 GNUMAKE_WIN_NATIVE="TRUE"
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530 AC_MSG_ERROR([not found. install GNU Make.])
532 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
537 win_short_path_for_make()
539 local short_path="$1"
540 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541 cygpath -sm "$short_path"
543 cygpath -u "$(cygpath -d "$short_path")"
548 if test "$build_os" = "cygwin"; then
549 PathFormat "$SRC_ROOT"
550 SRC_ROOT="$formatted_path"
551 PathFormat "$BUILDDIR"
552 BUILDDIR="$formatted_path"
554 AC_MSG_CHECKING(for explicit COMSPEC)
555 if test -z "$COMSPEC"; then
556 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
558 AC_MSG_RESULT([found: $COMSPEC])
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576 AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
591 AC_ARG_ENABLE(fuzz-options,
592 AS_HELP_STRING([--enable-fuzz-options],
593 [Randomly enable or disable each of those configurable options
594 that are supposed to be freely selectable without interdependencies,
595 or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605 AS_HELP_STRING([--with-android-ndk],
606 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610 AS_HELP_STRING([--with-android-ndk-toolchain-version],
611 [Specify which toolchain version to use, of those present in the
612 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613 with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616 AS_HELP_STRING([--with-android-sdk],
617 [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621 AS_HELP_STRING([--with-android-api-level],
622 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627 with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630 eval ANDROID_NDK_HOME=$with_android_ndk
632 # Set up a lot of pre-canned defaults
634 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635 if test ! -f $ANDROID_NDK_HOME/source.properties; then
636 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
638 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
640 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
642 if test -z "$ANDROID_NDK_VERSION"; then
643 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
645 case $ANDROID_NDK_VERSION in
647 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
649 11.1.*|12.1.*|13.1.*|14.1.*)
650 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
652 16.*|17.*|18.*|19.*|20.*)
655 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
661 if test -n "$with_android_api_level" ; then
662 ANDROID_API_LEVEL="$with_android_api_level"
665 android_cpu=$host_cpu
666 if test $host_cpu = arm; then
667 android_platform_prefix=arm-linux-androideabi
668 android_gnu_prefix=$android_platform_prefix
669 LLVM_TRIPLE=armv7a-linux-androideabi
670 ANDROID_APP_ABI=armeabi-v7a
671 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672 elif test $host_cpu = aarch64; then
673 android_platform_prefix=aarch64-linux-android
674 android_gnu_prefix=$android_platform_prefix
675 LLVM_TRIPLE=$android_platform_prefix
676 # minimum android version that supports aarch64
677 if test "$ANDROID_API_LEVEL" -lt "21" ; then
680 ANDROID_APP_ABI=arm64-v8a
681 elif test $host_cpu = x86_64; then
682 android_platform_prefix=x86_64-linux-android
683 android_gnu_prefix=$android_platform_prefix
684 LLVM_TRIPLE=$android_platform_prefix
685 # minimum android version that supports x86_64
687 ANDROID_APP_ABI=x86_64
689 # host_cpu is something like "i386" or "i686" I guess, NDK uses
690 # "x86" in some contexts
692 android_platform_prefix=$android_cpu
693 android_gnu_prefix=i686-linux-android
694 LLVM_TRIPLE=$android_gnu_prefix
698 case "$with_android_ndk_toolchain_version" in
700 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
703 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
706 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710 # manage to link the (app-specific) single huge .so that is built for the app in
711 # android/source/ if there is debug information in a significant part of the object files.
712 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713 # all objects have been built with debug information.)
716 android_HOST_TAG=linux-x86_64
719 android_HOST_TAG=darwin-x86_64
722 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723 # ndk would also support windows and windows-x86_64
726 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728 dnl TODO: NSS build uses it...
729 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740 if test "$ENABLE_LTO" = TRUE; then
741 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742 # $CC and $CXX when building external libraries
743 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
746 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748 if test -z "$CC"; then
749 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
752 if test -z "$CXX"; then
753 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769 eval ANDROID_SDK_HOME=$with_android_sdk
770 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775 AS_HELP_STRING([--enable-android-lok],
776 [The Android app from the android/ subdir needs several tweaks all
777 over the place that break the LOK when used in the Online-based
778 Android app. This switch indicates that the intent of this build is
779 actually the Online-based, non-modified LOK.])
782 if test -n "$ANDROID_NDK_HOME" ; then
783 if test "$enable_android_lok" = yes; then
784 ENABLE_ANDROID_LOK=TRUE
785 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794 AS_HELP_STRING([--enable-android-editing],
795 [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799 ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
806 enable_firebird_sdbc=no
807 enable_mariadb_sdbc=no
808 enable_postgresql_sdbc=no
809 enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 # may: using_headless_plugin defaults to $using_freetype_fontconfig
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
846 INSTROOTCONTENTSUFFIX=
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
856 using_freetype_fontconfig=yes
861 dnl ===========================================================
862 dnl Check whether we're using Solaris 10 - SPARC or Intel.
863 dnl ===========================================================
864 AC_MSG_CHECKING([the Solaris operating system release])
865 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866 if test "$_os_release" -lt "10"; then
867 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
869 AC_MSG_RESULT([ok ($_os_release)])
872 dnl Check whether we're using a SPARC or i386 processor
873 AC_MSG_CHECKING([the processor type])
874 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875 AC_MSG_RESULT([ok ($host_cpu)])
877 AC_MSG_ERROR([only SPARC and i386 processors are supported])
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882 using_freetype_fontconfig=yes
887 if test "$enable_fuzzers" = yes; then
888 test_system_freetype=no
894 using_freetype_fontconfig=yes
900 # When building on Windows normally with MSVC under Cygwin,
901 # configure thinks that the host platform (the platform the
902 # built code will run on) is Cygwin, even if it obviously is
903 # Windows, which in Autoconf terminology is called
904 # "mingw32". (Which is misleading as MinGW is the name of the
905 # tool-chain, not an operating system.)
907 # Somewhat confusing, yes. But this configure script doesn't
908 # look at $host etc that much, it mostly uses its own $_os
909 # variable, set here in this case statement.
911 using_freetype_fontconfig=no
922 if test "$host_cpu" = "aarch64"; then
926 enable_firebird_sdbc=no
930 darwin*|macos*) # macOS
931 using_freetype_fontconfig=no
936 if test -n "$LODE_HOME" ; then
938 AC_MSG_NOTICE([sanitized the PATH to $PATH])
941 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
942 INSTROOTCONTENTSUFFIX=/Contents
943 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
944 # See comment above the case "$host_os"
945 LINKFLAGSSHL="-dynamiclib -single_module"
952 # -undefined error is the default
958 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
959 # the "macos" part so be sure to use aarch64-apple-darwin for now.
960 HOST_PLATFORM=aarch64-apple-darwin
964 # Apple's Clang uses "arm64"
965 host_cpu_for_clang=arm64
970 using_freetype_fontconfig=no
977 if test -n "$LODE_HOME" ; then
979 AC_MSG_NOTICE([sanitized the PATH to $PATH])
983 enable_mpl_subset=yes
984 enable_lotuswordpro=no
985 disable_database_connectivity_dependencies
988 enable_extension_integration=no
992 if test "$enable_ios_simulator" = "yes"; then
993 host=x86_64-apple-darwin
995 # See comment above the case "$host_os"
996 LINKFLAGSSHL="-dynamiclib -single_module"
1003 # -undefined error is the default
1004 LINKFLAGSNOUNDEFS=""
1006 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1007 # part, so use aarch64-apple-darwin for now.
1008 HOST_PLATFORM=aarch64-apple-darwin
1010 # Apple's Clang uses "arm64"
1011 host_cpu_for_clang=arm64
1015 using_freetype_fontconfig=yes
1018 AC_MSG_CHECKING([the FreeBSD operating system release])
1019 if test -n "$with_os_version"; then
1020 OSVERSION="$with_os_version"
1022 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1024 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1025 AC_MSG_CHECKING([which thread library to use])
1026 if test "$OSVERSION" -lt "500016"; then
1027 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1028 PTHREAD_LIBS="-pthread"
1029 elif test "$OSVERSION" -lt "502102"; then
1030 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1031 PTHREAD_LIBS="-lc_r"
1034 PTHREAD_LIBS="-pthread"
1036 AC_MSG_RESULT([$PTHREAD_LIBS])
1041 using_freetype_fontconfig=yes
1045 PTHREAD_LIBS="-pthread -lpthread"
1050 using_freetype_fontconfig=yes
1053 test_gstreamer_1_0=no
1054 PTHREAD_LIBS=-pthread
1059 using_freetype_fontconfig=yes
1061 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062 PTHREAD_LIBS="-pthread"
1067 using_freetype_fontconfig=yes
1070 PTHREAD_LIBS="-pthread"
1075 using_freetype_fontconfig=yes
1076 using_headless_plugin=no
1080 test_system_freetype=no
1082 disable_database_connectivity_dependencies
1083 enable_lotuswordpro=no
1084 enable_mpl_subset=yes
1085 enable_cairo_canvas=no
1093 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1097 using_freetype_fontconfig=yes
1106 enable_postgresql_sdbc=no
1107 enable_firebird_sdbc=no
1112 using_freetype_fontconfig=yes
1115 enable_compiler_plugins=no
1118 enable_database_connectivity=no
1128 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1132 AC_SUBST(HOST_PLATFORM)
1134 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1135 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1138 # Set defaults, if not set by platform
1139 test "${test_cups+set}" = set || test_cups="$using_x11"
1140 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1141 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1142 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1143 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1144 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1145 # don't handle test_qt5, so it can disable test_kf5 later
1146 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1147 test "${test_randr+set}" = set || test_randr="$using_x11"
1148 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1149 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1151 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1152 # Make sure fontconfig and freetype test both either system or not
1153 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1154 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1156 # convenience / platform overriding "fixes"
1158 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1159 test "$test_kf5" = yes && test_qt5=yes
1160 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1161 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1162 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1164 # Keep in sync with the above $using_x11 depending test default list
1169 test_gstreamer_1_0=no
1180 test "$using_x11" = yes && USING_X11=TRUE
1182 if test "$using_freetype_fontconfig" = yes; then
1183 USE_HEADLESS_CODE=TRUE
1184 if test "$using_headless_plugin" = yes; then
1185 AC_DEFINE(ENABLE_HEADLESS)
1186 ENABLE_HEADLESS=TRUE
1193 AC_SUBST(ENABLE_HEADLESS)
1194 AC_SUBST(USE_HEADLESS_CODE)
1196 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1197 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1198 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1199 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1201 # ===================================================================
1203 # End initial platform setup
1205 # ===================================================================
1207 if test "$_os" = "Android" ; then
1208 # Verify that the NDK and SDK options are proper
1209 if test -z "$with_android_ndk"; then
1210 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1211 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1212 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1215 if test -z "$ANDROID_SDK_HOME"; then
1216 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1217 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1218 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1221 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1222 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1223 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1224 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1225 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1226 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1227 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1228 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1230 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1231 AC_MSG_WARN([android support repository not found - install with
1232 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1233 to allow the build to download the specified version of the android support libraries])
1234 add_warning "android support repository not found - install with"
1235 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1236 add_warning "to allow the build to download the specified version of the android support libraries"
1240 if test "$_os" = "AIX"; then
1241 AC_PATH_PROG(GAWK, gawk)
1242 if test -z "$GAWK"; then
1243 AC_MSG_ERROR([gawk not found in \$PATH])
1247 AC_SUBST(SDKDIRNAME)
1249 AC_SUBST(PTHREAD_CFLAGS)
1250 AC_SUBST(PTHREAD_LIBS)
1252 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1253 # By default use the ones specified by our build system,
1254 # but explicit override is possible.
1255 AC_MSG_CHECKING(for explicit AFLAGS)
1256 if test -n "$AFLAGS"; then
1257 AC_MSG_RESULT([$AFLAGS])
1263 AC_MSG_CHECKING(for explicit CFLAGS)
1264 if test -n "$CFLAGS"; then
1265 AC_MSG_RESULT([$CFLAGS])
1271 AC_MSG_CHECKING(for explicit CXXFLAGS)
1272 if test -n "$CXXFLAGS"; then
1273 AC_MSG_RESULT([$CXXFLAGS])
1279 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1280 if test -n "$OBJCFLAGS"; then
1281 AC_MSG_RESULT([$OBJCFLAGS])
1287 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1288 if test -n "$OBJCXXFLAGS"; then
1289 AC_MSG_RESULT([$OBJCXXFLAGS])
1295 AC_MSG_CHECKING(for explicit LDFLAGS)
1296 if test -n "$LDFLAGS"; then
1297 AC_MSG_RESULT([$LDFLAGS])
1307 AC_SUBST(OBJCXXFLAGS)
1311 AC_SUBST(x_CXXFLAGS)
1312 AC_SUBST(x_OBJCFLAGS)
1313 AC_SUBST(x_OBJCXXFLAGS)
1316 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1317 my_original_CFLAGS=$CFLAGS
1318 my_original_CXXFLAGS=$CXXFLAGS
1319 my_original_CPPFLAGS=$CPPFLAGS
1321 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1322 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1323 dnl AC_PROG_CC internally.
1324 if test "$_os" != "WINNT"; then
1325 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1329 if test -z "$CC_BASE"; then
1330 CC_BASE=`first_arg_basename "$CC"`
1334 if test "$_os" != "WINNT"; then
1335 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1339 AC_SUBST(ENDIANNESS)
1341 if test $_os != "WINNT"; then
1343 AC_SEARCH_LIBS([dlsym], [dl],
1344 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1345 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1348 AC_SUBST(DLOPEN_LIBS)
1350 # Check for a (GNU) backtrace implementation
1351 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1352 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1353 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1355 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1356 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1357 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1360 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1361 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1364 dnl ===================================================================
1365 dnl Sanity checks for Emscripten SDK setup
1366 dnl ===================================================================
1368 if test "$_os" = "Emscripten"; then
1370 if ! which emconfigure >/dev/null 2>&1; then
1371 AC_MSG_WARN([emconfigure must be in your \$PATH])
1374 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1375 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1378 if test $EMSCRIPTEN_ERROR -ne 0; then
1379 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1383 ###############################################################################
1384 # Extensions switches --enable/--disable
1385 ###############################################################################
1386 # By default these should be enabled unless having extra dependencies.
1387 # If there is extra dependency over configure options then the enable should
1388 # be automagic based on whether the requiring feature is enabled or not.
1389 # All this options change anything only with --enable-extension-integration.
1391 # The name of this option and its help string makes it sound as if
1392 # extensions are built anyway, just not integrated in the installer,
1393 # if you use --disable-extension-integration. Is that really the
1396 AC_ARG_ENABLE(ios-simulator,
1397 AS_HELP_STRING([--enable-ios-simulator],
1398 [build for iOS simulator])
1401 libo_FUZZ_ARG_ENABLE(extension-integration,
1402 AS_HELP_STRING([--disable-extension-integration],
1403 [Disable integration of the built extensions in the installer of the
1404 product. Use this switch to disable the integration.])
1407 AC_ARG_ENABLE(avmedia,
1408 AS_HELP_STRING([--disable-avmedia],
1409 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1410 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1412 AC_ARG_ENABLE(database-connectivity,
1413 AS_HELP_STRING([--disable-database-connectivity],
1414 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1417 # This doesn't mean not building (or "integrating") extensions
1418 # (although it probably should; i.e. it should imply
1419 # --disable-extension-integration I guess), it means not supporting
1420 # any extension mechanism at all
1421 libo_FUZZ_ARG_ENABLE(extensions,
1422 AS_HELP_STRING([--disable-extensions],
1423 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1426 AC_ARG_ENABLE(scripting,
1427 AS_HELP_STRING([--disable-scripting],
1428 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1429 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1431 # This is mainly for Android and iOS, but could potentially be used in some
1432 # special case otherwise, too, so factored out as a separate setting
1434 AC_ARG_ENABLE(dynamic-loading,
1435 AS_HELP_STRING([--disable-dynamic-loading],
1436 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1439 libo_FUZZ_ARG_ENABLE(report-builder,
1440 AS_HELP_STRING([--disable-report-builder],
1441 [Disable the Report Builder.])
1444 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1445 AS_HELP_STRING([--enable-ext-wiki-publisher],
1446 [Enable the Wiki Publisher extension.])
1449 libo_FUZZ_ARG_ENABLE(lpsolve,
1450 AS_HELP_STRING([--disable-lpsolve],
1451 [Disable compilation of the lp solve solver ])
1453 libo_FUZZ_ARG_ENABLE(coinmp,
1454 AS_HELP_STRING([--disable-coinmp],
1455 [Disable compilation of the CoinMP solver ])
1458 libo_FUZZ_ARG_ENABLE(pdfimport,
1459 AS_HELP_STRING([--disable-pdfimport],
1460 [Disable building the PDF import feature.])
1463 libo_FUZZ_ARG_ENABLE(pdfium,
1464 AS_HELP_STRING([--disable-pdfium],
1465 [Disable building PDFium. Results in unsecure PDF signature verification.])
1468 libo_FUZZ_ARG_ENABLE(skia,
1469 AS_HELP_STRING([--disable-skia],
1470 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1473 ###############################################################################
1475 dnl ---------- *** ----------
1477 libo_FUZZ_ARG_ENABLE(mergelibs,
1478 AS_HELP_STRING([--enable-mergelibs],
1479 [Merge several of the smaller libraries into one big, "merged", one.])
1482 libo_FUZZ_ARG_ENABLE(breakpad,
1483 AS_HELP_STRING([--enable-breakpad],
1484 [Enables breakpad for crash reporting.])
1487 libo_FUZZ_ARG_ENABLE(crashdump,
1488 AS_HELP_STRING([--disable-crashdump],
1489 [Disable dump.ini and dump-file, when --enable-breakpad])
1492 AC_ARG_ENABLE(fetch-external,
1493 AS_HELP_STRING([--disable-fetch-external],
1494 [Disables fetching external tarballs from web sources.])
1497 AC_ARG_ENABLE(fuzzers,
1498 AS_HELP_STRING([--enable-fuzzers],
1499 [Enables building libfuzzer targets for fuzz testing.])
1502 libo_FUZZ_ARG_ENABLE(pch,
1503 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1504 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1505 Using 'system' will include only external headers, 'base' will add also headers
1506 from base modules, 'normal' will also add all headers except from the module built,
1507 'full' will use all suitable headers even from a module itself.])
1510 libo_FUZZ_ARG_ENABLE(epm,
1511 AS_HELP_STRING([--enable-epm],
1512 [LibreOffice includes self-packaging code, that requires epm, however epm is
1513 useless for large scale package building.])
1516 libo_FUZZ_ARG_ENABLE(odk,
1517 AS_HELP_STRING([--enable-odk],
1518 [Enable building the Office Development Kit, the part that extensions need to build against])
1521 AC_ARG_ENABLE(mpl-subset,
1522 AS_HELP_STRING([--enable-mpl-subset],
1523 [Don't compile any pieces which are not MPL or more liberally licensed])
1526 libo_FUZZ_ARG_ENABLE(evolution2,
1527 AS_HELP_STRING([--enable-evolution2],
1528 [Allows the built-in evolution 2 addressbook connectivity build to be
1532 AC_ARG_ENABLE(avahi,
1533 AS_HELP_STRING([--enable-avahi],
1534 [Determines whether to use Avahi to advertise Impress to remote controls.])
1537 libo_FUZZ_ARG_ENABLE(werror,
1538 AS_HELP_STRING([--enable-werror],
1539 [Turn warnings to errors. (Has no effect in modules where the treating
1540 of warnings as errors is disabled explicitly.)]),
1543 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1544 AS_HELP_STRING([--enable-assert-always-abort],
1545 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1548 libo_FUZZ_ARG_ENABLE(dbgutil,
1549 AS_HELP_STRING([--enable-dbgutil],
1550 [Provide debugging support from --enable-debug and include additional debugging
1551 utilities such as object counting or more expensive checks.
1552 This is the recommended option for developers.
1553 Note that this makes the build ABI incompatible, it is not possible to mix object
1554 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1556 libo_FUZZ_ARG_ENABLE(debug,
1557 AS_HELP_STRING([--enable-debug],
1558 [Include debugging information, disable compiler optimization and inlining plus
1559 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1561 libo_FUZZ_ARG_ENABLE(split-debug,
1562 AS_HELP_STRING([--disable-split-debug],
1563 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1564 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1566 libo_FUZZ_ARG_ENABLE(gdb-index,
1567 AS_HELP_STRING([--disable-gdb-index],
1568 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1569 The feature requires the gold or lld linker.]))
1571 libo_FUZZ_ARG_ENABLE(sal-log,
1572 AS_HELP_STRING([--enable-sal-log],
1573 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1575 libo_FUZZ_ARG_ENABLE(symbols,
1576 AS_HELP_STRING([--enable-symbols],
1577 [Generate debug information.
1578 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1579 otherwise. It is possible to explicitly specify gbuild build targets
1580 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1581 everything in the directory; there is no ordering, more specific overrides
1582 more general, and disabling takes precedence).
1583 Example: --enable-symbols="all -sw/ -Library_sc".]))
1585 libo_FUZZ_ARG_ENABLE(optimized,
1586 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1587 [Whether to compile with optimization flags.
1588 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1589 otherwise. Using 'debug' will try to use only optimizations that should
1590 not interfere with debugging. For Emscripten we default to optimized (-O1)
1591 debug build, as otherwise binaries become too large.]))
1593 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1594 AS_HELP_STRING([--disable-runtime-optimizations],
1595 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1596 JVM JIT) that are known to interact badly with certain dynamic analysis
1597 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1598 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1599 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1601 AC_ARG_WITH(valgrind,
1602 AS_HELP_STRING([--with-valgrind],
1603 [Make availability of Valgrind headers a hard requirement.]))
1605 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1606 AS_HELP_STRING([--enable-compiler-plugins],
1607 [Enable compiler plugins that will perform additional checks during
1608 building. Enabled automatically by --enable-dbgutil.
1609 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1610 COMPILER_PLUGINS_DEBUG=
1611 if test "$enable_compiler_plugins" = debug; then
1612 enable_compiler_plugins=yes
1613 COMPILER_PLUGINS_DEBUG=TRUE
1616 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1617 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1618 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1619 relevant in the --disable-compiler-plugins case.]))
1621 libo_FUZZ_ARG_ENABLE(ooenv,
1622 AS_HELP_STRING([--enable-ooenv],
1623 [Enable ooenv for the instdir installation.]))
1626 AS_HELP_STRING([--enable-lto],
1627 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1628 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1631 AC_ARG_ENABLE(python,
1632 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1633 [Enables or disables Python support at run-time.
1634 Also specifies what Python to use at build-time.
1635 'fully-internal' even forces the internal version for uses of Python
1637 On macOS the only choices are
1638 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1641 libo_FUZZ_ARG_ENABLE(gtk3,
1642 AS_HELP_STRING([--disable-gtk3],
1643 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1644 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1647 AS_HELP_STRING([--enable-gtk4],
1648 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1650 AC_ARG_ENABLE(introspection,
1651 AS_HELP_STRING([--enable-introspection],
1652 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1653 Linux distributions.)]))
1655 AC_ARG_ENABLE(split-app-modules,
1656 AS_HELP_STRING([--enable-split-app-modules],
1657 [Split file lists for app modules, e.g. base, calc.
1658 Has effect only with make distro-pack-install]),
1661 AC_ARG_ENABLE(split-opt-features,
1662 AS_HELP_STRING([--enable-split-opt-features],
1663 [Split file lists for some optional features, e.g. pyuno, testtool.
1664 Has effect only with make distro-pack-install]),
1667 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1668 AS_HELP_STRING([--disable-cairo-canvas],
1669 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1672 libo_FUZZ_ARG_ENABLE(dbus,
1673 AS_HELP_STRING([--disable-dbus],
1674 [Determines whether to enable features that depend on dbus.
1675 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1676 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1678 libo_FUZZ_ARG_ENABLE(sdremote,
1679 AS_HELP_STRING([--disable-sdremote],
1680 [Determines whether to enable Impress remote control (i.e. the server component).]),
1681 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1683 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1684 AS_HELP_STRING([--disable-sdremote-bluetooth],
1685 [Determines whether to build sdremote with bluetooth support.
1686 Requires dbus on Linux.]))
1688 libo_FUZZ_ARG_ENABLE(gio,
1689 AS_HELP_STRING([--disable-gio],
1690 [Determines whether to use the GIO support.]),
1691 ,test "${enable_gio+set}" = set || enable_gio=yes)
1694 AS_HELP_STRING([--enable-qt5],
1695 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1700 AS_HELP_STRING([--enable-qt6],
1701 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1706 AS_HELP_STRING([--enable-kf5],
1707 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1708 KF5 are available.]),
1711 AC_ARG_ENABLE(gtk3_kde5,
1712 AS_HELP_STRING([--enable-gtk3-kde5],
1713 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1714 platforms where Gtk3, Qt5 and Plasma is available.]),
1718 AS_HELP_STRING([--disable-gui],
1719 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1722 libo_FUZZ_ARG_ENABLE(randr,
1723 AS_HELP_STRING([--disable-randr],
1724 [Disable RandR support in the vcl project.]),
1725 ,test "${enable_randr+set}" = set || enable_randr=yes)
1727 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1728 AS_HELP_STRING([--disable-gstreamer-1-0],
1729 [Disable building with the gstreamer 1.0 avmedia backend.]),
1730 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1732 libo_FUZZ_ARG_ENABLE(cve-tests,
1733 AS_HELP_STRING([--disable-cve-tests],
1734 [Prevent CVE tests to be executed]),
1737 libo_FUZZ_ARG_ENABLE(chart-tests,
1738 AS_HELP_STRING([--enable-chart-tests],
1739 [Executes chart XShape tests. In a perfect world these tests would be
1740 stable and everyone could run them, in reality it is best to run them
1741 only on a few machines that are known to work and maintained by people
1742 who can judge if a test failure is a regression or not.]),
1745 AC_ARG_ENABLE(build-opensymbol,
1746 AS_HELP_STRING([--enable-build-opensymbol],
1747 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1748 fontforge installed.]),
1751 AC_ARG_ENABLE(dependency-tracking,
1752 AS_HELP_STRING([--enable-dependency-tracking],
1753 [Do not reject slow dependency extractors.])[
1754 --disable-dependency-tracking
1755 Disables generation of dependency information.
1756 Speed up one-time builds.],
1759 AC_ARG_ENABLE(icecream,
1760 AS_HELP_STRING([--enable-icecream],
1761 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1762 It defaults to /opt/icecream for the location of the icecream gcc/g++
1763 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1767 AS_HELP_STRING([--enable-ld=<linker>],
1768 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1769 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1770 If <linker> contains any ':', the part before the first ':' is used as the value of
1771 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1772 needed for Clang 12).]),
1775 libo_FUZZ_ARG_ENABLE(cups,
1776 AS_HELP_STRING([--disable-cups],
1777 [Do not build cups support.])
1780 AC_ARG_ENABLE(ccache,
1781 AS_HELP_STRING([--disable-ccache],
1782 [Do not try to use ccache automatically.
1783 By default we will try to detect if ccache is available; in that case if
1784 CC/CXX are not yet set, and --enable-icecream is not given, we
1785 attempt to use ccache. --disable-ccache disables ccache completely.
1786 Additionally ccache's depend mode is enabled if possible,
1787 use --enable-ccache=nodepend to enable ccache without depend mode.
1791 AC_ARG_ENABLE(z7-debug,
1792 AS_HELP_STRING([--enable-z7-debug],
1793 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1794 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1795 Enabled by default if ccache is detected.]))
1797 libo_FUZZ_ARG_ENABLE(online-update,
1798 AS_HELP_STRING([--enable-online-update],
1799 [Enable the online update service that will check for new versions of
1800 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1801 If the value is "mar", the experimental Mozilla-like update will be
1802 enabled instead of the traditional update mechanism.]),
1805 AC_ARG_WITH(update-config,
1806 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1807 [Path to the update config ini file]))
1809 libo_FUZZ_ARG_ENABLE(extension-update,
1810 AS_HELP_STRING([--disable-extension-update],
1811 [Disable possibility to update installed extensions.]),
1814 libo_FUZZ_ARG_ENABLE(release-build,
1815 AS_HELP_STRING([--enable-release-build],
1816 [Enable release build. Note that the "release build" choice is orthogonal to
1817 whether symbols are present, debug info is generated, or optimization
1819 See http://wiki.documentfoundation.org/Development/DevBuild]),
1822 AC_ARG_ENABLE(windows-build-signing,
1823 AS_HELP_STRING([--enable-windows-build-signing],
1824 [Enable signing of windows binaries (*.exe, *.dll)]),
1827 AC_ARG_ENABLE(silent-msi,
1828 AS_HELP_STRING([--enable-silent-msi],
1829 [Enable MSI with LIMITUI=1 (silent install).]),
1832 AC_ARG_ENABLE(macosx-code-signing,
1833 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1834 [Sign executables, dylibs, frameworks and the app bundle. If you
1835 don't provide an identity the first suitable certificate
1836 in your keychain is used.]),
1839 AC_ARG_ENABLE(macosx-package-signing,
1840 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1841 [Create a .pkg suitable for uploading to the Mac App Store and sign
1842 it. If you don't provide an identity the first suitable certificate
1843 in your keychain is used.]),
1846 AC_ARG_ENABLE(macosx-sandbox,
1847 AS_HELP_STRING([--enable-macosx-sandbox],
1848 [Make the app bundle run in a sandbox. Requires code signing.
1849 Is required by apps distributed in the Mac App Store, and implies
1850 adherence to App Store rules.]),
1853 AC_ARG_WITH(macosx-bundle-identifier,
1854 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1855 [Define the macOS bundle identifier. Default is the somewhat weird
1856 org.libreoffice.script ("script", huh?).]),
1857 ,with_macosx_bundle_identifier=org.libreoffice.script)
1859 AC_ARG_WITH(product-name,
1860 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1861 [Define the product name. Default is AC_PACKAGE_NAME.]),
1862 ,with_product_name=$PRODUCTNAME)
1864 libo_FUZZ_ARG_ENABLE(community-flavor,
1865 AS_HELP_STRING([--disable-community-flavor],
1866 [Disable the Community branding.]),
1869 AC_ARG_WITH(package-version,
1870 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1871 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1874 libo_FUZZ_ARG_ENABLE(readonly-installset,
1875 AS_HELP_STRING([--enable-readonly-installset],
1876 [Prevents any attempts by LibreOffice to write into its installation. That means
1877 at least that no "system-wide" extensions can be added. Partly experimental work in
1878 progress, probably not fully implemented. Always enabled for macOS.]),
1881 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1882 AS_HELP_STRING([--disable-mariadb-sdbc],
1883 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1886 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1887 AS_HELP_STRING([--disable-postgresql-sdbc],
1888 [Disable the build of the PostgreSQL-SDBC driver.])
1891 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1892 AS_HELP_STRING([--disable-lotuswordpro],
1893 [Disable the build of the Lotus Word Pro filter.]),
1894 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1896 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1897 AS_HELP_STRING([--disable-firebird-sdbc],
1898 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1899 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1901 AC_ARG_ENABLE(bogus-pkg-config,
1902 AS_HELP_STRING([--enable-bogus-pkg-config],
1903 [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.]),
1906 AC_ARG_ENABLE(openssl,
1907 AS_HELP_STRING([--disable-openssl],
1908 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1909 components will use NSS. Work in progress,
1910 use only if you are hacking on it.]),
1911 ,enable_openssl=yes)
1913 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1914 AS_HELP_STRING([--enable-cipher-openssl-backend],
1915 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1916 Requires --enable-openssl.]))
1919 AS_HELP_STRING([--disable-nss],
1920 [Disable using NSS. If disabled,
1921 components will use openssl. Work in progress,
1922 use only if you are hacking on it.]),
1925 AC_ARG_ENABLE(library-bin-tar,
1926 AS_HELP_STRING([--enable-library-bin-tar],
1927 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1928 Some libraries can save their build result in a tarball
1929 stored in TARFILE_LOCATION. That binary tarball is
1930 uniquely identified by the source tarball,
1931 the content of the config_host.mk file and the content
1932 of the top-level directory in core for that library
1933 If this option is enabled, then if such a tarfile exist, it will be untarred
1934 instead of the source tarfile, and the build step will be skipped for that
1936 If a proper tarfile does not exist, then the normal source-based
1937 build is done for that library and a proper binary tarfile is created
1938 for the next time.]),
1941 AC_ARG_ENABLE(dconf,
1942 AS_HELP_STRING([--disable-dconf],
1943 [Disable the dconf configuration backend (enabled by default where
1946 libo_FUZZ_ARG_ENABLE(formula-logger,
1948 [--enable-formula-logger],
1949 [Enable formula logger for logging formula calculation flow in Calc.]
1954 AS_HELP_STRING([--disable-ldap],
1955 [Disable LDAP support.]),
1958 AC_ARG_ENABLE(opencl,
1959 AS_HELP_STRING([--disable-opencl],
1960 [Disable OpenCL support.]),
1963 libo_FUZZ_ARG_ENABLE(librelogo,
1964 AS_HELP_STRING([--disable-librelogo],
1965 [Do not build LibreLogo.]),
1966 ,enable_librelogo=yes)
1968 AC_ARG_ENABLE(wasm-strip,
1969 AS_HELP_STRING([--enable-wasm-strip],
1970 [Strip the static build like for WASM/emscripten platform.]),
1971 ,enable_wasm_strip=yes)
1973 AC_ARG_ENABLE(xmlhelp,
1974 AS_HELP_STRING([--disable-xmlhelp],
1975 [Disable XML help support]),
1976 ,enable_xmlhelp=yes)
1978 AC_ARG_ENABLE(customtarget-components,
1979 AS_HELP_STRING([--enable-customtarget-components],
1980 [This is WIP and probably just works together with --enable-wasm-strip.]))
1982 dnl ===================================================================
1983 dnl Optional Packages (--with/without-)
1984 dnl ===================================================================
1986 AC_ARG_WITH(gcc-home,
1987 AS_HELP_STRING([--with-gcc-home],
1988 [Specify the location of gcc/g++ manually. This can be used in conjunction
1989 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1990 non-default path.]),
1993 AC_ARG_WITH(gnu-patch,
1994 AS_HELP_STRING([--with-gnu-patch],
1995 [Specify location of GNU patch on Solaris or FreeBSD.]),
1998 AC_ARG_WITH(build-platform-configure-options,
1999 AS_HELP_STRING([--with-build-platform-configure-options],
2000 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2004 AS_HELP_STRING([--with-gnu-cp],
2005 [Specify location of GNU cp on Solaris or FreeBSD.]),
2008 AC_ARG_WITH(external-tar,
2009 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2010 [Specify an absolute path of where to find (and store) tarfiles.]),
2011 TARFILE_LOCATION=$withval ,
2014 AC_ARG_WITH(referenced-git,
2015 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2016 [Specify another checkout directory to reference. This makes use of
2017 git submodule update --reference, and saves a lot of diskspace
2018 when having multiple trees side-by-side.]),
2019 GIT_REFERENCE_SRC=$withval ,
2022 AC_ARG_WITH(linked-git,
2023 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2024 [Specify a directory where the repositories of submodules are located.
2025 This uses a method similar to git-new-workdir to get submodules.]),
2026 GIT_LINK_SRC=$withval ,
2029 AC_ARG_WITH(galleries,
2030 AS_HELP_STRING([--with-galleries],
2031 [Specify how galleries should be built. It is possible either to
2032 build these internally from source ("build"),
2033 or to disable them ("no")]),
2037 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2038 [Choose which themes to include. By default those themes with an '*' are included.
2039 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2040 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2043 libo_FUZZ_ARG_WITH(helppack-integration,
2044 AS_HELP_STRING([--without-helppack-integration],
2045 [It will not integrate the helppacks to the installer
2046 of the product. Please use this switch to use the online help
2047 or separate help packages.]),
2050 libo_FUZZ_ARG_WITH(fonts,
2051 AS_HELP_STRING([--without-fonts],
2052 [LibreOffice includes some third-party fonts to provide a reliable basis for
2053 help content, templates, samples, etc. When these fonts are already
2054 known to be available on the system then you should use this option.]),
2058 AS_HELP_STRING([--with-epm],
2059 [Decides which epm to use. Default is to use the one from the system if
2060 one is built. When either this is not there or you say =internal epm
2064 AC_ARG_WITH(package-format,
2065 AS_HELP_STRING([--with-package-format],
2066 [Specify package format(s) for LibreOffice installation sets. The
2067 implicit --without-package-format leads to no installation sets being
2068 generated. Possible values: aix, archive, bsd, deb, dmg,
2069 installed, msi, pkg, and rpm.
2070 Example: --with-package-format='deb rpm']),
2074 AS_HELP_STRING([--with-tls],
2075 [Decides which TLS/SSL and cryptographic implementations to use for
2076 LibreOffice's code. Notice that this doesn't apply for depending
2077 libraries like "curl", for example. Default is to use NSS
2078 although OpenSSL is also possible. Notice that selecting NSS restricts
2079 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2080 restrict by now the usage of NSS in LO's code. Possible values:
2081 openssl, nss. Example: --with-tls="nss"]),
2084 AC_ARG_WITH(system-libs,
2085 AS_HELP_STRING([--with-system-libs],
2086 [Use libraries already on system -- enables all --with-system-* flags.]),
2089 AC_ARG_WITH(system-bzip2,
2090 AS_HELP_STRING([--with-system-bzip2],
2091 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2092 [with_system_bzip2="$with_system_libs"])
2094 AC_ARG_WITH(system-headers,
2095 AS_HELP_STRING([--with-system-headers],
2096 [Use headers already on system -- enables all --with-system-* flags for
2097 external packages whose headers are the only entities used i.e.
2098 boost/odbc/sane-header(s).]),,
2099 [with_system_headers="$with_system_libs"])
2101 AC_ARG_WITH(system-jars,
2102 AS_HELP_STRING([--without-system-jars],
2103 [When building with --with-system-libs, also the needed jars are expected
2104 on the system. Use this to disable that]),,
2105 [with_system_jars="$with_system_libs"])
2107 AC_ARG_WITH(system-cairo,
2108 AS_HELP_STRING([--with-system-cairo],
2109 [Use cairo libraries already on system. Happens automatically for
2110 (implicit) --enable-gtk3.]))
2112 AC_ARG_WITH(system-epoxy,
2113 AS_HELP_STRING([--with-system-epoxy],
2114 [Use epoxy libraries already on system. Happens automatically for
2115 (implicit) --enable-gtk3.]),,
2116 [with_system_epoxy="$with_system_libs"])
2118 AC_ARG_WITH(myspell-dicts,
2119 AS_HELP_STRING([--with-myspell-dicts],
2120 [Adds myspell dictionaries to the LibreOffice installation set]),
2123 AC_ARG_WITH(system-dicts,
2124 AS_HELP_STRING([--without-system-dicts],
2125 [Do not use dictionaries from system paths.]),
2128 AC_ARG_WITH(external-dict-dir,
2129 AS_HELP_STRING([--with-external-dict-dir],
2130 [Specify external dictionary dir.]),
2133 AC_ARG_WITH(external-hyph-dir,
2134 AS_HELP_STRING([--with-external-hyph-dir],
2135 [Specify external hyphenation pattern dir.]),
2138 AC_ARG_WITH(external-thes-dir,
2139 AS_HELP_STRING([--with-external-thes-dir],
2140 [Specify external thesaurus dir.]),
2143 AC_ARG_WITH(system-zlib,
2144 AS_HELP_STRING([--with-system-zlib],
2145 [Use zlib already on system.]),,
2146 [with_system_zlib=auto])
2148 AC_ARG_WITH(system-jpeg,
2149 AS_HELP_STRING([--with-system-jpeg],
2150 [Use jpeg already on system.]),,
2151 [with_system_jpeg="$with_system_libs"])
2153 AC_ARG_WITH(system-expat,
2154 AS_HELP_STRING([--with-system-expat],
2155 [Use expat already on system.]),,
2156 [with_system_expat="$with_system_libs"])
2158 AC_ARG_WITH(system-libxml,
2159 AS_HELP_STRING([--with-system-libxml],
2160 [Use libxml/libxslt already on system.]),,
2161 [with_system_libxml=auto])
2163 AC_ARG_WITH(system-icu,
2164 AS_HELP_STRING([--with-system-icu],
2165 [Use icu already on system.]),,
2166 [with_system_icu="$with_system_libs"])
2168 AC_ARG_WITH(system-ucpp,
2169 AS_HELP_STRING([--with-system-ucpp],
2170 [Use ucpp already on system.]),,
2173 AC_ARG_WITH(system-openldap,
2174 AS_HELP_STRING([--with-system-openldap],
2175 [Use the OpenLDAP LDAP SDK already on system.]),,
2176 [with_system_openldap="$with_system_libs"])
2178 libo_FUZZ_ARG_ENABLE(poppler,
2179 AS_HELP_STRING([--disable-poppler],
2180 [Disable building Poppler.])
2183 AC_ARG_WITH(system-poppler,
2184 AS_HELP_STRING([--with-system-poppler],
2185 [Use system poppler (only needed for PDF import).]),,
2186 [with_system_poppler="$with_system_libs"])
2188 AC_ARG_WITH(system-abseil,
2189 AS_HELP_STRING([--with-system-abseil],
2190 [Use the abseil libraries already on system.]),,
2191 [with_system_abseil="$with_system_libs"])
2193 AC_ARG_WITH(system-openjpeg,
2194 AS_HELP_STRING([--with-system-openjpeg],
2195 [Use the OpenJPEG library already on system.]),,
2196 [with_system_openjpeg="$with_system_libs"])
2198 libo_FUZZ_ARG_ENABLE(gpgmepp,
2199 AS_HELP_STRING([--disable-gpgmepp],
2200 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2203 AC_ARG_WITH(system-gpgmepp,
2204 AS_HELP_STRING([--with-system-gpgmepp],
2205 [Use gpgmepp already on system]),,
2206 [with_system_gpgmepp="$with_system_libs"])
2208 AC_ARG_WITH(system-mariadb,
2209 AS_HELP_STRING([--with-system-mariadb],
2210 [Use MariaDB/MySQL libraries already on system.]),,
2211 [with_system_mariadb="$with_system_libs"])
2213 AC_ARG_ENABLE(bundle-mariadb,
2214 AS_HELP_STRING([--enable-bundle-mariadb],
2215 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2218 AC_ARG_WITH(system-postgresql,
2219 AS_HELP_STRING([--with-system-postgresql],
2220 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2221 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2222 [with_system_postgresql="$with_system_libs"])
2224 AC_ARG_WITH(libpq-path,
2225 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2226 [Use this PostgreSQL C interface (libpq) installation for building
2227 the PostgreSQL-SDBC extension.]),
2230 AC_ARG_WITH(system-firebird,
2231 AS_HELP_STRING([--with-system-firebird],
2232 [Use Firebird libraries already on system, for building the Firebird-SDBC
2233 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2234 [with_system_firebird="$with_system_libs"])
2236 AC_ARG_WITH(system-libtommath,
2237 AS_HELP_STRING([--with-system-libtommath],
2238 [Use libtommath already on system]),,
2239 [with_system_libtommath="$with_system_libs"])
2241 AC_ARG_WITH(system-hsqldb,
2242 AS_HELP_STRING([--with-system-hsqldb],
2243 [Use hsqldb already on system.]))
2245 AC_ARG_WITH(hsqldb-jar,
2246 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2247 [Specify path to jarfile manually.]),
2248 HSQLDB_JAR=$withval)
2250 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2251 AS_HELP_STRING([--disable-scripting-beanshell],
2252 [Disable support for scripts in BeanShell.]),
2256 AC_ARG_WITH(system-beanshell,
2257 AS_HELP_STRING([--with-system-beanshell],
2258 [Use beanshell already on system.]),,
2259 [with_system_beanshell="$with_system_jars"])
2261 AC_ARG_WITH(beanshell-jar,
2262 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2263 [Specify path to jarfile manually.]),
2266 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2267 AS_HELP_STRING([--disable-scripting-javascript],
2268 [Disable support for scripts in JavaScript.]),
2272 AC_ARG_WITH(system-rhino,
2273 AS_HELP_STRING([--with-system-rhino],
2274 [Use rhino already on system.]),,)
2275 # [with_system_rhino="$with_system_jars"])
2276 # Above is not used as we have different debug interface
2277 # patched into internal rhino. This code needs to be fixed
2278 # before we can enable it by default.
2280 AC_ARG_WITH(rhino-jar,
2281 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2282 [Specify path to jarfile manually.]),
2285 AC_ARG_WITH(system-jfreereport,
2286 AS_HELP_STRING([--with-system-jfreereport],
2287 [Use JFreeReport already on system.]),,
2288 [with_system_jfreereport="$with_system_jars"])
2290 AC_ARG_WITH(sac-jar,
2291 AS_HELP_STRING([--with-sac-jar=JARFILE],
2292 [Specify path to jarfile manually.]),
2295 AC_ARG_WITH(libxml-jar,
2296 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2297 [Specify path to jarfile manually.]),
2298 LIBXML_JAR=$withval)
2300 AC_ARG_WITH(flute-jar,
2301 AS_HELP_STRING([--with-flute-jar=JARFILE],
2302 [Specify path to jarfile manually.]),
2305 AC_ARG_WITH(jfreereport-jar,
2306 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2307 [Specify path to jarfile manually.]),
2308 JFREEREPORT_JAR=$withval)
2310 AC_ARG_WITH(liblayout-jar,
2311 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2312 [Specify path to jarfile manually.]),
2313 LIBLAYOUT_JAR=$withval)
2315 AC_ARG_WITH(libloader-jar,
2316 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2317 [Specify path to jarfile manually.]),
2318 LIBLOADER_JAR=$withval)
2320 AC_ARG_WITH(libformula-jar,
2321 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2322 [Specify path to jarfile manually.]),
2323 LIBFORMULA_JAR=$withval)
2325 AC_ARG_WITH(librepository-jar,
2326 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2327 [Specify path to jarfile manually.]),
2328 LIBREPOSITORY_JAR=$withval)
2330 AC_ARG_WITH(libfonts-jar,
2331 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2332 [Specify path to jarfile manually.]),
2333 LIBFONTS_JAR=$withval)
2335 AC_ARG_WITH(libserializer-jar,
2336 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2337 [Specify path to jarfile manually.]),
2338 LIBSERIALIZER_JAR=$withval)
2340 AC_ARG_WITH(libbase-jar,
2341 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2342 [Specify path to jarfile manually.]),
2343 LIBBASE_JAR=$withval)
2345 AC_ARG_WITH(system-odbc,
2346 AS_HELP_STRING([--with-system-odbc],
2347 [Use the odbc headers already on system.]),,
2348 [with_system_odbc="auto"])
2350 AC_ARG_WITH(system-sane,
2351 AS_HELP_STRING([--with-system-sane],
2352 [Use sane.h already on system.]),,
2353 [with_system_sane="$with_system_headers"])
2355 AC_ARG_WITH(system-bluez,
2356 AS_HELP_STRING([--with-system-bluez],
2357 [Use bluetooth.h already on system.]),,
2358 [with_system_bluez="$with_system_headers"])
2360 AC_ARG_WITH(system-boost,
2361 AS_HELP_STRING([--with-system-boost],
2362 [Use boost already on system.]),,
2363 [with_system_boost="$with_system_headers"])
2365 AC_ARG_WITH(system-cuckoo,
2366 AS_HELP_STRING([--with-system-cuckoo],
2367 [Use libcuckoo already on system.]),,
2368 [with_system_cuckoo="$with_system_headers"])
2370 AC_ARG_WITH(system-glm,
2371 AS_HELP_STRING([--with-system-glm],
2372 [Use glm already on system.]),,
2373 [with_system_glm="$with_system_headers"])
2375 AC_ARG_WITH(system-hunspell,
2376 AS_HELP_STRING([--with-system-hunspell],
2377 [Use libhunspell already on system.]),,
2378 [with_system_hunspell="$with_system_libs"])
2380 libo_FUZZ_ARG_ENABLE(zxing,
2381 AS_HELP_STRING([--disable-zxing],
2382 [Disable use of zxing external library.]))
2384 AC_ARG_WITH(system-zxing,
2385 AS_HELP_STRING([--with-system-zxing],
2386 [Use libzxing already on system.]),,
2387 [with_system_zxing="$with_system_libs"])
2389 AC_ARG_WITH(system-box2d,
2390 AS_HELP_STRING([--with-system-box2d],
2391 [Use box2d already on system.]),,
2392 [with_system_box2d="$with_system_libs"])
2394 AC_ARG_WITH(system-mythes,
2395 AS_HELP_STRING([--with-system-mythes],
2396 [Use mythes already on system.]),,
2397 [with_system_mythes="$with_system_libs"])
2399 AC_ARG_WITH(system-altlinuxhyph,
2400 AS_HELP_STRING([--with-system-altlinuxhyph],
2401 [Use ALTLinuxhyph already on system.]),,
2402 [with_system_altlinuxhyph="$with_system_libs"])
2404 AC_ARG_WITH(system-lpsolve,
2405 AS_HELP_STRING([--with-system-lpsolve],
2406 [Use lpsolve already on system.]),,
2407 [with_system_lpsolve="$with_system_libs"])
2409 AC_ARG_WITH(system-coinmp,
2410 AS_HELP_STRING([--with-system-coinmp],
2411 [Use CoinMP already on system.]),,
2412 [with_system_coinmp="$with_system_libs"])
2414 AC_ARG_WITH(system-liblangtag,
2415 AS_HELP_STRING([--with-system-liblangtag],
2416 [Use liblangtag library already on system.]),,
2417 [with_system_liblangtag="$with_system_libs"])
2419 AC_ARG_WITH(system-lockfile,
2420 AS_HELP_STRING([--with-system-lockfile[=file]],
2421 [Detect a system lockfile program or use the \$file argument.]))
2424 AS_HELP_STRING([--without-webdav],
2425 [Disable WebDAV support in the UCB.]))
2427 AC_ARG_WITH(linker-hash-style,
2428 AS_HELP_STRING([--with-linker-hash-style],
2429 [Use linker with --hash-style=<style> when linking shared objects.
2430 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2431 if supported on the build system, and "sysv" otherwise.]))
2433 AC_ARG_WITH(jdk-home,
2434 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2435 [If you have installed JDK 9 or later on your system please supply the
2436 path here. Note that this is not the location of the java command but the
2437 location of the entire distribution. In case of cross-compiling, this
2438 is the JDK of the host os. Use --with-build-platform-configure-options
2439 to point to a different build platform JDK.]),
2443 AS_HELP_STRING([--with-help],
2444 [Enable the build of help. There is a special parameter "common" that
2445 can be used to bundle only the common part, .e.g help-specific icons.
2446 This is useful when you build the helpcontent separately.])
2448 Usage: --with-help build the old local help
2449 --without-help no local help (default)
2450 --with-help=html build the new HTML local help
2451 --with-help=online build the new HTML online help
2455 AC_ARG_WITH(omindex,
2456 AS_HELP_STRING([--with-omindex],
2457 [Enable the support of xapian-omega index for online help.])
2459 Usage: --with-omindex=server prepare the pages for omindex
2460 but let xapian-omega be built in server.
2461 --with-omindex=noxap do not prepare online pages
2466 libo_FUZZ_ARG_WITH(java,
2467 AS_HELP_STRING([--with-java=<java command>],
2468 [Specify the name of the Java interpreter command. Typically "java"
2469 which is the default.
2471 To build without support for Java components, applets, accessibility
2472 or the XML filters written in Java, use --without-java or --with-java=no.]),
2473 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2474 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2477 AC_ARG_WITH(jvm-path,
2478 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2479 [Use a specific JVM search path at runtime.
2480 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2483 AC_ARG_WITH(ant-home,
2484 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2485 [If you have installed Apache Ant on your system, please supply the path here.
2486 Note that this is not the location of the Ant binary but the location
2487 of the entire distribution.]),
2490 AC_ARG_WITH(symbol-config,
2491 AS_HELP_STRING([--with-symbol-config],
2492 [Configuration for the crashreport symbol upload]),
2494 [with_symbol_config=no])
2496 AC_ARG_WITH(export-validation,
2497 AS_HELP_STRING([--without-export-validation],
2498 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2499 ,with_export_validation=auto)
2501 AC_ARG_WITH(bffvalidator,
2502 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2503 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2504 Requires installed Microsoft Office Binary File Format Validator.
2505 Note: export-validation (--with-export-validation) is required to be turned on.
2506 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2507 ,with_bffvalidator=no)
2509 libo_FUZZ_ARG_WITH(junit,
2510 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2511 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2512 --without-junit disables those tests. Not relevant in the --without-java case.]),
2515 AC_ARG_WITH(hamcrest,
2516 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2517 [Specifies the hamcrest jar file to use for JUnit-based tests.
2518 --without-junit disables those tests. Not relevant in the --without-java case.]),
2521 AC_ARG_WITH(perl-home,
2522 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2523 [If you have installed Perl 5 Distribution, on your system, please
2524 supply the path here. Note that this is not the location of the Perl
2525 binary but the location of the entire distribution.]),
2528 libo_FUZZ_ARG_WITH(doxygen,
2530 [--with-doxygen=<absolute path to doxygen executable>],
2531 [Specifies the doxygen executable to use when generating ODK C/C++
2532 documentation. --without-doxygen disables generation of ODK C/C++
2533 documentation. Not relevant in the --disable-odk case.]),
2536 AC_ARG_WITH(visual-studio,
2537 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2538 [Specify which Visual Studio version to use in case several are
2539 installed. Currently 2019 (default) and 2022 are supported.]),
2542 AC_ARG_WITH(windows-sdk,
2543 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2544 [Specify which Windows SDK, or "Windows Kit", version to use
2545 in case the one that came with the selected Visual Studio
2546 is not what you want for some reason. Note that not all compiler/SDK
2547 combinations are supported. The intent is that this option should not
2552 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2553 [Use this option to build LibreOffice with additional UI language support.
2554 English (US) is always included by default.
2555 Separate multiple languages with space.
2556 For all languages, use --with-lang=ALL.]),
2559 AC_ARG_WITH(locales,
2560 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2561 [Use this option to limit the locale information built in.
2562 Separate multiple locales with space.
2563 Very experimental and might well break stuff.
2564 Just a desperate measure to shrink code and data size.
2565 By default all the locales available is included.
2566 Just works with --disable-dynloading. Defaults to "ALL".
2567 This option is completely unrelated to --with-lang.])
2569 Affects also our character encoding conversion
2570 tables for encodings mainly targeted for a
2571 particular locale, like EUC-CN and EUC-TW for
2572 zh, ISO-2022-JP for ja.
2574 Affects also our add-on break iterator data for
2577 For the default, all locales, don't use this switch at all.
2578 Specifying just the language part of a locale means all matching
2579 locales will be included.
2583 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2584 libo_FUZZ_ARG_WITH(krb5,
2585 AS_HELP_STRING([--with-krb5],
2586 [Enable MIT Kerberos 5 support in modules that support it.
2587 By default automatically enabled on platforms
2588 where a good system Kerberos 5 is available.]),
2591 libo_FUZZ_ARG_WITH(gssapi,
2592 AS_HELP_STRING([--with-gssapi],
2593 [Enable GSSAPI support in modules that support it.
2594 By default automatically enabled on platforms
2595 where a good system GSSAPI is available.]),
2599 AS_HELP_STRING([--with-iwyu],
2600 [Use given IWYU binary path to check unneeded includes instead of building.
2601 Use only if you are hacking on it.]),
2604 libo_FUZZ_ARG_WITH(lxml,
2605 AS_HELP_STRING([--without-lxml],
2606 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2607 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2608 report widget classes and ids.]),
2611 libo_FUZZ_ARG_WITH(latest-c++,
2612 AS_HELP_STRING([--with-latest-c++],
2613 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2614 published standard.]),,
2615 [with_latest_c__=no])
2617 dnl ===================================================================
2619 dnl ===================================================================
2621 AC_ARG_WITH(branding,
2622 AS_HELP_STRING([--with-branding=/path/to/images],
2623 [Use given path to retrieve branding images set.])
2625 Search for intro.png about.svg and logo.svg.
2626 If any is missing, default ones will be used instead.
2628 Search also progress.conf for progress
2629 settings on intro screen :
2631 PROGRESSBARCOLOR="255,255,255" Set color of
2632 progress bar. Comma separated RGB decimal values.
2633 PROGRESSSIZE="407,6" Set size of progress bar.
2634 Comma separated decimal values (width, height).
2635 PROGRESSPOSITION="61,317" Set position of progress
2636 bar from left,top. Comma separated decimal values.
2637 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2638 bar frame. Comma separated RGB decimal values.
2639 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2640 bar text. Comma separated RGB decimal values.
2641 PROGRESSTEXTBASELINE="287" Set vertical position of
2642 progress bar text from top. Decimal value.
2644 Default values will be used if not found.
2649 AC_ARG_WITH(extra-buildid,
2650 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2651 [Show addition build identification in about dialog.]),
2656 AS_HELP_STRING([--with-vendor="John the Builder"],
2657 [Set vendor of the build.]),
2660 AC_ARG_WITH(privacy-policy-url,
2661 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2662 [The URL to your privacy policy (needed when
2663 enabling online-update or crashreporting via breakpad)]),
2664 [if test "x$with_privacy_policy_url" = "xyes"; then
2665 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2666 elif test "x$with_privacy_policy_url" = "xno"; then
2667 with_privacy_policy_url="undefined"
2669 ,[with_privacy_policy_url="undefined"])
2671 AC_ARG_WITH(android-package-name,
2672 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2673 [Set Android package name of the build.]),
2676 AC_ARG_WITH(compat-oowrappers,
2677 AS_HELP_STRING([--with-compat-oowrappers],
2678 [Install oo* wrappers in parallel with
2679 lo* ones to keep backward compatibility.
2680 Has effect only with make distro-pack-install]),
2683 AC_ARG_WITH(os-version,
2684 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2685 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2688 AC_ARG_WITH(idlc-cpp,
2689 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2690 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2693 AC_ARG_WITH(parallelism,
2694 AS_HELP_STRING([--with-parallelism],
2695 [Number of jobs to run simultaneously during build. Parallel builds can
2696 save a lot of time on multi-cpu machines. Defaults to the number of
2697 CPUs on the machine, unless you configure --enable-icecream - then to
2701 AC_ARG_WITH(all-tarballs,
2702 AS_HELP_STRING([--with-all-tarballs],
2703 [Download all external tarballs unconditionally]))
2705 AC_ARG_WITH(gdrive-client-id,
2706 AS_HELP_STRING([--with-gdrive-client-id],
2707 [Provides the client id of the application for OAuth2 authentication
2708 on Google Drive. If either this or --with-gdrive-client-secret is
2709 empty, the feature will be disabled]),
2712 AC_ARG_WITH(gdrive-client-secret,
2713 AS_HELP_STRING([--with-gdrive-client-secret],
2714 [Provides the client secret of the application for OAuth2
2715 authentication on Google Drive. If either this or
2716 --with-gdrive-client-id is empty, the feature will be disabled]),
2719 AC_ARG_WITH(alfresco-cloud-client-id,
2720 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2721 [Provides the client id of the application for OAuth2 authentication
2722 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2723 empty, the feature will be disabled]),
2726 AC_ARG_WITH(alfresco-cloud-client-secret,
2727 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2728 [Provides the client secret of the application for OAuth2
2729 authentication on Alfresco Cloud. If either this or
2730 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2733 AC_ARG_WITH(onedrive-client-id,
2734 AS_HELP_STRING([--with-onedrive-client-id],
2735 [Provides the client id of the application for OAuth2 authentication
2736 on OneDrive. If either this or --with-onedrive-client-secret is
2737 empty, the feature will be disabled]),
2740 AC_ARG_WITH(onedrive-client-secret,
2741 AS_HELP_STRING([--with-onedrive-client-secret],
2742 [Provides the client secret of the application for OAuth2
2743 authentication on OneDrive. If either this or
2744 --with-onedrive-client-id is empty, the feature will be disabled]),
2746 dnl ===================================================================
2747 dnl Do we want to use pre-build binary tarball for recompile
2748 dnl ===================================================================
2750 if test "$enable_library_bin_tar" = "yes" ; then
2751 USE_LIBRARY_BIN_TAR=TRUE
2753 USE_LIBRARY_BIN_TAR=
2755 AC_SUBST(USE_LIBRARY_BIN_TAR)
2757 dnl ===================================================================
2758 dnl Test whether build target is Release Build
2759 dnl ===================================================================
2760 AC_MSG_CHECKING([whether build target is Release Build])
2761 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2763 ENABLE_RELEASE_BUILD=
2764 GET_TASK_ALLOW_ENTITLEMENT='
2765 <!-- We want to be able to debug a hardened process when not building for release -->
2766 <key>com.apple.security.get-task-allow</key>
2769 AC_MSG_RESULT([yes])
2770 ENABLE_RELEASE_BUILD=TRUE
2771 GET_TASK_ALLOW_ENTITLEMENT=''
2773 AC_SUBST(ENABLE_RELEASE_BUILD)
2774 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2776 AC_MSG_CHECKING([whether to build a Community flavor])
2777 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2778 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2779 AC_MSG_RESULT([yes])
2784 dnl ===================================================================
2785 dnl Test whether to sign Windows Build
2786 dnl ===================================================================
2787 AC_MSG_CHECKING([whether to sign windows build])
2788 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2789 AC_MSG_RESULT([yes])
2790 WINDOWS_BUILD_SIGNING="TRUE"
2793 WINDOWS_BUILD_SIGNING="FALSE"
2795 AC_SUBST(WINDOWS_BUILD_SIGNING)
2797 dnl ===================================================================
2798 dnl MacOSX build and runtime environment options
2799 dnl ===================================================================
2801 AC_ARG_WITH(macosx-version-min-required,
2802 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2803 [set the minimum OS version needed to run the built LibreOffice])
2805 e. g.: --with-macosx-version-min-required=10.12
2809 AC_ARG_WITH(macosx-version-max-allowed,
2810 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2811 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2813 e. g.: --with-macosx-version-max-allowed=11.0
2818 dnl ===================================================================
2819 dnl options for stuff used during cross-compilation build
2820 dnl Not quite superseded by --with-build-platform-configure-options.
2821 dnl TODO: check, if the "force" option is still needed anywhere.
2822 dnl ===================================================================
2824 AC_ARG_WITH(system-icu-for-build,
2825 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2826 [Use icu already on system for build tools (cross-compilation only).]))
2828 dnl ===================================================================
2829 dnl Check for incompatible options set by fuzzing, and reset those
2830 dnl automatically to working combinations
2831 dnl ===================================================================
2833 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2834 "$enable_dbus" != "$enable_avahi"; then
2835 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2836 enable_avahi=$enable_dbus
2841 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2842 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2846 add_lopath_before ()
2851 for dir in $LO_PATH ; do
2852 if test "$dir" != "$1" ; then
2853 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2856 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2859 dnl ===================================================================
2860 dnl check for required programs (grep, awk, sed, bash)
2861 dnl ===================================================================
2866 if test -n "$1"; then
2867 if test "$build_os" = "cygwin"; then
2868 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2870 new_path=`cygpath -sm "$formatted_path"`
2873 new_path=`cygpath -u "$formatted_path"`
2878 if test "$2" = "after"; then
2879 add_lopath_after "$new_path"
2881 add_lopath_before "$new_path"
2887 AC_PATH_PROG( AWK, $AWK)
2888 if test -z "$AWK"; then
2889 AC_MSG_ERROR([install awk to run this script])
2892 AC_PATH_PROG(BASH, bash)
2893 if test -z "$BASH"; then
2894 AC_MSG_ERROR([bash not found in \$PATH])
2898 AC_MSG_CHECKING([for GNU or BSD tar])
2899 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2900 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2901 if test $? -eq 0; then
2906 AC_MSG_RESULT($GNUTAR)
2907 if test -z "$GNUTAR"; then
2908 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2912 AC_MSG_CHECKING([for tar's option to strip components])
2913 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2914 if test $? -eq 0; then
2915 STRIP_COMPONENTS="--strip-components"
2917 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2918 if test $? -eq 0; then
2919 STRIP_COMPONENTS="--strip-path"
2921 STRIP_COMPONENTS="unsupported"
2924 AC_MSG_RESULT($STRIP_COMPONENTS)
2925 if test x$STRIP_COMPONENTS = xunsupported; then
2926 AC_MSG_ERROR([you need a tar that is able to strip components.])
2928 AC_SUBST(STRIP_COMPONENTS)
2930 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2931 dnl desktop OSes from "mobile" ones.
2933 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2934 dnl In other words, that when building for an OS that is not a
2935 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2937 dnl Note the direction of the implication; there is no assumption that
2938 dnl cross-compiling would imply a non-desktop OS.
2940 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2941 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2942 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2943 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2946 ENABLE_CUSTOMTARGET_COMPONENTS=
2947 if test "$enable_customtarget_components" = yes; then
2948 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
2949 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
2950 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
2953 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
2955 # Whether to build "avmedia" functionality or not.
2957 if test "$enable_avmedia" = yes; then
2958 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2959 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2961 test_gstreamer_1_0=no
2964 # Decide whether to build database connectivity stuff (including Base) or not.
2965 if test "$enable_database_connectivity" != no; then
2966 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2967 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2969 if test "$_os" = iOS; then
2970 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2972 disable_database_connectivity_dependencies
2975 if test -z "$enable_extensions"; then
2976 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2977 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2978 enable_extensions=yes
2982 DISABLE_SCRIPTING=''
2983 if test "$enable_scripting" = yes; then
2984 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2985 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2987 DISABLE_SCRIPTING='TRUE'
2988 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2991 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2992 # Disable dynamic_loading always for iOS and Android
2993 enable_dynamic_loading=no
2994 elif test -z "$enable_dynamic_loading"; then
2995 # Otherwise enable it unless specifically disabled
2996 enable_dynamic_loading=yes
2999 DISABLE_DYNLOADING=''
3000 if test "$enable_dynamic_loading" = yes; then
3001 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3003 DISABLE_DYNLOADING='TRUE'
3005 AC_SUBST(DISABLE_DYNLOADING)
3007 if test "$enable_extensions" = yes; then
3008 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3009 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3011 enable_extension_integration=no
3012 enable_extension_update=no
3015 # remember SYSBASE value
3018 dnl ===================================================================
3019 dnl Sort out various gallery compilation options
3020 dnl ===================================================================
3021 WITH_GALLERY_BUILD=TRUE
3022 AC_MSG_CHECKING([how to build and package galleries])
3023 if test -n "${with_galleries}"; then
3024 if test "$with_galleries" = "build"; then
3025 if test "$enable_database_connectivity" = no; then
3026 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3028 AC_MSG_RESULT([build from source images internally])
3029 elif test "$with_galleries" = "no"; then
3031 AC_MSG_RESULT([disable non-internal gallery build])
3033 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3036 if test $_os != iOS -a $_os != Android; then
3037 AC_MSG_RESULT([internal src images for desktop])
3040 AC_MSG_RESULT([disable src image build])
3043 AC_SUBST(WITH_GALLERY_BUILD)
3045 dnl ===================================================================
3046 dnl Checks if ccache is available
3047 dnl ===================================================================
3049 if test "$enable_ccache" = "no"; then
3051 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3052 case "%$CC%$CXX%" in
3053 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3054 # assume that's good then
3055 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3056 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3057 CCACHE_DEPEND_MODE=1
3060 # try to use our own ccache if it is available and CCACHE was not already defined
3061 if test -z "$CCACHE"; then
3062 if test "$_os" = "WINNT"; then
3063 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3065 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3066 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3067 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3068 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3071 AC_PATH_PROG([CCACHE],[ccache],[not found])
3072 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3073 CCACHE=`win_short_path_for_make "$CCACHE"`
3074 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3076 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3077 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3078 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3086 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3087 # on windows/VC perhaps sccache is around?
3088 case "%$CC%$CXX%" in
3089 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3090 # assume that's good then
3091 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3092 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3093 CCACHE_DEPEND_MODE=1
3097 # for sharing code below, reuse CCACHE env var
3098 AC_PATH_PROG([CCACHE],[sccache],[not found])
3099 if test "$CCACHE" != "not found"; then
3100 CCACHE=`win_short_path_for_make "$CCACHE"`
3102 CCACHE_DEPEND_MODE=1
3107 if test "$CCACHE" = "not found"; then
3110 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3111 CCACHE_DEPEND_MODE=1
3112 # Need to check for ccache version: otherwise prevents
3113 # caching of the results (like "-x objective-c++" for Mac)
3114 if test $_os = Darwin -o $_os = iOS; then
3115 # Check ccache version
3116 AC_MSG_CHECKING([whether version of ccache is suitable])
3117 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3118 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3119 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3120 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3122 AC_MSG_RESULT([no, $CCACHE_VERSION])
3133 if test "$enable_ccache" = "nodepend"; then
3134 CCACHE_DEPEND_MODE=""
3136 AC_SUBST(CCACHE_DEPEND_MODE)
3138 # sccache defaults are good enough
3139 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3140 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3141 # -p works with both 4.2 and 4.4
3142 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3143 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3144 if test "$ccache_size" = ""; then
3145 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3146 if test "$ccache_size" = ""; then
3149 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3150 if test $ccache_size -lt 1024; then
3152 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3153 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3155 # warn that ccache may be too small for debug build
3156 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3157 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3160 if test $ccache_size -lt 5; then
3161 #warn that ccache may be too small for debug build
3162 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3163 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3169 if test "$enable_z7_debug" != no; then
3170 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3171 ENABLE_Z7_DEBUG=TRUE
3174 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3175 add_warning "ccache will not work with --disable-z7-debug"
3177 AC_SUBST(ENABLE_Z7_DEBUG)
3179 dnl ===================================================================
3180 dnl Checks for C compiler,
3181 dnl The check for the C++ compiler is later on.
3182 dnl ===================================================================
3183 if test "$_os" != "WINNT"; then
3185 AC_MSG_CHECKING([gcc home])
3186 if test -z "$with_gcc_home"; then
3187 if test "$enable_icecream" = "yes"; then
3188 if test -d "/usr/lib/icecc/bin"; then
3189 GCC_HOME="/usr/lib/icecc/"
3190 elif test -d "/usr/libexec/icecc/bin"; then
3191 GCC_HOME="/usr/libexec/icecc/"
3192 elif test -d "/opt/icecream/bin"; then
3193 GCC_HOME="/opt/icecream/"
3195 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3199 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3200 GCC_HOME_SET="false"
3203 GCC_HOME="$with_gcc_home"
3205 AC_MSG_RESULT($GCC_HOME)
3208 if test "$GCC_HOME_SET" = "true"; then
3209 if test -z "$CC"; then
3210 CC="$GCC_HOME/bin/gcc"
3213 if test -z "$CXX"; then
3214 CXX="$GCC_HOME/bin/g++"
3220 COMPATH=`dirname "$CC"`
3221 if test "$COMPATH" = "."; then
3222 AC_PATH_PROGS(COMPATH, $CC)
3223 dnl double square bracket to get single because of M4 quote...
3224 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3226 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3228 dnl ===================================================================
3230 dnl ===================================================================
3231 AC_MSG_CHECKING([whether to build with Java support])
3232 if test "$with_java" != "no"; then
3233 if test "$DISABLE_SCRIPTING" = TRUE; then
3234 AC_MSG_RESULT([no, overridden by --disable-scripting])
3238 AC_MSG_RESULT([yes])
3240 AC_DEFINE(HAVE_FEATURE_JAVA)
3247 AC_SUBST(ENABLE_JAVA)
3249 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3251 dnl ENABLE_JAVA="" indicate no Java support at all
3253 dnl ===================================================================
3254 dnl Check macOS SDK and compiler
3255 dnl ===================================================================
3257 if test $_os = Darwin; then
3259 # The SDK in the currently selected Xcode should be found.
3261 AC_MSG_CHECKING([what macOS SDK to use])
3262 for macosx_sdk in 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3263 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3264 if test -d "$MACOSX_SDK_PATH"; then
3267 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3268 if test -d "$MACOSX_SDK_PATH"; then
3273 if test ! -d "$MACOSX_SDK_PATH"; then
3274 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3277 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3281 MACOSX_SDK_VERSION=101300
3284 MACOSX_SDK_VERSION=101400
3287 MACOSX_SDK_VERSION=101500
3290 MACOSX_SDK_VERSION=110000
3293 MACOSX_SDK_VERSION=110100
3296 MACOSX_SDK_VERSION=110300
3299 MACOSX_SDK_VERSION=120000
3302 MACOSX_SDK_VERSION=120100
3305 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3309 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3310 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3313 if test "$with_macosx_version_min_required" = "" ; then
3314 if test "$host_cpu" = x86_64; then
3315 with_macosx_version_min_required="10.12";
3317 with_macosx_version_min_required="11.0";
3321 if test "$with_macosx_version_max_allowed" = "" ; then
3322 with_macosx_version_max_allowed="$macosx_sdk"
3325 # export this so that "xcrun" invocations later return matching values
3326 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3327 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3328 export DEVELOPER_DIR
3329 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3330 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3332 AC_MSG_CHECKING([whether Xcode is new enough])
3333 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3334 my_xcode_ver2=${my_xcode_ver1#Xcode }
3335 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3336 if test "$my_xcode_ver3" -ge 1103; then
3337 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3339 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3342 case "$with_macosx_version_min_required" in
3344 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3347 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3350 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3353 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3356 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3359 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3362 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3365 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3368 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3371 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3374 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.1])
3378 LIBTOOL=/usr/bin/libtool
3379 INSTALL_NAME_TOOL=install_name_tool
3380 if test -z "$save_CC"; then
3381 stdlib=-stdlib=libc++
3383 AC_MSG_CHECKING([what C compiler to use])
3384 CC="`xcrun -find clang`"
3385 CC_BASE=`first_arg_basename "$CC"`
3386 if test "$host_cpu" = x86_64; then
3387 CC+=" -target x86_64-apple-macos"
3389 CC+=" -target arm64-apple-macos"
3391 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3392 AC_MSG_RESULT([$CC])
3394 AC_MSG_CHECKING([what C++ compiler to use])
3395 CXX="`xcrun -find clang++`"
3396 CXX_BASE=`first_arg_basename "$CXX"`
3397 if test "$host_cpu" = x86_64; then
3398 CXX+=" -target x86_64-apple-macos"
3400 CXX+=" -target arm64-apple-macos"
3402 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3403 AC_MSG_RESULT([$CXX])
3405 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3408 STRIP=`xcrun -find strip`
3409 LIBTOOL=`xcrun -find libtool`
3410 RANLIB=`xcrun -find ranlib`
3413 case "$with_macosx_version_max_allowed" in
3415 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3418 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3421 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3424 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3427 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3430 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3433 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3436 MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3439 MAC_OS_X_VERSION_MAX_ALLOWED="120100"
3442 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.1])
3446 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3447 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3448 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])
3453 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3454 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3455 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3459 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3460 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3462 AC_MSG_CHECKING([whether to do code signing])
3464 if test "$enable_macosx_code_signing" = yes; then
3465 # By default use the first suitable certificate (?).
3467 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3468 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3469 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3470 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3471 # "Developer ID Application" one.
3473 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3474 if test -n "$identity"; then
3475 MACOSX_CODESIGNING_IDENTITY=$identity
3476 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3477 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3479 AC_MSG_ERROR([cannot determine identity to use])
3481 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3482 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3483 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3484 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3489 AC_MSG_CHECKING([whether to create a Mac App Store package])
3491 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3493 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3494 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3495 elif test "$enable_macosx_package_signing" = yes; then
3496 # By default use the first suitable certificate.
3497 # It should be a "3rd Party Mac Developer Installer" one
3499 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3500 if test -n "$identity"; then
3501 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3502 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3503 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3505 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3508 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3509 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3510 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3513 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3514 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3517 AC_MSG_CHECKING([whether to sandbox the application])
3519 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3520 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3521 elif test "$enable_macosx_sandbox" = yes; then
3522 ENABLE_MACOSX_SANDBOX=TRUE
3523 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3524 AC_MSG_RESULT([yes])
3529 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3530 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3531 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3533 AC_SUBST(MACOSX_SDK_PATH)
3534 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3535 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3536 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3537 AC_SUBST(INSTALL_NAME_TOOL)
3538 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3539 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3540 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3541 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3542 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3544 dnl ===================================================================
3545 dnl Check iOS SDK and compiler
3546 dnl ===================================================================
3548 if test $_os = iOS; then
3549 AC_MSG_CHECKING([what iOS SDK to use])
3550 current_sdk_ver=15.2
3551 older_sdk_vers="15.0 14.5"
3552 if test "$enable_ios_simulator" = "yes"; then
3553 platform=iPhoneSimulator
3554 versionmin=-mios-simulator-version-min=13.6
3557 versionmin=-miphoneos-version-min=13.6
3559 xcode_developer=`xcode-select -print-path`
3561 for sdkver in $current_sdk_ver $older_sdk_vers; do
3562 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3569 if test -z "$sysroot"; then
3570 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3573 AC_MSG_RESULT($sysroot)
3575 stdlib="-stdlib=libc++"
3577 AC_MSG_CHECKING([what C compiler to use])
3578 CC="`xcrun -find clang`"
3579 CC_BASE=`first_arg_basename "$CC"`
3580 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3581 AC_MSG_RESULT([$CC])
3583 AC_MSG_CHECKING([what C++ compiler to use])
3584 CXX="`xcrun -find clang++`"
3585 CXX_BASE=`first_arg_basename "$CXX"`
3586 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3587 AC_MSG_RESULT([$CXX])
3589 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3592 STRIP=`xcrun -find strip`
3593 LIBTOOL=`xcrun -find libtool`
3594 RANLIB=`xcrun -find ranlib`
3597 AC_MSG_CHECKING([whether to treat the installation as read-only])
3599 if test $_os = Darwin; then
3600 enable_readonly_installset=yes
3601 elif test "$enable_extensions" != yes; then
3602 enable_readonly_installset=yes
3604 if test "$enable_readonly_installset" = yes; then
3605 AC_MSG_RESULT([yes])
3606 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3611 dnl ===================================================================
3612 dnl Structure of install set
3613 dnl ===================================================================
3615 if test $_os = Darwin; then
3616 LIBO_BIN_FOLDER=MacOS
3617 LIBO_ETC_FOLDER=Resources
3618 LIBO_LIBEXEC_FOLDER=MacOS
3619 LIBO_LIB_FOLDER=Frameworks
3620 LIBO_LIB_PYUNO_FOLDER=Resources
3621 LIBO_SHARE_FOLDER=Resources
3622 LIBO_SHARE_HELP_FOLDER=Resources/help
3623 LIBO_SHARE_JAVA_FOLDER=Resources/java
3624 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3625 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3626 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3627 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3628 LIBO_URE_BIN_FOLDER=MacOS
3629 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3630 LIBO_URE_LIB_FOLDER=Frameworks
3631 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3632 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3633 elif test $_os = WINNT; then
3634 LIBO_BIN_FOLDER=program
3635 LIBO_ETC_FOLDER=program
3636 LIBO_LIBEXEC_FOLDER=program
3637 LIBO_LIB_FOLDER=program
3638 LIBO_LIB_PYUNO_FOLDER=program
3639 LIBO_SHARE_FOLDER=share
3640 LIBO_SHARE_HELP_FOLDER=help
3641 LIBO_SHARE_JAVA_FOLDER=program/classes
3642 LIBO_SHARE_PRESETS_FOLDER=presets
3643 LIBO_SHARE_READMES_FOLDER=readmes
3644 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3645 LIBO_SHARE_SHELL_FOLDER=program/shell
3646 LIBO_URE_BIN_FOLDER=program
3647 LIBO_URE_ETC_FOLDER=program
3648 LIBO_URE_LIB_FOLDER=program
3649 LIBO_URE_MISC_FOLDER=program
3650 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3652 LIBO_BIN_FOLDER=program
3653 LIBO_ETC_FOLDER=program
3654 LIBO_LIBEXEC_FOLDER=program
3655 LIBO_LIB_FOLDER=program
3656 LIBO_LIB_PYUNO_FOLDER=program
3657 LIBO_SHARE_FOLDER=share
3658 LIBO_SHARE_HELP_FOLDER=help
3659 LIBO_SHARE_JAVA_FOLDER=program/classes
3660 LIBO_SHARE_PRESETS_FOLDER=presets
3661 LIBO_SHARE_READMES_FOLDER=readmes
3662 if test "$enable_fuzzers" != yes; then
3663 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3665 LIBO_SHARE_RESOURCE_FOLDER=resource
3667 LIBO_SHARE_SHELL_FOLDER=program/shell
3668 LIBO_URE_BIN_FOLDER=program
3669 LIBO_URE_ETC_FOLDER=program
3670 LIBO_URE_LIB_FOLDER=program
3671 LIBO_URE_MISC_FOLDER=program
3672 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3674 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3675 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3676 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3677 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3678 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3679 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3680 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3681 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3682 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3683 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3684 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3685 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3686 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3687 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3688 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3689 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3691 # Not all of them needed in config_host.mk, add more if need arises
3692 AC_SUBST(LIBO_BIN_FOLDER)
3693 AC_SUBST(LIBO_ETC_FOLDER)
3694 AC_SUBST(LIBO_LIB_FOLDER)
3695 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3696 AC_SUBST(LIBO_SHARE_FOLDER)
3697 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3698 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3699 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3700 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3701 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3702 AC_SUBST(LIBO_URE_BIN_FOLDER)
3703 AC_SUBST(LIBO_URE_ETC_FOLDER)
3704 AC_SUBST(LIBO_URE_LIB_FOLDER)
3705 AC_SUBST(LIBO_URE_MISC_FOLDER)
3706 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3708 dnl ===================================================================
3709 dnl Windows specific tests and stuff
3710 dnl ===================================================================
3714 # Return value: $regvalue
3717 if test "$build_os" = "wsl"; then
3718 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3722 local _regentry="/proc/registry${1}/${2}"
3723 if test -f "$_regentry"; then
3724 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3725 # Registry keys read via /proc/registry* are always \0 terminated!
3726 local _regvalue=$(tr -d '\0' < "$_regentry")
3727 if test $? -eq 0; then
3733 # Get a value from the 32-bit side of the Registry
3736 reg_get_value "32" "$1"
3739 # Get a value from the 64-bit side of the Registry
3742 reg_get_value "64" "$1"
3750 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3759 PLATFORMID=windows_x86_64
3761 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3763 WIN_MULTI_ARCH="x86"
3769 PLATFORMID=windows_x86
3772 WIN_OTHER_ARCH="x64"
3777 PLATFORMID=windows_aarch64
3779 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3780 WIN_HOST_ARCH="arm64"
3785 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3789 case "$build_cpu" in
3790 x86_64) WIN_BUILD_ARCH="x64" ;;
3791 i*86) WIN_BUILD_ARCH="x86" ;;
3792 aarch64) WIN_BUILD_ARCH="arm64" ;;
3794 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3798 SCPDEFS="$SCPDEFS -D_MSC_VER"
3802 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3803 # other-arch won't, but wouldn't break the build (x64 on x86).
3804 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3805 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3809 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3810 # To allow building Windows multi-arch releases without cross-tooling
3811 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3812 cross_compiling="yes"
3816 ENABLE_WASM_STRIP=''
3817 if test "$cross_compiling" = "yes"; then
3818 export CROSS_COMPILING=TRUE
3819 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3820 ENABLE_WASM_STRIP=TRUE
3824 BUILD_TYPE="$BUILD_TYPE NATIVE"
3826 AC_SUBST(CROSS_COMPILING)
3827 AC_SUBST(ENABLE_WASM_STRIP)
3829 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3830 # NOTE: must _not_ be used for bundled external libraries!
3832 if test "$GCC" = "yes"; then
3833 AC_MSG_CHECKING( for -isystem )
3835 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3836 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3838 if test -n "$ISYSTEM"; then
3844 if test -z "$ISYSTEM"; then
3845 # fall back to using -I
3850 dnl ===================================================================
3851 dnl Check which Visual Studio compiler is used
3852 dnl ===================================================================
3854 map_vs_year_to_version()
3856 # Return value: $vsversion
3866 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3870 vs_versions_to_check()
3872 # Args: $1 (optional) : versions to check, in the order of preference
3873 # Return value: $vsversions
3877 if test -n "$1"; then
3878 map_vs_year_to_version "$1"
3879 vsversions=$vsversion
3881 # Default version is 2019
3886 win_get_env_from_vsvars32bat()
3888 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3889 # Also seems to be located in another directory under the same name: vsvars32.bat
3890 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3891 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3892 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3893 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3895 if test "$build_os" = "wsl"; then
3896 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3898 chmod +x $WRAPPERBATCHFILEPATH
3899 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3901 rm -f $WRAPPERBATCHFILEPATH
3902 printf '%s' "$result"
3907 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3908 if test -n "$regvalue"; then
3909 PathFormat "$regvalue"
3910 UCRTSDKDIR=$formatted_path_unix
3911 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3912 UCRTVERSION=$regvalue
3914 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3918 if test -z "$UCRTSDKDIR"; then
3919 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3920 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3921 if test -f "$ide_env_file"; then
3922 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3923 UCRTSDKDIR=$formatted_path
3924 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3925 dnl Hack needed at least by tml:
3926 if test "$UCRTVERSION" = 10.0.15063.0 \
3927 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3928 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3930 UCRTVERSION=10.0.14393.0
3933 AC_MSG_ERROR([No UCRT found])
3941 # Args: $1 (optional) : The VS version year
3942 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3944 unset vctest vctoolset vcnumwithdot vcbuildnumber
3946 vs_versions_to_check "$1"
3947 if test "$build_os" = wsl; then
3948 vswhere="$PROGRAMFILESX86"
3950 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3952 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3953 PathFormat "$vswhere"
3954 vswhere=$formatted_path_unix
3955 for ver in $vsversions; do
3956 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3957 if test -z "$vswhereoutput"; then
3958 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3960 # Fall back to all MS products (this includes VC++ Build Tools)
3961 if ! test -n "$vswhereoutput"; then
3962 AC_MSG_CHECKING([VC++ Build Tools and similar])
3963 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3965 if test -n "$vswhereoutput"; then
3966 PathFormat "$vswhereoutput"
3967 vctest=$formatted_path_unix
3972 if test -n "$vctest"; then
3973 vcnumwithdot="$ver.0"
3974 case "$vcnumwithdot" in
3984 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3991 AC_MSG_CHECKING([$1 compiler])
3993 CL_EXE_PATH="$2/cl.exe"
3995 if test ! -f "$CL_EXE_PATH"; then
3996 if test "$1" = "multi-arch"; then
3997 AC_MSG_WARN([no compiler (cl.exe) in $2])
4000 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4004 dnl ===========================================================
4005 dnl Check for the corresponding mspdb*.dll
4006 dnl ===========================================================
4008 # MSVC 15.0 has libraries from 14.0?
4011 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4012 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4015 # The compiles has to find its shared libraries
4017 TEMP_PATH=`cygpath -d "$2"`
4018 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4020 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4021 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4026 AC_MSG_RESULT([$CL_EXE_PATH])
4032 if test "$_os" = "WINNT"; then
4033 AC_MSG_CHECKING([Visual C++])
4034 find_msvc "$with_visual_studio"
4035 if test -z "$vctest"; then
4036 if test -n "$with_visual_studio"; then
4037 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4039 AC_MSG_ERROR([no Visual Studio installation found])
4044 VC_PRODUCT_DIR="$vctest/VC"
4045 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4047 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4048 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4049 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4050 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4051 if test $? -ne 0; then
4057 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4058 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4059 test_cl_exe "build" "$MSVC_BUILD_PATH"
4062 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4063 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4064 test_cl_exe "host" "$MSVC_HOST_PATH"
4066 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4069 AC_MSG_CHECKING([for short pathname of VC product directory])
4070 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4071 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4076 AC_MSG_CHECKING([for UCRT location])
4078 # find_ucrt errors out if it doesn't find it
4079 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4080 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4081 ucrtincpath_formatted=$formatted_path
4082 # SOLARINC is used for external modules and must be set too.
4083 # And no, it's not sufficient to set SOLARINC only, as configure
4084 # itself doesn't honour it.
4085 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4086 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4087 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4088 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4090 AC_SUBST(UCRTSDKDIR)
4091 AC_SUBST(UCRTVERSION)
4093 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4094 # Find the proper version of MSBuild.exe to use based on the VS version
4095 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4096 if test -z "$regvalue" ; then
4097 if test "$WIN_BUILD_ARCH" != "x64"; then
4098 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4100 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4103 if test -d "$regvalue" ; then
4104 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4105 AC_MSG_RESULT([$regvalue])
4107 AC_MSG_ERROR([MSBuild.exe location not found])
4110 # Find the version of devenv.exe
4111 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4112 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4113 DEVENV_unix=$(cygpath -u "$DEVENV")
4114 if test ! -e "$DEVENV_unix"; then
4115 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4118 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4119 dnl needed when building CLR code:
4120 if test -z "$MSVC_CXX"; then
4121 # This gives us a posix path with 8.3 filename restrictions
4122 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4125 if test -z "$CC"; then
4127 CC_BASE=`first_arg_basename "$CC"`
4129 if test -z "$CXX"; then
4131 CXX_BASE=`first_arg_basename "$CXX"`
4134 if test -n "$CC"; then
4135 # Remove /cl.exe from CC case insensitive
4136 AC_MSG_NOTICE([found Visual C++ $vcyear])
4138 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4139 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4141 PathFormat "$COMPATH"
4142 COMPATH=`win_short_path_for_make "$formatted_path"`
4145 VCTOOLSET=$vctoolset
4147 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4148 # are always "better", we list them in reverse chronological order.
4150 case "$vcnumwithdot" in
4152 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4156 # The expectation is that --with-windows-sdk should not need to be used
4157 if test -n "$with_windows_sdk"; then
4158 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4159 *" "$with_windows_sdk" "*)
4160 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4163 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4168 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4173 AC_MSG_ERROR([Visual C++ not found after all, huh])
4176 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4177 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4178 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4179 // between Visual Studio versions and _MSC_VER:
4183 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4185 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4186 # version of the Explorer extension (and maybe other small
4187 # bits, too) needed when installing a 32-bit LibreOffice on a
4188 # 64-bit OS. The 64-bit Explorer extension is a feature that
4189 # has been present since long in OOo. Don't confuse it with
4190 # building LibreOffice itself as 64-bit code.
4195 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4196 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4197 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4198 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4201 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4202 AC_MSG_RESULT([found])
4204 AC_MSG_RESULT([not found])
4205 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4207 elif test "$WIN_HOST_ARCH" = "x64"; then
4212 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4213 AC_SUBST(CXX_X64_BINARY)
4215 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4216 # needed to support TWAIN scan on both 32- and 64-bit systems
4218 case "$WIN_HOST_ARCH" in
4220 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4221 if test -n "$CXX_X86_BINARY"; then
4223 AC_MSG_RESULT([preset])
4224 elif test -n "$WIN_MULTI_ARCH"; then
4226 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4227 CXX_X86_BINARY+=" /arch:SSE"
4228 AC_MSG_RESULT([found])
4230 AC_MSG_RESULT([not found])
4231 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4236 CXX_X86_BINARY=$MSVC_CXX
4240 AC_SUBST(CXX_X86_BINARY)
4248 AC_MSG_CHECKING([whether the compiler is actually Clang])
4249 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4255 [AC_MSG_RESULT([yes])
4257 [AC_MSG_RESULT([no])])
4258 AC_SUBST(COM_IS_CLANG)
4261 if test "$COM_IS_CLANG" = TRUE; then
4262 AC_MSG_CHECKING([whether Clang is new enough])
4263 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4264 #if !defined __apple_build_version__
4268 [my_apple_clang=yes],[my_apple_clang=])
4269 if test "$my_apple_clang" = yes; then
4270 AC_MSG_RESULT([assumed yes (Apple Clang)])
4271 elif test "$_os" = Emscripten; then
4272 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4274 if test "$_os" = WINNT; then
4275 dnl In which case, assume clang-cl:
4280 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4281 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4282 CLANGVER=`echo $clang_version \
4283 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4284 if test "$CLANGVER" -ge 50002; then
4285 AC_MSG_RESULT([yes ($clang_version)])
4287 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4289 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4290 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4294 SHOWINCLUDES_PREFIX=
4295 if test "$_os" = WINNT; then
4296 dnl We need to guess the prefix of the -showIncludes output, it can be
4298 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4299 echo "#include <stdlib.h>" > conftest.c
4300 SHOWINCLUDES_PREFIX=`$CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4301 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4302 rm -f conftest.c conftest.obj
4303 if test -z "$SHOWINCLUDES_PREFIX"; then
4304 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4306 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4309 AC_SUBST(SHOWINCLUDES_PREFIX)
4312 # prefix C with ccache if needed
4314 if test "$CCACHE" != ""; then
4315 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4319 CFLAGS="$CFLAGS --ccache-skip -O2"
4320 # msvc does not fail on unknown options, check stdout
4321 if test "$COM" = MSC; then
4322 CFLAGS="$CFLAGS -nologo"
4324 save_ac_c_werror_flag=$ac_c_werror_flag
4325 ac_c_werror_flag=yes
4326 dnl an empty program will do, we're checking the compiler flags
4327 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4328 [use_ccache=yes], [use_ccache=no])
4330 ac_c_werror_flag=$save_ac_c_werror_flag
4331 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4332 AC_MSG_RESULT([yes])
4335 CC_BASE="ccache $CC_BASE"
4341 # ===================================================================
4342 # check various GCC options that Clang does not support now but maybe
4343 # will somewhen in the future, check them even for GCC, so that the
4345 # ===================================================================
4348 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4349 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4351 CFLAGS="$CFLAGS -Werror -ggdb2"
4352 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4354 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4355 AC_MSG_RESULT([yes])
4360 if test "$host_cpu" = "m68k"; then
4361 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4363 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4364 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4366 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4367 AC_MSG_RESULT([yes])
4373 AC_SUBST(HAVE_GCC_GGDB2)
4375 dnl ===================================================================
4376 dnl Test the gcc version
4377 dnl ===================================================================
4378 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4379 AC_MSG_CHECKING([the GCC version])
4380 _gcc_version=`$CC -dumpfullversion`
4381 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4382 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4383 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4385 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4387 if test "$gcc_full_version" -lt 70000; then
4388 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4391 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4392 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4393 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4394 # (which reports itself as GCC 4.2.1).
4397 AC_SUBST(GCC_VERSION)
4399 dnl Set the ENABLE_DBGUTIL variable
4400 dnl ===================================================================
4401 AC_MSG_CHECKING([whether to build with additional debug utilities])
4402 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4403 ENABLE_DBGUTIL="TRUE"
4404 # this is an extra var so it can have different default on different MSVC
4405 # versions (in case there are version specific problems with it)
4406 MSVC_USE_DEBUG_RUNTIME="TRUE"
4408 AC_MSG_RESULT([yes])
4409 # cppunit and graphite expose STL in public headers
4410 if test "$with_system_cppunit" = "yes"; then
4411 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4413 with_system_cppunit=no
4415 if test "$with_system_graphite" = "yes"; then
4416 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4418 with_system_graphite=no
4420 if test "$with_system_orcus" = "yes"; then
4421 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4423 with_system_orcus=no
4425 if test "$with_system_libcmis" = "yes"; then
4426 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4428 with_system_libcmis=no
4430 if test "$with_system_hunspell" = "yes"; then
4431 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4433 with_system_hunspell=no
4435 if test "$with_system_gpgmepp" = "yes"; then
4436 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4438 with_system_gpgmepp=no
4440 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4441 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4442 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4443 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4444 # of those two is using the system variant:
4445 if test "$with_system_libnumbertext" = "yes"; then
4446 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4448 with_system_libnumbertext=no
4450 if test "$with_system_libwps" = "yes"; then
4451 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4453 with_system_libwps=no
4457 MSVC_USE_DEBUG_RUNTIME=""
4460 AC_SUBST(ENABLE_DBGUTIL)
4461 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4463 dnl Set the ENABLE_DEBUG variable.
4464 dnl ===================================================================
4465 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4466 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4468 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4469 if test -z "$libo_fuzzed_enable_debug"; then
4470 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4472 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4477 AC_MSG_CHECKING([whether to do a debug build])
4478 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4480 if test -n "$ENABLE_DBGUTIL" ; then
4481 AC_MSG_RESULT([yes (dbgutil)])
4483 AC_MSG_RESULT([yes])
4489 AC_SUBST(ENABLE_DEBUG)
4491 dnl ===================================================================
4492 dnl Select the linker to use (gold/lld/ld.bfd).
4493 dnl This is done only after compiler checks (need to know if Clang is
4494 dnl used, for different defaults) and after checking if a debug build
4495 dnl is wanted (non-debug builds get the default linker if not explicitly
4496 dnl specified otherwise).
4497 dnl All checks for linker features/options should come after this.
4498 dnl ===================================================================
4501 use_ld=-fuse-ld=${1%%:*}
4503 if test "$use_ld_path" != "$1"; then
4504 if test "$COM_IS_CLANG" = TRUE; then
4505 if test "$CLANGVER" -ge 120000; then
4506 use_ld="${use_ld} --ld-path=${use_ld_path}"
4508 use_ld="-fuse-ld=${use_ld_path}"
4511 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4512 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4513 # pickup the alternative linker, when called by libtool for linking.
4514 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4515 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4518 use_ld_fail_if_error=$2
4520 AC_MSG_CHECKING([for $use_ld linker support])
4521 use_ld_ldflags_save="$LDFLAGS"
4522 LDFLAGS="$LDFLAGS $use_ld"
4523 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4526 printf ("hello world\n");
4527 ])], USE_LD=$use_ld, [])
4528 if test -n "$USE_LD"; then
4529 AC_MSG_RESULT( yes )
4532 if test -n "$use_ld_fail_if_error"; then
4538 if test -n "$use_ld_ok"; then
4539 dnl keep the value of LDFLAGS
4542 LDFLAGS="$use_ld_ldflags_save"
4546 if test "$enable_ld" != "no"; then
4547 if test "$GCC" = "yes"; then
4548 if test -n "$enable_ld"; then
4549 check_use_ld "$enable_ld" fail_if_error
4550 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4551 dnl non-debug builds default to the default linker
4553 elif test -n "$COM_IS_CLANG"; then
4555 if test $? -ne 0; then
4559 # For gcc first try gold, new versions also support lld.
4561 if test $? -ne 0; then
4565 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4567 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4568 if test -z "$ld_used"; then
4571 AC_MSG_CHECKING([for linker that is used])
4572 AC_MSG_RESULT([$ld_used])
4573 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4574 if echo "$ld_used" | grep -q "^GNU ld"; then
4575 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4576 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4580 if test "$enable_ld" = "yes"; then
4581 AC_MSG_ERROR([--enable-ld not supported])
4587 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4588 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4589 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4590 bsymbolic_functions_ldflags_save=$LDFLAGS
4591 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4592 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4595 printf ("hello world\n");
4596 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4597 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4598 AC_MSG_RESULT( found )
4600 AC_MSG_RESULT( not found )
4602 LDFLAGS=$bsymbolic_functions_ldflags_save
4604 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4607 if test "$GCC" = "yes"; then
4608 for flag in "--gc-sections" "-dead_strip"; do
4609 AC_MSG_CHECKING([for $flag linker support])
4610 ldflags_save=$LDFLAGS
4611 LDFLAGS="$LDFLAGS -Wl,$flag"
4612 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4615 printf ("hello world\n");
4617 LD_GC_SECTIONS="-Wl,$flag"
4618 AC_MSG_RESULT( found )
4620 AC_MSG_RESULT( not found )
4622 LDFLAGS=$ldflags_save
4623 if test -n "$LD_GC_SECTIONS"; then
4628 AC_SUBST(LD_GC_SECTIONS)
4631 if test "$enable_split_debug" != no; then
4633 if test -n "$ENABLE_LTO"; then
4634 true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4635 elif test "$enable_split_debug" = yes; then
4637 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4638 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4641 if test -n "$use_split_debug"; then
4642 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4644 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4645 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4647 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4648 AC_MSG_RESULT([yes])
4650 if test "$enable_split_debug" = yes; then
4657 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4658 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4659 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4662 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4664 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4665 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4667 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4668 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4670 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4671 AC_MSG_RESULT([yes])
4675 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4678 if test "$enable_gdb_index" != "no"; then
4679 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4680 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4681 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4683 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4685 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4686 if test "$have_ggnu_pubnames" != "TRUE"; then
4687 if test "$enable_gdb_index" = "yes"; then
4688 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4693 AC_MSG_RESULT( yes )
4694 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4695 ldflags_save=$LDFLAGS
4696 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4697 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4700 printf ("hello world\n");
4701 ])], ENABLE_GDB_INDEX=TRUE, [])
4702 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4703 AC_MSG_RESULT( yes )
4705 if test "$enable_gdb_index" = "yes"; then
4711 LDFLAGS=$ldflags_save
4715 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4716 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4717 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4720 AC_SUBST(ENABLE_GDB_INDEX)
4722 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4725 if test "$enable_sal_log" = yes; then
4728 AC_SUBST(ENABLE_SAL_LOG)
4730 dnl Check for enable symbols option
4731 dnl ===================================================================
4732 AC_MSG_CHECKING([whether to generate debug information])
4733 if test -z "$enable_symbols"; then
4734 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4740 if test "$enable_symbols" = yes; then
4741 ENABLE_SYMBOLS_FOR=all
4742 AC_MSG_RESULT([yes])
4743 elif test "$enable_symbols" = no; then
4747 # Selective debuginfo.
4748 ENABLE_SYMBOLS_FOR="$enable_symbols"
4749 AC_MSG_RESULT([for "$enable_symbols"])
4751 AC_SUBST(ENABLE_SYMBOLS_FOR)
4753 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4754 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4755 AC_MSG_CHECKING([whether enough memory is available for linking])
4756 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4757 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4758 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4759 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4761 AC_MSG_RESULT([yes])
4766 ENABLE_OPTIMIZED_DEBUG=
4767 AC_MSG_CHECKING([whether to compile with optimization flags])
4768 if test -z "$enable_optimized"; then
4769 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4772 enable_optimized=yes
4775 if test "$enable_optimized" = yes; then
4776 ENABLE_OPTIMIZED=TRUE
4777 AC_MSG_RESULT([yes])
4778 elif test "$enable_optimized" = debug; then
4779 ENABLE_OPTIMIZED_DEBUG=TRUE
4780 AC_MSG_RESULT([yes (debug)])
4782 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4783 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4785 CFLAGS="$CFLAGS -Werror -Og"
4786 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4788 if test "$HAVE_GCC_OG" = "TRUE"; then
4789 AC_MSG_RESULT([yes])
4794 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4795 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4800 AC_SUBST(ENABLE_OPTIMIZED)
4801 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4804 # determine CPUNAME, OS, ...
4814 PLATFORMID=aix_powerpc
4830 if test "$enable_ios_simulator" = "yes"; then
4835 PLATFORMID=macosx_aarch64
4839 if test "$enable_ios_simulator" = "yes"; then
4844 PLATFORMID=macosx_x86_64
4847 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4860 if test "$enable_ios_simulator" = "yes"; then
4861 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4865 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4870 PLATFORMID=ios_arm64
4883 PLATFORMID=dragonfly_x86
4888 PLATFORMID=dragonfly_x86_64
4891 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4905 PLATFORMID=freebsd_aarch64
4911 PLATFORMID=freebsd_x86
4916 PLATFORMID=freebsd_x86_64
4921 PLATFORMID=freebsd_powerpc64
4926 PLATFORMID=freebsd_powerpc
4929 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4945 PLATFORMID=haiku_x86
4950 PLATFORMID=haiku_x86_64
4953 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4969 PLATFORMID=kfreebsd_x86
4974 PLATFORMID=kfreebsd_x86_64
4977 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4982 linux-gnu*|linux-musl*)
4992 PLATFORMID=linux_aarch64
4994 EPM_FLAGS="-a arm64"
4999 PLATFORMID=linux_alpha
5005 PLATFORMID=linux_arm_eabi
5009 PLATFORMID=linux_arm_oabi
5017 PLATFORMID=linux_hppa
5022 PLATFORMID=linux_x86
5027 PLATFORMID=linux_ia64
5033 PLATFORMID=linux_mips_eb
5038 EPM_FLAGS="-a mips64"
5039 PLATFORMID=linux_mips64_eb
5044 EPM_FLAGS="-a mips64el"
5045 PLATFORMID=linux_mips64_el
5050 EPM_FLAGS="-a mipsel"
5051 PLATFORMID=linux_mips_el
5056 PLATFORMID=linux_m68k
5061 PLATFORMID=linux_powerpc
5066 PLATFORMID=linux_powerpc64
5070 RTL_ARCH=PowerPC_64_LE
5071 PLATFORMID=linux_powerpc64_le
5076 PLATFORMID=linux_sparc
5081 PLATFORMID=linux_sparc64
5086 PLATFORMID=linux_s390
5091 PLATFORMID=linux_s390x
5096 PLATFORMID=linux_x86_64
5099 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5115 PLATFORMID=android_arm_eabi
5120 PLATFORMID=android_aarch64
5125 PLATFORMID=android_x86
5130 PLATFORMID=android_x86_64
5133 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5148 PLATFORMID=netbsd_x86
5153 PLATFORMID=netbsd_powerpc
5158 PLATFORMID=netbsd_sparc
5163 PLATFORMID=netbsd_x86_64
5166 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5181 PLATFORMID=openbsd_x86
5186 PLATFORMID=openbsd_x86_64
5189 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5192 SOLARINC="$SOLARINC -I/usr/local/include"
5205 PLATFORMID=solaris_x86
5210 PLATFORMID=solaris_sparc
5215 PLATFORMID=solaris_sparc64
5218 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5221 SOLARINC="$SOLARINC -I/usr/local/include"
5234 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5239 PLATFORMID=linux_x86
5243 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5248 if test "$enable_gui" = "no"; then
5249 if test "$using_x11" != yes; then
5250 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5256 AC_DEFINE(HAVE_FEATURE_UI)
5258 AC_SUBST(DISABLE_GUI)
5260 if test "$with_x" = "no"; then
5264 if test "$using_x11" = yes; then
5265 if test "$USING_X11" = TRUE; then
5266 AC_DEFINE(USING_X11)
5271 if test "$USING_X11" = TRUE; then
5272 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5276 WORKDIR="${BUILDDIR}/workdir"
5277 INSTDIR="${BUILDDIR}/instdir"
5278 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5279 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5280 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5288 AC_SUBST([INSTROOT])
5289 AC_SUBST([INSTROOTBASE])
5293 AC_SUBST(PLATFORMID)
5294 AC_SUBST(WINDOWS_X64)
5295 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5297 if test "$OS" = WNT -a "$COM" = MSC; then
5299 INTEL) CPPU_ENV=msci ;;
5300 X86_64) CPPU_ENV=mscx ;;
5301 AARCH64) CPPU_ENV=msca ;;
5303 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5311 dnl ===================================================================
5312 dnl Test which package format to use
5313 dnl ===================================================================
5314 AC_MSG_CHECKING([which package format to use])
5315 if test -n "$with_package_format" -a "$with_package_format" != no; then
5316 for i in $with_package_format; do
5318 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5321 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5322 aix - AIX software distribution
5323 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5324 deb - Debian software distribution
5325 pkg - Solaris software distribution
5326 rpm - RedHat software distribution
5328 LibreOffice additionally supports:
5329 archive - .tar.gz or .zip
5331 installed - installation tree
5337 # fakeroot is needed to ensure correct file ownerships/permissions
5338 # inside deb packages and tar archives created on Linux and Solaris.
5339 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5340 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5341 if test "$FAKEROOT" = "no"; then
5343 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5346 PKGFORMAT="$with_package_format"
5347 AC_MSG_RESULT([$PKGFORMAT])
5350 AC_MSG_RESULT([none])
5354 dnl ===================================================================
5355 dnl handle help related options
5357 dnl If you change help related options, please update README.help
5358 dnl ===================================================================
5365 AC_MSG_CHECKING([which help to build])
5366 if test -n "$with_help" -a "$with_help" != "no"; then
5367 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5368 BUILD_TYPE="$BUILD_TYPE HELP"
5369 case "$with_help" in
5371 ENABLE_HTMLHELP=TRUE
5373 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5374 AC_MSG_RESULT([HTML (local)])
5377 ENABLE_HTMLHELP=TRUE
5379 AC_MSG_RESULT([HTML (online)])
5383 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5384 AC_MSG_RESULT([XML (local)])
5387 AC_MSG_ERROR([Unknown --with-help=$with_help])
5394 AC_MSG_CHECKING([if we need to build the help index tooling])
5395 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5396 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5398 AC_MSG_RESULT([yes])
5403 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5404 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5405 if test "$HELP_ONLINE" != TRUE; then
5406 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5408 case "$with_omindex" in
5410 HELP_OMINDEX_PAGE=TRUE
5411 AC_MSG_RESULT([SERVER])
5414 AC_MSG_RESULT([NOXAP])
5417 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5424 AC_MSG_CHECKING([whether to include the XML-help support])
5425 if test "$enable_xmlhelp" = yes; then
5426 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5428 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5429 AC_MSG_RESULT([yes])
5431 if test "$with_help" = yes; then
5432 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5437 dnl Test whether to integrate helppacks into the product's installer
5438 AC_MSG_CHECKING([for helppack integration])
5439 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5440 AC_MSG_RESULT([no integration])
5442 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5443 AC_MSG_RESULT([integration])
5446 AC_SUBST([ENABLE_HTMLHELP])
5447 AC_SUBST([HELP_OMINDEX_PAGE])
5448 AC_SUBST([HELP_ONLINE])
5449 # WITH_HELPPACKS is used only in configure
5451 dnl ===================================================================
5452 dnl Set up a different compiler to produce tools to run on the build
5453 dnl machine when doing cross-compilation
5454 dnl ===================================================================
5456 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5457 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5458 if test "$cross_compiling" = "yes"; then
5459 AC_MSG_CHECKING([for BUILD platform configuration])
5461 rm -rf CONF-FOR-BUILD config_build.mk
5462 mkdir CONF-FOR-BUILD
5463 # Here must be listed all files needed when running the configure script. In particular, also
5464 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5465 # keep them in the same order as there.
5466 (cd $SRC_ROOT && tar cf - \
5468 bin/get_config_variables \
5469 solenv/bin/getcompver.awk \
5470 solenv/inc/langlist.mk \
5473 config_host_lang.mk.in \
5475 bin/bffvalidator.sh.in \
5476 bin/odfvalidator.sh.in \
5477 bin/officeotron.sh.in \
5478 hardened_runtime.xcent.in \
5479 instsetoo_native/util/openoffice.lst.in \
5481 sysui/desktop/macosx/Info.plist.in \
5482 .vscode/vs-code-template.code-workspace.in \
5483 solenv/lockfile/autoconf.h.in \
5485 | (cd CONF-FOR-BUILD && tar xf -)
5486 cp configure CONF-FOR-BUILD
5487 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5489 unset COM USING_X11 OS CPUNAME
5490 unset CC CXX SYSBASE CFLAGS
5491 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5492 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5493 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5494 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5495 if test -n "$CC_FOR_BUILD"; then
5496 export CC="$CC_FOR_BUILD"
5497 CC_BASE=`first_arg_basename "$CC"`
5499 if test -n "$CXX_FOR_BUILD"; then
5500 export CXX="$CXX_FOR_BUILD"
5501 CXX_BASE=`first_arg_basename "$CXX"`
5503 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5506 # Handle host configuration, which affects the cross-toolset too
5508 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5509 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5510 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5511 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5512 if test -n "$ENABLE_JAVA"; then
5515 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5516 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5519 if test -z "$with_jdk_home"; then
5520 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.])
5525 sub_conf_opts="$sub_conf_opts --disable-scripting"
5527 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5528 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5529 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5530 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5531 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5532 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5533 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5534 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5535 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5536 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5538 # Don't bother having configure look for stuff not needed for the build platform anyway
5539 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5540 sub_conf_defaults=" \
5541 --build="$build_alias" \
5542 --disable-cairo-canvas \
5544 --disable-customtarget-components \
5545 --disable-firebird-sdbc \
5547 --disable-gstreamer-1-0 \
5551 --disable-mariadb-sdbc \
5553 --disable-online-update \
5555 --disable-pdfimport \
5556 --disable-postgresql-sdbc \
5559 --enable-icecream="$enable_icecream" \
5563 --with-tls=openssl \
5565 # single quotes added for better readability in case of spaces
5566 echo " Running CONF-FOR-BUILD/configure" \
5567 $sub_conf_defaults \
5568 --with-parallelism="'$with_parallelism'" \
5569 --with-theme="'$with_theme'" \
5571 $with_build_platform_configure_options \
5575 $sub_conf_defaults \
5576 --with-parallelism="$with_parallelism" \
5577 --with-theme="$with_theme" \
5579 $with_build_platform_configure_options \
5581 2>&1 | sed -e 's/^/ /'
5582 if test [${PIPESTATUS[0]}] -ne 0; then
5583 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5586 # filter permitted build targets
5587 PERMITTED_BUILD_TARGETS="
5620 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5621 # newlined lists, to use grep as a filter
5622 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5623 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5624 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5625 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5627 cp config_host.mk ../config_build.mk
5628 cp config_host_lang.mk ../config_build_lang.mk
5629 mv config.log ../config.Build.log
5630 mkdir -p ../config_build
5631 mv config_host/*.h ../config_build
5632 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5634 # all these will get a _FOR_BUILD postfix
5635 DIRECT_FOR_BUILD_SETTINGS="
5646 LIBO_URE_MISC_FOLDER
5652 # these overwrite host config with build config
5653 OVERWRITING_SETTINGS="
5658 JAVA_CLASSPATH_NOT_SET
5667 # these need some special handling
5668 EXTRA_HANDLED_SETTINGS="
5675 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5679 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5680 echo "$line" >>build-config
5682 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5684 VV=`eval "echo $VV"`
5685 if test -n "$VV"; then
5686 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5687 echo "$line" >>build-config
5691 for V in $OVERWRITING_SETTINGS; do
5693 VV=`eval "echo $VV"`
5694 if test -n "$VV"; then
5695 line=${V}='${'${V}:-$VV'}'
5696 echo "$line" >>build-config
5700 for V in INSTDIR INSTROOT WORKDIR; do
5702 VV=`eval "echo $VV"`
5703 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5704 if test -n "$VV"; then
5705 line="${V}_FOR_BUILD='$VV'"
5706 echo "$line" >>build-config
5711 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5712 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])
5713 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5714 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5716 eval `cat CONF-FOR-BUILD/build-config`
5718 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5720 rm -rf CONF-FOR-BUILD
5724 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5725 CXX_FOR_BUILD="$CXX"
5726 INSTDIR_FOR_BUILD="$INSTDIR"
5727 INSTROOT_FOR_BUILD="$INSTROOT"
5728 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5729 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5730 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5731 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5732 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5733 WORKDIR_FOR_BUILD="$WORKDIR"
5735 AC_SUBST(OS_FOR_BUILD)
5736 AC_SUBST(INSTDIR_FOR_BUILD)
5737 AC_SUBST(INSTROOT_FOR_BUILD)
5738 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5739 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5740 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5741 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5742 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5743 AC_SUBST(WORKDIR_FOR_BUILD)
5744 AC_SUBST(CC_FOR_BUILD)
5745 AC_SUBST(CXX_FOR_BUILD)
5746 AC_SUBST(CPPU_ENV_FOR_BUILD)
5748 dnl ===================================================================
5749 dnl Check for lockfile deps
5750 dnl ===================================================================
5751 if test -z "$CROSS_COMPILING"; then
5752 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5753 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5754 AC_MSG_CHECKING([which lockfile binary to use])
5755 case "$with_system_lockfile" in
5757 AC_MSG_RESULT([external])
5758 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5761 AC_MSG_RESULT([internal])
5764 if test -x "$with_system_lockfile"; then
5765 LOCKFILE="$with_system_lockfile"
5767 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5769 AC_MSG_RESULT([$with_system_lockfile])
5774 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5775 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5778 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5779 AC_CHECK_FUNCS([utime utimes])
5782 dnl ===================================================================
5783 dnl Check for syslog header
5784 dnl ===================================================================
5785 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5787 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5788 dnl ===================================================================
5789 AC_MSG_CHECKING([whether to turn warnings to errors])
5790 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5791 ENABLE_WERROR="TRUE"
5792 PYTHONWARNINGS="error"
5793 AC_MSG_RESULT([yes])
5795 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5796 ENABLE_WERROR="TRUE"
5797 PYTHONWARNINGS="error"
5798 AC_MSG_RESULT([yes])
5803 AC_SUBST(ENABLE_WERROR)
5804 AC_SUBST(PYTHONWARNINGS)
5806 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5807 dnl ===================================================================
5808 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5809 if test -z "$enable_assert_always_abort"; then
5810 if test "$ENABLE_DEBUG" = TRUE; then
5811 enable_assert_always_abort=yes
5813 enable_assert_always_abort=no
5816 if test "$enable_assert_always_abort" = "yes"; then
5817 ASSERT_ALWAYS_ABORT="TRUE"
5818 AC_MSG_RESULT([yes])
5820 ASSERT_ALWAYS_ABORT="FALSE"
5823 AC_SUBST(ASSERT_ALWAYS_ABORT)
5825 # Determine whether to use ooenv for the instdir installation
5826 # ===================================================================
5827 if test $_os != "WINNT" -a $_os != "Darwin"; then
5828 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5829 if test -z "$enable_ooenv"; then
5830 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5836 if test "$enable_ooenv" = "no"; then
5840 AC_MSG_RESULT([yes])
5843 AC_SUBST(ENABLE_OOENV)
5845 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5846 if test "$enable_qt5" = "no"; then
5847 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5853 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
5854 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
5855 AC_MSG_RESULT([yes])
5857 AC_DEFINE(HAVE_FEATURE_PAGEIN)
5861 AC_SUBST(ENABLE_PAGEIN)
5863 dnl ===================================================================
5864 dnl check for cups support
5865 dnl ===================================================================
5867 AC_MSG_CHECKING([whether to enable CUPS support])
5868 if test "$test_cups" = yes -a "$enable_cups" != no; then
5870 AC_MSG_RESULT([yes])
5872 AC_MSG_CHECKING([whether cups support is present])
5873 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5874 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5875 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5876 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5882 AC_SUBST(ENABLE_CUPS)
5884 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
5886 dnl whether to find & fetch external tarballs?
5887 dnl ===================================================================
5888 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5889 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5890 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5892 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5895 if test -z "$TARFILE_LOCATION"; then
5896 if test -d "$SRC_ROOT/src" ; then
5897 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5898 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5900 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5902 AbsolutePath "$TARFILE_LOCATION"
5903 PathFormat "${absolute_path}"
5904 TARFILE_LOCATION="${formatted_path}"
5906 AC_SUBST(TARFILE_LOCATION)
5908 AC_MSG_CHECKING([whether we want to fetch tarballs])
5909 if test "$enable_fetch_external" != "no"; then
5910 if test "$with_all_tarballs" = "yes"; then
5911 AC_MSG_RESULT([yes, all of them])
5912 DO_FETCH_TARBALLS="ALL"
5914 AC_MSG_RESULT([yes, if we use them])
5915 DO_FETCH_TARBALLS="TRUE"
5921 AC_SUBST(DO_FETCH_TARBALLS)
5923 dnl Test whether to include MySpell dictionaries
5924 dnl ===================================================================
5925 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5926 if test "$with_myspell_dicts" = "yes"; then
5927 AC_MSG_RESULT([yes])
5928 WITH_MYSPELL_DICTS=TRUE
5929 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5930 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5935 AC_SUBST(WITH_MYSPELL_DICTS)
5937 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5938 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5939 if test "$with_system_dicts" = yes; then
5940 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5942 with_system_dicts=no
5945 AC_MSG_CHECKING([whether to use dicts from external paths])
5946 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5947 AC_MSG_RESULT([yes])
5949 AC_MSG_CHECKING([for spelling dictionary directory])
5950 if test -n "$with_external_dict_dir"; then
5951 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5953 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5954 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5955 DICT_SYSTEM_DIR=file:///usr/share/myspell
5958 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5959 AC_MSG_CHECKING([for hyphenation patterns directory])
5960 if test -n "$with_external_hyph_dir"; then
5961 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5963 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5965 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5966 AC_MSG_CHECKING([for thesaurus directory])
5967 if test -n "$with_external_thes_dir"; then
5968 THES_SYSTEM_DIR=file://$with_external_thes_dir
5970 THES_SYSTEM_DIR=file:///usr/share/mythes
5972 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5977 AC_SUBST(SYSTEM_DICTS)
5978 AC_SUBST(DICT_SYSTEM_DIR)
5979 AC_SUBST(HYPH_SYSTEM_DIR)
5980 AC_SUBST(THES_SYSTEM_DIR)
5982 dnl ===================================================================
5983 dnl Precompiled headers.
5985 AC_MSG_CHECKING([whether to enable pch feature])
5986 if test -z "$enable_pch"; then
5987 if test "$_os" = "WINNT"; then
5988 # Enabled by default on Windows.
5990 # never use sccache on auto-enabled PCH builds, except if requested explicitly
5991 if test -z "$enable_ccache" -a "$SCCACHE"; then
5998 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5999 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6001 if test "$enable_pch" = "system"; then
6003 AC_MSG_RESULT([yes (system headers)])
6004 elif test "$enable_pch" = "base"; then
6006 AC_MSG_RESULT([yes (system and base headers)])
6007 elif test "$enable_pch" = "normal"; then
6009 AC_MSG_RESULT([yes (normal)])
6010 elif test "$enable_pch" = "full"; then
6012 AC_MSG_RESULT([yes (full)])
6013 elif test "$enable_pch" = "yes"; then
6014 # Pick a suitable default.
6015 if test "$GCC" = "yes"; then
6016 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6017 # while making the PCHs larger and rebuilds more likely.
6019 AC_MSG_RESULT([yes (system and base headers)])
6021 # With MSVC the highest level makes a significant difference,
6022 # and it was the default when there used to be no PCH levels.
6024 AC_MSG_RESULT([yes (full)])
6026 elif test "$enable_pch" = "no"; then
6029 AC_MSG_ERROR([Unknown value for --enable-pch])
6031 AC_SUBST(ENABLE_PCH)
6032 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6033 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6034 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6035 if test "$CCACHE_BIN" != "not found"; then
6036 AC_MSG_CHECKING([ccache version])
6037 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6038 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6039 AC_MSG_RESULT([$CCACHE_VERSION])
6040 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6041 if test "$CCACHE_NUMVER" -gt "030701"; then
6042 AC_MSG_RESULT([yes])
6044 AC_MSG_RESULT([no (not newer than 3.7.1)])
6050 PCH_INSTANTIATE_TEMPLATES=
6051 if test -n "$ENABLE_PCH"; then
6052 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6054 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6055 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6057 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6063 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6065 BUILDING_PCH_WITH_OBJ=
6066 if test -n "$ENABLE_PCH"; then
6067 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6069 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6070 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6072 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6078 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6083 if test "$COM" = MSC; then
6084 fpch_prefix="-Xclang "
6086 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6087 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6089 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6090 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6091 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6093 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6094 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6095 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6097 if test -n "$PCH_CODEGEN"; then
6103 AC_SUBST(PCH_CODEGEN)
6104 AC_SUBST(PCH_NO_CODEGEN)
6106 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6107 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6109 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6110 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6112 if test -n "$PCH_DEBUGINFO"; then
6118 AC_SUBST(PCH_DEBUGINFO)
6122 AC_MSG_CHECKING([the GNU Make version])
6123 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6124 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6125 if test "$_make_longver" -ge "038200"; then
6126 AC_MSG_RESULT([$GNUMAKE $_make_version])
6128 elif test "$_make_longver" -ge "038100"; then
6129 if test "$build_os" = "cygwin"; then
6130 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6132 AC_MSG_RESULT([$GNUMAKE $_make_version])
6134 dnl ===================================================================
6135 dnl Search all the common names for sha1sum
6136 dnl ===================================================================
6137 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6138 if test -z "$SHA1SUM"; then
6139 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6140 elif test "$SHA1SUM" = "openssl"; then
6141 SHA1SUM="openssl sha1"
6143 AC_MSG_CHECKING([for GNU Make bug 20033])
6144 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6145 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6146 A := \$(wildcard *.a)
6150 <TAB>@echo survived bug20033.
6154 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6167 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6168 <TAB>\$(call d1,\$(CHECKSUM)),\
6169 <TAB>\$(call d2,\$(CHECKSUM)))
6171 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6172 no_parallelism_make="YES"
6173 AC_MSG_RESULT([yes, disable parallelism])
6175 AC_MSG_RESULT([no, keep parallelism enabled])
6177 rm -rf $TESTGMAKEBUG20033
6179 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6182 # find if gnumake support file function
6183 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6184 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6185 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6186 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6188 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6189 \$(file >test.txt,Success )
6196 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6197 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6198 HAVE_GNUMAKE_FILE_FUNC=TRUE
6199 AC_MSG_RESULT([yes])
6203 rm -rf $TESTGMAKEFILEFUNC
6204 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6206 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6208 if test "$_make_ver_check" = ""; then
6212 HAVE_LD_HASH_STYLE=FALSE
6213 WITH_LINKER_HASH_STYLE=
6214 AC_MSG_CHECKING([for --hash-style gcc linker support])
6215 if test "$GCC" = "yes"; then
6216 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6217 hash_styles="gnu sysv"
6218 elif test "$with_linker_hash_style" = "no"; then
6221 hash_styles="$with_linker_hash_style"
6224 for hash_style in $hash_styles; do
6225 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6226 hash_style_ldflags_save=$LDFLAGS
6227 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6229 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6236 HAVE_LD_HASH_STYLE=TRUE
6237 WITH_LINKER_HASH_STYLE=$hash_style
6239 [HAVE_LD_HASH_STYLE=FALSE],
6240 [HAVE_LD_HASH_STYLE=FALSE])
6241 LDFLAGS=$hash_style_ldflags_save
6244 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6245 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6249 LDFLAGS=$hash_style_ldflags_save
6253 AC_SUBST(HAVE_LD_HASH_STYLE)
6254 AC_SUBST(WITH_LINKER_HASH_STYLE)
6256 dnl ===================================================================
6257 dnl Check whether there's a Perl version available.
6258 dnl ===================================================================
6259 if test -z "$with_perl_home"; then
6260 AC_PATH_PROG(PERL, perl)
6262 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6263 _perl_path="$with_perl_home/bin/perl"
6264 if test -x "$_perl_path"; then
6267 AC_MSG_ERROR([$_perl_path not found])
6271 dnl ===================================================================
6272 dnl Testing for Perl version 5 or greater.
6273 dnl $] is the Perl version variable, it is returned as an integer
6274 dnl ===================================================================
6275 if test "$PERL"; then
6276 AC_MSG_CHECKING([the Perl version])
6277 ${PERL} -e "exit($]);"
6279 if test "$_perl_version" -lt 5; then
6280 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6282 AC_MSG_RESULT([Perl $_perl_version])
6284 AC_MSG_ERROR([Perl not found, install Perl 5])
6287 dnl ===================================================================
6288 dnl Testing for required Perl modules
6289 dnl ===================================================================
6291 AC_MSG_CHECKING([for required Perl modules])
6292 perl_use_string="use Cwd ; use Digest::MD5"
6293 if test "$_os" = "WINNT"; then
6294 if test -n "$PKGFORMAT"; then
6295 for i in $PKGFORMAT; do
6298 # for getting fonts versions to use in MSI
6299 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6305 if test "$with_system_hsqldb" = "yes"; then
6306 perl_use_string="$perl_use_string ; use Archive::Zip"
6308 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6309 # OpenSSL needs that to build
6310 perl_use_string="$perl_use_string ; use FindBin"
6312 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6313 AC_MSG_RESULT([all modules found])
6315 AC_MSG_RESULT([failed to find some modules])
6316 # Find out which modules are missing.
6317 for i in $perl_use_string; do
6318 if test "$i" != "use" -a "$i" != ";"; then
6319 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6320 missing_perl_modules="$missing_perl_modules $i"
6325 The missing Perl modules are: $missing_perl_modules
6326 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6329 dnl ===================================================================
6330 dnl Check for pkg-config
6331 dnl ===================================================================
6332 if test "$_os" != "WINNT"; then
6336 if test "$_os" != "WINNT"; then
6338 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6339 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6340 # explicitly. Or put /path/to/compiler in PATH yourself.
6342 # Use wrappers for LTO
6343 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6344 AC_CHECK_TOOL(AR,gcc-ar)
6345 AC_CHECK_TOOL(NM,gcc-nm)
6346 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6348 AC_CHECK_TOOL(AR,ar)
6349 AC_CHECK_TOOL(NM,nm)
6350 AC_CHECK_TOOL(RANLIB,ranlib)
6352 AC_CHECK_TOOL(OBJDUMP,objdump)
6353 AC_CHECK_TOOL(READELF,readelf)
6354 AC_CHECK_TOOL(STRIP,strip)
6360 AC_SUBST(PKG_CONFIG)
6361 AC_SUBST(PKG_CONFIG_PATH)
6362 AC_SUBST(PKG_CONFIG_LIBDIR)
6367 dnl ===================================================================
6368 dnl pkg-config checks on macOS
6369 dnl ===================================================================
6371 if test $_os = Darwin; then
6372 AC_MSG_CHECKING([for bogus pkg-config])
6373 if test -n "$PKG_CONFIG"; then
6374 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6375 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6377 if test "$enable_bogus_pkg_config" = "yes"; then
6378 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6380 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.])
6384 AC_MSG_RESULT([no, good])
6390 # Return value: $csctest
6394 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6395 if test -n "$regvalue"; then
6403 # Return value: $altest
6407 # We need this check to detect 4.6.1 or above.
6408 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6409 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6410 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6416 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6417 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6418 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6429 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6430 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6431 if test -n "$regvalue"; then
6438 find_winsdk_version()
6440 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6441 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6443 unset winsdktest winsdkbinsubdir winsdklibsubdir
6447 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6448 if test -n "$regvalue"; then
6449 winsdktest=$regvalue
6450 winsdklibsubdir=win8
6455 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6456 if test -n "$regvalue"; then
6457 winsdktest=$regvalue
6458 winsdklibsubdir=winv6.3
6463 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6464 if test -n "$regvalue"; then
6465 winsdktest=$regvalue
6466 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6467 if test -n "$regvalue"; then
6468 winsdkbinsubdir="$regvalue".0
6469 winsdklibsubdir=$winsdkbinsubdir
6470 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6471 local tmppath_unix=$(cygpath -u "$tmppath")
6472 # test exist the SDK path
6473 if test -d "$tmppath_unix"; then
6474 # when path is convertible to a short path then path is okay
6475 cygpath -d "$tmppath" >/dev/null 2>&1
6476 if test $? -ne 0; then
6477 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6480 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6491 # Return value: From find_winsdk_version
6495 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6496 find_winsdk_version $ver
6497 if test -n "$winsdktest"; then
6505 # Return value: $msmdir
6507 AC_MSG_CHECKING([for MSVC merge modules directory])
6511 dnl Order my_msm_files in increasing order. Then check the directories returned
6512 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6513 dnl the result will be the highest MSM version found in the highest directory.
6517 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6520 for f in $my_msm_files; do
6521 echo "$as_me:$LINENO: searching for $f" >&5
6527 for f in ${my_msm_files}; do
6528 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6529 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6530 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6531 if test -e "$my_msm_dir${f}"; then
6539 if test -n "$msmdir"; then
6540 msmdir=`cygpath -m "$msmdir"`
6541 AC_MSG_RESULT([$msmdir])
6543 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6544 AC_MSG_FAILURE([not found])
6546 AC_MSG_WARN([not found (check config.log)])
6547 add_warning "MSM none of ${my_msm_files} found"
6552 find_msvc_x64_dlls()
6554 # Return value: $msvcdllpath, $msvcdlls
6556 AC_MSG_CHECKING([for MSVC x64 DLL path])
6558 dnl Order crtver in increasing order. Then check the directories returned by
6559 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6560 dnl the result will be the highest CRT version found in the highest directory.
6562 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6565 for crtver in 141 142 143; do
6566 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6567 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6568 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6569 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6575 AC_MSG_RESULT([$msvcdllpath])
6576 AC_MSG_CHECKING([for MSVC x64 DLLs])
6577 msvcdlls="msvcp140.dll vcruntime140.dll"
6578 for dll in $msvcdlls; do
6579 if ! test -f "$msvcdllpath/$dll"; then
6580 AC_MSG_FAILURE([missing $dll])
6583 AC_MSG_RESULT([found all ($msvcdlls)])
6586 dnl =========================================
6587 dnl Check for the Windows SDK.
6588 dnl =========================================
6589 if test "$_os" = "WINNT"; then
6590 AC_MSG_CHECKING([for Windows SDK])
6591 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6593 WINDOWS_SDK_HOME=$winsdktest
6595 # normalize if found
6596 if test -n "$WINDOWS_SDK_HOME"; then
6597 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6598 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6601 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6604 if test -n "$WINDOWS_SDK_HOME"; then
6605 # Remove a possible trailing backslash
6606 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6608 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6609 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6610 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6611 have_windows_sdk_headers=yes
6612 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6613 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6614 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6615 have_windows_sdk_headers=yes
6616 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6617 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6618 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6619 have_windows_sdk_headers=yes
6621 have_windows_sdk_headers=no
6624 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6625 have_windows_sdk_libs=yes
6626 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6627 have_windows_sdk_libs=yes
6629 have_windows_sdk_libs=no
6632 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6633 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6634 the Windows SDK are installed.])
6638 if test -z "$WINDOWS_SDK_HOME"; then
6639 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6640 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6641 WINDOWS_SDK_VERSION=80
6642 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6643 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6644 WINDOWS_SDK_VERSION=81
6645 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6646 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6647 WINDOWS_SDK_VERSION=10
6648 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6650 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6652 PathFormat "$WINDOWS_SDK_HOME"
6653 WINDOWS_SDK_HOME="$formatted_path"
6654 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6655 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6656 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6657 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6658 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6659 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6660 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6664 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6665 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6666 dnl but not in v8.0), so allow this to be overridden with a
6667 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6668 dnl and configuration error if no WiLangId.vbs is found would arguably be
6669 dnl better, but I do not know under which conditions exactly it is needed by
6671 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6672 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6673 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6674 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6675 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6676 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6678 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6679 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6680 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6682 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6683 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6684 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6687 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6688 if test -n "$with_package_format" -a "$with_package_format" != no; then
6689 for i in "$with_package_format"; do
6690 if test "$i" = "msi"; then
6691 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6692 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6699 AC_SUBST(WINDOWS_SDK_HOME)
6700 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6701 AC_SUBST(WINDOWS_SDK_VERSION)
6702 AC_SUBST(WINDOWS_SDK_WILANGID)
6704 if test "$build_os" = "cygwin"; then
6705 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6706 dnl dir, it also determines that dir's path w/o an arch segment if any,
6707 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6708 AC_MSG_CHECKING([for midl.exe])
6711 if test -n "$winsdkbinsubdir" \
6712 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6714 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6715 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6716 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6717 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6718 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6719 elif test -f "$winsdktest/Bin/midl.exe"; then
6720 MIDL_PATH=$winsdktest/Bin
6721 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6723 if test ! -f "$MIDL_PATH/midl.exe"; then
6724 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6726 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6729 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6730 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6732 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6733 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6734 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6735 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6736 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6737 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6738 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6739 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6740 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6741 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6742 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6743 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6745 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6749 AC_MSG_CHECKING([for csc.exe])
6751 if test -f "$csctest/csc.exe"; then
6754 if test ! -f "$CSC_PATH/csc.exe"; then
6755 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6757 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6760 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6763 AC_MSG_CHECKING([for al.exe])
6765 if test -n "$winsdkbinsubdir" \
6766 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6768 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6769 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6770 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6771 elif test -f "$winsdktest/Bin/al.exe"; then
6772 AL_PATH="$winsdktest/Bin"
6775 if test -z "$AL_PATH"; then
6777 if test -f "$altest/bin/al.exe"; then
6778 AL_PATH="$altest/bin"
6779 elif test -f "$altest/al.exe"; then
6783 if test ! -f "$AL_PATH/al.exe"; then
6784 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6786 AC_MSG_RESULT([$AL_PATH/al.exe])
6789 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6791 dnl Check mscoree.lib / .NET Framework dir
6792 AC_MSG_CHECKING(.NET Framework)
6794 PathFormat "$frametest"
6795 frametest="$formatted_path"
6796 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6797 DOTNET_FRAMEWORK_HOME="$frametest"
6800 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6801 DOTNET_FRAMEWORK_HOME="$winsdktest"
6804 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
6805 AC_MSG_ERROR([mscoree.lib not found])
6807 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6809 PathFormat "$MIDL_PATH"
6810 MIDL_PATH="$formatted_path"
6812 PathFormat "$AL_PATH"
6813 AL_PATH="$formatted_path"
6815 PathFormat "$DOTNET_FRAMEWORK_HOME"
6816 DOTNET_FRAMEWORK_HOME="$formatted_path"
6818 PathFormat "$CSC_PATH"
6819 CSC_PATH="$formatted_path"
6822 dnl ===================================================================
6823 dnl Testing for C++ compiler and version...
6824 dnl ===================================================================
6826 if test "$_os" != "WINNT"; then
6827 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6828 save_CXXFLAGS=$CXXFLAGS
6830 CXXFLAGS=$save_CXXFLAGS
6831 if test -z "$CXX_BASE"; then
6832 CXX_BASE=`first_arg_basename "$CXX"`
6836 dnl check for GNU C++ compiler version
6837 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6838 AC_MSG_CHECKING([the GNU C++ compiler version])
6840 _gpp_version=`$CXX -dumpversion`
6841 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6843 if test "$_gpp_majmin" -lt "700"; then
6844 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6846 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6849 dnl see https://code.google.com/p/android/issues/detail?id=41770
6853 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6854 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6855 #include <bits/c++config.h>]],[[
6856 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6857 && !defined(_GLIBCXX__PTHREADS) \
6858 && !defined(_GLIBCXX_HAS_GTHREADS)
6861 ]])],[AC_MSG_RESULT([yes])
6862 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6864 if test $glibcxx_threads = yes; then
6865 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6868 AC_SUBST(BOOST_CXXFLAGS)
6871 # prefx CXX with ccache if needed
6873 if test "$CCACHE" != ""; then
6874 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6876 save_CXXFLAGS=$CXXFLAGS
6877 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6878 # msvc does not fail on unknown options, check stdout
6879 if test "$COM" = MSC; then
6880 CXXFLAGS="$CXXFLAGS -nologo"
6882 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6883 ac_cxx_werror_flag=yes
6884 dnl an empty program will do, we're checking the compiler flags
6885 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6886 [use_ccache=yes], [use_ccache=no])
6887 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6888 AC_MSG_RESULT([yes])
6891 CXX_BASE="ccache $CXX_BASE"
6894 CXXFLAGS=$save_CXXFLAGS
6895 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6899 dnl ===================================================================
6900 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6901 dnl ===================================================================
6903 if test "$_os" != "WINNT"; then
6906 dnl Check whether there's a C pre-processor.
6911 dnl ===================================================================
6912 dnl Find integral type sizes and alignments
6913 dnl ===================================================================
6915 if test "$_os" != "WINNT"; then
6917 AC_CHECK_SIZEOF(long)
6918 AC_CHECK_SIZEOF(short)
6919 AC_CHECK_SIZEOF(int)
6920 AC_CHECK_SIZEOF(long long)
6921 AC_CHECK_SIZEOF(double)
6922 AC_CHECK_SIZEOF(void*)
6923 AC_CHECK_SIZEOF(size_t)
6925 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6926 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6927 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6928 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6929 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6930 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6932 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6933 m4_pattern_allow([AC_CHECK_ALIGNOF])
6934 m4_ifdef([AC_CHECK_ALIGNOF],
6936 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6937 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6938 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6939 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6942 case "$_os-$host_cpu" in
6944 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6945 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6946 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6947 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6950 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6951 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6952 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6953 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6956 if test -z "$ac_cv_alignof_short" -o \
6957 -z "$ac_cv_alignof_int" -o \
6958 -z "$ac_cv_alignof_long" -o \
6959 -z "$ac_cv_alignof_double"; then
6960 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.])
6966 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6967 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6968 if test $ac_cv_sizeof_long -eq 8; then
6969 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6970 elif test $ac_cv_sizeof_double -eq 8; then
6971 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6973 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6976 dnl Check for large file support
6978 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6979 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6981 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6982 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6986 SAL_TYPES_SIZEOFSHORT=2
6987 SAL_TYPES_SIZEOFINT=4
6988 SAL_TYPES_SIZEOFLONG=4
6989 SAL_TYPES_SIZEOFLONGLONG=8
6990 if test $WIN_HOST_BITS -eq 32; then
6991 SAL_TYPES_SIZEOFPOINTER=4
6994 SAL_TYPES_SIZEOFPOINTER=8
6997 SAL_TYPES_ALIGNMENT2=2
6998 SAL_TYPES_ALIGNMENT4=4
6999 SAL_TYPES_ALIGNMENT8=8
7002 AC_SUBST(LFS_CFLAGS)
7003 AC_SUBST(SIZEOF_SIZE_T)
7005 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7006 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7007 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7008 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7009 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7010 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7011 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7012 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7014 dnl ===================================================================
7015 dnl Check whether to enable runtime optimizations
7016 dnl ===================================================================
7017 ENABLE_RUNTIME_OPTIMIZATIONS=
7018 AC_MSG_CHECKING([whether to enable runtime optimizations])
7019 if test -z "$enable_runtime_optimizations"; then
7023 enable_runtime_optimizations=no
7029 if test "$enable_runtime_optimizations" != no; then
7030 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7031 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7032 AC_MSG_RESULT([yes])
7036 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7038 dnl ===================================================================
7039 dnl Check if valgrind headers are available
7040 dnl ===================================================================
7042 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7043 prev_cppflags=$CPPFLAGS
7044 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7045 # or where does it come from?
7046 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7047 AC_CHECK_HEADER([valgrind/valgrind.h],
7048 [ENABLE_VALGRIND=TRUE])
7049 CPPFLAGS=$prev_cppflags
7051 AC_SUBST([ENABLE_VALGRIND])
7052 if test -z "$ENABLE_VALGRIND"; then
7053 if test "$with_valgrind" = yes; then
7054 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7058 AC_SUBST([VALGRIND_CFLAGS])
7061 dnl ===================================================================
7062 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7063 dnl ===================================================================
7065 # We need at least the sys/sdt.h include header.
7066 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7067 if test "$SDT_H_FOUND" = "TRUE"; then
7068 # Found sys/sdt.h header, now make sure the c++ compiler works.
7069 # Old g++ versions had problems with probes in constructors/destructors.
7070 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7072 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7073 #include <sys/sdt.h>
7081 ProbeClass(int& v, const char *n) : ref(v), name(n)
7083 DTRACE_PROBE2(_test_, cons, name, ref);
7086 void method(int min)
7088 DTRACE_PROBE3(_test_, meth, name, ref, min);
7094 DTRACE_PROBE2(_test_, dest, name, ref);
7099 DTRACE_PROBE1(_test_, call, i);
7100 ProbeClass inst = ProbeClass(i, "call");
7102 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7103 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7106 AC_CONFIG_HEADERS([config_host/config_probes.h])
7108 dnl ===================================================================
7110 dnl ===================================================================
7111 HAVE_GCC_STACK_CLASH_PROTECTION=
7112 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7113 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7115 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7117 [AC_LANG_PROGRAM(, [[return 0;]])],
7118 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7119 [AC_MSG_RESULT([no])])
7122 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7124 CFLAGS="$CFLAGS -Werror -mno-avx"
7125 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7127 if test "$HAVE_GCC_AVX" = "TRUE"; then
7128 AC_MSG_RESULT([yes])
7133 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7134 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7136 if (__sync_add_and_fetch(&v, 1) != 1 ||
7137 __sync_sub_and_fetch(&v, 1) != 0)
7139 __sync_synchronize();
7140 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7144 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7145 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7146 AC_MSG_RESULT([yes])
7147 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7152 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7154 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7157 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7159 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7160 AC_MSG_RESULT([yes])
7161 ], [AC_MSG_RESULT([no])])
7164 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7166 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7169 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7171 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7172 AC_MSG_RESULT([yes])
7173 ], [AC_MSG_RESULT([no])])
7176 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7178 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7180 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7182 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7183 AC_MSG_RESULT([yes])
7184 ], [AC_MSG_RESULT([no])])
7187 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7189 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7192 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7194 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7195 AC_MSG_RESULT([yes])
7196 ], [AC_MSG_RESULT([no])])
7199 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7201 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7204 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7206 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7207 AC_MSG_RESULT([yes])
7208 ], [AC_MSG_RESULT([no])])
7211 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7213 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7215 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7217 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7218 AC_MSG_RESULT([yes])
7219 ], [AC_MSG_RESULT([no])])
7222 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7224 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7226 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7228 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7229 AC_MSG_RESULT([yes])
7230 ], [AC_MSG_RESULT([no])])
7233 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7235 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7237 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7239 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7240 AC_MSG_RESULT([yes])
7241 ], [AC_MSG_RESULT([no])])
7244 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7246 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7249 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7251 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7252 AC_MSG_RESULT([yes])
7253 ], [AC_MSG_RESULT([no])])
7256 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7258 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7261 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7263 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7264 AC_MSG_RESULT([yes])
7265 ], [AC_MSG_RESULT([no])])
7269 AC_SUBST(HAVE_GCC_AVX)
7270 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7271 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7273 dnl ===================================================================
7274 dnl Identify the C++ library
7275 dnl ===================================================================
7277 AC_MSG_CHECKING([what the C++ library is])
7280 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7286 [CPP_LIBRARY=GLIBCXX
7287 cpp_library_name="GNU libstdc++"
7290 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7292 #ifndef _LIBCPP_VERSION
7297 cpp_library_name="LLVM libc++"
7298 AC_DEFINE([HAVE_LIBCXX])
7300 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7307 cpp_library_name="Microsoft"
7309 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7310 AC_MSG_RESULT([$cpp_library_name])
7312 AC_SUBST([HAVE_LIBSTDCPP])
7314 dnl ===================================================================
7316 dnl ===================================================================
7317 AC_PATH_PROG(GPERF, gperf)
7318 if test -z "$GPERF"; then
7319 AC_MSG_ERROR([gperf not found but needed. Install it.])
7321 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7322 GPERF=`cygpath -m $GPERF`
7324 AC_MSG_CHECKING([whether gperf is new enough])
7325 my_gperf_ver1=$($GPERF --version | head -n 1)
7326 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7327 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7328 if test "$my_gperf_ver3" -ge 301; then
7329 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7331 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7335 dnl ===================================================================
7336 dnl Check for system libcmis
7337 dnl ===================================================================
7338 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7340 dnl ===================================================================
7342 dnl ===================================================================
7344 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7346 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7347 if test "$with_latest_c__" = yes; then
7348 CXXFLAGS_CXX11=-std:c++latest
7350 CXXFLAGS_CXX11=-std:c++17
7352 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7353 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7354 my_flags='-std=c++17 -std=c++1z'
7355 if test "$with_latest_c__" = yes; then
7356 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7358 for flag in $my_flags; do
7359 if test "$COM" = MSC; then
7360 flag="-Xclang $flag"
7362 save_CXXFLAGS=$CXXFLAGS
7363 CXXFLAGS="$CXXFLAGS $flag -Werror"
7364 if test "$SYSTEM_LIBCMIS" = TRUE; then
7365 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7368 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7369 #include <algorithm>
7370 #include <functional>
7373 #if defined SYSTEM_LIBCMIS
7374 // See ucb/source/ucp/cmis/auth_provider.hxx:
7375 #if !defined __clang__
7376 #pragma GCC diagnostic push
7377 #pragma GCC diagnostic ignored "-Wdeprecated"
7378 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7380 #include <libcmis/libcmis.hxx>
7381 #if !defined __clang__
7382 #pragma GCC diagnostic pop
7386 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7387 std::sort(v.begin(), v.end(), fn);
7389 ]])],[CXXFLAGS_CXX11=$flag])
7391 CXXFLAGS=$save_CXXFLAGS
7392 if test -n "$CXXFLAGS_CXX11"; then
7397 if test -n "$CXXFLAGS_CXX11"; then
7398 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7402 AC_SUBST(CXXFLAGS_CXX11)
7404 if test "$GCC" = "yes"; then
7405 save_CXXFLAGS=$CXXFLAGS
7406 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7408 CXXFLAGS=$save_CXXFLAGS
7409 AC_SUBST(ATOMIC_LIB)
7412 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7413 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7414 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7415 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7416 dnl again towards 4.7.2:
7417 if test $CPP_LIBRARY = GLIBCXX; then
7418 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7420 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7422 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7423 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7424 // GCC 4.7.0: 20120322
7425 // GCC 4.7.1: 20120614
7426 // and using a range check is not possible as the mapping between
7427 // __GLIBCXX__ values and GCC versions is not monotonic
7432 ]])], [AC_MSG_RESULT(no, ok)],
7433 [AC_MSG_ERROR(yes)])
7437 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7438 save_CXXFLAGS=$CXXFLAGS
7439 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7442 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7445 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7461 a thinga[]={{0,0}, {1,1}};
7462 b thingb[]={{0,0}, {1,1}};
7463 size_t i = sizeof(sal_n_array_size(thinga));
7464 size_t j = sizeof(sal_n_array_size(thingb));
7465 return !(i != 0 && j != 0);
7467 ], [ AC_MSG_RESULT(yes) ],
7468 [ AC_MSG_ERROR(no)])
7470 CXXFLAGS=$save_CXXFLAGS
7472 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7473 if test "$GCC" = yes; then
7474 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7476 save_CXXFLAGS=$CXXFLAGS
7477 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7478 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7479 CXXFLAGS=$save_CXXFLAGS
7481 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7482 AC_MSG_RESULT([yes])
7487 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7489 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7491 save_CXXFLAGS=$CXXFLAGS
7492 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7494 #include <algorithm>
7495 #include <initializer_list>
7497 template<typename T> class S {
7501 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7503 constinit S<int> s{3, 2, 1};
7505 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7506 AC_MSG_RESULT([yes])
7507 ], [AC_MSG_RESULT([no])])
7508 CXXFLAGS=$save_CXXFLAGS
7511 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7513 save_CXXFLAGS=$CXXFLAGS
7514 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7515 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7517 #include <type_traits>
7518 // Don't check size_type directly, as it was called index_type before P1872R0:
7519 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7521 AC_DEFINE([HAVE_CPP_SPAN],[1])
7522 AC_MSG_RESULT([yes])
7523 ], [AC_MSG_RESULT([no])])
7524 CXXFLAGS=$save_CXXFLAGS
7527 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7529 save_CXXFLAGS=$CXXFLAGS
7530 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7531 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7532 struct S1 { S1(S1 &&); };
7534 S1 f(S2 s) { return s; }
7536 AC_DEFINE([HAVE_P1155R3],[1])
7537 AC_MSG_RESULT([yes])
7538 ], [AC_MSG_RESULT([no])])
7539 CXXFLAGS=$save_CXXFLAGS
7542 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7543 HAVE_CXX20_ATOMIC_REF=
7545 save_CXXFLAGS=$CXXFLAGS
7546 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7547 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7550 std::atomic_ref<int> y(x);
7552 HAVE_CXX20_ATOMIC_REF=TRUE
7553 AC_MSG_RESULT([yes])
7554 ], [AC_MSG_RESULT([no])])
7555 CXXFLAGS=$save_CXXFLAGS
7557 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7559 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7560 dnl which is included in -Wextra anyway):
7561 HAVE_WDEPRECATED_COPY_DTOR=
7562 if test "$GCC" = yes; then
7563 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7565 save_CXXFLAGS=$CXXFLAGS
7566 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7567 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7568 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7569 AC_MSG_RESULT([yes])
7570 ], [AC_MSG_RESULT([no])])
7571 CXXFLAGS=$save_CXXFLAGS
7574 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7576 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7577 dnl uninitialized warning for code like
7580 dnl boost::optional<OString> * g(bool b) {
7581 dnl boost::optional<OString> o;
7583 dnl return new boost::optional<OString>(o);
7586 dnl (as is e.g. present, in a slightly more elaborate form, in
7587 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7588 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7589 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7590 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7591 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7593 save_CXXFLAGS=$CXXFLAGS
7594 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7595 if test "$ENABLE_OPTIMIZED" = TRUE; then
7596 CXXFLAGS="$CXXFLAGS -O2"
7598 CXXFLAGS="$CXXFLAGS -O0"
7600 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7609 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7610 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7616 char stg[sizeof (S1)];
7624 ]])], [AC_MSG_RESULT([no])], [
7625 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7626 AC_MSG_RESULT([yes])
7628 CXXFLAGS=$save_CXXFLAGS
7631 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7633 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7634 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7635 dnl hits us e.g. with GCC 10 and --enable-optimized at
7637 dnl In file included from include/rtl/string.hxx:49,
7638 dnl from include/rtl/ustring.hxx:43,
7639 dnl from include/osl/file.hxx:35,
7640 dnl from include/codemaker/global.hxx:28,
7641 dnl from include/codemaker/options.hxx:23,
7642 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7643 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7644 dnl 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,
7645 dnl 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,
7646 dnl 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,
7647 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7648 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7649 dnl 78 | memcpy( buffer, data, length );
7650 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7651 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7652 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7653 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7655 save_CXXFLAGS=$CXXFLAGS
7656 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7657 if test "$ENABLE_OPTIMIZED" = TRUE; then
7658 CXXFLAGS="$CXXFLAGS -O2"
7660 CXXFLAGS="$CXXFLAGS -O0"
7662 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7663 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7664 void fill(char const * begin, char const * end, char c);
7670 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7671 __builtin_strncpy(c.username, "root", sizeof(c.username));
7673 ]])], [AC_MSG_RESULT([no])], [
7674 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7675 AC_MSG_RESULT([yes])
7677 CXXFLAGS=$save_CXXFLAGS
7680 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7682 HAVE_DLLEXPORTINLINES=
7683 if test "$_os" = "WINNT"; then
7684 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7686 save_CXXFLAGS=$CXXFLAGS
7687 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7688 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7689 HAVE_DLLEXPORTINLINES=TRUE
7690 AC_MSG_RESULT([yes])
7691 ], [AC_MSG_RESULT([no])])
7692 CXXFLAGS=$save_CXXFLAGS
7695 AC_SUBST([HAVE_DLLEXPORTINLINES])
7697 dnl ===================================================================
7698 dnl CPU Intrinsics support - SSE, AVX
7699 dnl ===================================================================
7701 CXXFLAGS_INTRINSICS_SSE2=
7702 CXXFLAGS_INTRINSICS_SSSE3=
7703 CXXFLAGS_INTRINSICS_SSE41=
7704 CXXFLAGS_INTRINSICS_SSE42=
7705 CXXFLAGS_INTRINSICS_AVX=
7706 CXXFLAGS_INTRINSICS_AVX2=
7707 CXXFLAGS_INTRINSICS_AVX512=
7708 CXXFLAGS_INTRINSICS_AVX512F=
7709 CXXFLAGS_INTRINSICS_F16C=
7710 CXXFLAGS_INTRINSICS_FMA=
7712 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7713 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7720 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7721 flag_avx512f=-mavx512f
7725 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7726 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7727 # SSE2 seems to be SSE2+.
7728 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7729 # is not empty (and can be tested in gbuild).
7730 flag_sse2=-arch:SSE2
7731 flag_ssse3=-arch:SSE2
7732 flag_sse41=-arch:SSE2
7733 flag_sse42=-arch:SSE2
7735 flag_avx2=-arch:AVX2
7736 flag_avx512=-arch:AVX512
7737 flag_avx512f=-arch:AVX512
7738 # These are part of -arch:AVX2
7739 flag_f16c=-arch:AVX2
7743 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7745 save_CXXFLAGS=$CXXFLAGS
7746 CXXFLAGS="$CXXFLAGS $flag_sse2"
7747 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7748 #include <emmintrin.h>
7750 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7751 c = _mm_xor_si128 (a, b);
7755 [can_compile_sse2=yes],
7756 [can_compile_sse2=no])
7758 CXXFLAGS=$save_CXXFLAGS
7759 AC_MSG_RESULT([${can_compile_sse2}])
7760 if test "${can_compile_sse2}" = "yes" ; then
7761 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7764 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7766 save_CXXFLAGS=$CXXFLAGS
7767 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7768 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7769 #include <tmmintrin.h>
7771 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7772 c = _mm_maddubs_epi16 (a, b);
7776 [can_compile_ssse3=yes],
7777 [can_compile_ssse3=no])
7779 CXXFLAGS=$save_CXXFLAGS
7780 AC_MSG_RESULT([${can_compile_ssse3}])
7781 if test "${can_compile_ssse3}" = "yes" ; then
7782 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7785 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7787 save_CXXFLAGS=$CXXFLAGS
7788 CXXFLAGS="$CXXFLAGS $flag_sse41"
7789 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7790 #include <smmintrin.h>
7792 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7793 c = _mm_cmpeq_epi64 (a, b);
7797 [can_compile_sse41=yes],
7798 [can_compile_sse41=no])
7800 CXXFLAGS=$save_CXXFLAGS
7801 AC_MSG_RESULT([${can_compile_sse41}])
7802 if test "${can_compile_sse41}" = "yes" ; then
7803 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7806 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7808 save_CXXFLAGS=$CXXFLAGS
7809 CXXFLAGS="$CXXFLAGS $flag_sse42"
7810 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7811 #include <nmmintrin.h>
7813 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7814 c = _mm_cmpgt_epi64 (a, b);
7818 [can_compile_sse42=yes],
7819 [can_compile_sse42=no])
7821 CXXFLAGS=$save_CXXFLAGS
7822 AC_MSG_RESULT([${can_compile_sse42}])
7823 if test "${can_compile_sse42}" = "yes" ; then
7824 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7827 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7829 save_CXXFLAGS=$CXXFLAGS
7830 CXXFLAGS="$CXXFLAGS $flag_avx"
7831 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7832 #include <immintrin.h>
7834 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7835 c = _mm256_xor_ps(a, b);
7839 [can_compile_avx=yes],
7840 [can_compile_avx=no])
7842 CXXFLAGS=$save_CXXFLAGS
7843 AC_MSG_RESULT([${can_compile_avx}])
7844 if test "${can_compile_avx}" = "yes" ; then
7845 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7848 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7850 save_CXXFLAGS=$CXXFLAGS
7851 CXXFLAGS="$CXXFLAGS $flag_avx2"
7852 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7853 #include <immintrin.h>
7855 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7856 c = _mm256_maddubs_epi16(a, b);
7860 [can_compile_avx2=yes],
7861 [can_compile_avx2=no])
7863 CXXFLAGS=$save_CXXFLAGS
7864 AC_MSG_RESULT([${can_compile_avx2}])
7865 if test "${can_compile_avx2}" = "yes" ; then
7866 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7869 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7871 save_CXXFLAGS=$CXXFLAGS
7872 CXXFLAGS="$CXXFLAGS $flag_avx512"
7873 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7874 #include <immintrin.h>
7876 __m512i a = _mm512_loadu_si512(0);
7877 __m512d v1 = _mm512_load_pd(0);
7878 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7879 __m512d v2 = _mm512_abs_pd(v1);
7883 [can_compile_avx512=yes],
7884 [can_compile_avx512=no])
7886 CXXFLAGS=$save_CXXFLAGS
7887 AC_MSG_RESULT([${can_compile_avx512}])
7888 if test "${can_compile_avx512}" = "yes" ; then
7889 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7890 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7893 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7895 save_CXXFLAGS=$CXXFLAGS
7896 CXXFLAGS="$CXXFLAGS $flag_f16c"
7897 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7898 #include <immintrin.h>
7900 __m128i a = _mm_set1_epi32 (0);
7902 c = _mm_cvtph_ps(a);
7906 [can_compile_f16c=yes],
7907 [can_compile_f16c=no])
7909 CXXFLAGS=$save_CXXFLAGS
7910 AC_MSG_RESULT([${can_compile_f16c}])
7911 if test "${can_compile_f16c}" = "yes" ; then
7912 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7915 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7917 save_CXXFLAGS=$CXXFLAGS
7918 CXXFLAGS="$CXXFLAGS $flag_fma"
7919 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7920 #include <immintrin.h>
7922 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7923 d = _mm256_fmadd_ps(a, b, c);
7927 [can_compile_fma=yes],
7928 [can_compile_fma=no])
7930 CXXFLAGS=$save_CXXFLAGS
7931 AC_MSG_RESULT([${can_compile_fma}])
7932 if test "${can_compile_fma}" = "yes" ; then
7933 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7936 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7937 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7938 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7939 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7940 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7941 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7942 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7943 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7944 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7945 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7947 dnl ===================================================================
7948 dnl system stl sanity tests
7949 dnl ===================================================================
7950 if test "$_os" != "WINNT"; then
7954 save_CPPFLAGS="$CPPFLAGS"
7955 if test -n "$MACOSX_SDK_PATH"; then
7956 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7959 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7961 if test "$CPP_LIBRARY" = GLIBCXX; then
7962 dnl gcc#19664, gcc#22482, rhbz#162935
7963 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7964 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7965 AC_MSG_RESULT([$stlvisok])
7966 if test "$stlvisok" = "no"; then
7967 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7971 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7972 # when we don't make any dynamic libraries?
7973 if test "$DISABLE_DYNLOADING" = ""; then
7974 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7975 cat > conftestlib1.cc <<_ACEOF
7976 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7977 struct S2: S1<int> { virtual ~S2(); };
7980 cat > conftestlib2.cc <<_ACEOF
7981 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7982 struct S2: S1<int> { virtual ~S2(); };
7983 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7985 gccvisinlineshiddenok=yes
7986 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7987 gccvisinlineshiddenok=no
7989 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7990 dnl known to not work with -z defs (unsetting which makes the test
7992 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7993 if test "$COM_IS_CLANG" = TRUE; then
7994 for i in $CXX $CXXFLAGS; do
7997 my_linkflagsnoundefs=
8003 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8004 gccvisinlineshiddenok=no
8009 AC_MSG_RESULT([$gccvisinlineshiddenok])
8010 if test "$gccvisinlineshiddenok" = "no"; then
8011 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8015 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8016 cat >visibility.cxx <<_ACEOF
8017 #pragma GCC visibility push(hidden)
8018 struct __attribute__ ((visibility ("default"))) TestStruct {
8021 __attribute__ ((visibility ("default"))) void TestFunc() {
8025 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8030 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8033 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8045 rm -f visibility.s visibility.cxx
8047 AC_MSG_RESULT([$gccvisbroken])
8048 if test "$gccvisbroken" = "yes"; then
8049 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8052 CPPFLAGS="$save_CPPFLAGS"
8054 AC_MSG_CHECKING([if CET endbranch is recognized])
8055 cat > endbr.s <<_ACEOF
8058 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8059 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8060 AC_MSG_RESULT([yes])
8061 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8065 rm -f endbr.s endbr.o
8066 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8071 dnl ===================================================================
8073 dnl ===================================================================
8075 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8076 if test "$GCC" = "yes"; then
8077 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8079 save_CXXFLAGS=$CXXFLAGS
8080 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8081 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8082 CXXFLAGS=$save_CXXFLAGS
8084 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8085 AC_MSG_RESULT([yes])
8090 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8092 dnl ===================================================================
8093 dnl Compiler plugins
8094 dnl ===================================================================
8097 # currently only Clang
8099 if test "$COM_IS_CLANG" != "TRUE"; then
8100 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8101 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8102 enable_compiler_plugins=no
8106 COMPILER_PLUGINS_COM_IS_CLANG=
8107 if test "$COM_IS_CLANG" = "TRUE"; then
8108 if test -n "$enable_compiler_plugins"; then
8109 compiler_plugins="$enable_compiler_plugins"
8110 elif test -n "$ENABLE_DBGUTIL"; then
8111 compiler_plugins=test
8115 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8116 if test "$CLANGVER" -lt 50002; then
8117 if test "$compiler_plugins" = yes; then
8118 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8124 if test "$compiler_plugins" != "no"; then
8125 dnl The prefix where Clang resides, override to where Clang resides if
8126 dnl using a source build:
8127 if test -z "$CLANGDIR"; then
8128 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8130 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8131 if test -z "$COMPILER_PLUGINS_CXX"; then
8132 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8134 clangbindir=$CLANGDIR/bin
8135 if test "$build_os" = "cygwin"; then
8136 clangbindir=$(cygpath -u "$clangbindir")
8138 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8139 if test -n "$LLVM_CONFIG"; then
8140 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8141 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8142 if test -z "$CLANGLIBDIR"; then
8143 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8145 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8146 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8147 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8148 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8149 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8151 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8152 clangobjdir=$($LLVM_CONFIG --obj-root)
8153 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8154 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8157 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8161 save_CPPFLAGS=$CPPFLAGS
8162 save_CXXFLAGS=$CXXFLAGS
8163 save_LDFLAGS=$LDFLAGS
8165 CXX=$COMPILER_PLUGINS_CXX
8166 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8167 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8168 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8169 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8170 [COMPILER_PLUGINS=TRUE],
8172 if test "$compiler_plugins" = "yes"; then
8173 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8175 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8176 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8179 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8180 dnl comment in compilerplugins/Makefile-clang.mk:
8181 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8183 AC_MSG_CHECKING([for clang libraries to use])
8184 if test -z "$CLANGTOOLLIBS"; then
8185 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8186 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8188 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8189 [[ clang::FullSourceLoc().dump(); ]])
8190 ],[CLANGTOOLLIBS="$LIBS"],[])
8192 if test -z "$CLANGTOOLLIBS"; then
8193 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8195 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8196 [[ clang::FullSourceLoc().dump(); ]])
8197 ],[CLANGTOOLLIBS="$LIBS"],[])
8199 AC_MSG_RESULT([$CLANGTOOLLIBS])
8200 if test -z "$CLANGTOOLLIBS"; then
8201 if test "$compiler_plugins" = "yes"; then
8202 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8204 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8205 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8209 if test -n "$COMPILER_PLUGINS"; then
8210 if test -z "$CLANGSYSINCLUDE"; then
8211 if test -n "$LLVM_CONFIG"; then
8212 # Path to the clang system headers (no idea if there's a better way to get it).
8213 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8220 CPPFLAGS=$save_CPPFLAGS
8221 CXXFLAGS=$save_CXXFLAGS
8222 LDFLAGS=$save_LDFLAGS
8226 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8227 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8233 [AC_MSG_RESULT([yes])
8234 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8235 [AC_MSG_RESULT([no])])
8236 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8239 if test "$enable_compiler_plugins" = "yes"; then
8240 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8243 COMPILER_PLUGINS_ANALYZER_PCH=
8244 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8245 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8247 AC_SUBST(COMPILER_PLUGINS)
8248 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8249 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8250 AC_SUBST(COMPILER_PLUGINS_CXX)
8251 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8252 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8253 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8254 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8256 AC_SUBST(CLANGLIBDIR)
8257 AC_SUBST(CLANGTOOLLIBS)
8258 AC_SUBST(CLANGSYSINCLUDE)
8260 # Plugin to help linker.
8261 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8262 # This makes --enable-lto build with clang work.
8265 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8266 AC_SUBST(HAVE_POSIX_FALLOCATE)
8268 JITC_PROCESSOR_TYPE=""
8269 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8270 # IBMs JDK needs this...
8271 JITC_PROCESSOR_TYPE=6
8272 export JITC_PROCESSOR_TYPE
8274 AC_SUBST([JITC_PROCESSOR_TYPE])
8276 # Misc Windows Stuff
8277 AC_ARG_WITH(ucrt-dir,
8278 AS_HELP_STRING([--with-ucrt-dir],
8279 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8280 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8281 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8282 Windows6.1-KB2999226-x64.msu
8283 Windows6.1-KB2999226-x86.msu
8284 Windows8.1-KB2999226-x64.msu
8285 Windows8.1-KB2999226-x86.msu
8286 Windows8-RT-KB2999226-x64.msu
8287 Windows8-RT-KB2999226-x86.msu
8288 A zip archive including those files is available from Microsoft site:
8289 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8292 UCRT_REDISTDIR="$with_ucrt_dir"
8293 if test $_os = "WINNT"; then
8295 for i in $PKGFORMAT; do
8296 if test "$i" = msi; then
8301 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8302 MSVC_DLLS="$msvcdlls"
8303 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8304 # MSVC 15.3 changed it to VC141
8305 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8306 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8307 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8308 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8309 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8310 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8312 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8315 if test "$UCRT_REDISTDIR" = "no"; then
8316 dnl explicitly disabled
8319 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8320 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8321 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8322 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8323 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8324 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8326 if test -n "$PKGFORMAT"; then
8327 for i in $PKGFORMAT; do
8330 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8331 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8340 AC_SUBST(UCRT_REDISTDIR)
8341 AC_SUBST(MSVC_DLL_PATH)
8346 dnl ===================================================================
8348 dnl ===================================================================
8349 if test "$ENABLE_JAVA" != ""; then
8351 # Windows-specific tests
8352 if test "$build_os" = "cygwin"; then
8353 if test -z "$with_jdk_home"; then
8354 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8355 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8356 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8357 if test -n "$regvalue"; then
8359 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8360 with_jdk_home=$regvalue
8362 howfound="found automatically"
8364 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8365 howfound="you passed"
8368 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8369 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])
8373 # 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.
8374 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8375 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8376 with_jdk_home=`/usr/libexec/java_home`
8379 JAVA_HOME=; export JAVA_HOME
8380 if test -z "$with_jdk_home"; then
8381 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8383 _java_path="$with_jdk_home/bin/$with_java"
8384 dnl Check if there is a Java interpreter at all.
8385 if test -x "$_java_path"; then
8386 JAVAINTERPRETER=$_java_path
8388 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8392 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8393 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8394 dnl loaded by java to run JunitTests:
8395 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8396 shortjdkhome=`cygpath -d "$with_jdk_home"`
8397 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
8398 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8399 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8400 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
8401 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8402 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8405 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8406 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8408 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8409 elif test "$cross_compiling" != "yes"; then
8411 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8412 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8413 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8414 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8417 *) # assumption: everything else 32-bit
8418 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8419 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8420 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8427 dnl ===================================================================
8429 dnl ===================================================================
8431 # Whether all the complexity here actually is needed any more or not, no idea.
8433 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8435 AC_MSG_CHECKING([the installed JDK])
8436 if test -n "$JAVAINTERPRETER"; then
8437 dnl java -version sends output to stderr!
8438 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8439 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8440 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8441 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8442 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8443 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8444 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8445 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8449 dnl Sun JDK specific tests
8450 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8451 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8453 if test "$_jdk_ver" -lt 10900; then
8454 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8456 if test "$_jdk_ver" -gt 10900; then
8457 JAVA_CLASSPATH_NOT_SET=TRUE
8460 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8461 if test "$_os" = "WINNT"; then
8462 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8464 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8466 # set to limit VM usage for JunitTests
8468 # set to limit VM usage for javac
8469 JAVACFLAGS=-J-Xmx128M
8472 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8475 if test -z "$ENABLE_JAVA"; then
8479 elif test "$cross_compiling" = "yes"; then
8480 # Just assume compatibility of build and host JDK
8482 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8486 dnl ===================================================================
8487 dnl Checks for javac
8488 dnl ===================================================================
8489 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8490 javacompiler="javac"
8491 : ${JAVA_SOURCE_VER=8}
8492 : ${JAVA_TARGET_VER=8}
8493 if test -z "$with_jdk_home"; then
8494 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8496 _javac_path="$with_jdk_home/bin/$javacompiler"
8497 dnl Check if there is a Java compiler at all.
8498 if test -x "$_javac_path"; then
8499 JAVACOMPILER=$_javac_path
8502 if test -z "$JAVACOMPILER"; then
8503 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8505 if test "$build_os" = "cygwin"; then
8506 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8507 JAVACOMPILER="${JAVACOMPILER}.exe"
8509 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8513 dnl ===================================================================
8514 dnl Checks for javadoc
8515 dnl ===================================================================
8516 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8517 if test -z "$with_jdk_home"; then
8518 AC_PATH_PROG(JAVADOC, javadoc)
8520 _javadoc_path="$with_jdk_home/bin/javadoc"
8521 dnl Check if there is a javadoc at all.
8522 if test -x "$_javadoc_path"; then
8523 JAVADOC=$_javadoc_path
8525 AC_PATH_PROG(JAVADOC, javadoc)
8528 if test -z "$JAVADOC"; then
8529 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8531 if test "$build_os" = "cygwin"; then
8532 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8533 JAVADOC="${JAVADOC}.exe"
8535 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8538 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8539 JAVADOCISGJDOC="yes"
8543 AC_SUBST(JAVADOCISGJDOC)
8545 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8546 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8547 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8548 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8549 # try to recover first by looking whether we have an alternative
8550 # system as in Debian or newer SuSEs where following /usr/bin/javac
8551 # over /etc/alternatives/javac leads to the right bindir where we
8552 # just need to strip a bit away to get a valid JAVA_HOME
8553 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8554 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8555 # maybe only one level of symlink (e.g. on Mac)
8556 JAVA_HOME=$(readlink $JAVACOMPILER)
8557 if test "$(dirname $JAVA_HOME)" = "."; then
8558 # we've got no path to trim back
8563 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8564 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8565 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8566 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8568 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8569 if test "$JAVA_HOME" != "/usr"; then
8570 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8571 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8572 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8573 dnl Tiger already returns a JDK path...
8574 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8576 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8577 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8578 dnl that checks which version to run
8579 if test -f "$JAVA_HOME"; then
8580 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8585 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8587 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8588 if test -z "$JAVA_HOME"; then
8589 if test "x$with_jdk_home" = "x"; then
8590 cat > findhome.java <<_ACEOF
8591 [import java.io.File;
8595 public static void main(String args[])
8597 String jrelocation = System.getProperty("java.home");
8598 File jre = new File(jrelocation);
8599 System.out.println(jre.getParent());
8603 AC_MSG_CHECKING([if javac works])
8604 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8605 AC_TRY_EVAL(javac_cmd)
8606 if test $? = 0 -a -f ./findhome.class; then
8607 AC_MSG_RESULT([javac works])
8609 echo "configure: javac test failed" >&5
8610 cat findhome.java >&5
8611 AC_MSG_ERROR([javac does not work - java projects will not build!])
8613 AC_MSG_CHECKING([if gij knows its java.home])
8614 JAVA_HOME=`$JAVAINTERPRETER findhome`
8615 if test $? = 0 -a "$JAVA_HOME" != ""; then
8616 AC_MSG_RESULT([$JAVA_HOME])
8618 echo "configure: java test failed" >&5
8619 cat findhome.java >&5
8620 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8622 # clean-up after ourselves
8623 rm -f ./findhome.java ./findhome.class
8625 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8629 # now check if $JAVA_HOME is really valid
8630 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8631 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8632 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8633 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8634 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8635 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8636 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8637 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8640 PathFormat "$JAVA_HOME"
8641 JAVA_HOME="$formatted_path"
8644 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8647 AC_MSG_CHECKING([for JAWT lib])
8648 if test "$_os" = WINNT; then
8649 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8654 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8655 JAVA_ARCH=$my_java_arch
8670 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8671 JAVA_ARCH=$my_java_arch
8674 my_java_arch=sparcv9
8680 my_java_arch=$host_cpu
8683 # This is where JDK9 puts the library
8684 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8685 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8687 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8689 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8691 AC_MSG_RESULT([$JAWTLIB])
8695 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8699 JAVAINC="-I$JAVA_HOME/include"
8700 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8701 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8705 JAVAINC="-I$JAVA_HOME/include/win32"
8706 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8710 if test -d "$JAVA_HOME/include/darwin"; then
8711 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8713 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8718 JAVAINC="-I$JAVA_HOME/include"
8719 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8723 JAVAINC="-I$JAVA_HOME/include"
8724 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8725 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8726 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8727 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8731 JAVAINC="-I$JAVA_HOME/include"
8732 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8733 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8737 JAVAINC="-I$JAVA_HOME/include"
8738 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8739 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8743 JAVAINC="-I$JAVA_HOME/include"
8744 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8745 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8749 JAVAINC="-I$JAVA_HOME/include"
8750 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8751 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8755 JAVAINC="-I$JAVA_HOME/include"
8756 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8757 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8761 SOLARINC="$SOLARINC $JAVAINC"
8763 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8764 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8765 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8769 AC_SUBST(JAVACFLAGS)
8770 AC_SUBST(JAVACOMPILER)
8771 AC_SUBST(JAVAINTERPRETER)
8772 AC_SUBST(JAVAIFLAGS)
8773 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8774 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8776 AC_SUBST(JAVA_HOME_FOR_BUILD)
8778 AC_SUBST(JDK_FOR_BUILD)
8779 AC_SUBST(JAVA_SOURCE_VER)
8780 AC_SUBST(JAVA_TARGET_VER)
8783 dnl ===================================================================
8784 dnl Export file validation
8785 dnl ===================================================================
8786 AC_MSG_CHECKING([whether to enable export file validation])
8787 if test "$with_export_validation" != "no"; then
8788 if test -z "$ENABLE_JAVA"; then
8789 if test "$with_export_validation" = "yes"; then
8790 AC_MSG_ERROR([requested, but Java is disabled])
8792 AC_MSG_RESULT([no, as Java is disabled])
8794 elif ! test -d "${SRC_ROOT}/schema"; then
8795 if test "$with_export_validation" = "yes"; then
8796 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8798 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8801 AC_MSG_RESULT([yes])
8802 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8804 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8805 if test -z "$ODFVALIDATOR"; then
8806 # remember to download the ODF toolkit with validator later
8807 AC_MSG_NOTICE([no odfvalidator found, will download it])
8808 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8809 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8811 # and fetch name of odfvalidator jar name from download.lst
8812 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8813 AC_SUBST(ODFVALIDATOR_JAR)
8815 if test -z "$ODFVALIDATOR_JAR"; then
8816 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8819 if test "$build_os" = "cygwin"; then
8820 # In case of Cygwin it will be executed from Windows,
8821 # so we need to run bash and absolute path to validator
8822 # so instead of "odfvalidator" it will be
8823 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8824 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8826 ODFVALIDATOR="sh $ODFVALIDATOR"
8828 AC_SUBST(ODFVALIDATOR)
8831 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8832 if test -z "$OFFICEOTRON"; then
8833 # remember to download the officeotron with validator later
8834 AC_MSG_NOTICE([no officeotron found, will download it])
8835 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8836 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8838 # and fetch name of officeotron jar name from download.lst
8839 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8840 AC_SUBST(OFFICEOTRON_JAR)
8842 if test -z "$OFFICEOTRON_JAR"; then
8843 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8846 # check version of existing officeotron
8847 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8848 if test 0"$OFFICEOTRON_VER" -lt 704; then
8849 AC_MSG_ERROR([officeotron too old])
8852 if test "$build_os" = "cygwin"; then
8853 # In case of Cygwin it will be executed from Windows,
8854 # so we need to run bash and absolute path to validator
8855 # so instead of "odfvalidator" it will be
8856 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8857 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8859 OFFICEOTRON="sh $OFFICEOTRON"
8862 AC_SUBST(OFFICEOTRON)
8867 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8868 if test "$with_bffvalidator" != "no"; then
8869 AC_DEFINE(HAVE_BFFVALIDATOR)
8871 if test "$with_export_validation" = "no"; then
8872 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8875 if test "$with_bffvalidator" = "yes"; then
8876 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8878 BFFVALIDATOR="$with_bffvalidator"
8881 if test "$build_os" = "cygwin"; then
8882 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8883 AC_MSG_RESULT($BFFVALIDATOR)
8885 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8887 elif test -n "$BFFVALIDATOR"; then
8888 # We are not in Cygwin but need to run Windows binary with wine
8889 AC_PATH_PROGS(WINE, wine)
8891 # so swap in a shell wrapper that converts paths transparently
8892 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8893 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8894 AC_SUBST(BFFVALIDATOR_EXE)
8895 AC_MSG_RESULT($BFFVALIDATOR)
8897 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8899 AC_SUBST(BFFVALIDATOR)
8904 dnl ===================================================================
8905 dnl Check for C preprocessor to use
8906 dnl ===================================================================
8907 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8909 if test -n "$with_idlc_cpp"; then
8910 AC_MSG_RESULT([$with_idlc_cpp])
8911 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8912 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8913 # ucpp will accept -v (to output version), warn about the others as unknown
8914 # and return 1 (due to -v)
8915 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8916 # and return 0 (due to --version ) if all options are supported
8917 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8918 if test $? -eq 0; then
8919 SYSTEM_UCPP_IS_GCC=TRUE
8920 AC_MSG_RESULT([yes])
8925 AC_MSG_RESULT([ucpp])
8926 AC_MSG_CHECKING([which ucpp to use])
8927 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8928 AC_MSG_RESULT([external])
8929 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8931 AC_MSG_RESULT([internal])
8932 BUILD_TYPE="$BUILD_TYPE UCPP"
8935 AC_SUBST(SYSTEM_UCPP)
8936 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8938 dnl ===================================================================
8939 dnl Check for epm (not needed for Windows)
8940 dnl ===================================================================
8941 AC_MSG_CHECKING([whether to enable EPM for packing])
8942 if test "$enable_epm" = "yes"; then
8943 AC_MSG_RESULT([yes])
8944 if test "$_os" != "WINNT"; then
8945 if test $_os = Darwin; then
8947 elif test -n "$with_epm"; then
8950 AC_PATH_PROG(EPM, epm, no)
8952 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8953 AC_MSG_NOTICE([EPM will be built.])
8954 BUILD_TYPE="$BUILD_TYPE EPM"
8955 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8957 # Gentoo has some epm which is something different...
8958 AC_MSG_CHECKING([whether the found epm is the right epm])
8959 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8960 AC_MSG_RESULT([yes])
8962 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8964 AC_MSG_CHECKING([epm version])
8965 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8966 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8967 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8968 AC_MSG_RESULT([OK, >= 3.7])
8970 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8971 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8976 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8977 AC_MSG_CHECKING([for rpm])
8978 for a in "$RPM" rpmbuild rpm; do
8979 $a --usage >/dev/null 2> /dev/null
8980 if test $? -eq 0; then
8984 $a --version >/dev/null 2> /dev/null
8985 if test $? -eq 0; then
8991 if test -z "$RPM"; then
8992 AC_MSG_ERROR([not found])
8993 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8994 RPM_PATH=`which $RPM`
8995 AC_MSG_RESULT([$RPM_PATH])
8996 SCPDEFS="$SCPDEFS -DWITH_RPM"
8998 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9001 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9002 AC_PATH_PROG(DPKG, dpkg, no)
9003 if test "$DPKG" = "no"; then
9004 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9007 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9008 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9009 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9010 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9011 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9012 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9013 AC_MSG_RESULT([yes])
9016 if echo "$PKGFORMAT" | $GREP -q rpm; then
9018 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9019 add_warning "the rpms will need to be installed with --nodeps"
9023 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9024 add_warning "the ${_pt}s will not be relocatable"
9025 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9026 relocation will work, you need to patch your epm with the
9027 patch in epm/epm-3.7.patch or build with
9028 --with-epm=internal which will build a suitable epm])
9033 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9034 AC_PATH_PROG(PKGMK, pkgmk, no)
9035 if test "$PKGMK" = "no"; then
9036 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9043 for i in $PKGFORMAT; do
9045 aix | bsd | deb | pkg | rpm | native | portable)
9047 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9057 if test "$enable_lotuswordpro" = "yes"; then
9060 AC_SUBST(ENABLE_LWP)
9062 dnl ===================================================================
9063 dnl Check for building ODK
9064 dnl ===================================================================
9065 AC_MSG_CHECKING([whether to build the ODK])
9066 if test "$enable_odk" = yes; then
9067 if test "$DISABLE_DYNLOADING" = TRUE; then
9068 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9070 AC_MSG_RESULT([yes])
9071 BUILD_TYPE="$BUILD_TYPE ODK"
9076 if test "$enable_odk" != yes; then
9079 if test "$with_doxygen" = no; then
9080 AC_MSG_CHECKING([for doxygen])
9084 if test "$with_doxygen" = yes; then
9085 AC_PATH_PROG([DOXYGEN], [doxygen])
9086 if test -z "$DOXYGEN"; then
9087 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9089 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9090 if ! dot -V 2>/dev/null; then
9091 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9095 AC_MSG_CHECKING([for doxygen])
9096 DOXYGEN=$with_doxygen
9097 AC_MSG_RESULT([$DOXYGEN])
9099 if test -n "$DOXYGEN"; then
9100 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9101 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9102 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9103 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9110 dnl ==================================================================
9112 dnl ==================================================================
9113 AC_MSG_CHECKING([whether to enable fuzzers])
9114 if test "$enable_fuzzers" != yes; then
9117 if test -z $LIB_FUZZING_ENGINE; then
9118 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9120 AC_MSG_RESULT([yes])
9121 ENABLE_FUZZERS="TRUE"
9122 AC_DEFINE([ENABLE_FUZZERS],1)
9123 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9125 AC_SUBST(LIB_FUZZING_ENGINE)
9127 dnl ===================================================================
9128 dnl Check for system zlib
9129 dnl ===================================================================
9130 if test "$with_system_zlib" = "auto"; then
9133 with_system_zlib="$with_system_libs"
9136 if test "$enable_fuzzers" != "yes"; then
9137 with_system_zlib=yes
9145 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9146 dnl and has no pkg-config for it at least on some tinderboxes,
9147 dnl so leaving that out for now
9148 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9149 AC_MSG_CHECKING([which zlib to use])
9150 if test "$with_system_zlib" = "yes"; then
9151 AC_MSG_RESULT([external])
9153 AC_CHECK_HEADER(zlib.h, [],
9154 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9155 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9156 [AC_MSG_ERROR(zlib not found or functional)], [])
9158 AC_MSG_RESULT([internal])
9160 BUILD_TYPE="$BUILD_TYPE ZLIB"
9161 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9162 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9164 AC_SUBST(ZLIB_CFLAGS)
9166 AC_SUBST(SYSTEM_ZLIB)
9168 dnl ===================================================================
9169 dnl Check for system jpeg
9170 dnl ===================================================================
9171 AC_MSG_CHECKING([which libjpeg to use])
9172 if test "$with_system_jpeg" = "yes"; then
9173 AC_MSG_RESULT([external])
9175 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9176 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9177 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9178 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9181 AC_MSG_RESULT([internal, libjpeg-turbo])
9182 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9185 x86_64 | amd64 | i*86 | x86 | ia32)
9186 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9187 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9188 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9189 NASM="$LODE_HOME/opt/bin/nasm"
9190 elif test -x "/opt/lo/bin/nasm"; then
9191 NASM="/opt/lo/bin/nasm"
9195 if test -n "$NASM"; then
9196 AC_MSG_CHECKING([for object file format of host system])
9198 cygwin* | mingw* | pw32* | wsl*)
9208 msdosdjgpp* | go32*)
9211 os2-emx*) # not tested
9212 objfmt='MSOMF' # obj
9214 linux*coff* | linux*oldld*)
9230 kfreebsd* | freebsd* | netbsd* | openbsd*)
9231 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9244 solaris* | sunos* | sysv* | sco*)
9254 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9269 AC_MSG_RESULT([$objfmt])
9270 if test "$objfmt" = 'ELF ?'; then
9272 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9275 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9277 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9278 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9279 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9280 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9281 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9282 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9283 ELF) NAFLAGS='-felf -DELF -DPIC';;
9284 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9285 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9286 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9287 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9289 AC_MSG_RESULT([$NAFLAGS])
9291 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9292 cat > conftest.asm << EOF
9293 [%line __oline__ "configure"
9301 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9302 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9305 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9306 cat conftest.asm >&AS_MESSAGE_LOG_FD
9309 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9315 if test -z "$NASM"; then
9317 ****************************************************************************
9318 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9322 if test "$build_os" = "cygwin"; then
9324 install a pre-compiled binary for Win32
9326 mkdir -p /opt/lo/bin
9328 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9331 or get and install one from http://www.nasm.us/
9333 Then re-run autogen.sh
9335 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9336 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9341 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9345 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9346 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9354 AC_SUBST(LIBJPEG_CFLAGS)
9355 AC_SUBST(LIBJPEG_LIBS)
9356 AC_SUBST(SYSTEM_LIBJPEG)
9358 dnl ===================================================================
9359 dnl Check for system clucene
9360 dnl ===================================================================
9361 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9362 if test "$SYSTEM_CLUCENE" = TRUE; then
9364 save_CXXFLAGS=$CXXFLAGS
9365 save_CPPFLAGS=$CPPFLAGS
9366 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9367 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9368 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9369 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9370 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9371 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9372 CXXFLAGS=$save_CXXFLAGS
9373 CPPFLAGS=$save_CPPFLAGS
9375 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9378 dnl ===================================================================
9379 dnl Check for system expat
9380 dnl ===================================================================
9381 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9383 dnl ===================================================================
9384 dnl Check for system xmlsec
9385 dnl ===================================================================
9386 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9388 libo_CHECK_SYSTEM_MODULE([eot],[LIBEOT],[libeot >= 0.01],disabled)
9390 dnl ===================================================================
9391 dnl Check for DLP libs
9392 dnl ===================================================================
9393 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9394 AS_IF([test "$COM" = "MSC"],
9395 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9396 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9398 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9399 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9401 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9403 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9405 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9406 AS_IF([test "$COM" = "MSC"],
9407 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9408 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9410 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9411 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9413 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9415 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9416 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9418 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9420 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9422 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9424 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9425 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9427 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9428 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9430 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9432 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9433 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9435 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9437 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9439 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9441 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9443 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9444 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9446 dnl ===================================================================
9447 dnl Check for system lcms2
9448 dnl ===================================================================
9449 if test "$with_system_lcms2" != "yes"; then
9452 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9453 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9454 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9455 if test "$GCC" = "yes"; then
9456 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9458 if test "$COM" = "MSC"; then # override the above
9459 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9462 dnl ===================================================================
9463 dnl Check for system cppunit
9464 dnl ===================================================================
9465 if test "$_os" != "Android" ; then
9466 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9469 dnl ===================================================================
9470 dnl Check whether freetype is available
9472 dnl FreeType has 3 different kinds of versions
9473 dnl * release, like 2.4.10
9474 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9476 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9479 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9480 dnl ===================================================================
9481 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9482 if test "x$ac_config_site_64bit_host" = xYES; then
9483 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9485 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9487 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9489 # ===================================================================
9490 # Check for system libxslt
9491 # to prevent incompatibilities between internal libxml2 and external libxslt,
9492 # or vice versa, use with_system_libxml here
9493 # ===================================================================
9494 if test "$with_system_libxml" = "auto"; then
9497 with_system_libxml="$with_system_libs"
9500 with_system_libxml=no
9503 if test "$enable_fuzzers" != "yes"; then
9504 with_system_libxml=yes
9506 with_system_libxml=no
9512 AC_MSG_CHECKING([which libxslt to use])
9513 if test "$with_system_libxml" = "yes"; then
9514 AC_MSG_RESULT([external])
9516 if test "$_os" = "Darwin"; then
9517 dnl make sure to use SDK path
9518 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9519 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9521 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9522 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9524 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9525 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9526 FilterLibs "${LIBXSLT_LIBS}"
9527 LIBXSLT_LIBS="${filteredlibs}"
9528 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9529 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9530 FilterLibs "${LIBEXSLT_LIBS}"
9531 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9534 dnl Check for xsltproc
9535 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9536 if test "$XSLTPROC" = "no"; then
9537 AC_MSG_ERROR([xsltproc is required])
9540 AC_MSG_RESULT([internal])
9542 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9544 AC_SUBST(SYSTEM_LIBXSLT)
9545 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9546 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9548 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9550 AC_SUBST(LIBEXSLT_CFLAGS)
9551 AC_SUBST(LIBEXSLT_LIBS)
9552 AC_SUBST(LIBXSLT_CFLAGS)
9553 AC_SUBST(LIBXSLT_LIBS)
9556 # ===================================================================
9557 # Check for system libxml
9558 # ===================================================================
9559 AC_MSG_CHECKING([which libxml to use])
9560 if test "$with_system_libxml" = "yes"; then
9561 AC_MSG_RESULT([external])
9563 if test "$_os" = "Darwin"; then
9564 dnl make sure to use SDK path
9565 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9567 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9568 elif test $_os = iOS; then
9569 dnl make sure to use SDK path
9570 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9571 LIBXML_CFLAGS="-I$usr/include/libxml2"
9572 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9574 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9575 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9576 FilterLibs "${LIBXML_LIBS}"
9577 LIBXML_LIBS="${filteredlibs}"
9580 dnl Check for xmllint
9581 AC_PATH_PROG(XMLLINT, xmllint, no)
9582 if test "$XMLLINT" = "no"; then
9583 AC_MSG_ERROR([xmllint is required])
9586 AC_MSG_RESULT([internal])
9588 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9589 if test "$COM" = "MSC"; then
9590 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9592 if test "$COM" = "MSC"; then
9593 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9595 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9596 if test "$DISABLE_DYNLOADING" = TRUE; then
9597 LIBXML_LIBS="$LIBXML_LIBS -lm"
9600 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9602 AC_SUBST(SYSTEM_LIBXML)
9603 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9604 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9606 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9607 AC_SUBST(LIBXML_CFLAGS)
9608 AC_SUBST(LIBXML_LIBS)
9611 # =====================================================================
9612 # Checking for a Python interpreter with version >= 3.3.
9613 # Optionally user can pass an option to configure, i. e.
9614 # ./configure PYTHON=/usr/bin/python
9615 # =====================================================================
9616 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9617 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9618 # unless PYTHON is defined as above which allows 'system'
9619 enable_python=internal
9621 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9622 if test -n "$PYTHON"; then
9623 PYTHON_FOR_BUILD=$PYTHON
9625 # This allows a lack of system python with no error, we use internal one in that case.
9626 AM_PATH_PYTHON([3.3],, [:])
9627 # Clean PYTHON_VERSION checked below if cross-compiling
9629 if test "$PYTHON" != ":"; then
9630 PYTHON_FOR_BUILD=$PYTHON
9635 # Checks for Python to use for Pyuno
9636 AC_MSG_CHECKING([which Python to use for Pyuno])
9637 case "$enable_python" in
9639 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9640 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9641 # requirement from the choice whether to include Python stuff in the installer, but why
9643 AC_MSG_ERROR([Python is required at build time.])
9646 AC_MSG_RESULT([none])
9649 if test "$DISABLE_SCRIPTING" = TRUE; then
9650 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9651 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9653 AC_MSG_RESULT([none, overridden by --disable-scripting])
9655 elif test $build_os = cygwin; then
9656 dnl When building on Windows we don't attempt to use any installed
9657 dnl "system" Python.
9658 AC_MSG_RESULT([fully internal])
9659 enable_python=internal
9660 elif test "$cross_compiling" = yes; then
9661 AC_MSG_RESULT([system])
9662 enable_python=system
9664 # Unset variables set by the above AM_PATH_PYTHON so that
9665 # we actually do check anew.
9667 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
9668 AM_PATH_PYTHON([3.3],, [:])
9669 AC_MSG_CHECKING([which Python to use for Pyuno])
9670 if test "$PYTHON" = ":"; then
9671 if test -z "$PYTHON_FOR_BUILD"; then
9672 AC_MSG_RESULT([fully internal])
9674 AC_MSG_RESULT([internal])
9676 enable_python=internal
9678 AC_MSG_RESULT([system])
9679 enable_python=system
9684 AC_MSG_RESULT([internal])
9687 AC_MSG_RESULT([fully internal])
9688 enable_python=internal
9691 AC_MSG_RESULT([system])
9692 if test "$_os" = Darwin -a -z "$PYTHON"; then
9693 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9697 AC_MSG_ERROR([Incorrect --enable-python option])
9701 if test $enable_python != no; then
9702 BUILD_TYPE="$BUILD_TYPE PYUNO"
9705 if test $enable_python = system; then
9706 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9707 # Fallback: Accept these in the environment, or as set above
9710 elif test "$cross_compiling" != yes; then
9711 # Unset variables set by the above AM_PATH_PYTHON so that
9712 # we actually do check anew.
9713 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
9714 # This causes an error if no python command is found
9715 AM_PATH_PYTHON([3.3])
9716 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9717 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9718 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9719 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9720 if test -z "$PKG_CONFIG"; then
9721 PYTHON_CFLAGS="-I$python_include"
9722 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9723 elif $PKG_CONFIG --exists python-$python_version-embed; then
9724 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9725 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9726 elif $PKG_CONFIG --exists python-$python_version; then
9727 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9728 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9730 PYTHON_CFLAGS="-I$python_include"
9731 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9733 FilterLibs "${PYTHON_LIBS}"
9734 PYTHON_LIBS="${filteredlibs}"
9736 dnl How to find out the cross-compilation Python installation path?
9737 AC_MSG_CHECKING([for python version])
9738 AS_IF([test -n "$PYTHON_VERSION"],
9739 [AC_MSG_RESULT([$PYTHON_VERSION])],
9740 [AC_MSG_RESULT([not found])
9741 AC_MSG_ERROR([no usable python found])])
9742 test -n "$PYTHON_CFLAGS" && break
9745 dnl Check if the headers really work
9746 save_CPPFLAGS="$CPPFLAGS"
9747 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9748 AC_CHECK_HEADER(Python.h)
9749 CPPFLAGS="$save_CPPFLAGS"
9751 # let the PYTHON_FOR_BUILD match the same python installation that
9752 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9753 # better for PythonTests.
9754 PYTHON_FOR_BUILD=$PYTHON
9757 if test "$with_lxml" != no; then
9758 if test -z "$PYTHON_FOR_BUILD"; then
9761 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9764 if test "$cross_compiling" != yes ; then
9765 BUILD_TYPE="$BUILD_TYPE LXML"
9770 AC_MSG_CHECKING([for python lxml])
9771 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9772 AC_MSG_RESULT([yes])
9776 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9779 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9780 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9781 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9783 BUILD_TYPE="$BUILD_TYPE LXML"
9784 AC_MSG_RESULT([no, using internal lxml])
9787 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9795 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9797 PYTHON_VERSION_MAJOR=3
9798 PYTHON_VERSION_MINOR=8
9799 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9800 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9801 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9803 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9805 # Embedded Python dies without Home set
9806 if test "$HOME" = ""; then
9811 dnl By now enable_python should be "system", "internal" or "no"
9812 case $enable_python in
9816 if test "x$ac_cv_header_Python_h" != "xyes"; then
9817 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9821 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9822 AC_MSG_CHECKING([for correct python library version])
9823 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9826 int main(int argc, char **argv) {
9827 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9830 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9833 dnl FIXME Check if the Python library can be linked with, too?
9837 BUILD_TYPE="$BUILD_TYPE PYTHON"
9838 if test "$OS" = LINUX -o "$OS" = WNT ; then
9839 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9847 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9851 AC_SUBST(DISABLE_PYTHON)
9852 AC_SUBST(SYSTEM_PYTHON)
9853 AC_SUBST(PYTHON_CFLAGS)
9854 AC_SUBST(PYTHON_FOR_BUILD)
9855 AC_SUBST(PYTHON_LIBS)
9856 AC_SUBST(PYTHON_VERSION)
9857 AC_SUBST(PYTHON_VERSION_MAJOR)
9858 AC_SUBST(PYTHON_VERSION_MINOR)
9860 AC_MSG_CHECKING([whether to build LibreLogo])
9861 case "$enable_python" in
9863 AC_MSG_RESULT([no; Python disabled])
9866 if test "${enable_librelogo}" = "no"; then
9869 AC_MSG_RESULT([yes])
9870 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9871 AC_DEFINE([ENABLE_LIBRELOGO],1)
9875 AC_SUBST(ENABLE_LIBRELOGO)
9881 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9882 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9883 ENABLE_MARIADBC=TRUE
9884 AC_MSG_RESULT([yes])
9885 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9889 AC_SUBST(ENABLE_MARIADBC)
9890 AC_SUBST(MARIADBC_MAJOR)
9891 AC_SUBST(MARIADBC_MINOR)
9892 AC_SUBST(MARIADBC_MICRO)
9894 if test "$ENABLE_MARIADBC" = "TRUE"; then
9895 dnl ===================================================================
9896 dnl Check for system MariaDB
9897 dnl ===================================================================
9898 AC_MSG_CHECKING([which MariaDB to use])
9899 if test "$with_system_mariadb" = "yes"; then
9900 AC_MSG_RESULT([external])
9901 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9902 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9903 if test -z "$MARIADBCONFIG"; then
9904 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9905 if test -z "$MARIADBCONFIG"; then
9906 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9907 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9910 AC_MSG_CHECKING([MariaDB version])
9911 MARIADB_VERSION=`$MARIADBCONFIG --version`
9912 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9913 if test "$MARIADB_MAJOR" -ge "5"; then
9916 AC_MSG_ERROR([too old, use 5.0.x or later])
9918 AC_MSG_CHECKING([for MariaDB Client library])
9919 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9920 if test "$COM_IS_CLANG" = TRUE; then
9921 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9923 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9924 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9925 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9927 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9928 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9929 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9930 | sed -e 's|/lib64/|/lib/|')
9932 FilterLibs "${MARIADB_LIBS}"
9933 MARIADB_LIBS="${filteredlibs}"
9934 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9935 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9936 if test "$enable_bundle_mariadb" = "yes"; then
9937 AC_MSG_RESULT([yes])
9938 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9939 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9941 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9943 /g' | grep -E '(mysqlclient|mariadb)')
9944 if test "$_os" = "Darwin"; then
9945 LIBMARIADB=${LIBMARIADB}.dylib
9946 elif test "$_os" = "WINNT"; then
9947 LIBMARIADB=${LIBMARIADB}.dll
9949 LIBMARIADB=${LIBMARIADB}.so
9951 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9952 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9953 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9954 AC_MSG_RESULT([found.])
9955 PathFormat "$LIBMARIADB_PATH"
9956 LIBMARIADB_PATH="$formatted_path"
9958 AC_MSG_ERROR([not found.])
9962 BUNDLE_MARIADB_CONNECTOR_C=
9965 AC_MSG_RESULT([internal])
9966 SYSTEM_MARIADB_CONNECTOR_C=
9967 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9968 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9969 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9972 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9973 AC_SUBST(MARIADB_CFLAGS)
9974 AC_SUBST(MARIADB_LIBS)
9975 AC_SUBST(LIBMARIADB)
9976 AC_SUBST(LIBMARIADB_PATH)
9977 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9980 dnl ===================================================================
9981 dnl Check for system hsqldb
9982 dnl ===================================================================
9983 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9984 HSQLDB_USE_JDBC_4_1=
9985 AC_MSG_CHECKING([which hsqldb to use])
9986 if test "$with_system_hsqldb" = "yes"; then
9987 AC_MSG_RESULT([external])
9989 if test -z $HSQLDB_JAR; then
9990 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9992 if ! test -f $HSQLDB_JAR; then
9993 AC_MSG_ERROR(hsqldb.jar not found.)
9995 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9999 my $file = "$ENV{'HSQLDB_JAR'}";
10000 my $zip = Archive::Zip->new( $file );
10001 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10002 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10004 push @l, split(/\n/, $mf);
10005 foreach my $line (@l)
10007 if ($line =~ m/Specification-Version:/)
10009 ($t, $version) = split (/:/,$line);
10010 $version =~ s/^\s//;
10011 ($a, $b, $c, $d) = split (/\./,$version);
10012 if ($c == "0" && $d > "8")
10027 AC_MSG_RESULT([yes])
10029 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10032 AC_MSG_RESULT([internal])
10034 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10036 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
10037 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
10038 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
10039 AC_MSG_RESULT([yes])
10040 HSQLDB_USE_JDBC_4_1=TRUE
10042 AC_MSG_RESULT([no])
10046 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10047 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10050 AC_SUBST(SYSTEM_HSQLDB)
10051 AC_SUBST(HSQLDB_JAR)
10052 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10054 dnl ===================================================================
10055 dnl Check for PostgreSQL stuff
10056 dnl ===================================================================
10057 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10058 if test "x$enable_postgresql_sdbc" != "xno"; then
10059 AC_MSG_RESULT([yes])
10060 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10062 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10063 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10065 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10066 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10069 postgres_interface=""
10070 if test "$with_system_postgresql" = "yes"; then
10071 postgres_interface="external PostgreSQL"
10072 SYSTEM_POSTGRESQL=TRUE
10073 if test "$_os" = Darwin; then
10075 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10076 pg_supp_path="$P_SEP$d$pg_supp_path"
10079 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10080 if test -n "$PGCONFIG"; then
10081 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10082 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10084 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10085 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10086 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10088 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10091 FilterLibs "${POSTGRESQL_LIB}"
10092 POSTGRESQL_LIB="${filteredlibs}"
10094 # if/when anything else than PostgreSQL uses Kerberos,
10095 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10100 # macOS has system MIT Kerberos 5 since 10.4
10101 if test "$with_krb5" != "no"; then
10104 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10105 # that the libraries where these functions are located on macOS will change, is it?
10106 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10107 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10110 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10111 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10112 KRB5_LIBS="$KRB5_LIBS $LIBS"
10115 if test "$with_gssapi" != "no"; then
10118 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10119 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10125 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10126 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10129 Linux|GNU|*BSD|DragonFly)
10130 if test "$with_krb5" != "no"; then
10133 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10134 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10137 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10138 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10139 KRB5_LIBS="$KRB5_LIBS $LIBS"
10142 if test "$with_gssapi" != "no"; then
10145 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10146 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10152 if test "$with_krb5" = "yes"; then
10155 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10156 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10159 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10160 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10161 KRB5_LIBS="$KRB5_LIBS $LIBS"
10164 if test "$with_gssapi" = "yes"; then
10167 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10168 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10174 if test -n "$with_libpq_path"; then
10175 SYSTEM_POSTGRESQL=TRUE
10176 postgres_interface="external libpq"
10177 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10178 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10181 postgres_interface="internal"
10183 POSTGRESQL_INC="%OVERRIDE_ME%"
10184 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10188 AC_MSG_CHECKING([PostgreSQL C interface])
10189 AC_MSG_RESULT([$postgres_interface])
10191 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10192 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10193 save_CFLAGS=$CFLAGS
10194 save_CPPFLAGS=$CPPFLAGS
10196 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10197 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10198 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10199 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10200 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10201 CFLAGS=$save_CFLAGS
10202 CPPFLAGS=$save_CPPFLAGS
10205 BUILD_POSTGRESQL_SDBC=TRUE
10207 AC_MSG_RESULT([no])
10209 AC_SUBST(WITH_KRB5)
10210 AC_SUBST(WITH_GSSAPI)
10211 AC_SUBST(GSSAPI_LIBS)
10212 AC_SUBST(KRB5_LIBS)
10213 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10214 AC_SUBST(SYSTEM_POSTGRESQL)
10215 AC_SUBST(POSTGRESQL_INC)
10216 AC_SUBST(POSTGRESQL_LIB)
10218 dnl ===================================================================
10219 dnl Check for Firebird stuff
10220 dnl ===================================================================
10221 ENABLE_FIREBIRD_SDBC=
10222 if test "$enable_firebird_sdbc" = "yes" ; then
10223 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10225 dnl ===================================================================
10226 dnl Check for system Firebird
10227 dnl ===================================================================
10228 AC_MSG_CHECKING([which Firebird to use])
10229 if test "$with_system_firebird" = "yes"; then
10230 AC_MSG_RESULT([external])
10231 SYSTEM_FIREBIRD=TRUE
10232 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10233 if test -z "$FIREBIRDCONFIG"; then
10234 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10235 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10236 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10238 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10240 AC_MSG_NOTICE([fb_config found])
10241 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10242 AC_MSG_CHECKING([for Firebird Client library])
10243 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10244 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10245 FilterLibs "${FIREBIRD_LIBS}"
10246 FIREBIRD_LIBS="${filteredlibs}"
10248 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10249 AC_MSG_CHECKING([Firebird version])
10250 if test -n "${FIREBIRD_VERSION}"; then
10251 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10252 if test "$FIREBIRD_MAJOR" -ge "3"; then
10253 AC_MSG_RESULT([OK])
10255 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10258 save_CFLAGS="${CFLAGS}"
10259 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10260 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10261 #if defined(FB_API_VER) && FB_API_VER == 30
10262 int fb_api_is_30(void) { return 0; }
10264 #error "Wrong Firebird API version"
10265 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10266 CFLAGS="$save_CFLAGS"
10268 ENABLE_FIREBIRD_SDBC=TRUE
10269 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10270 elif test "$enable_database_connectivity" = no; then
10271 AC_MSG_RESULT([none])
10272 elif test "$cross_compiling" = "yes"; then
10273 AC_MSG_RESULT([none])
10275 dnl Embedded Firebird has version 3.0
10276 dnl We need libatomic_ops for any non X86/X64 system
10277 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10278 dnl ===================================================================
10279 dnl Check for system libatomic_ops
10280 dnl ===================================================================
10281 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10282 if test "$with_system_libatomic_ops" = "yes"; then
10283 SYSTEM_LIBATOMIC_OPS=TRUE
10284 AC_CHECK_HEADERS(atomic_ops.h, [],
10285 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10287 SYSTEM_LIBATOMIC_OPS=
10288 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10289 LIBATOMIC_OPS_LIBS="-latomic_ops"
10290 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10294 AC_MSG_RESULT([internal])
10296 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10297 FIREBIRD_LIBS="-lfbclient"
10299 if test "$with_system_libtommath" = "yes"; then
10300 SYSTEM_LIBTOMMATH=TRUE
10301 dnl check for tommath presence
10303 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10304 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10308 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10309 LIBTOMMATH_LIBS="-ltommath"
10310 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10313 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10314 ENABLE_FIREBIRD_SDBC=TRUE
10315 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10318 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10319 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10320 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10321 AC_SUBST(LIBATOMIC_OPS_LIBS)
10322 AC_SUBST(SYSTEM_FIREBIRD)
10323 AC_SUBST(FIREBIRD_CFLAGS)
10324 AC_SUBST(FIREBIRD_LIBS)
10325 AC_SUBST(SYSTEM_LIBTOMMATH)
10326 AC_SUBST(LIBTOMMATH_CFLAGS)
10327 AC_SUBST(LIBTOMMATH_LIBS)
10329 dnl ===================================================================
10330 dnl Check for system curl
10331 dnl ===================================================================
10332 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10334 dnl ===================================================================
10335 dnl Check for system boost
10336 dnl ===================================================================
10337 AC_MSG_CHECKING([which boost to use])
10338 if test "$with_system_boost" = "yes"; then
10339 AC_MSG_RESULT([external])
10341 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10343 AX_BOOST_FILESYSTEM
10346 AC_LANG_PUSH([C++])
10347 save_CXXFLAGS=$CXXFLAGS
10348 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10349 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10350 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10351 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10352 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10353 CXXFLAGS=$save_CXXFLAGS
10355 # this is in m4/ax_boost_base.m4
10356 FilterLibs "${BOOST_LDFLAGS}"
10357 BOOST_LDFLAGS="${filteredlibs}"
10359 AC_MSG_RESULT([internal])
10360 BUILD_TYPE="$BUILD_TYPE BOOST"
10362 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10363 # use warning-suppressing wrapper headers
10364 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10366 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10369 AC_SUBST(SYSTEM_BOOST)
10371 dnl ===================================================================
10372 dnl Check for system mdds
10373 dnl ===================================================================
10374 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10375 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10377 dnl ===================================================================
10378 dnl Check for system cuckoo
10379 dnl ===================================================================
10380 AC_MSG_CHECKING([which cuckoo to use])
10381 if test "$with_system_cuckoo" = "yes"; then
10382 AC_MSG_RESULT([external])
10384 AC_LANG_PUSH([C++])
10385 AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10386 [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10389 AC_MSG_RESULT([internal])
10390 BUILD_TYPE="$BUILD_TYPE CUCKOO"
10393 AC_SUBST([SYSTEM_CUCKOO])
10395 dnl ===================================================================
10396 dnl Check for system glm
10397 dnl ===================================================================
10398 AC_MSG_CHECKING([which glm to use])
10399 if test "$with_system_glm" = "yes"; then
10400 AC_MSG_RESULT([external])
10402 AC_LANG_PUSH([C++])
10403 AC_CHECK_HEADER([glm/glm.hpp], [],
10404 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10407 AC_MSG_RESULT([internal])
10408 BUILD_TYPE="$BUILD_TYPE GLM"
10410 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10412 AC_SUBST([GLM_CFLAGS])
10413 AC_SUBST([SYSTEM_GLM])
10415 dnl ===================================================================
10416 dnl Check for system odbc
10417 dnl ===================================================================
10418 AC_MSG_CHECKING([which odbc headers to use])
10419 if test "$with_system_odbc" = "yes" -o '(' "$with_system_headers" = "yes" -a "$with_system_odbc" = "auto" ')' -o '(' "$_os" = "WINNT" -a "$with_system_odbc" != "no" ')'; then
10420 AC_MSG_RESULT([external])
10421 SYSTEM_ODBC_HEADERS=TRUE
10423 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10424 save_CPPFLAGS=$CPPFLAGS
10426 PathFormat "$winsdktest"
10427 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"
10428 AC_CHECK_HEADER(sqlext.h, [],
10429 [AC_MSG_ERROR(odbc not found. install odbc)],
10430 [#include <windows.h>])
10431 CPPFLAGS=$save_CPPFLAGS
10433 AC_CHECK_HEADER(sqlext.h, [],
10434 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10436 elif test "$enable_database_connectivity" = no; then
10437 AC_MSG_RESULT([none])
10439 AC_MSG_RESULT([internal])
10440 SYSTEM_ODBC_HEADERS=
10442 AC_SUBST(SYSTEM_ODBC_HEADERS)
10444 dnl ===================================================================
10445 dnl Check for system NSS
10446 dnl ===================================================================
10447 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10448 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10449 AC_DEFINE(HAVE_FEATURE_NSS)
10451 elif test $_os != iOS ; then
10454 AC_SUBST(ENABLE_NSS)
10456 dnl ===================================================================
10457 dnl Enable LDAP support
10458 dnl ===================================================================
10460 if test "$test_openldap" = yes; then
10461 AC_MSG_CHECKING([whether to enable LDAP support])
10462 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10463 AC_MSG_RESULT([yes])
10466 if test "$enable_ldap" != "yes"; then
10467 AC_MSG_RESULT([no])
10469 AC_MSG_RESULT([no (needs NSS or system openldap)])
10473 dnl ===================================================================
10474 dnl Check for system openldap
10475 dnl ===================================================================
10477 if test "$ENABLE_LDAP" = TRUE; then
10478 AC_MSG_CHECKING([which openldap library to use])
10479 if test "$with_system_openldap" = yes; then
10480 AC_MSG_RESULT([external])
10481 SYSTEM_OPENLDAP=TRUE
10482 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10483 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10484 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10486 AC_MSG_RESULT([internal])
10487 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10492 AC_SUBST(ENABLE_LDAP)
10493 AC_SUBST(SYSTEM_OPENLDAP)
10495 dnl ===================================================================
10496 dnl Check for TLS/SSL and cryptographic implementation to use
10497 dnl ===================================================================
10498 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10499 if test -n "$with_tls"; then
10502 AC_DEFINE(USE_TLS_OPENSSL)
10504 AC_MSG_RESULT([$TLS])
10506 if test "$enable_openssl" != "yes"; then
10507 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10510 # warn that OpenSSL has been selected but not all TLS code has this option
10511 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10512 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10515 AC_DEFINE(USE_TLS_NSS)
10517 AC_MSG_RESULT([$TLS])
10520 AC_MSG_RESULT([none])
10521 AC_MSG_WARN([Skipping TLS/SSL])
10525 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10527 nss - Mozilla's Network Security Services (NSS)
10532 # default to using NSS, it results in smaller oox lib
10533 AC_DEFINE(USE_TLS_NSS)
10535 AC_MSG_RESULT([$TLS])
10539 dnl ===================================================================
10540 dnl Check for system sane
10541 dnl ===================================================================
10542 AC_MSG_CHECKING([which sane header to use])
10543 if test "$with_system_sane" = "yes"; then
10544 AC_MSG_RESULT([external])
10545 AC_CHECK_HEADER(sane/sane.h, [],
10546 [AC_MSG_ERROR(sane not found. install sane)], [])
10548 AC_MSG_RESULT([internal])
10549 BUILD_TYPE="$BUILD_TYPE SANE"
10552 dnl ===================================================================
10553 dnl Check for system icu
10554 dnl ===================================================================
10561 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10562 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10563 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10564 AC_MSG_CHECKING([which icu to use])
10565 if test "$with_system_icu" = "yes"; then
10566 AC_MSG_RESULT([external])
10568 AC_LANG_PUSH([C++])
10569 AC_MSG_CHECKING([for unicode/rbbi.h])
10570 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10573 if test "$cross_compiling" != "yes"; then
10574 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10575 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10576 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10577 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10580 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10581 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10582 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10583 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10584 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10585 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10586 AC_MSG_RESULT([yes])
10588 AC_MSG_RESULT([no])
10589 if test "$with_system_icu_for_build" != "force"; then
10590 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10591 You can use --with-system-icu-for-build=force to use it anyway.])
10596 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10597 # using the system icu tools can lead to version confusion, use the
10598 # ones from the build environment when cross-compiling
10599 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10600 if test -z "$SYSTEM_GENBRK"; then
10601 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10603 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10604 if test -z "$SYSTEM_GENCCODE"; then
10605 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10607 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10608 if test -z "$SYSTEM_GENCMN"; then
10609 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10611 if test "$ICU_MAJOR" -ge "49"; then
10612 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10613 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10614 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10616 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10617 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10618 ICU_RECLASSIFIED_HEBREW_LETTER=
10622 if test "$cross_compiling" = "yes"; then
10623 if test "$ICU_MAJOR" -ge "50"; then
10624 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10629 AC_MSG_RESULT([internal])
10631 BUILD_TYPE="$BUILD_TYPE ICU"
10632 # surprisingly set these only for "internal" (to be used by various other
10633 # external libs): the system icu-config is quite unhelpful and spits out
10634 # dozens of weird flags and also default path -I/usr/include
10635 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10636 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10638 if test "$ICU_MAJOR" -ge "59"; then
10639 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10640 # with -std=c++11 but not all external libraries can be built with that,
10641 # for those use a bit-compatible typedef uint16_t UChar; see
10642 # icu/source/common/unicode/umachine.h
10643 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10647 AC_SUBST(SYSTEM_ICU)
10648 AC_SUBST(SYSTEM_GENBRK)
10649 AC_SUBST(SYSTEM_GENCCODE)
10650 AC_SUBST(SYSTEM_GENCMN)
10651 AC_SUBST(ICU_MAJOR)
10652 AC_SUBST(ICU_MINOR)
10653 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10654 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10655 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10656 AC_SUBST(ICU_CFLAGS)
10658 AC_SUBST(ICU_UCHAR_TYPE)
10660 dnl ==================================================================
10662 dnl ==================================================================
10663 DEFAULT_CRASHDUMP_VALUE="true"
10664 AC_MSG_CHECKING([whether to enable breakpad])
10665 if test "$enable_breakpad" != yes; then
10666 AC_MSG_RESULT([no])
10668 AC_MSG_RESULT([yes])
10669 ENABLE_BREAKPAD="TRUE"
10670 AC_DEFINE(ENABLE_BREAKPAD)
10671 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10672 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10674 AC_MSG_CHECKING([for disable crash dump])
10675 if test "$enable_crashdump" = no; then
10676 DEFAULT_CRASHDUMP_VALUE="false"
10677 AC_MSG_RESULT([yes])
10679 AC_MSG_RESULT([no])
10682 AC_MSG_CHECKING([for crashreport config])
10683 if test "$with_symbol_config" = "no"; then
10684 BREAKPAD_SYMBOL_CONFIG="invalid"
10685 AC_MSG_RESULT([no])
10687 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10688 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10689 AC_MSG_RESULT([yes])
10691 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10693 AC_SUBST(ENABLE_BREAKPAD)
10694 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10696 dnl ===================================================================
10698 dnl ===================================================================
10699 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10700 if test "$with_system_orcus" != "yes"; then
10701 if test "$SYSTEM_BOOST" = "TRUE"; then
10702 dnl Link with Boost.System
10703 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10704 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10705 dnl in documentation has no effect.
10709 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10710 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10711 AC_SUBST([BOOST_SYSTEM_LIB])
10712 AC_SUBST(SYSTEM_LIBORCUS)
10714 dnl ===================================================================
10716 dnl ===================================================================
10718 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10719 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10720 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10722 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10723 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10724 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10726 if test "$COM" = "MSC"; then # override the above
10727 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10728 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10731 if test "$with_system_harfbuzz" = "yes"; then
10732 if test "$with_system_graphite" = "no"; then
10733 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10735 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10737 save_CFLAGS="$CFLAGS"
10738 LIBS="$LIBS $HARFBUZZ_LIBS"
10739 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10740 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10742 CFLAGS="$save_CFLAGS"
10744 if test "$with_system_graphite" = "yes"; then
10745 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10749 if test "$USING_X11" = TRUE; then
10752 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10754 if test -z "$x_includes"; then
10755 x_includes="default_x_includes"
10757 if test -z "$x_libraries"; then
10758 x_libraries="default_x_libraries"
10760 CFLAGS="$CFLAGS $X_CFLAGS"
10761 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10762 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10764 x_includes="no_x_includes"
10765 x_libraries="no_x_libraries"
10768 if test "$USING_X11" = TRUE; then
10769 dnl ===================================================================
10770 dnl Check for extension headers
10771 dnl ===================================================================
10772 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10773 [#include <X11/extensions/shape.h>])
10775 # vcl needs ICE and SM
10776 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10777 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10778 [AC_MSG_ERROR(ICE library not found)])
10779 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10780 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10781 [AC_MSG_ERROR(SM library not found)])
10784 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10785 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10786 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10789 dnl ===================================================================
10790 dnl Check for system Xrender
10791 dnl ===================================================================
10792 AC_MSG_CHECKING([whether to use Xrender])
10793 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10794 AC_MSG_RESULT([yes])
10795 PKG_CHECK_MODULES(XRENDER, xrender)
10796 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10797 FilterLibs "${XRENDER_LIBS}"
10798 XRENDER_LIBS="${filteredlibs}"
10799 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10800 [AC_MSG_ERROR(libXrender not found or functional)], [])
10801 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10802 [AC_MSG_ERROR(Xrender not found. install X)], [])
10804 AC_MSG_RESULT([no])
10806 AC_SUBST(XRENDER_CFLAGS)
10807 AC_SUBST(XRENDER_LIBS)
10809 dnl ===================================================================
10810 dnl Check for XRandr
10811 dnl ===================================================================
10812 AC_MSG_CHECKING([whether to enable RandR support])
10813 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10814 AC_MSG_RESULT([yes])
10815 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10816 if test "$ENABLE_RANDR" != "TRUE"; then
10817 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10818 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10820 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10821 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10822 XRANDR_LIBS="-lXrandr "
10823 ENABLE_RANDR="TRUE"
10825 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10826 FilterLibs "${XRANDR_LIBS}"
10827 XRANDR_LIBS="${filteredlibs}"
10830 AC_MSG_RESULT([no])
10832 AC_SUBST(XRANDR_CFLAGS)
10833 AC_SUBST(XRANDR_LIBS)
10834 AC_SUBST(ENABLE_RANDR)
10836 if test -z "$with_webdav"; then
10837 with_webdav=$test_webdav
10840 AC_MSG_CHECKING([for WebDAV support])
10841 case "$with_webdav" in
10843 AC_MSG_RESULT([no])
10847 AC_MSG_RESULT([yes])
10848 # curl is already mandatory (almost) and checked elsewhere
10849 if test "$enable_curl" = "no"; then
10850 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
10855 AC_SUBST(WITH_WEBDAV)
10857 dnl ===================================================================
10858 dnl Check for disabling cve_tests
10859 dnl ===================================================================
10860 AC_MSG_CHECKING([whether to execute CVE tests])
10861 # If not explicitly enabled or disabled, default
10862 if test -z "$enable_cve_tests"; then
10865 # Default cves off for Windows with its wild and wonderful
10866 # variety of AV software kicking in and panicking
10867 enable_cve_tests=no
10871 enable_cve_tests=yes
10875 if test "$enable_cve_tests" = "no"; then
10876 AC_MSG_RESULT([no])
10877 DISABLE_CVE_TESTS=TRUE
10878 AC_SUBST(DISABLE_CVE_TESTS)
10880 AC_MSG_RESULT([yes])
10883 dnl ===================================================================
10884 dnl Check for enabling chart XShape tests
10885 dnl ===================================================================
10886 AC_MSG_CHECKING([whether to execute chart XShape tests])
10887 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10888 AC_MSG_RESULT([yes])
10889 ENABLE_CHART_TESTS=TRUE
10890 AC_SUBST(ENABLE_CHART_TESTS)
10892 AC_MSG_RESULT([no])
10895 dnl ===================================================================
10896 dnl Check for system openssl
10897 dnl ===================================================================
10899 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10900 if test "$enable_openssl" = "yes"; then
10901 AC_MSG_RESULT([no])
10902 ENABLE_OPENSSL=TRUE
10903 if test "$_os" = Darwin ; then
10904 # OpenSSL is deprecated when building for 10.7 or later.
10906 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10907 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10909 with_system_openssl=no
10910 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10911 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10912 && test "$with_system_openssl" != "no"; then
10913 with_system_openssl=yes
10914 SYSTEM_OPENSSL=TRUE
10916 OPENSSL_LIBS="-lssl -lcrypto"
10918 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10920 if test "$with_system_openssl" = "yes"; then
10921 AC_MSG_CHECKING([whether openssl supports SHA512])
10923 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10924 SHA512_CTX context;
10925 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10929 AC_MSG_RESULT([yes])
10931 # warn that although OpenSSL is disabled, system libraries may depend on it
10932 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10933 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10936 AC_SUBST([ENABLE_OPENSSL])
10938 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10939 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10940 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10941 enable_cipher_openssl_backend=no
10943 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10946 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10947 ENABLE_CIPHER_OPENSSL_BACKEND=
10948 if test "$enable_cipher_openssl_backend" = yes; then
10949 AC_MSG_RESULT([yes])
10950 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10952 AC_MSG_RESULT([no])
10954 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10956 dnl ===================================================================
10957 dnl Select the crypto backends used by LO
10958 dnl ===================================================================
10960 if test "$build_crypto" = yes; then
10961 if test "$OS" = WNT; then
10962 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10963 AC_DEFINE([USE_CRYPTO_MSCAPI])
10964 elif test "$ENABLE_NSS" = TRUE; then
10965 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10966 AC_DEFINE([USE_CRYPTO_NSS])
10970 dnl ===================================================================
10971 dnl Check for system redland
10972 dnl ===================================================================
10973 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10974 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10975 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10976 if test "$with_system_redland" = "yes"; then
10977 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10978 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10984 AC_SUBST(RAPTOR_MAJOR)
10985 AC_SUBST(RASQAL_MAJOR)
10986 AC_SUBST(REDLAND_MAJOR)
10988 dnl ===================================================================
10989 dnl Check for system hunspell
10990 dnl ===================================================================
10991 AC_MSG_CHECKING([which libhunspell to use])
10992 if test "$with_system_hunspell" = "yes"; then
10993 AC_MSG_RESULT([external])
10994 SYSTEM_HUNSPELL=TRUE
10995 AC_LANG_PUSH([C++])
10996 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10997 if test "$HUNSPELL_PC" != "TRUE"; then
10998 AC_CHECK_HEADER(hunspell.hxx, [],
11000 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11001 [AC_MSG_ERROR(hunspell headers not found.)], [])
11003 AC_CHECK_LIB([hunspell], [main], [:],
11004 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11005 HUNSPELL_LIBS=-lhunspell
11008 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11009 FilterLibs "${HUNSPELL_LIBS}"
11010 HUNSPELL_LIBS="${filteredlibs}"
11012 AC_MSG_RESULT([internal])
11014 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11015 if test "$COM" = "MSC"; then
11016 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11018 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11020 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11022 AC_SUBST(SYSTEM_HUNSPELL)
11023 AC_SUBST(HUNSPELL_CFLAGS)
11024 AC_SUBST(HUNSPELL_LIBS)
11026 dnl ===================================================================
11027 dnl Check for system zxing
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([whether to use zxing])
11030 if test "$enable_zxing" = "no"; then
11031 AC_MSG_RESULT([no])
11035 AC_MSG_RESULT([yes])
11037 AC_MSG_CHECKING([which libzxing to use])
11038 if test "$with_system_zxing" = "yes"; then
11039 AC_MSG_RESULT([external])
11041 AC_LANG_PUSH([C++])
11042 AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11043 [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11044 ZXING_CFLAGS=-I/usr/include/ZXing
11045 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11046 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11047 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11049 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11050 FilterLibs "${ZXING_LIBS}"
11051 ZXING_LIBS="${filteredlibs}"
11053 AC_MSG_RESULT([internal])
11055 BUILD_TYPE="$BUILD_TYPE ZXING"
11057 if test "$ENABLE_ZXING" = TRUE; then
11058 AC_DEFINE(ENABLE_ZXING)
11061 AC_SUBST(SYSTEM_ZXING)
11062 AC_SUBST(ENABLE_ZXING)
11063 AC_SUBST(ZXING_CFLAGS)
11064 AC_SUBST(ZXING_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system box2d
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([which box2d to use])
11070 if test "$with_system_box2d" = "yes"; then
11071 AC_MSG_RESULT([external])
11073 AC_LANG_PUSH([C++])
11074 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11075 [BOX2D_H_FOUND='FALSE'])
11076 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11078 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11080 # fail this. there's no other alternative to check when we are here.
11081 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11082 [AC_MSG_ERROR(box2d headers not found.)])
11084 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11086 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11087 [ AC_MSG_ERROR(box2d library not found.) ], [])
11088 BOX2D_LIBS=-l$_BOX2D_LIB
11090 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11091 FilterLibs "${BOX2D_LIBS}"
11092 BOX2D_LIBS="${filteredlibs}"
11094 AC_MSG_RESULT([internal])
11096 BUILD_TYPE="$BUILD_TYPE BOX2D"
11098 AC_SUBST(SYSTEM_BOX2D)
11099 AC_SUBST(BOX2D_CFLAGS)
11100 AC_SUBST(BOX2D_LIBS)
11102 dnl ===================================================================
11103 dnl Checking for altlinuxhyph
11104 dnl ===================================================================
11105 AC_MSG_CHECKING([which altlinuxhyph to use])
11106 if test "$with_system_altlinuxhyph" = "yes"; then
11107 AC_MSG_RESULT([external])
11109 AC_CHECK_HEADER(hyphen.h, [],
11110 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11111 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11112 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11113 [#include <hyphen.h>])
11114 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11115 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11116 if test -z "$HYPHEN_LIB"; then
11117 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11118 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11120 if test -z "$HYPHEN_LIB"; then
11121 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11122 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11125 AC_MSG_RESULT([internal])
11127 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11128 if test "$COM" = "MSC"; then
11129 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11131 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11134 AC_SUBST(SYSTEM_HYPH)
11135 AC_SUBST(HYPHEN_LIB)
11137 dnl ===================================================================
11138 dnl Checking for mythes
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which mythes to use])
11141 if test "$with_system_mythes" = "yes"; then
11142 AC_MSG_RESULT([external])
11144 AC_LANG_PUSH([C++])
11145 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11146 if test "$MYTHES_PKGCONFIG" = "no"; then
11147 AC_CHECK_HEADER(mythes.hxx, [],
11148 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11149 AC_CHECK_LIB([mythes-1.2], [main], [:],
11150 [ MYTHES_FOUND=no], [])
11151 if test "$MYTHES_FOUND" = "no"; then
11152 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11153 [ MYTHES_FOUND=no], [])
11155 if test "$MYTHES_FOUND" = "no"; then
11156 AC_MSG_ERROR([mythes library not found!.])
11160 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11161 FilterLibs "${MYTHES_LIBS}"
11162 MYTHES_LIBS="${filteredlibs}"
11164 AC_MSG_RESULT([internal])
11166 BUILD_TYPE="$BUILD_TYPE MYTHES"
11167 if test "$COM" = "MSC"; then
11168 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11170 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11173 AC_SUBST(SYSTEM_MYTHES)
11174 AC_SUBST(MYTHES_CFLAGS)
11175 AC_SUBST(MYTHES_LIBS)
11177 dnl ===================================================================
11178 dnl How should we build the linear programming solver ?
11179 dnl ===================================================================
11182 AC_MSG_CHECKING([whether to build with CoinMP])
11183 if test "$enable_coinmp" != "no"; then
11185 AC_MSG_RESULT([yes])
11186 if test "$with_system_coinmp" = "yes"; then
11188 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11189 FilterLibs "${COINMP_LIBS}"
11190 COINMP_LIBS="${filteredlibs}"
11192 BUILD_TYPE="$BUILD_TYPE COINMP"
11195 AC_MSG_RESULT([no])
11197 AC_SUBST(ENABLE_COINMP)
11198 AC_SUBST(SYSTEM_COINMP)
11199 AC_SUBST(COINMP_CFLAGS)
11200 AC_SUBST(COINMP_LIBS)
11203 AC_MSG_CHECKING([whether to build with lpsolve])
11204 if test "$enable_lpsolve" != "no"; then
11205 ENABLE_LPSOLVE=TRUE
11206 AC_MSG_RESULT([yes])
11208 AC_MSG_RESULT([no])
11210 AC_SUBST(ENABLE_LPSOLVE)
11212 if test "$ENABLE_LPSOLVE" = TRUE; then
11213 AC_MSG_CHECKING([which lpsolve to use])
11214 if test "$with_system_lpsolve" = "yes"; then
11215 AC_MSG_RESULT([external])
11216 SYSTEM_LPSOLVE=TRUE
11217 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11218 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11220 # some systems need this. Like Ubuntu...
11221 AC_CHECK_LIB(m, floor)
11222 AC_CHECK_LIB(dl, dlopen)
11223 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11224 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11227 AC_MSG_RESULT([internal])
11229 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11232 AC_SUBST(SYSTEM_LPSOLVE)
11234 dnl ===================================================================
11235 dnl Checking for libexttextcat
11236 dnl ===================================================================
11237 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11238 if test "$with_system_libexttextcat" = "yes"; then
11239 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11241 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11243 dnl ===================================================================
11244 dnl Checking for libnumbertext
11245 dnl ===================================================================
11246 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11247 if test "$with_system_libnumbertext" = "yes"; then
11248 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11249 SYSTEM_LIBNUMBERTEXT=YES
11251 SYSTEM_LIBNUMBERTEXT=
11252 AC_LANG_PUSH([C++])
11253 save_CPPFLAGS=$CPPFLAGS
11254 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11255 AC_CHECK_HEADERS([codecvt regex])
11256 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11257 [ LIBNUMBERTEXT_CFLAGS=''
11258 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11259 Enable libnumbertext fallback (missing number to number name conversion).])
11261 CPPFLAGS=$save_CPPFLAGS
11264 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11265 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11266 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11268 dnl ***************************************
11269 dnl testing libc version for Linux...
11270 dnl ***************************************
11271 if test "$_os" = "Linux"; then
11272 AC_MSG_CHECKING([whether the libc is recent enough])
11273 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11274 #include <features.h>
11275 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11276 #error glibc >= 2.1 is required
11278 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11281 dnl =========================================
11282 dnl Check for uuidgen
11283 dnl =========================================
11284 if test "$_os" = "WINNT"; then
11285 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11286 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11287 UUIDGEN=uuidgen.exe
11290 AC_PATH_PROG([UUIDGEN], [uuidgen])
11291 if test -z "$UUIDGEN"; then
11292 AC_MSG_WARN([uuid is needed for building installation sets])
11296 dnl ***************************************
11297 dnl Checking for bison and flex
11298 dnl ***************************************
11299 AC_PATH_PROG(BISON, bison)
11300 if test -z "$BISON"; then
11301 AC_MSG_ERROR([no bison found in \$PATH, install it])
11303 AC_MSG_CHECKING([the bison version])
11304 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11305 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11306 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11309 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]
11310 dnl typedef union YYSTYPE
11313 dnl while at least 3.4.1 is know to be good:
11314 if test "$COMPILER_PLUGINS" = TRUE; then
11315 if test "$_bison_longver" -lt 2004; then
11316 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11319 if test "$_bison_longver" -lt 2000; then
11320 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11326 AC_PATH_PROG(FLEX, flex)
11327 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11328 FLEX=`cygpath -m $FLEX`
11330 if test -z "$FLEX"; then
11331 AC_MSG_ERROR([no flex found in \$PATH, install it])
11333 AC_MSG_CHECKING([the flex version])
11334 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11335 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11336 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11340 dnl ***************************************
11341 dnl Checking for patch
11342 dnl ***************************************
11343 AC_PATH_PROG(PATCH, patch)
11344 if test -z "$PATCH"; then
11345 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11348 dnl On Solaris or macOS, check if --with-gnu-patch was used
11349 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11350 if test -z "$with_gnu_patch"; then
11353 if test -x "$with_gnu_patch"; then
11354 GNUPATCH=$with_gnu_patch
11356 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11360 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11361 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11362 AC_MSG_RESULT([yes])
11364 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11370 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11371 GNUPATCH=`cygpath -m $GNUPATCH`
11374 dnl We also need to check for --with-gnu-cp
11376 if test -z "$with_gnu_cp"; then
11377 # check the place where the good stuff is hidden on Solaris...
11378 if test -x /usr/gnu/bin/cp; then
11379 GNUCP=/usr/gnu/bin/cp
11381 AC_PATH_PROGS(GNUCP, gnucp cp)
11383 if test -z $GNUCP; then
11384 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11387 if test -x "$with_gnu_cp"; then
11390 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11394 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11395 GNUCP=`cygpath -m $GNUCP`
11398 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11399 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11400 AC_MSG_RESULT([yes])
11401 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11402 AC_MSG_RESULT([yes])
11404 case "$build_os" in
11405 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11408 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11411 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11420 dnl ***************************************
11421 dnl testing assembler path
11422 dnl ***************************************
11424 if test "$_os" = "WINNT"; then
11425 case "$WIN_HOST_ARCH" in
11426 x86) assembler=ml.exe ;;
11427 x64) assembler=ml64.exe ;;
11428 arm64) assembler=armasm64.exe ;;
11431 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11432 if test -f "$MSVC_HOST_PATH/$assembler"; then
11433 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11434 AC_MSG_RESULT([$ML_EXE])
11436 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11442 dnl ===================================================================
11443 dnl We need zip and unzip
11444 dnl ===================================================================
11445 AC_PATH_PROG(ZIP, zip)
11446 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11447 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11448 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],,)
11451 AC_PATH_PROG(UNZIP, unzip)
11452 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11454 dnl ===================================================================
11455 dnl Zip must be a specific type for different build types.
11456 dnl ===================================================================
11457 if test $build_os = cygwin; then
11458 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11459 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11463 dnl ===================================================================
11464 dnl We need touch with -h option support.
11465 dnl ===================================================================
11466 AC_PATH_PROG(TOUCH, touch)
11467 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11468 touch "$WARNINGS_FILE"
11469 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11470 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],,)
11473 dnl ===================================================================
11474 dnl Check for system epoxy
11475 dnl ===================================================================
11476 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11477 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11479 dnl ===================================================================
11480 dnl Set vcl option: coordinate device in double or sal_Int32
11481 dnl ===================================================================
11483 dnl disabled for now, we don't want subtle differences between OSs
11484 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11485 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11486 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11487 dnl AC_MSG_RESULT([double])
11489 dnl AC_MSG_RESULT([sal_Int32])
11492 dnl ===================================================================
11493 dnl Show which vclplugs will be built.
11494 dnl ===================================================================
11496 if test "$USING_X11" != TRUE; then
11500 libo_ENABLE_VCLPLUG([gtk3])
11501 libo_ENABLE_VCLPLUG([gtk3_kde5])
11502 libo_ENABLE_VCLPLUG([gtk4])
11503 libo_ENABLE_VCLPLUG([qt5])
11504 libo_ENABLE_VCLPLUG([qt6])
11505 libo_ENABLE_VCLPLUG([kf5])
11507 if test "x$USING_X11" = "xyes"; then
11511 if test "$_os" = "WINNT"; then
11513 elif test "$_os" = "Darwin"; then
11515 elif test "$_os" = "iOS"; then
11517 elif test "$_os" = Android; then
11521 build_vcl_plugins="$R"
11522 if test -z "$build_vcl_plugins"; then
11523 build_vcl_plugins=" none"
11525 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11527 AC_SUBST([VCL_PLUGIN_INFO])
11529 dnl ===================================================================
11530 dnl Check for GTK libraries
11531 dnl ===================================================================
11535 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11536 if test "$with_system_cairo" = no; then
11537 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11539 : ${with_system_cairo:=yes}
11540 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)
11541 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11542 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11543 FilterLibs "${GTK3_LIBS}"
11544 GTK3_LIBS="${filteredlibs}"
11546 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11547 if test "$with_system_epoxy" != "yes"; then
11548 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11549 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11550 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11553 AC_SUBST(GTK3_LIBS)
11554 AC_SUBST(GTK3_CFLAGS)
11558 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11559 if test "$with_system_cairo" = no; then
11560 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11562 : ${with_system_cairo:=yes}
11563 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11564 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11565 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11566 FilterLibs "${GTK4_LIBS}"
11567 GTK4_LIBS="${filteredlibs}"
11569 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11570 if test "$with_system_epoxy" != "yes"; then
11571 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11572 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11573 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11576 AC_SUBST(GTK4_LIBS)
11577 AC_SUBST(GTK4_CFLAGS)
11579 if test "$enable_introspection" = yes; then
11580 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11581 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11583 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11587 dnl ===================================================================
11588 dnl check for dbus support
11589 dnl ===================================================================
11593 DBUS_GLIB_CFLAGS=""
11597 if test "$enable_dbus" = "no"; then
11601 AC_MSG_CHECKING([whether to enable DBUS support])
11602 if test "$test_dbus" = "yes"; then
11604 AC_MSG_RESULT([yes])
11605 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11606 AC_DEFINE(ENABLE_DBUS)
11607 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11608 FilterLibs "${DBUS_LIBS}"
11609 DBUS_LIBS="${filteredlibs}"
11611 # Glib is needed for BluetoothServer
11612 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11613 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11615 DBUS_HAVE_GLIB="TRUE"
11616 AC_DEFINE(DBUS_HAVE_GLIB,1)
11618 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11621 AC_MSG_RESULT([no])
11624 AC_SUBST(ENABLE_DBUS)
11625 AC_SUBST(DBUS_CFLAGS)
11626 AC_SUBST(DBUS_LIBS)
11627 AC_SUBST(DBUS_GLIB_CFLAGS)
11628 AC_SUBST(DBUS_GLIB_LIBS)
11629 AC_SUBST(DBUS_HAVE_GLIB)
11631 AC_MSG_CHECKING([whether to enable Impress remote control])
11632 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11633 AC_MSG_RESULT([yes])
11634 ENABLE_SDREMOTE=TRUE
11635 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11637 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11638 # The Bluetooth code doesn't compile with macOS SDK 10.15
11639 if test "$enable_sdremote_bluetooth" = yes; then
11640 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11642 enable_sdremote_bluetooth=no
11644 # If not explicitly enabled or disabled, default
11645 if test -z "$enable_sdremote_bluetooth"; then
11648 # Default to yes for these
11649 enable_sdremote_bluetooth=yes
11653 enable_sdremote_bluetooth=no
11657 # $enable_sdremote_bluetooth is guaranteed non-empty now
11659 if test "$enable_sdremote_bluetooth" != "no"; then
11660 if test "$OS" = "LINUX"; then
11661 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11662 AC_MSG_RESULT([yes])
11663 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11664 dnl ===================================================================
11665 dnl Check for system bluez
11666 dnl ===================================================================
11667 AC_MSG_CHECKING([which Bluetooth header to use])
11668 if test "$with_system_bluez" = "yes"; then
11669 AC_MSG_RESULT([external])
11670 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11671 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11674 AC_MSG_RESULT([internal])
11678 AC_MSG_RESULT([no, dbus disabled])
11679 ENABLE_SDREMOTE_BLUETOOTH=
11683 AC_MSG_RESULT([yes])
11684 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11688 AC_MSG_RESULT([no])
11689 ENABLE_SDREMOTE_BLUETOOTH=
11695 AC_MSG_RESULT([no])
11697 AC_SUBST(ENABLE_SDREMOTE)
11698 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11699 AC_SUBST(SYSTEM_BLUEZ)
11701 dnl ===================================================================
11702 dnl Check whether to enable GIO support
11703 dnl ===================================================================
11704 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11705 AC_MSG_CHECKING([whether to enable GIO support])
11706 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11707 dnl Need at least 2.26 for the dbus support.
11708 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11709 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11710 if test "$ENABLE_GIO" = "TRUE"; then
11711 AC_DEFINE(ENABLE_GIO)
11712 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11713 FilterLibs "${GIO_LIBS}"
11714 GIO_LIBS="${filteredlibs}"
11717 AC_MSG_RESULT([no])
11720 AC_SUBST(ENABLE_GIO)
11721 AC_SUBST(GIO_CFLAGS)
11725 dnl ===================================================================
11727 SPLIT_APP_MODULES=""
11728 if test "$enable_split_app_modules" = "yes"; then
11729 SPLIT_APP_MODULES="TRUE"
11731 AC_SUBST(SPLIT_APP_MODULES)
11733 SPLIT_OPT_FEATURES=""
11734 if test "$enable_split_opt_features" = "yes"; then
11735 SPLIT_OPT_FEATURES="TRUE"
11737 AC_SUBST(SPLIT_OPT_FEATURES)
11739 dnl ===================================================================
11740 dnl Check whether the GStreamer libraries are available.
11741 dnl ===================================================================
11743 ENABLE_GSTREAMER_1_0=""
11745 if test "$test_gstreamer_1_0" = yes; then
11747 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11748 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11749 ENABLE_GSTREAMER_1_0="TRUE"
11750 AC_MSG_RESULT([yes])
11751 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11752 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11753 FilterLibs "${GSTREAMER_1_0_LIBS}"
11754 GSTREAMER_1_0_LIBS="${filteredlibs}"
11755 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11757 AC_MSG_RESULT([no])
11760 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11761 AC_SUBST(GSTREAMER_1_0_LIBS)
11762 AC_SUBST(ENABLE_GSTREAMER_1_0)
11764 ENABLE_OPENGL_TRANSITIONS=
11765 ENABLE_OPENGL_CANVAS=
11766 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11768 elif test "$_os" = "Darwin"; then
11769 # We use frameworks on macOS, no need for detail checks
11770 ENABLE_OPENGL_TRANSITIONS=TRUE
11771 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11772 ENABLE_OPENGL_CANVAS=TRUE
11773 elif test $_os = WINNT; then
11774 ENABLE_OPENGL_TRANSITIONS=TRUE
11775 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11776 ENABLE_OPENGL_CANVAS=TRUE
11778 if test "$USING_X11" = TRUE; then
11779 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11780 ENABLE_OPENGL_TRANSITIONS=TRUE
11781 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11782 ENABLE_OPENGL_CANVAS=TRUE
11786 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11787 AC_SUBST(ENABLE_OPENGL_CANVAS)
11789 dnl =================================================
11790 dnl Check whether to build with OpenCL support.
11791 dnl =================================================
11793 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11794 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11795 # platform (optional at run-time, used through clew).
11796 BUILD_TYPE="$BUILD_TYPE OPENCL"
11797 AC_DEFINE(HAVE_FEATURE_OPENCL)
11800 dnl =================================================
11801 dnl Check whether to build with dconf support.
11802 dnl =================================================
11804 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11805 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11806 if test "$enable_dconf" = yes; then
11807 AC_MSG_ERROR([dconf not found])
11812 AC_MSG_CHECKING([whether to enable dconf])
11813 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11817 AC_MSG_RESULT([no])
11820 AC_DEFINE(ENABLE_DCONF)
11821 AC_MSG_RESULT([yes])
11823 AC_SUBST([DCONF_CFLAGS])
11824 AC_SUBST([DCONF_LIBS])
11825 AC_SUBST([ENABLE_DCONF])
11828 AC_MSG_CHECKING([whether to build the PDF import feature])
11830 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11831 AC_MSG_RESULT([yes])
11832 ENABLE_PDFIMPORT=TRUE
11833 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11835 AC_MSG_RESULT([no])
11839 AC_MSG_CHECKING([whether to build PDFium])
11841 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11842 AC_MSG_RESULT([yes])
11844 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11846 AC_MSG_RESULT([no])
11848 AC_SUBST(ENABLE_PDFIUM)
11850 if test "$ENABLE_PDFIUM" = "TRUE"; then
11851 AC_MSG_CHECKING([which OpenJPEG library to use])
11852 if test "$with_system_openjpeg" = "yes"; then
11853 SYSTEM_OPENJPEG2=TRUE
11854 AC_MSG_RESULT([external])
11855 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11856 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11857 FilterLibs "${OPENJPEG2_LIBS}"
11858 OPENJPEG2_LIBS="${filteredlibs}"
11860 SYSTEM_OPENJPEG2=FALSE
11861 AC_MSG_RESULT([internal])
11864 AC_MSG_CHECKING([which Abseil library to use])
11865 if test "$with_system_abseil" = "yes"; then
11866 AC_MSG_RESULT([external])
11868 AC_LANG_PUSH([C++])
11869 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11870 [AC_MSG_ERROR(abseil headers not found.)], [])
11871 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
11872 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
11874 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11875 FilterLibs "${ABSEIL_LIBS}"
11876 ABSEIL_LIBS="${filteredlibs}"
11878 AC_MSG_RESULT([internal])
11881 AC_SUBST(SYSTEM_OPENJPEG2)
11882 AC_SUBST(SYSTEM_ABSEIL)
11883 AC_SUBST(ABSEIL_CFLAGS)
11884 AC_SUBST(ABSEIL_LIBS)
11886 dnl ===================================================================
11887 dnl Check for poppler
11888 dnl ===================================================================
11890 AC_MSG_CHECKING([whether to build Poppler])
11891 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11892 AC_MSG_RESULT([yes])
11893 ENABLE_POPPLER=TRUE
11894 AC_DEFINE(HAVE_FEATURE_POPPLER)
11896 AC_MSG_RESULT([no])
11898 AC_SUBST(ENABLE_POPPLER)
11900 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11901 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11904 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11905 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11908 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11909 dnl ===================================================================
11910 dnl Check for system poppler
11911 dnl ===================================================================
11912 AC_MSG_CHECKING([which PDF import poppler to use])
11913 if test "$with_system_poppler" = "yes"; then
11914 AC_MSG_RESULT([external])
11915 SYSTEM_POPPLER=TRUE
11916 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
11917 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11918 FilterLibs "${POPPLER_LIBS}"
11919 POPPLER_LIBS="${filteredlibs}"
11921 AC_MSG_RESULT([internal])
11923 BUILD_TYPE="$BUILD_TYPE POPPLER"
11925 AC_DEFINE([ENABLE_PDFIMPORT],1)
11927 AC_SUBST(ENABLE_PDFIMPORT)
11928 AC_SUBST(SYSTEM_POPPLER)
11929 AC_SUBST(POPPLER_CFLAGS)
11930 AC_SUBST(POPPLER_LIBS)
11934 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11935 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11936 if test "$SYSTEM_FREETYPE" = TRUE; then
11937 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11938 [skia_freetype_ok=yes],
11939 [skia_freetype_ok=no])
11940 else # internal is ok
11941 skia_freetype_ok=yes
11943 AC_MSG_CHECKING([whether to build Skia])
11944 if test "$skia_freetype_ok" = "yes"; then
11945 if test "$enable_skia" = "debug"; then
11946 AC_MSG_RESULT([yes (debug)])
11947 ENABLE_SKIA_DEBUG=TRUE
11949 AC_MSG_RESULT([yes])
11953 AC_DEFINE(HAVE_FEATURE_SKIA)
11954 BUILD_TYPE="$BUILD_TYPE SKIA"
11956 if test "$OS" = "MACOSX"; then
11957 AC_DEFINE(SK_SUPPORT_GPU,1)
11958 AC_DEFINE(SK_METAL,1)
11962 AC_DEFINE(SK_SUPPORT_GPU,1)
11963 AC_DEFINE(SK_VULKAN,1)
11968 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11969 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11970 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11973 AC_MSG_RESULT([no (freetype too old)])
11974 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11978 AC_MSG_CHECKING([whether to build Skia])
11979 AC_MSG_RESULT([no])
11981 AC_SUBST(ENABLE_SKIA)
11982 AC_SUBST(ENABLE_SKIA_DEBUG)
11984 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11985 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11986 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11987 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11988 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11989 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11990 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11991 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
11992 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11993 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11994 HAVE_LO_CLANG_DLLEXPORTINLINES=
11996 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
11997 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11998 AC_MSG_CHECKING([for Clang])
11999 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12001 if test "$_os" = "WINNT"; then
12002 AC_MSG_CHECKING([for clang-cl])
12003 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12004 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12005 elif test -n "$PROGRAMFILES" -a -x "$PROGRAMFILES/LLVM/bin/clang-cl.exe"; then
12006 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12007 elif test -x "c:/Program Files/LLVM/bin/clang-cl.exe"; then
12008 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12010 if test -n "$LO_CLANG_CC"; then
12011 dnl explicitly set -m32/-m64
12012 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12013 LO_CLANG_CXX="$LO_CLANG_CC"
12014 AC_MSG_RESULT([$LO_CLANG_CC])
12016 AC_MSG_RESULT([no])
12019 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12020 echo "#include <stdlib.h>" > conftest.c
12021 LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12022 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12023 rm -f conftest.c conftest.obj
12024 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12025 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12027 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12030 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12031 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12034 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12035 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12036 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12037 if test "$clang2_ver" -lt 50002; then
12038 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12043 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12045 CXX="$LO_CLANG_CXX"
12046 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12047 AC_LANG_PUSH([C++])
12048 save_CXXFLAGS=$CXXFLAGS
12049 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12050 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12051 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12052 AC_MSG_RESULT([yes])
12053 ], [AC_MSG_RESULT([no])])
12054 CXXFLAGS=$save_CXXFLAGS
12057 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12058 AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
12061 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12062 # Skia is the default on Windows and Mac, so hard-require Clang.
12063 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12064 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12065 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12067 AC_MSG_WARN([Clang compiler not found.])
12072 CXX="$LO_CLANG_CXX"
12073 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12076 flag_sse41=-msse4.1
12077 flag_sse42=-msse4.2
12080 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12081 flag_avx512f=-mavx512f
12085 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12086 AC_LANG_PUSH([C++])
12087 save_CXXFLAGS=$CXXFLAGS
12088 CXXFLAGS="$CXXFLAGS $flag_sse2"
12089 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12090 #include <emmintrin.h>
12092 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12093 c = _mm_xor_si128 (a, b);
12097 [can_compile_sse2=yes],
12098 [can_compile_sse2=no])
12100 CXXFLAGS=$save_CXXFLAGS
12101 AC_MSG_RESULT([${can_compile_sse2}])
12102 if test "${can_compile_sse2}" = "yes" ; then
12103 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12106 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12107 AC_LANG_PUSH([C++])
12108 save_CXXFLAGS=$CXXFLAGS
12109 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12110 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12111 #include <tmmintrin.h>
12113 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12114 c = _mm_maddubs_epi16 (a, b);
12118 [can_compile_ssse3=yes],
12119 [can_compile_ssse3=no])
12121 CXXFLAGS=$save_CXXFLAGS
12122 AC_MSG_RESULT([${can_compile_ssse3}])
12123 if test "${can_compile_ssse3}" = "yes" ; then
12124 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12127 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12128 AC_LANG_PUSH([C++])
12129 save_CXXFLAGS=$CXXFLAGS
12130 CXXFLAGS="$CXXFLAGS $flag_sse41"
12131 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12132 #include <smmintrin.h>
12134 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12135 c = _mm_cmpeq_epi64 (a, b);
12139 [can_compile_sse41=yes],
12140 [can_compile_sse41=no])
12142 CXXFLAGS=$save_CXXFLAGS
12143 AC_MSG_RESULT([${can_compile_sse41}])
12144 if test "${can_compile_sse41}" = "yes" ; then
12145 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12148 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12149 AC_LANG_PUSH([C++])
12150 save_CXXFLAGS=$CXXFLAGS
12151 CXXFLAGS="$CXXFLAGS $flag_sse42"
12152 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12153 #include <nmmintrin.h>
12155 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12156 c = _mm_cmpgt_epi64 (a, b);
12160 [can_compile_sse42=yes],
12161 [can_compile_sse42=no])
12163 CXXFLAGS=$save_CXXFLAGS
12164 AC_MSG_RESULT([${can_compile_sse42}])
12165 if test "${can_compile_sse42}" = "yes" ; then
12166 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12169 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12170 AC_LANG_PUSH([C++])
12171 save_CXXFLAGS=$CXXFLAGS
12172 CXXFLAGS="$CXXFLAGS $flag_avx"
12173 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12174 #include <immintrin.h>
12176 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12177 c = _mm256_xor_ps(a, b);
12181 [can_compile_avx=yes],
12182 [can_compile_avx=no])
12184 CXXFLAGS=$save_CXXFLAGS
12185 AC_MSG_RESULT([${can_compile_avx}])
12186 if test "${can_compile_avx}" = "yes" ; then
12187 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12190 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12191 AC_LANG_PUSH([C++])
12192 save_CXXFLAGS=$CXXFLAGS
12193 CXXFLAGS="$CXXFLAGS $flag_avx2"
12194 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12195 #include <immintrin.h>
12197 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12198 c = _mm256_maddubs_epi16(a, b);
12202 [can_compile_avx2=yes],
12203 [can_compile_avx2=no])
12205 CXXFLAGS=$save_CXXFLAGS
12206 AC_MSG_RESULT([${can_compile_avx2}])
12207 if test "${can_compile_avx2}" = "yes" ; then
12208 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12211 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12212 AC_LANG_PUSH([C++])
12213 save_CXXFLAGS=$CXXFLAGS
12214 CXXFLAGS="$CXXFLAGS $flag_avx512"
12215 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12216 #include <immintrin.h>
12218 __m512i a = _mm512_loadu_si512(0);
12219 __m512d v1 = _mm512_load_pd(0);
12220 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12221 __m512d v2 = _mm512_abs_pd(v1);
12225 [can_compile_avx512=yes],
12226 [can_compile_avx512=no])
12228 CXXFLAGS=$save_CXXFLAGS
12229 AC_MSG_RESULT([${can_compile_avx512}])
12230 if test "${can_compile_avx512}" = "yes" ; then
12231 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12232 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12235 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12236 AC_LANG_PUSH([C++])
12237 save_CXXFLAGS=$CXXFLAGS
12238 CXXFLAGS="$CXXFLAGS $flag_f16c"
12239 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12240 #include <immintrin.h>
12242 __m128i a = _mm_set1_epi32 (0);
12244 c = _mm_cvtph_ps(a);
12248 [can_compile_f16c=yes],
12249 [can_compile_f16c=no])
12251 CXXFLAGS=$save_CXXFLAGS
12252 AC_MSG_RESULT([${can_compile_f16c}])
12253 if test "${can_compile_f16c}" = "yes" ; then
12254 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12257 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12258 AC_LANG_PUSH([C++])
12259 save_CXXFLAGS=$CXXFLAGS
12260 CXXFLAGS="$CXXFLAGS $flag_fma"
12261 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12262 #include <immintrin.h>
12264 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12265 d = _mm256_fmadd_ps(a, b, c);
12269 [can_compile_fma=yes],
12270 [can_compile_fma=no])
12272 CXXFLAGS=$save_CXXFLAGS
12273 AC_MSG_RESULT([${can_compile_fma}])
12274 if test "${can_compile_fma}" = "yes" ; then
12275 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12282 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12284 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12285 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12289 save_CFLAGS=$CFLAGS
12290 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12291 dnl an empty program will do, we're checking the compiler flags
12292 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12293 [use_ccache=yes], [use_ccache=no])
12294 CFLAGS=$save_CFLAGS
12296 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12297 AC_MSG_RESULT([yes])
12299 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12300 AC_MSG_RESULT([no])
12304 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12305 AC_LANG_PUSH([C++])
12307 CXX="$LO_CLANG_CXX"
12308 save_CXXFLAGS=$CXXFLAGS
12309 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12310 dnl an empty program will do, we're checking the compiler flags
12311 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12312 [use_ccache=yes], [use_ccache=no])
12313 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12314 AC_MSG_RESULT([yes])
12316 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12317 AC_MSG_RESULT([no])
12319 CXXFLAGS=$save_CXXFLAGS
12324 AC_SUBST(LO_CLANG_CC)
12325 AC_SUBST(LO_CLANG_CXX)
12326 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12327 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12328 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12329 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12330 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12331 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12332 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12333 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12334 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12335 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12336 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12337 AC_SUBST(CLANG_USE_LD)
12338 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12342 AC_MSG_CHECKING([whether to enable gpgmepp])
12343 if test "$enable_gpgmepp" = no; then
12344 AC_MSG_RESULT([no])
12345 elif test "$enable_mpl_subset" = "yes"; then
12346 AC_MSG_RESULT([no (MPL only])
12347 elif test "$enable_fuzzers" = "yes"; then
12348 AC_MSG_RESULT([no (oss-fuzz)])
12349 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12350 AC_MSG_RESULT([yes])
12351 dnl ===================================================================
12352 dnl Check for system gpgme
12353 dnl ===================================================================
12354 AC_MSG_CHECKING([which gpgmepp to use])
12355 if test "$with_system_gpgmepp" = "yes"; then
12356 AC_MSG_RESULT([external])
12357 SYSTEM_GPGMEPP=TRUE
12359 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12360 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12361 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12362 # progress_callback is the only func with plain C linkage
12363 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12364 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12365 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12366 AC_CHECK_HEADER(gpgme.h, [],
12367 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12369 AC_MSG_RESULT([internal])
12370 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12372 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12373 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12374 if test "$_os" != "WINNT"; then
12375 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12376 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12379 ENABLE_GPGMEPP=TRUE
12380 AC_DEFINE([HAVE_FEATURE_GPGME])
12381 AC_PATH_PROG(GPG, gpg)
12382 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12383 # so let's exclude that manually for the moment
12384 if test -n "$GPG" -a "$_os" != "WINNT"; then
12385 # make sure we not only have a working gpgme, but a full working
12386 # gpg installation to run OpenPGP signature verification
12387 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12389 if test "$_os" = "Linux"; then
12391 AC_MSG_CHECKING([for /run/user/$uid])
12392 if test -d /run/user/$uid; then
12393 AC_MSG_RESULT([yes])
12394 AC_PATH_PROG(GPGCONF, gpgconf)
12396 # Older versions of gpgconf are not working as expected, since
12397 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12398 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12399 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12400 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12401 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12402 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12403 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12404 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12405 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12406 if $GPGCONF --dump-options > /dev/null ; then
12407 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12408 AC_MSG_RESULT([yes])
12409 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12410 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12412 AC_MSG_RESULT([no])
12415 AC_MSG_RESULT([no. missing or broken gpgconf?])
12418 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12421 AC_MSG_RESULT([no])
12425 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12427 AC_SUBST(ENABLE_GPGMEPP)
12428 AC_SUBST(SYSTEM_GPGMEPP)
12429 AC_SUBST(GPG_ERROR_CFLAGS)
12430 AC_SUBST(GPG_ERROR_LIBS)
12431 AC_SUBST(LIBASSUAN_CFLAGS)
12432 AC_SUBST(LIBASSUAN_LIBS)
12433 AC_SUBST(GPGMEPP_CFLAGS)
12434 AC_SUBST(GPGMEPP_LIBS)
12436 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12437 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12438 AC_MSG_RESULT([yes])
12439 ENABLE_MEDIAWIKI=TRUE
12440 BUILD_TYPE="$BUILD_TYPE XSLTML"
12441 if test "x$with_java" = "xno"; then
12442 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12445 AC_MSG_RESULT([no])
12447 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12449 AC_SUBST(ENABLE_MEDIAWIKI)
12451 AC_MSG_CHECKING([whether to build the Report Builder])
12452 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12453 AC_MSG_RESULT([yes])
12454 ENABLE_REPORTBUILDER=TRUE
12455 AC_MSG_CHECKING([which jfreereport libs to use])
12456 if test "$with_system_jfreereport" = "yes"; then
12457 SYSTEM_JFREEREPORT=TRUE
12458 AC_MSG_RESULT([external])
12459 if test -z $SAC_JAR; then
12460 SAC_JAR=/usr/share/java/sac.jar
12462 if ! test -f $SAC_JAR; then
12463 AC_MSG_ERROR(sac.jar not found.)
12466 if test -z $LIBXML_JAR; then
12467 if test -f /usr/share/java/libxml-1.0.0.jar; then
12468 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12469 elif test -f /usr/share/java/libxml.jar; then
12470 LIBXML_JAR=/usr/share/java/libxml.jar
12472 AC_MSG_ERROR(libxml.jar replacement not found.)
12474 elif ! test -f $LIBXML_JAR; then
12475 AC_MSG_ERROR(libxml.jar not found.)
12478 if test -z $FLUTE_JAR; then
12479 if test -f /usr/share/java/flute-1.3.0.jar; then
12480 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12481 elif test -f /usr/share/java/flute.jar; then
12482 FLUTE_JAR=/usr/share/java/flute.jar
12484 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12486 elif ! test -f $FLUTE_JAR; then
12487 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12490 if test -z $JFREEREPORT_JAR; then
12491 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12492 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12493 elif test -f /usr/share/java/flow-engine.jar; then
12494 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12496 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12498 elif ! test -f $JFREEREPORT_JAR; then
12499 AC_MSG_ERROR(jfreereport.jar not found.)
12502 if test -z $LIBLAYOUT_JAR; then
12503 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12504 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12505 elif test -f /usr/share/java/liblayout.jar; then
12506 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12508 AC_MSG_ERROR(liblayout.jar replacement not found.)
12510 elif ! test -f $LIBLAYOUT_JAR; then
12511 AC_MSG_ERROR(liblayout.jar not found.)
12514 if test -z $LIBLOADER_JAR; then
12515 if test -f /usr/share/java/libloader-1.0.0.jar; then
12516 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12517 elif test -f /usr/share/java/libloader.jar; then
12518 LIBLOADER_JAR=/usr/share/java/libloader.jar
12520 AC_MSG_ERROR(libloader.jar replacement not found.)
12522 elif ! test -f $LIBLOADER_JAR; then
12523 AC_MSG_ERROR(libloader.jar not found.)
12526 if test -z $LIBFORMULA_JAR; then
12527 if test -f /usr/share/java/libformula-0.2.0.jar; then
12528 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12529 elif test -f /usr/share/java/libformula.jar; then
12530 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12532 AC_MSG_ERROR(libformula.jar replacement not found.)
12534 elif ! test -f $LIBFORMULA_JAR; then
12535 AC_MSG_ERROR(libformula.jar not found.)
12538 if test -z $LIBREPOSITORY_JAR; then
12539 if test -f /usr/share/java/librepository-1.0.0.jar; then
12540 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12541 elif test -f /usr/share/java/librepository.jar; then
12542 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12544 AC_MSG_ERROR(librepository.jar replacement not found.)
12546 elif ! test -f $LIBREPOSITORY_JAR; then
12547 AC_MSG_ERROR(librepository.jar not found.)
12550 if test -z $LIBFONTS_JAR; then
12551 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12552 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12553 elif test -f /usr/share/java/libfonts.jar; then
12554 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12556 AC_MSG_ERROR(libfonts.jar replacement not found.)
12558 elif ! test -f $LIBFONTS_JAR; then
12559 AC_MSG_ERROR(libfonts.jar not found.)
12562 if test -z $LIBSERIALIZER_JAR; then
12563 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12564 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12565 elif test -f /usr/share/java/libserializer.jar; then
12566 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12568 AC_MSG_ERROR(libserializer.jar replacement not found.)
12570 elif ! test -f $LIBSERIALIZER_JAR; then
12571 AC_MSG_ERROR(libserializer.jar not found.)
12574 if test -z $LIBBASE_JAR; then
12575 if test -f /usr/share/java/libbase-1.0.0.jar; then
12576 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12577 elif test -f /usr/share/java/libbase.jar; then
12578 LIBBASE_JAR=/usr/share/java/libbase.jar
12580 AC_MSG_ERROR(libbase.jar replacement not found.)
12582 elif ! test -f $LIBBASE_JAR; then
12583 AC_MSG_ERROR(libbase.jar not found.)
12587 AC_MSG_RESULT([internal])
12588 SYSTEM_JFREEREPORT=
12589 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12593 AC_MSG_RESULT([no])
12594 ENABLE_REPORTBUILDER=
12595 SYSTEM_JFREEREPORT=
12597 AC_SUBST(ENABLE_REPORTBUILDER)
12598 AC_SUBST(SYSTEM_JFREEREPORT)
12600 AC_SUBST(LIBXML_JAR)
12601 AC_SUBST(FLUTE_JAR)
12602 AC_SUBST(JFREEREPORT_JAR)
12603 AC_SUBST(LIBBASE_JAR)
12604 AC_SUBST(LIBLAYOUT_JAR)
12605 AC_SUBST(LIBLOADER_JAR)
12606 AC_SUBST(LIBFORMULA_JAR)
12607 AC_SUBST(LIBREPOSITORY_JAR)
12608 AC_SUBST(LIBFONTS_JAR)
12609 AC_SUBST(LIBSERIALIZER_JAR)
12611 # scripting provider for BeanShell?
12612 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12613 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12614 AC_MSG_RESULT([yes])
12615 ENABLE_SCRIPTING_BEANSHELL=TRUE
12617 dnl ===================================================================
12618 dnl Check for system beanshell
12619 dnl ===================================================================
12620 AC_MSG_CHECKING([which beanshell to use])
12621 if test "$with_system_beanshell" = "yes"; then
12622 AC_MSG_RESULT([external])
12624 if test -z $BSH_JAR; then
12625 BSH_JAR=/usr/share/java/bsh.jar
12627 if ! test -f $BSH_JAR; then
12628 AC_MSG_ERROR(bsh.jar not found.)
12631 AC_MSG_RESULT([internal])
12633 BUILD_TYPE="$BUILD_TYPE BSH"
12636 AC_MSG_RESULT([no])
12637 ENABLE_SCRIPTING_BEANSHELL=
12638 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12640 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12641 AC_SUBST(SYSTEM_BSH)
12644 # scripting provider for JavaScript?
12645 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12646 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12647 AC_MSG_RESULT([yes])
12648 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12650 dnl ===================================================================
12651 dnl Check for system rhino
12652 dnl ===================================================================
12653 AC_MSG_CHECKING([which rhino to use])
12654 if test "$with_system_rhino" = "yes"; then
12655 AC_MSG_RESULT([external])
12657 if test -z $RHINO_JAR; then
12658 RHINO_JAR=/usr/share/java/js.jar
12660 if ! test -f $RHINO_JAR; then
12661 AC_MSG_ERROR(js.jar not found.)
12664 AC_MSG_RESULT([internal])
12666 BUILD_TYPE="$BUILD_TYPE RHINO"
12670 AC_MSG_RESULT([no])
12671 ENABLE_SCRIPTING_JAVASCRIPT=
12672 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12674 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12675 AC_SUBST(SYSTEM_RHINO)
12676 AC_SUBST(RHINO_JAR)
12678 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12679 # paths should be added to library search path. So lets put all 64-bit
12682 case "$host_cpu" in
12683 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12684 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12685 supports_multilib="yes"
12692 dnl ===================================================================
12693 dnl QT5 Integration
12694 dnl ===================================================================
12700 QT5_GOBJECT_CFLAGS=""
12701 QT5_GOBJECT_LIBS=""
12702 QT5_HAVE_GOBJECT=""
12703 QT5_PLATFORMS_SRCDIR=""
12704 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12705 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12706 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12708 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12709 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12711 if test -n "$supports_multilib"; then
12712 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12715 qt5_test_include="QtWidgets/qapplication.h"
12716 if test "$_os" = "Emscripten"; then
12717 qt5_test_library="libQt5Widgets.a"
12719 qt5_test_library="libQt5Widgets.so"
12722 dnl Check for qmake5
12723 if test -n "$QT5DIR"; then
12724 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12726 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12728 if test "$QMAKE5" = "no"; then
12729 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12731 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12732 if test -z "$qmake5_test_ver"; then
12733 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12735 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12736 qt5_minimal_minor="6"
12737 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12738 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12740 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12744 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12745 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12746 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12747 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12749 AC_MSG_CHECKING([for Qt5 headers])
12751 for inc_dir in $qt5_incdirs; do
12752 if test -r "$inc_dir/$qt5_test_include"; then
12753 qt5_incdir="$inc_dir"
12757 AC_MSG_RESULT([$qt5_incdir])
12758 if test "x$qt5_incdir" = "xno"; then
12759 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12761 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12762 AC_LANG_PUSH([C++])
12763 save_CPPFLAGS=$CPPFLAGS
12764 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12765 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12766 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12767 CPPFLAGS=$save_CPPFLAGS
12770 AC_MSG_CHECKING([for Qt5 libraries])
12772 for lib_dir in $qt5_libdirs; do
12773 if test -r "$lib_dir/$qt5_test_library"; then
12774 qt5_libdir="$lib_dir"
12778 AC_MSG_RESULT([$qt5_libdir])
12779 if test "x$qt5_libdir" = "xno"; then
12780 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12783 if test "$_os" = "Emscripten"; then
12784 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12785 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12787 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12788 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12792 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12793 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12794 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12795 if test "$_os" = "Emscripten"; then
12796 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12799 if test "$USING_X11" = TRUE; then
12800 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12801 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12802 QT5_HAVE_XCB_ICCCM=1
12803 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12805 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)])
12806 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12808 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12809 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12811 AC_DEFINE(QT5_USING_X11)
12814 dnl Check for Meta Object Compiler
12816 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12817 if test "$MOC5" = "no"; then
12818 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12819 the root of your Qt installation by exporting QT5DIR before running "configure".])
12822 if test "$test_gstreamer_1_0" = yes; then
12823 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12825 AC_DEFINE(QT5_HAVE_GOBJECT)
12827 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12831 AC_SUBST(QT5_CFLAGS)
12834 AC_SUBST(QT5_GOBJECT_CFLAGS)
12835 AC_SUBST(QT5_GOBJECT_LIBS)
12836 AC_SUBST(QT5_HAVE_GOBJECT)
12837 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12839 dnl ===================================================================
12840 dnl QT6 Integration
12841 dnl ===================================================================
12847 QT6_PLATFORMS_SRCDIR=""
12848 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12850 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12851 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12853 if test -n "$supports_multilib"; then
12854 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12857 qt6_test_include="QtWidgets/qapplication.h"
12858 if test "$_os" = "Emscripten"; then
12859 qt6_test_library="libQt6Widgets.a"
12861 qt6_test_library="libQt6Widgets.so"
12864 dnl Check for qmake6
12865 if test -n "$QT6DIR"; then
12866 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12868 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12870 if test "$QMAKE6" = "no"; then
12871 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12873 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12874 if test -z "$qmake6_test_ver"; then
12875 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12877 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12880 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12881 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12882 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12883 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12885 AC_MSG_CHECKING([for Qt6 headers])
12887 for inc_dir in $qt6_incdirs; do
12888 if test -r "$inc_dir/$qt6_test_include"; then
12889 qt6_incdir="$inc_dir"
12893 AC_MSG_RESULT([$qt6_incdir])
12894 if test "x$qt6_incdir" = "xno"; then
12895 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12897 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12898 AC_LANG_PUSH([C++])
12899 save_CPPFLAGS=$CPPFLAGS
12900 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12901 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12902 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12903 CPPFLAGS=$save_CPPFLAGS
12906 AC_MSG_CHECKING([for Qt6 libraries])
12908 for lib_dir in $qt6_libdirs; do
12909 if test -r "$lib_dir/$qt6_test_library"; then
12910 qt6_libdir="$lib_dir"
12914 AC_MSG_RESULT([$qt6_libdir])
12915 if test "x$qt6_libdir" = "xno"; then
12916 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12919 if test "$_os" = "Emscripten"; then
12920 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12921 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12923 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12924 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12928 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12929 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12930 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12931 if test "$_os" = "Emscripten"; then
12932 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12935 if test "$USING_X11" = TRUE; then
12936 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12937 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12938 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12940 AC_DEFINE(QT6_USING_X11)
12943 dnl Check for Meta Object Compiler
12945 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12946 if test "$MOC6" = "no"; then
12947 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12948 the root of your Qt installation by exporting QT6DIR before running "configure".])
12951 AC_SUBST(QT6_CFLAGS)
12954 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12956 dnl ===================================================================
12957 dnl KF5 Integration
12958 dnl ===================================================================
12962 KF5_CONFIG="kf5-config"
12963 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12964 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12966 if test "$OS" = "HAIKU"; then
12967 haiku_arch="`echo $RTL_ARCH | tr X x`"
12968 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12969 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12972 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12973 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12974 if test -n "$supports_multilib"; then
12975 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12978 kf5_test_include="KF5/kcoreaddons_version.h"
12979 kf5_test_library="libKF5CoreAddons.so"
12980 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12982 dnl kf5 KDE4 support compatibility installed
12983 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12984 if test "$KF5_CONFIG" != "no"; then
12985 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12986 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12989 dnl Check for KF5 headers
12990 AC_MSG_CHECKING([for KF5 headers])
12992 for kf5_check in $kf5_incdirs; do
12993 if test -r "$kf5_check/$kf5_test_include"; then
12994 kf5_incdir="$kf5_check/KF5"
12998 AC_MSG_RESULT([$kf5_incdir])
12999 if test "x$kf5_incdir" = "xno"; then
13000 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13003 dnl Check for KF5 libraries
13004 AC_MSG_CHECKING([for KF5 libraries])
13006 for kf5_check in $kf5_libdirs; do
13007 if test -r "$kf5_check/$kf5_test_library"; then
13008 kf5_libdir="$kf5_check"
13013 AC_MSG_RESULT([$kf5_libdir])
13014 if test "x$kf5_libdir" = "xno"; then
13015 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13018 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"
13019 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13020 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13022 if test "$USING_X11" = TRUE; then
13023 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13026 AC_LANG_PUSH([C++])
13027 save_CXXFLAGS=$CXXFLAGS
13028 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13029 AC_MSG_CHECKING([whether KDE is >= 5.0])
13030 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13031 #include <kcoreaddons_version.h>
13033 int main(int argc, char **argv) {
13034 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13037 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13038 CXXFLAGS=$save_CXXFLAGS
13041 AC_SUBST(KF5_CFLAGS)
13044 dnl ===================================================================
13045 dnl Test whether to include Evolution 2 support
13046 dnl ===================================================================
13047 AC_MSG_CHECKING([whether to enable evolution 2 support])
13048 if test "$enable_evolution2" = yes; then
13049 AC_MSG_RESULT([yes])
13050 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13051 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13052 FilterLibs "${GOBJECT_LIBS}"
13053 GOBJECT_LIBS="${filteredlibs}"
13054 ENABLE_EVOAB2="TRUE"
13056 AC_MSG_RESULT([no])
13058 AC_SUBST(ENABLE_EVOAB2)
13059 AC_SUBST(GOBJECT_CFLAGS)
13060 AC_SUBST(GOBJECT_LIBS)
13062 dnl ===================================================================
13063 dnl Test which themes to include
13064 dnl ===================================================================
13065 AC_MSG_CHECKING([which themes to include])
13066 # if none given use default subset of available themes
13067 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13068 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"
13072 if test "x$with_theme" != "xno"; then
13073 for theme in $with_theme; do
13075 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" ;;
13076 default) real_theme=colibre ;;
13077 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13079 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13082 AC_MSG_RESULT([$WITH_THEMES])
13083 AC_SUBST([WITH_THEMES])
13084 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13085 for theme in $with_theme; do
13087 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13092 ###############################################################################
13093 # Extensions checking
13094 ###############################################################################
13095 AC_MSG_CHECKING([for extensions integration])
13096 if test "x$enable_extension_integration" != "xno"; then
13097 WITH_EXTENSION_INTEGRATION=TRUE
13098 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13099 AC_MSG_RESULT([yes, use integration])
13101 WITH_EXTENSION_INTEGRATION=
13102 AC_MSG_RESULT([no, do not integrate])
13104 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13106 dnl Should any extra extensions be included?
13107 dnl There are standalone tests for each of these below.
13108 WITH_EXTRA_EXTENSIONS=
13109 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13111 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13112 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13113 if test "x$with_java" != "xno"; then
13114 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13115 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13118 AC_MSG_CHECKING([whether to build opens___.ttf])
13119 if test "$enable_build_opensymbol" = "yes"; then
13120 AC_MSG_RESULT([yes])
13121 AC_PATH_PROG(FONTFORGE, fontforge)
13122 if test -z "$FONTFORGE"; then
13123 AC_MSG_ERROR([fontforge not installed])
13126 AC_MSG_RESULT([no])
13127 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13129 AC_SUBST(FONTFORGE)
13131 dnl ===================================================================
13132 dnl Test whether to include fonts
13133 dnl ===================================================================
13134 AC_MSG_CHECKING([whether to include third-party fonts])
13135 if test "$with_fonts" != "no"; then
13136 AC_MSG_RESULT([yes])
13138 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13139 AC_DEFINE(HAVE_MORE_FONTS)
13141 AC_MSG_RESULT([no])
13143 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13145 AC_SUBST(WITH_FONTS)
13148 dnl ===================================================================
13149 dnl Test whether to enable online update service
13150 dnl ===================================================================
13151 AC_MSG_CHECKING([whether to enable online update])
13152 ENABLE_ONLINE_UPDATE=
13153 ENABLE_ONLINE_UPDATE_MAR=
13155 if test "$enable_online_update" = ""; then
13156 AC_MSG_RESULT([no])
13158 if test "$enable_online_update" = "mar"; then
13159 AC_MSG_RESULT([yes - MAR-based online update])
13160 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13161 if test "$with_update_config" = ""; then
13162 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13164 UPDATE_CONFIG="$with_update_config"
13165 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13166 elif test "$enable_online_update" = "yes"; then
13167 AC_MSG_RESULT([yes])
13168 ENABLE_ONLINE_UPDATE="TRUE"
13170 AC_MSG_RESULT([no])
13173 AC_SUBST(ENABLE_ONLINE_UPDATE)
13174 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13175 AC_SUBST(UPDATE_CONFIG)
13178 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13179 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13180 if test "x$with_privacy_policy_url" = "xundefined"; then
13181 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13184 AC_SUBST(PRIVACY_POLICY_URL)
13185 dnl ===================================================================
13186 dnl Test whether we need bzip2
13187 dnl ===================================================================
13189 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13190 AC_MSG_CHECKING([whether to use system bzip2])
13191 if test "$with_system_bzip2" = yes; then
13193 AC_MSG_RESULT([yes])
13194 PKG_CHECK_MODULES(BZIP2, bzip2)
13195 FilterLibs "${BZIP2_LIBS}"
13196 BZIP2_LIBS="${filteredlibs}"
13198 AC_MSG_RESULT([no])
13199 BUILD_TYPE="$BUILD_TYPE BZIP2"
13202 AC_SUBST(SYSTEM_BZIP2)
13203 AC_SUBST(BZIP2_CFLAGS)
13204 AC_SUBST(BZIP2_LIBS)
13206 dnl ===================================================================
13207 dnl Test whether to enable extension update
13208 dnl ===================================================================
13209 AC_MSG_CHECKING([whether to enable extension update])
13210 ENABLE_EXTENSION_UPDATE=
13211 if test "x$enable_extension_update" = "xno"; then
13212 AC_MSG_RESULT([no])
13214 AC_MSG_RESULT([yes])
13215 ENABLE_EXTENSION_UPDATE="TRUE"
13216 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13217 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13219 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13222 dnl ===================================================================
13223 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13224 dnl ===================================================================
13225 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13226 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13227 AC_MSG_RESULT([no])
13230 AC_MSG_RESULT([yes])
13231 ENABLE_SILENT_MSI=TRUE
13232 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13234 AC_SUBST(ENABLE_SILENT_MSI)
13236 AC_MSG_CHECKING([whether and how to use Xinerama])
13237 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13238 if test "$x_libraries" = "default_x_libraries"; then
13239 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13240 if test "x$XINERAMALIB" = x; then
13241 XINERAMALIB="/usr/lib"
13244 XINERAMALIB="$x_libraries"
13246 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13247 # we have both versions, let the user decide but use the dynamic one
13250 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13251 XINERAMA_LINK=dynamic
13253 XINERAMA_LINK=static
13255 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13256 # we have only the dynamic version
13258 XINERAMA_LINK=dynamic
13259 elif test -e "$XINERAMALIB/libXinerama.a"; then
13261 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13263 XINERAMA_LINK=static
13273 if test "$USE_XINERAMA" = "TRUE"; then
13274 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13275 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13276 [AC_MSG_ERROR(Xinerama header not found.)], [])
13277 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13278 if test "x$XEXTLIB" = x; then
13279 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13281 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13282 if test "$_os" = "FreeBSD"; then
13283 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13285 if test "$_os" = "Linux"; then
13286 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13288 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13289 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13291 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13296 AC_MSG_RESULT([no])
13298 AC_SUBST(USE_XINERAMA)
13299 AC_SUBST(XINERAMA_LINK)
13301 dnl ===================================================================
13302 dnl Test whether to build cairo or rely on the system version
13303 dnl ===================================================================
13305 if test "$test_cairo" = "yes"; then
13306 AC_MSG_CHECKING([whether to use the system cairo])
13308 : ${with_system_cairo:=$with_system_libs}
13309 if test "$with_system_cairo" = "yes"; then
13311 AC_MSG_RESULT([yes])
13313 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13314 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13315 FilterLibs "${CAIRO_LIBS}"
13316 CAIRO_LIBS="${filteredlibs}"
13318 if test "$test_xrender" = "yes"; then
13319 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13321 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13322 #ifdef PictStandardA8
13326 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13331 AC_MSG_RESULT([no])
13332 BUILD_TYPE="$BUILD_TYPE CAIRO"
13335 if test "$enable_cairo_canvas" != no; then
13336 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13337 ENABLE_CAIRO_CANVAS=TRUE
13341 AC_SUBST(CAIRO_CFLAGS)
13342 AC_SUBST(CAIRO_LIBS)
13343 AC_SUBST(ENABLE_CAIRO_CANVAS)
13344 AC_SUBST(SYSTEM_CAIRO)
13346 dnl ===================================================================
13347 dnl Test whether to use avahi
13348 dnl ===================================================================
13349 if test "$_os" = "WINNT"; then
13350 # Windows uses bundled mDNSResponder
13351 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13352 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13353 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13354 [ENABLE_AVAHI="TRUE"])
13355 AC_DEFINE(HAVE_FEATURE_AVAHI)
13356 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13357 FilterLibs "${AVAHI_LIBS}"
13358 AVAHI_LIBS="${filteredlibs}"
13361 AC_SUBST(ENABLE_AVAHI)
13362 AC_SUBST(AVAHI_CFLAGS)
13363 AC_SUBST(AVAHI_LIBS)
13365 dnl ===================================================================
13366 dnl Test whether to use liblangtag
13367 dnl ===================================================================
13369 AC_MSG_CHECKING([whether to use system liblangtag])
13370 if test "$with_system_liblangtag" = yes; then
13371 SYSTEM_LIBLANGTAG=TRUE
13372 AC_MSG_RESULT([yes])
13373 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13374 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13375 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13376 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13377 FilterLibs "${LIBLANGTAG_LIBS}"
13378 LIBLANGTAG_LIBS="${filteredlibs}"
13381 AC_MSG_RESULT([no])
13382 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13383 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13384 if test "$COM" = "MSC"; then
13385 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13387 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13390 AC_SUBST(SYSTEM_LIBLANGTAG)
13391 AC_SUBST(LIBLANGTAG_CFLAGS)
13392 AC_SUBST(LIBLANGTAG_LIBS)
13394 dnl ===================================================================
13395 dnl Test whether to build libpng or rely on the system version
13396 dnl ===================================================================
13398 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13399 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13400 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13402 dnl ===================================================================
13403 dnl Check for runtime JVM search path
13404 dnl ===================================================================
13405 if test "$ENABLE_JAVA" != ""; then
13406 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13407 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13408 AC_MSG_RESULT([yes])
13409 if ! test -d "$with_jvm_path"; then
13410 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13412 if ! test -d "$with_jvm_path"jvm; then
13413 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13415 JVM_ONE_PATH_CHECK="$with_jvm_path"
13416 AC_SUBST(JVM_ONE_PATH_CHECK)
13418 AC_MSG_RESULT([no])
13422 dnl ===================================================================
13423 dnl Test for the presence of Ant and that it works
13424 dnl ===================================================================
13426 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13427 ANT_HOME=; export ANT_HOME
13428 WITH_ANT_HOME=; export WITH_ANT_HOME
13429 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13430 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13431 if test "$_os" = "WINNT"; then
13432 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13434 with_ant_home="$LODE_HOME/opt/ant"
13436 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13437 with_ant_home="$LODE_HOME/opt/ant"
13440 if test -z "$with_ant_home"; then
13441 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13443 if test "$_os" = "WINNT"; then
13444 # AC_PATH_PROGS needs unix path
13445 with_ant_home=`cygpath -u "$with_ant_home"`
13447 AbsolutePath "$with_ant_home"
13448 with_ant_home=$absolute_path
13449 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13450 WITH_ANT_HOME=$with_ant_home
13451 ANT_HOME=$with_ant_home
13454 if test -z "$ANT"; then
13455 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13457 # resolve relative or absolute symlink
13458 while test -h "$ANT"; do
13460 a_basename=`basename "$ANT"`
13461 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13462 cd "`dirname "$ANT"`"
13463 cd "`dirname "$a_script"`"
13464 ANT="`pwd`"/"`basename "$a_script"`"
13468 AC_MSG_CHECKING([if $ANT works])
13469 mkdir -p conftest.dir
13472 cat > conftest.java << EOF
13473 public class conftest {
13474 int testmethod(int a, int b) {
13480 cat > conftest.xml << EOF
13481 <project name="conftest" default="conftest">
13482 <target name="conftest">
13483 <javac srcdir="." includes="conftest.java">
13489 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13490 if test $? = 0 -a -f ./conftest.class; then
13491 AC_MSG_RESULT([Ant works])
13492 if test -z "$WITH_ANT_HOME"; then
13493 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13494 if test -z "$ANT_HOME"; then
13495 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13498 ANT_HOME="$WITH_ANT_HOME"
13501 echo "configure: Ant test failed" >&5
13502 cat conftest.java >&5
13503 cat conftest.xml >&5
13504 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13507 rm -fr conftest.dir
13509 if test -z "$ANT_HOME"; then
13510 ANT_HOME="NO_ANT_HOME"
13512 PathFormat "$ANT_HOME"
13513 ANT_HOME="$formatted_path"
13515 ANT="$formatted_path"
13518 dnl Checking for ant.jar
13519 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13520 AC_MSG_CHECKING([Ant lib directory])
13521 if test -f $ANT_HOME/lib/ant.jar; then
13522 ANT_LIB="$ANT_HOME/lib"
13524 if test -f $ANT_HOME/ant.jar; then
13525 ANT_LIB="$ANT_HOME"
13527 if test -f /usr/share/java/ant.jar; then
13528 ANT_LIB=/usr/share/java
13530 if test -f /usr/share/ant-core/lib/ant.jar; then
13531 ANT_LIB=/usr/share/ant-core/lib
13533 if test -f $ANT_HOME/lib/ant/ant.jar; then
13534 ANT_LIB="$ANT_HOME/lib/ant"
13536 if test -f /usr/share/lib/ant/ant.jar; then
13537 ANT_LIB=/usr/share/lib/ant
13539 AC_MSG_ERROR([Ant libraries not found!])
13546 PathFormat "$ANT_LIB"
13547 ANT_LIB="$formatted_path"
13548 AC_MSG_RESULT([Ant lib directory found.])
13552 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13554 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13555 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13556 ant_version_major=`echo $ant_version | cut -d. -f1`
13557 ant_version_minor=`echo $ant_version | cut -d. -f2`
13558 echo "configure: ant_version $ant_version " >&5
13559 echo "configure: ant_version_major $ant_version_major " >&5
13560 echo "configure: ant_version_minor $ant_version_minor " >&5
13561 if test "$ant_version_major" -ge "2"; then
13562 AC_MSG_RESULT([yes, $ant_version])
13563 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13564 AC_MSG_RESULT([yes, $ant_version])
13566 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13569 rm -f conftest* core core.* *.core
13577 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13578 AC_MSG_CHECKING([for JUnit 4])
13579 if test "$with_junit" = "yes"; then
13580 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13581 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13582 elif test -e /usr/share/java/junit4.jar; then
13583 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13585 if test -e /usr/share/lib/java/junit.jar; then
13586 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13588 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13592 OOO_JUNIT_JAR=$with_junit
13594 if test "$_os" = "WINNT"; then
13595 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13597 printf 'import org.junit.Before;' > conftest.java
13598 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13599 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13602 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13603 specify its pathname via --with-junit=..., or disable it via --without-junit])
13605 rm -f conftest.class conftest.java
13606 if test $OOO_JUNIT_JAR != ""; then
13607 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13610 AC_MSG_CHECKING([for included Hamcrest])
13611 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13612 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13613 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13615 AC_MSG_RESULT([Not included])
13616 AC_MSG_CHECKING([for standalone hamcrest jar.])
13617 if test "$with_hamcrest" = "yes"; then
13618 if test -e /usr/share/lib/java/hamcrest.jar; then
13619 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13620 elif test -e /usr/share/java/hamcrest/core.jar; then
13621 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13622 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13623 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13625 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13628 HAMCREST_JAR=$with_hamcrest
13630 if test "$_os" = "WINNT"; then
13631 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13633 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13634 AC_MSG_RESULT([$HAMCREST_JAR])
13636 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),
13637 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13640 rm -f conftest.class conftest.java
13642 AC_SUBST(OOO_JUNIT_JAR)
13643 AC_SUBST(HAMCREST_JAR)
13649 # check for wget and curl
13654 if test "$enable_fetch_external" != "no"; then
13656 CURL=`which curl 2>/dev/null`
13658 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13660 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13661 if test $? -eq 0; then
13667 if test -z "$WGET" -a -z "$CURL"; then
13668 AC_MSG_ERROR([neither wget nor curl found!])
13677 # check for sha256sum
13681 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13682 eval "$i -a 256 --version" > /dev/null 2>&1
13684 if test $ret -eq 0; then
13685 SHA256SUM="$i -a 256"
13690 if test -z "$SHA256SUM"; then
13691 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13692 eval "$i --version" > /dev/null 2>&1
13694 if test $ret -eq 0; then
13701 if test -z "$SHA256SUM"; then
13702 AC_MSG_ERROR([no sha256sum found!])
13705 AC_SUBST(SHA256SUM)
13707 dnl ===================================================================
13708 dnl Dealing with l10n options
13709 dnl ===================================================================
13710 AC_MSG_CHECKING([which languages to be built])
13711 # get list of all languages
13712 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13713 # the sed command does the following:
13714 # + if a line ends with a backslash, append the next line to it
13715 # + adds " on the beginning of the value (after =)
13716 # + adds " at the end of the value
13717 # + removes en-US; we want to put it on the beginning
13718 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13719 [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)]
13720 ALL_LANGS="en-US $completelangiso"
13721 # check the configured localizations
13722 WITH_LANG="$with_lang"
13724 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13725 # (Norwegian is "nb" and "nn".)
13726 if test "$WITH_LANG" = "no"; then
13730 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13731 AC_MSG_RESULT([en-US])
13733 AC_MSG_RESULT([$WITH_LANG])
13734 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13735 if test -z "$MSGFMT"; then
13736 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13737 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13738 elif test -x "/opt/lo/bin/msgfmt"; then
13739 MSGFMT="/opt/lo/bin/msgfmt"
13741 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13742 if test -z "$MSGFMT"; then
13743 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13747 if test -z "$MSGUNIQ"; then
13748 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13749 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13750 elif test -x "/opt/lo/bin/msguniq"; then
13751 MSGUNIQ="/opt/lo/bin/msguniq"
13753 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13754 if test -z "$MSGUNIQ"; then
13755 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13762 # check that the list is valid
13763 for lang in $WITH_LANG; do
13764 test "$lang" = "ALL" && continue
13765 # need to check for the exact string, so add space before and after the list of all languages
13766 for vl in $ALL_LANGS; do
13767 if test "$vl" = "$lang"; then
13771 if test "$vl" != "$lang"; then
13772 # if you're reading this - you prolly quoted your languages remove the quotes ...
13773 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13776 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13777 echo $WITH_LANG | grep -q en-US
13778 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13780 # list with substituted ALL
13781 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13782 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13783 test "$WITH_LANG" = "en-US" && WITH_LANG=
13784 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13785 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13786 ALL_LANGS=`echo $ALL_LANGS qtz`
13788 AC_SUBST(ALL_LANGS)
13789 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13790 AC_SUBST(WITH_LANG)
13791 AC_SUBST(WITH_LANG_LIST)
13792 AC_SUBST(GIT_NEEDED_SUBMODULES)
13794 WITH_POOR_HELP_LOCALIZATIONS=
13795 if test -d "$SRC_ROOT/translations/source"; then
13796 for l in `ls -1 $SRC_ROOT/translations/source`; do
13797 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13798 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13802 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13804 if test -n "$with_locales" -a "$with_locales" != ALL; then
13805 WITH_LOCALES="$with_locales"
13807 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13808 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13809 # config_host/config_locales.h.in
13810 for locale in $WITH_LOCALES; do
13813 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13817 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13820 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13825 AC_DEFINE(WITH_LOCALE_ALL)
13827 AC_SUBST(WITH_LOCALES)
13829 dnl git submodule update --reference
13830 dnl ===================================================================
13831 if test -n "${GIT_REFERENCE_SRC}"; then
13832 for repo in ${GIT_NEEDED_SUBMODULES}; do
13833 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13834 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13838 AC_SUBST(GIT_REFERENCE_SRC)
13840 dnl git submodules linked dirs
13841 dnl ===================================================================
13842 if test -n "${GIT_LINK_SRC}"; then
13843 for repo in ${GIT_NEEDED_SUBMODULES}; do
13844 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13845 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13849 AC_SUBST(GIT_LINK_SRC)
13852 dnl ===================================================================
13853 AC_MSG_CHECKING([for alternative branding images directory])
13854 # initialize mapped arrays
13855 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13856 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13858 if test -z "$with_branding" -o "$with_branding" = "no"; then
13859 AC_MSG_RESULT([none])
13860 DEFAULT_BRAND_IMAGES="$brand_files"
13862 if ! test -d $with_branding ; then
13863 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13865 AC_MSG_RESULT([$with_branding])
13866 CUSTOM_BRAND_DIR="$with_branding"
13867 for lfile in $brand_files
13869 if ! test -f $with_branding/$lfile ; then
13870 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13871 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13873 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13876 check_for_progress="yes"
13879 AC_SUBST([BRAND_INTRO_IMAGES])
13880 AC_SUBST([CUSTOM_BRAND_DIR])
13881 AC_SUBST([CUSTOM_BRAND_IMAGES])
13882 AC_SUBST([DEFAULT_BRAND_IMAGES])
13885 AC_MSG_CHECKING([for 'intro' progress settings])
13889 PROGRESSFRAMECOLOR=
13891 PROGRESSTEXTBASELINE=
13893 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13894 source "$with_branding/progress.conf"
13895 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13897 AC_MSG_RESULT([none])
13900 AC_SUBST(PROGRESSBARCOLOR)
13901 AC_SUBST(PROGRESSSIZE)
13902 AC_SUBST(PROGRESSPOSITION)
13903 AC_SUBST(PROGRESSFRAMECOLOR)
13904 AC_SUBST(PROGRESSTEXTCOLOR)
13905 AC_SUBST(PROGRESSTEXTBASELINE)
13908 dnl ===================================================================
13909 dnl Custom build version
13910 dnl ===================================================================
13911 AC_MSG_CHECKING([for extra build ID])
13912 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13913 EXTRA_BUILDID="$with_extra_buildid"
13915 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13916 if test -n "$EXTRA_BUILDID" ; then
13917 AC_MSG_RESULT([$EXTRA_BUILDID])
13919 AC_MSG_RESULT([not set])
13921 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13924 AC_MSG_CHECKING([for vendor])
13925 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13926 OOO_VENDOR="$USERNAME"
13928 if test -z "$OOO_VENDOR"; then
13932 if test -z "$OOO_VENDOR"; then
13933 OOO_VENDOR="`id -u -n`"
13936 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13938 OOO_VENDOR="$with_vendor"
13939 AC_MSG_RESULT([$OOO_VENDOR])
13941 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13942 AC_SUBST(OOO_VENDOR)
13944 if test "$_os" = "Android" ; then
13945 ANDROID_PACKAGE_NAME=
13946 AC_MSG_CHECKING([for Android package name])
13947 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13948 if test -n "$ENABLE_DEBUG"; then
13949 # Default to the package name that makes ndk-gdb happy.
13950 ANDROID_PACKAGE_NAME="org.libreoffice"
13952 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13955 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13957 ANDROID_PACKAGE_NAME="$with_android_package_name"
13958 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13960 AC_SUBST(ANDROID_PACKAGE_NAME)
13963 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13964 if test "$with_compat_oowrappers" = "yes"; then
13965 WITH_COMPAT_OOWRAPPERS=TRUE
13968 WITH_COMPAT_OOWRAPPERS=
13971 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13973 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13974 AC_MSG_CHECKING([for install dirname])
13975 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13976 INSTALLDIRNAME="$with_install_dirname"
13978 AC_MSG_RESULT([$INSTALLDIRNAME])
13979 AC_SUBST(INSTALLDIRNAME)
13981 AC_MSG_CHECKING([for prefix])
13982 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13983 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13984 PREFIXDIR="$prefix"
13985 AC_MSG_RESULT([$PREFIXDIR])
13986 AC_SUBST(PREFIXDIR)
13988 LIBDIR=[$(eval echo $(eval echo $libdir))]
13991 DATADIR=[$(eval echo $(eval echo $datadir))]
13994 MANDIR=[$(eval echo $(eval echo $mandir))]
13997 DOCDIR=[$(eval echo $(eval echo $docdir))]
14000 BINDIR=[$(eval echo $(eval echo $bindir))]
14003 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14004 AC_SUBST(INSTALLDIR)
14006 TESTINSTALLDIR="${BUILDDIR}/test-install"
14007 AC_SUBST(TESTINSTALLDIR)
14010 # ===================================================================
14011 # OAuth2 id and secrets
14012 # ===================================================================
14014 AC_MSG_CHECKING([for Google Drive client id and secret])
14015 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14016 AC_MSG_RESULT([not set])
14017 GDRIVE_CLIENT_ID="\"\""
14018 GDRIVE_CLIENT_SECRET="\"\""
14020 AC_MSG_RESULT([set])
14021 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14022 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14024 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14025 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14027 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14028 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14029 AC_MSG_RESULT([not set])
14030 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14031 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14033 AC_MSG_RESULT([set])
14034 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14035 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14037 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14038 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14040 AC_MSG_CHECKING([for OneDrive client id and secret])
14041 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14042 AC_MSG_RESULT([not set])
14043 ONEDRIVE_CLIENT_ID="\"\""
14044 ONEDRIVE_CLIENT_SECRET="\"\""
14046 AC_MSG_RESULT([set])
14047 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14048 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14050 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14051 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14054 dnl ===================================================================
14055 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14056 dnl --enable-dependency-tracking configure option
14057 dnl ===================================================================
14058 AC_MSG_CHECKING([whether to enable dependency tracking])
14059 if test "$enable_dependency_tracking" = "no"; then
14061 AC_MSG_RESULT([no])
14063 AC_MSG_RESULT([yes])
14067 dnl ===================================================================
14068 dnl Number of CPUs to use during the build
14069 dnl ===================================================================
14070 AC_MSG_CHECKING([for number of processors to use])
14071 # plain --with-parallelism is just the default
14072 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14073 if test "$with_parallelism" = "no"; then
14076 PARALLELISM=$with_parallelism
14079 if test "$enable_icecream" = "yes"; then
14084 Darwin|FreeBSD|NetBSD|OpenBSD)
14085 PARALLELISM=`sysctl -n hw.ncpu`
14089 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14091 # what else than above does profit here *and* has /proc?
14093 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14097 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14098 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14102 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14103 if test -z "$with_parallelism"; then
14104 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14105 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14108 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."
14112 if test $PARALLELISM -eq 0; then
14113 AC_MSG_RESULT([explicit make -j option needed])
14115 AC_MSG_RESULT([$PARALLELISM])
14117 AC_SUBST(PARALLELISM)
14119 IWYU_PATH="$with_iwyu"
14120 AC_SUBST(IWYU_PATH)
14121 if test ! -z "$IWYU_PATH"; then
14122 if test ! -f "$IWYU_PATH"; then
14123 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14128 # Set up ILIB for MSVC build
14131 if test "$build_os" = "cygwin"; then
14133 if test -n "$JAVA_HOME"; then
14134 ILIB="$ILIB;$JAVA_HOME/lib"
14137 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14138 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14139 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14140 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14141 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14142 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14143 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14145 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14146 ucrtlibpath_formatted=$formatted_path
14147 ILIB="$ILIB;$ucrtlibpath_formatted"
14148 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14149 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14150 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14152 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14155 if test "$cross_compiling" != "yes"; then
14156 ILIB_FOR_BUILD="$ILIB"
14160 AC_SUBST(ILIB_FOR_BUILD)
14162 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14163 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14164 dnl from consteval constructor initializing const variable",
14165 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14166 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14167 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14168 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14169 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14170 dnl constructor in ternary expression (/std:c++latest)":
14171 AC_LANG_PUSH([C++])
14173 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14174 CXX="env LIB=$ILIB $CXX"
14176 save_CXXFLAGS=$CXXFLAGS
14177 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14178 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14180 consteval S() { i = 1; }
14185 struct S1 { consteval S1(int) {} };
14200 struct S4 { consteval S4() = default; };
14201 void f4(bool b) { b ? S4() : S4(); }
14203 return (s.i == 1) ? 0 : 1;
14205 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14206 AC_MSG_RESULT([yes])
14207 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14209 CXXFLAGS=$save_CXXFLAGS
14212 # ===================================================================
14213 # Creating bigger shared library to link against
14214 # ===================================================================
14215 AC_MSG_CHECKING([whether to create huge library])
14218 if test $_os = iOS -o $_os = Android; then
14219 # Never any point in mergelibs for these as we build just static
14220 # libraries anyway...
14221 enable_mergelibs=no
14224 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14225 if test $_os != Linux -a $_os != WINNT; then
14226 add_warning "--enable-mergelibs is not tested for this platform"
14229 AC_MSG_RESULT([yes])
14230 AC_DEFINE(ENABLE_MERGELIBS)
14232 AC_MSG_RESULT([no])
14234 AC_SUBST([MERGELIBS])
14236 dnl ===================================================================
14237 dnl icerun is a wrapper that stops us spawning tens of processes
14238 dnl locally - for tools that can't be executed on the compile cluster
14239 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14240 dnl ===================================================================
14241 AC_MSG_CHECKING([whether to use icerun wrapper])
14243 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14244 ICECREAM_RUN=icerun
14245 AC_MSG_RESULT([yes])
14247 AC_MSG_RESULT([no])
14249 AC_SUBST(ICECREAM_RUN)
14251 dnl ===================================================================
14252 dnl Setup the ICECC_VERSION for the build the same way it was set for
14253 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14254 dnl ===================================================================
14255 x_ICECC_VERSION=[\#]
14256 if test -n "$ICECC_VERSION" ; then
14259 AC_SUBST(x_ICECC_VERSION)
14260 AC_SUBST(ICECC_VERSION)
14262 dnl ===================================================================
14264 AC_MSG_CHECKING([MPL subset])
14267 if test "$enable_mpl_subset" = "yes"; then
14269 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14271 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14274 if test "$warn_report" = "true"; then
14275 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14277 if test "x$enable_postgresql_sdbc" != "xno"; then
14278 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14280 if test "$enable_lotuswordpro" = "yes"; then
14281 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14283 if test -n "$ENABLE_POPPLER"; then
14284 if test "x$SYSTEM_POPPLER" = "x"; then
14285 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14288 # cf. m4/libo_check_extension.m4
14289 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14290 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14292 for theme in $WITH_THEMES; do
14294 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14295 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14300 ENABLE_OPENGL_TRANSITIONS=
14302 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14303 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14307 AC_DEFINE(MPL_HAVE_SUBSET)
14308 AC_MSG_RESULT([only])
14310 AC_MSG_RESULT([no restrictions])
14312 AC_SUBST(MPL_SUBSET)
14314 dnl ===================================================================
14316 AC_MSG_CHECKING([formula logger])
14317 ENABLE_FORMULA_LOGGER=
14319 if test "x$enable_formula_logger" = "xyes"; then
14320 AC_MSG_RESULT([yes])
14321 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14322 ENABLE_FORMULA_LOGGER=TRUE
14323 elif test -n "$ENABLE_DBGUTIL" ; then
14324 AC_MSG_RESULT([yes])
14325 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14326 ENABLE_FORMULA_LOGGER=TRUE
14328 AC_MSG_RESULT([no])
14331 AC_SUBST(ENABLE_FORMULA_LOGGER)
14333 dnl ===================================================================
14334 dnl Checking for active Antivirus software.
14335 dnl ===================================================================
14337 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14338 AC_MSG_CHECKING([for active Antivirus software])
14339 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14340 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14341 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14342 AC_MSG_RESULT([found])
14343 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14344 echo $EICAR_STRING > $SRC_ROOT/eicar
14345 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14347 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14348 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14350 echo $EICAR_STRING > $BUILDDIR/eicar
14351 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14353 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14354 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14356 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"
14358 AC_MSG_RESULT([not found])
14361 AC_MSG_RESULT([n/a])
14365 dnl ===================================================================
14366 dnl Setting up the environment.
14367 dnl ===================================================================
14368 AC_MSG_NOTICE([setting up the build environment variables...])
14372 if test "$build_os" = "cygwin"; then
14373 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14374 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14375 ATL_INCLUDE="$COMPATH/atlmfc/include"
14376 elif test -d "$COMPATH/atlmfc/lib"; then
14377 ATL_LIB="$COMPATH/atlmfc/lib"
14378 ATL_INCLUDE="$COMPATH/atlmfc/include"
14380 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14381 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14383 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14384 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14385 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14387 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14388 PathFormat "/usr/bin/find.exe"
14389 FIND="$formatted_path"
14390 PathFormat "/usr/bin/sort.exe"
14391 SORT="$formatted_path"
14392 PathFormat "/usr/bin/grep.exe"
14393 WIN_GREP="$formatted_path"
14394 PathFormat "/usr/bin/ls.exe"
14395 WIN_LS="$formatted_path"
14396 PathFormat "/usr/bin/touch.exe"
14397 WIN_TOUCH="$formatted_path"
14403 AC_SUBST(ATL_INCLUDE)
14409 AC_SUBST(WIN_TOUCH)
14411 AC_SUBST(BUILD_TYPE)
14416 PERL="$formatted_path"
14419 if test -n "$TMPDIR"; then
14420 TEMP_DIRECTORY="$TMPDIR"
14422 TEMP_DIRECTORY="/tmp"
14424 if test "$build_os" = "cygwin"; then
14425 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14427 AC_SUBST(TEMP_DIRECTORY)
14429 # setup the PATH for the environment
14430 if test -n "$LO_PATH_FOR_BUILD"; then
14431 LO_PATH="$LO_PATH_FOR_BUILD"
14434 pathmunge "$MSVC_HOST_PATH" "before"
14442 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14443 if test "$ENABLE_JAVA" != ""; then
14444 pathmunge "$JAVA_HOME/bin" "after"
14449 # Win32 make needs native paths
14450 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14451 LO_PATH=`cygpath -p -m "$PATH"`
14453 if test "$WIN_BUILD_ARCH" = "x64"; then
14454 # needed for msi packaging
14455 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14457 # .NET 4.6 and higher don't have bin directory
14458 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14459 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14461 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14462 pathmunge "$CSC_PATH" "before"
14463 pathmunge "$MIDL_PATH" "before"
14464 pathmunge "$AL_PATH" "before"
14465 pathmunge "$MSVC_MULTI_PATH" "before"
14466 pathmunge "$MSVC_BUILD_PATH" "before"
14467 if test -n "$MSBUILD_PATH" ; then
14468 pathmunge "$MSBUILD_PATH" "before"
14470 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14471 if test "$ENABLE_JAVA" != ""; then
14472 if test -d "$JAVA_HOME/jre/bin/client"; then
14473 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14475 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14476 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14478 pathmunge "$JAVA_HOME/bin" "before"
14480 pathmunge "$MSVC_HOST_PATH" "before"
14484 pathmunge "/usr/css/bin" "before"
14485 if test "$ENABLE_JAVA" != ""; then
14486 pathmunge "$JAVA_HOME/bin" "after"
14494 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14495 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14496 x_LO_ELFCHECK_ALLOWLIST=
14498 x_LO_ELFCHECK_ALLOWLIST=[\#]
14500 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14501 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14505 # Generate a configuration sha256 we can use for deps
14506 if test -f config_host.mk; then
14507 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14509 if test -f config_host_lang.mk; then
14510 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14513 CFLAGS=$my_original_CFLAGS
14514 CXXFLAGS=$my_original_CXXFLAGS
14515 CPPFLAGS=$my_original_CPPFLAGS
14517 AC_CONFIG_LINKS([include:include])
14519 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14520 # BUILD platform configuration] - otherwise breaks cross building
14521 AC_CONFIG_FILES([config_host.mk
14522 config_host_lang.mk
14524 bin/bffvalidator.sh
14525 bin/odfvalidator.sh
14527 hardened_runtime.xcent
14528 instsetoo_native/util/openoffice.lst
14529 sysui/desktop/macosx/Info.plist
14530 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14531 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14532 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14533 AC_CONFIG_HEADERS([config_host/config_clang.h])
14534 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14535 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14536 AC_CONFIG_HEADERS([config_host/config_eot.h])
14537 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14538 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14539 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14540 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14541 AC_CONFIG_HEADERS([config_host/config_features.h])
14542 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14543 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14544 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14545 AC_CONFIG_HEADERS([config_host/config_folders.h])
14546 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14547 AC_CONFIG_HEADERS([config_host/config_gio.h])
14548 AC_CONFIG_HEADERS([config_host/config_global.h])
14549 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14550 AC_CONFIG_HEADERS([config_host/config_java.h])
14551 AC_CONFIG_HEADERS([config_host/config_langs.h])
14552 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14553 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14554 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14555 AC_CONFIG_HEADERS([config_host/config_locales.h])
14556 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14557 AC_CONFIG_HEADERS([config_host/config_oox.h])
14558 AC_CONFIG_HEADERS([config_host/config_options.h])
14559 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14560 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14561 AC_CONFIG_HEADERS([config_host/config_skia.h])
14562 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14563 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14564 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14565 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14566 AC_CONFIG_HEADERS([config_host/config_version.h])
14567 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14568 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14569 AC_CONFIG_HEADERS([config_host/config_python.h])
14570 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14571 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14574 if test "$CROSS_COMPILING" = TRUE; then
14575 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14578 # touch the config timestamp file
14579 if test ! -f config_host.mk.stamp; then
14580 echo > config_host.mk.stamp
14581 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14582 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14584 echo > config_host.mk.stamp
14587 # touch the config lang timestamp file
14588 if test ! -f config_host_lang.mk.stamp; then
14589 echo > config_host_lang.mk.stamp
14590 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14591 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14593 echo > config_host_lang.mk.stamp
14597 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14598 -a "$build_os" = "cygwin"; then
14601 ****************************************************************************
14603 Your make version is known to be horribly slow, and hard to debug
14604 problems with. To get a reasonably functional make please do:
14606 to install a pre-compiled binary make for Win32
14608 mkdir -p /opt/lo/bin
14610 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14611 cp make-4.2.1-msvc.exe make
14614 to install from source:
14615 place yourself in a working directory of you choice.
14617 git clone git://git.savannah.gnu.org/make.git
14619 [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14620 set PATH=%PATH%;C:\Cygwin\bin
14621 [or Cygwin64, if that is what you have]
14622 cd path-to-make-repo-you-cloned-above
14623 build_w32.bat --without-guile
14625 should result in a WinRel/gnumake.exe.
14626 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14628 Then re-run autogen.sh
14630 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14631 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14634 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14635 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14641 ****************************************************************************
14646 To view some help, run:
14651 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14653 After the build has finished successfully, you can immediately run what you built using the command:
14656 if test $_os = Darwin; then
14657 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14659 echo instdir/program/soffice
14663 If you want to run the smoketest, run:
14669 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14670 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14671 cat "$WARNINGS_FILE_FOR_BUILD"
14675 if test -s "$WARNINGS_FILE"; then
14676 echo "HOST config ($WARNINGS_FILE)"
14677 cat "$WARNINGS_FILE"
14680 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: