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.3.0.0.beta1+],[],[],[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
920 if test "$host_cpu" = "aarch64"; then
924 enable_firebird_sdbc=no
928 darwin*|macos*) # macOS
929 using_freetype_fontconfig=no
932 if test -n "$LODE_HOME" ; then
934 AC_MSG_NOTICE([sanitized the PATH to $PATH])
937 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938 INSTROOTCONTENTSUFFIX=/Contents
939 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940 # See comment above the case "$host_os"
941 LINKFLAGSSHL="-dynamiclib -single_module"
948 # -undefined error is the default
954 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955 # the "macos" part so be sure to use aarch64-apple-darwin for now.
956 HOST_PLATFORM=aarch64-apple-darwin
960 # Apple's Clang uses "arm64"
961 host_cpu_for_clang=arm64
966 using_freetype_fontconfig=no
973 if test -n "$LODE_HOME" ; then
975 AC_MSG_NOTICE([sanitized the PATH to $PATH])
979 enable_mpl_subset=yes
980 enable_lotuswordpro=no
981 disable_database_connectivity_dependencies
984 enable_extension_integration=no
987 if test "$enable_ios_simulator" = "yes"; then
988 host=x86_64-apple-darwin
990 # See comment above the case "$host_os"
991 LINKFLAGSSHL="-dynamiclib -single_module"
998 # -undefined error is the default
1001 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002 # part, so use aarch64-apple-darwin for now.
1003 HOST_PLATFORM=aarch64-apple-darwin
1005 # Apple's Clang uses "arm64"
1006 host_cpu_for_clang=arm64
1010 using_freetype_fontconfig=yes
1013 AC_MSG_CHECKING([the FreeBSD operating system release])
1014 if test -n "$with_os_version"; then
1015 OSVERSION="$with_os_version"
1017 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1019 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020 AC_MSG_CHECKING([which thread library to use])
1021 if test "$OSVERSION" -lt "500016"; then
1022 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023 PTHREAD_LIBS="-pthread"
1024 elif test "$OSVERSION" -lt "502102"; then
1025 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026 PTHREAD_LIBS="-lc_r"
1029 PTHREAD_LIBS="-pthread"
1031 AC_MSG_RESULT([$PTHREAD_LIBS])
1036 using_freetype_fontconfig=yes
1040 PTHREAD_LIBS="-pthread -lpthread"
1045 using_freetype_fontconfig=yes
1048 test_gstreamer_1_0=no
1049 PTHREAD_LIBS=-pthread
1054 using_freetype_fontconfig=yes
1056 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057 PTHREAD_LIBS="-pthread"
1062 using_freetype_fontconfig=yes
1065 PTHREAD_LIBS="-pthread"
1070 using_freetype_fontconfig=yes
1071 using_headless_plugin=no
1075 test_system_freetype=no
1077 disable_database_connectivity_dependencies
1078 enable_lotuswordpro=no
1079 enable_mpl_subset=yes
1080 enable_cairo_canvas=no
1088 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1092 using_freetype_fontconfig=yes
1100 enable_postgresql_sdbc=no
1101 enable_firebird_sdbc=no
1106 using_freetype_fontconfig=yes
1109 enable_compiler_plugins=no
1112 enable_database_connectivity=no
1121 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1161 test_gstreamer_1_0=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175 if test "$using_headless_plugin" = yes; then
1176 AC_DEFINE(ENABLE_HEADLESS)
1177 ENABLE_HEADLESS=TRUE
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195 # Verify that the NDK and SDK options are proper
1196 if test -z "$with_android_ndk"; then
1197 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1202 if test -z "$ANDROID_SDK_HOME"; then
1203 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1208 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1217 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218 AC_MSG_WARN([android support repository not found - install with
1219 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220 to allow the build to download the specified version of the android support libraries])
1221 add_warning "android support repository not found - install with"
1222 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223 add_warning "to allow the build to download the specified version of the android support libraries"
1227 if test "$_os" = "AIX"; then
1228 AC_PATH_PROG(GAWK, gawk)
1229 if test -z "$GAWK"; then
1230 AC_MSG_ERROR([gawk not found in \$PATH])
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244 AC_MSG_RESULT([$AFLAGS])
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252 AC_MSG_RESULT([$CFLAGS])
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260 AC_MSG_RESULT([$CXXFLAGS])
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268 AC_MSG_RESULT([$OBJCFLAGS])
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276 AC_MSG_RESULT([$OBJCXXFLAGS])
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284 AC_MSG_RESULT([$LDFLAGS])
1294 AC_SUBST(OBJCXXFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1316 if test -z "$CC_BASE"; then
1317 CC_BASE=`first_arg_basename "$CC"`
1321 if test "$_os" != "WINNT"; then
1322 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1330 AC_SEARCH_LIBS([dlsym], [dl],
1331 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1335 AC_SUBST(DLOPEN_LIBS)
1337 dnl ===================================================================
1338 dnl Sanity checks for Emscripten SDK setup
1339 dnl ===================================================================
1341 if test "$_os" = "Emscripten"; then
1343 if ! which emconfigure >/dev/null 2>&1; then
1344 AC_MSG_WARN([emconfigure must be in your \$PATH])
1347 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1348 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1351 if test $EMSCRIPTEN_ERROR -ne 0; then
1352 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1356 ###############################################################################
1357 # Extensions switches --enable/--disable
1358 ###############################################################################
1359 # By default these should be enabled unless having extra dependencies.
1360 # If there is extra dependency over configure options then the enable should
1361 # be automagic based on whether the requiring feature is enabled or not.
1362 # All this options change anything only with --enable-extension-integration.
1364 # The name of this option and its help string makes it sound as if
1365 # extensions are built anyway, just not integrated in the installer,
1366 # if you use --disable-extension-integration. Is that really the
1369 AC_ARG_ENABLE(ios-simulator,
1370 AS_HELP_STRING([--enable-ios-simulator],
1371 [build for iOS simulator])
1374 libo_FUZZ_ARG_ENABLE(extension-integration,
1375 AS_HELP_STRING([--disable-extension-integration],
1376 [Disable integration of the built extensions in the installer of the
1377 product. Use this switch to disable the integration.])
1380 AC_ARG_ENABLE(avmedia,
1381 AS_HELP_STRING([--disable-avmedia],
1382 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1385 AC_ARG_ENABLE(database-connectivity,
1386 AS_HELP_STRING([--disable-database-connectivity],
1387 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1390 # This doesn't mean not building (or "integrating") extensions
1391 # (although it probably should; i.e. it should imply
1392 # --disable-extension-integration I guess), it means not supporting
1393 # any extension mechanism at all
1394 libo_FUZZ_ARG_ENABLE(extensions,
1395 AS_HELP_STRING([--disable-extensions],
1396 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(scripting,
1400 AS_HELP_STRING([--disable-scripting],
1401 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1404 # This is mainly for Android and iOS, but could potentially be used in some
1405 # special case otherwise, too, so factored out as a separate setting
1407 AC_ARG_ENABLE(dynamic-loading,
1408 AS_HELP_STRING([--disable-dynamic-loading],
1409 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1412 libo_FUZZ_ARG_ENABLE(report-builder,
1413 AS_HELP_STRING([--disable-report-builder],
1414 [Disable the Report Builder.])
1417 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1418 AS_HELP_STRING([--enable-ext-wiki-publisher],
1419 [Enable the Wiki Publisher extension.])
1422 libo_FUZZ_ARG_ENABLE(lpsolve,
1423 AS_HELP_STRING([--disable-lpsolve],
1424 [Disable compilation of the lp solve solver ])
1426 libo_FUZZ_ARG_ENABLE(coinmp,
1427 AS_HELP_STRING([--disable-coinmp],
1428 [Disable compilation of the CoinMP solver ])
1431 libo_FUZZ_ARG_ENABLE(pdfimport,
1432 AS_HELP_STRING([--disable-pdfimport],
1433 [Disable building the PDF import feature.])
1436 libo_FUZZ_ARG_ENABLE(pdfium,
1437 AS_HELP_STRING([--disable-pdfium],
1438 [Disable building PDFium. Results in unsecure PDF signature verification.])
1441 libo_FUZZ_ARG_ENABLE(skia,
1442 AS_HELP_STRING([--disable-skia],
1443 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1446 ###############################################################################
1448 dnl ---------- *** ----------
1450 libo_FUZZ_ARG_ENABLE(mergelibs,
1451 AS_HELP_STRING([--enable-mergelibs],
1452 [Merge several of the smaller libraries into one big, "merged", one.])
1455 libo_FUZZ_ARG_ENABLE(breakpad,
1456 AS_HELP_STRING([--enable-breakpad],
1457 [Enables breakpad for crash reporting.])
1460 libo_FUZZ_ARG_ENABLE(crashdump,
1461 AS_HELP_STRING([--disable-crashdump],
1462 [Disable dump.ini and dump-file, when --enable-breakpad])
1465 AC_ARG_ENABLE(fetch-external,
1466 AS_HELP_STRING([--disable-fetch-external],
1467 [Disables fetching external tarballs from web sources.])
1470 AC_ARG_ENABLE(fuzzers,
1471 AS_HELP_STRING([--enable-fuzzers],
1472 [Enables building libfuzzer targets for fuzz testing.])
1475 libo_FUZZ_ARG_ENABLE(pch,
1476 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1477 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1478 Using 'system' will include only external headers, 'base' will add also headers
1479 from base modules, 'normal' will also add all headers except from the module built,
1480 'full' will use all suitable headers even from a module itself.])
1483 libo_FUZZ_ARG_ENABLE(epm,
1484 AS_HELP_STRING([--enable-epm],
1485 [LibreOffice includes self-packaging code, that requires epm, however epm is
1486 useless for large scale package building.])
1489 libo_FUZZ_ARG_ENABLE(odk,
1490 AS_HELP_STRING([--enable-odk],
1491 [Enable building the Office Development Kit, the part that extensions need to build against])
1494 AC_ARG_ENABLE(mpl-subset,
1495 AS_HELP_STRING([--enable-mpl-subset],
1496 [Don't compile any pieces which are not MPL or more liberally licensed])
1499 libo_FUZZ_ARG_ENABLE(evolution2,
1500 AS_HELP_STRING([--enable-evolution2],
1501 [Allows the built-in evolution 2 addressbook connectivity build to be
1505 AC_ARG_ENABLE(avahi,
1506 AS_HELP_STRING([--enable-avahi],
1507 [Determines whether to use Avahi to advertise Impress to remote controls.])
1510 libo_FUZZ_ARG_ENABLE(werror,
1511 AS_HELP_STRING([--enable-werror],
1512 [Turn warnings to errors. (Has no effect in modules where the treating
1513 of warnings as errors is disabled explicitly.)]),
1516 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1517 AS_HELP_STRING([--enable-assert-always-abort],
1518 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1521 libo_FUZZ_ARG_ENABLE(dbgutil,
1522 AS_HELP_STRING([--enable-dbgutil],
1523 [Provide debugging support from --enable-debug and include additional debugging
1524 utilities such as object counting or more expensive checks.
1525 This is the recommended option for developers.
1526 Note that this makes the build ABI incompatible, it is not possible to mix object
1527 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1529 libo_FUZZ_ARG_ENABLE(debug,
1530 AS_HELP_STRING([--enable-debug],
1531 [Include debugging information, disable compiler optimization and inlining plus
1532 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1534 libo_FUZZ_ARG_ENABLE(split-debug,
1535 AS_HELP_STRING([--disable-split-debug],
1536 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1537 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1539 libo_FUZZ_ARG_ENABLE(gdb-index,
1540 AS_HELP_STRING([--disable-gdb-index],
1541 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1542 The feature requires the gold or lld linker.]))
1544 libo_FUZZ_ARG_ENABLE(sal-log,
1545 AS_HELP_STRING([--enable-sal-log],
1546 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1548 libo_FUZZ_ARG_ENABLE(symbols,
1549 AS_HELP_STRING([--enable-symbols],
1550 [Generate debug information.
1551 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1552 otherwise. It is possible to explicitly specify gbuild build targets
1553 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1554 everything in the directory; there is no ordering, more specific overrides
1555 more general, and disabling takes precedence).
1556 Example: --enable-symbols="all -sw/ -Library_sc".]))
1558 libo_FUZZ_ARG_ENABLE(optimized,
1559 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1560 [Whether to compile with optimization flags.
1561 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1562 otherwise. Using 'debug' will try to use only optimizations that should
1563 not interfere with debugging. For Emscripten we default to optimized (-O1)
1564 debug build, as otherwise binaries become too large.]))
1566 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1567 AS_HELP_STRING([--disable-runtime-optimizations],
1568 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1569 JVM JIT) that are known to interact badly with certain dynamic analysis
1570 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1571 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1572 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1574 AC_ARG_WITH(valgrind,
1575 AS_HELP_STRING([--with-valgrind],
1576 [Make availability of Valgrind headers a hard requirement.]))
1578 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1579 AS_HELP_STRING([--enable-compiler-plugins],
1580 [Enable compiler plugins that will perform additional checks during
1581 building. Enabled automatically by --enable-dbgutil.
1582 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1583 COMPILER_PLUGINS_DEBUG=
1584 if test "$enable_compiler_plugins" = debug; then
1585 enable_compiler_plugins=yes
1586 COMPILER_PLUGINS_DEBUG=TRUE
1589 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1590 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1591 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1592 relevant in the --disable-compiler-plugins case.]))
1594 libo_FUZZ_ARG_ENABLE(ooenv,
1595 AS_HELP_STRING([--enable-ooenv],
1596 [Enable ooenv for the instdir installation.]))
1599 AS_HELP_STRING([--enable-lto],
1600 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1601 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1604 AC_ARG_ENABLE(python,
1605 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1606 [Enables or disables Python support at run-time.
1607 Also specifies what Python to use at build-time.
1608 'fully-internal' even forces the internal version for uses of Python
1610 On macOS the only choices are
1611 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1614 libo_FUZZ_ARG_ENABLE(gtk3,
1615 AS_HELP_STRING([--disable-gtk3],
1616 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1617 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1620 AS_HELP_STRING([--enable-gtk4],
1621 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1623 AC_ARG_ENABLE(introspection,
1624 AS_HELP_STRING([--enable-introspection],
1625 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1626 Linux distributions.)]))
1628 AC_ARG_ENABLE(split-app-modules,
1629 AS_HELP_STRING([--enable-split-app-modules],
1630 [Split file lists for app modules, e.g. base, calc.
1631 Has effect only with make distro-pack-install]),
1634 AC_ARG_ENABLE(split-opt-features,
1635 AS_HELP_STRING([--enable-split-opt-features],
1636 [Split file lists for some optional features, e.g. pyuno, testtool.
1637 Has effect only with make distro-pack-install]),
1640 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1641 AS_HELP_STRING([--disable-cairo-canvas],
1642 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1645 libo_FUZZ_ARG_ENABLE(dbus,
1646 AS_HELP_STRING([--disable-dbus],
1647 [Determines whether to enable features that depend on dbus.
1648 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1649 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1651 libo_FUZZ_ARG_ENABLE(sdremote,
1652 AS_HELP_STRING([--disable-sdremote],
1653 [Determines whether to enable Impress remote control (i.e. the server component).]),
1654 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1656 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1657 AS_HELP_STRING([--disable-sdremote-bluetooth],
1658 [Determines whether to build sdremote with bluetooth support.
1659 Requires dbus on Linux.]))
1661 libo_FUZZ_ARG_ENABLE(gio,
1662 AS_HELP_STRING([--disable-gio],
1663 [Determines whether to use the GIO support.]),
1664 ,test "${enable_gio+set}" = set || enable_gio=yes)
1667 AS_HELP_STRING([--enable-qt5],
1668 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1673 AS_HELP_STRING([--enable-qt6],
1674 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1679 AS_HELP_STRING([--enable-kf5],
1680 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1681 KF5 are available.]),
1684 AC_ARG_ENABLE(gtk3_kde5,
1685 AS_HELP_STRING([--enable-gtk3-kde5],
1686 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1687 platforms where Gtk3, Qt5 and Plasma is available.]),
1691 AS_HELP_STRING([--disable-gui],
1692 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1695 libo_FUZZ_ARG_ENABLE(randr,
1696 AS_HELP_STRING([--disable-randr],
1697 [Disable RandR support in the vcl project.]),
1698 ,test "${enable_randr+set}" = set || enable_randr=yes)
1700 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1701 AS_HELP_STRING([--disable-gstreamer-1-0],
1702 [Disable building with the gstreamer 1.0 avmedia backend.]),
1703 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1705 libo_FUZZ_ARG_ENABLE([eot],
1706 [AS_HELP_STRING([--enable-eot],
1707 [Enable support for Embedded OpenType fonts.])],
1708 ,test "${enable_eot+set}" = set || enable_eot=no)
1710 libo_FUZZ_ARG_ENABLE(cve-tests,
1711 AS_HELP_STRING([--disable-cve-tests],
1712 [Prevent CVE tests to be executed]),
1715 libo_FUZZ_ARG_ENABLE(chart-tests,
1716 AS_HELP_STRING([--enable-chart-tests],
1717 [Executes chart XShape tests. In a perfect world these tests would be
1718 stable and everyone could run them, in reality it is best to run them
1719 only on a few machines that are known to work and maintained by people
1720 who can judge if a test failure is a regression or not.]),
1723 AC_ARG_ENABLE(build-opensymbol,
1724 AS_HELP_STRING([--enable-build-opensymbol],
1725 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1726 fontforge installed.]),
1729 AC_ARG_ENABLE(dependency-tracking,
1730 AS_HELP_STRING([--enable-dependency-tracking],
1731 [Do not reject slow dependency extractors.])[
1732 --disable-dependency-tracking
1733 Disables generation of dependency information.
1734 Speed up one-time builds.],
1737 AC_ARG_ENABLE(icecream,
1738 AS_HELP_STRING([--enable-icecream],
1739 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1740 It defaults to /opt/icecream for the location of the icecream gcc/g++
1741 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1745 AS_HELP_STRING([--enable-ld=<linker>],
1746 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1747 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1748 If <linker> contains any ':', the part before the first ':' is used as the value of
1749 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1750 needed for Clang 12).]),
1753 libo_FUZZ_ARG_ENABLE(cups,
1754 AS_HELP_STRING([--disable-cups],
1755 [Do not build cups support.])
1758 AC_ARG_ENABLE(ccache,
1759 AS_HELP_STRING([--disable-ccache],
1760 [Do not try to use ccache automatically.
1761 By default we will try to detect if ccache is available; in that case if
1762 CC/CXX are not yet set, and --enable-icecream is not given, we
1763 attempt to use ccache. --disable-ccache disables ccache completely.
1764 Additionally ccache's depend mode is enabled if possible,
1765 use --enable-ccache=nodepend to enable ccache without depend mode.
1769 AC_ARG_ENABLE(z7-debug,
1770 AS_HELP_STRING([--enable-z7-debug],
1771 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1772 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1773 Enabled by default if ccache is detected.]))
1775 libo_FUZZ_ARG_ENABLE(online-update,
1776 AS_HELP_STRING([--enable-online-update],
1777 [Enable the online update service that will check for new versions of
1778 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1779 If the value is "mar", the experimental Mozilla-like update will be
1780 enabled instead of the traditional update mechanism.]),
1783 AC_ARG_WITH(update-config,
1784 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1785 [Path to the update config ini file]))
1787 libo_FUZZ_ARG_ENABLE(extension-update,
1788 AS_HELP_STRING([--disable-extension-update],
1789 [Disable possibility to update installed extensions.]),
1792 libo_FUZZ_ARG_ENABLE(release-build,
1793 AS_HELP_STRING([--enable-release-build],
1794 [Enable release build. Note that the "release build" choice is orthogonal to
1795 whether symbols are present, debug info is generated, or optimization
1797 See http://wiki.documentfoundation.org/Development/DevBuild]),
1800 AC_ARG_ENABLE(windows-build-signing,
1801 AS_HELP_STRING([--enable-windows-build-signing],
1802 [Enable signing of windows binaries (*.exe, *.dll)]),
1805 AC_ARG_ENABLE(silent-msi,
1806 AS_HELP_STRING([--enable-silent-msi],
1807 [Enable MSI with LIMITUI=1 (silent install).]),
1810 AC_ARG_ENABLE(macosx-code-signing,
1811 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1812 [Sign executables, dylibs, frameworks and the app bundle. If you
1813 don't provide an identity the first suitable certificate
1814 in your keychain is used.]),
1817 AC_ARG_ENABLE(macosx-package-signing,
1818 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1819 [Create a .pkg suitable for uploading to the Mac App Store and sign
1820 it. If you don't provide an identity the first suitable certificate
1821 in your keychain is used.]),
1824 AC_ARG_ENABLE(macosx-sandbox,
1825 AS_HELP_STRING([--enable-macosx-sandbox],
1826 [Make the app bundle run in a sandbox. Requires code signing.
1827 Is required by apps distributed in the Mac App Store, and implies
1828 adherence to App Store rules.]),
1831 AC_ARG_WITH(macosx-bundle-identifier,
1832 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1833 [Define the macOS bundle identifier. Default is the somewhat weird
1834 org.libreoffice.script ("script", huh?).]),
1835 ,with_macosx_bundle_identifier=org.libreoffice.script)
1837 AC_ARG_WITH(product-name,
1838 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1839 [Define the product name. Default is AC_PACKAGE_NAME.]),
1840 ,with_product_name=$PRODUCTNAME)
1842 libo_FUZZ_ARG_ENABLE(community-flavor,
1843 AS_HELP_STRING([--disable-community-flavor],
1844 [Disable the Community branding.]),
1847 AC_ARG_WITH(package-version,
1848 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1849 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1852 libo_FUZZ_ARG_ENABLE(readonly-installset,
1853 AS_HELP_STRING([--enable-readonly-installset],
1854 [Prevents any attempts by LibreOffice to write into its installation. That means
1855 at least that no "system-wide" extensions can be added. Partly experimental work in
1856 progress, probably not fully implemented. Always enabled for macOS.]),
1859 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1860 AS_HELP_STRING([--disable-mariadb-sdbc],
1861 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1864 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1865 AS_HELP_STRING([--disable-postgresql-sdbc],
1866 [Disable the build of the PostgreSQL-SDBC driver.])
1869 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1870 AS_HELP_STRING([--disable-lotuswordpro],
1871 [Disable the build of the Lotus Word Pro filter.]),
1872 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1874 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1875 AS_HELP_STRING([--disable-firebird-sdbc],
1876 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1877 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1879 AC_ARG_ENABLE(bogus-pkg-config,
1880 AS_HELP_STRING([--enable-bogus-pkg-config],
1881 [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.]),
1884 AC_ARG_ENABLE(openssl,
1885 AS_HELP_STRING([--disable-openssl],
1886 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1887 components will either use GNUTLS or NSS. Work in progress,
1888 use only if you are hacking on it.]),
1889 ,enable_openssl=yes)
1891 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1892 AS_HELP_STRING([--enable-cipher-openssl-backend],
1893 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1894 Requires --enable-openssl.]))
1897 AS_HELP_STRING([--disable-nss],
1898 [Disable using NSS. If disabled,
1899 components will either use GNUTLS or openssl. Work in progress,
1900 use only if you are hacking on it.]),
1903 AC_ARG_ENABLE(library-bin-tar,
1904 AS_HELP_STRING([--enable-library-bin-tar],
1905 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1906 Some libraries can save their build result in a tarball
1907 stored in TARFILE_LOCATION. That binary tarball is
1908 uniquely identified by the source tarball,
1909 the content of the config_host.mk file and the content
1910 of the top-level directory in core for that library
1911 If this option is enabled, then if such a tarfile exist, it will be untarred
1912 instead of the source tarfile, and the build step will be skipped for that
1914 If a proper tarfile does not exist, then the normal source-based
1915 build is done for that library and a proper binary tarfile is created
1916 for the next time.]),
1919 AC_ARG_ENABLE(dconf,
1920 AS_HELP_STRING([--disable-dconf],
1921 [Disable the dconf configuration backend (enabled by default where
1924 libo_FUZZ_ARG_ENABLE(formula-logger,
1926 [--enable-formula-logger],
1927 [Enable formula logger for logging formula calculation flow in Calc.]
1932 AS_HELP_STRING([--disable-ldap],
1933 [Disable LDAP support.]),
1936 AC_ARG_ENABLE(opencl,
1937 AS_HELP_STRING([--disable-opencl],
1938 [Disable OpenCL support.]),
1941 libo_FUZZ_ARG_ENABLE(librelogo,
1942 AS_HELP_STRING([--disable-librelogo],
1943 [Do not build LibreLogo.]),
1944 ,enable_librelogo=yes)
1947 AS_HELP_STRING([--disable-cmis],
1948 [Disable CMIS support.]),
1952 AS_HELP_STRING([--disable-curl],
1953 [Disable CURL support.]),
1956 AC_ARG_ENABLE(wasm-strip,
1957 AS_HELP_STRING([--enable-wasm-strip],
1958 [Strip the static build like for WASM/emscripten platform.]),
1959 ,enable_wasm_strip=yes)
1961 AC_ARG_ENABLE(xmlhelp,
1962 AS_HELP_STRING([--disable-xmlhelp],
1963 [Disable XML help support]),
1964 ,enable_xmlhelp=yes)
1967 dnl ===================================================================
1968 dnl Optional Packages (--with/without-)
1969 dnl ===================================================================
1971 AC_ARG_WITH(gcc-home,
1972 AS_HELP_STRING([--with-gcc-home],
1973 [Specify the location of gcc/g++ manually. This can be used in conjunction
1974 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1975 non-default path.]),
1978 AC_ARG_WITH(gnu-patch,
1979 AS_HELP_STRING([--with-gnu-patch],
1980 [Specify location of GNU patch on Solaris or FreeBSD.]),
1983 AC_ARG_WITH(build-platform-configure-options,
1984 AS_HELP_STRING([--with-build-platform-configure-options],
1985 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1989 AS_HELP_STRING([--with-gnu-cp],
1990 [Specify location of GNU cp on Solaris or FreeBSD.]),
1993 AC_ARG_WITH(external-tar,
1994 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1995 [Specify an absolute path of where to find (and store) tarfiles.]),
1996 TARFILE_LOCATION=$withval ,
1999 AC_ARG_WITH(referenced-git,
2000 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2001 [Specify another checkout directory to reference. This makes use of
2002 git submodule update --reference, and saves a lot of diskspace
2003 when having multiple trees side-by-side.]),
2004 GIT_REFERENCE_SRC=$withval ,
2007 AC_ARG_WITH(linked-git,
2008 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2009 [Specify a directory where the repositories of submodules are located.
2010 This uses a method similar to git-new-workdir to get submodules.]),
2011 GIT_LINK_SRC=$withval ,
2014 AC_ARG_WITH(galleries,
2015 AS_HELP_STRING([--with-galleries],
2016 [Specify how galleries should be built. It is possible either to
2017 build these internally from source ("build"),
2018 or to disable them ("no")]),
2022 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2023 [Choose which themes to include. By default those themes with an '*' are included.
2024 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2025 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2028 libo_FUZZ_ARG_WITH(helppack-integration,
2029 AS_HELP_STRING([--without-helppack-integration],
2030 [It will not integrate the helppacks to the installer
2031 of the product. Please use this switch to use the online help
2032 or separate help packages.]),
2035 libo_FUZZ_ARG_WITH(fonts,
2036 AS_HELP_STRING([--without-fonts],
2037 [LibreOffice includes some third-party fonts to provide a reliable basis for
2038 help content, templates, samples, etc. When these fonts are already
2039 known to be available on the system then you should use this option.]),
2043 AS_HELP_STRING([--with-epm],
2044 [Decides which epm to use. Default is to use the one from the system if
2045 one is built. When either this is not there or you say =internal epm
2049 AC_ARG_WITH(package-format,
2050 AS_HELP_STRING([--with-package-format],
2051 [Specify package format(s) for LibreOffice installation sets. The
2052 implicit --without-package-format leads to no installation sets being
2053 generated. Possible values: aix, archive, bsd, deb, dmg,
2054 installed, msi, pkg, and rpm.
2055 Example: --with-package-format='deb rpm']),
2059 AS_HELP_STRING([--with-tls],
2060 [Decides which TLS/SSL and cryptographic implementations to use for
2061 LibreOffice's code. Notice that this doesn't apply for depending
2062 libraries like "neon", for example. Default is to use NSS
2063 although OpenSSL is also possible. Notice that selecting NSS restricts
2064 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2065 restrict by now the usage of NSS in LO's code. Possible values:
2066 openssl, nss. Example: --with-tls="nss"]),
2069 AC_ARG_WITH(system-libs,
2070 AS_HELP_STRING([--with-system-libs],
2071 [Use libraries already on system -- enables all --with-system-* flags.]),
2074 AC_ARG_WITH(system-bzip2,
2075 AS_HELP_STRING([--with-system-bzip2],
2076 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2077 [with_system_bzip2="$with_system_libs"])
2079 AC_ARG_WITH(system-headers,
2080 AS_HELP_STRING([--with-system-headers],
2081 [Use headers already on system -- enables all --with-system-* flags for
2082 external packages whose headers are the only entities used i.e.
2083 boost/odbc/sane-header(s).]),,
2084 [with_system_headers="$with_system_libs"])
2086 AC_ARG_WITH(system-jars,
2087 AS_HELP_STRING([--without-system-jars],
2088 [When building with --with-system-libs, also the needed jars are expected
2089 on the system. Use this to disable that]),,
2090 [with_system_jars="$with_system_libs"])
2092 AC_ARG_WITH(system-cairo,
2093 AS_HELP_STRING([--with-system-cairo],
2094 [Use cairo libraries already on system. Happens automatically for
2095 (implicit) --enable-gtk3.]))
2097 AC_ARG_WITH(system-epoxy,
2098 AS_HELP_STRING([--with-system-epoxy],
2099 [Use epoxy libraries already on system. Happens automatically for
2100 (implicit) --enable-gtk3.]),,
2101 [with_system_epoxy="$with_system_libs"])
2103 AC_ARG_WITH(myspell-dicts,
2104 AS_HELP_STRING([--with-myspell-dicts],
2105 [Adds myspell dictionaries to the LibreOffice installation set]),
2108 AC_ARG_WITH(system-dicts,
2109 AS_HELP_STRING([--without-system-dicts],
2110 [Do not use dictionaries from system paths.]),
2113 AC_ARG_WITH(external-dict-dir,
2114 AS_HELP_STRING([--with-external-dict-dir],
2115 [Specify external dictionary dir.]),
2118 AC_ARG_WITH(external-hyph-dir,
2119 AS_HELP_STRING([--with-external-hyph-dir],
2120 [Specify external hyphenation pattern dir.]),
2123 AC_ARG_WITH(external-thes-dir,
2124 AS_HELP_STRING([--with-external-thes-dir],
2125 [Specify external thesaurus dir.]),
2128 AC_ARG_WITH(system-zlib,
2129 AS_HELP_STRING([--with-system-zlib],
2130 [Use zlib already on system.]),,
2131 [with_system_zlib=auto])
2133 AC_ARG_WITH(system-jpeg,
2134 AS_HELP_STRING([--with-system-jpeg],
2135 [Use jpeg already on system.]),,
2136 [with_system_jpeg="$with_system_libs"])
2138 AC_ARG_WITH(system-clucene,
2139 AS_HELP_STRING([--with-system-clucene],
2140 [Use clucene already on system.]),,
2141 [with_system_clucene="$with_system_libs"])
2143 AC_ARG_WITH(system-expat,
2144 AS_HELP_STRING([--with-system-expat],
2145 [Use expat already on system.]),,
2146 [with_system_expat="$with_system_libs"])
2148 AC_ARG_WITH(system-libxml,
2149 AS_HELP_STRING([--with-system-libxml],
2150 [Use libxml/libxslt already on system.]),,
2151 [with_system_libxml=auto])
2153 AC_ARG_WITH(system-icu,
2154 AS_HELP_STRING([--with-system-icu],
2155 [Use icu already on system.]),,
2156 [with_system_icu="$with_system_libs"])
2158 AC_ARG_WITH(system-ucpp,
2159 AS_HELP_STRING([--with-system-ucpp],
2160 [Use ucpp already on system.]),,
2163 AC_ARG_WITH(system-openldap,
2164 AS_HELP_STRING([--with-system-openldap],
2165 [Use the OpenLDAP LDAP SDK already on system.]),,
2166 [with_system_openldap="$with_system_libs"])
2168 libo_FUZZ_ARG_ENABLE(poppler,
2169 AS_HELP_STRING([--disable-poppler],
2170 [Disable building Poppler.])
2173 AC_ARG_WITH(system-poppler,
2174 AS_HELP_STRING([--with-system-poppler],
2175 [Use system poppler (only needed for PDF import).]),,
2176 [with_system_poppler="$with_system_libs"])
2178 AC_ARG_WITH(system-abseil,
2179 AS_HELP_STRING([--with-system-abseil],
2180 [Use the abseil libraries already on system.]),,
2181 [with_system_abseil="$with_system_libs"])
2183 AC_ARG_WITH(system-openjpeg,
2184 AS_HELP_STRING([--with-system-openjpeg],
2185 [Use the OpenJPEG library already on system.]),,
2186 [with_system_openjpeg="$with_system_libs"])
2188 libo_FUZZ_ARG_ENABLE(gpgmepp,
2189 AS_HELP_STRING([--disable-gpgmepp],
2190 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2193 AC_ARG_WITH(system-gpgmepp,
2194 AS_HELP_STRING([--with-system-gpgmepp],
2195 [Use gpgmepp already on system]),,
2196 [with_system_gpgmepp="$with_system_libs"])
2198 AC_ARG_WITH(system-mariadb,
2199 AS_HELP_STRING([--with-system-mariadb],
2200 [Use MariaDB/MySQL libraries already on system.]),,
2201 [with_system_mariadb="$with_system_libs"])
2203 AC_ARG_ENABLE(bundle-mariadb,
2204 AS_HELP_STRING([--enable-bundle-mariadb],
2205 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2208 AC_ARG_WITH(system-postgresql,
2209 AS_HELP_STRING([--with-system-postgresql],
2210 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2211 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2212 [with_system_postgresql="$with_system_libs"])
2214 AC_ARG_WITH(libpq-path,
2215 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2216 [Use this PostgreSQL C interface (libpq) installation for building
2217 the PostgreSQL-SDBC extension.]),
2220 AC_ARG_WITH(system-firebird,
2221 AS_HELP_STRING([--with-system-firebird],
2222 [Use Firebird libraries already on system, for building the Firebird-SDBC
2223 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2224 [with_system_firebird="$with_system_libs"])
2226 AC_ARG_WITH(system-libtommath,
2227 AS_HELP_STRING([--with-system-libtommath],
2228 [Use libtommath already on system]),,
2229 [with_system_libtommath="$with_system_libs"])
2231 AC_ARG_WITH(system-hsqldb,
2232 AS_HELP_STRING([--with-system-hsqldb],
2233 [Use hsqldb already on system.]))
2235 AC_ARG_WITH(hsqldb-jar,
2236 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2237 [Specify path to jarfile manually.]),
2238 HSQLDB_JAR=$withval)
2240 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2241 AS_HELP_STRING([--disable-scripting-beanshell],
2242 [Disable support for scripts in BeanShell.]),
2246 AC_ARG_WITH(system-beanshell,
2247 AS_HELP_STRING([--with-system-beanshell],
2248 [Use beanshell already on system.]),,
2249 [with_system_beanshell="$with_system_jars"])
2251 AC_ARG_WITH(beanshell-jar,
2252 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2253 [Specify path to jarfile manually.]),
2256 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2257 AS_HELP_STRING([--disable-scripting-javascript],
2258 [Disable support for scripts in JavaScript.]),
2262 AC_ARG_WITH(system-rhino,
2263 AS_HELP_STRING([--with-system-rhino],
2264 [Use rhino already on system.]),,)
2265 # [with_system_rhino="$with_system_jars"])
2266 # Above is not used as we have different debug interface
2267 # patched into internal rhino. This code needs to be fixed
2268 # before we can enable it by default.
2270 AC_ARG_WITH(rhino-jar,
2271 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2272 [Specify path to jarfile manually.]),
2275 AC_ARG_WITH(system-jfreereport,
2276 AS_HELP_STRING([--with-system-jfreereport],
2277 [Use JFreeReport already on system.]),,
2278 [with_system_jfreereport="$with_system_jars"])
2280 AC_ARG_WITH(sac-jar,
2281 AS_HELP_STRING([--with-sac-jar=JARFILE],
2282 [Specify path to jarfile manually.]),
2285 AC_ARG_WITH(libxml-jar,
2286 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2287 [Specify path to jarfile manually.]),
2288 LIBXML_JAR=$withval)
2290 AC_ARG_WITH(flute-jar,
2291 AS_HELP_STRING([--with-flute-jar=JARFILE],
2292 [Specify path to jarfile manually.]),
2295 AC_ARG_WITH(jfreereport-jar,
2296 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2297 [Specify path to jarfile manually.]),
2298 JFREEREPORT_JAR=$withval)
2300 AC_ARG_WITH(liblayout-jar,
2301 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2302 [Specify path to jarfile manually.]),
2303 LIBLAYOUT_JAR=$withval)
2305 AC_ARG_WITH(libloader-jar,
2306 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2307 [Specify path to jarfile manually.]),
2308 LIBLOADER_JAR=$withval)
2310 AC_ARG_WITH(libformula-jar,
2311 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2312 [Specify path to jarfile manually.]),
2313 LIBFORMULA_JAR=$withval)
2315 AC_ARG_WITH(librepository-jar,
2316 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2317 [Specify path to jarfile manually.]),
2318 LIBREPOSITORY_JAR=$withval)
2320 AC_ARG_WITH(libfonts-jar,
2321 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2322 [Specify path to jarfile manually.]),
2323 LIBFONTS_JAR=$withval)
2325 AC_ARG_WITH(libserializer-jar,
2326 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2327 [Specify path to jarfile manually.]),
2328 LIBSERIALIZER_JAR=$withval)
2330 AC_ARG_WITH(libbase-jar,
2331 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2332 [Specify path to jarfile manually.]),
2333 LIBBASE_JAR=$withval)
2335 AC_ARG_WITH(system-odbc,
2336 AS_HELP_STRING([--with-system-odbc],
2337 [Use the odbc headers already on system.]),,
2338 [with_system_odbc="auto"])
2340 AC_ARG_WITH(system-sane,
2341 AS_HELP_STRING([--with-system-sane],
2342 [Use sane.h already on system.]),,
2343 [with_system_sane="$with_system_headers"])
2345 AC_ARG_WITH(system-bluez,
2346 AS_HELP_STRING([--with-system-bluez],
2347 [Use bluetooth.h already on system.]),,
2348 [with_system_bluez="$with_system_headers"])
2350 AC_ARG_WITH(system-curl,
2351 AS_HELP_STRING([--with-system-curl],
2352 [Use curl already on system.]),,
2353 [with_system_curl=auto])
2355 AC_ARG_WITH(system-boost,
2356 AS_HELP_STRING([--with-system-boost],
2357 [Use boost already on system.]),,
2358 [with_system_boost="$with_system_headers"])
2360 AC_ARG_WITH(system-cuckoo,
2361 AS_HELP_STRING([--with-system-cuckoo],
2362 [Use libcuckoo already on system.]),,
2363 [with_system_cuckoo="$with_system_headers"])
2365 AC_ARG_WITH(system-glm,
2366 AS_HELP_STRING([--with-system-glm],
2367 [Use glm already on system.]),,
2368 [with_system_glm="$with_system_headers"])
2370 AC_ARG_WITH(system-hunspell,
2371 AS_HELP_STRING([--with-system-hunspell],
2372 [Use libhunspell already on system.]),,
2373 [with_system_hunspell="$with_system_libs"])
2375 libo_FUZZ_ARG_ENABLE(zxing,
2376 AS_HELP_STRING([--disable-zxing],
2377 [Disable use of zxing external library.]))
2379 AC_ARG_WITH(system-zxing,
2380 AS_HELP_STRING([--with-system-zxing],
2381 [Use libzxing already on system.]),,
2382 [with_system_zxing="$with_system_libs"])
2384 AC_ARG_WITH(system-box2d,
2385 AS_HELP_STRING([--with-system-box2d],
2386 [Use box2d already on system.]),,
2387 [with_system_box2d="$with_system_libs"])
2389 AC_ARG_WITH(system-mythes,
2390 AS_HELP_STRING([--with-system-mythes],
2391 [Use mythes already on system.]),,
2392 [with_system_mythes="$with_system_libs"])
2394 AC_ARG_WITH(system-altlinuxhyph,
2395 AS_HELP_STRING([--with-system-altlinuxhyph],
2396 [Use ALTLinuxhyph already on system.]),,
2397 [with_system_altlinuxhyph="$with_system_libs"])
2399 AC_ARG_WITH(system-lpsolve,
2400 AS_HELP_STRING([--with-system-lpsolve],
2401 [Use lpsolve already on system.]),,
2402 [with_system_lpsolve="$with_system_libs"])
2404 AC_ARG_WITH(system-coinmp,
2405 AS_HELP_STRING([--with-system-coinmp],
2406 [Use CoinMP already on system.]),,
2407 [with_system_coinmp="$with_system_libs"])
2409 AC_ARG_WITH(system-liblangtag,
2410 AS_HELP_STRING([--with-system-liblangtag],
2411 [Use liblangtag library already on system.]),,
2412 [with_system_liblangtag="$with_system_libs"])
2415 AS_HELP_STRING([--with-webdav],
2416 [Specify which library to use for webdav implementation.
2417 Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2418 Example: --with-webdav="serf"]))
2420 AC_ARG_WITH(linker-hash-style,
2421 AS_HELP_STRING([--with-linker-hash-style],
2422 [Use linker with --hash-style=<style> when linking shared objects.
2423 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2424 if supported on the build system, and "sysv" otherwise.]))
2426 AC_ARG_WITH(jdk-home,
2427 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2428 [If you have installed JDK 9 or later on your system please supply the
2429 path here. Note that this is not the location of the java command but the
2430 location of the entire distribution. In case of cross-compiling, this
2431 is the JDK of the host os. Use --with-build-platform-configure-options
2432 to point to a different build platform JDK.]),
2436 AS_HELP_STRING([--with-help],
2437 [Enable the build of help. There is a special parameter "common" that
2438 can be used to bundle only the common part, .e.g help-specific icons.
2439 This is useful when you build the helpcontent separately.])
2441 Usage: --with-help build the old local help
2442 --without-help no local help (default)
2443 --with-help=html build the new HTML local help
2444 --with-help=online build the new HTML online help
2448 AC_ARG_WITH(omindex,
2449 AS_HELP_STRING([--with-omindex],
2450 [Enable the support of xapian-omega index for online help.])
2452 Usage: --with-omindex=server prepare the pages for omindex
2453 but let xapian-omega be built in server.
2454 --with-omindex=noxap do not prepare online pages
2459 libo_FUZZ_ARG_WITH(java,
2460 AS_HELP_STRING([--with-java=<java command>],
2461 [Specify the name of the Java interpreter command. Typically "java"
2462 which is the default.
2464 To build without support for Java components, applets, accessibility
2465 or the XML filters written in Java, use --without-java or --with-java=no.]),
2466 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2467 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2470 AC_ARG_WITH(jvm-path,
2471 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2472 [Use a specific JVM search path at runtime.
2473 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2476 AC_ARG_WITH(ant-home,
2477 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2478 [If you have installed Apache Ant on your system, please supply the path here.
2479 Note that this is not the location of the Ant binary but the location
2480 of the entire distribution.]),
2483 AC_ARG_WITH(symbol-config,
2484 AS_HELP_STRING([--with-symbol-config],
2485 [Configuration for the crashreport symbol upload]),
2487 [with_symbol_config=no])
2489 AC_ARG_WITH(export-validation,
2490 AS_HELP_STRING([--without-export-validation],
2491 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2492 ,with_export_validation=auto)
2494 AC_ARG_WITH(bffvalidator,
2495 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2496 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2497 Requires installed Microsoft Office Binary File Format Validator.
2498 Note: export-validation (--with-export-validation) is required to be turned on.
2499 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2500 ,with_bffvalidator=no)
2502 libo_FUZZ_ARG_WITH(junit,
2503 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2504 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2505 --without-junit disables those tests. Not relevant in the --without-java case.]),
2508 AC_ARG_WITH(hamcrest,
2509 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2510 [Specifies the hamcrest jar file to use for JUnit-based tests.
2511 --without-junit disables those tests. Not relevant in the --without-java case.]),
2514 AC_ARG_WITH(perl-home,
2515 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2516 [If you have installed Perl 5 Distribution, on your system, please
2517 supply the path here. Note that this is not the location of the Perl
2518 binary but the location of the entire distribution.]),
2521 libo_FUZZ_ARG_WITH(doxygen,
2523 [--with-doxygen=<absolute path to doxygen executable>],
2524 [Specifies the doxygen executable to use when generating ODK C/C++
2525 documentation. --without-doxygen disables generation of ODK C/C++
2526 documentation. Not relevant in the --disable-odk case.]),
2529 AC_ARG_WITH(visual-studio,
2530 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2531 [Specify which Visual Studio version to use in case several are
2532 installed. Currently 2019 (default) and 2022 are supported.]),
2535 AC_ARG_WITH(windows-sdk,
2536 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2537 [Specify which Windows SDK, or "Windows Kit", version to use
2538 in case the one that came with the selected Visual Studio
2539 is not what you want for some reason. Note that not all compiler/SDK
2540 combinations are supported. The intent is that this option should not
2545 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2546 [Use this option to build LibreOffice with additional UI language support.
2547 English (US) is always included by default.
2548 Separate multiple languages with space.
2549 For all languages, use --with-lang=ALL.]),
2552 AC_ARG_WITH(locales,
2553 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2554 [Use this option to limit the locale information built in.
2555 Separate multiple locales with space.
2556 Very experimental and might well break stuff.
2557 Just a desperate measure to shrink code and data size.
2558 By default all the locales available is included.
2559 This option is completely unrelated to --with-lang.])
2561 Affects also our character encoding conversion
2562 tables for encodings mainly targeted for a
2563 particular locale, like EUC-CN and EUC-TW for
2564 zh, ISO-2022-JP for ja.
2566 Affects also our add-on break iterator data for
2569 For the default, all locales, don't use this switch at all.
2570 Specifying just the language part of a locale means all matching
2571 locales will be included.
2575 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2576 libo_FUZZ_ARG_WITH(krb5,
2577 AS_HELP_STRING([--with-krb5],
2578 [Enable MIT Kerberos 5 support in modules that support it.
2579 By default automatically enabled on platforms
2580 where a good system Kerberos 5 is available.]),
2583 libo_FUZZ_ARG_WITH(gssapi,
2584 AS_HELP_STRING([--with-gssapi],
2585 [Enable GSSAPI support in modules that support it.
2586 By default automatically enabled on platforms
2587 where a good system GSSAPI is available.]),
2591 AS_HELP_STRING([--with-iwyu],
2592 [Use given IWYU binary path to check unneeded includes instead of building.
2593 Use only if you are hacking on it.]),
2596 libo_FUZZ_ARG_WITH(lxml,
2597 AS_HELP_STRING([--without-lxml],
2598 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2599 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2600 report widget classes and ids.]),
2603 libo_FUZZ_ARG_WITH(latest-c++,
2604 AS_HELP_STRING([--with-latest-c++],
2605 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2606 published standard.]),,
2607 [with_latest_c__=no])
2609 dnl ===================================================================
2611 dnl ===================================================================
2613 AC_ARG_WITH(branding,
2614 AS_HELP_STRING([--with-branding=/path/to/images],
2615 [Use given path to retrieve branding images set.])
2617 Search for intro.png about.svg and logo.svg.
2618 If any is missing, default ones will be used instead.
2620 Search also progress.conf for progress
2621 settings on intro screen :
2623 PROGRESSBARCOLOR="255,255,255" Set color of
2624 progress bar. Comma separated RGB decimal values.
2625 PROGRESSSIZE="407,6" Set size of progress bar.
2626 Comma separated decimal values (width, height).
2627 PROGRESSPOSITION="61,317" Set position of progress
2628 bar from left,top. Comma separated decimal values.
2629 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2630 bar frame. Comma separated RGB decimal values.
2631 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2632 bar text. Comma separated RGB decimal values.
2633 PROGRESSTEXTBASELINE="287" Set vertical position of
2634 progress bar text from top. Decimal value.
2636 Default values will be used if not found.
2641 AC_ARG_WITH(extra-buildid,
2642 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2643 [Show addition build identification in about dialog.]),
2648 AS_HELP_STRING([--with-vendor="John the Builder"],
2649 [Set vendor of the build.]),
2652 AC_ARG_WITH(privacy-policy-url,
2653 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2654 [The URL to your privacy policy (needed when
2655 enabling online-update or crashreporting via breakpad)]),
2656 [if test "x$with_privacy_policy_url" = "xyes"; then
2657 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2658 elif test "x$with_privacy_policy_url" = "xno"; then
2659 with_privacy_policy_url="undefined"
2661 ,[with_privacy_policy_url="undefined"])
2663 AC_ARG_WITH(android-package-name,
2664 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2665 [Set Android package name of the build.]),
2668 AC_ARG_WITH(compat-oowrappers,
2669 AS_HELP_STRING([--with-compat-oowrappers],
2670 [Install oo* wrappers in parallel with
2671 lo* ones to keep backward compatibility.
2672 Has effect only with make distro-pack-install]),
2675 AC_ARG_WITH(os-version,
2676 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2677 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2680 AC_ARG_WITH(idlc-cpp,
2681 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2682 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2685 AC_ARG_WITH(parallelism,
2686 AS_HELP_STRING([--with-parallelism],
2687 [Number of jobs to run simultaneously during build. Parallel builds can
2688 save a lot of time on multi-cpu machines. Defaults to the number of
2689 CPUs on the machine, unless you configure --enable-icecream - then to
2693 AC_ARG_WITH(all-tarballs,
2694 AS_HELP_STRING([--with-all-tarballs],
2695 [Download all external tarballs unconditionally]))
2697 AC_ARG_WITH(gdrive-client-id,
2698 AS_HELP_STRING([--with-gdrive-client-id],
2699 [Provides the client id of the application for OAuth2 authentication
2700 on Google Drive. If either this or --with-gdrive-client-secret is
2701 empty, the feature will be disabled]),
2704 AC_ARG_WITH(gdrive-client-secret,
2705 AS_HELP_STRING([--with-gdrive-client-secret],
2706 [Provides the client secret of the application for OAuth2
2707 authentication on Google Drive. If either this or
2708 --with-gdrive-client-id is empty, the feature will be disabled]),
2711 AC_ARG_WITH(alfresco-cloud-client-id,
2712 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2713 [Provides the client id of the application for OAuth2 authentication
2714 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2715 empty, the feature will be disabled]),
2718 AC_ARG_WITH(alfresco-cloud-client-secret,
2719 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2720 [Provides the client secret of the application for OAuth2
2721 authentication on Alfresco Cloud. If either this or
2722 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2725 AC_ARG_WITH(onedrive-client-id,
2726 AS_HELP_STRING([--with-onedrive-client-id],
2727 [Provides the client id of the application for OAuth2 authentication
2728 on OneDrive. If either this or --with-onedrive-client-secret is
2729 empty, the feature will be disabled]),
2732 AC_ARG_WITH(onedrive-client-secret,
2733 AS_HELP_STRING([--with-onedrive-client-secret],
2734 [Provides the client secret of the application for OAuth2
2735 authentication on OneDrive. If either this or
2736 --with-onedrive-client-id is empty, the feature will be disabled]),
2738 dnl ===================================================================
2739 dnl Do we want to use pre-build binary tarball for recompile
2740 dnl ===================================================================
2742 if test "$enable_library_bin_tar" = "yes" ; then
2743 USE_LIBRARY_BIN_TAR=TRUE
2745 USE_LIBRARY_BIN_TAR=
2747 AC_SUBST(USE_LIBRARY_BIN_TAR)
2749 dnl ===================================================================
2750 dnl Test whether build target is Release Build
2751 dnl ===================================================================
2752 AC_MSG_CHECKING([whether build target is Release Build])
2753 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2755 ENABLE_RELEASE_BUILD=
2756 GET_TASK_ALLOW_ENTITLEMENT='
2757 <!-- We want to be able to debug a hardened process when not building for release -->
2758 <key>com.apple.security.get-task-allow</key>
2761 AC_MSG_RESULT([yes])
2762 ENABLE_RELEASE_BUILD=TRUE
2763 GET_TASK_ALLOW_ENTITLEMENT=''
2765 AC_SUBST(ENABLE_RELEASE_BUILD)
2766 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2768 AC_MSG_CHECKING([whether to build a Community flavor])
2769 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2770 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2771 AC_MSG_RESULT([yes])
2776 dnl ===================================================================
2777 dnl Test whether to sign Windows Build
2778 dnl ===================================================================
2779 AC_MSG_CHECKING([whether to sign windows build])
2780 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2781 AC_MSG_RESULT([yes])
2782 WINDOWS_BUILD_SIGNING="TRUE"
2785 WINDOWS_BUILD_SIGNING="FALSE"
2787 AC_SUBST(WINDOWS_BUILD_SIGNING)
2789 dnl ===================================================================
2790 dnl MacOSX build and runtime environment options
2791 dnl ===================================================================
2793 AC_ARG_WITH(macosx-version-min-required,
2794 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2795 [set the minimum OS version needed to run the built LibreOffice])
2797 e. g.: --with-macosx-version-min-required=10.12
2801 AC_ARG_WITH(macosx-version-max-allowed,
2802 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2803 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2805 e. g.: --with-macosx-version-max-allowed=11.0
2810 dnl ===================================================================
2811 dnl options for stuff used during cross-compilation build
2812 dnl Not quite superseded by --with-build-platform-configure-options.
2813 dnl TODO: check, if the "force" option is still needed anywhere.
2814 dnl ===================================================================
2816 AC_ARG_WITH(system-icu-for-build,
2817 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2818 [Use icu already on system for build tools (cross-compilation only).]))
2821 dnl ===================================================================
2822 dnl Check for incompatible options set by fuzzing, and reset those
2823 dnl automatically to working combinations
2824 dnl ===================================================================
2826 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2827 "$enable_dbus" != "$enable_avahi"; then
2828 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2829 enable_avahi=$enable_dbus
2834 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2835 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2839 add_lopath_before ()
2844 for dir in $LO_PATH ; do
2845 if test "$dir" != "$1" ; then
2846 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2849 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2852 dnl ===================================================================
2853 dnl check for required programs (grep, awk, sed, bash)
2854 dnl ===================================================================
2859 if test -n "$1"; then
2860 if test "$build_os" = "cygwin"; then
2861 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2863 new_path=`cygpath -sm "$formatted_path"`
2866 new_path=`cygpath -u "$formatted_path"`
2871 if test "$2" = "after"; then
2872 add_lopath_after "$new_path"
2874 add_lopath_before "$new_path"
2880 AC_PATH_PROG( AWK, $AWK)
2881 if test -z "$AWK"; then
2882 AC_MSG_ERROR([install awk to run this script])
2885 AC_PATH_PROG(BASH, bash)
2886 if test -z "$BASH"; then
2887 AC_MSG_ERROR([bash not found in \$PATH])
2891 AC_MSG_CHECKING([for GNU or BSD tar])
2892 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2893 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2894 if test $? -eq 0; then
2899 AC_MSG_RESULT($GNUTAR)
2900 if test -z "$GNUTAR"; then
2901 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2905 AC_MSG_CHECKING([for tar's option to strip components])
2906 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2907 if test $? -eq 0; then
2908 STRIP_COMPONENTS="--strip-components"
2910 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2911 if test $? -eq 0; then
2912 STRIP_COMPONENTS="--strip-path"
2914 STRIP_COMPONENTS="unsupported"
2917 AC_MSG_RESULT($STRIP_COMPONENTS)
2918 if test x$STRIP_COMPONENTS = xunsupported; then
2919 AC_MSG_ERROR([you need a tar that is able to strip components.])
2921 AC_SUBST(STRIP_COMPONENTS)
2923 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2924 dnl desktop OSes from "mobile" ones.
2926 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2927 dnl In other words, that when building for an OS that is not a
2928 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2930 dnl Note the direction of the implication; there is no assumption that
2931 dnl cross-compiling would imply a non-desktop OS.
2933 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2934 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2935 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2936 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2939 # Whether to build "avmedia" functionality or not.
2941 if test -z "$enable_avmedia"; then
2945 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2946 if test "$enable_avmedia" = yes; then
2947 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2949 USE_AVMEDIA_DUMMY='TRUE'
2951 AC_SUBST(USE_AVMEDIA_DUMMY)
2953 # Decide whether to build database connectivity stuff (including Base) or not.
2954 if test "$enable_database_connectivity" != no; then
2955 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2956 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2958 if test "$_os" = iOS; then
2959 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2961 disable_database_connectivity_dependencies
2964 if test -z "$enable_extensions"; then
2965 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2966 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2967 enable_extensions=yes
2971 if test "$enable_extensions" = yes; then
2972 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2973 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2975 enable_extension_integration=no
2976 enable_extension_update=no
2979 if test -z "$enable_scripting"; then
2980 # Disable scripting for iOS unless specifically overridden
2981 # with --enable-scripting.
2982 if test $_os != iOS -o $_os = Emscripten; then
2983 enable_scripting=yes
2987 DISABLE_SCRIPTING=''
2988 if test "$enable_scripting" = yes; then
2989 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2990 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2992 DISABLE_SCRIPTING='TRUE'
2993 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2996 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2997 # Disable dynamic_loading always for iOS and Android
2998 enable_dynamic_loading=no
2999 elif test -z "$enable_dynamic_loading"; then
3000 # Otherwise enable it unless specifically disabled
3001 enable_dynamic_loading=yes
3004 DISABLE_DYNLOADING=''
3005 if test "$enable_dynamic_loading" = yes; then
3006 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3008 DISABLE_DYNLOADING='TRUE'
3010 AC_SUBST(DISABLE_DYNLOADING)
3012 # remember SYSBASE value
3015 dnl ===================================================================
3016 dnl Sort out various gallery compilation options
3017 dnl ===================================================================
3018 WITH_GALLERY_BUILD=TRUE
3019 AC_MSG_CHECKING([how to build and package galleries])
3020 if test -n "${with_galleries}"; then
3021 if test "$with_galleries" = "build"; then
3022 if test "$enable_database_connectivity" = no; then
3023 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3025 AC_MSG_RESULT([build from source images internally])
3026 elif test "$with_galleries" = "no"; then
3028 AC_MSG_RESULT([disable non-internal gallery build])
3030 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3033 if test $_os != iOS -a $_os != Android; then
3034 AC_MSG_RESULT([internal src images for desktop])
3037 AC_MSG_RESULT([disable src image build])
3040 AC_SUBST(WITH_GALLERY_BUILD)
3042 dnl ===================================================================
3043 dnl Checks if ccache is available
3044 dnl ===================================================================
3046 if test "$enable_ccache" = "no"; then
3048 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3049 case "%$CC%$CXX%" in
3050 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3051 # assume that's good then
3052 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3053 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3054 CCACHE_DEPEND_MODE=1
3057 # try to use our own ccache if it is available and CCACHE was not already defined
3058 if test -z "$CCACHE"; then
3059 if test "$_os" = "WINNT"; then
3060 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3062 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3063 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3064 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3065 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3068 AC_PATH_PROG([CCACHE],[ccache],[not found])
3069 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3070 CCACHE=`win_short_path_for_make "$CCACHE"`
3071 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3073 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3074 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3075 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3083 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3084 # on windows/VC perhaps sccache is around?
3085 case "%$CC%$CXX%" in
3086 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3087 # assume that's good then
3088 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3089 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3090 CCACHE_DEPEND_MODE=1
3094 # for sharing code below, reuse CCACHE env var
3095 AC_PATH_PROG([CCACHE],[sccache],[not found])
3096 if test "$CCACHE" != "not found"; then
3097 CCACHE=`win_short_path_for_make "$CCACHE"`
3099 CCACHE_DEPEND_MODE=1
3104 if test "$CCACHE" = "not found"; then
3107 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3108 CCACHE_DEPEND_MODE=1
3109 # Need to check for ccache version: otherwise prevents
3110 # caching of the results (like "-x objective-c++" for Mac)
3111 if test $_os = Darwin -o $_os = iOS; then
3112 # Check ccache version
3113 AC_MSG_CHECKING([whether version of ccache is suitable])
3114 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3115 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3116 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3117 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3119 AC_MSG_RESULT([no, $CCACHE_VERSION])
3130 if test "$enable_ccache" = "nodepend"; then
3131 CCACHE_DEPEND_MODE=""
3133 AC_SUBST(CCACHE_DEPEND_MODE)
3135 # sccache defaults are good enough
3136 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3137 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3138 # -p works with both 4.2 and 4.4
3139 ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3140 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3141 if test "$ccache_size" = ""; then
3142 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3143 if test "$ccache_size" = ""; then
3146 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3147 if test $ccache_size -lt 1024; then
3149 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3150 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3152 # warn that ccache may be too small for debug build
3153 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3154 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3157 if test $ccache_size -lt 5; then
3158 #warn that ccache may be too small for debug build
3159 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3160 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3166 if test "$enable_z7_debug" != no; then
3167 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3168 ENABLE_Z7_DEBUG=TRUE
3171 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3172 add_warning "ccache will not work with --disable-z7-debug"
3174 AC_SUBST(ENABLE_Z7_DEBUG)
3176 dnl ===================================================================
3177 dnl Checks for C compiler,
3178 dnl The check for the C++ compiler is later on.
3179 dnl ===================================================================
3180 if test "$_os" != "WINNT"; then
3182 AC_MSG_CHECKING([gcc home])
3183 if test -z "$with_gcc_home"; then
3184 if test "$enable_icecream" = "yes"; then
3185 if test -d "/usr/lib/icecc/bin"; then
3186 GCC_HOME="/usr/lib/icecc/"
3187 elif test -d "/usr/libexec/icecc/bin"; then
3188 GCC_HOME="/usr/libexec/icecc/"
3189 elif test -d "/opt/icecream/bin"; then
3190 GCC_HOME="/opt/icecream/"
3192 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3196 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3197 GCC_HOME_SET="false"
3200 GCC_HOME="$with_gcc_home"
3202 AC_MSG_RESULT($GCC_HOME)
3205 if test "$GCC_HOME_SET" = "true"; then
3206 if test -z "$CC"; then
3207 CC="$GCC_HOME/bin/gcc"
3210 if test -z "$CXX"; then
3211 CXX="$GCC_HOME/bin/g++"
3217 COMPATH=`dirname "$CC"`
3218 if test "$COMPATH" = "."; then
3219 AC_PATH_PROGS(COMPATH, $CC)
3220 dnl double square bracket to get single because of M4 quote...
3221 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3223 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3225 dnl ===================================================================
3227 dnl ===================================================================
3228 AC_MSG_CHECKING([whether to build with Java support])
3229 if test "$with_java" != "no"; then
3230 if test "$DISABLE_SCRIPTING" = TRUE; then
3231 AC_MSG_RESULT([no, overridden by --disable-scripting])
3235 AC_MSG_RESULT([yes])
3237 AC_DEFINE(HAVE_FEATURE_JAVA)
3244 AC_SUBST(ENABLE_JAVA)
3246 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3248 dnl ENABLE_JAVA="" indicate no Java support at all
3250 dnl ===================================================================
3251 dnl Check macOS SDK and compiler
3252 dnl ===================================================================
3254 if test $_os = Darwin; then
3256 # The SDK in the currently selected Xcode should be found.
3258 AC_MSG_CHECKING([what macOS SDK to use])
3259 for macosx_sdk in 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3260 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3261 if test -d "$MACOSX_SDK_PATH"; then
3264 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3265 if test -d "$MACOSX_SDK_PATH"; then
3270 if test ! -d "$MACOSX_SDK_PATH"; then
3271 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3274 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3278 MACOSX_SDK_VERSION=101300
3281 MACOSX_SDK_VERSION=101400
3284 MACOSX_SDK_VERSION=101500
3287 MACOSX_SDK_VERSION=110000
3290 MACOSX_SDK_VERSION=110100
3293 MACOSX_SDK_VERSION=110300
3296 MACOSX_SDK_VERSION=120000
3299 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3303 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3304 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3307 if test "$with_macosx_version_min_required" = "" ; then
3308 if test "$host_cpu" = x86_64; then
3309 with_macosx_version_min_required="10.12";
3311 with_macosx_version_min_required="11.0";
3315 if test "$with_macosx_version_max_allowed" = "" ; then
3316 with_macosx_version_max_allowed="$macosx_sdk"
3319 # export this so that "xcrun" invocations later return matching values
3320 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3321 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3322 export DEVELOPER_DIR
3323 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3324 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3326 AC_MSG_CHECKING([whether Xcode is new enough])
3327 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3328 my_xcode_ver2=${my_xcode_ver1#Xcode }
3329 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3330 if test "$my_xcode_ver3" -ge 1103; then
3331 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3333 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3336 case "$with_macosx_version_min_required" in
3338 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3341 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3344 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3347 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3350 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3353 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3356 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3359 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3362 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3365 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.0])
3369 LIBTOOL=/usr/bin/libtool
3370 INSTALL_NAME_TOOL=install_name_tool
3371 if test -z "$save_CC"; then
3372 stdlib=-stdlib=libc++
3374 AC_MSG_CHECKING([what C compiler to use])
3375 CC="`xcrun -find clang`"
3376 CC_BASE=`first_arg_basename "$CC"`
3377 if test "$host_cpu" = x86_64; then
3378 CC+=" -target x86_64-apple-macos"
3380 CC+=" -target arm64-apple-macos"
3382 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3383 AC_MSG_RESULT([$CC])
3385 AC_MSG_CHECKING([what C++ compiler to use])
3386 CXX="`xcrun -find clang++`"
3387 CXX_BASE=`first_arg_basename "$CXX"`
3388 if test "$host_cpu" = x86_64; then
3389 CXX+=" -target x86_64-apple-macos"
3391 CXX+=" -target arm64-apple-macos"
3393 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3394 AC_MSG_RESULT([$CXX])
3396 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3399 STRIP=`xcrun -find strip`
3400 LIBTOOL=`xcrun -find libtool`
3401 RANLIB=`xcrun -find ranlib`
3404 case "$with_macosx_version_max_allowed" in
3406 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3409 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3412 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3415 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3418 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3421 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3424 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3427 MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3430 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.0])
3434 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3435 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3436 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])
3441 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3442 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3443 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3447 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3448 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3450 AC_MSG_CHECKING([whether to do code signing])
3452 if test "$enable_macosx_code_signing" = yes; then
3453 # By default use the first suitable certificate (?).
3455 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3456 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3457 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3458 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3459 # "Developer ID Application" one.
3461 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3462 if test -n "$identity"; then
3463 MACOSX_CODESIGNING_IDENTITY=$identity
3464 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3465 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3467 AC_MSG_ERROR([cannot determine identity to use])
3469 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3470 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3471 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3472 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3477 AC_MSG_CHECKING([whether to create a Mac App Store package])
3479 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3481 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3482 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3483 elif test "$enable_macosx_package_signing" = yes; then
3484 # By default use the first suitable certificate.
3485 # It should be a "3rd Party Mac Developer Installer" one
3487 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3488 if test -n "$identity"; then
3489 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3490 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3491 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3493 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3496 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3497 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3498 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3501 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3502 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3505 AC_MSG_CHECKING([whether to sandbox the application])
3507 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3508 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3509 elif test "$enable_macosx_sandbox" = yes; then
3510 ENABLE_MACOSX_SANDBOX=TRUE
3511 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3512 AC_MSG_RESULT([yes])
3517 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3518 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3519 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3521 AC_SUBST(MACOSX_SDK_PATH)
3522 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3523 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3524 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3525 AC_SUBST(INSTALL_NAME_TOOL)
3526 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3527 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3528 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3529 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3530 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3532 dnl ===================================================================
3533 dnl Check iOS SDK and compiler
3534 dnl ===================================================================
3536 if test $_os = iOS; then
3537 AC_MSG_CHECKING([what iOS SDK to use])
3538 current_sdk_ver=15.0
3539 older_sdk_vers="14.5"
3540 if test "$enable_ios_simulator" = "yes"; then
3541 platform=iPhoneSimulator
3542 versionmin=-mios-simulator-version-min=13.6
3545 versionmin=-miphoneos-version-min=13.6
3547 xcode_developer=`xcode-select -print-path`
3549 for sdkver in $current_sdk_ver $older_sdk_vers; do
3550 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3557 if test -z "$sysroot"; then
3558 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3561 AC_MSG_RESULT($sysroot)
3563 stdlib="-stdlib=libc++"
3565 AC_MSG_CHECKING([what C compiler to use])
3566 CC="`xcrun -find clang`"
3567 CC_BASE=`first_arg_basename "$CC"`
3568 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3569 AC_MSG_RESULT([$CC])
3571 AC_MSG_CHECKING([what C++ compiler to use])
3572 CXX="`xcrun -find clang++`"
3573 CXX_BASE=`first_arg_basename "$CXX"`
3574 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3575 AC_MSG_RESULT([$CXX])
3577 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3580 STRIP=`xcrun -find strip`
3581 LIBTOOL=`xcrun -find libtool`
3582 RANLIB=`xcrun -find ranlib`
3585 AC_MSG_CHECKING([whether to treat the installation as read-only])
3587 if test $_os = Darwin; then
3588 enable_readonly_installset=yes
3589 elif test "$enable_extensions" != yes; then
3590 enable_readonly_installset=yes
3592 if test "$enable_readonly_installset" = yes; then
3593 AC_MSG_RESULT([yes])
3594 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3599 dnl ===================================================================
3600 dnl Structure of install set
3601 dnl ===================================================================
3603 if test $_os = Darwin; then
3604 LIBO_BIN_FOLDER=MacOS
3605 LIBO_ETC_FOLDER=Resources
3606 LIBO_LIBEXEC_FOLDER=MacOS
3607 LIBO_LIB_FOLDER=Frameworks
3608 LIBO_LIB_PYUNO_FOLDER=Resources
3609 LIBO_SHARE_FOLDER=Resources
3610 LIBO_SHARE_HELP_FOLDER=Resources/help
3611 LIBO_SHARE_JAVA_FOLDER=Resources/java
3612 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3613 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3614 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3615 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3616 LIBO_URE_BIN_FOLDER=MacOS
3617 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3618 LIBO_URE_LIB_FOLDER=Frameworks
3619 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3620 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3621 elif test $_os = WINNT; then
3622 LIBO_BIN_FOLDER=program
3623 LIBO_ETC_FOLDER=program
3624 LIBO_LIBEXEC_FOLDER=program
3625 LIBO_LIB_FOLDER=program
3626 LIBO_LIB_PYUNO_FOLDER=program
3627 LIBO_SHARE_FOLDER=share
3628 LIBO_SHARE_HELP_FOLDER=help
3629 LIBO_SHARE_JAVA_FOLDER=program/classes
3630 LIBO_SHARE_PRESETS_FOLDER=presets
3631 LIBO_SHARE_READMES_FOLDER=readmes
3632 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3633 LIBO_SHARE_SHELL_FOLDER=program/shell
3634 LIBO_URE_BIN_FOLDER=program
3635 LIBO_URE_ETC_FOLDER=program
3636 LIBO_URE_LIB_FOLDER=program
3637 LIBO_URE_MISC_FOLDER=program
3638 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3640 LIBO_BIN_FOLDER=program
3641 LIBO_ETC_FOLDER=program
3642 LIBO_LIBEXEC_FOLDER=program
3643 LIBO_LIB_FOLDER=program
3644 LIBO_LIB_PYUNO_FOLDER=program
3645 LIBO_SHARE_FOLDER=share
3646 LIBO_SHARE_HELP_FOLDER=help
3647 LIBO_SHARE_JAVA_FOLDER=program/classes
3648 LIBO_SHARE_PRESETS_FOLDER=presets
3649 LIBO_SHARE_READMES_FOLDER=readmes
3650 if test "$enable_fuzzers" != yes; then
3651 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3653 LIBO_SHARE_RESOURCE_FOLDER=resource
3655 LIBO_SHARE_SHELL_FOLDER=program/shell
3656 LIBO_URE_BIN_FOLDER=program
3657 LIBO_URE_ETC_FOLDER=program
3658 LIBO_URE_LIB_FOLDER=program
3659 LIBO_URE_MISC_FOLDER=program
3660 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3662 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3663 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3664 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3665 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3666 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3667 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3668 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3669 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3670 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3671 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3672 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3673 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3674 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3675 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3676 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3677 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3679 # Not all of them needed in config_host.mk, add more if need arises
3680 AC_SUBST(LIBO_BIN_FOLDER)
3681 AC_SUBST(LIBO_ETC_FOLDER)
3682 AC_SUBST(LIBO_LIB_FOLDER)
3683 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3684 AC_SUBST(LIBO_SHARE_FOLDER)
3685 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3686 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3687 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3688 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3689 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3690 AC_SUBST(LIBO_URE_BIN_FOLDER)
3691 AC_SUBST(LIBO_URE_ETC_FOLDER)
3692 AC_SUBST(LIBO_URE_LIB_FOLDER)
3693 AC_SUBST(LIBO_URE_MISC_FOLDER)
3694 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3696 dnl ===================================================================
3697 dnl Windows specific tests and stuff
3698 dnl ===================================================================
3702 # Return value: $regvalue
3705 if test "$build_os" = "wsl"; then
3706 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3710 local _regentry="/proc/registry${1}/${2}"
3711 if test -f "$_regentry"; then
3712 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3713 # Registry keys read via /proc/registry* are always \0 terminated!
3714 local _regvalue=$(tr -d '\0' < "$_regentry")
3715 if test $? -eq 0; then
3721 # Get a value from the 32-bit side of the Registry
3724 reg_get_value "32" "$1"
3727 # Get a value from the 64-bit side of the Registry
3730 reg_get_value "64" "$1"
3738 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3747 PLATFORMID=windows_x86_64
3749 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3751 WIN_MULTI_ARCH="x86"
3757 PLATFORMID=windows_x86
3760 WIN_OTHER_ARCH="x64"
3765 PLATFORMID=windows_aarch64
3767 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3768 WIN_HOST_ARCH="arm64"
3773 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3777 case "$build_cpu" in
3778 x86_64) WIN_BUILD_ARCH="x64" ;;
3779 i*86) WIN_BUILD_ARCH="x86" ;;
3780 aarch64) WIN_BUILD_ARCH="arm64" ;;
3782 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3786 SCPDEFS="$SCPDEFS -D_MSC_VER"
3790 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3791 # other-arch won't, but wouldn't break the build (x64 on x86).
3792 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3793 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3797 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3798 # To allow building Windows multi-arch releases without cross-tooling
3799 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3800 cross_compiling="yes"
3804 ENABLE_WASM_STRIP=''
3805 if test "$cross_compiling" = "yes"; then
3806 export CROSS_COMPILING=TRUE
3807 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3808 ENABLE_WASM_STRIP=TRUE
3812 BUILD_TYPE="$BUILD_TYPE NATIVE"
3814 AC_SUBST(CROSS_COMPILING)
3815 AC_SUBST(ENABLE_WASM_STRIP)
3817 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3818 # NOTE: must _not_ be used for bundled external libraries!
3820 if test "$GCC" = "yes"; then
3821 AC_MSG_CHECKING( for -isystem )
3823 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3824 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3826 if test -n "$ISYSTEM"; then
3832 if test -z "$ISYSTEM"; then
3833 # fall back to using -I
3838 dnl ===================================================================
3839 dnl Check which Visual Studio compiler is used
3840 dnl ===================================================================
3842 map_vs_year_to_version()
3844 # Return value: $vsversion
3854 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3858 vs_versions_to_check()
3860 # Args: $1 (optional) : versions to check, in the order of preference
3861 # Return value: $vsversions
3865 if test -n "$1"; then
3866 map_vs_year_to_version "$1"
3867 vsversions=$vsversion
3869 # Default version is 2019
3874 win_get_env_from_vsvars32bat()
3876 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3877 # Also seems to be located in another directory under the same name: vsvars32.bat
3878 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3879 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3880 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3881 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3883 if test "$build_os" = "wsl"; then
3884 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3886 chmod +x $WRAPPERBATCHFILEPATH
3887 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3889 rm -f $WRAPPERBATCHFILEPATH
3890 printf '%s' "$result"
3895 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3896 if test -n "$regvalue"; then
3897 PathFormat "$regvalue"
3898 UCRTSDKDIR=$formatted_path_unix
3899 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3900 UCRTVERSION=$regvalue
3902 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3906 if test -z "$UCRTSDKDIR"; then
3907 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3908 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3909 if test -f "$ide_env_file"; then
3910 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3911 UCRTSDKDIR=$formatted_path
3912 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3913 dnl Hack needed at least by tml:
3914 if test "$UCRTVERSION" = 10.0.15063.0 \
3915 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3916 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3918 UCRTVERSION=10.0.14393.0
3921 AC_MSG_ERROR([No UCRT found])
3929 # Args: $1 (optional) : The VS version year
3930 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3932 unset vctest vctoolset vcnumwithdot vcbuildnumber
3934 vs_versions_to_check "$1"
3935 if test "$build_os" = wsl; then
3936 vswhere="$PROGRAMFILESX86"
3938 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3940 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3941 PathFormat "$vswhere"
3942 vswhere=$formatted_path_unix
3943 for ver in $vsversions; do
3944 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3945 if test -z "$vswhereoutput"; then
3946 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3948 # Fall back to all MS products (this includes VC++ Build Tools)
3949 if ! test -n "$vswhereoutput"; then
3950 AC_MSG_CHECKING([VC++ Build Tools and similar])
3951 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3953 if test -n "$vswhereoutput"; then
3954 PathFormat "$vswhereoutput"
3955 vctest=$formatted_path_unix
3960 if test -n "$vctest"; then
3961 vcnumwithdot="$ver.0"
3962 case "$vcnumwithdot" in
3972 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3979 AC_MSG_CHECKING([$1 compiler])
3981 CL_EXE_PATH="$2/cl.exe"
3983 if test ! -f "$CL_EXE_PATH"; then
3984 if test "$1" = "multi-arch"; then
3985 AC_MSG_WARN([no compiler (cl.exe) in $2])
3988 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3992 dnl ===========================================================
3993 dnl Check for the corresponding mspdb*.dll
3994 dnl ===========================================================
3996 # MSVC 15.0 has libraries from 14.0?
3999 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4000 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4003 # The compiles has to find its shared libraries
4005 TEMP_PATH=`cygpath -d "$2"`
4006 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4008 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4009 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4014 AC_MSG_RESULT([$CL_EXE_PATH])
4020 if test "$_os" = "WINNT"; then
4021 AC_MSG_CHECKING([Visual C++])
4022 find_msvc "$with_visual_studio"
4023 if test -z "$vctest"; then
4024 if test -n "$with_visual_studio"; then
4025 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4027 AC_MSG_ERROR([no Visual Studio installation found])
4032 VC_PRODUCT_DIR="$vctest/VC"
4033 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4035 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4036 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4037 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4038 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4039 if test $? -ne 0; then
4045 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4046 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4047 test_cl_exe "build" "$MSVC_BUILD_PATH"
4050 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4051 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4052 test_cl_exe "host" "$MSVC_HOST_PATH"
4054 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4057 AC_MSG_CHECKING([for short pathname of VC product directory])
4058 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4059 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4064 AC_MSG_CHECKING([for UCRT location])
4066 # find_ucrt errors out if it doesn't find it
4067 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4068 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4069 ucrtincpath_formatted=$formatted_path
4070 # SOLARINC is used for external modules and must be set too.
4071 # And no, it's not sufficient to set SOLARINC only, as configure
4072 # itself doesn't honour it.
4073 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4074 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4075 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4076 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4078 AC_SUBST(UCRTSDKDIR)
4079 AC_SUBST(UCRTVERSION)
4081 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4082 # Find the proper version of MSBuild.exe to use based on the VS version
4083 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4084 if test -z "$regvalue" ; then
4085 if test "$WIN_BUILD_ARCH" != "x64"; then
4086 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4088 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4091 if test -d "$regvalue" ; then
4092 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4093 AC_MSG_RESULT([$regvalue])
4095 AC_MSG_ERROR([MSBuild.exe location not found])
4098 # Find the version of devenv.exe
4099 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4100 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4101 DEVENV_unix=$(cygpath -u "$DEVENV")
4102 if test ! -e "$DEVENV_unix"; then
4103 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4106 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4107 dnl needed when building CLR code:
4108 if test -z "$MSVC_CXX"; then
4109 # This gives us a posix path with 8.3 filename restrictions
4110 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4113 if test -z "$CC"; then
4115 CC_BASE=`first_arg_basename "$CC"`
4117 if test -z "$CXX"; then
4119 CXX_BASE=`first_arg_basename "$CXX"`
4122 if test -n "$CC"; then
4123 # Remove /cl.exe from CC case insensitive
4124 AC_MSG_NOTICE([found Visual C++ $vcyear])
4126 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4127 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4129 PathFormat "$COMPATH"
4130 COMPATH=`win_short_path_for_make "$formatted_path"`
4133 VCTOOLSET=$vctoolset
4135 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4136 # are always "better", we list them in reverse chronological order.
4138 case "$vcnumwithdot" in
4140 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4144 # The expectation is that --with-windows-sdk should not need to be used
4145 if test -n "$with_windows_sdk"; then
4146 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4147 *" "$with_windows_sdk" "*)
4148 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4151 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4156 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4161 AC_MSG_ERROR([Visual C++ not found after all, huh])
4164 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4165 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4166 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4167 // between Visual Studio versions and _MSC_VER:
4171 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4173 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4174 # version of the Explorer extension (and maybe other small
4175 # bits, too) needed when installing a 32-bit LibreOffice on a
4176 # 64-bit OS. The 64-bit Explorer extension is a feature that
4177 # has been present since long in OOo. Don't confuse it with
4178 # building LibreOffice itself as 64-bit code.
4183 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4184 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4185 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4186 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4189 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4190 AC_MSG_RESULT([found])
4192 AC_MSG_RESULT([not found])
4193 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4195 elif test "$WIN_HOST_ARCH" = "x64"; then
4200 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4201 AC_SUBST(CXX_X64_BINARY)
4203 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4204 # needed to support TWAIN scan on both 32- and 64-bit systems
4206 case "$WIN_HOST_ARCH" in
4208 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4209 if test -n "$CXX_X86_BINARY"; then
4211 AC_MSG_RESULT([preset])
4212 elif test -n "$WIN_MULTI_ARCH"; then
4214 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4215 CXX_X86_BINARY+=" /arch:SSE"
4216 AC_MSG_RESULT([found])
4218 AC_MSG_RESULT([not found])
4219 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4224 CXX_X86_BINARY=$MSVC_CXX
4228 AC_SUBST(CXX_X86_BINARY)
4236 AC_MSG_CHECKING([whether the compiler is actually Clang])
4237 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4243 [AC_MSG_RESULT([yes])
4245 [AC_MSG_RESULT([no])])
4246 AC_SUBST(COM_IS_CLANG)
4250 if test "$COM_IS_CLANG" = TRUE; then
4251 AC_MSG_CHECKING([whether Clang is new enough])
4252 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4253 #if !defined __apple_build_version__
4257 [my_apple_clang=yes],[my_apple_clang=])
4258 if test "$my_apple_clang" = yes; then
4259 AC_MSG_RESULT([assumed yes (Apple Clang)])
4260 elif test "$_os" = Emscripten; then
4261 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4263 if test "$_os" = WINNT; then
4264 dnl In which case, assume clang-cl:
4266 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4274 CC_PLAIN="$CC_PLAIN $i"
4281 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4282 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4283 CLANGVER=`echo $clang_version \
4284 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4285 if test "$CLANGVER" -ge 50002; then
4286 AC_MSG_RESULT([yes ($clang_version)])
4288 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4290 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4291 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4295 SHOWINCLUDES_PREFIX=
4296 if test "$_os" = WINNT; then
4297 dnl We need to guess the prefix of the -showIncludes output, it can be
4299 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4300 echo "#include <stdlib.h>" > conftest.c
4301 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4302 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4303 rm -f conftest.c conftest.obj
4304 if test -z "$SHOWINCLUDES_PREFIX"; then
4305 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4307 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4310 AC_SUBST(SHOWINCLUDES_PREFIX)
4313 # prefix C with ccache if needed
4315 if test "$CCACHE" != ""; then
4316 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4320 CFLAGS="$CFLAGS --ccache-skip -O2"
4321 # msvc does not fail on unknown options, check stdout
4322 if test "$COM" = MSC; then
4323 CFLAGS="$CFLAGS -nologo"
4325 save_ac_c_werror_flag=$ac_c_werror_flag
4326 ac_c_werror_flag=yes
4327 dnl an empty program will do, we're checking the compiler flags
4328 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4329 [use_ccache=yes], [use_ccache=no])
4331 ac_c_werror_flag=$save_ac_c_werror_flag
4332 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4333 AC_MSG_RESULT([yes])
4336 CC_BASE="ccache $CC_BASE"
4342 # ===================================================================
4343 # check various GCC options that Clang does not support now but maybe
4344 # will somewhen in the future, check them even for GCC, so that the
4346 # ===================================================================
4349 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4350 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4352 CFLAGS="$CFLAGS -Werror -ggdb2"
4353 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4355 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4356 AC_MSG_RESULT([yes])
4361 if test "$host_cpu" = "m68k"; then
4362 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4364 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4365 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4367 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4368 AC_MSG_RESULT([yes])
4374 AC_SUBST(HAVE_GCC_GGDB2)
4376 dnl ===================================================================
4377 dnl Test the gcc version
4378 dnl ===================================================================
4379 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4380 AC_MSG_CHECKING([the GCC version])
4381 _gcc_version=`$CC -dumpfullversion`
4382 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4383 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4384 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4386 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4388 if test "$gcc_full_version" -lt 70000; then
4389 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4392 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4393 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4394 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4395 # (which reports itself as GCC 4.2.1).
4398 AC_SUBST(GCC_VERSION)
4400 dnl Set the ENABLE_DBGUTIL variable
4401 dnl ===================================================================
4402 AC_MSG_CHECKING([whether to build with additional debug utilities])
4403 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4404 ENABLE_DBGUTIL="TRUE"
4405 # this is an extra var so it can have different default on different MSVC
4406 # versions (in case there are version specific problems with it)
4407 MSVC_USE_DEBUG_RUNTIME="TRUE"
4409 AC_MSG_RESULT([yes])
4410 # cppunit and graphite expose STL in public headers
4411 if test "$with_system_cppunit" = "yes"; then
4412 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4414 with_system_cppunit=no
4416 if test "$with_system_graphite" = "yes"; then
4417 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4419 with_system_graphite=no
4421 if test "$with_system_orcus" = "yes"; then
4422 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4424 with_system_orcus=no
4426 if test "$with_system_libcmis" = "yes"; then
4427 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4429 with_system_libcmis=no
4431 if test "$with_system_hunspell" = "yes"; then
4432 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4434 with_system_hunspell=no
4436 if test "$with_system_gpgmepp" = "yes"; then
4437 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4439 with_system_gpgmepp=no
4441 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4442 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4443 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4444 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4445 # of those two is using the system variant:
4446 if test "$with_system_libnumbertext" = "yes"; then
4447 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4449 with_system_libnumbertext=no
4451 if test "$with_system_libwps" = "yes"; then
4452 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4454 with_system_libwps=no
4458 MSVC_USE_DEBUG_RUNTIME=""
4461 AC_SUBST(ENABLE_DBGUTIL)
4462 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4464 dnl Set the ENABLE_DEBUG variable.
4465 dnl ===================================================================
4466 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4467 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4469 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4470 if test -z "$libo_fuzzed_enable_debug"; then
4471 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4473 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4478 AC_MSG_CHECKING([whether to do a debug build])
4479 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4481 if test -n "$ENABLE_DBGUTIL" ; then
4482 AC_MSG_RESULT([yes (dbgutil)])
4484 AC_MSG_RESULT([yes])
4490 AC_SUBST(ENABLE_DEBUG)
4492 dnl ===================================================================
4493 dnl Select the linker to use (gold/lld/ld.bfd).
4494 dnl This is done only after compiler checks (need to know if Clang is
4495 dnl used, for different defaults) and after checking if a debug build
4496 dnl is wanted (non-debug builds get the default linker if not explicitly
4497 dnl specified otherwise).
4498 dnl All checks for linker features/options should come after this.
4499 dnl ===================================================================
4502 use_ld=-fuse-ld=${1%%:*}
4504 if test "$use_ld_path" != "$1"; then
4505 use_ld="$use_ld --ld-path=$use_ld_path"
4507 use_ld_fail_if_error=$2
4509 AC_MSG_CHECKING([for $use_ld linker support])
4510 use_ld_ldflags_save="$LDFLAGS"
4511 LDFLAGS="$LDFLAGS $use_ld"
4512 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4515 printf ("hello world\n");
4516 ])], USE_LD=$use_ld, [])
4517 if test -n "$USE_LD"; then
4518 AC_MSG_RESULT( yes )
4521 if test -n "$use_ld_fail_if_error"; then
4527 if test -n "$use_ld_ok"; then
4528 dnl keep the value of LDFLAGS
4531 LDFLAGS="$use_ld_ldflags_save"
4535 if test "$enable_ld" != "no"; then
4536 if test "$GCC" = "yes"; then
4537 if test -n "$enable_ld"; then
4538 check_use_ld "$enable_ld" fail_if_error
4539 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4540 dnl non-debug builds default to the default linker
4542 elif test -n "$COM_IS_CLANG"; then
4544 if test $? -ne 0; then
4548 # For gcc first try gold, new versions also support lld.
4550 if test $? -ne 0; then
4554 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4556 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4557 if test -z "$ld_used"; then
4560 AC_MSG_CHECKING([for linker that is used])
4561 AC_MSG_RESULT([$ld_used])
4562 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4563 if echo "$ld_used" | grep -q "^GNU ld"; then
4564 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4565 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4569 if test "$enable_ld" = "yes"; then
4570 AC_MSG_ERROR([--enable-ld not supported])
4576 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4577 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4578 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4579 bsymbolic_functions_ldflags_save=$LDFLAGS
4580 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4581 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4584 printf ("hello world\n");
4585 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4586 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4587 AC_MSG_RESULT( found )
4589 AC_MSG_RESULT( not found )
4591 LDFLAGS=$bsymbolic_functions_ldflags_save
4593 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4596 if test "$GCC" = "yes"; then
4597 for flag in "--gc-sections" "-dead_strip"; do
4598 AC_MSG_CHECKING([for $flag linker support])
4599 ldflags_save=$LDFLAGS
4600 LDFLAGS="$LDFLAGS -Wl,$flag"
4601 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4604 printf ("hello world\n");
4606 LD_GC_SECTIONS="-Wl,$flag"
4607 AC_MSG_RESULT( found )
4609 AC_MSG_RESULT( not found )
4611 LDFLAGS=$ldflags_save
4612 if test -n "$LD_GC_SECTIONS"; then
4617 AC_SUBST(LD_GC_SECTIONS)
4620 if test "$enable_split_debug" != no; then
4622 if test -n "$ENABLE_LTO"; then
4623 true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4624 elif test "$enable_split_debug" = yes; then
4626 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4627 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4630 if test -n "$use_split_debug"; then
4631 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4633 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4634 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4636 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4637 AC_MSG_RESULT([yes])
4639 if test "$enable_split_debug" = yes; then
4646 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4647 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4648 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4651 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4653 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4654 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4656 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4657 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4659 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4660 AC_MSG_RESULT([yes])
4664 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4667 if test "$enable_gdb_index" != "no"; then
4668 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4669 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4670 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4672 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4674 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4675 if test "$have_ggnu_pubnames" != "TRUE"; then
4676 if test "$enable_gdb_index" = "yes"; then
4677 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4682 AC_MSG_RESULT( yes )
4683 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4684 ldflags_save=$LDFLAGS
4685 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4686 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4689 printf ("hello world\n");
4690 ])], ENABLE_GDB_INDEX=TRUE, [])
4691 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4692 AC_MSG_RESULT( yes )
4694 if test "$enable_gdb_index" = "yes"; then
4700 LDFLAGS=$ldflags_save
4704 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4705 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4706 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4709 AC_SUBST(ENABLE_GDB_INDEX)
4711 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4714 if test "$enable_sal_log" = yes; then
4717 AC_SUBST(ENABLE_SAL_LOG)
4719 dnl Check for enable symbols option
4720 dnl ===================================================================
4721 AC_MSG_CHECKING([whether to generate debug information])
4722 if test -z "$enable_symbols"; then
4723 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4729 if test "$enable_symbols" = yes; then
4730 ENABLE_SYMBOLS_FOR=all
4731 AC_MSG_RESULT([yes])
4732 elif test "$enable_symbols" = no; then
4736 # Selective debuginfo.
4737 ENABLE_SYMBOLS_FOR="$enable_symbols"
4738 AC_MSG_RESULT([for "$enable_symbols"])
4740 AC_SUBST(ENABLE_SYMBOLS_FOR)
4742 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4743 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4744 AC_MSG_CHECKING([whether enough memory is available for linking])
4745 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4746 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4747 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4748 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4750 AC_MSG_RESULT([yes])
4755 ENABLE_OPTIMIZED_DEBUG=
4756 AC_MSG_CHECKING([whether to compile with optimization flags])
4757 if test -z "$enable_optimized"; then
4758 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4761 enable_optimized=yes
4764 if test "$enable_optimized" = yes; then
4765 ENABLE_OPTIMIZED=TRUE
4766 AC_MSG_RESULT([yes])
4767 elif test "$enable_optimized" = debug; then
4768 ENABLE_OPTIMIZED_DEBUG=TRUE
4769 AC_MSG_RESULT([yes (debug)])
4771 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4772 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4774 CFLAGS="$CFLAGS -Werror -Og"
4775 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4777 if test "$HAVE_GCC_OG" = "TRUE"; then
4778 AC_MSG_RESULT([yes])
4783 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4784 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4789 AC_SUBST(ENABLE_OPTIMIZED)
4790 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4793 # determine CPUNAME, OS, ...
4803 PLATFORMID=aix_powerpc
4819 if test "$enable_ios_simulator" = "yes"; then
4824 PLATFORMID=macosx_aarch64
4828 if test "$enable_ios_simulator" = "yes"; then
4833 PLATFORMID=macosx_x86_64
4836 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4849 if test "$enable_ios_simulator" = "yes"; then
4850 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4854 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4859 PLATFORMID=ios_arm64
4872 PLATFORMID=dragonfly_x86
4877 PLATFORMID=dragonfly_x86_64
4880 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4894 PLATFORMID=freebsd_aarch64
4900 PLATFORMID=freebsd_x86
4905 PLATFORMID=freebsd_x86_64
4910 PLATFORMID=freebsd_powerpc64
4915 PLATFORMID=freebsd_powerpc
4918 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4934 PLATFORMID=haiku_x86
4939 PLATFORMID=haiku_x86_64
4942 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4958 PLATFORMID=kfreebsd_x86
4963 PLATFORMID=kfreebsd_x86_64
4966 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4971 linux-gnu*|linux-musl*)
4981 PLATFORMID=linux_aarch64
4983 EPM_FLAGS="-a arm64"
4988 PLATFORMID=linux_alpha
4994 PLATFORMID=linux_arm_eabi
4998 PLATFORMID=linux_arm_oabi
5006 PLATFORMID=linux_hppa
5011 PLATFORMID=linux_x86
5016 PLATFORMID=linux_ia64
5022 PLATFORMID=linux_mips_eb
5027 EPM_FLAGS="-a mips64"
5028 PLATFORMID=linux_mips64_eb
5033 EPM_FLAGS="-a mips64el"
5034 PLATFORMID=linux_mips64_el
5039 EPM_FLAGS="-a mipsel"
5040 PLATFORMID=linux_mips_el
5045 PLATFORMID=linux_m68k
5050 PLATFORMID=linux_powerpc
5055 PLATFORMID=linux_powerpc64
5059 RTL_ARCH=PowerPC_64_LE
5060 PLATFORMID=linux_powerpc64_le
5065 PLATFORMID=linux_sparc
5070 PLATFORMID=linux_sparc64
5075 PLATFORMID=linux_s390
5080 PLATFORMID=linux_s390x
5085 PLATFORMID=linux_x86_64
5088 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5104 PLATFORMID=android_arm_eabi
5109 PLATFORMID=android_aarch64
5114 PLATFORMID=android_x86
5119 PLATFORMID=android_x86_64
5122 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5137 PLATFORMID=netbsd_x86
5142 PLATFORMID=netbsd_powerpc
5147 PLATFORMID=netbsd_sparc
5152 PLATFORMID=netbsd_x86_64
5155 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5170 PLATFORMID=openbsd_x86
5175 PLATFORMID=openbsd_x86_64
5178 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5181 SOLARINC="$SOLARINC -I/usr/local/include"
5194 PLATFORMID=solaris_x86
5199 PLATFORMID=solaris_sparc
5204 PLATFORMID=solaris_sparc64
5207 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5210 SOLARINC="$SOLARINC -I/usr/local/include"
5223 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5228 PLATFORMID=linux_x86
5232 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5236 if test "$with_x" = "no"; then
5237 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5241 if test "$enable_gui" = "no"; then
5242 if test "$using_x11" != yes; then
5243 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5248 AC_DEFINE(HAVE_FEATURE_UI)
5250 AC_SUBST(DISABLE_GUI)
5252 if test "$using_x11" = yes; then
5253 if test "$USING_X11" = TRUE; then
5254 AC_DEFINE(USING_X11)
5259 if test "$USING_X11" = TRUE; then
5260 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5264 WORKDIR="${BUILDDIR}/workdir"
5265 INSTDIR="${BUILDDIR}/instdir"
5266 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5267 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5268 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5276 AC_SUBST([INSTROOT])
5277 AC_SUBST([INSTROOTBASE])
5281 AC_SUBST(PLATFORMID)
5282 AC_SUBST(WINDOWS_X64)
5283 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5285 if test "$OS" = WNT -a "$COM" = MSC; then
5287 INTEL) CPPU_ENV=msci ;;
5288 X86_64) CPPU_ENV=mscx ;;
5289 AARCH64) CPPU_ENV=msca ;;
5291 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5299 dnl ===================================================================
5300 dnl Test which package format to use
5301 dnl ===================================================================
5302 AC_MSG_CHECKING([which package format to use])
5303 if test -n "$with_package_format" -a "$with_package_format" != no; then
5304 for i in $with_package_format; do
5306 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5309 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5310 aix - AIX software distribution
5311 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5312 deb - Debian software distribution
5313 pkg - Solaris software distribution
5314 rpm - RedHat software distribution
5316 LibreOffice additionally supports:
5317 archive - .tar.gz or .zip
5319 installed - installation tree
5325 # fakeroot is needed to ensure correct file ownerships/permissions
5326 # inside deb packages and tar archives created on Linux and Solaris.
5327 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5328 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5329 if test "$FAKEROOT" = "no"; then
5331 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5334 PKGFORMAT="$with_package_format"
5335 AC_MSG_RESULT([$PKGFORMAT])
5338 AC_MSG_RESULT([none])
5342 dnl ===================================================================
5343 dnl handle help related options
5345 dnl If you change help related options, please update README.help
5346 dnl ===================================================================
5353 AC_MSG_CHECKING([which help to build])
5354 if test -n "$with_help" -a "$with_help" != "no"; then
5355 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5356 BUILD_TYPE="$BUILD_TYPE HELP"
5357 case "$with_help" in
5359 ENABLE_HTMLHELP=TRUE
5361 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5362 AC_MSG_RESULT([HTML (local)])
5365 ENABLE_HTMLHELP=TRUE
5367 AC_MSG_RESULT([HTML (online)])
5371 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5372 AC_MSG_RESULT([XML (local)])
5375 AC_MSG_ERROR([Unknown --with-help=$with_help])
5382 AC_MSG_CHECKING([if we need to build the help index tooling])
5383 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5384 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5385 AC_MSG_RESULT([yes])
5390 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5391 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5392 if test "$HELP_ONLINE" != TRUE; then
5393 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5395 case "$with_omindex" in
5397 HELP_OMINDEX_PAGE=TRUE
5398 AC_MSG_RESULT([SERVER])
5401 AC_MSG_RESULT([NOXAP])
5404 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5411 AC_MSG_CHECKING([whether to include the XML-help support])
5412 if test "$enable_xmlhelp" = yes; then
5413 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5414 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5415 AC_MSG_RESULT([yes])
5417 if test "$with_help" = yes; then
5418 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5423 dnl Test whether to integrate helppacks into the product's installer
5424 AC_MSG_CHECKING([for helppack integration])
5425 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5426 AC_MSG_RESULT([no integration])
5428 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5429 AC_MSG_RESULT([integration])
5432 AC_SUBST([ENABLE_HTMLHELP])
5433 AC_SUBST([HELP_OMINDEX_PAGE])
5434 AC_SUBST([HELP_ONLINE])
5435 # WITH_HELPPACKS is used only in configure
5437 dnl ===================================================================
5438 dnl Set up a different compiler to produce tools to run on the build
5439 dnl machine when doing cross-compilation
5440 dnl ===================================================================
5442 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5443 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5444 if test "$cross_compiling" = "yes"; then
5445 AC_MSG_CHECKING([for BUILD platform configuration])
5447 rm -rf CONF-FOR-BUILD config_build.mk
5448 mkdir CONF-FOR-BUILD
5449 # Here must be listed all files needed when running the configure script. In particular, also
5450 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5451 # keep them in the same order as there.
5452 (cd $SRC_ROOT && tar cf - \
5454 bin/get_config_variables \
5455 solenv/bin/getcompver.awk \
5456 solenv/inc/langlist.mk \
5459 config_host_lang.mk.in \
5461 bin/bffvalidator.sh.in \
5462 bin/odfvalidator.sh.in \
5463 bin/officeotron.sh.in \
5464 hardened_runtime.xcent.in \
5465 instsetoo_native/util/openoffice.lst.in \
5467 sysui/desktop/macosx/Info.plist.in \
5468 .vscode/vs-code-template.code-workspace.in \
5470 | (cd CONF-FOR-BUILD && tar xf -)
5471 cp configure CONF-FOR-BUILD
5472 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5474 unset COM USING_X11 OS CPUNAME
5475 unset CC CXX SYSBASE CFLAGS
5476 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5477 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5478 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5479 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5480 if test -n "$CC_FOR_BUILD"; then
5481 export CC="$CC_FOR_BUILD"
5482 CC_BASE=`first_arg_basename "$CC"`
5484 if test -n "$CXX_FOR_BUILD"; then
5485 export CXX="$CXX_FOR_BUILD"
5486 CXX_BASE=`first_arg_basename "$CXX"`
5488 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5491 # Handle host configuration, which affects the cross-toolset too
5493 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5494 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5495 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5496 if test -n "$ENABLE_JAVA"; then
5498 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5500 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5501 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5504 if test -z "$with_jdk_home"; then
5505 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.])
5510 sub_conf_opts="$sub_conf_opts --without-java"
5512 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5513 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5514 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5515 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5516 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5517 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5519 # Don't bother having configure look for stuff not needed for the build platform anyway
5520 sub_conf_defaults=" \
5521 --build="$build_alias" \
5522 --disable-cairo-canvas \
5524 --disable-firebird-sdbc \
5526 --disable-gstreamer-1-0 \
5529 --disable-mariadb-sdbc \
5531 --disable-online-update \
5533 --disable-pdfimport \
5534 --disable-postgresql-sdbc \
5536 --enable-icecream="$enable_icecream" \
5539 --with-parallelism="$with_parallelism" \
5540 --with-theme="$with_theme" \
5541 --with-tls=openssl \
5543 echo " Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5545 $sub_conf_defaults \
5547 $with_build_platform_configure_options \
5549 2>&1 | sed -e 's/^/ /'
5550 if test [${PIPESTATUS[0]}] -ne 0; then
5551 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5554 # filter permitted build targets
5555 PERMITTED_BUILD_TARGETS="
5588 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5589 # newlined lists, to use grep as a filter
5590 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5591 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5592 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5593 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5595 cp config_host.mk ../config_build.mk
5596 cp config_host_lang.mk ../config_build_lang.mk
5597 mv config.log ../config.Build.log
5598 mkdir -p ../config_build
5599 mv config_host/*.h ../config_build
5600 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5602 # all these will get a _FOR_BUILD postfix
5603 DIRECT_FOR_BUILD_SETTINGS="
5614 LIBO_URE_MISC_FOLDER
5620 # these overwrite host config with build config
5621 OVERWRITING_SETTINGS="
5626 JAVA_CLASSPATH_NOT_SET
5634 # these need some special handling
5635 EXTRA_HANDLED_SETTINGS="
5642 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5646 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5647 echo "$line" >>build-config
5649 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5651 VV=`eval "echo $VV"`
5652 if test -n "$VV"; then
5653 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5654 echo "$line" >>build-config
5658 for V in $OVERWRITING_SETTINGS; do
5660 VV=`eval "echo $VV"`
5661 if test -n "$VV"; then
5662 line=${V}='${'${V}:-$VV'}'
5663 echo "$line" >>build-config
5667 for V in INSTDIR INSTROOT WORKDIR; do
5669 VV=`eval "echo $VV"`
5670 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5671 if test -n "$VV"; then
5672 line="${V}_FOR_BUILD='$VV'"
5673 echo "$line" >>build-config
5678 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5679 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])
5680 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5681 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5683 eval `cat CONF-FOR-BUILD/build-config`
5685 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5687 rm -rf CONF-FOR-BUILD
5691 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5692 CXX_FOR_BUILD="$CXX"
5693 INSTDIR_FOR_BUILD="$INSTDIR"
5694 INSTROOT_FOR_BUILD="$INSTROOT"
5695 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5696 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5697 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5698 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5699 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5700 WORKDIR_FOR_BUILD="$WORKDIR"
5702 AC_SUBST(OS_FOR_BUILD)
5703 AC_SUBST(INSTDIR_FOR_BUILD)
5704 AC_SUBST(INSTROOT_FOR_BUILD)
5705 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5706 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5707 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5708 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5709 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5710 AC_SUBST(WORKDIR_FOR_BUILD)
5711 AC_SUBST(CC_FOR_BUILD)
5712 AC_SUBST(CXX_FOR_BUILD)
5713 AC_SUBST(CPPU_ENV_FOR_BUILD)
5715 dnl ===================================================================
5716 dnl Check for syslog header
5717 dnl ===================================================================
5718 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5720 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5721 dnl ===================================================================
5722 AC_MSG_CHECKING([whether to turn warnings to errors])
5723 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5724 ENABLE_WERROR="TRUE"
5725 PYTHONWARNINGS="error"
5726 AC_MSG_RESULT([yes])
5728 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5729 ENABLE_WERROR="TRUE"
5730 PYTHONWARNINGS="error"
5731 AC_MSG_RESULT([yes])
5736 AC_SUBST(ENABLE_WERROR)
5737 AC_SUBST(PYTHONWARNINGS)
5739 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5740 dnl ===================================================================
5741 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5742 if test -z "$enable_assert_always_abort"; then
5743 if test "$ENABLE_DEBUG" = TRUE; then
5744 enable_assert_always_abort=yes
5746 enable_assert_always_abort=no
5749 if test "$enable_assert_always_abort" = "yes"; then
5750 ASSERT_ALWAYS_ABORT="TRUE"
5751 AC_MSG_RESULT([yes])
5753 ASSERT_ALWAYS_ABORT="FALSE"
5756 AC_SUBST(ASSERT_ALWAYS_ABORT)
5758 # Determine whether to use ooenv for the instdir installation
5759 # ===================================================================
5760 if test $_os != "WINNT" -a $_os != "Darwin"; then
5761 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5762 if test -z "$enable_ooenv"; then
5763 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5769 if test "$enable_ooenv" = "no"; then
5773 AC_MSG_RESULT([yes])
5776 AC_SUBST(ENABLE_OOENV)
5778 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5779 if test "$enable_qt5" = "no"; then
5780 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5786 dnl ===================================================================
5787 dnl check for cups support
5788 dnl ===================================================================
5790 AC_MSG_CHECKING([whether to enable CUPS support])
5791 if test "$test_cups" = yes -a "$enable_cups" != no; then
5793 AC_MSG_RESULT([yes])
5795 AC_MSG_CHECKING([whether cups support is present])
5796 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5797 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5798 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5799 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5805 AC_SUBST(ENABLE_CUPS)
5808 if test "$using_freetype_fontconfig" = yes; then
5809 AC_MSG_CHECKING([which fontconfig to use])
5811 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5812 AC_MSG_RESULT([external])
5813 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5814 SYSTEM_FONTCONFIG=TRUE
5815 FilterLibs "${FONTCONFIG_LIBS}"
5816 FONTCONFIG_LIBS="${filteredlibs}"
5817 elif test "$using_freetype_fontconfig" = yes; then
5818 AC_MSG_RESULT([internal])
5819 BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5821 AC_SUBST(FONTCONFIG_CFLAGS)
5822 AC_SUBST(FONTCONFIG_LIBS)
5823 AC_SUBST([SYSTEM_FONTCONFIG])
5825 dnl whether to find & fetch external tarballs?
5826 dnl ===================================================================
5827 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5828 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5829 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5831 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5834 if test -z "$TARFILE_LOCATION"; then
5835 if test -d "$SRC_ROOT/src" ; then
5836 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5837 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5839 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5841 AbsolutePath "$TARFILE_LOCATION"
5842 PathFormat "${absolute_path}"
5843 TARFILE_LOCATION="${formatted_path}"
5845 AC_SUBST(TARFILE_LOCATION)
5847 AC_MSG_CHECKING([whether we want to fetch tarballs])
5848 if test "$enable_fetch_external" != "no"; then
5849 if test "$with_all_tarballs" = "yes"; then
5850 AC_MSG_RESULT([yes, all of them])
5851 DO_FETCH_TARBALLS="ALL"
5853 AC_MSG_RESULT([yes, if we use them])
5854 DO_FETCH_TARBALLS="TRUE"
5860 AC_SUBST(DO_FETCH_TARBALLS)
5862 dnl Test whether to include MySpell dictionaries
5863 dnl ===================================================================
5864 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5865 if test "$with_myspell_dicts" = "yes"; then
5866 AC_MSG_RESULT([yes])
5867 WITH_MYSPELL_DICTS=TRUE
5868 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5869 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5874 AC_SUBST(WITH_MYSPELL_DICTS)
5876 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5877 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5878 if test "$with_system_dicts" = yes; then
5879 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5881 with_system_dicts=no
5884 AC_MSG_CHECKING([whether to use dicts from external paths])
5885 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5886 AC_MSG_RESULT([yes])
5888 AC_MSG_CHECKING([for spelling dictionary directory])
5889 if test -n "$with_external_dict_dir"; then
5890 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5892 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5893 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5894 DICT_SYSTEM_DIR=file:///usr/share/myspell
5897 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5898 AC_MSG_CHECKING([for hyphenation patterns directory])
5899 if test -n "$with_external_hyph_dir"; then
5900 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5902 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5904 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5905 AC_MSG_CHECKING([for thesaurus directory])
5906 if test -n "$with_external_thes_dir"; then
5907 THES_SYSTEM_DIR=file://$with_external_thes_dir
5909 THES_SYSTEM_DIR=file:///usr/share/mythes
5911 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5916 AC_SUBST(SYSTEM_DICTS)
5917 AC_SUBST(DICT_SYSTEM_DIR)
5918 AC_SUBST(HYPH_SYSTEM_DIR)
5919 AC_SUBST(THES_SYSTEM_DIR)
5921 dnl ===================================================================
5922 dnl Precompiled headers.
5924 AC_MSG_CHECKING([whether to enable pch feature])
5925 if test -z "$enable_pch"; then
5926 if test "$_os" = "WINNT"; then
5927 # Enabled by default on Windows.
5929 # never use sccache on auto-enabled PCH builds, except if requested explicitely
5930 if test -z "$enable_ccache" -a "$SCCACHE"; then
5937 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5938 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5940 if test "$enable_pch" = "system"; then
5942 AC_MSG_RESULT([yes (system headers)])
5943 elif test "$enable_pch" = "base"; then
5945 AC_MSG_RESULT([yes (system and base headers)])
5946 elif test "$enable_pch" = "normal"; then
5948 AC_MSG_RESULT([yes (normal)])
5949 elif test "$enable_pch" = "full"; then
5951 AC_MSG_RESULT([yes (full)])
5952 elif test "$enable_pch" = "yes"; then
5953 # Pick a suitable default.
5954 if test "$GCC" = "yes"; then
5955 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5956 # while making the PCHs larger and rebuilds more likely.
5958 AC_MSG_RESULT([yes (system and base headers)])
5960 # With MSVC the highest level makes a significant difference,
5961 # and it was the default when there used to be no PCH levels.
5963 AC_MSG_RESULT([yes (full)])
5965 elif test "$enable_pch" = "no"; then
5968 AC_MSG_ERROR([Unknown value for --enable-pch])
5970 AC_SUBST(ENABLE_PCH)
5971 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5972 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5973 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5974 if test "$CCACHE_BIN" != "not found"; then
5975 AC_MSG_CHECKING([ccache version])
5976 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5977 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5978 AC_MSG_RESULT([$CCACHE_VERSION])
5979 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5980 if test "$CCACHE_NUMVER" -gt "030701"; then
5981 AC_MSG_RESULT([yes])
5983 AC_MSG_RESULT([no (not newer than 3.7.1)])
5989 PCH_INSTANTIATE_TEMPLATES=
5990 if test -n "$ENABLE_PCH"; then
5991 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5993 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5994 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5996 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6002 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6004 BUILDING_PCH_WITH_OBJ=
6005 if test -n "$ENABLE_PCH"; then
6006 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6008 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6009 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6011 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6017 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6022 if test "$COM" = MSC; then
6023 fpch_prefix="-Xclang "
6025 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6026 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6028 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6029 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6031 PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
6032 PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
6035 if test -n "$PCH_CODEGEN"; then
6041 AC_SUBST(PCH_CODEGEN)
6042 AC_SUBST(PCH_NO_CODEGEN)
6044 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6045 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6047 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6048 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6050 if test -n "$PCH_DEBUGINFO"; then
6056 AC_SUBST(PCH_DEBUGINFO)
6060 AC_MSG_CHECKING([the GNU Make version])
6061 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6062 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6063 if test "$_make_longver" -ge "038200"; then
6064 AC_MSG_RESULT([$GNUMAKE $_make_version])
6066 elif test "$_make_longver" -ge "038100"; then
6067 if test "$build_os" = "cygwin"; then
6068 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6070 AC_MSG_RESULT([$GNUMAKE $_make_version])
6072 dnl ===================================================================
6073 dnl Search all the common names for sha1sum
6074 dnl ===================================================================
6075 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6076 if test -z "$SHA1SUM"; then
6077 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6078 elif test "$SHA1SUM" = "openssl"; then
6079 SHA1SUM="openssl sha1"
6081 AC_MSG_CHECKING([for GNU Make bug 20033])
6082 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6083 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6084 A := \$(wildcard *.a)
6088 <TAB>@echo survived bug20033.
6092 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6105 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6106 <TAB>\$(call d1,\$(CHECKSUM)),\
6107 <TAB>\$(call d2,\$(CHECKSUM)))
6109 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6110 no_parallelism_make="YES"
6111 AC_MSG_RESULT([yes, disable parallelism])
6113 AC_MSG_RESULT([no, keep parallelism enabled])
6115 rm -rf $TESTGMAKEBUG20033
6117 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6120 # find if gnumake support file function
6121 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6122 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6123 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6124 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6126 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6127 \$(file >test.txt,Success )
6134 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6135 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6136 HAVE_GNUMAKE_FILE_FUNC=TRUE
6137 AC_MSG_RESULT([yes])
6141 rm -rf $TESTGMAKEFILEFUNC
6142 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6144 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6146 if test "$_make_ver_check" = ""; then
6150 HAVE_LD_HASH_STYLE=FALSE
6151 WITH_LINKER_HASH_STYLE=
6152 AC_MSG_CHECKING([for --hash-style gcc linker support])
6153 if test "$GCC" = "yes"; then
6154 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6155 hash_styles="gnu sysv"
6156 elif test "$with_linker_hash_style" = "no"; then
6159 hash_styles="$with_linker_hash_style"
6162 for hash_style in $hash_styles; do
6163 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6164 hash_style_ldflags_save=$LDFLAGS
6165 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6167 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6174 HAVE_LD_HASH_STYLE=TRUE
6175 WITH_LINKER_HASH_STYLE=$hash_style
6177 [HAVE_LD_HASH_STYLE=FALSE],
6178 [HAVE_LD_HASH_STYLE=FALSE])
6179 LDFLAGS=$hash_style_ldflags_save
6182 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6183 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6187 LDFLAGS=$hash_style_ldflags_save
6191 AC_SUBST(HAVE_LD_HASH_STYLE)
6192 AC_SUBST(WITH_LINKER_HASH_STYLE)
6194 dnl ===================================================================
6195 dnl Check whether there's a Perl version available.
6196 dnl ===================================================================
6197 if test -z "$with_perl_home"; then
6198 AC_PATH_PROG(PERL, perl)
6200 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6201 _perl_path="$with_perl_home/bin/perl"
6202 if test -x "$_perl_path"; then
6205 AC_MSG_ERROR([$_perl_path not found])
6209 dnl ===================================================================
6210 dnl Testing for Perl version 5 or greater.
6211 dnl $] is the Perl version variable, it is returned as an integer
6212 dnl ===================================================================
6213 if test "$PERL"; then
6214 AC_MSG_CHECKING([the Perl version])
6215 ${PERL} -e "exit($]);"
6217 if test "$_perl_version" -lt 5; then
6218 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6220 AC_MSG_RESULT([Perl $_perl_version])
6222 AC_MSG_ERROR([Perl not found, install Perl 5])
6225 dnl ===================================================================
6226 dnl Testing for required Perl modules
6227 dnl ===================================================================
6229 AC_MSG_CHECKING([for required Perl modules])
6230 perl_use_string="use Cwd ; use Digest::MD5"
6231 if test "$_os" = "WINNT"; then
6232 if test -n "$PKGFORMAT"; then
6233 for i in $PKGFORMAT; do
6236 # for getting fonts versions to use in MSI
6237 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6243 if test "$with_system_hsqldb" = "yes"; then
6244 perl_use_string="$perl_use_string ; use Archive::Zip"
6246 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6247 # OpenSSL needs that to build
6248 perl_use_string="$perl_use_string ; use FindBin"
6250 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6251 AC_MSG_RESULT([all modules found])
6253 AC_MSG_RESULT([failed to find some modules])
6254 # Find out which modules are missing.
6255 for i in $perl_use_string; do
6256 if test "$i" != "use" -a "$i" != ";"; then
6257 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6258 missing_perl_modules="$missing_perl_modules $i"
6263 The missing Perl modules are: $missing_perl_modules
6264 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6267 dnl ===================================================================
6268 dnl Check for pkg-config
6269 dnl ===================================================================
6270 if test "$_os" != "WINNT"; then
6274 if test "$_os" != "WINNT"; then
6276 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6277 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6278 # explicitly. Or put /path/to/compiler in PATH yourself.
6280 # Use wrappers for LTO
6281 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6282 AC_CHECK_TOOL(AR,gcc-ar)
6283 AC_CHECK_TOOL(NM,gcc-nm)
6284 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6286 AC_CHECK_TOOL(AR,ar)
6287 AC_CHECK_TOOL(NM,nm)
6288 AC_CHECK_TOOL(RANLIB,ranlib)
6290 AC_CHECK_TOOL(OBJDUMP,objdump)
6291 AC_CHECK_TOOL(READELF,readelf)
6292 AC_CHECK_TOOL(STRIP,strip)
6298 AC_SUBST(PKG_CONFIG)
6299 AC_SUBST(PKG_CONFIG_PATH)
6300 AC_SUBST(PKG_CONFIG_LIBDIR)
6305 dnl ===================================================================
6306 dnl pkg-config checks on macOS
6307 dnl ===================================================================
6309 if test $_os = Darwin; then
6310 AC_MSG_CHECKING([for bogus pkg-config])
6311 if test -n "$PKG_CONFIG"; then
6312 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6313 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6315 if test "$enable_bogus_pkg_config" = "yes"; then
6316 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6318 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.])
6322 AC_MSG_RESULT([no, good])
6328 # Return value: $csctest
6332 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6333 if test -n "$regvalue"; then
6341 # Return value: $altest
6345 # We need this check to detect 4.6.1 or above.
6346 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6347 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6348 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6354 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6355 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6356 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6367 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6368 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6369 if test -n "$regvalue"; then
6376 find_winsdk_version()
6378 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6379 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6381 unset winsdktest winsdkbinsubdir winsdklibsubdir
6385 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6386 if test -n "$regvalue"; then
6387 winsdktest=$regvalue
6388 winsdklibsubdir=win8
6393 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6394 if test -n "$regvalue"; then
6395 winsdktest=$regvalue
6396 winsdklibsubdir=winv6.3
6401 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6402 if test -n "$regvalue"; then
6403 winsdktest=$regvalue
6404 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6405 if test -n "$regvalue"; then
6406 winsdkbinsubdir="$regvalue".0
6407 winsdklibsubdir=$winsdkbinsubdir
6408 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6409 local tmppath_unix=$(cygpath -u "$tmppath")
6410 # test exist the SDK path
6411 if test -d "$tmppath_unix"; then
6412 # when path is convertible to a short path then path is okay
6413 cygpath -d "$tmppath" >/dev/null 2>&1
6414 if test $? -ne 0; then
6415 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6418 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6429 # Return value: From find_winsdk_version
6433 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6434 find_winsdk_version $ver
6435 if test -n "$winsdktest"; then
6443 # Return value: $msmdir
6445 AC_MSG_CHECKING([for MSVC merge modules directory])
6449 dnl Order my_msm_files in increasing order. Then check the directories returned
6450 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6451 dnl the result will be the highest MSM version found in the highest directory.
6455 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6458 for f in $my_msm_files; do
6459 echo "$as_me:$LINENO: searching for $f" >&5
6465 for f in ${my_msm_files}; do
6466 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6467 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6468 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6469 if test -e "$my_msm_dir${f}"; then
6477 if test -n "$msmdir"; then
6478 msmdir=`cygpath -m "$msmdir"`
6479 AC_MSG_RESULT([$msmdir])
6481 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6482 AC_MSG_FAILURE([not found])
6484 AC_MSG_WARN([not found (check config.log)])
6485 add_warning "MSM none of ${my_msm_files} found"
6490 find_msvc_x64_dlls()
6492 # Return value: $msvcdllpath, $msvcdlls
6494 AC_MSG_CHECKING([for MSVC x64 DLL path])
6496 dnl Order crtver in increasing order. Then check the directories returned by
6497 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6498 dnl the result will be the highest CRT version found in the highest directory.
6500 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6503 for crtver in 141 142 143; do
6504 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6505 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6506 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6507 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6513 AC_MSG_RESULT([$msvcdllpath])
6514 AC_MSG_CHECKING([for MSVC x64 DLLs])
6515 msvcdlls="msvcp140.dll vcruntime140.dll"
6516 for dll in $msvcdlls; do
6517 if ! test -f "$msvcdllpath/$dll"; then
6518 AC_MSG_FAILURE([missing $dll])
6521 AC_MSG_RESULT([found all ($msvcdlls)])
6524 dnl =========================================
6525 dnl Check for the Windows SDK.
6526 dnl =========================================
6527 if test "$_os" = "WINNT"; then
6528 AC_MSG_CHECKING([for Windows SDK])
6529 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6531 WINDOWS_SDK_HOME=$winsdktest
6533 # normalize if found
6534 if test -n "$WINDOWS_SDK_HOME"; then
6535 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6536 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6539 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6542 if test -n "$WINDOWS_SDK_HOME"; then
6543 # Remove a possible trailing backslash
6544 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6546 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6547 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6548 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6549 have_windows_sdk_headers=yes
6550 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6551 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6552 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6553 have_windows_sdk_headers=yes
6554 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6555 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6556 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6557 have_windows_sdk_headers=yes
6559 have_windows_sdk_headers=no
6562 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6563 have_windows_sdk_libs=yes
6564 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6565 have_windows_sdk_libs=yes
6567 have_windows_sdk_libs=no
6570 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6571 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6572 the Windows SDK are installed.])
6576 if test -z "$WINDOWS_SDK_HOME"; then
6577 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6578 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6579 WINDOWS_SDK_VERSION=80
6580 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6581 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6582 WINDOWS_SDK_VERSION=81
6583 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6584 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6585 WINDOWS_SDK_VERSION=10
6586 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6588 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6590 PathFormat "$WINDOWS_SDK_HOME"
6591 WINDOWS_SDK_HOME="$formatted_path"
6592 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6593 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6594 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6595 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6596 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6597 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6598 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6602 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6603 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6604 dnl but not in v8.0), so allow this to be overridden with a
6605 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6606 dnl and configuration error if no WiLangId.vbs is found would arguably be
6607 dnl better, but I do not know under which conditions exactly it is needed by
6609 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6610 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6611 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6612 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6613 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6614 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6616 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6617 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6618 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6620 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6621 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6622 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6625 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6626 if test -n "$with_package_format" -a "$with_package_format" != no; then
6627 for i in "$with_package_format"; do
6628 if test "$i" = "msi"; then
6629 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6630 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6637 AC_SUBST(WINDOWS_SDK_HOME)
6638 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6639 AC_SUBST(WINDOWS_SDK_VERSION)
6640 AC_SUBST(WINDOWS_SDK_WILANGID)
6642 if test "$build_os" = "cygwin"; then
6643 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6644 dnl dir, it also determines that dir's path w/o an arch segment if any,
6645 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6646 AC_MSG_CHECKING([for midl.exe])
6649 if test -n "$winsdkbinsubdir" \
6650 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6652 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6653 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6654 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6655 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6656 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6657 elif test -f "$winsdktest/Bin/midl.exe"; then
6658 MIDL_PATH=$winsdktest/Bin
6659 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6661 if test ! -f "$MIDL_PATH/midl.exe"; then
6662 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6664 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6667 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6668 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6670 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6671 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6672 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6673 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6674 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6675 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6676 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6677 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6678 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6679 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6680 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6681 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6683 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6687 AC_MSG_CHECKING([for csc.exe])
6689 if test -f "$csctest/csc.exe"; then
6692 if test ! -f "$CSC_PATH/csc.exe"; then
6693 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6695 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6698 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6701 AC_MSG_CHECKING([for al.exe])
6703 if test -n "$winsdkbinsubdir" \
6704 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6706 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6707 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6708 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6709 elif test -f "$winsdktest/Bin/al.exe"; then
6710 AL_PATH="$winsdktest/Bin"
6713 if test -z "$AL_PATH"; then
6715 if test -f "$altest/bin/al.exe"; then
6716 AL_PATH="$altest/bin"
6717 elif test -f "$altest/al.exe"; then
6721 if test ! -f "$AL_PATH/al.exe"; then
6722 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6724 AC_MSG_RESULT([$AL_PATH/al.exe])
6727 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6729 dnl Check mscoree.lib / .NET Framework dir
6730 AC_MSG_CHECKING(.NET Framework)
6732 PathFormat "$frametest"
6733 frametest="$formatted_path"
6734 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6735 DOTNET_FRAMEWORK_HOME="$frametest"
6738 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6739 DOTNET_FRAMEWORK_HOME="$winsdktest"
6742 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
6743 AC_MSG_ERROR([mscoree.lib not found])
6745 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6747 PathFormat "$MIDL_PATH"
6748 MIDL_PATH="$formatted_path"
6750 PathFormat "$AL_PATH"
6751 AL_PATH="$formatted_path"
6753 PathFormat "$DOTNET_FRAMEWORK_HOME"
6754 DOTNET_FRAMEWORK_HOME="$formatted_path"
6756 PathFormat "$CSC_PATH"
6757 CSC_PATH="$formatted_path"
6760 dnl ===================================================================
6761 dnl Testing for C++ compiler and version...
6762 dnl ===================================================================
6764 if test "$_os" != "WINNT"; then
6765 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6766 save_CXXFLAGS=$CXXFLAGS
6768 CXXFLAGS=$save_CXXFLAGS
6769 if test -z "$CXX_BASE"; then
6770 CXX_BASE=`first_arg_basename "$CXX"`
6774 dnl check for GNU C++ compiler version
6775 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6776 AC_MSG_CHECKING([the GNU C++ compiler version])
6778 _gpp_version=`$CXX -dumpversion`
6779 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6781 if test "$_gpp_majmin" -lt "700"; then
6782 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6784 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6787 dnl see https://code.google.com/p/android/issues/detail?id=41770
6791 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6792 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6793 #include <bits/c++config.h>]],[[
6794 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6795 && !defined(_GLIBCXX__PTHREADS) \
6796 && !defined(_GLIBCXX_HAS_GTHREADS)
6799 ]])],[AC_MSG_RESULT([yes])
6800 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6802 if test $glibcxx_threads = yes; then
6803 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6806 AC_SUBST(BOOST_CXXFLAGS)
6809 # prefx CXX with ccache if needed
6811 if test "$CCACHE" != ""; then
6812 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6814 save_CXXFLAGS=$CXXFLAGS
6815 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6816 # msvc does not fail on unknown options, check stdout
6817 if test "$COM" = MSC; then
6818 CXXFLAGS="$CXXFLAGS -nologo"
6820 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6821 ac_cxx_werror_flag=yes
6822 dnl an empty program will do, we're checking the compiler flags
6823 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6824 [use_ccache=yes], [use_ccache=no])
6825 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6826 AC_MSG_RESULT([yes])
6829 CXX_BASE="ccache $CXX_BASE"
6832 CXXFLAGS=$save_CXXFLAGS
6833 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6837 dnl ===================================================================
6838 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6839 dnl ===================================================================
6841 if test "$_os" != "WINNT"; then
6844 dnl Check whether there's a C pre-processor.
6849 dnl ===================================================================
6850 dnl Find integral type sizes and alignments
6851 dnl ===================================================================
6853 if test "$_os" != "WINNT"; then
6855 AC_CHECK_SIZEOF(long)
6856 AC_CHECK_SIZEOF(short)
6857 AC_CHECK_SIZEOF(int)
6858 AC_CHECK_SIZEOF(long long)
6859 AC_CHECK_SIZEOF(double)
6860 AC_CHECK_SIZEOF(void*)
6861 AC_CHECK_SIZEOF(size_t)
6863 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6864 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6865 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6866 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6867 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6868 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6870 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6871 m4_pattern_allow([AC_CHECK_ALIGNOF])
6872 m4_ifdef([AC_CHECK_ALIGNOF],
6874 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6875 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6876 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6877 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6880 case "$_os-$host_cpu" in
6882 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6883 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6884 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6885 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6888 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6889 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6890 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6891 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6894 if test -z "$ac_cv_alignof_short" -o \
6895 -z "$ac_cv_alignof_int" -o \
6896 -z "$ac_cv_alignof_long" -o \
6897 -z "$ac_cv_alignof_double"; then
6898 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.])
6904 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6905 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6906 if test $ac_cv_sizeof_long -eq 8; then
6907 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6908 elif test $ac_cv_sizeof_double -eq 8; then
6909 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6911 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6914 dnl Check for large file support
6916 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6917 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6919 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6920 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6924 SAL_TYPES_SIZEOFSHORT=2
6925 SAL_TYPES_SIZEOFINT=4
6926 SAL_TYPES_SIZEOFLONG=4
6927 SAL_TYPES_SIZEOFLONGLONG=8
6928 if test $WIN_HOST_BITS -eq 32; then
6929 SAL_TYPES_SIZEOFPOINTER=4
6932 SAL_TYPES_SIZEOFPOINTER=8
6935 SAL_TYPES_ALIGNMENT2=2
6936 SAL_TYPES_ALIGNMENT4=4
6937 SAL_TYPES_ALIGNMENT8=8
6940 AC_SUBST(LFS_CFLAGS)
6941 AC_SUBST(SIZEOF_SIZE_T)
6943 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6944 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6945 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6946 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6947 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6948 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6949 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6950 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6952 dnl ===================================================================
6953 dnl Check whether to enable runtime optimizations
6954 dnl ===================================================================
6955 ENABLE_RUNTIME_OPTIMIZATIONS=
6956 AC_MSG_CHECKING([whether to enable runtime optimizations])
6957 if test -z "$enable_runtime_optimizations"; then
6961 enable_runtime_optimizations=no
6967 if test "$enable_runtime_optimizations" != no; then
6968 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6969 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6970 AC_MSG_RESULT([yes])
6974 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6976 dnl ===================================================================
6977 dnl Check if valgrind headers are available
6978 dnl ===================================================================
6980 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6981 prev_cppflags=$CPPFLAGS
6982 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6983 # or where does it come from?
6984 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6985 AC_CHECK_HEADER([valgrind/valgrind.h],
6986 [ENABLE_VALGRIND=TRUE])
6987 CPPFLAGS=$prev_cppflags
6989 AC_SUBST([ENABLE_VALGRIND])
6990 if test -z "$ENABLE_VALGRIND"; then
6991 if test "$with_valgrind" = yes; then
6992 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6996 AC_SUBST([VALGRIND_CFLAGS])
6999 dnl ===================================================================
7000 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7001 dnl ===================================================================
7003 # We need at least the sys/sdt.h include header.
7004 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7005 if test "$SDT_H_FOUND" = "TRUE"; then
7006 # Found sys/sdt.h header, now make sure the c++ compiler works.
7007 # Old g++ versions had problems with probes in constructors/destructors.
7008 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7010 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7011 #include <sys/sdt.h>
7019 ProbeClass(int& v, const char *n) : ref(v), name(n)
7021 DTRACE_PROBE2(_test_, cons, name, ref);
7024 void method(int min)
7026 DTRACE_PROBE3(_test_, meth, name, ref, min);
7032 DTRACE_PROBE2(_test_, dest, name, ref);
7037 DTRACE_PROBE1(_test_, call, i);
7038 ProbeClass inst = ProbeClass(i, "call");
7040 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7041 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7044 AC_CONFIG_HEADERS([config_host/config_probes.h])
7046 dnl ===================================================================
7048 dnl ===================================================================
7049 HAVE_GCC_STACK_CLASH_PROTECTION=
7050 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7051 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7053 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7055 [AC_LANG_PROGRAM(, [[return 0;]])],
7056 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7057 [AC_MSG_RESULT([no])])
7060 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7062 CFLAGS="$CFLAGS -Werror -mno-avx"
7063 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7065 if test "$HAVE_GCC_AVX" = "TRUE"; then
7066 AC_MSG_RESULT([yes])
7071 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7072 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7074 if (__sync_add_and_fetch(&v, 1) != 1 ||
7075 __sync_sub_and_fetch(&v, 1) != 0)
7077 __sync_synchronize();
7078 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7082 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7083 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7084 AC_MSG_RESULT([yes])
7085 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7090 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7092 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7095 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7097 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7098 AC_MSG_RESULT([yes])
7099 ], [AC_MSG_RESULT([no])])
7102 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7104 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7107 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7109 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7110 AC_MSG_RESULT([yes])
7111 ], [AC_MSG_RESULT([no])])
7114 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7116 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7118 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7120 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7121 AC_MSG_RESULT([yes])
7122 ], [AC_MSG_RESULT([no])])
7125 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7127 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7130 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7132 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7133 AC_MSG_RESULT([yes])
7134 ], [AC_MSG_RESULT([no])])
7137 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7139 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7142 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7144 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7145 AC_MSG_RESULT([yes])
7146 ], [AC_MSG_RESULT([no])])
7149 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7151 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7153 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7155 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7156 AC_MSG_RESULT([yes])
7157 ], [AC_MSG_RESULT([no])])
7160 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7162 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7164 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7166 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7167 AC_MSG_RESULT([yes])
7168 ], [AC_MSG_RESULT([no])])
7171 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7173 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7175 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7177 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7178 AC_MSG_RESULT([yes])
7179 ], [AC_MSG_RESULT([no])])
7182 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7184 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7187 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7189 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7190 AC_MSG_RESULT([yes])
7191 ], [AC_MSG_RESULT([no])])
7194 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7196 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7199 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7201 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7202 AC_MSG_RESULT([yes])
7203 ], [AC_MSG_RESULT([no])])
7207 AC_SUBST(HAVE_GCC_AVX)
7208 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7209 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7211 dnl ===================================================================
7212 dnl Identify the C++ library
7213 dnl ===================================================================
7215 AC_MSG_CHECKING([what the C++ library is])
7218 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7224 [CPP_LIBRARY=GLIBCXX
7225 cpp_library_name="GNU libstdc++"
7228 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7230 #ifndef _LIBCPP_VERSION
7235 cpp_library_name="LLVM libc++"
7236 AC_DEFINE([HAVE_LIBCXX])
7238 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7245 cpp_library_name="Microsoft"
7247 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7248 AC_MSG_RESULT([$cpp_library_name])
7250 AC_SUBST([HAVE_LIBSTDCPP])
7252 dnl ===================================================================
7254 dnl ===================================================================
7255 AC_PATH_PROG(GPERF, gperf)
7256 if test -z "$GPERF"; then
7257 AC_MSG_ERROR([gperf not found but needed. Install it.])
7259 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7260 GPERF=`cygpath -m $GPERF`
7262 AC_MSG_CHECKING([whether gperf is new enough])
7263 my_gperf_ver1=$($GPERF --version | head -n 1)
7264 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7265 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7266 if test "$my_gperf_ver3" -ge 301; then
7267 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7269 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7273 dnl ===================================================================
7274 dnl Check for system libcmis
7275 dnl ===================================================================
7276 # libcmis requires curl and we can't build curl for iOS
7277 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7278 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7283 AC_SUBST(ENABLE_LIBCMIS)
7285 dnl ===================================================================
7287 dnl ===================================================================
7289 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7291 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7292 if test "$with_latest_c__" = yes; then
7293 CXXFLAGS_CXX11=-std:c++latest
7295 CXXFLAGS_CXX11=-std:c++17
7297 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7298 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7299 my_flags='-std=c++17 -std=c++1z'
7300 if test "$with_latest_c__" = yes; then
7301 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7303 for flag in $my_flags; do
7304 if test "$COM" = MSC; then
7305 flag="-Xclang $flag"
7307 save_CXXFLAGS=$CXXFLAGS
7308 CXXFLAGS="$CXXFLAGS $flag -Werror"
7309 if test "$SYSTEM_LIBCMIS" = TRUE; then
7310 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7313 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7314 #include <algorithm>
7315 #include <functional>
7318 #if defined SYSTEM_LIBCMIS
7319 // See ucb/source/ucp/cmis/auth_provider.hxx:
7320 #if !defined __clang__
7321 #pragma GCC diagnostic push
7322 #pragma GCC diagnostic ignored "-Wdeprecated"
7323 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7325 #include <libcmis/libcmis.hxx>
7326 #if !defined __clang__
7327 #pragma GCC diagnostic pop
7331 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7332 std::sort(v.begin(), v.end(), fn);
7334 ]])],[CXXFLAGS_CXX11=$flag])
7336 CXXFLAGS=$save_CXXFLAGS
7337 if test -n "$CXXFLAGS_CXX11"; then
7342 if test -n "$CXXFLAGS_CXX11"; then
7343 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7347 AC_SUBST(CXXFLAGS_CXX11)
7349 if test "$GCC" = "yes"; then
7350 save_CXXFLAGS=$CXXFLAGS
7351 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7353 CXXFLAGS=$save_CXXFLAGS
7354 AC_SUBST(ATOMIC_LIB)
7357 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7358 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7359 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7360 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7361 dnl again towards 4.7.2:
7362 if test $CPP_LIBRARY = GLIBCXX; then
7363 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7365 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7367 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7368 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7369 // GCC 4.7.0: 20120322
7370 // GCC 4.7.1: 20120614
7371 // and using a range check is not possible as the mapping between
7372 // __GLIBCXX__ values and GCC versions is not monotonic
7377 ]])], [AC_MSG_RESULT(no, ok)],
7378 [AC_MSG_ERROR(yes)])
7382 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7383 save_CXXFLAGS=$CXXFLAGS
7384 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7387 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7390 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7406 a thinga[]={{0,0}, {1,1}};
7407 b thingb[]={{0,0}, {1,1}};
7408 size_t i = sizeof(sal_n_array_size(thinga));
7409 size_t j = sizeof(sal_n_array_size(thingb));
7410 return !(i != 0 && j != 0);
7412 ], [ AC_MSG_RESULT(yes) ],
7413 [ AC_MSG_ERROR(no)])
7415 CXXFLAGS=$save_CXXFLAGS
7417 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7418 if test "$GCC" = yes; then
7419 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7421 save_CXXFLAGS=$CXXFLAGS
7422 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7423 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7424 CXXFLAGS=$save_CXXFLAGS
7426 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7427 AC_MSG_RESULT([yes])
7432 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7434 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7436 save_CXXFLAGS=$CXXFLAGS
7437 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7439 #include <algorithm>
7440 #include <initializer_list>
7442 template<typename T> class S {
7446 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7448 constinit S<int> s{3, 2, 1};
7450 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7451 AC_MSG_RESULT([yes])
7452 ], [AC_MSG_RESULT([no])])
7453 CXXFLAGS=$save_CXXFLAGS
7456 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7458 save_CXXFLAGS=$CXXFLAGS
7459 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7460 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7462 #include <type_traits>
7463 // Don't check size_type directly, as it was called index_type before P1872R0:
7464 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7466 AC_DEFINE([HAVE_CPP_SPAN],[1])
7467 AC_MSG_RESULT([yes])
7468 ], [AC_MSG_RESULT([no])])
7469 CXXFLAGS=$save_CXXFLAGS
7472 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7474 save_CXXFLAGS=$CXXFLAGS
7475 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477 struct S1 { S1(S1 &&); };
7479 S1 f(S2 s) { return s; }
7481 AC_DEFINE([HAVE_P1155R3],[1])
7482 AC_MSG_RESULT([yes])
7483 ], [AC_MSG_RESULT([no])])
7484 CXXFLAGS=$save_CXXFLAGS
7487 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7488 HAVE_CXX20_ATOMIC_REF=
7490 save_CXXFLAGS=$CXXFLAGS
7491 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7492 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7495 std::atomic_ref<int> y(x);
7497 HAVE_CXX20_ATOMIC_REF=TRUE
7498 AC_MSG_RESULT([yes])
7499 ], [AC_MSG_RESULT([no])])
7500 CXXFLAGS=$save_CXXFLAGS
7502 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7504 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7505 dnl which is included in -Wextra anyway):
7506 HAVE_WDEPRECATED_COPY_DTOR=
7507 if test "$GCC" = yes; then
7508 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7510 save_CXXFLAGS=$CXXFLAGS
7511 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7512 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7513 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7514 AC_MSG_RESULT([yes])
7515 ], [AC_MSG_RESULT([no])])
7516 CXXFLAGS=$save_CXXFLAGS
7519 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7521 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7522 dnl uninitialized warning for code like
7525 dnl boost::optional<OString> * g(bool b) {
7526 dnl boost::optional<OString> o;
7528 dnl return new boost::optional<OString>(o);
7531 dnl (as is e.g. present, in a slightly more elaborate form, in
7532 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7533 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7534 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7535 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7536 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7538 save_CXXFLAGS=$CXXFLAGS
7539 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7540 if test "$ENABLE_OPTIMIZED" = TRUE; then
7541 CXXFLAGS="$CXXFLAGS -O2"
7543 CXXFLAGS="$CXXFLAGS -O0"
7545 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7554 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7555 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7561 char stg[sizeof (S1)];
7569 ]])], [AC_MSG_RESULT([no])], [
7570 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7571 AC_MSG_RESULT([yes])
7573 CXXFLAGS=$save_CXXFLAGS
7576 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7578 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7579 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7580 dnl hits us e.g. with GCC 10 and --enable-optimized at
7582 dnl In file included from include/rtl/string.hxx:49,
7583 dnl from include/rtl/ustring.hxx:43,
7584 dnl from include/osl/file.hxx:35,
7585 dnl from include/codemaker/global.hxx:28,
7586 dnl from include/codemaker/options.hxx:23,
7587 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7588 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7589 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,
7590 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,
7591 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,
7592 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7593 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7594 dnl 78 | memcpy( buffer, data, length );
7595 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7596 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7597 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7598 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7600 save_CXXFLAGS=$CXXFLAGS
7601 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7602 if test "$ENABLE_OPTIMIZED" = TRUE; then
7603 CXXFLAGS="$CXXFLAGS -O2"
7605 CXXFLAGS="$CXXFLAGS -O0"
7607 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7608 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7609 void fill(char const * begin, char const * end, char c);
7615 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7616 __builtin_strncpy(c.username, "root", sizeof(c.username));
7618 ]])], [AC_MSG_RESULT([no])], [
7619 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7620 AC_MSG_RESULT([yes])
7622 CXXFLAGS=$save_CXXFLAGS
7625 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7627 HAVE_DLLEXPORTINLINES=
7628 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7629 dnl linking e.g. Library_cppuhelper, for whatever reason:
7630 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7631 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7633 save_CXXFLAGS=$CXXFLAGS
7634 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7635 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7636 HAVE_DLLEXPORTINLINES=TRUE
7637 AC_MSG_RESULT([yes])
7638 ], [AC_MSG_RESULT([no])])
7639 CXXFLAGS=$save_CXXFLAGS
7642 AC_SUBST([HAVE_DLLEXPORTINLINES])
7644 dnl ===================================================================
7645 dnl CPU Intrinsics support - SSE, AVX
7646 dnl ===================================================================
7648 CXXFLAGS_INTRINSICS_SSE2=
7649 CXXFLAGS_INTRINSICS_SSSE3=
7650 CXXFLAGS_INTRINSICS_SSE41=
7651 CXXFLAGS_INTRINSICS_SSE42=
7652 CXXFLAGS_INTRINSICS_AVX=
7653 CXXFLAGS_INTRINSICS_AVX2=
7654 CXXFLAGS_INTRINSICS_AVX512=
7655 CXXFLAGS_INTRINSICS_AVX512F=
7656 CXXFLAGS_INTRINSICS_F16C=
7657 CXXFLAGS_INTRINSICS_FMA=
7659 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7660 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7667 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7668 flag_avx512f=-mavx512f
7672 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7673 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7674 # SSE2 seems to be SSE2+.
7675 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7676 # is not empty (and can be tested in gbuild).
7677 flag_sse2=-arch:SSE2
7678 flag_ssse3=-arch:SSE2
7679 flag_sse41=-arch:SSE2
7680 flag_sse42=-arch:SSE2
7682 flag_avx2=-arch:AVX2
7683 flag_avx512=-arch:AVX512
7684 flag_avx512f=-arch:AVX512
7685 # These are part of -arch:AVX2
7686 flag_f16c=-arch:AVX2
7690 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7692 save_CXXFLAGS=$CXXFLAGS
7693 CXXFLAGS="$CXXFLAGS $flag_sse2"
7694 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7695 #include <emmintrin.h>
7697 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7698 c = _mm_xor_si128 (a, b);
7702 [can_compile_sse2=yes],
7703 [can_compile_sse2=no])
7705 CXXFLAGS=$save_CXXFLAGS
7706 AC_MSG_RESULT([${can_compile_sse2}])
7707 if test "${can_compile_sse2}" = "yes" ; then
7708 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7711 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7713 save_CXXFLAGS=$CXXFLAGS
7714 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7715 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7716 #include <tmmintrin.h>
7718 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7719 c = _mm_maddubs_epi16 (a, b);
7723 [can_compile_ssse3=yes],
7724 [can_compile_ssse3=no])
7726 CXXFLAGS=$save_CXXFLAGS
7727 AC_MSG_RESULT([${can_compile_ssse3}])
7728 if test "${can_compile_ssse3}" = "yes" ; then
7729 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7732 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7734 save_CXXFLAGS=$CXXFLAGS
7735 CXXFLAGS="$CXXFLAGS $flag_sse41"
7736 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7737 #include <smmintrin.h>
7739 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7740 c = _mm_cmpeq_epi64 (a, b);
7744 [can_compile_sse41=yes],
7745 [can_compile_sse41=no])
7747 CXXFLAGS=$save_CXXFLAGS
7748 AC_MSG_RESULT([${can_compile_sse41}])
7749 if test "${can_compile_sse41}" = "yes" ; then
7750 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7753 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7755 save_CXXFLAGS=$CXXFLAGS
7756 CXXFLAGS="$CXXFLAGS $flag_sse42"
7757 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7758 #include <nmmintrin.h>
7760 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7761 c = _mm_cmpgt_epi64 (a, b);
7765 [can_compile_sse42=yes],
7766 [can_compile_sse42=no])
7768 CXXFLAGS=$save_CXXFLAGS
7769 AC_MSG_RESULT([${can_compile_sse42}])
7770 if test "${can_compile_sse42}" = "yes" ; then
7771 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7774 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7776 save_CXXFLAGS=$CXXFLAGS
7777 CXXFLAGS="$CXXFLAGS $flag_avx"
7778 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7779 #include <immintrin.h>
7781 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7782 c = _mm256_xor_ps(a, b);
7786 [can_compile_avx=yes],
7787 [can_compile_avx=no])
7789 CXXFLAGS=$save_CXXFLAGS
7790 AC_MSG_RESULT([${can_compile_avx}])
7791 if test "${can_compile_avx}" = "yes" ; then
7792 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7795 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7797 save_CXXFLAGS=$CXXFLAGS
7798 CXXFLAGS="$CXXFLAGS $flag_avx2"
7799 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7800 #include <immintrin.h>
7802 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7803 c = _mm256_maddubs_epi16(a, b);
7807 [can_compile_avx2=yes],
7808 [can_compile_avx2=no])
7810 CXXFLAGS=$save_CXXFLAGS
7811 AC_MSG_RESULT([${can_compile_avx2}])
7812 if test "${can_compile_avx2}" = "yes" ; then
7813 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7816 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7818 save_CXXFLAGS=$CXXFLAGS
7819 CXXFLAGS="$CXXFLAGS $flag_avx512"
7820 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7821 #include <immintrin.h>
7823 __m512i a = _mm512_loadu_si512(0);
7824 __m512d v1 = _mm512_load_pd(0);
7825 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7826 __m512d v2 = _mm512_abs_pd(v1);
7830 [can_compile_avx512=yes],
7831 [can_compile_avx512=no])
7833 CXXFLAGS=$save_CXXFLAGS
7834 AC_MSG_RESULT([${can_compile_avx512}])
7835 if test "${can_compile_avx512}" = "yes" ; then
7836 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7837 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7840 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7842 save_CXXFLAGS=$CXXFLAGS
7843 CXXFLAGS="$CXXFLAGS $flag_f16c"
7844 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7845 #include <immintrin.h>
7847 __m128i a = _mm_set1_epi32 (0);
7849 c = _mm_cvtph_ps(a);
7853 [can_compile_f16c=yes],
7854 [can_compile_f16c=no])
7856 CXXFLAGS=$save_CXXFLAGS
7857 AC_MSG_RESULT([${can_compile_f16c}])
7858 if test "${can_compile_f16c}" = "yes" ; then
7859 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7862 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7864 save_CXXFLAGS=$CXXFLAGS
7865 CXXFLAGS="$CXXFLAGS $flag_fma"
7866 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7867 #include <immintrin.h>
7869 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7870 d = _mm256_fmadd_ps(a, b, c);
7874 [can_compile_fma=yes],
7875 [can_compile_fma=no])
7877 CXXFLAGS=$save_CXXFLAGS
7878 AC_MSG_RESULT([${can_compile_fma}])
7879 if test "${can_compile_fma}" = "yes" ; then
7880 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7883 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7884 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7885 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7886 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7887 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7888 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7889 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7890 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7891 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7892 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7894 dnl ===================================================================
7895 dnl system stl sanity tests
7896 dnl ===================================================================
7897 if test "$_os" != "WINNT"; then
7901 save_CPPFLAGS="$CPPFLAGS"
7902 if test -n "$MACOSX_SDK_PATH"; then
7903 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7906 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7908 if test "$CPP_LIBRARY" = GLIBCXX; then
7909 dnl gcc#19664, gcc#22482, rhbz#162935
7910 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7911 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7912 AC_MSG_RESULT([$stlvisok])
7913 if test "$stlvisok" = "no"; then
7914 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7918 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7919 # when we don't make any dynamic libraries?
7920 if test "$DISABLE_DYNLOADING" = ""; then
7921 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7922 cat > conftestlib1.cc <<_ACEOF
7923 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7924 struct S2: S1<int> { virtual ~S2(); };
7927 cat > conftestlib2.cc <<_ACEOF
7928 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7929 struct S2: S1<int> { virtual ~S2(); };
7930 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7932 gccvisinlineshiddenok=yes
7933 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7934 gccvisinlineshiddenok=no
7936 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7937 dnl known to not work with -z defs (unsetting which makes the test
7939 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7940 if test "$COM_IS_CLANG" = TRUE; then
7941 for i in $CXX $CXXFLAGS; do
7944 my_linkflagsnoundefs=
7950 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7951 gccvisinlineshiddenok=no
7956 AC_MSG_RESULT([$gccvisinlineshiddenok])
7957 if test "$gccvisinlineshiddenok" = "no"; then
7958 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7962 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7963 cat >visibility.cxx <<_ACEOF
7964 #pragma GCC visibility push(hidden)
7965 struct __attribute__ ((visibility ("default"))) TestStruct {
7968 __attribute__ ((visibility ("default"))) void TestFunc() {
7972 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7977 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7980 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7992 rm -f visibility.s visibility.cxx
7994 AC_MSG_RESULT([$gccvisbroken])
7995 if test "$gccvisbroken" = "yes"; then
7996 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7999 CPPFLAGS="$save_CPPFLAGS"
8004 dnl ===================================================================
8006 dnl ===================================================================
8008 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8009 if test "$GCC" = "yes"; then
8010 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8012 save_CXXFLAGS=$CXXFLAGS
8013 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8014 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8015 CXXFLAGS=$save_CXXFLAGS
8017 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8018 AC_MSG_RESULT([yes])
8023 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8025 dnl ===================================================================
8026 dnl Compiler plugins
8027 dnl ===================================================================
8030 # currently only Clang
8032 if test "$COM_IS_CLANG" != "TRUE"; then
8033 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8034 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8035 enable_compiler_plugins=no
8039 COMPILER_PLUGINS_COM_IS_CLANG=
8040 if test "$COM_IS_CLANG" = "TRUE"; then
8041 if test -n "$enable_compiler_plugins"; then
8042 compiler_plugins="$enable_compiler_plugins"
8043 elif test -n "$ENABLE_DBGUTIL"; then
8044 compiler_plugins=test
8048 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8049 if test "$CLANGVER" -lt 50002; then
8050 if test "$compiler_plugins" = yes; then
8051 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8057 if test "$compiler_plugins" != "no"; then
8058 dnl The prefix where Clang resides, override to where Clang resides if
8059 dnl using a source build:
8060 if test -z "$CLANGDIR"; then
8061 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8063 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8064 if test -z "$COMPILER_PLUGINS_CXX"; then
8065 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8067 clangbindir=$CLANGDIR/bin
8068 if test "$build_os" = "cygwin"; then
8069 clangbindir=$(cygpath -u "$clangbindir")
8071 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8072 if test -n "$LLVM_CONFIG"; then
8073 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8074 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8075 if test -z "$CLANGLIBDIR"; then
8076 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8078 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8079 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8080 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8081 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8082 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8084 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8085 clangobjdir=$($LLVM_CONFIG --obj-root)
8086 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8087 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8090 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8094 save_CPPFLAGS=$CPPFLAGS
8095 save_CXXFLAGS=$CXXFLAGS
8096 save_LDFLAGS=$LDFLAGS
8098 CXX=$COMPILER_PLUGINS_CXX
8099 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8100 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8101 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8102 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8103 [COMPILER_PLUGINS=TRUE],
8105 if test "$compiler_plugins" = "yes"; then
8106 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8108 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8109 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8112 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8113 dnl comment in compilerplugins/Makefile-clang.mk:
8114 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8116 AC_MSG_CHECKING([for clang libraries to use])
8117 if test -z "$CLANGTOOLLIBS"; then
8118 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8119 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8121 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8122 [[ clang::FullSourceLoc().dump(); ]])
8123 ],[CLANGTOOLLIBS="$LIBS"],[])
8125 if test -z "$CLANGTOOLLIBS"; then
8126 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8128 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8129 [[ clang::FullSourceLoc().dump(); ]])
8130 ],[CLANGTOOLLIBS="$LIBS"],[])
8132 AC_MSG_RESULT([$CLANGTOOLLIBS])
8133 if test -z "$CLANGTOOLLIBS"; then
8134 if test "$compiler_plugins" = "yes"; then
8135 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8137 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8138 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8142 if test -n "$COMPILER_PLUGINS"; then
8143 if test -z "$CLANGSYSINCLUDE"; then
8144 if test -n "$LLVM_CONFIG"; then
8145 # Path to the clang system headers (no idea if there's a better way to get it).
8146 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8153 CPPFLAGS=$save_CPPFLAGS
8154 CXXFLAGS=$save_CXXFLAGS
8155 LDFLAGS=$save_LDFLAGS
8159 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8160 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8166 [AC_MSG_RESULT([yes])
8167 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8168 [AC_MSG_RESULT([no])])
8169 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8172 if test "$enable_compiler_plugins" = "yes"; then
8173 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8176 COMPILER_PLUGINS_ANALYZER_PCH=
8177 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8178 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8180 AC_SUBST(COMPILER_PLUGINS)
8181 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8182 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8183 AC_SUBST(COMPILER_PLUGINS_CXX)
8184 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8185 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8186 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8187 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8189 AC_SUBST(CLANGLIBDIR)
8190 AC_SUBST(CLANGTOOLLIBS)
8191 AC_SUBST(CLANGSYSINCLUDE)
8193 # Plugin to help linker.
8194 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8195 # This makes --enable-lto build with clang work.
8198 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8199 AC_SUBST(HAVE_POSIX_FALLOCATE)
8201 JITC_PROCESSOR_TYPE=""
8202 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8203 # IBMs JDK needs this...
8204 JITC_PROCESSOR_TYPE=6
8205 export JITC_PROCESSOR_TYPE
8207 AC_SUBST([JITC_PROCESSOR_TYPE])
8209 # Misc Windows Stuff
8210 AC_ARG_WITH(ucrt-dir,
8211 AS_HELP_STRING([--with-ucrt-dir],
8212 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8213 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8214 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8215 Windows6.1-KB2999226-x64.msu
8216 Windows6.1-KB2999226-x86.msu
8217 Windows8.1-KB2999226-x64.msu
8218 Windows8.1-KB2999226-x86.msu
8219 Windows8-RT-KB2999226-x64.msu
8220 Windows8-RT-KB2999226-x86.msu
8221 A zip archive including those files is available from Microsoft site:
8222 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8225 UCRT_REDISTDIR="$with_ucrt_dir"
8226 if test $_os = "WINNT"; then
8228 for i in $PKGFORMAT; do
8229 if test "$i" = msi; then
8234 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8235 MSVC_DLLS="$msvcdlls"
8236 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8237 # MSVC 15.3 changed it to VC141
8238 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8239 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8240 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8241 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8242 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8243 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8245 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8248 if test "$UCRT_REDISTDIR" = "no"; then
8249 dnl explicitly disabled
8252 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8253 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8254 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8255 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8256 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8257 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8259 if test -n "$PKGFORMAT"; then
8260 for i in $PKGFORMAT; do
8263 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8264 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8273 AC_SUBST(UCRT_REDISTDIR)
8274 AC_SUBST(MSVC_DLL_PATH)
8279 dnl ===================================================================
8281 dnl ===================================================================
8282 if test "$ENABLE_JAVA" != ""; then
8284 # Windows-specific tests
8285 if test "$build_os" = "cygwin"; then
8286 if test -z "$with_jdk_home"; then
8287 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8288 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8289 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8290 if test -n "$regvalue"; then
8292 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8293 with_jdk_home=$regvalue
8295 howfound="found automatically"
8297 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8298 howfound="you passed"
8301 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8302 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])
8306 # 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.
8307 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8308 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8309 with_jdk_home=`/usr/libexec/java_home`
8312 JAVA_HOME=; export JAVA_HOME
8313 if test -z "$with_jdk_home"; then
8314 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8316 _java_path="$with_jdk_home/bin/$with_java"
8317 dnl Check if there is a Java interpreter at all.
8318 if test -x "$_java_path"; then
8319 JAVAINTERPRETER=$_java_path
8321 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8325 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8326 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8327 dnl loaded by java to run JunitTests:
8328 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8329 shortjdkhome=`cygpath -d "$with_jdk_home"`
8330 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
8331 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8332 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8333 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
8334 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8335 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8338 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8339 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8341 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8342 elif test "$cross_compiling" != "yes"; then
8344 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8345 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8346 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8347 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8350 *) # assumption: everything else 32-bit
8351 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8352 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8353 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8360 dnl ===================================================================
8362 dnl ===================================================================
8364 # Whether all the complexity here actually is needed any more or not, no idea.
8366 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8368 AC_MSG_CHECKING([the installed JDK])
8369 if test -n "$JAVAINTERPRETER"; then
8370 dnl java -version sends output to stderr!
8371 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8372 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8373 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8374 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8375 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8376 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8377 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8378 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8382 dnl Sun JDK specific tests
8383 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8384 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8386 if test "$_jdk_ver" -lt 10900; then
8387 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8389 if test "$_jdk_ver" -gt 10900; then
8390 JAVA_CLASSPATH_NOT_SET=TRUE
8393 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8394 if test "$_os" = "WINNT"; then
8395 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8397 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8399 # set to limit VM usage for JunitTests
8401 # set to limit VM usage for javac
8402 JAVACFLAGS=-J-Xmx128M
8405 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8408 if test -z "$ENABLE_JAVA"; then
8412 elif test "$cross_compiling" = "yes"; then
8413 # Just assume compatibility of build and host JDK
8415 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8419 dnl ===================================================================
8420 dnl Checks for javac
8421 dnl ===================================================================
8422 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8423 javacompiler="javac"
8424 : ${JAVA_SOURCE_VER=8}
8425 : ${JAVA_TARGET_VER=8}
8426 if test -z "$with_jdk_home"; then
8427 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8429 _javac_path="$with_jdk_home/bin/$javacompiler"
8430 dnl Check if there is a Java compiler at all.
8431 if test -x "$_javac_path"; then
8432 JAVACOMPILER=$_javac_path
8435 if test -z "$JAVACOMPILER"; then
8436 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8438 if test "$build_os" = "cygwin"; then
8439 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8440 JAVACOMPILER="${JAVACOMPILER}.exe"
8442 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8446 dnl ===================================================================
8447 dnl Checks for javadoc
8448 dnl ===================================================================
8449 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8450 if test -z "$with_jdk_home"; then
8451 AC_PATH_PROG(JAVADOC, javadoc)
8453 _javadoc_path="$with_jdk_home/bin/javadoc"
8454 dnl Check if there is a javadoc at all.
8455 if test -x "$_javadoc_path"; then
8456 JAVADOC=$_javadoc_path
8458 AC_PATH_PROG(JAVADOC, javadoc)
8461 if test -z "$JAVADOC"; then
8462 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8464 if test "$build_os" = "cygwin"; then
8465 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8466 JAVADOC="${JAVADOC}.exe"
8468 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8471 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8472 JAVADOCISGJDOC="yes"
8476 AC_SUBST(JAVADOCISGJDOC)
8478 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8479 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8480 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8481 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8482 # try to recover first by looking whether we have an alternative
8483 # system as in Debian or newer SuSEs where following /usr/bin/javac
8484 # over /etc/alternatives/javac leads to the right bindir where we
8485 # just need to strip a bit away to get a valid JAVA_HOME
8486 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8487 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8488 # maybe only one level of symlink (e.g. on Mac)
8489 JAVA_HOME=$(readlink $JAVACOMPILER)
8490 if test "$(dirname $JAVA_HOME)" = "."; then
8491 # we've got no path to trim back
8496 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8497 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8498 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8499 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8501 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8502 if test "$JAVA_HOME" != "/usr"; then
8503 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8504 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8505 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8506 dnl Tiger already returns a JDK path...
8507 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8509 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8510 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8511 dnl that checks which version to run
8512 if test -f "$JAVA_HOME"; then
8513 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8518 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8520 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8521 if test -z "$JAVA_HOME"; then
8522 if test "x$with_jdk_home" = "x"; then
8523 cat > findhome.java <<_ACEOF
8524 [import java.io.File;
8528 public static void main(String args[])
8530 String jrelocation = System.getProperty("java.home");
8531 File jre = new File(jrelocation);
8532 System.out.println(jre.getParent());
8536 AC_MSG_CHECKING([if javac works])
8537 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8538 AC_TRY_EVAL(javac_cmd)
8539 if test $? = 0 -a -f ./findhome.class; then
8540 AC_MSG_RESULT([javac works])
8542 echo "configure: javac test failed" >&5
8543 cat findhome.java >&5
8544 AC_MSG_ERROR([javac does not work - java projects will not build!])
8546 AC_MSG_CHECKING([if gij knows its java.home])
8547 JAVA_HOME=`$JAVAINTERPRETER findhome`
8548 if test $? = 0 -a "$JAVA_HOME" != ""; then
8549 AC_MSG_RESULT([$JAVA_HOME])
8551 echo "configure: java test failed" >&5
8552 cat findhome.java >&5
8553 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8555 # clean-up after ourselves
8556 rm -f ./findhome.java ./findhome.class
8558 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8562 # now check if $JAVA_HOME is really valid
8563 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8564 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8565 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8566 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8567 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8568 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8569 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8570 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8573 PathFormat "$JAVA_HOME"
8574 JAVA_HOME="$formatted_path"
8577 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8580 AC_MSG_CHECKING([for JAWT lib])
8581 if test "$_os" = WINNT; then
8582 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8587 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8588 JAVA_ARCH=$my_java_arch
8603 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8604 JAVA_ARCH=$my_java_arch
8607 my_java_arch=sparcv9
8613 my_java_arch=$host_cpu
8616 # This is where JDK9 puts the library
8617 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8618 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8620 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8622 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8624 AC_MSG_RESULT([$JAWTLIB])
8628 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8632 JAVAINC="-I$JAVA_HOME/include"
8633 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8634 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8638 JAVAINC="-I$JAVA_HOME/include/win32"
8639 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8643 if test -d "$JAVA_HOME/include/darwin"; then
8644 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8646 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8651 JAVAINC="-I$JAVA_HOME/include"
8652 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8656 JAVAINC="-I$JAVA_HOME/include"
8657 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8658 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8659 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8660 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8664 JAVAINC="-I$JAVA_HOME/include"
8665 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8666 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8670 JAVAINC="-I$JAVA_HOME/include"
8671 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8672 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8676 JAVAINC="-I$JAVA_HOME/include"
8677 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8678 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8682 JAVAINC="-I$JAVA_HOME/include"
8683 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8684 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8688 JAVAINC="-I$JAVA_HOME/include"
8689 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8690 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8694 SOLARINC="$SOLARINC $JAVAINC"
8696 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8697 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8698 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8702 AC_SUBST(JAVACFLAGS)
8703 AC_SUBST(JAVACOMPILER)
8704 AC_SUBST(JAVAINTERPRETER)
8705 AC_SUBST(JAVAIFLAGS)
8706 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8707 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8709 AC_SUBST(JAVA_HOME_FOR_BUILD)
8711 AC_SUBST(JDK_FOR_BUILD)
8712 AC_SUBST(JAVA_SOURCE_VER)
8713 AC_SUBST(JAVA_TARGET_VER)
8716 dnl ===================================================================
8717 dnl Export file validation
8718 dnl ===================================================================
8719 AC_MSG_CHECKING([whether to enable export file validation])
8720 if test "$with_export_validation" != "no"; then
8721 if test -z "$ENABLE_JAVA"; then
8722 if test "$with_export_validation" = "yes"; then
8723 AC_MSG_ERROR([requested, but Java is disabled])
8725 AC_MSG_RESULT([no, as Java is disabled])
8727 elif ! test -d "${SRC_ROOT}/schema"; then
8728 if test "$with_export_validation" = "yes"; then
8729 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8731 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8734 AC_MSG_RESULT([yes])
8735 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8737 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8738 if test -z "$ODFVALIDATOR"; then
8739 # remember to download the ODF toolkit with validator later
8740 AC_MSG_NOTICE([no odfvalidator found, will download it])
8741 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8742 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8744 # and fetch name of odfvalidator jar name from download.lst
8745 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8746 AC_SUBST(ODFVALIDATOR_JAR)
8748 if test -z "$ODFVALIDATOR_JAR"; then
8749 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8752 if test "$build_os" = "cygwin"; then
8753 # In case of Cygwin it will be executed from Windows,
8754 # so we need to run bash and absolute path to validator
8755 # so instead of "odfvalidator" it will be
8756 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8757 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8759 ODFVALIDATOR="sh $ODFVALIDATOR"
8761 AC_SUBST(ODFVALIDATOR)
8764 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8765 if test -z "$OFFICEOTRON"; then
8766 # remember to download the officeotron with validator later
8767 AC_MSG_NOTICE([no officeotron found, will download it])
8768 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8769 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8771 # and fetch name of officeotron jar name from download.lst
8772 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8773 AC_SUBST(OFFICEOTRON_JAR)
8775 if test -z "$OFFICEOTRON_JAR"; then
8776 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8779 # check version of existing officeotron
8780 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8781 if test 0"$OFFICEOTRON_VER" -lt 704; then
8782 AC_MSG_ERROR([officeotron too old])
8785 if test "$build_os" = "cygwin"; then
8786 # In case of Cygwin it will be executed from Windows,
8787 # so we need to run bash and absolute path to validator
8788 # so instead of "odfvalidator" it will be
8789 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8790 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8792 OFFICEOTRON="sh $OFFICEOTRON"
8795 AC_SUBST(OFFICEOTRON)
8800 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8801 if test "$with_bffvalidator" != "no"; then
8802 AC_DEFINE(HAVE_BFFVALIDATOR)
8804 if test "$with_export_validation" = "no"; then
8805 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8808 if test "$with_bffvalidator" = "yes"; then
8809 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8811 BFFVALIDATOR="$with_bffvalidator"
8814 if test "$build_os" = "cygwin"; then
8815 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8816 AC_MSG_RESULT($BFFVALIDATOR)
8818 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8820 elif test -n "$BFFVALIDATOR"; then
8821 # We are not in Cygwin but need to run Windows binary with wine
8822 AC_PATH_PROGS(WINE, wine)
8824 # so swap in a shell wrapper that converts paths transparently
8825 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8826 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8827 AC_SUBST(BFFVALIDATOR_EXE)
8828 AC_MSG_RESULT($BFFVALIDATOR)
8830 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8832 AC_SUBST(BFFVALIDATOR)
8837 dnl ===================================================================
8838 dnl Check for C preprocessor to use
8839 dnl ===================================================================
8840 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8842 if test -n "$with_idlc_cpp"; then
8843 AC_MSG_RESULT([$with_idlc_cpp])
8844 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8845 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8846 # ucpp will accept -v (to output version), warn about the others as unknown
8847 # and return 1 (due to -v)
8848 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8849 # and return 0 (due to --version ) if all options are supported
8850 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8851 if test $? -eq 0; then
8852 SYSTEM_UCPP_IS_GCC=TRUE
8853 AC_MSG_RESULT([yes])
8858 AC_MSG_RESULT([ucpp])
8859 AC_MSG_CHECKING([which ucpp to use])
8860 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8861 AC_MSG_RESULT([external])
8862 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8864 AC_MSG_RESULT([internal])
8865 BUILD_TYPE="$BUILD_TYPE UCPP"
8868 AC_SUBST(SYSTEM_UCPP)
8869 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8871 dnl ===================================================================
8872 dnl Check for epm (not needed for Windows)
8873 dnl ===================================================================
8874 AC_MSG_CHECKING([whether to enable EPM for packing])
8875 if test "$enable_epm" = "yes"; then
8876 AC_MSG_RESULT([yes])
8877 if test "$_os" != "WINNT"; then
8878 if test $_os = Darwin; then
8880 elif test -n "$with_epm"; then
8883 AC_PATH_PROG(EPM, epm, no)
8885 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8886 AC_MSG_NOTICE([EPM will be built.])
8887 BUILD_TYPE="$BUILD_TYPE EPM"
8888 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8890 # Gentoo has some epm which is something different...
8891 AC_MSG_CHECKING([whether the found epm is the right epm])
8892 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8893 AC_MSG_RESULT([yes])
8895 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8897 AC_MSG_CHECKING([epm version])
8898 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8899 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8900 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8901 AC_MSG_RESULT([OK, >= 3.7])
8903 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8904 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8909 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8910 AC_MSG_CHECKING([for rpm])
8911 for a in "$RPM" rpmbuild rpm; do
8912 $a --usage >/dev/null 2> /dev/null
8913 if test $? -eq 0; then
8917 $a --version >/dev/null 2> /dev/null
8918 if test $? -eq 0; then
8924 if test -z "$RPM"; then
8925 AC_MSG_ERROR([not found])
8926 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8927 RPM_PATH=`which $RPM`
8928 AC_MSG_RESULT([$RPM_PATH])
8929 SCPDEFS="$SCPDEFS -DWITH_RPM"
8931 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8934 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8935 AC_PATH_PROG(DPKG, dpkg, no)
8936 if test "$DPKG" = "no"; then
8937 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8940 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8941 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8942 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8943 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8944 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8945 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8946 AC_MSG_RESULT([yes])
8949 if echo "$PKGFORMAT" | $GREP -q rpm; then
8951 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8952 add_warning "the rpms will need to be installed with --nodeps"
8956 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8957 add_warning "the ${_pt}s will not be relocatable"
8958 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8959 relocation will work, you need to patch your epm with the
8960 patch in epm/epm-3.7.patch or build with
8961 --with-epm=internal which will build a suitable epm])
8966 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8967 AC_PATH_PROG(PKGMK, pkgmk, no)
8968 if test "$PKGMK" = "no"; then
8969 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8976 for i in $PKGFORMAT; do
8978 aix | bsd | deb | pkg | rpm | native | portable)
8980 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8990 if test "$enable_lotuswordpro" = "yes"; then
8993 AC_SUBST(ENABLE_LWP)
8995 dnl ===================================================================
8996 dnl Check for building ODK
8997 dnl ===================================================================
8998 if test "$enable_odk" != yes; then
9001 if test "$with_doxygen" = no; then
9002 AC_MSG_CHECKING([for doxygen])
9006 if test "$with_doxygen" = yes; then
9007 AC_PATH_PROG([DOXYGEN], [doxygen])
9008 if test -z "$DOXYGEN"; then
9009 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9011 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9012 if ! dot -V 2>/dev/null; then
9013 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9017 AC_MSG_CHECKING([for doxygen])
9018 DOXYGEN=$with_doxygen
9019 AC_MSG_RESULT([$DOXYGEN])
9021 if test -n "$DOXYGEN"; then
9022 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9023 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9024 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9025 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9032 AC_MSG_CHECKING([whether to build the ODK])
9033 if test "$enable_odk" = yes; then
9034 AC_MSG_RESULT([yes])
9035 BUILD_TYPE="$BUILD_TYPE ODK"
9040 dnl ===================================================================
9041 dnl Check for system zlib
9042 dnl ===================================================================
9043 if test "$with_system_zlib" = "auto"; then
9046 with_system_zlib="$with_system_libs"
9049 if test "$enable_fuzzers" != "yes"; then
9050 with_system_zlib=yes
9058 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9059 dnl and has no pkg-config for it at least on some tinderboxes,
9060 dnl so leaving that out for now
9061 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9062 AC_MSG_CHECKING([which zlib to use])
9063 if test "$with_system_zlib" = "yes"; then
9064 AC_MSG_RESULT([external])
9066 AC_CHECK_HEADER(zlib.h, [],
9067 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9068 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9069 [AC_MSG_ERROR(zlib not found or functional)], [])
9071 AC_MSG_RESULT([internal])
9073 BUILD_TYPE="$BUILD_TYPE ZLIB"
9074 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9075 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9077 AC_SUBST(ZLIB_CFLAGS)
9079 AC_SUBST(SYSTEM_ZLIB)
9081 dnl ===================================================================
9082 dnl Check for system jpeg
9083 dnl ===================================================================
9084 AC_MSG_CHECKING([which libjpeg to use])
9085 if test "$with_system_jpeg" = "yes"; then
9086 AC_MSG_RESULT([external])
9088 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9089 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9090 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9091 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9094 AC_MSG_RESULT([internal, libjpeg-turbo])
9095 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9098 x86_64 | amd64 | i*86 | x86 | ia32)
9099 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9100 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9101 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9102 NASM="$LODE_HOME/opt/bin/nasm"
9103 elif test -x "/opt/lo/bin/nasm"; then
9104 NASM="/opt/lo/bin/nasm"
9108 if test -n "$NASM"; then
9109 AC_MSG_CHECKING([for object file format of host system])
9111 cygwin* | mingw* | pw32* | wsl*)
9121 msdosdjgpp* | go32*)
9124 os2-emx*) # not tested
9125 objfmt='MSOMF' # obj
9127 linux*coff* | linux*oldld*)
9143 kfreebsd* | freebsd* | netbsd* | openbsd*)
9144 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9157 solaris* | sunos* | sysv* | sco*)
9167 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9182 AC_MSG_RESULT([$objfmt])
9183 if test "$objfmt" = 'ELF ?'; then
9185 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9188 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9190 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9191 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9192 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9193 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9194 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9195 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9196 ELF) NAFLAGS='-felf -DELF -DPIC';;
9197 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9198 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9199 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9200 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9202 AC_MSG_RESULT([$NAFLAGS])
9204 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9205 cat > conftest.asm << EOF
9206 [%line __oline__ "configure"
9214 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9215 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9218 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9219 cat conftest.asm >&AS_MESSAGE_LOG_FD
9222 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9228 if test -z "$NASM"; then
9230 ****************************************************************************
9231 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9235 if test "$build_os" = "cygwin"; then
9237 install a pre-compiled binary for Win32
9239 mkdir -p /opt/lo/bin
9241 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9244 or get and install one from http://www.nasm.us/
9246 Then re-run autogen.sh
9248 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9249 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9254 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9258 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9259 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9267 AC_SUBST(LIBJPEG_CFLAGS)
9268 AC_SUBST(LIBJPEG_LIBS)
9269 AC_SUBST(SYSTEM_LIBJPEG)
9271 dnl ===================================================================
9272 dnl Check for system clucene
9273 dnl ===================================================================
9274 dnl we should rather be using
9275 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9276 dnl but the contribs-lib check seems tricky
9277 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9278 AC_MSG_CHECKING([which clucene to use])
9279 if test "$with_system_clucene" = "yes"; then
9280 AC_MSG_RESULT([external])
9282 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9283 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9284 FilterLibs "${CLUCENE_LIBS}"
9285 CLUCENE_LIBS="${filteredlibs}"
9287 save_CXXFLAGS=$CXXFLAGS
9288 save_CPPFLAGS=$CPPFLAGS
9289 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9290 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9291 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9292 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9293 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9294 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9295 CXXFLAGS=$save_CXXFLAGS
9296 CPPFLAGS=$save_CPPFLAGS
9299 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9301 AC_MSG_RESULT([internal])
9303 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9306 AC_SUBST(SYSTEM_CLUCENE)
9307 AC_SUBST(CLUCENE_CFLAGS)
9308 AC_SUBST(CLUCENE_LIBS)
9310 dnl ===================================================================
9311 dnl Check for system expat
9312 dnl ===================================================================
9313 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9315 dnl ===================================================================
9316 dnl Check for system xmlsec
9317 dnl ===================================================================
9318 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9320 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9321 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9323 AC_DEFINE([ENABLE_EOT])
9324 AC_MSG_RESULT([yes])
9326 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9331 AC_SUBST([ENABLE_EOT])
9333 dnl ===================================================================
9334 dnl Check for DLP libs
9335 dnl ===================================================================
9336 AS_IF([test "$COM" = "MSC"],
9337 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9338 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9340 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9342 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9344 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9346 AS_IF([test "$COM" = "MSC"],
9347 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9348 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9350 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9352 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9354 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9355 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9357 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9359 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9361 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9363 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9364 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9366 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9367 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9369 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9371 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9372 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9374 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9376 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9378 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9380 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9382 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9383 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9385 dnl ===================================================================
9386 dnl Check for system lcms2
9387 dnl ===================================================================
9388 if test "$with_system_lcms2" != "yes"; then
9391 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9392 if test "$GCC" = "yes"; then
9393 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9395 if test "$COM" = "MSC"; then # override the above
9396 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9399 dnl ===================================================================
9400 dnl Check for system cppunit
9401 dnl ===================================================================
9402 if test "$_os" != "Android" ; then
9403 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9406 dnl ===================================================================
9407 dnl Check whether freetype is available
9408 dnl ===================================================================
9409 if test "$using_freetype_fontconfig" = yes; then
9410 AC_MSG_CHECKING([which freetype to use])
9412 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9413 AC_MSG_RESULT([external])
9414 # FreeType has 3 different kinds of versions
9415 # * release, like 2.4.10
9416 # * libtool, like 13.0.7 (this what pkg-config returns)
9418 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9421 # When the minimal version is at least 2.8.1, remove Skia's check down below.
9422 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9423 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9424 FilterLibs "${FREETYPE_LIBS}"
9425 FREETYPE_LIBS="${filteredlibs}"
9426 SYSTEM_FREETYPE=TRUE
9427 elif test "$using_freetype_fontconfig" = yes; then
9428 AC_MSG_RESULT([internal])
9429 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9430 if test "x$ac_config_site_64bit_host" = xYES; then
9431 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9433 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9435 BUILD_TYPE="$BUILD_TYPE FREETYPE"
9437 AC_SUBST(FREETYPE_CFLAGS)
9438 AC_SUBST(FREETYPE_LIBS)
9439 AC_SUBST([SYSTEM_FREETYPE])
9441 # ===================================================================
9442 # Check for system libxslt
9443 # to prevent incompatibilities between internal libxml2 and external libxslt,
9444 # or vice versa, use with_system_libxml here
9445 # ===================================================================
9446 if test "$with_system_libxml" = "auto"; then
9449 with_system_libxml="$with_system_libs"
9452 with_system_libxml=no
9455 if test "$enable_fuzzers" != "yes"; then
9456 with_system_libxml=yes
9458 with_system_libxml=no
9464 AC_MSG_CHECKING([which libxslt to use])
9465 if test "$with_system_libxml" = "yes"; then
9466 AC_MSG_RESULT([external])
9468 if test "$_os" = "Darwin"; then
9469 dnl make sure to use SDK path
9470 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9471 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9473 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9474 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9476 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9477 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9478 FilterLibs "${LIBXSLT_LIBS}"
9479 LIBXSLT_LIBS="${filteredlibs}"
9480 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9481 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9482 FilterLibs "${LIBEXSLT_LIBS}"
9483 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9486 dnl Check for xsltproc
9487 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9488 if test "$XSLTPROC" = "no"; then
9489 AC_MSG_ERROR([xsltproc is required])
9492 AC_MSG_RESULT([internal])
9494 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9496 AC_SUBST(SYSTEM_LIBXSLT)
9497 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9498 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9500 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9502 AC_SUBST(LIBEXSLT_CFLAGS)
9503 AC_SUBST(LIBEXSLT_LIBS)
9504 AC_SUBST(LIBXSLT_CFLAGS)
9505 AC_SUBST(LIBXSLT_LIBS)
9508 # ===================================================================
9509 # Check for system libxml
9510 # ===================================================================
9511 AC_MSG_CHECKING([which libxml to use])
9512 if test "$with_system_libxml" = "yes"; then
9513 AC_MSG_RESULT([external])
9515 if test "$_os" = "Darwin"; then
9516 dnl make sure to use SDK path
9517 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9519 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9520 elif test $_os = iOS; then
9521 dnl make sure to use SDK path
9522 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9523 LIBXML_CFLAGS="-I$usr/include/libxml2"
9524 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9526 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9527 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9528 FilterLibs "${LIBXML_LIBS}"
9529 LIBXML_LIBS="${filteredlibs}"
9532 dnl Check for xmllint
9533 AC_PATH_PROG(XMLLINT, xmllint, no)
9534 if test "$XMLLINT" = "no"; then
9535 AC_MSG_ERROR([xmllint is required])
9538 AC_MSG_RESULT([internal])
9540 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9541 if test "$COM" = "MSC"; then
9542 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9544 if test "$COM" = "MSC"; then
9545 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9547 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9548 if test "$_os" = Android; then
9549 LIBXML_LIBS="$LIBXML_LIBS -lm"
9552 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9554 AC_SUBST(SYSTEM_LIBXML)
9555 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9556 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9558 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9559 AC_SUBST(LIBXML_CFLAGS)
9560 AC_SUBST(LIBXML_LIBS)
9563 # =====================================================================
9564 # Checking for a Python interpreter with version >= 3.3.
9565 # Optionally user can pass an option to configure, i. e.
9566 # ./configure PYTHON=/usr/bin/python
9567 # =====================================================================
9568 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9569 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9570 # unless PYTHON is defined as above which allows 'system'
9571 enable_python=internal
9573 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9574 if test -n "$PYTHON"; then
9575 PYTHON_FOR_BUILD=$PYTHON
9577 # This allows a lack of system python with no error, we use internal one in that case.
9578 AM_PATH_PYTHON([3.3],, [:])
9579 # Clean PYTHON_VERSION checked below if cross-compiling
9581 if test "$PYTHON" != ":"; then
9582 PYTHON_FOR_BUILD=$PYTHON
9586 AC_SUBST(PYTHON_FOR_BUILD)
9588 # Checks for Python to use for Pyuno
9589 AC_MSG_CHECKING([which Python to use for Pyuno])
9590 case "$enable_python" in
9592 if test -z $PYTHON_FOR_BUILD; then
9593 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9594 # requirement from the choice whether to include Python stuff in the installer, but why
9596 if test "$cross_compiling" = yes; then
9597 enable_python=system
9599 AC_MSG_ERROR([Python is required at build time.])
9603 AC_MSG_RESULT([none])
9606 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9607 AC_MSG_RESULT([no, overridden by --disable-scripting])
9609 elif test $build_os = cygwin; then
9610 dnl When building on Windows we don't attempt to use any installed
9611 dnl "system" Python.
9612 AC_MSG_RESULT([fully internal])
9613 enable_python=internal
9614 elif test "$cross_compiling" = yes; then
9615 AC_MSG_RESULT([system])
9616 enable_python=system
9618 # Unset variables set by the above AM_PATH_PYTHON so that
9619 # we actually do check anew.
9621 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
9622 AM_PATH_PYTHON([3.3],, [:])
9623 AC_MSG_CHECKING([which Python to use for Pyuno])
9624 if test "$PYTHON" = ":"; then
9625 if test -z "$PYTHON_FOR_BUILD"; then
9626 AC_MSG_RESULT([fully internal])
9628 AC_MSG_RESULT([internal])
9630 enable_python=internal
9632 AC_MSG_RESULT([system])
9633 enable_python=system
9638 AC_MSG_RESULT([internal])
9641 AC_MSG_RESULT([fully internal])
9642 enable_python=internal
9645 AC_MSG_RESULT([system])
9646 if test "$_os" = Darwin -a -z "$PYTHON"; then
9647 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9651 AC_MSG_ERROR([Incorrect --enable-python option])
9655 if test $enable_python != no; then
9656 BUILD_TYPE="$BUILD_TYPE PYUNO"
9659 if test $enable_python = system; then
9660 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9661 # Fallback: Accept these in the environment, or as set above
9664 elif test "$cross_compiling" != yes; then
9665 # Unset variables set by the above AM_PATH_PYTHON so that
9666 # 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 # This causes an error if no python command is found
9669 AM_PATH_PYTHON([3.3])
9670 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9671 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9672 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9673 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9674 if test -z "$PKG_CONFIG"; then
9675 PYTHON_CFLAGS="-I$python_include"
9676 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9677 elif $PKG_CONFIG --exists python-$python_version-embed; then
9678 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9679 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9680 elif $PKG_CONFIG --exists python-$python_version; then
9681 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9682 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9684 PYTHON_CFLAGS="-I$python_include"
9685 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9687 FilterLibs "${PYTHON_LIBS}"
9688 PYTHON_LIBS="${filteredlibs}"
9690 dnl How to find out the cross-compilation Python installation path?
9691 AC_MSG_CHECKING([for python version])
9692 AS_IF([test -n "$PYTHON_VERSION"],
9693 [AC_MSG_RESULT([$PYTHON_VERSION])],
9694 [AC_MSG_RESULT([not found])
9695 AC_MSG_ERROR([no usable python found])])
9696 test -n "$PYTHON_CFLAGS" && break
9699 dnl Check if the headers really work
9700 save_CPPFLAGS="$CPPFLAGS"
9701 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9702 AC_CHECK_HEADER(Python.h)
9703 CPPFLAGS="$save_CPPFLAGS"
9705 # let the PYTHON_FOR_BUILD match the same python installation that
9706 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9707 # better for PythonTests.
9708 PYTHON_FOR_BUILD=$PYTHON
9711 if test "$with_lxml" != no; then
9712 if test -z "$PYTHON_FOR_BUILD"; then
9715 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9718 if test "$cross_compiling" != yes ; then
9719 BUILD_TYPE="$BUILD_TYPE LXML"
9724 AC_MSG_CHECKING([for python lxml])
9725 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9726 AC_MSG_RESULT([yes])
9730 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9733 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9734 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9735 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9737 BUILD_TYPE="$BUILD_TYPE LXML"
9738 AC_MSG_RESULT([no, using internal lxml])
9741 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9749 dnl By now enable_python should be "system", "internal" or "no"
9750 case $enable_python in
9754 if test "x$ac_cv_header_Python_h" != "xyes"; then
9755 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9759 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9760 AC_MSG_CHECKING([for correct python library version])
9761 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9764 int main(int argc, char **argv) {
9765 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9768 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9771 dnl FIXME Check if the Python library can be linked with, too?
9776 PYTHON_VERSION_MAJOR=3
9777 PYTHON_VERSION_MINOR=8
9778 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9779 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9780 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9782 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9783 BUILD_TYPE="$BUILD_TYPE PYTHON"
9784 if test "$OS" = LINUX -o "$OS" = WNT ; then
9785 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9787 # Embedded Python dies without Home set
9788 if test "$HOME" = ""; then
9797 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9801 AC_SUBST(DISABLE_PYTHON)
9802 AC_SUBST(SYSTEM_PYTHON)
9803 AC_SUBST(PYTHON_CFLAGS)
9804 AC_SUBST(PYTHON_LIBS)
9805 AC_SUBST(PYTHON_VERSION)
9806 AC_SUBST(PYTHON_VERSION_MAJOR)
9807 AC_SUBST(PYTHON_VERSION_MINOR)
9809 AC_MSG_CHECKING([whether to build LibreLogo])
9810 case "$enable_python" in
9812 AC_MSG_RESULT([no; Python disabled])
9815 if test "${enable_librelogo}" = "no"; then
9818 AC_MSG_RESULT([yes])
9819 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9820 AC_DEFINE([ENABLE_LIBRELOGO],1)
9824 AC_SUBST(ENABLE_LIBRELOGO)
9830 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9831 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9832 ENABLE_MARIADBC=TRUE
9833 AC_MSG_RESULT([yes])
9834 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9838 AC_SUBST(ENABLE_MARIADBC)
9839 AC_SUBST(MARIADBC_MAJOR)
9840 AC_SUBST(MARIADBC_MINOR)
9841 AC_SUBST(MARIADBC_MICRO)
9843 if test "$ENABLE_MARIADBC" = "TRUE"; then
9844 dnl ===================================================================
9845 dnl Check for system MariaDB
9846 dnl ===================================================================
9847 AC_MSG_CHECKING([which MariaDB to use])
9848 if test "$with_system_mariadb" = "yes"; then
9849 AC_MSG_RESULT([external])
9850 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9851 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9852 if test -z "$MARIADBCONFIG"; then
9853 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9854 if test -z "$MARIADBCONFIG"; then
9855 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9856 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9859 AC_MSG_CHECKING([MariaDB version])
9860 MARIADB_VERSION=`$MARIADBCONFIG --version`
9861 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9862 if test "$MARIADB_MAJOR" -ge "5"; then
9865 AC_MSG_ERROR([too old, use 5.0.x or later])
9867 AC_MSG_CHECKING([for MariaDB Client library])
9868 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9869 if test "$COM_IS_CLANG" = TRUE; then
9870 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9872 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9873 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9874 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9876 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9877 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9878 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9879 | sed -e 's|/lib64/|/lib/|')
9881 FilterLibs "${MARIADB_LIBS}"
9882 MARIADB_LIBS="${filteredlibs}"
9883 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9884 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9885 if test "$enable_bundle_mariadb" = "yes"; then
9886 AC_MSG_RESULT([yes])
9887 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9888 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9890 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9892 /g' | grep -E '(mysqlclient|mariadb)')
9893 if test "$_os" = "Darwin"; then
9894 LIBMARIADB=${LIBMARIADB}.dylib
9895 elif test "$_os" = "WINNT"; then
9896 LIBMARIADB=${LIBMARIADB}.dll
9898 LIBMARIADB=${LIBMARIADB}.so
9900 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9901 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9902 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9903 AC_MSG_RESULT([found.])
9904 PathFormat "$LIBMARIADB_PATH"
9905 LIBMARIADB_PATH="$formatted_path"
9907 AC_MSG_ERROR([not found.])
9911 BUNDLE_MARIADB_CONNECTOR_C=
9914 AC_MSG_RESULT([internal])
9915 SYSTEM_MARIADB_CONNECTOR_C=
9916 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9917 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9918 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9921 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9922 AC_SUBST(MARIADB_CFLAGS)
9923 AC_SUBST(MARIADB_LIBS)
9924 AC_SUBST(LIBMARIADB)
9925 AC_SUBST(LIBMARIADB_PATH)
9926 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9929 dnl ===================================================================
9930 dnl Check for system hsqldb
9931 dnl ===================================================================
9932 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9933 HSQLDB_USE_JDBC_4_1=
9934 AC_MSG_CHECKING([which hsqldb to use])
9935 if test "$with_system_hsqldb" = "yes"; then
9936 AC_MSG_RESULT([external])
9938 if test -z $HSQLDB_JAR; then
9939 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9941 if ! test -f $HSQLDB_JAR; then
9942 AC_MSG_ERROR(hsqldb.jar not found.)
9944 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9948 my $file = "$ENV{'HSQLDB_JAR'}";
9949 my $zip = Archive::Zip->new( $file );
9950 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9951 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9953 push @l, split(/\n/, $mf);
9954 foreach my $line (@l)
9956 if ($line =~ m/Specification-Version:/)
9958 ($t, $version) = split (/:/,$line);
9959 $version =~ s/^\s//;
9960 ($a, $b, $c, $d) = split (/\./,$version);
9961 if ($c == "0" && $d > "8")
9976 AC_MSG_RESULT([yes])
9978 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9981 AC_MSG_RESULT([internal])
9983 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9985 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9986 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9987 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9988 AC_MSG_RESULT([yes])
9989 HSQLDB_USE_JDBC_4_1=TRUE
9995 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9996 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9999 AC_SUBST(SYSTEM_HSQLDB)
10000 AC_SUBST(HSQLDB_JAR)
10001 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10003 dnl ===================================================================
10004 dnl Check for PostgreSQL stuff
10005 dnl ===================================================================
10006 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10007 if test "x$enable_postgresql_sdbc" != "xno"; then
10008 AC_MSG_RESULT([yes])
10009 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10011 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10012 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10014 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10015 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10018 postgres_interface=""
10019 if test "$with_system_postgresql" = "yes"; then
10020 postgres_interface="external PostgreSQL"
10021 SYSTEM_POSTGRESQL=TRUE
10022 if test "$_os" = Darwin; then
10024 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10025 pg_supp_path="$P_SEP$d$pg_supp_path"
10028 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10029 if test -n "$PGCONFIG"; then
10030 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10031 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10033 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10034 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10035 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10037 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10040 FilterLibs "${POSTGRESQL_LIB}"
10041 POSTGRESQL_LIB="${filteredlibs}"
10043 # if/when anything else than PostgreSQL uses Kerberos,
10044 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10049 # macOS has system MIT Kerberos 5 since 10.4
10050 if test "$with_krb5" != "no"; then
10053 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10054 # that the libraries where these functions are located on macOS will change, is it?
10055 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10056 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10059 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10060 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10061 KRB5_LIBS="$KRB5_LIBS $LIBS"
10064 if test "$with_gssapi" != "no"; then
10067 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10068 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10074 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10075 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10078 Linux|GNU|*BSD|DragonFly)
10079 if test "$with_krb5" != "no"; then
10082 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10083 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10086 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10087 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10088 KRB5_LIBS="$KRB5_LIBS $LIBS"
10091 if test "$with_gssapi" != "no"; then
10094 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10095 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10101 if test "$with_krb5" = "yes"; then
10104 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10105 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10108 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10109 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10110 KRB5_LIBS="$KRB5_LIBS $LIBS"
10113 if test "$with_gssapi" = "yes"; then
10116 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10117 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10123 if test -n "$with_libpq_path"; then
10124 SYSTEM_POSTGRESQL=TRUE
10125 postgres_interface="external libpq"
10126 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10127 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10130 postgres_interface="internal"
10132 POSTGRESQL_INC="%OVERRIDE_ME%"
10133 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10137 AC_MSG_CHECKING([PostgreSQL C interface])
10138 AC_MSG_RESULT([$postgres_interface])
10140 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10141 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10142 save_CFLAGS=$CFLAGS
10143 save_CPPFLAGS=$CPPFLAGS
10145 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10146 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10147 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10148 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10149 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10150 CFLAGS=$save_CFLAGS
10151 CPPFLAGS=$save_CPPFLAGS
10154 BUILD_POSTGRESQL_SDBC=TRUE
10156 AC_MSG_RESULT([no])
10158 AC_SUBST(WITH_KRB5)
10159 AC_SUBST(WITH_GSSAPI)
10160 AC_SUBST(GSSAPI_LIBS)
10161 AC_SUBST(KRB5_LIBS)
10162 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10163 AC_SUBST(SYSTEM_POSTGRESQL)
10164 AC_SUBST(POSTGRESQL_INC)
10165 AC_SUBST(POSTGRESQL_LIB)
10167 dnl ===================================================================
10168 dnl Check for Firebird stuff
10169 dnl ===================================================================
10170 ENABLE_FIREBIRD_SDBC=
10171 if test "$enable_firebird_sdbc" = "yes" ; then
10172 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10174 dnl ===================================================================
10175 dnl Check for system Firebird
10176 dnl ===================================================================
10177 AC_MSG_CHECKING([which Firebird to use])
10178 if test "$with_system_firebird" = "yes"; then
10179 AC_MSG_RESULT([external])
10180 SYSTEM_FIREBIRD=TRUE
10181 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10182 if test -z "$FIREBIRDCONFIG"; then
10183 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10184 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10185 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10187 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10189 AC_MSG_NOTICE([fb_config found])
10190 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10191 AC_MSG_CHECKING([for Firebird Client library])
10192 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10193 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10194 FilterLibs "${FIREBIRD_LIBS}"
10195 FIREBIRD_LIBS="${filteredlibs}"
10197 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10198 AC_MSG_CHECKING([Firebird version])
10199 if test -n "${FIREBIRD_VERSION}"; then
10200 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10201 if test "$FIREBIRD_MAJOR" -ge "3"; then
10202 AC_MSG_RESULT([OK])
10204 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10207 save_CFLAGS="${CFLAGS}"
10208 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10209 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10210 #if defined(FB_API_VER) && FB_API_VER == 30
10211 int fb_api_is_30(void) { return 0; }
10213 #error "Wrong Firebird API version"
10214 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10215 CFLAGS="$save_CFLAGS"
10217 ENABLE_FIREBIRD_SDBC=TRUE
10218 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10219 elif test "$enable_database_connectivity" = no; then
10220 AC_MSG_RESULT([none])
10221 elif test "$cross_compiling" = "yes"; then
10222 AC_MSG_RESULT([none])
10224 dnl Embedded Firebird has version 3.0
10225 dnl We need libatomic_ops for any non X86/X64 system
10226 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10227 dnl ===================================================================
10228 dnl Check for system libatomic_ops
10229 dnl ===================================================================
10230 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10231 if test "$with_system_libatomic_ops" = "yes"; then
10232 SYSTEM_LIBATOMIC_OPS=TRUE
10233 AC_CHECK_HEADERS(atomic_ops.h, [],
10234 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10236 SYSTEM_LIBATOMIC_OPS=
10237 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10238 LIBATOMIC_OPS_LIBS="-latomic_ops"
10239 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10243 AC_MSG_RESULT([internal])
10245 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10246 FIREBIRD_LIBS="-lfbclient"
10248 if test "$with_system_libtommath" = "yes"; then
10249 SYSTEM_LIBTOMMATH=TRUE
10250 dnl check for tommath presence
10252 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10253 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10257 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10258 LIBTOMMATH_LIBS="-ltommath"
10259 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10262 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10263 ENABLE_FIREBIRD_SDBC=TRUE
10264 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10267 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10268 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10269 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10270 AC_SUBST(LIBATOMIC_OPS_LIBS)
10271 AC_SUBST(SYSTEM_FIREBIRD)
10272 AC_SUBST(FIREBIRD_CFLAGS)
10273 AC_SUBST(FIREBIRD_LIBS)
10274 AC_SUBST(SYSTEM_LIBTOMMATH)
10275 AC_SUBST(LIBTOMMATH_CFLAGS)
10276 AC_SUBST(LIBTOMMATH_LIBS)
10278 dnl ===================================================================
10279 dnl Check for system curl
10280 dnl ===================================================================
10281 AC_MSG_CHECKING([which libcurl to use])
10282 if test "$with_system_curl" = "auto"; then
10283 with_system_curl="$with_system_libs"
10286 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10287 AC_MSG_RESULT([external])
10290 PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10293 elif test "$enable_curl" = "no"; then
10294 AC_MSG_RESULT([none])
10296 AC_MSG_RESULT([internal])
10298 BUILD_TYPE="$BUILD_TYPE CURL"
10301 AC_SUBST(SYSTEM_CURL)
10302 AC_SUBST(CURL_CFLAGS)
10303 AC_SUBST(CURL_LIBS)
10304 AC_SUBST(ENABLE_CURL)
10306 dnl ===================================================================
10307 dnl Check for system boost
10308 dnl ===================================================================
10309 AC_MSG_CHECKING([which boost to use])
10310 if test "$with_system_boost" = "yes"; then
10311 AC_MSG_RESULT([external])
10313 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10315 AX_BOOST_FILESYSTEM
10318 AC_LANG_PUSH([C++])
10319 save_CXXFLAGS=$CXXFLAGS
10320 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10321 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10322 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10323 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10324 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10325 CXXFLAGS=$save_CXXFLAGS
10327 # this is in m4/ax_boost_base.m4
10328 FilterLibs "${BOOST_LDFLAGS}"
10329 BOOST_LDFLAGS="${filteredlibs}"
10331 AC_MSG_RESULT([internal])
10332 BUILD_TYPE="$BUILD_TYPE BOOST"
10334 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10335 # use warning-suppressing wrapper headers
10336 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10338 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10341 AC_SUBST(SYSTEM_BOOST)
10343 dnl ===================================================================
10344 dnl Check for system mdds
10345 dnl ===================================================================
10346 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10348 dnl ===================================================================
10349 dnl Check for system cuckoo
10350 dnl ===================================================================
10351 AC_MSG_CHECKING([which cuckoo to use])
10352 if test "$with_system_cuckoo" = "yes"; then
10353 AC_MSG_RESULT([external])
10355 AC_LANG_PUSH([C++])
10356 AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10357 [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10360 AC_MSG_RESULT([internal])
10361 BUILD_TYPE="$BUILD_TYPE CUCKOO"
10363 CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10365 AC_SUBST([CUCKOO_CFLAGS])
10366 AC_SUBST([SYSTEM_CUCKOO])
10368 dnl ===================================================================
10369 dnl Check for system glm
10370 dnl ===================================================================
10371 AC_MSG_CHECKING([which glm to use])
10372 if test "$with_system_glm" = "yes"; then
10373 AC_MSG_RESULT([external])
10375 AC_LANG_PUSH([C++])
10376 AC_CHECK_HEADER([glm/glm.hpp], [],
10377 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10380 AC_MSG_RESULT([internal])
10381 BUILD_TYPE="$BUILD_TYPE GLM"
10383 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10385 AC_SUBST([GLM_CFLAGS])
10386 AC_SUBST([SYSTEM_GLM])
10388 dnl ===================================================================
10389 dnl Check for system odbc
10390 dnl ===================================================================
10391 AC_MSG_CHECKING([which odbc headers to use])
10392 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
10393 AC_MSG_RESULT([external])
10394 SYSTEM_ODBC_HEADERS=TRUE
10396 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10397 save_CPPFLAGS=$CPPFLAGS
10399 PathFormat "$winsdktest"
10400 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"
10401 AC_CHECK_HEADER(sqlext.h, [],
10402 [AC_MSG_ERROR(odbc not found. install odbc)],
10403 [#include <windows.h>])
10404 CPPFLAGS=$save_CPPFLAGS
10406 AC_CHECK_HEADER(sqlext.h, [],
10407 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10409 elif test "$enable_database_connectivity" = no; then
10410 AC_MSG_RESULT([none])
10412 AC_MSG_RESULT([internal])
10413 SYSTEM_ODBC_HEADERS=
10415 AC_SUBST(SYSTEM_ODBC_HEADERS)
10417 dnl ===================================================================
10418 dnl Check for system NSS
10419 dnl ===================================================================
10420 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10421 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10422 AC_DEFINE(HAVE_FEATURE_NSS)
10424 elif test $_os != iOS ; then
10427 AC_SUBST(ENABLE_NSS)
10429 dnl ===================================================================
10430 dnl Enable LDAP support
10431 dnl ===================================================================
10433 if test "$test_openldap" = yes; then
10434 AC_MSG_CHECKING([whether to enable LDAP support])
10435 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10436 AC_MSG_RESULT([yes])
10439 if test "$enable_ldap" != "yes"; then
10440 AC_MSG_RESULT([no])
10442 AC_MSG_RESULT([no (needs NSS or system openldap)])
10446 dnl ===================================================================
10447 dnl Check for system openldap
10448 dnl ===================================================================
10450 if test "$ENABLE_LDAP" = TRUE; then
10451 AC_MSG_CHECKING([which openldap library to use])
10452 if test "$with_system_openldap" = yes; then
10453 AC_MSG_RESULT([external])
10454 SYSTEM_OPENLDAP=TRUE
10455 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10456 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10457 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10459 AC_MSG_RESULT([internal])
10460 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10465 AC_SUBST(ENABLE_LDAP)
10466 AC_SUBST(SYSTEM_OPENLDAP)
10468 dnl ===================================================================
10469 dnl Check for TLS/SSL and cryptographic implementation to use
10470 dnl ===================================================================
10471 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10472 if test -n "$with_tls"; then
10475 AC_DEFINE(USE_TLS_OPENSSL)
10477 AC_MSG_RESULT([$TLS])
10479 if test "$enable_openssl" != "yes"; then
10480 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10483 # warn that OpenSSL has been selected but not all TLS code has this option
10484 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10485 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10488 AC_DEFINE(USE_TLS_NSS)
10490 AC_MSG_RESULT([$TLS])
10493 AC_MSG_RESULT([none])
10494 AC_MSG_WARN([Skipping TLS/SSL])
10498 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10500 nss - Mozilla's Network Security Services (NSS)
10505 # default to using NSS, it results in smaller oox lib
10506 AC_DEFINE(USE_TLS_NSS)
10508 AC_MSG_RESULT([$TLS])
10512 dnl ===================================================================
10513 dnl Check for system sane
10514 dnl ===================================================================
10515 AC_MSG_CHECKING([which sane header to use])
10516 if test "$with_system_sane" = "yes"; then
10517 AC_MSG_RESULT([external])
10518 AC_CHECK_HEADER(sane/sane.h, [],
10519 [AC_MSG_ERROR(sane not found. install sane)], [])
10521 AC_MSG_RESULT([internal])
10522 BUILD_TYPE="$BUILD_TYPE SANE"
10525 dnl ===================================================================
10526 dnl Check for system icu
10527 dnl ===================================================================
10534 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10535 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10536 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10537 AC_MSG_CHECKING([which icu to use])
10538 if test "$with_system_icu" = "yes"; then
10539 AC_MSG_RESULT([external])
10541 AC_LANG_PUSH([C++])
10542 AC_MSG_CHECKING([for unicode/rbbi.h])
10543 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10546 if test "$cross_compiling" != "yes"; then
10547 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10548 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10549 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10550 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10553 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10554 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10555 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10556 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10557 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10558 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10559 AC_MSG_RESULT([yes])
10561 AC_MSG_RESULT([no])
10562 if test "$with_system_icu_for_build" != "force"; then
10563 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10564 You can use --with-system-icu-for-build=force to use it anyway.])
10569 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10570 # using the system icu tools can lead to version confusion, use the
10571 # ones from the build environment when cross-compiling
10572 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10573 if test -z "$SYSTEM_GENBRK"; then
10574 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10576 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10577 if test -z "$SYSTEM_GENCCODE"; then
10578 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10580 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10581 if test -z "$SYSTEM_GENCMN"; then
10582 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10584 if test "$ICU_MAJOR" -ge "49"; then
10585 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10586 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10587 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10589 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10590 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10591 ICU_RECLASSIFIED_HEBREW_LETTER=
10595 if test "$cross_compiling" = "yes"; then
10596 if test "$ICU_MAJOR" -ge "50"; then
10597 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10602 AC_MSG_RESULT([internal])
10604 BUILD_TYPE="$BUILD_TYPE ICU"
10605 # surprisingly set these only for "internal" (to be used by various other
10606 # external libs): the system icu-config is quite unhelpful and spits out
10607 # dozens of weird flags and also default path -I/usr/include
10608 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10609 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10611 if test "$ICU_MAJOR" -ge "59"; then
10612 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10613 # with -std=c++11 but not all external libraries can be built with that,
10614 # for those use a bit-compatible typedef uint16_t UChar; see
10615 # icu/source/common/unicode/umachine.h
10616 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10620 AC_SUBST(SYSTEM_ICU)
10621 AC_SUBST(SYSTEM_GENBRK)
10622 AC_SUBST(SYSTEM_GENCCODE)
10623 AC_SUBST(SYSTEM_GENCMN)
10624 AC_SUBST(ICU_MAJOR)
10625 AC_SUBST(ICU_MINOR)
10626 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10627 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10628 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10629 AC_SUBST(ICU_CFLAGS)
10631 AC_SUBST(ICU_UCHAR_TYPE)
10633 dnl ==================================================================
10635 dnl ==================================================================
10636 DEFAULT_CRASHDUMP_VALUE="true"
10637 AC_MSG_CHECKING([whether to enable breakpad])
10638 if test "$enable_breakpad" != yes; then
10639 AC_MSG_RESULT([no])
10641 AC_MSG_RESULT([yes])
10642 ENABLE_BREAKPAD="TRUE"
10643 AC_DEFINE(ENABLE_BREAKPAD)
10644 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10645 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10647 AC_MSG_CHECKING([for disable crash dump])
10648 if test "$enable_crashdump" = no; then
10649 DEFAULT_CRASHDUMP_VALUE="false"
10650 AC_MSG_RESULT([yes])
10652 AC_MSG_RESULT([no])
10655 AC_MSG_CHECKING([for crashreport config])
10656 if test "$with_symbol_config" = "no"; then
10657 BREAKPAD_SYMBOL_CONFIG="invalid"
10658 AC_MSG_RESULT([no])
10660 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10661 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10662 AC_MSG_RESULT([yes])
10664 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10666 AC_SUBST(ENABLE_BREAKPAD)
10667 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10669 dnl ==================================================================
10671 dnl ==================================================================
10672 AC_MSG_CHECKING([whether to enable fuzzers])
10673 if test "$enable_fuzzers" != yes; then
10674 AC_MSG_RESULT([no])
10676 if test -z $LIB_FUZZING_ENGINE; then
10677 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10679 AC_MSG_RESULT([yes])
10680 ENABLE_FUZZERS="TRUE"
10681 AC_DEFINE([ENABLE_FUZZERS],1)
10682 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10684 AC_SUBST(LIB_FUZZING_ENGINE)
10685 AC_SUBST(ENABLE_FUZZERS)
10687 dnl ===================================================================
10689 dnl ===================================================================
10690 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10691 if test "$with_system_orcus" != "yes"; then
10692 if test "$SYSTEM_BOOST" = "TRUE"; then
10693 dnl Link with Boost.System
10694 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10695 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10696 dnl in documentation has no effect.
10700 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10701 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10702 AC_SUBST([BOOST_SYSTEM_LIB])
10703 AC_SUBST(SYSTEM_LIBORCUS)
10705 dnl ===================================================================
10707 dnl ===================================================================
10708 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10709 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10710 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10712 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10713 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10714 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10716 if test "$COM" = "MSC"; then # override the above
10717 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10718 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10721 if test "$with_system_harfbuzz" = "yes"; then
10722 if test "$with_system_graphite" = "no"; then
10723 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10725 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10727 save_CFLAGS="$CFLAGS"
10728 LIBS="$LIBS $HARFBUZZ_LIBS"
10729 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10730 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10732 CFLAGS="$save_CFLAGS"
10734 if test "$with_system_graphite" = "yes"; then
10735 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10739 if test "$USING_X11" = TRUE; then
10742 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10744 if test -z "$x_includes"; then
10745 x_includes="default_x_includes"
10747 if test -z "$x_libraries"; then
10748 x_libraries="default_x_libraries"
10750 CFLAGS="$CFLAGS $X_CFLAGS"
10751 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10752 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10754 x_includes="no_x_includes"
10755 x_libraries="no_x_libraries"
10758 if test "$USING_X11" = TRUE; then
10759 dnl ===================================================================
10760 dnl Check for extension headers
10761 dnl ===================================================================
10762 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10763 [#include <X11/extensions/shape.h>])
10765 # vcl needs ICE and SM
10766 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10767 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10768 [AC_MSG_ERROR(ICE library not found)])
10769 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10770 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10771 [AC_MSG_ERROR(SM library not found)])
10774 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10775 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10776 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10779 dnl ===================================================================
10780 dnl Check for system Xrender
10781 dnl ===================================================================
10782 AC_MSG_CHECKING([whether to use Xrender])
10783 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10784 AC_MSG_RESULT([yes])
10785 PKG_CHECK_MODULES(XRENDER, xrender)
10786 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10787 FilterLibs "${XRENDER_LIBS}"
10788 XRENDER_LIBS="${filteredlibs}"
10789 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10790 [AC_MSG_ERROR(libXrender not found or functional)], [])
10791 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10792 [AC_MSG_ERROR(Xrender not found. install X)], [])
10794 AC_MSG_RESULT([no])
10796 AC_SUBST(XRENDER_CFLAGS)
10797 AC_SUBST(XRENDER_LIBS)
10799 dnl ===================================================================
10800 dnl Check for XRandr
10801 dnl ===================================================================
10802 AC_MSG_CHECKING([whether to enable RandR support])
10803 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10804 AC_MSG_RESULT([yes])
10805 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10806 if test "$ENABLE_RANDR" != "TRUE"; then
10807 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10808 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10810 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10811 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10812 XRANDR_LIBS="-lXrandr "
10813 ENABLE_RANDR="TRUE"
10815 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10816 FilterLibs "${XRANDR_LIBS}"
10817 XRANDR_LIBS="${filteredlibs}"
10820 AC_MSG_RESULT([no])
10822 AC_SUBST(XRANDR_CFLAGS)
10823 AC_SUBST(XRANDR_LIBS)
10824 AC_SUBST(ENABLE_RANDR)
10826 if test "$test_webdav" = yes; then
10827 if test -z "$with_webdav"; then
10830 WITH_WEBDAV="$with_webdav"
10834 AC_MSG_CHECKING([for webdav library])
10835 case "$WITH_WEBDAV" in
10837 AC_MSG_RESULT([curl])
10838 # curl is already mandatory (almost) and checked elsewhere
10839 if test "$enable_curl" = "no"; then
10840 AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10844 AC_MSG_RESULT([serf])
10845 # Check for system apr-util
10846 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10847 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10848 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10849 if test "$COM" = "MSC"; then
10851 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10852 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10855 # Check for system serf
10856 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10859 AC_MSG_RESULT([neon])
10860 # Check for system neon
10861 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10862 if test "$with_system_neon" = "yes"; then
10863 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10867 AC_SUBST(NEON_VERSION)
10870 AC_MSG_RESULT([none, disabled])
10874 AC_SUBST(WITH_WEBDAV)
10876 dnl ===================================================================
10877 dnl Check for disabling cve_tests
10878 dnl ===================================================================
10879 AC_MSG_CHECKING([whether to execute CVE tests])
10880 # If not explicitly enabled or disabled, default
10881 if test -z "$enable_cve_tests"; then
10884 # Default cves off for Windows with its wild and wonderful
10885 # variety of AV software kicking in and panicking
10886 enable_cve_tests=no
10890 enable_cve_tests=yes
10894 if test "$enable_cve_tests" = "no"; then
10895 AC_MSG_RESULT([no])
10896 DISABLE_CVE_TESTS=TRUE
10897 AC_SUBST(DISABLE_CVE_TESTS)
10899 AC_MSG_RESULT([yes])
10902 dnl ===================================================================
10903 dnl Check for enabling chart XShape tests
10904 dnl ===================================================================
10905 AC_MSG_CHECKING([whether to execute chart XShape tests])
10906 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10907 AC_MSG_RESULT([yes])
10908 ENABLE_CHART_TESTS=TRUE
10909 AC_SUBST(ENABLE_CHART_TESTS)
10911 AC_MSG_RESULT([no])
10914 dnl ===================================================================
10915 dnl Check for system openssl
10916 dnl ===================================================================
10918 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10919 if test "$enable_openssl" = "yes"; then
10920 AC_MSG_RESULT([no])
10921 ENABLE_OPENSSL=TRUE
10922 if test "$_os" = Darwin ; then
10923 # OpenSSL is deprecated when building for 10.7 or later.
10925 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10926 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10928 with_system_openssl=no
10929 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10930 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10931 && test "$with_system_openssl" != "no"; then
10932 with_system_openssl=yes
10933 SYSTEM_OPENSSL=TRUE
10935 OPENSSL_LIBS="-lssl -lcrypto"
10937 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10939 if test "$with_system_openssl" = "yes"; then
10940 AC_MSG_CHECKING([whether openssl supports SHA512])
10942 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10943 SHA512_CTX context;
10944 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10948 AC_MSG_RESULT([yes])
10950 # warn that although OpenSSL is disabled, system libraries may depend on it
10951 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10952 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10955 AC_SUBST([ENABLE_OPENSSL])
10957 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10958 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10959 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10960 enable_cipher_openssl_backend=no
10962 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10965 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10966 ENABLE_CIPHER_OPENSSL_BACKEND=
10967 if test "$enable_cipher_openssl_backend" = yes; then
10968 AC_MSG_RESULT([yes])
10969 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10971 AC_MSG_RESULT([no])
10973 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10975 dnl ===================================================================
10976 dnl Select the crypto backends used by LO
10977 dnl ===================================================================
10979 if test "$build_crypto" = yes; then
10980 if test "$OS" = WNT; then
10981 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10982 AC_DEFINE([USE_CRYPTO_MSCAPI])
10983 elif test "$ENABLE_NSS" = TRUE; then
10984 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10985 AC_DEFINE([USE_CRYPTO_NSS])
10989 dnl ===================================================================
10990 dnl Check for building gnutls
10991 dnl ===================================================================
10992 AC_MSG_CHECKING([whether to use gnutls])
10993 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10994 AC_MSG_RESULT([yes])
10995 AM_PATH_LIBGCRYPT()
10996 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10997 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10998 available in the system to use as replacement.]]))
10999 FilterLibs "${LIBGCRYPT_LIBS}"
11000 LIBGCRYPT_LIBS="${filteredlibs}"
11002 AC_MSG_RESULT([no])
11005 AC_SUBST([LIBGCRYPT_CFLAGS])
11006 AC_SUBST([LIBGCRYPT_LIBS])
11008 dnl ===================================================================
11009 dnl Check for system redland
11010 dnl ===================================================================
11011 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11012 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11013 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11014 if test "$with_system_redland" = "yes"; then
11015 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11016 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11022 AC_SUBST(RAPTOR_MAJOR)
11023 AC_SUBST(RASQAL_MAJOR)
11024 AC_SUBST(REDLAND_MAJOR)
11026 dnl ===================================================================
11027 dnl Check for system hunspell
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([which libhunspell to use])
11030 if test "$with_system_hunspell" = "yes"; then
11031 AC_MSG_RESULT([external])
11032 SYSTEM_HUNSPELL=TRUE
11033 AC_LANG_PUSH([C++])
11034 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11035 if test "$HUNSPELL_PC" != "TRUE"; then
11036 AC_CHECK_HEADER(hunspell.hxx, [],
11038 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11039 [AC_MSG_ERROR(hunspell headers not found.)], [])
11041 AC_CHECK_LIB([hunspell], [main], [:],
11042 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11043 HUNSPELL_LIBS=-lhunspell
11046 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11047 FilterLibs "${HUNSPELL_LIBS}"
11048 HUNSPELL_LIBS="${filteredlibs}"
11050 AC_MSG_RESULT([internal])
11052 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11053 if test "$COM" = "MSC"; then
11054 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11056 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11058 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11060 AC_SUBST(SYSTEM_HUNSPELL)
11061 AC_SUBST(HUNSPELL_CFLAGS)
11062 AC_SUBST(HUNSPELL_LIBS)
11064 dnl ===================================================================
11065 dnl Check for system zxing
11066 dnl ===================================================================
11067 AC_MSG_CHECKING([whether to use zxing])
11068 if test "$enable_zxing" = "no"; then
11069 AC_MSG_RESULT([no])
11073 AC_MSG_RESULT([yes])
11075 AC_MSG_CHECKING([which libzxing to use])
11076 if test "$with_system_zxing" = "yes"; then
11077 AC_MSG_RESULT([external])
11079 AC_LANG_PUSH([C++])
11080 AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11081 [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11082 ZXING_CFLAGS=-I/usr/include/ZXing
11083 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11084 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11085 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11087 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11088 FilterLibs "${ZXING_LIBS}"
11089 ZXING_LIBS="${filteredlibs}"
11091 AC_MSG_RESULT([internal])
11093 BUILD_TYPE="$BUILD_TYPE ZXING"
11095 if test "$ENABLE_ZXING" = TRUE; then
11096 AC_DEFINE(ENABLE_ZXING)
11099 AC_SUBST(SYSTEM_ZXING)
11100 AC_SUBST(ENABLE_ZXING)
11101 AC_SUBST(ZXING_CFLAGS)
11102 AC_SUBST(ZXING_LIBS)
11104 dnl ===================================================================
11105 dnl Check for system box2d
11106 dnl ===================================================================
11107 AC_MSG_CHECKING([which box2d to use])
11108 if test "$with_system_box2d" = "yes"; then
11109 AC_MSG_RESULT([external])
11111 AC_LANG_PUSH([C++])
11112 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11113 [BOX2D_H_FOUND='FALSE'])
11114 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11116 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11118 # fail this. there's no other alternative to check when we are here.
11119 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11120 [AC_MSG_ERROR(box2d headers not found.)])
11122 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11124 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11125 [ AC_MSG_ERROR(box2d library not found.) ], [])
11126 BOX2D_LIBS=-l$_BOX2D_LIB
11128 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11129 FilterLibs "${BOX2D_LIBS}"
11130 BOX2D_LIBS="${filteredlibs}"
11132 AC_MSG_RESULT([internal])
11134 BUILD_TYPE="$BUILD_TYPE BOX2D"
11136 AC_SUBST(SYSTEM_BOX2D)
11137 AC_SUBST(BOX2D_CFLAGS)
11138 AC_SUBST(BOX2D_LIBS)
11140 dnl ===================================================================
11141 dnl Checking for altlinuxhyph
11142 dnl ===================================================================
11143 AC_MSG_CHECKING([which altlinuxhyph to use])
11144 if test "$with_system_altlinuxhyph" = "yes"; then
11145 AC_MSG_RESULT([external])
11147 AC_CHECK_HEADER(hyphen.h, [],
11148 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11149 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11150 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11151 [#include <hyphen.h>])
11152 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11153 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11154 if test -z "$HYPHEN_LIB"; then
11155 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11156 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11158 if test -z "$HYPHEN_LIB"; then
11159 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11160 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11163 AC_MSG_RESULT([internal])
11165 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11166 if test "$COM" = "MSC"; then
11167 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11169 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11172 AC_SUBST(SYSTEM_HYPH)
11173 AC_SUBST(HYPHEN_LIB)
11175 dnl ===================================================================
11176 dnl Checking for mythes
11177 dnl ===================================================================
11178 AC_MSG_CHECKING([which mythes to use])
11179 if test "$with_system_mythes" = "yes"; then
11180 AC_MSG_RESULT([external])
11182 AC_LANG_PUSH([C++])
11183 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11184 if test "$MYTHES_PKGCONFIG" = "no"; then
11185 AC_CHECK_HEADER(mythes.hxx, [],
11186 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11187 AC_CHECK_LIB([mythes-1.2], [main], [:],
11188 [ MYTHES_FOUND=no], [])
11189 if test "$MYTHES_FOUND" = "no"; then
11190 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11191 [ MYTHES_FOUND=no], [])
11193 if test "$MYTHES_FOUND" = "no"; then
11194 AC_MSG_ERROR([mythes library not found!.])
11198 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11199 FilterLibs "${MYTHES_LIBS}"
11200 MYTHES_LIBS="${filteredlibs}"
11202 AC_MSG_RESULT([internal])
11204 BUILD_TYPE="$BUILD_TYPE MYTHES"
11205 if test "$COM" = "MSC"; then
11206 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11208 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11211 AC_SUBST(SYSTEM_MYTHES)
11212 AC_SUBST(MYTHES_CFLAGS)
11213 AC_SUBST(MYTHES_LIBS)
11215 dnl ===================================================================
11216 dnl How should we build the linear programming solver ?
11217 dnl ===================================================================
11220 AC_MSG_CHECKING([whether to build with CoinMP])
11221 if test "$enable_coinmp" != "no"; then
11223 AC_MSG_RESULT([yes])
11224 if test "$with_system_coinmp" = "yes"; then
11226 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11227 FilterLibs "${COINMP_LIBS}"
11228 COINMP_LIBS="${filteredlibs}"
11230 BUILD_TYPE="$BUILD_TYPE COINMP"
11233 AC_MSG_RESULT([no])
11235 AC_SUBST(ENABLE_COINMP)
11236 AC_SUBST(SYSTEM_COINMP)
11237 AC_SUBST(COINMP_CFLAGS)
11238 AC_SUBST(COINMP_LIBS)
11241 AC_MSG_CHECKING([whether to build with lpsolve])
11242 if test "$enable_lpsolve" != "no"; then
11243 ENABLE_LPSOLVE=TRUE
11244 AC_MSG_RESULT([yes])
11246 AC_MSG_RESULT([no])
11248 AC_SUBST(ENABLE_LPSOLVE)
11250 if test "$ENABLE_LPSOLVE" = TRUE; then
11251 AC_MSG_CHECKING([which lpsolve to use])
11252 if test "$with_system_lpsolve" = "yes"; then
11253 AC_MSG_RESULT([external])
11254 SYSTEM_LPSOLVE=TRUE
11255 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11256 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11258 # some systems need this. Like Ubuntu...
11259 AC_CHECK_LIB(m, floor)
11260 AC_CHECK_LIB(dl, dlopen)
11261 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11262 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11265 AC_MSG_RESULT([internal])
11267 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11270 AC_SUBST(SYSTEM_LPSOLVE)
11272 dnl ===================================================================
11273 dnl Checking for libexttextcat
11274 dnl ===================================================================
11275 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11276 if test "$with_system_libexttextcat" = "yes"; then
11277 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11279 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11281 dnl ===================================================================
11282 dnl Checking for libnumbertext
11283 dnl ===================================================================
11284 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11285 if test "$with_system_libnumbertext" = "yes"; then
11286 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11287 SYSTEM_LIBNUMBERTEXT=YES
11289 SYSTEM_LIBNUMBERTEXT=
11290 AC_LANG_PUSH([C++])
11291 save_CPPFLAGS=$CPPFLAGS
11292 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11293 AC_CHECK_HEADERS([codecvt regex])
11294 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11295 [ LIBNUMBERTEXT_CFLAGS=''
11296 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11297 Enable libnumbertext fallback (missing number to number name conversion).])
11299 CPPFLAGS=$save_CPPFLAGS
11302 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11303 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11304 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11306 dnl ***************************************
11307 dnl testing libc version for Linux...
11308 dnl ***************************************
11309 if test "$_os" = "Linux"; then
11310 AC_MSG_CHECKING([whether the libc is recent enough])
11311 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11312 #include <features.h>
11313 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11314 #error glibc >= 2.1 is required
11316 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11319 dnl =========================================
11320 dnl Check for uuidgen
11321 dnl =========================================
11322 if test "$_os" = "WINNT"; then
11323 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11324 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11325 UUIDGEN=uuidgen.exe
11328 AC_PATH_PROG([UUIDGEN], [uuidgen])
11329 if test -z "$UUIDGEN"; then
11330 AC_MSG_WARN([uuid is needed for building installation sets])
11334 dnl ***************************************
11335 dnl Checking for bison and flex
11336 dnl ***************************************
11337 AC_PATH_PROG(BISON, bison)
11338 if test -z "$BISON"; then
11339 AC_MSG_ERROR([no bison found in \$PATH, install it])
11341 AC_MSG_CHECKING([the bison version])
11342 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11343 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11344 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11347 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]
11348 dnl typedef union YYSTYPE
11351 dnl while at least 3.4.1 is know to be good:
11352 if test "$COMPILER_PLUGINS" = TRUE; then
11353 if test "$_bison_longver" -lt 2004; then
11354 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11357 if test "$_bison_longver" -lt 2000; then
11358 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11364 AC_PATH_PROG(FLEX, flex)
11365 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11366 FLEX=`cygpath -m $FLEX`
11368 if test -z "$FLEX"; then
11369 AC_MSG_ERROR([no flex found in \$PATH, install it])
11371 AC_MSG_CHECKING([the flex version])
11372 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11373 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11374 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11378 dnl ***************************************
11379 dnl Checking for patch
11380 dnl ***************************************
11381 AC_PATH_PROG(PATCH, patch)
11382 if test -z "$PATCH"; then
11383 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11386 dnl On Solaris or macOS, check if --with-gnu-patch was used
11387 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11388 if test -z "$with_gnu_patch"; then
11391 if test -x "$with_gnu_patch"; then
11392 GNUPATCH=$with_gnu_patch
11394 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11398 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11399 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11400 AC_MSG_RESULT([yes])
11402 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11408 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11409 GNUPATCH=`cygpath -m $GNUPATCH`
11412 dnl We also need to check for --with-gnu-cp
11414 if test -z "$with_gnu_cp"; then
11415 # check the place where the good stuff is hidden on Solaris...
11416 if test -x /usr/gnu/bin/cp; then
11417 GNUCP=/usr/gnu/bin/cp
11419 AC_PATH_PROGS(GNUCP, gnucp cp)
11421 if test -z $GNUCP; then
11422 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11425 if test -x "$with_gnu_cp"; then
11428 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11432 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11433 GNUCP=`cygpath -m $GNUCP`
11436 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11437 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11438 AC_MSG_RESULT([yes])
11439 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11440 AC_MSG_RESULT([yes])
11442 case "$build_os" in
11443 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11446 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11449 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11458 dnl ***************************************
11459 dnl testing assembler path
11460 dnl ***************************************
11462 if test "$_os" = "WINNT"; then
11463 case "$WIN_HOST_ARCH" in
11464 x86) assembler=ml.exe ;;
11465 x64) assembler=ml64.exe ;;
11466 arm64) assembler=armasm64.exe ;;
11469 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11470 if test -f "$MSVC_HOST_PATH/$assembler"; then
11471 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11472 AC_MSG_RESULT([$ML_EXE])
11474 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11480 dnl ===================================================================
11481 dnl We need zip and unzip
11482 dnl ===================================================================
11483 AC_PATH_PROG(ZIP, zip)
11484 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11485 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11486 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],,)
11489 AC_PATH_PROG(UNZIP, unzip)
11490 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11492 dnl ===================================================================
11493 dnl Zip must be a specific type for different build types.
11494 dnl ===================================================================
11495 if test $build_os = cygwin; then
11496 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11497 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11501 dnl ===================================================================
11502 dnl We need touch with -h option support.
11503 dnl ===================================================================
11504 AC_PATH_PROG(TOUCH, touch)
11505 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11506 touch "$WARNINGS_FILE"
11507 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11508 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],,)
11511 dnl ===================================================================
11512 dnl Check for system epoxy
11513 dnl ===================================================================
11514 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11516 dnl ===================================================================
11517 dnl Set vcl option: coordinate device in double or sal_Int32
11518 dnl ===================================================================
11520 dnl disabled for now, we don't want subtle differences between OSs
11521 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11522 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11523 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11524 dnl AC_MSG_RESULT([double])
11526 dnl AC_MSG_RESULT([sal_Int32])
11529 dnl ===================================================================
11530 dnl Show which vclplugs will be built.
11531 dnl ===================================================================
11533 if test "$USING_X11" != TRUE; then
11538 if test "x$enable_gtk3" = "xyes"; then
11540 AC_DEFINE(ENABLE_GTK3)
11543 AC_SUBST(ENABLE_GTK3)
11545 ENABLE_GTK3_KDE5=""
11546 if test "x$enable_gtk3_kde5" = "xyes"; then
11547 ENABLE_GTK3_KDE5="TRUE"
11548 AC_DEFINE(ENABLE_GTK3_KDE5)
11551 AC_SUBST(ENABLE_GTK3_KDE5)
11554 if test "x$enable_gtk4" = "xyes"; then
11556 AC_DEFINE(ENABLE_GTK4)
11559 AC_SUBST(ENABLE_GTK4)
11562 if test "x$enable_qt5" = "xyes"; then
11564 AC_DEFINE(ENABLE_QT5)
11567 AC_SUBST(ENABLE_QT5)
11570 if test "x$enable_qt6" = "xyes"; then
11572 AC_DEFINE(ENABLE_QT6)
11575 AC_SUBST(ENABLE_QT6)
11579 if test "x$enable_kf5" = "xyes"; then
11581 AC_DEFINE(ENABLE_KF5)
11584 AC_SUBST(ENABLE_KF5)
11586 if test "x$USING_X11" = "xyes"; then
11590 if test "$_os" = "WINNT"; then
11592 elif test "$_os" = "Darwin"; then
11594 elif test "$_os" = "iOS"; then
11596 elif test "$_os" = Android; then
11600 build_vcl_plugins="$R"
11601 if test -z "$build_vcl_plugins"; then
11602 build_vcl_plugins=" none"
11604 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11606 AC_SUBST([VCL_PLUGIN_INFO])
11608 dnl ===================================================================
11609 dnl Check for GTK libraries
11610 dnl ===================================================================
11614 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11615 if test "$with_system_cairo" = no; then
11616 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11618 : ${with_system_cairo:=yes}
11619 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)
11620 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11621 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11622 FilterLibs "${GTK3_LIBS}"
11623 GTK3_LIBS="${filteredlibs}"
11625 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11626 if test "$with_system_epoxy" != "yes"; then
11627 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11628 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11629 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11632 AC_SUBST(GTK3_LIBS)
11633 AC_SUBST(GTK3_CFLAGS)
11637 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11638 if test "$with_system_cairo" = no; then
11639 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11641 : ${with_system_cairo:=yes}
11642 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11643 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11644 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11645 FilterLibs "${GTK4_LIBS}"
11646 GTK4_LIBS="${filteredlibs}"
11648 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11649 if test "$with_system_epoxy" != "yes"; then
11650 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11651 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11652 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11655 AC_SUBST(GTK4_LIBS)
11656 AC_SUBST(GTK4_CFLAGS)
11658 if test "$enable_introspection" = yes; then
11659 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11660 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11662 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11666 dnl ===================================================================
11667 dnl check for dbus support
11668 dnl ===================================================================
11672 DBUS_GLIB_CFLAGS=""
11676 if test "$enable_dbus" = "no"; then
11680 AC_MSG_CHECKING([whether to enable DBUS support])
11681 if test "$test_dbus" = "yes"; then
11683 AC_MSG_RESULT([yes])
11684 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11685 AC_DEFINE(ENABLE_DBUS)
11686 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11687 FilterLibs "${DBUS_LIBS}"
11688 DBUS_LIBS="${filteredlibs}"
11690 # Glib is needed for BluetoothServer
11691 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11692 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11694 DBUS_HAVE_GLIB="TRUE"
11695 AC_DEFINE(DBUS_HAVE_GLIB,1)
11697 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11700 AC_MSG_RESULT([no])
11703 AC_SUBST(ENABLE_DBUS)
11704 AC_SUBST(DBUS_CFLAGS)
11705 AC_SUBST(DBUS_LIBS)
11706 AC_SUBST(DBUS_GLIB_CFLAGS)
11707 AC_SUBST(DBUS_GLIB_LIBS)
11708 AC_SUBST(DBUS_HAVE_GLIB)
11710 AC_MSG_CHECKING([whether to enable Impress remote control])
11711 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11712 AC_MSG_RESULT([yes])
11713 ENABLE_SDREMOTE=TRUE
11714 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11716 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11717 # The Bluetooth code doesn't compile with macOS SDK 10.15
11718 if test "$enable_sdremote_bluetooth" = yes; then
11719 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11721 enable_sdremote_bluetooth=no
11723 # If not explicitly enabled or disabled, default
11724 if test -z "$enable_sdremote_bluetooth"; then
11727 # Default to yes for these
11728 enable_sdremote_bluetooth=yes
11732 enable_sdremote_bluetooth=no
11736 # $enable_sdremote_bluetooth is guaranteed non-empty now
11738 if test "$enable_sdremote_bluetooth" != "no"; then
11739 if test "$OS" = "LINUX"; then
11740 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11741 AC_MSG_RESULT([yes])
11742 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11743 dnl ===================================================================
11744 dnl Check for system bluez
11745 dnl ===================================================================
11746 AC_MSG_CHECKING([which Bluetooth header to use])
11747 if test "$with_system_bluez" = "yes"; then
11748 AC_MSG_RESULT([external])
11749 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11750 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11753 AC_MSG_RESULT([internal])
11757 AC_MSG_RESULT([no, dbus disabled])
11758 ENABLE_SDREMOTE_BLUETOOTH=
11762 AC_MSG_RESULT([yes])
11763 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11767 AC_MSG_RESULT([no])
11768 ENABLE_SDREMOTE_BLUETOOTH=
11774 AC_MSG_RESULT([no])
11776 AC_SUBST(ENABLE_SDREMOTE)
11777 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11778 AC_SUBST(SYSTEM_BLUEZ)
11780 dnl ===================================================================
11781 dnl Check whether to enable GIO support
11782 dnl ===================================================================
11783 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11784 AC_MSG_CHECKING([whether to enable GIO support])
11785 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11786 dnl Need at least 2.26 for the dbus support.
11787 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11788 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11789 if test "$ENABLE_GIO" = "TRUE"; then
11790 AC_DEFINE(ENABLE_GIO)
11791 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11792 FilterLibs "${GIO_LIBS}"
11793 GIO_LIBS="${filteredlibs}"
11796 AC_MSG_RESULT([no])
11799 AC_SUBST(ENABLE_GIO)
11800 AC_SUBST(GIO_CFLAGS)
11804 dnl ===================================================================
11806 SPLIT_APP_MODULES=""
11807 if test "$enable_split_app_modules" = "yes"; then
11808 SPLIT_APP_MODULES="TRUE"
11810 AC_SUBST(SPLIT_APP_MODULES)
11812 SPLIT_OPT_FEATURES=""
11813 if test "$enable_split_opt_features" = "yes"; then
11814 SPLIT_OPT_FEATURES="TRUE"
11816 AC_SUBST(SPLIT_OPT_FEATURES)
11818 dnl ===================================================================
11819 dnl Check whether the GStreamer libraries are available.
11820 dnl ===================================================================
11822 ENABLE_GSTREAMER_1_0=""
11824 if test "$test_gstreamer_1_0" = yes; then
11826 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11827 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11828 ENABLE_GSTREAMER_1_0="TRUE"
11829 AC_MSG_RESULT([yes])
11830 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11831 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11832 FilterLibs "${GSTREAMER_1_0_LIBS}"
11833 GSTREAMER_1_0_LIBS="${filteredlibs}"
11834 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11836 AC_MSG_RESULT([no])
11839 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11840 AC_SUBST(GSTREAMER_1_0_LIBS)
11841 AC_SUBST(ENABLE_GSTREAMER_1_0)
11843 ENABLE_OPENGL_TRANSITIONS=
11844 ENABLE_OPENGL_CANVAS=
11845 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11847 elif test "$_os" = "Darwin"; then
11848 # We use frameworks on macOS, no need for detail checks
11849 ENABLE_OPENGL_TRANSITIONS=TRUE
11850 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11851 ENABLE_OPENGL_CANVAS=TRUE
11852 elif test $_os = WINNT; then
11853 ENABLE_OPENGL_TRANSITIONS=TRUE
11854 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11855 ENABLE_OPENGL_CANVAS=TRUE
11857 if test "$USING_X11" = TRUE; then
11858 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11859 ENABLE_OPENGL_TRANSITIONS=TRUE
11860 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11861 ENABLE_OPENGL_CANVAS=TRUE
11865 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11866 AC_SUBST(ENABLE_OPENGL_CANVAS)
11868 dnl =================================================
11869 dnl Check whether to build with OpenCL support.
11870 dnl =================================================
11872 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11873 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11874 # platform (optional at run-time, used through clew).
11875 BUILD_TYPE="$BUILD_TYPE OPENCL"
11876 AC_DEFINE(HAVE_FEATURE_OPENCL)
11879 dnl =================================================
11880 dnl Check whether to build with dconf support.
11881 dnl =================================================
11883 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11884 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11885 if test "$enable_dconf" = yes; then
11886 AC_MSG_ERROR([dconf not found])
11891 AC_MSG_CHECKING([whether to enable dconf])
11892 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11896 AC_MSG_RESULT([no])
11899 AC_DEFINE(ENABLE_DCONF)
11900 AC_MSG_RESULT([yes])
11902 AC_SUBST([DCONF_CFLAGS])
11903 AC_SUBST([DCONF_LIBS])
11904 AC_SUBST([ENABLE_DCONF])
11907 AC_MSG_CHECKING([whether to build the PDF import feature])
11909 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11910 AC_MSG_RESULT([yes])
11911 ENABLE_PDFIMPORT=TRUE
11912 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11914 AC_MSG_RESULT([no])
11918 AC_MSG_CHECKING([whether to build PDFium])
11920 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11921 AC_MSG_RESULT([yes])
11923 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11925 AC_MSG_RESULT([no])
11927 AC_SUBST(ENABLE_PDFIUM)
11929 if test "$ENABLE_PDFIUM" = "TRUE"; then
11930 AC_MSG_CHECKING([which OpenJPEG library to use])
11931 if test "$with_system_openjpeg" = "yes"; then
11932 SYSTEM_OPENJPEG2=TRUE
11933 AC_MSG_RESULT([external])
11934 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11935 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11936 FilterLibs "${OPENJPEG2_LIBS}"
11937 OPENJPEG2_LIBS="${filteredlibs}"
11939 SYSTEM_OPENJPEG2=FALSE
11940 AC_MSG_RESULT([internal])
11942 AC_MSG_CHECKING([which Abseil library to use])
11943 if test "$with_system_abseil" = "yes"; then
11944 AC_MSG_RESULT([external])
11946 AC_LANG_PUSH([C++])
11947 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11948 [AC_MSG_ERROR(abseil headers not found.)], [])
11949 #ABSEIL_CFLAGS=-I/usr/include
11950 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
11951 [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
11953 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11954 FilterLibs "${ABSEIL_LIBS}"
11955 ABSEIL_LIBS="${filteredlibs}"
11957 AC_MSG_RESULT([internal])
11960 AC_SUBST(SYSTEM_OPENJPEG2)
11961 AC_SUBST(SYSTEM_ABSEIL)
11962 AC_SUBST(ABSEIL_CFLAGS)
11963 AC_SUBST(ABSEIL_LIBS)
11965 dnl ===================================================================
11966 dnl Check for poppler
11967 dnl ===================================================================
11969 AC_MSG_CHECKING([whether to build Poppler])
11970 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11971 AC_MSG_RESULT([yes])
11972 ENABLE_POPPLER=TRUE
11973 AC_DEFINE(HAVE_FEATURE_POPPLER)
11975 AC_MSG_RESULT([no])
11977 AC_SUBST(ENABLE_POPPLER)
11979 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11980 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11983 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11984 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11987 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11988 dnl ===================================================================
11989 dnl Check for system poppler
11990 dnl ===================================================================
11991 AC_MSG_CHECKING([which PDF import poppler to use])
11992 if test "$with_system_poppler" = "yes"; then
11993 AC_MSG_RESULT([external])
11994 SYSTEM_POPPLER=TRUE
11995 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11996 AC_LANG_PUSH([C++])
11997 save_CXXFLAGS=$CXXFLAGS
11998 save_CPPFLAGS=$CPPFLAGS
11999 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
12000 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
12001 AC_CHECK_HEADER([cpp/poppler-version.h],
12002 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
12004 CXXFLAGS=$save_CXXFLAGS
12005 CPPFLAGS=$save_CPPFLAGS
12007 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12009 FilterLibs "${POPPLER_LIBS}"
12010 POPPLER_LIBS="${filteredlibs}"
12012 AC_MSG_RESULT([internal])
12014 BUILD_TYPE="$BUILD_TYPE POPPLER"
12015 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
12017 AC_DEFINE([ENABLE_PDFIMPORT],1)
12019 AC_SUBST(ENABLE_PDFIMPORT)
12020 AC_SUBST(SYSTEM_POPPLER)
12021 AC_SUBST(POPPLER_CFLAGS)
12022 AC_SUBST(POPPLER_LIBS)
12026 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12027 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12028 if test "$SYSTEM_FREETYPE" = TRUE; then
12029 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12030 [skia_freetype_ok=yes],
12031 [skia_freetype_ok=no])
12032 else # internal is ok
12033 skia_freetype_ok=yes
12035 AC_MSG_CHECKING([whether to build Skia])
12036 if test "$skia_freetype_ok" = "yes"; then
12037 if test "$enable_skia" = "debug"; then
12038 AC_MSG_RESULT([yes (debug)])
12039 ENABLE_SKIA_DEBUG=TRUE
12041 AC_MSG_RESULT([yes])
12045 AC_DEFINE(HAVE_FEATURE_SKIA)
12046 BUILD_TYPE="$BUILD_TYPE SKIA"
12048 if test "$OS" = "MACOSX"; then
12049 AC_DEFINE(SK_SUPPORT_GPU,1)
12050 AC_DEFINE(SK_METAL,1)
12054 AC_DEFINE(SK_SUPPORT_GPU,1)
12055 AC_DEFINE(SK_VULKAN,1)
12060 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12061 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12062 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12065 AC_MSG_RESULT([no (freetype too old)])
12066 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12070 AC_MSG_CHECKING([whether to build Skia])
12071 AC_MSG_RESULT([no])
12073 AC_SUBST(ENABLE_SKIA)
12074 AC_SUBST(ENABLE_SKIA_DEBUG)
12076 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12077 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12078 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12079 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12080 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12081 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12082 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12083 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12084 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12085 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12086 HAVE_LO_CLANG_DLLEXPORTINLINES=
12088 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12089 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12090 AC_MSG_CHECKING([for Clang])
12091 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12093 if test "$_os" = "WINNT"; then
12094 AC_MSG_CHECKING([for clang-cl])
12095 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12096 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12097 dnl explicitly set -m32/-m64
12098 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12099 LO_CLANG_CXX="$LO_CLANG_CC"
12100 AC_MSG_RESULT([$LO_CLANG_CC])
12102 AC_MSG_RESULT([no])
12105 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12106 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12109 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12110 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12111 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12112 if test "$clang2_ver" -lt 50002; then
12113 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12118 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12120 CXX="$LO_CLANG_CXX"
12121 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12122 AC_LANG_PUSH([C++])
12123 save_CXXFLAGS=$CXXFLAGS
12124 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12125 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12126 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12127 AC_MSG_RESULT([yes])
12128 ], [AC_MSG_RESULT([no])])
12129 CXXFLAGS=$save_CXXFLAGS
12132 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12133 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.])
12136 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12137 # Skia is the default on Windows and Mac, so hard-require Clang.
12138 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12139 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12140 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12142 AC_MSG_WARN([Clang compiler not found.])
12147 CXX="$LO_CLANG_CXX"
12148 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12151 flag_sse41=-msse4.1
12152 flag_sse42=-msse4.2
12155 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12156 flag_avx512f=-mavx512f
12160 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12161 AC_LANG_PUSH([C++])
12162 save_CXXFLAGS=$CXXFLAGS
12163 CXXFLAGS="$CXXFLAGS $flag_sse2"
12164 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12165 #include <emmintrin.h>
12167 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12168 c = _mm_xor_si128 (a, b);
12172 [can_compile_sse2=yes],
12173 [can_compile_sse2=no])
12175 CXXFLAGS=$save_CXXFLAGS
12176 AC_MSG_RESULT([${can_compile_sse2}])
12177 if test "${can_compile_sse2}" = "yes" ; then
12178 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12181 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12182 AC_LANG_PUSH([C++])
12183 save_CXXFLAGS=$CXXFLAGS
12184 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12185 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12186 #include <tmmintrin.h>
12188 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12189 c = _mm_maddubs_epi16 (a, b);
12193 [can_compile_ssse3=yes],
12194 [can_compile_ssse3=no])
12196 CXXFLAGS=$save_CXXFLAGS
12197 AC_MSG_RESULT([${can_compile_ssse3}])
12198 if test "${can_compile_ssse3}" = "yes" ; then
12199 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12202 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12203 AC_LANG_PUSH([C++])
12204 save_CXXFLAGS=$CXXFLAGS
12205 CXXFLAGS="$CXXFLAGS $flag_sse41"
12206 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12207 #include <smmintrin.h>
12209 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12210 c = _mm_cmpeq_epi64 (a, b);
12214 [can_compile_sse41=yes],
12215 [can_compile_sse41=no])
12217 CXXFLAGS=$save_CXXFLAGS
12218 AC_MSG_RESULT([${can_compile_sse41}])
12219 if test "${can_compile_sse41}" = "yes" ; then
12220 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12223 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12224 AC_LANG_PUSH([C++])
12225 save_CXXFLAGS=$CXXFLAGS
12226 CXXFLAGS="$CXXFLAGS $flag_sse42"
12227 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12228 #include <nmmintrin.h>
12230 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12231 c = _mm_cmpgt_epi64 (a, b);
12235 [can_compile_sse42=yes],
12236 [can_compile_sse42=no])
12238 CXXFLAGS=$save_CXXFLAGS
12239 AC_MSG_RESULT([${can_compile_sse42}])
12240 if test "${can_compile_sse42}" = "yes" ; then
12241 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12244 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12245 AC_LANG_PUSH([C++])
12246 save_CXXFLAGS=$CXXFLAGS
12247 CXXFLAGS="$CXXFLAGS $flag_avx"
12248 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12249 #include <immintrin.h>
12251 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12252 c = _mm256_xor_ps(a, b);
12256 [can_compile_avx=yes],
12257 [can_compile_avx=no])
12259 CXXFLAGS=$save_CXXFLAGS
12260 AC_MSG_RESULT([${can_compile_avx}])
12261 if test "${can_compile_avx}" = "yes" ; then
12262 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12265 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12266 AC_LANG_PUSH([C++])
12267 save_CXXFLAGS=$CXXFLAGS
12268 CXXFLAGS="$CXXFLAGS $flag_avx2"
12269 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12270 #include <immintrin.h>
12272 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12273 c = _mm256_maddubs_epi16(a, b);
12277 [can_compile_avx2=yes],
12278 [can_compile_avx2=no])
12280 CXXFLAGS=$save_CXXFLAGS
12281 AC_MSG_RESULT([${can_compile_avx2}])
12282 if test "${can_compile_avx2}" = "yes" ; then
12283 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12286 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12287 AC_LANG_PUSH([C++])
12288 save_CXXFLAGS=$CXXFLAGS
12289 CXXFLAGS="$CXXFLAGS $flag_avx512"
12290 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12291 #include <immintrin.h>
12293 __m512i a = _mm512_loadu_si512(0);
12294 __m512d v1 = _mm512_load_pd(0);
12295 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12296 __m512d v2 = _mm512_abs_pd(v1);
12300 [can_compile_avx512=yes],
12301 [can_compile_avx512=no])
12303 CXXFLAGS=$save_CXXFLAGS
12304 AC_MSG_RESULT([${can_compile_avx512}])
12305 if test "${can_compile_avx512}" = "yes" ; then
12306 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12307 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12310 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12311 AC_LANG_PUSH([C++])
12312 save_CXXFLAGS=$CXXFLAGS
12313 CXXFLAGS="$CXXFLAGS $flag_f16c"
12314 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12315 #include <immintrin.h>
12317 __m128i a = _mm_set1_epi32 (0);
12319 c = _mm_cvtph_ps(a);
12323 [can_compile_f16c=yes],
12324 [can_compile_f16c=no])
12326 CXXFLAGS=$save_CXXFLAGS
12327 AC_MSG_RESULT([${can_compile_f16c}])
12328 if test "${can_compile_f16c}" = "yes" ; then
12329 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12332 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12333 AC_LANG_PUSH([C++])
12334 save_CXXFLAGS=$CXXFLAGS
12335 CXXFLAGS="$CXXFLAGS $flag_fma"
12336 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12337 #include <immintrin.h>
12339 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12340 d = _mm256_fmadd_ps(a, b, c);
12344 [can_compile_fma=yes],
12345 [can_compile_fma=no])
12347 CXXFLAGS=$save_CXXFLAGS
12348 AC_MSG_RESULT([${can_compile_fma}])
12349 if test "${can_compile_fma}" = "yes" ; then
12350 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12357 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12359 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12360 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12364 save_CFLAGS=$CFLAGS
12365 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12366 dnl an empty program will do, we're checking the compiler flags
12367 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12368 [use_ccache=yes], [use_ccache=no])
12369 CFLAGS=$save_CFLAGS
12371 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12372 AC_MSG_RESULT([yes])
12374 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12375 AC_MSG_RESULT([no])
12379 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12380 AC_LANG_PUSH([C++])
12382 CXX="$LO_CLANG_CXX"
12383 save_CXXFLAGS=$CXXFLAGS
12384 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12385 dnl an empty program will do, we're checking the compiler flags
12386 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12387 [use_ccache=yes], [use_ccache=no])
12388 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12389 AC_MSG_RESULT([yes])
12391 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12392 AC_MSG_RESULT([no])
12394 CXXFLAGS=$save_CXXFLAGS
12399 AC_SUBST(LO_CLANG_CC)
12400 AC_SUBST(LO_CLANG_CXX)
12401 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12402 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12403 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12404 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12405 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12406 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12407 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12408 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12409 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12410 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12411 AC_SUBST(CLANG_USE_LD)
12412 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12416 if test "$enable_gpgmepp" = no; then
12417 AC_MSG_CHECKING([whether to enable gpgmepp])
12418 AC_MSG_RESULT([no])
12419 elif test "$enable_mpl_subset" = "yes"; then
12420 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12421 AC_MSG_RESULT([yes])
12422 elif test "$enable_fuzzers" = "yes"; then
12423 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12424 AC_MSG_RESULT([yes])
12425 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12426 dnl ===================================================================
12427 dnl Check for system gpgme
12428 dnl ===================================================================
12429 AC_MSG_CHECKING([which gpgmepp to use])
12430 if test "$with_system_gpgmepp" = "yes"; then
12431 AC_MSG_RESULT([external])
12432 SYSTEM_GPGMEPP=TRUE
12434 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12435 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12436 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12437 # progress_callback is the only func with plain C linkage
12438 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12439 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12440 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12441 AC_CHECK_HEADER(gpgme.h, [],
12442 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12444 AC_MSG_RESULT([internal])
12445 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12446 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12448 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12449 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12450 if test "$_os" != "WINNT"; then
12451 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12452 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12455 ENABLE_GPGMEPP=TRUE
12456 AC_DEFINE([HAVE_FEATURE_GPGME])
12457 AC_PATH_PROG(GPG, gpg)
12458 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12459 # so let's exclude that manually for the moment
12460 if test -n "$GPG" -a "$_os" != "WINNT"; then
12461 # make sure we not only have a working gpgme, but a full working
12462 # gpg installation to run OpenPGP signature verification
12463 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12465 if test "$_os" = "Linux"; then
12467 AC_MSG_CHECKING([for /run/user/$uid])
12468 if test -d /run/user/$uid; then
12469 AC_MSG_RESULT([yes])
12470 AC_PATH_PROG(GPGCONF, gpgconf)
12472 # Older versions of gpgconf are not working as expected, since
12473 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12474 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12475 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12476 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12477 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12478 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12479 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12480 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12481 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12482 if $GPGCONF --dump-options > /dev/null ; then
12483 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12484 AC_MSG_RESULT([yes])
12485 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12486 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12488 AC_MSG_RESULT([no])
12491 AC_MSG_RESULT([no. missing or broken gpgconf?])
12494 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12497 AC_MSG_RESULT([no])
12501 AC_SUBST(ENABLE_GPGMEPP)
12502 AC_SUBST(SYSTEM_GPGMEPP)
12503 AC_SUBST(GPG_ERROR_CFLAGS)
12504 AC_SUBST(GPG_ERROR_LIBS)
12505 AC_SUBST(LIBASSUAN_CFLAGS)
12506 AC_SUBST(LIBASSUAN_LIBS)
12507 AC_SUBST(GPGMEPP_CFLAGS)
12508 AC_SUBST(GPGMEPP_LIBS)
12510 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12511 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12512 AC_MSG_RESULT([yes])
12513 ENABLE_MEDIAWIKI=TRUE
12514 BUILD_TYPE="$BUILD_TYPE XSLTML"
12515 if test "x$with_java" = "xno"; then
12516 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12519 AC_MSG_RESULT([no])
12521 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12523 AC_SUBST(ENABLE_MEDIAWIKI)
12525 AC_MSG_CHECKING([whether to build the Report Builder])
12526 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12527 AC_MSG_RESULT([yes])
12528 ENABLE_REPORTBUILDER=TRUE
12529 AC_MSG_CHECKING([which jfreereport libs to use])
12530 if test "$with_system_jfreereport" = "yes"; then
12531 SYSTEM_JFREEREPORT=TRUE
12532 AC_MSG_RESULT([external])
12533 if test -z $SAC_JAR; then
12534 SAC_JAR=/usr/share/java/sac.jar
12536 if ! test -f $SAC_JAR; then
12537 AC_MSG_ERROR(sac.jar not found.)
12540 if test -z $LIBXML_JAR; then
12541 if test -f /usr/share/java/libxml-1.0.0.jar; then
12542 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12543 elif test -f /usr/share/java/libxml.jar; then
12544 LIBXML_JAR=/usr/share/java/libxml.jar
12546 AC_MSG_ERROR(libxml.jar replacement not found.)
12548 elif ! test -f $LIBXML_JAR; then
12549 AC_MSG_ERROR(libxml.jar not found.)
12552 if test -z $FLUTE_JAR; then
12553 if test -f /usr/share/java/flute-1.3.0.jar; then
12554 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12555 elif test -f /usr/share/java/flute.jar; then
12556 FLUTE_JAR=/usr/share/java/flute.jar
12558 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12560 elif ! test -f $FLUTE_JAR; then
12561 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12564 if test -z $JFREEREPORT_JAR; then
12565 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12566 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12567 elif test -f /usr/share/java/flow-engine.jar; then
12568 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12570 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12572 elif ! test -f $JFREEREPORT_JAR; then
12573 AC_MSG_ERROR(jfreereport.jar not found.)
12576 if test -z $LIBLAYOUT_JAR; then
12577 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12578 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12579 elif test -f /usr/share/java/liblayout.jar; then
12580 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12582 AC_MSG_ERROR(liblayout.jar replacement not found.)
12584 elif ! test -f $LIBLAYOUT_JAR; then
12585 AC_MSG_ERROR(liblayout.jar not found.)
12588 if test -z $LIBLOADER_JAR; then
12589 if test -f /usr/share/java/libloader-1.0.0.jar; then
12590 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12591 elif test -f /usr/share/java/libloader.jar; then
12592 LIBLOADER_JAR=/usr/share/java/libloader.jar
12594 AC_MSG_ERROR(libloader.jar replacement not found.)
12596 elif ! test -f $LIBLOADER_JAR; then
12597 AC_MSG_ERROR(libloader.jar not found.)
12600 if test -z $LIBFORMULA_JAR; then
12601 if test -f /usr/share/java/libformula-0.2.0.jar; then
12602 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12603 elif test -f /usr/share/java/libformula.jar; then
12604 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12606 AC_MSG_ERROR(libformula.jar replacement not found.)
12608 elif ! test -f $LIBFORMULA_JAR; then
12609 AC_MSG_ERROR(libformula.jar not found.)
12612 if test -z $LIBREPOSITORY_JAR; then
12613 if test -f /usr/share/java/librepository-1.0.0.jar; then
12614 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12615 elif test -f /usr/share/java/librepository.jar; then
12616 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12618 AC_MSG_ERROR(librepository.jar replacement not found.)
12620 elif ! test -f $LIBREPOSITORY_JAR; then
12621 AC_MSG_ERROR(librepository.jar not found.)
12624 if test -z $LIBFONTS_JAR; then
12625 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12626 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12627 elif test -f /usr/share/java/libfonts.jar; then
12628 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12630 AC_MSG_ERROR(libfonts.jar replacement not found.)
12632 elif ! test -f $LIBFONTS_JAR; then
12633 AC_MSG_ERROR(libfonts.jar not found.)
12636 if test -z $LIBSERIALIZER_JAR; then
12637 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12638 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12639 elif test -f /usr/share/java/libserializer.jar; then
12640 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12642 AC_MSG_ERROR(libserializer.jar replacement not found.)
12644 elif ! test -f $LIBSERIALIZER_JAR; then
12645 AC_MSG_ERROR(libserializer.jar not found.)
12648 if test -z $LIBBASE_JAR; then
12649 if test -f /usr/share/java/libbase-1.0.0.jar; then
12650 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12651 elif test -f /usr/share/java/libbase.jar; then
12652 LIBBASE_JAR=/usr/share/java/libbase.jar
12654 AC_MSG_ERROR(libbase.jar replacement not found.)
12656 elif ! test -f $LIBBASE_JAR; then
12657 AC_MSG_ERROR(libbase.jar not found.)
12661 AC_MSG_RESULT([internal])
12662 SYSTEM_JFREEREPORT=
12663 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12667 AC_MSG_RESULT([no])
12668 ENABLE_REPORTBUILDER=
12669 SYSTEM_JFREEREPORT=
12671 AC_SUBST(ENABLE_REPORTBUILDER)
12672 AC_SUBST(SYSTEM_JFREEREPORT)
12674 AC_SUBST(LIBXML_JAR)
12675 AC_SUBST(FLUTE_JAR)
12676 AC_SUBST(JFREEREPORT_JAR)
12677 AC_SUBST(LIBBASE_JAR)
12678 AC_SUBST(LIBLAYOUT_JAR)
12679 AC_SUBST(LIBLOADER_JAR)
12680 AC_SUBST(LIBFORMULA_JAR)
12681 AC_SUBST(LIBREPOSITORY_JAR)
12682 AC_SUBST(LIBFONTS_JAR)
12683 AC_SUBST(LIBSERIALIZER_JAR)
12685 # scripting provider for BeanShell?
12686 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12687 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12688 AC_MSG_RESULT([yes])
12689 ENABLE_SCRIPTING_BEANSHELL=TRUE
12691 dnl ===================================================================
12692 dnl Check for system beanshell
12693 dnl ===================================================================
12694 AC_MSG_CHECKING([which beanshell to use])
12695 if test "$with_system_beanshell" = "yes"; then
12696 AC_MSG_RESULT([external])
12698 if test -z $BSH_JAR; then
12699 BSH_JAR=/usr/share/java/bsh.jar
12701 if ! test -f $BSH_JAR; then
12702 AC_MSG_ERROR(bsh.jar not found.)
12705 AC_MSG_RESULT([internal])
12707 BUILD_TYPE="$BUILD_TYPE BSH"
12710 AC_MSG_RESULT([no])
12711 ENABLE_SCRIPTING_BEANSHELL=
12712 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12714 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12715 AC_SUBST(SYSTEM_BSH)
12718 # scripting provider for JavaScript?
12719 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12720 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12721 AC_MSG_RESULT([yes])
12722 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12724 dnl ===================================================================
12725 dnl Check for system rhino
12726 dnl ===================================================================
12727 AC_MSG_CHECKING([which rhino to use])
12728 if test "$with_system_rhino" = "yes"; then
12729 AC_MSG_RESULT([external])
12731 if test -z $RHINO_JAR; then
12732 RHINO_JAR=/usr/share/java/js.jar
12734 if ! test -f $RHINO_JAR; then
12735 AC_MSG_ERROR(js.jar not found.)
12738 AC_MSG_RESULT([internal])
12740 BUILD_TYPE="$BUILD_TYPE RHINO"
12744 AC_MSG_RESULT([no])
12745 ENABLE_SCRIPTING_JAVASCRIPT=
12746 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12748 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12749 AC_SUBST(SYSTEM_RHINO)
12750 AC_SUBST(RHINO_JAR)
12752 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12753 # paths should be added to library search path. So lets put all 64-bit
12756 case "$host_cpu" in
12757 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12758 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12759 supports_multilib="yes"
12766 dnl ===================================================================
12767 dnl QT5 Integration
12768 dnl ===================================================================
12774 QT5_GOBJECT_CFLAGS=""
12775 QT5_GOBJECT_LIBS=""
12776 QT5_HAVE_GOBJECT=""
12777 QT5_PLATFORMS_SRCDIR=""
12778 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12779 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12780 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12782 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12783 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12785 if test -n "$supports_multilib"; then
12786 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12789 qt5_test_include="QtWidgets/qapplication.h"
12790 if test "$_os" = "Emscripten"; then
12791 qt5_test_library="libQt5Widgets.a"
12793 qt5_test_library="libQt5Widgets.so"
12796 dnl Check for qmake5
12797 if test -n "$QT5DIR"; then
12798 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12800 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12802 if test "$QMAKE5" = "no"; then
12803 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12805 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12806 if test -z "$qmake5_test_ver"; then
12807 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12809 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12810 qt5_minimal_minor="6"
12811 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12812 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12814 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12818 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12819 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12820 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12821 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12823 AC_MSG_CHECKING([for Qt5 headers])
12825 for inc_dir in $qt5_incdirs; do
12826 if test -r "$inc_dir/$qt5_test_include"; then
12827 qt5_incdir="$inc_dir"
12831 AC_MSG_RESULT([$qt5_incdir])
12832 if test "x$qt5_incdir" = "xno"; then
12833 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12835 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12836 AC_LANG_PUSH([C++])
12837 save_CPPFLAGS=$CPPFLAGS
12838 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12839 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12840 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12841 CPPFLAGS=$save_CPPFLAGS
12844 AC_MSG_CHECKING([for Qt5 libraries])
12846 for lib_dir in $qt5_libdirs; do
12847 if test -r "$lib_dir/$qt5_test_library"; then
12848 qt5_libdir="$lib_dir"
12852 AC_MSG_RESULT([$qt5_libdir])
12853 if test "x$qt5_libdir" = "xno"; then
12854 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12857 if test "$_os" = "Emscripten"; then
12858 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12859 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12861 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12862 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12866 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12867 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12868 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12869 if test "$_os" = "Emscripten"; then
12870 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12873 if test "$USING_X11" = TRUE; then
12874 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12875 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12876 QT5_HAVE_XCB_ICCCM=1
12877 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12879 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)])
12880 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12882 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12883 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12885 AC_DEFINE(QT5_USING_X11)
12888 dnl Check for Meta Object Compiler
12890 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12891 if test "$MOC5" = "no"; then
12892 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12893 the root of your Qt installation by exporting QT5DIR before running "configure".])
12896 if test "$test_gstreamer_1_0" = yes; then
12897 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12899 AC_DEFINE(QT5_HAVE_GOBJECT)
12901 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12905 AC_SUBST(QT5_CFLAGS)
12908 AC_SUBST(QT5_GOBJECT_CFLAGS)
12909 AC_SUBST(QT5_GOBJECT_LIBS)
12910 AC_SUBST(QT5_HAVE_GOBJECT)
12911 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12913 dnl ===================================================================
12914 dnl QT6 Integration
12915 dnl ===================================================================
12921 QT6_PLATFORMS_SRCDIR=""
12922 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12924 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12925 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12927 if test -n "$supports_multilib"; then
12928 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12931 qt6_test_include="QtWidgets/qapplication.h"
12932 if test "$_os" = "Emscripten"; then
12933 qt6_test_library="libQt6Widgets.a"
12935 qt6_test_library="libQt6Widgets.so"
12938 dnl Check for qmake6
12939 if test -n "$QT6DIR"; then
12940 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12942 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12944 if test "$QMAKE6" = "no"; then
12945 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12947 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12948 if test -z "$qmake6_test_ver"; then
12949 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12951 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12954 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12955 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12956 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12957 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12959 AC_MSG_CHECKING([for Qt6 headers])
12961 for inc_dir in $qt6_incdirs; do
12962 if test -r "$inc_dir/$qt6_test_include"; then
12963 qt6_incdir="$inc_dir"
12967 AC_MSG_RESULT([$qt6_incdir])
12968 if test "x$qt6_incdir" = "xno"; then
12969 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12971 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12972 AC_LANG_PUSH([C++])
12973 save_CPPFLAGS=$CPPFLAGS
12974 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12975 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12976 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12977 CPPFLAGS=$save_CPPFLAGS
12980 AC_MSG_CHECKING([for Qt6 libraries])
12982 for lib_dir in $qt6_libdirs; do
12983 if test -r "$lib_dir/$qt6_test_library"; then
12984 qt6_libdir="$lib_dir"
12988 AC_MSG_RESULT([$qt6_libdir])
12989 if test "x$qt6_libdir" = "xno"; then
12990 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12993 if test "$_os" = "Emscripten"; then
12994 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12995 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12997 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12998 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13002 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13003 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13004 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13005 if test "$_os" = "Emscripten"; then
13006 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13009 if test "$USING_X11" = TRUE; then
13010 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13011 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13012 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13014 AC_DEFINE(QT6_USING_X11)
13017 dnl Check for Meta Object Compiler
13019 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13020 if test "$MOC6" = "no"; then
13021 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13022 the root of your Qt installation by exporting QT6DIR before running "configure".])
13025 AC_SUBST(QT6_CFLAGS)
13028 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13030 dnl ===================================================================
13031 dnl KF5 Integration
13032 dnl ===================================================================
13036 KF5_CONFIG="kf5-config"
13037 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13038 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13040 if test "$OS" = "HAIKU"; then
13041 haiku_arch="`echo $RTL_ARCH | tr X x`"
13042 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13043 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13046 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13047 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13048 if test -n "$supports_multilib"; then
13049 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13052 kf5_test_include="KF5/kcoreaddons_version.h"
13053 kf5_test_library="libKF5CoreAddons.so"
13054 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13056 dnl kf5 KDE4 support compatibility installed
13057 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13058 if test "$KF5_CONFIG" != "no"; then
13059 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13060 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13063 dnl Check for KF5 headers
13064 AC_MSG_CHECKING([for KF5 headers])
13066 for kf5_check in $kf5_incdirs; do
13067 if test -r "$kf5_check/$kf5_test_include"; then
13068 kf5_incdir="$kf5_check/KF5"
13072 AC_MSG_RESULT([$kf5_incdir])
13073 if test "x$kf5_incdir" = "xno"; then
13074 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13077 dnl Check for KF5 libraries
13078 AC_MSG_CHECKING([for KF5 libraries])
13080 for kf5_check in $kf5_libdirs; do
13081 if test -r "$kf5_check/$kf5_test_library"; then
13082 kf5_libdir="$kf5_check"
13087 AC_MSG_RESULT([$kf5_libdir])
13088 if test "x$kf5_libdir" = "xno"; then
13089 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13092 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"
13093 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13094 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13096 if test "$USING_X11" = TRUE; then
13097 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13100 AC_LANG_PUSH([C++])
13101 save_CXXFLAGS=$CXXFLAGS
13102 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13103 AC_MSG_CHECKING([whether KDE is >= 5.0])
13104 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13105 #include <kcoreaddons_version.h>
13107 int main(int argc, char **argv) {
13108 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13111 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13112 CXXFLAGS=$save_CXXFLAGS
13115 AC_SUBST(KF5_CFLAGS)
13118 dnl ===================================================================
13119 dnl Test whether to include Evolution 2 support
13120 dnl ===================================================================
13121 AC_MSG_CHECKING([whether to enable evolution 2 support])
13122 if test "$enable_evolution2" = yes; then
13123 AC_MSG_RESULT([yes])
13124 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13125 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13126 FilterLibs "${GOBJECT_LIBS}"
13127 GOBJECT_LIBS="${filteredlibs}"
13128 ENABLE_EVOAB2="TRUE"
13130 AC_MSG_RESULT([no])
13132 AC_SUBST(ENABLE_EVOAB2)
13133 AC_SUBST(GOBJECT_CFLAGS)
13134 AC_SUBST(GOBJECT_LIBS)
13136 dnl ===================================================================
13137 dnl Test which themes to include
13138 dnl ===================================================================
13139 AC_MSG_CHECKING([which themes to include])
13140 # if none given use default subset of available themes
13141 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13142 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"
13146 if test "x$with_theme" != "xno"; then
13147 for theme in $with_theme; do
13149 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" ;;
13150 default) real_theme=colibre ;;
13151 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13153 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13156 AC_MSG_RESULT([$WITH_THEMES])
13157 AC_SUBST([WITH_THEMES])
13158 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13159 for theme in $with_theme; do
13161 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13166 ###############################################################################
13167 # Extensions checking
13168 ###############################################################################
13169 AC_MSG_CHECKING([for extensions integration])
13170 if test "x$enable_extension_integration" != "xno"; then
13171 WITH_EXTENSION_INTEGRATION=TRUE
13172 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13173 AC_MSG_RESULT([yes, use integration])
13175 WITH_EXTENSION_INTEGRATION=
13176 AC_MSG_RESULT([no, do not integrate])
13178 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13180 dnl Should any extra extensions be included?
13181 dnl There are standalone tests for each of these below.
13182 WITH_EXTRA_EXTENSIONS=
13183 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13185 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13186 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13187 if test "x$with_java" != "xno"; then
13188 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13189 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13192 AC_MSG_CHECKING([whether to build opens___.ttf])
13193 if test "$enable_build_opensymbol" = "yes"; then
13194 AC_MSG_RESULT([yes])
13195 AC_PATH_PROG(FONTFORGE, fontforge)
13196 if test -z "$FONTFORGE"; then
13197 AC_MSG_ERROR([fontforge not installed])
13200 AC_MSG_RESULT([no])
13201 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13203 AC_SUBST(FONTFORGE)
13205 dnl ===================================================================
13206 dnl Test whether to include fonts
13207 dnl ===================================================================
13208 AC_MSG_CHECKING([whether to include third-party fonts])
13209 if test "$with_fonts" != "no"; then
13210 AC_MSG_RESULT([yes])
13212 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13213 AC_DEFINE(HAVE_MORE_FONTS)
13215 AC_MSG_RESULT([no])
13217 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13219 AC_SUBST(WITH_FONTS)
13222 dnl ===================================================================
13223 dnl Test whether to enable online update service
13224 dnl ===================================================================
13225 AC_MSG_CHECKING([whether to enable online update])
13226 ENABLE_ONLINE_UPDATE=
13227 ENABLE_ONLINE_UPDATE_MAR=
13229 if test "$enable_online_update" = ""; then
13230 AC_MSG_RESULT([no])
13232 if test "$enable_online_update" = "mar"; then
13233 AC_MSG_RESULT([yes - MAR-based online update])
13234 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13235 if test "$with_update_config" = ""; then
13236 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13238 UPDATE_CONFIG="$with_update_config"
13239 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13240 elif test "$enable_online_update" = "yes"; then
13241 AC_MSG_RESULT([yes])
13242 ENABLE_ONLINE_UPDATE="TRUE"
13244 AC_MSG_RESULT([no])
13247 AC_SUBST(ENABLE_ONLINE_UPDATE)
13248 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13249 AC_SUBST(UPDATE_CONFIG)
13252 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13253 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13254 if test "x$with_privacy_policy_url" = "xundefined"; then
13255 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13258 AC_SUBST(PRIVACY_POLICY_URL)
13259 dnl ===================================================================
13260 dnl Test whether we need bzip2
13261 dnl ===================================================================
13263 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13264 AC_MSG_CHECKING([whether to use system bzip2])
13265 if test "$with_system_bzip2" = yes; then
13267 AC_MSG_RESULT([yes])
13268 PKG_CHECK_MODULES(BZIP2, bzip2)
13269 FilterLibs "${BZIP2_LIBS}"
13270 BZIP2_LIBS="${filteredlibs}"
13272 AC_MSG_RESULT([no])
13273 BUILD_TYPE="$BUILD_TYPE BZIP2"
13276 AC_SUBST(SYSTEM_BZIP2)
13277 AC_SUBST(BZIP2_CFLAGS)
13278 AC_SUBST(BZIP2_LIBS)
13280 dnl ===================================================================
13281 dnl Test whether to enable extension update
13282 dnl ===================================================================
13283 AC_MSG_CHECKING([whether to enable extension update])
13284 ENABLE_EXTENSION_UPDATE=
13285 if test "x$enable_extension_update" = "xno"; then
13286 AC_MSG_RESULT([no])
13288 AC_MSG_RESULT([yes])
13289 ENABLE_EXTENSION_UPDATE="TRUE"
13290 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13291 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13293 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13296 dnl ===================================================================
13297 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13298 dnl ===================================================================
13299 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13300 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13301 AC_MSG_RESULT([no])
13304 AC_MSG_RESULT([yes])
13305 ENABLE_SILENT_MSI=TRUE
13306 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13308 AC_SUBST(ENABLE_SILENT_MSI)
13310 AC_MSG_CHECKING([whether and how to use Xinerama])
13311 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13312 if test "$x_libraries" = "default_x_libraries"; then
13313 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13314 if test "x$XINERAMALIB" = x; then
13315 XINERAMALIB="/usr/lib"
13318 XINERAMALIB="$x_libraries"
13320 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13321 # we have both versions, let the user decide but use the dynamic one
13324 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13325 XINERAMA_LINK=dynamic
13327 XINERAMA_LINK=static
13329 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13330 # we have only the dynamic version
13332 XINERAMA_LINK=dynamic
13333 elif test -e "$XINERAMALIB/libXinerama.a"; then
13335 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13337 XINERAMA_LINK=static
13347 if test "$USE_XINERAMA" = "TRUE"; then
13348 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13349 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13350 [AC_MSG_ERROR(Xinerama header not found.)], [])
13351 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13352 if test "x$XEXTLIB" = x; then
13353 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13355 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13356 if test "$_os" = "FreeBSD"; then
13357 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13359 if test "$_os" = "Linux"; then
13360 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13362 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13363 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13365 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13370 AC_MSG_RESULT([no])
13372 AC_SUBST(USE_XINERAMA)
13373 AC_SUBST(XINERAMA_LINK)
13375 dnl ===================================================================
13376 dnl Test whether to build cairo or rely on the system version
13377 dnl ===================================================================
13379 if test "$test_cairo" = "yes"; then
13380 AC_MSG_CHECKING([whether to use the system cairo])
13382 : ${with_system_cairo:=$with_system_libs}
13383 if test "$with_system_cairo" = "yes"; then
13385 AC_MSG_RESULT([yes])
13387 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13388 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13389 FilterLibs "${CAIRO_LIBS}"
13390 CAIRO_LIBS="${filteredlibs}"
13392 if test "$test_xrender" = "yes"; then
13393 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13395 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13396 #ifdef PictStandardA8
13400 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13405 AC_MSG_RESULT([no])
13406 BUILD_TYPE="$BUILD_TYPE CAIRO"
13409 if test "$enable_cairo_canvas" != no; then
13410 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13411 ENABLE_CAIRO_CANVAS=TRUE
13415 AC_SUBST(CAIRO_CFLAGS)
13416 AC_SUBST(CAIRO_LIBS)
13417 AC_SUBST(ENABLE_CAIRO_CANVAS)
13418 AC_SUBST(SYSTEM_CAIRO)
13420 dnl ===================================================================
13421 dnl Test whether to use avahi
13422 dnl ===================================================================
13423 if test "$_os" = "WINNT"; then
13424 # Windows uses bundled mDNSResponder
13425 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13426 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13427 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13428 [ENABLE_AVAHI="TRUE"])
13429 AC_DEFINE(HAVE_FEATURE_AVAHI)
13430 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13431 FilterLibs "${AVAHI_LIBS}"
13432 AVAHI_LIBS="${filteredlibs}"
13435 AC_SUBST(ENABLE_AVAHI)
13436 AC_SUBST(AVAHI_CFLAGS)
13437 AC_SUBST(AVAHI_LIBS)
13439 dnl ===================================================================
13440 dnl Test whether to use liblangtag
13441 dnl ===================================================================
13443 AC_MSG_CHECKING([whether to use system liblangtag])
13444 if test "$with_system_liblangtag" = yes; then
13445 SYSTEM_LIBLANGTAG=TRUE
13446 AC_MSG_RESULT([yes])
13447 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13448 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13449 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13450 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13451 FilterLibs "${LIBLANGTAG_LIBS}"
13452 LIBLANGTAG_LIBS="${filteredlibs}"
13455 AC_MSG_RESULT([no])
13456 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13457 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13458 if test "$COM" = "MSC"; then
13459 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13461 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13464 AC_SUBST(SYSTEM_LIBLANGTAG)
13465 AC_SUBST(LIBLANGTAG_CFLAGS)
13466 AC_SUBST(LIBLANGTAG_LIBS)
13468 dnl ===================================================================
13469 dnl Test whether to build libpng or rely on the system version
13470 dnl ===================================================================
13472 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13474 dnl ===================================================================
13475 dnl Check for runtime JVM search path
13476 dnl ===================================================================
13477 if test "$ENABLE_JAVA" != ""; then
13478 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13479 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13480 AC_MSG_RESULT([yes])
13481 if ! test -d "$with_jvm_path"; then
13482 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13484 if ! test -d "$with_jvm_path"jvm; then
13485 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13487 JVM_ONE_PATH_CHECK="$with_jvm_path"
13488 AC_SUBST(JVM_ONE_PATH_CHECK)
13490 AC_MSG_RESULT([no])
13494 dnl ===================================================================
13495 dnl Test for the presence of Ant and that it works
13496 dnl ===================================================================
13498 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13499 ANT_HOME=; export ANT_HOME
13500 WITH_ANT_HOME=; export WITH_ANT_HOME
13501 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13502 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13503 if test "$_os" = "WINNT"; then
13504 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13506 with_ant_home="$LODE_HOME/opt/ant"
13508 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13509 with_ant_home="$LODE_HOME/opt/ant"
13512 if test -z "$with_ant_home"; then
13513 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13515 if test "$_os" = "WINNT"; then
13516 # AC_PATH_PROGS needs unix path
13517 with_ant_home=`cygpath -u "$with_ant_home"`
13519 AbsolutePath "$with_ant_home"
13520 with_ant_home=$absolute_path
13521 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13522 WITH_ANT_HOME=$with_ant_home
13523 ANT_HOME=$with_ant_home
13526 if test -z "$ANT"; then
13527 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13529 # resolve relative or absolute symlink
13530 while test -h "$ANT"; do
13532 a_basename=`basename "$ANT"`
13533 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13534 cd "`dirname "$ANT"`"
13535 cd "`dirname "$a_script"`"
13536 ANT="`pwd`"/"`basename "$a_script"`"
13540 AC_MSG_CHECKING([if $ANT works])
13541 mkdir -p conftest.dir
13544 cat > conftest.java << EOF
13545 public class conftest {
13546 int testmethod(int a, int b) {
13552 cat > conftest.xml << EOF
13553 <project name="conftest" default="conftest">
13554 <target name="conftest">
13555 <javac srcdir="." includes="conftest.java">
13561 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13562 if test $? = 0 -a -f ./conftest.class; then
13563 AC_MSG_RESULT([Ant works])
13564 if test -z "$WITH_ANT_HOME"; then
13565 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13566 if test -z "$ANT_HOME"; then
13567 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13570 ANT_HOME="$WITH_ANT_HOME"
13573 echo "configure: Ant test failed" >&5
13574 cat conftest.java >&5
13575 cat conftest.xml >&5
13576 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13579 rm -fr conftest.dir
13581 if test -z "$ANT_HOME"; then
13582 ANT_HOME="NO_ANT_HOME"
13584 PathFormat "$ANT_HOME"
13585 ANT_HOME="$formatted_path"
13587 ANT="$formatted_path"
13590 dnl Checking for ant.jar
13591 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13592 AC_MSG_CHECKING([Ant lib directory])
13593 if test -f $ANT_HOME/lib/ant.jar; then
13594 ANT_LIB="$ANT_HOME/lib"
13596 if test -f $ANT_HOME/ant.jar; then
13597 ANT_LIB="$ANT_HOME"
13599 if test -f /usr/share/java/ant.jar; then
13600 ANT_LIB=/usr/share/java
13602 if test -f /usr/share/ant-core/lib/ant.jar; then
13603 ANT_LIB=/usr/share/ant-core/lib
13605 if test -f $ANT_HOME/lib/ant/ant.jar; then
13606 ANT_LIB="$ANT_HOME/lib/ant"
13608 if test -f /usr/share/lib/ant/ant.jar; then
13609 ANT_LIB=/usr/share/lib/ant
13611 AC_MSG_ERROR([Ant libraries not found!])
13618 PathFormat "$ANT_LIB"
13619 ANT_LIB="$formatted_path"
13620 AC_MSG_RESULT([Ant lib directory found.])
13624 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13626 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13627 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13628 ant_version_major=`echo $ant_version | cut -d. -f1`
13629 ant_version_minor=`echo $ant_version | cut -d. -f2`
13630 echo "configure: ant_version $ant_version " >&5
13631 echo "configure: ant_version_major $ant_version_major " >&5
13632 echo "configure: ant_version_minor $ant_version_minor " >&5
13633 if test "$ant_version_major" -ge "2"; then
13634 AC_MSG_RESULT([yes, $ant_version])
13635 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13636 AC_MSG_RESULT([yes, $ant_version])
13638 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13641 rm -f conftest* core core.* *.core
13649 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13650 AC_MSG_CHECKING([for JUnit 4])
13651 if test "$with_junit" = "yes"; then
13652 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13653 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13654 elif test -e /usr/share/java/junit4.jar; then
13655 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13657 if test -e /usr/share/lib/java/junit.jar; then
13658 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13660 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13664 OOO_JUNIT_JAR=$with_junit
13666 if test "$_os" = "WINNT"; then
13667 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13669 printf 'import org.junit.Before;' > conftest.java
13670 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13671 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13674 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13675 specify its pathname via --with-junit=..., or disable it via --without-junit])
13677 rm -f conftest.class conftest.java
13678 if test $OOO_JUNIT_JAR != ""; then
13679 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13682 AC_MSG_CHECKING([for included Hamcrest])
13683 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13684 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13685 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13687 AC_MSG_RESULT([Not included])
13688 AC_MSG_CHECKING([for standalone hamcrest jar.])
13689 if test "$with_hamcrest" = "yes"; then
13690 if test -e /usr/share/lib/java/hamcrest.jar; then
13691 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13692 elif test -e /usr/share/java/hamcrest/core.jar; then
13693 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13694 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13695 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13697 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13700 HAMCREST_JAR=$with_hamcrest
13702 if test "$_os" = "WINNT"; then
13703 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13705 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13706 AC_MSG_RESULT([$HAMCREST_JAR])
13708 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),
13709 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13712 rm -f conftest.class conftest.java
13714 AC_SUBST(OOO_JUNIT_JAR)
13715 AC_SUBST(HAMCREST_JAR)
13721 # check for wget and curl
13726 if test "$enable_fetch_external" != "no"; then
13728 CURL=`which curl 2>/dev/null`
13730 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13732 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13733 if test $? -eq 0; then
13739 if test -z "$WGET" -a -z "$CURL"; then
13740 AC_MSG_ERROR([neither wget nor curl found!])
13749 # check for sha256sum
13753 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13754 eval "$i -a 256 --version" > /dev/null 2>&1
13756 if test $ret -eq 0; then
13757 SHA256SUM="$i -a 256"
13762 if test -z "$SHA256SUM"; then
13763 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13764 eval "$i --version" > /dev/null 2>&1
13766 if test $ret -eq 0; then
13773 if test -z "$SHA256SUM"; then
13774 AC_MSG_ERROR([no sha256sum found!])
13777 AC_SUBST(SHA256SUM)
13779 dnl ===================================================================
13780 dnl Dealing with l10n options
13781 dnl ===================================================================
13782 AC_MSG_CHECKING([which languages to be built])
13783 # get list of all languages
13784 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13785 # the sed command does the following:
13786 # + if a line ends with a backslash, append the next line to it
13787 # + adds " on the beginning of the value (after =)
13788 # + adds " at the end of the value
13789 # + removes en-US; we want to put it on the beginning
13790 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13791 [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)]
13792 ALL_LANGS="en-US $completelangiso"
13793 # check the configured localizations
13794 WITH_LANG="$with_lang"
13796 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13797 # (Norwegian is "nb" and "nn".)
13798 if test "$WITH_LANG" = "no"; then
13802 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13803 AC_MSG_RESULT([en-US])
13805 AC_MSG_RESULT([$WITH_LANG])
13806 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13807 if test -z "$MSGFMT"; then
13808 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13809 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13810 elif test -x "/opt/lo/bin/msgfmt"; then
13811 MSGFMT="/opt/lo/bin/msgfmt"
13813 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13814 if test -z "$MSGFMT"; then
13815 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13819 if test -z "$MSGUNIQ"; then
13820 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13821 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13822 elif test -x "/opt/lo/bin/msguniq"; then
13823 MSGUNIQ="/opt/lo/bin/msguniq"
13825 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13826 if test -z "$MSGUNIQ"; then
13827 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13834 # check that the list is valid
13835 for lang in $WITH_LANG; do
13836 test "$lang" = "ALL" && continue
13837 # need to check for the exact string, so add space before and after the list of all languages
13838 for vl in $ALL_LANGS; do
13839 if test "$vl" = "$lang"; then
13843 if test "$vl" != "$lang"; then
13844 # if you're reading this - you prolly quoted your languages remove the quotes ...
13845 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13848 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13849 echo $WITH_LANG | grep -q en-US
13850 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13852 # list with substituted ALL
13853 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13854 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13855 test "$WITH_LANG" = "en-US" && WITH_LANG=
13856 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13857 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13858 ALL_LANGS=`echo $ALL_LANGS qtz`
13860 AC_SUBST(ALL_LANGS)
13861 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13862 AC_SUBST(WITH_LANG)
13863 AC_SUBST(WITH_LANG_LIST)
13864 AC_SUBST(GIT_NEEDED_SUBMODULES)
13866 WITH_POOR_HELP_LOCALIZATIONS=
13867 if test -d "$SRC_ROOT/translations/source"; then
13868 for l in `ls -1 $SRC_ROOT/translations/source`; do
13869 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13870 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13874 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13876 if test -n "$with_locales"; then
13877 WITH_LOCALES="$with_locales"
13879 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13880 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13881 # config_host/config_locales.h.in
13882 for locale in $WITH_LOCALES; do
13885 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13889 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13892 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13897 AC_DEFINE(WITH_LOCALE_ALL)
13899 AC_SUBST(WITH_LOCALES)
13901 dnl git submodule update --reference
13902 dnl ===================================================================
13903 if test -n "${GIT_REFERENCE_SRC}"; then
13904 for repo in ${GIT_NEEDED_SUBMODULES}; do
13905 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13906 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13910 AC_SUBST(GIT_REFERENCE_SRC)
13912 dnl git submodules linked dirs
13913 dnl ===================================================================
13914 if test -n "${GIT_LINK_SRC}"; then
13915 for repo in ${GIT_NEEDED_SUBMODULES}; do
13916 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13917 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13921 AC_SUBST(GIT_LINK_SRC)
13924 dnl ===================================================================
13925 AC_MSG_CHECKING([for alternative branding images directory])
13926 # initialize mapped arrays
13927 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13928 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13930 if test -z "$with_branding" -o "$with_branding" = "no"; then
13931 AC_MSG_RESULT([none])
13932 DEFAULT_BRAND_IMAGES="$brand_files"
13934 if ! test -d $with_branding ; then
13935 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13937 AC_MSG_RESULT([$with_branding])
13938 CUSTOM_BRAND_DIR="$with_branding"
13939 for lfile in $brand_files
13941 if ! test -f $with_branding/$lfile ; then
13942 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13943 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13945 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13948 check_for_progress="yes"
13951 AC_SUBST([BRAND_INTRO_IMAGES])
13952 AC_SUBST([CUSTOM_BRAND_DIR])
13953 AC_SUBST([CUSTOM_BRAND_IMAGES])
13954 AC_SUBST([DEFAULT_BRAND_IMAGES])
13957 AC_MSG_CHECKING([for 'intro' progress settings])
13961 PROGRESSFRAMECOLOR=
13963 PROGRESSTEXTBASELINE=
13965 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13966 source "$with_branding/progress.conf"
13967 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13969 AC_MSG_RESULT([none])
13972 AC_SUBST(PROGRESSBARCOLOR)
13973 AC_SUBST(PROGRESSSIZE)
13974 AC_SUBST(PROGRESSPOSITION)
13975 AC_SUBST(PROGRESSFRAMECOLOR)
13976 AC_SUBST(PROGRESSTEXTCOLOR)
13977 AC_SUBST(PROGRESSTEXTBASELINE)
13980 dnl ===================================================================
13981 dnl Custom build version
13982 dnl ===================================================================
13983 AC_MSG_CHECKING([for extra build ID])
13984 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13985 EXTRA_BUILDID="$with_extra_buildid"
13987 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13988 if test -n "$EXTRA_BUILDID" ; then
13989 AC_MSG_RESULT([$EXTRA_BUILDID])
13991 AC_MSG_RESULT([not set])
13993 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13996 AC_MSG_CHECKING([for vendor])
13997 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13998 OOO_VENDOR="$USERNAME"
14000 if test -z "$OOO_VENDOR"; then
14004 if test -z "$OOO_VENDOR"; then
14005 OOO_VENDOR="`id -u -n`"
14008 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14010 OOO_VENDOR="$with_vendor"
14011 AC_MSG_RESULT([$OOO_VENDOR])
14013 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14014 AC_SUBST(OOO_VENDOR)
14016 if test "$_os" = "Android" ; then
14017 ANDROID_PACKAGE_NAME=
14018 AC_MSG_CHECKING([for Android package name])
14019 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14020 if test -n "$ENABLE_DEBUG"; then
14021 # Default to the package name that makes ndk-gdb happy.
14022 ANDROID_PACKAGE_NAME="org.libreoffice"
14024 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14027 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14029 ANDROID_PACKAGE_NAME="$with_android_package_name"
14030 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14032 AC_SUBST(ANDROID_PACKAGE_NAME)
14035 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14036 if test "$with_compat_oowrappers" = "yes"; then
14037 WITH_COMPAT_OOWRAPPERS=TRUE
14040 WITH_COMPAT_OOWRAPPERS=
14043 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14045 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14046 AC_MSG_CHECKING([for install dirname])
14047 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14048 INSTALLDIRNAME="$with_install_dirname"
14050 AC_MSG_RESULT([$INSTALLDIRNAME])
14051 AC_SUBST(INSTALLDIRNAME)
14053 AC_MSG_CHECKING([for prefix])
14054 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14055 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14056 PREFIXDIR="$prefix"
14057 AC_MSG_RESULT([$PREFIXDIR])
14058 AC_SUBST(PREFIXDIR)
14060 LIBDIR=[$(eval echo $(eval echo $libdir))]
14063 DATADIR=[$(eval echo $(eval echo $datadir))]
14066 MANDIR=[$(eval echo $(eval echo $mandir))]
14069 DOCDIR=[$(eval echo $(eval echo $docdir))]
14072 BINDIR=[$(eval echo $(eval echo $bindir))]
14075 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14076 AC_SUBST(INSTALLDIR)
14078 TESTINSTALLDIR="${BUILDDIR}/test-install"
14079 AC_SUBST(TESTINSTALLDIR)
14082 # ===================================================================
14083 # OAuth2 id and secrets
14084 # ===================================================================
14086 AC_MSG_CHECKING([for Google Drive client id and secret])
14087 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14088 AC_MSG_RESULT([not set])
14089 GDRIVE_CLIENT_ID="\"\""
14090 GDRIVE_CLIENT_SECRET="\"\""
14092 AC_MSG_RESULT([set])
14093 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14094 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14096 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14097 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14099 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14100 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14101 AC_MSG_RESULT([not set])
14102 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14103 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14105 AC_MSG_RESULT([set])
14106 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14107 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14109 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14110 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14112 AC_MSG_CHECKING([for OneDrive client id and secret])
14113 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14114 AC_MSG_RESULT([not set])
14115 ONEDRIVE_CLIENT_ID="\"\""
14116 ONEDRIVE_CLIENT_SECRET="\"\""
14118 AC_MSG_RESULT([set])
14119 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14120 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14122 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14123 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14126 dnl ===================================================================
14127 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14128 dnl --enable-dependency-tracking configure option
14129 dnl ===================================================================
14130 AC_MSG_CHECKING([whether to enable dependency tracking])
14131 if test "$enable_dependency_tracking" = "no"; then
14133 AC_MSG_RESULT([no])
14135 AC_MSG_RESULT([yes])
14139 dnl ===================================================================
14140 dnl Number of CPUs to use during the build
14141 dnl ===================================================================
14142 AC_MSG_CHECKING([for number of processors to use])
14143 # plain --with-parallelism is just the default
14144 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14145 if test "$with_parallelism" = "no"; then
14148 PARALLELISM=$with_parallelism
14151 if test "$enable_icecream" = "yes"; then
14156 Darwin|FreeBSD|NetBSD|OpenBSD)
14157 PARALLELISM=`sysctl -n hw.ncpu`
14161 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14163 # what else than above does profit here *and* has /proc?
14165 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14169 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14170 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14174 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14175 if test -z "$with_parallelism"; then
14176 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14177 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14180 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."
14184 if test $PARALLELISM -eq 0; then
14185 AC_MSG_RESULT([explicit make -j option needed])
14187 AC_MSG_RESULT([$PARALLELISM])
14189 AC_SUBST(PARALLELISM)
14191 IWYU_PATH="$with_iwyu"
14192 AC_SUBST(IWYU_PATH)
14193 if test ! -z "$IWYU_PATH"; then
14194 if test ! -f "$IWYU_PATH"; then
14195 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14200 # Set up ILIB for MSVC build
14203 if test "$build_os" = "cygwin"; then
14205 if test -n "$JAVA_HOME"; then
14206 ILIB="$ILIB;$JAVA_HOME/lib"
14209 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14210 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14211 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14212 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14213 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14214 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14215 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14217 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14218 ucrtlibpath_formatted=$formatted_path
14219 ILIB="$ILIB;$ucrtlibpath_formatted"
14220 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14221 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14222 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14224 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14227 if test "$cross_compiling" != "yes"; then
14228 ILIB_FOR_BUILD="$ILIB"
14232 AC_SUBST(ILIB_FOR_BUILD)
14234 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14235 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14236 dnl from consteval constructor initializing const variable",
14237 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14238 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14239 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14240 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14241 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14242 dnl constructor in ternary expression (/std:c++latest)":
14243 AC_LANG_PUSH([C++])
14245 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14246 CXX="env LIB=$ILIB $CXX"
14248 save_CXXFLAGS=$CXXFLAGS
14249 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14250 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14252 consteval S() { i = 1; }
14257 struct S1 { consteval S1(int) {} };
14272 struct S4 { consteval S4() = default; };
14273 void f4(bool b) { b ? S4() : S4(); }
14275 return (s.i == 1) ? 0 : 1;
14277 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14278 AC_MSG_RESULT([yes])
14279 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14281 CXXFLAGS=$save_CXXFLAGS
14284 # ===================================================================
14285 # Creating bigger shared library to link against
14286 # ===================================================================
14287 AC_MSG_CHECKING([whether to create huge library])
14290 if test $_os = iOS -o $_os = Android; then
14291 # Never any point in mergelibs for these as we build just static
14292 # libraries anyway...
14293 enable_mergelibs=no
14296 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14297 if test $_os != Linux -a $_os != WINNT; then
14298 add_warning "--enable-mergelibs is not tested for this platform"
14301 AC_MSG_RESULT([yes])
14302 AC_DEFINE(ENABLE_MERGELIBS)
14304 AC_MSG_RESULT([no])
14306 AC_SUBST([MERGELIBS])
14308 dnl ===================================================================
14309 dnl icerun is a wrapper that stops us spawning tens of processes
14310 dnl locally - for tools that can't be executed on the compile cluster
14311 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14312 dnl ===================================================================
14313 AC_MSG_CHECKING([whether to use icerun wrapper])
14315 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14316 ICECREAM_RUN=icerun
14317 AC_MSG_RESULT([yes])
14319 AC_MSG_RESULT([no])
14321 AC_SUBST(ICECREAM_RUN)
14323 dnl ===================================================================
14324 dnl Setup the ICECC_VERSION for the build the same way it was set for
14325 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14326 dnl ===================================================================
14327 x_ICECC_VERSION=[\#]
14328 if test -n "$ICECC_VERSION" ; then
14331 AC_SUBST(x_ICECC_VERSION)
14332 AC_SUBST(ICECC_VERSION)
14334 dnl ===================================================================
14336 AC_MSG_CHECKING([MPL subset])
14339 if test "$enable_mpl_subset" = "yes"; then
14341 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14343 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14346 if test "$warn_report" = "true"; then
14347 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14349 if test "x$enable_postgresql_sdbc" != "xno"; then
14350 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14352 if test "$enable_lotuswordpro" = "yes"; then
14353 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14355 if test "$WITH_WEBDAV" = "neon"; then
14356 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14358 if test -n "$ENABLE_POPPLER"; then
14359 if test "x$SYSTEM_POPPLER" = "x"; then
14360 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14363 # cf. m4/libo_check_extension.m4
14364 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14365 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14367 for theme in $WITH_THEMES; do
14369 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14370 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14375 ENABLE_OPENGL_TRANSITIONS=
14377 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14378 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14382 AC_DEFINE(MPL_HAVE_SUBSET)
14383 AC_MSG_RESULT([only])
14385 AC_MSG_RESULT([no restrictions])
14387 AC_SUBST(MPL_SUBSET)
14389 dnl ===================================================================
14391 AC_MSG_CHECKING([formula logger])
14392 ENABLE_FORMULA_LOGGER=
14394 if test "x$enable_formula_logger" = "xyes"; then
14395 AC_MSG_RESULT([yes])
14396 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14397 ENABLE_FORMULA_LOGGER=TRUE
14398 elif test -n "$ENABLE_DBGUTIL" ; then
14399 AC_MSG_RESULT([yes])
14400 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14401 ENABLE_FORMULA_LOGGER=TRUE
14403 AC_MSG_RESULT([no])
14406 AC_SUBST(ENABLE_FORMULA_LOGGER)
14408 dnl ===================================================================
14409 dnl Checking for active Antivirus software.
14410 dnl ===================================================================
14412 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14413 AC_MSG_CHECKING([for active Antivirus software])
14414 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14415 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14416 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14417 AC_MSG_RESULT([found])
14418 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14419 echo $EICAR_STRING > $SRC_ROOT/eicar
14420 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14422 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14423 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14425 echo $EICAR_STRING > $BUILDDIR/eicar
14426 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14428 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14429 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14431 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"
14433 AC_MSG_RESULT([not found])
14436 AC_MSG_RESULT([n/a])
14440 dnl ===================================================================
14441 dnl Setting up the environment.
14442 dnl ===================================================================
14443 AC_MSG_NOTICE([setting up the build environment variables...])
14447 if test "$build_os" = "cygwin"; then
14448 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14449 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14450 ATL_INCLUDE="$COMPATH/atlmfc/include"
14451 elif test -d "$COMPATH/atlmfc/lib"; then
14452 ATL_LIB="$COMPATH/atlmfc/lib"
14453 ATL_INCLUDE="$COMPATH/atlmfc/include"
14455 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14456 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14458 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14459 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14460 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14462 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14463 PathFormat "/usr/bin/find.exe"
14464 FIND="$formatted_path"
14465 PathFormat "/usr/bin/sort.exe"
14466 SORT="$formatted_path"
14467 PathFormat "/usr/bin/grep.exe"
14468 WIN_GREP="$formatted_path"
14469 PathFormat "/usr/bin/ls.exe"
14470 WIN_LS="$formatted_path"
14471 PathFormat "/usr/bin/touch.exe"
14472 WIN_TOUCH="$formatted_path"
14478 AC_SUBST(ATL_INCLUDE)
14484 AC_SUBST(WIN_TOUCH)
14486 AC_SUBST(BUILD_TYPE)
14491 PERL="$formatted_path"
14494 if test -n "$TMPDIR"; then
14495 TEMP_DIRECTORY="$TMPDIR"
14497 TEMP_DIRECTORY="/tmp"
14499 if test "$build_os" = "cygwin"; then
14500 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14502 AC_SUBST(TEMP_DIRECTORY)
14504 # setup the PATH for the environment
14505 if test -n "$LO_PATH_FOR_BUILD"; then
14506 LO_PATH="$LO_PATH_FOR_BUILD"
14509 pathmunge "$MSVC_HOST_PATH" "before"
14517 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14518 if test "$ENABLE_JAVA" != ""; then
14519 pathmunge "$JAVA_HOME/bin" "after"
14524 # Win32 make needs native paths
14525 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14526 LO_PATH=`cygpath -p -m "$PATH"`
14528 if test "$WIN_BUILD_ARCH" = "x64"; then
14529 # needed for msi packaging
14530 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14532 # .NET 4.6 and higher don't have bin directory
14533 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14534 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14536 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14537 pathmunge "$CSC_PATH" "before"
14538 pathmunge "$MIDL_PATH" "before"
14539 pathmunge "$AL_PATH" "before"
14540 pathmunge "$MSVC_MULTI_PATH" "before"
14541 pathmunge "$MSVC_BUILD_PATH" "before"
14542 if test -n "$MSBUILD_PATH" ; then
14543 pathmunge "$MSBUILD_PATH" "before"
14545 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14546 if test "$ENABLE_JAVA" != ""; then
14547 if test -d "$JAVA_HOME/jre/bin/client"; then
14548 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14550 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14551 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14553 pathmunge "$JAVA_HOME/bin" "before"
14555 pathmunge "$MSVC_HOST_PATH" "before"
14559 pathmunge "/usr/css/bin" "before"
14560 if test "$ENABLE_JAVA" != ""; then
14561 pathmunge "$JAVA_HOME/bin" "after"
14569 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14570 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14571 x_LO_ELFCHECK_ALLOWLIST=
14573 x_LO_ELFCHECK_ALLOWLIST=[\#]
14575 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14576 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14580 # Generate a configuration sha256 we can use for deps
14581 if test -f config_host.mk; then
14582 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14584 if test -f config_host_lang.mk; then
14585 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14588 CFLAGS=$my_original_CFLAGS
14589 CXXFLAGS=$my_original_CXXFLAGS
14590 CPPFLAGS=$my_original_CPPFLAGS
14592 AC_CONFIG_LINKS([include:include])
14594 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14595 # BUILD platform configuration] - otherwise breaks cross building
14596 AC_CONFIG_FILES([config_host.mk
14597 config_host_lang.mk
14599 bin/bffvalidator.sh
14600 bin/odfvalidator.sh
14602 hardened_runtime.xcent
14603 instsetoo_native/util/openoffice.lst
14604 sysui/desktop/macosx/Info.plist
14605 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14606 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14607 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14608 AC_CONFIG_HEADERS([config_host/config_clang.h])
14609 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14610 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14611 AC_CONFIG_HEADERS([config_host/config_eot.h])
14612 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14613 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14614 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14615 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14616 AC_CONFIG_HEADERS([config_host/config_features.h])
14617 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14618 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14619 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14620 AC_CONFIG_HEADERS([config_host/config_folders.h])
14621 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14622 AC_CONFIG_HEADERS([config_host/config_gio.h])
14623 AC_CONFIG_HEADERS([config_host/config_global.h])
14624 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14625 AC_CONFIG_HEADERS([config_host/config_java.h])
14626 AC_CONFIG_HEADERS([config_host/config_langs.h])
14627 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14628 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14629 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14630 AC_CONFIG_HEADERS([config_host/config_locales.h])
14631 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14632 AC_CONFIG_HEADERS([config_host/config_oox.h])
14633 AC_CONFIG_HEADERS([config_host/config_options.h])
14634 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14635 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14636 AC_CONFIG_HEADERS([config_host/config_skia.h])
14637 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14638 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14639 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14640 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14641 AC_CONFIG_HEADERS([config_host/config_version.h])
14642 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14643 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14644 AC_CONFIG_HEADERS([config_host/config_python.h])
14645 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14648 if test "$CROSS_COMPILING" = TRUE; then
14649 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14652 # touch the config timestamp file
14653 if test ! -f config_host.mk.stamp; then
14654 echo > config_host.mk.stamp
14655 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14656 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14658 echo > config_host.mk.stamp
14661 # touch the config lang timestamp file
14662 if test ! -f config_host_lang.mk.stamp; then
14663 echo > config_host_lang.mk.stamp
14664 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14665 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14667 echo > config_host_lang.mk.stamp
14671 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14672 -a "$build_os" = "cygwin"; then
14675 ****************************************************************************
14677 Your make version is known to be horribly slow, and hard to debug
14678 problems with. To get a reasonably functional make please do:
14680 to install a pre-compiled binary make for Win32
14682 mkdir -p /opt/lo/bin
14684 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14685 cp make-4.2.1-msvc.exe make
14688 to install from source:
14689 place yourself in a working directory of you choice.
14691 git clone git://git.savannah.gnu.org/make.git
14693 [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"]
14694 set PATH=%PATH%;C:\Cygwin\bin
14695 [or Cygwin64, if that is what you have]
14696 cd path-to-make-repo-you-cloned-above
14697 build_w32.bat --without-guile
14699 should result in a WinRel/gnumake.exe.
14700 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14702 Then re-run autogen.sh
14704 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14705 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14708 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14709 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14715 ****************************************************************************
14720 To view some help, run:
14725 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14727 After the build has finished successfully, you can immediately run what you built using the command:
14730 if test $_os = Darwin; then
14731 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14733 echo instdir/program/soffice
14737 If you want to run the smoketest, run:
14743 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14744 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14745 cat "$WARNINGS_FILE_FOR_BUILD"
14749 if test -s "$WARNINGS_FILE"; then
14750 echo "HOST config ($WARNINGS_FILE)"
14751 cat "$WARNINGS_FILE"
14754 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: