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],[24.8.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
205 # Convert to unix path, mkdir would treat c:/path as a relative path.
207 local rel="$formatted_path_unix"
209 test ! -e "$rel" && mkdir -p "$rel"
210 if test -d "$rel" ; then
211 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212 absolute_path="$(pwd)"
215 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
225 if test "$have_WARNINGS" = "no"; then
226 echo "*************************************" > "$WARNINGS_FILE"
228 if command -v tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
232 COLORWARN="* WARNING :"
235 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
246 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249 mac_git_path=`command -v git`
250 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251 mac_path="$mac_path:`dirname $mac_git_path`"
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255 mac_gpg_path=`command -v gpg`
256 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257 mac_path="$mac_path:`dirname $mac_gpg_path`"
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
272 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284 eval local MIN_MINOR="\$${1}_${2}_MINOR"
285 eval local MIN_TINY="\$${1}_${2}_TINY"
286 eval local CUR_MAJOR="\$${1}_MAJOR"
287 eval local CUR_MINOR="\$${1}_MINOR"
288 eval local CUR_TINY="\$${1}_TINY"
289 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
293 echo "********************************************************************"
295 echo "* Running ${PACKAGE_NAME} build configuration."
297 echo "********************************************************************"
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308 ac_cv_host="x86_64-pc-wsl"
309 ac_cv_host_cpu="x86_64"
311 ac_cv_build="$ac_cv_host"
312 ac_cv_build_cpu="$ac_cv_host_cpu"
313 ac_cv_build_os="$ac_cv_host_os"
315 # Emulation of Cygwin's cygpath command for WSL.
318 if test -n "$UNITTEST_WSL_CYGPATH"; then
319 echo -n cygpath "$@" "==> "
322 # Cygwin's real cygpath has a plethora of options but we use only a few here.
325 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
328 while getopts dmuwlsp opt; do
331 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
341 if test $# -ne 1; then
342 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
349 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352 if test -n "$opt_u"; then
353 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
358 # A Windows file in WSL format
359 input=$(wslpath -w "$input")
361 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362 # Already in Windows format
365 input=$(wslpath -w "$input")
368 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
371 if test -n "$opt_d" -o -n "$opt_s"; then
372 input=$($WSL_LO_HELPER --8.3 "$input")
374 if test -n "$opt_m"; then
375 input="${input//\\//}"
382 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
389 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
395 if test -n "$UNITTEST_WSL_CYGPATH"; then
398 # Nothing special with these file names, just arbitrary ones picked to test with
399 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403 # At least on my machine for instance this file does have an 8.3 name
404 cygpath -d /mnt/c/windows/WindowsUpdate.log
405 # But for instance this one doesn't
406 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407 cygpath -ws /mnt/c/windows/WindowsUpdate.log
408 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409 cygpath -ms /mnt/c/windows/WindowsUpdate.log
411 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
417 if test -z "$WSL_LO_HELPER"; then
418 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
424 if test -z "$WSL_LO_HELPER"; then
425 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
436 # Use of PathFormat must be after AC_CANONICAL_BUILD above
438 printf "$formatted_path , $formatted_path_unix\n"
441 printf "$formatted_path , $formatted_path_unix\n"
443 PathFormat "$PROGRAMFILESX86"
444 printf "$formatted_path , $formatted_path_unix\n"
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452 PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455 PRODUCTNAME="${PRODUCTNAME}Dev"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468 PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
504 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>&/dev/null`
523 LIBO_THIS_YEAR=${git_date:-2024}
524 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
526 dnl ===================================================================
528 dnl ===================================================================
529 AC_MSG_CHECKING([for product version])
530 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
531 AC_MSG_RESULT([$PRODUCTVERSION])
532 AC_SUBST(PRODUCTVERSION)
535 # AC_PROG_EGREP doesn't set GREP on all systems as well
536 AC_PATH_PROG(GREP, grep)
544 dnl ======================================
545 dnl Required GObject introspection version
546 dnl ======================================
547 INTROSPECTION_REQUIRED_VERSION=1.32.0
549 dnl ===================================================================
550 dnl Search all the common names for GNU Make
551 dnl ===================================================================
552 AC_MSG_CHECKING([for GNU Make])
554 # try to use our own make if it is available and GNUMAKE was not already defined
555 if test -z "$GNUMAKE"; then
556 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
557 GNUMAKE="$LODE_HOME/opt/bin/make"
558 elif test -x "/opt/lo/bin/make"; then
559 GNUMAKE="/opt/lo/bin/make"
564 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
565 if test -n "$a"; then
566 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
567 if test $? -eq 0; then
568 if test "$build_os" = "cygwin"; then
569 if test -n "$($a -v | grep 'Built for Windows')" ; then
570 GNUMAKE="$(cygpath -m "$(command -v "$(cygpath -u $a)")")"
571 GNUMAKE_WIN_NATIVE="TRUE"
573 GNUMAKE=`command -v $a`
576 GNUMAKE=`command -v $a`
582 AC_MSG_RESULT($GNUMAKE)
583 if test -z "$GNUMAKE"; then
584 AC_MSG_ERROR([not found. install GNU Make.])
586 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
587 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
591 win_short_path_for_make()
593 local short_path="$1"
594 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
595 cygpath -sm "$short_path"
597 cygpath -u "$(cygpath -d "$short_path")"
602 if test "$build_os" = "cygwin"; then
603 PathFormat "$SRC_ROOT"
604 SRC_ROOT="$formatted_path"
605 PathFormat "$BUILDDIR"
606 BUILDDIR="$formatted_path"
608 AC_MSG_CHECKING(for explicit COMSPEC)
609 if test -z "$COMSPEC"; then
610 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
612 AC_MSG_RESULT([found: $COMSPEC])
619 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
620 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
623 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
624 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
627 # need sed in os checks...
628 AC_PATH_PROGS(SED, sed)
629 if test -z "$SED"; then
630 AC_MSG_ERROR([install sed to run this script])
633 # Set the ENABLE_LTO variable
634 # ===================================================================
635 AC_MSG_CHECKING([whether to use link-time optimization])
636 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
645 AC_ARG_ENABLE(fuzz-options,
646 AS_HELP_STRING([--enable-fuzz-options],
647 [Randomly enable or disable each of those configurable options
648 that are supposed to be freely selectable without interdependencies,
649 or where bad interaction from interdependencies is automatically avoided.])
652 dnl ===================================================================
653 dnl When building for Android, --with-android-ndk,
654 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
656 dnl ===================================================================
658 AC_ARG_WITH(android-ndk,
659 AS_HELP_STRING([--with-android-ndk],
660 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
663 AC_ARG_WITH(android-ndk-toolchain-version,
664 AS_HELP_STRING([--with-android-ndk-toolchain-version],
665 [Specify which toolchain version to use, of those present in the
666 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
667 with_android_ndk_toolchain_version=clang5.0)
669 AC_ARG_WITH(android-sdk,
670 AS_HELP_STRING([--with-android-sdk],
671 [Specify location of the Android SDK. Mandatory when building for Android.]),
674 AC_ARG_WITH(android-api-level,
675 AS_HELP_STRING([--with-android-api-level],
676 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
680 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
681 with_android_ndk="$SRC_ROOT/external/android-ndk"
683 if test -n "$with_android_ndk"; then
684 eval ANDROID_NDK_DIR=$with_android_ndk
687 if test -n "$with_android_api_level" ; then
688 ANDROID_API_LEVEL="$with_android_api_level"
691 if test $host_cpu = arm; then
692 LLVM_TRIPLE=armv7a-linux-androideabi
693 ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
694 ANDROID_APP_ABI=armeabi-v7a
695 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
696 elif test $host_cpu = aarch64; then
697 LLVM_TRIPLE=aarch64-linux-android
698 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
699 ANDROID_APP_ABI=arm64-v8a
700 elif test $host_cpu = x86_64; then
701 LLVM_TRIPLE=x86_64-linux-android
702 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
703 ANDROID_APP_ABI=x86_64
705 # host_cpu is something like "i386" or "i686" I guess, NDK uses
706 # "x86" in some contexts
707 LLVM_TRIPLE=i686-linux-android
708 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
712 # Set up a lot of pre-canned defaults
714 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
715 if test ! -f $ANDROID_NDK_DIR/source.properties; then
716 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
718 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
720 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
722 if test -z "$ANDROID_NDK_VERSION"; then
723 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
725 case $ANDROID_NDK_VERSION in
727 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
729 11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
730 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
735 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
736 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
740 case "$with_android_ndk_toolchain_version" in
742 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
745 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
748 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
750 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
751 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
752 # manage to link the (app-specific) single huge .so that is built for the app in
753 # android/source/ if there is debug information in a significant part of the object files.
754 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
755 # all objects have been built with debug information.)
758 android_HOST_TAG=linux-x86_64
761 android_HOST_TAG=darwin-x86_64
764 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
765 # ndk would also support windows and windows-x86_64
768 ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
769 ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
771 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
772 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
773 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
774 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
775 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
777 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
778 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
779 if test "$ENABLE_LTO" = TRUE; then
780 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
781 # $CC and $CXX when building external libraries
782 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
785 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
787 if test -z "$CC"; then
788 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
791 if test -z "$CXX"; then
792 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
796 AC_SUBST(ANDROID_NDK_DIR)
797 AC_SUBST(ANDROID_API_LEVEL)
798 AC_SUBST(ANDROID_APP_ABI)
799 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
800 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
801 AC_SUBST(ANDROID_TOOLCHAIN)
803 dnl ===================================================================
804 dnl --with-android-sdk
805 dnl ===================================================================
807 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
808 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
810 if test -n "$with_android_sdk"; then
811 eval ANDROID_SDK_DIR=$with_android_sdk
812 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
814 AC_SUBST(ANDROID_SDK_DIR)
816 AC_ARG_ENABLE([android-lok],
817 AS_HELP_STRING([--enable-android-lok],
818 [The Android app from the android/ subdir needs several tweaks all
819 over the place that break the LOK when used in the Online-based
820 Android app. This switch indicates that the intent of this build is
821 actually the Online-based, non-modified LOK.])
824 if test -n "$ANDROID_NDK_DIR" ; then
825 if test "$enable_android_lok" = yes; then
826 ENABLE_ANDROID_LOK=TRUE
827 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
828 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
830 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
833 AC_SUBST([ENABLE_ANDROID_LOK])
835 libo_FUZZ_ARG_ENABLE([android-editing],
836 AS_HELP_STRING([--enable-android-editing],
837 [Enable the experimental editing feature on Android.])
839 ENABLE_ANDROID_EDITING=
840 if test "$enable_android_editing" = yes; then
841 ENABLE_ANDROID_EDITING=TRUE
843 AC_SUBST([ENABLE_ANDROID_EDITING])
845 disable_database_connectivity_dependencies()
848 enable_firebird_sdbc=no
849 enable_mariadb_sdbc=no
850 enable_postgresql_sdbc=no
851 enable_report_builder=no
854 # ===================================================================
856 # Start initial platform setup
858 # The using_* variables reflect platform support and should not be
859 # changed after the "End initial platform setup" block.
860 # This is also true for most test_* variables.
861 # ===================================================================
870 # There is currently just iOS not using salplug, so this explicitly enables it.
871 # must: using_freetype_fontconfig
872 # may: using_headless_plugin defaults to $using_freetype_fontconfig
875 # Default values, as such probably valid just for Linux, set
876 # differently below just for Mac OSX, but at least better than
877 # hardcoding these as we used to do. Much of this is duplicated also
878 # in solenv for old build system and for gbuild, ideally we should
879 # perhaps define stuff like this only here in configure.ac?
881 LINKFLAGSSHL="-shared"
885 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
888 INSTROOTCONTENTSUFFIX=
891 HOST_PLATFORM="$host"
893 host_cpu_for_clang="$host_cpu"
898 using_freetype_fontconfig=yes
903 dnl ===========================================================
904 dnl Check whether we're using Solaris 10 - SPARC or Intel.
905 dnl ===========================================================
906 AC_MSG_CHECKING([the Solaris operating system release])
907 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
908 if test "$_os_release" -lt "10"; then
909 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
911 AC_MSG_RESULT([ok ($_os_release)])
914 dnl Check whether we're using a SPARC or i386 processor
915 AC_MSG_CHECKING([the processor type])
916 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
917 AC_MSG_RESULT([ok ($host_cpu)])
919 AC_MSG_ERROR([only SPARC and i386 processors are supported])
923 linux-gnu*|k*bsd*-gnu*|linux-musl*)
924 using_freetype_fontconfig=yes
929 if test "$enable_fuzzers" = yes; then
930 test_system_freetype=no
936 using_freetype_fontconfig=yes
942 # When building on Windows normally with MSVC under Cygwin,
943 # configure thinks that the host platform (the platform the
944 # built code will run on) is Cygwin, even if it obviously is
945 # Windows, which in Autoconf terminology is called
946 # "mingw32". (Which is misleading as MinGW is the name of the
947 # tool-chain, not an operating system.)
949 # Somewhat confusing, yes. But this configure script doesn't
950 # look at $host etc that much, it mostly uses its own $_os
951 # variable, set here in this case statement.
953 using_freetype_fontconfig=no
964 if test "$host_cpu" = "aarch64"; then
968 enable_firebird_sdbc=no
973 using_freetype_fontconfig=no
977 if test -n "$LODE_HOME" ; then
979 AC_MSG_NOTICE([sanitized the PATH to $PATH])
982 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
983 INSTROOTCONTENTSUFFIX=/Contents
984 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
985 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
986 LINKFLAGSSHL="-dynamiclib"
993 # -undefined error is the default
997 # Apple's Clang uses "arm64"
998 host_cpu_for_clang=arm64
1003 using_freetype_fontconfig=no
1009 if test -n "$LODE_HOME" ; then
1011 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1015 enable_mpl_subset=yes
1016 enable_lotuswordpro=no
1017 disable_database_connectivity_dependencies
1020 enable_extension_integration=no
1023 if test "$enable_ios_simulator" = "yes"; then
1024 host=x86_64-apple-darwin
1026 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1027 LINKFLAGSSHL="-dynamiclib"
1034 # -undefined error is the default
1035 LINKFLAGSNOUNDEFS=""
1037 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1038 # part, so use aarch64-apple-darwin for now.
1039 HOST_PLATFORM=aarch64-apple-darwin
1041 # Apple's Clang uses "arm64"
1042 host_cpu_for_clang=arm64
1046 using_freetype_fontconfig=yes
1049 AC_MSG_CHECKING([the FreeBSD operating system release])
1050 if test -n "$with_os_version"; then
1051 OSVERSION="$with_os_version"
1053 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1055 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1056 AC_MSG_CHECKING([which thread library to use])
1057 if test "$OSVERSION" -lt "500016"; then
1058 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1059 PTHREAD_LIBS="-pthread"
1060 elif test "$OSVERSION" -lt "502102"; then
1061 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062 PTHREAD_LIBS="-lc_r"
1065 PTHREAD_LIBS="-pthread"
1067 AC_MSG_RESULT([$PTHREAD_LIBS])
1072 using_freetype_fontconfig=yes
1076 PTHREAD_LIBS="-pthread -lpthread"
1081 using_freetype_fontconfig=yes
1083 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1084 PTHREAD_LIBS="-pthread"
1089 using_freetype_fontconfig=yes
1092 PTHREAD_LIBS="-pthread"
1097 # API exists, but seems not really usable since Android 7 AFAIK
1099 using_freetype_fontconfig=yes
1100 using_headless_plugin=no
1104 test_system_freetype=no
1106 disable_database_connectivity_dependencies
1107 enable_lotuswordpro=no
1108 enable_mpl_subset=yes
1109 enable_cairo_canvas=no
1119 using_freetype_fontconfig=yes
1129 enable_postgresql_sdbc=no
1130 enable_firebird_sdbc=no
1135 # API currently just exists in headers, not code
1137 using_freetype_fontconfig=yes
1141 test_split_debug=yes
1142 test_system_freetype=no
1143 enable_compiler_plugins=no
1144 enable_customtarget_components=yes
1145 enable_split_debug=yes
1146 enable_wasm_strip=yes
1148 with_theme="colibre"
1153 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1157 AC_SUBST(HOST_PLATFORM)
1159 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1160 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1163 # Set defaults, if not set by platform
1164 test "${test_cups+set}" = set || test_cups="$using_x11"
1165 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1166 test "${test_gen+set}" = set || test_gen="$using_x11"
1167 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1168 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1169 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1170 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1171 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1172 # don't handle test_qt5, so it can disable test_kf5 later
1173 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1174 test "${test_randr+set}" = set || test_randr="$using_x11"
1175 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1176 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1178 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1179 # Make sure fontconfig and freetype test both either system or not
1180 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1181 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1183 # convenience / platform overriding "fixes"
1185 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1186 test "$test_kf5" = yes && test_qt5=yes
1187 test "$test_gtk3" != yes && enable_gtk3=no
1188 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1189 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1190 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1192 # Keep in sync with the above $using_x11 depending test default list
1198 test_gstreamer_1_0=no
1210 test "$using_x11" = yes && USING_X11=TRUE
1212 if test "$using_freetype_fontconfig" = yes; then
1213 AC_DEFINE(USE_HEADLESS_CODE)
1214 USE_HEADLESS_CODE=TRUE
1215 if test "$using_headless_plugin" = yes; then
1216 AC_DEFINE(ENABLE_HEADLESS)
1217 ENABLE_HEADLESS=TRUE
1224 AC_SUBST(ENABLE_HEADLESS)
1225 AC_SUBST(USE_HEADLESS_CODE)
1227 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1228 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1229 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1230 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1232 # ===================================================================
1234 # End initial platform setup
1236 # ===================================================================
1238 if test "$_os" = "Android" ; then
1239 # Verify that the NDK and SDK options are proper
1240 if test -z "$with_android_ndk"; then
1241 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1242 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1243 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1246 if test -z "$ANDROID_SDK_DIR"; then
1247 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1248 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1249 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1253 AC_SUBST(SDKDIRNAME)
1255 AC_SUBST(PTHREAD_CFLAGS)
1256 AC_SUBST(PTHREAD_LIBS)
1258 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1259 # By default use the ones specified by our build system,
1260 # but explicit override is possible.
1261 AC_MSG_CHECKING(for explicit AFLAGS)
1262 if test -n "$AFLAGS"; then
1263 AC_MSG_RESULT([$AFLAGS])
1269 AC_MSG_CHECKING(for explicit CFLAGS)
1270 if test -n "$CFLAGS"; then
1271 AC_MSG_RESULT([$CFLAGS])
1277 AC_MSG_CHECKING(for explicit CXXFLAGS)
1278 if test -n "$CXXFLAGS"; then
1279 AC_MSG_RESULT([$CXXFLAGS])
1285 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1286 if test -n "$OBJCFLAGS"; then
1287 AC_MSG_RESULT([$OBJCFLAGS])
1293 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1294 if test -n "$OBJCXXFLAGS"; then
1295 AC_MSG_RESULT([$OBJCXXFLAGS])
1301 AC_MSG_CHECKING(for explicit LDFLAGS)
1302 if test -n "$LDFLAGS"; then
1303 AC_MSG_RESULT([$LDFLAGS])
1313 AC_SUBST(OBJCXXFLAGS)
1317 AC_SUBST(x_CXXFLAGS)
1318 AC_SUBST(x_OBJCFLAGS)
1319 AC_SUBST(x_OBJCXXFLAGS)
1322 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1323 my_original_CFLAGS=$CFLAGS
1324 my_original_CXXFLAGS=$CXXFLAGS
1325 my_original_CPPFLAGS=$CPPFLAGS
1327 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1328 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1329 dnl AC_PROG_CC internally.
1330 if test "$_os" != "WINNT"; then
1331 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1335 if test -z "$CC_BASE"; then
1336 CC_BASE=`first_arg_basename "$CC"`
1340 if test "$_os" != "WINNT"; then
1341 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1345 AC_SUBST(ENDIANNESS)
1347 if test "$usable_dlapi" != no; then
1348 AC_DEFINE([HAVE_DLAPI])
1349 if test "$test_unix_dlapi" != no; then
1351 AC_SEARCH_LIBS([dlsym], [dl],
1352 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1353 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1355 AC_DEFINE([HAVE_UNIX_DLAPI])
1358 AC_SUBST(UNIX_DLAPI_LIBS)
1360 # Check for a (GNU) backtrace implementation
1361 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1362 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1363 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1365 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1366 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1367 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1370 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1371 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1374 dnl ===================================================================
1375 dnl Sanity checks for Emscripten SDK setup
1376 dnl ===================================================================
1378 EMSCRIPTEN_MIN_MAJOR=2
1379 EMSCRIPTEN_MIN_MINOR=0
1380 EMSCRIPTEN_MIN_TINY=31
1381 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1383 if test "$_os" = "Emscripten"; then
1384 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1385 AS_IF([test -z "$EMSDK"],
1386 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1387 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1388 if test -f "$EMSCRIPTEN_VERSION_H"; then
1389 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1390 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1391 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1393 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1394 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1395 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1396 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1399 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1401 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1402 if test $? -eq 0; then
1403 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1405 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1409 if ! command -v emconfigure >/dev/null 2>&1; then
1410 AC_MSG_WARN([emconfigure must be in your \$PATH])
1413 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1414 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1417 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1418 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1419 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1422 if test $EMSCRIPTEN_ERROR -ne 0; then
1423 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1426 dnl Some build-side things are conditional on "EMSCRIPTEN in BUILD_TYPE_FOR_HOST":
1427 BUILD_TYPE="$BUILD_TYPE EMSCRIPTEN"
1429 AC_SUBST(EMSDK_FILE_PACKAGER)
1431 ###############################################################################
1432 # Extensions switches --enable/--disable
1433 ###############################################################################
1434 # By default these should be enabled unless having extra dependencies.
1435 # If there is extra dependency over configure options then the enable should
1436 # be automagic based on whether the requiring feature is enabled or not.
1437 # All this options change anything only with --enable-extension-integration.
1439 # The name of this option and its help string makes it sound as if
1440 # extensions are built anyway, just not integrated in the installer,
1441 # if you use --disable-extension-integration. Is that really the
1444 AC_ARG_ENABLE(ios-simulator,
1445 AS_HELP_STRING([--enable-ios-simulator],
1446 [build for iOS simulator])
1449 libo_FUZZ_ARG_ENABLE(extension-integration,
1450 AS_HELP_STRING([--disable-extension-integration],
1451 [Disable integration of the built extensions in the installer of the
1452 product. Use this switch to disable the integration.])
1455 AC_ARG_ENABLE(avmedia,
1456 AS_HELP_STRING([--disable-avmedia],
1457 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1458 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1460 AC_ARG_ENABLE(database-connectivity,
1461 AS_HELP_STRING([--disable-database-connectivity],
1462 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1465 # This doesn't mean not building (or "integrating") extensions
1466 # (although it probably should; i.e. it should imply
1467 # --disable-extension-integration I guess), it means not supporting
1468 # any extension mechanism at all
1469 libo_FUZZ_ARG_ENABLE(extensions,
1470 AS_HELP_STRING([--disable-extensions],
1471 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1474 AC_ARG_ENABLE(scripting,
1475 AS_HELP_STRING([--disable-scripting],
1476 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1477 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1479 # This is mainly for Android and iOS, but could potentially be used in some
1480 # special case otherwise, too, so factored out as a separate setting
1482 AC_ARG_ENABLE(dynamic-loading,
1483 AS_HELP_STRING([--disable-dynamic-loading],
1484 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1487 libo_FUZZ_ARG_ENABLE(report-builder,
1488 AS_HELP_STRING([--disable-report-builder],
1489 [Disable the Report Builder.])
1492 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1493 AS_HELP_STRING([--enable-ext-wiki-publisher],
1494 [Enable the Wiki Publisher extension.])
1497 libo_FUZZ_ARG_ENABLE(lpsolve,
1498 AS_HELP_STRING([--disable-lpsolve],
1499 [Disable compilation of the lp solve solver ])
1501 libo_FUZZ_ARG_ENABLE(coinmp,
1502 AS_HELP_STRING([--disable-coinmp],
1503 [Disable compilation of the CoinMP solver ])
1506 libo_FUZZ_ARG_ENABLE(pdfimport,
1507 AS_HELP_STRING([--disable-pdfimport],
1508 [Disable building the PDF import feature.])
1511 libo_FUZZ_ARG_ENABLE(pdfium,
1512 AS_HELP_STRING([--disable-pdfium],
1513 [Disable building PDFium. Results in unsecure PDF signature verification.])
1516 libo_FUZZ_ARG_ENABLE(skia,
1517 AS_HELP_STRING([--disable-skia],
1518 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1521 ###############################################################################
1523 dnl ---------- *** ----------
1525 libo_FUZZ_ARG_ENABLE(mergelibs,
1526 AS_HELP_STRING([--enable-mergelibs],
1527 [Merge several of the smaller libraries into one big, "merged", one.])
1530 libo_FUZZ_ARG_ENABLE(breakpad,
1531 AS_HELP_STRING([--enable-breakpad],
1532 [Enables breakpad for crash reporting.])
1535 libo_FUZZ_ARG_ENABLE(crashdump,
1536 AS_HELP_STRING([--disable-crashdump],
1537 [Disable dump.ini and dump-file, when --enable-breakpad])
1540 AC_ARG_ENABLE(fetch-external,
1541 AS_HELP_STRING([--disable-fetch-external],
1542 [Disables fetching external tarballs from web sources.])
1545 AC_ARG_ENABLE(fuzzers,
1546 AS_HELP_STRING([--enable-fuzzers],
1547 [Enables building libfuzzer targets for fuzz testing.])
1550 libo_FUZZ_ARG_ENABLE(pch,
1551 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1552 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1553 Using 'system' will include only external headers, 'base' will add also headers
1554 from base modules, 'normal' will also add all headers except from the module built,
1555 'full' will use all suitable headers even from a module itself.])
1558 libo_FUZZ_ARG_ENABLE(epm,
1559 AS_HELP_STRING([--enable-epm],
1560 [LibreOffice includes self-packaging code, that requires epm, however epm is
1561 useless for large scale package building.])
1564 libo_FUZZ_ARG_ENABLE(odk,
1565 AS_HELP_STRING([--enable-odk],
1566 [Enable building the Office Development Kit, the part that extensions need to build against])
1569 AC_ARG_ENABLE(mpl-subset,
1570 AS_HELP_STRING([--enable-mpl-subset],
1571 [Don't compile any pieces which are not MPL or more liberally licensed])
1574 libo_FUZZ_ARG_ENABLE(evolution2,
1575 AS_HELP_STRING([--enable-evolution2],
1576 [Allows the built-in evolution 2 addressbook connectivity build to be
1580 AC_ARG_ENABLE(avahi,
1581 AS_HELP_STRING([--enable-avahi],
1582 [Determines whether to use Avahi to advertise Impress to remote controls.])
1585 libo_FUZZ_ARG_ENABLE(werror,
1586 AS_HELP_STRING([--enable-werror],
1587 [Turn warnings to errors. (Has no effect in modules where the treating
1588 of warnings as errors is disabled explicitly.)]),
1591 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1592 AS_HELP_STRING([--enable-assert-always-abort],
1593 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1596 libo_FUZZ_ARG_ENABLE(dbgutil,
1597 AS_HELP_STRING([--enable-dbgutil],
1598 [Provide debugging support from --enable-debug and include additional debugging
1599 utilities such as object counting or more expensive checks.
1600 This is the recommended option for developers.
1601 Note that this makes the build ABI incompatible, it is not possible to mix object
1602 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1604 libo_FUZZ_ARG_ENABLE(debug,
1605 AS_HELP_STRING([--enable-debug],
1606 [Include debugging information, disable compiler optimization and inlining plus
1607 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1609 libo_FUZZ_ARG_ENABLE(split-debug,
1610 AS_HELP_STRING([--disable-split-debug],
1611 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1612 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1614 libo_FUZZ_ARG_ENABLE(gdb-index,
1615 AS_HELP_STRING([--disable-gdb-index],
1616 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1617 The feature requires a linker that supports the --gdb-index option.]))
1619 libo_FUZZ_ARG_ENABLE(sal-log,
1620 AS_HELP_STRING([--enable-sal-log],
1621 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1623 libo_FUZZ_ARG_ENABLE(symbols,
1624 AS_HELP_STRING([--enable-symbols],
1625 [Generate debug information.
1626 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1627 otherwise. It is possible to explicitly specify gbuild build targets
1628 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1629 everything in the directory; there is no ordering, more specific overrides
1630 more general, and disabling takes precedence).
1631 Example: --enable-symbols="all -sw/ -Library_sc".]))
1633 libo_FUZZ_ARG_ENABLE(optimized,
1634 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1635 [Whether to compile with optimization flags.
1636 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1637 otherwise. Using 'debug' will try to use only optimizations that should
1638 not interfere with debugging. For Emscripten we default to optimized (-O1)
1639 debug build, as otherwise binaries become too large.]))
1641 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1642 AS_HELP_STRING([--disable-runtime-optimizations],
1643 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1644 JVM JIT) that are known to interact badly with certain dynamic analysis
1645 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1646 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1647 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1649 AC_ARG_WITH(valgrind,
1650 AS_HELP_STRING([--with-valgrind],
1651 [Make availability of Valgrind headers a hard requirement.]))
1653 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1654 AS_HELP_STRING([--enable-compiler-plugins],
1655 [Enable compiler plugins that will perform additional checks during
1656 building. Enabled automatically by --enable-dbgutil.
1657 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1658 COMPILER_PLUGINS_DEBUG=
1659 if test "$enable_compiler_plugins" = debug; then
1660 enable_compiler_plugins=yes
1661 COMPILER_PLUGINS_DEBUG=TRUE
1664 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1665 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1666 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1667 relevant in the --disable-compiler-plugins case.]))
1669 libo_FUZZ_ARG_ENABLE(ooenv,
1670 AS_HELP_STRING([--enable-ooenv],
1671 [Enable ooenv for the instdir installation.]))
1674 AS_HELP_STRING([--enable-lto],
1675 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1676 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1679 AC_ARG_ENABLE(python,
1680 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1681 [Enables or disables Python support at run-time.
1682 Also specifies what Python to use at build-time.
1683 'fully-internal' even forces the internal version for uses of Python
1685 On macOS the only choices are
1686 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1689 libo_FUZZ_ARG_ENABLE(gtk3,
1690 AS_HELP_STRING([--disable-gtk3],
1691 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1692 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1695 AS_HELP_STRING([--enable-gtk4],
1696 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1698 AC_ARG_ENABLE(atspi-tests,
1699 AS_HELP_STRING([--disable-atspi-tests],
1700 [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1702 AC_ARG_ENABLE(introspection,
1703 AS_HELP_STRING([--enable-introspection],
1704 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1705 Linux distributions.)]))
1707 AC_ARG_ENABLE(split-app-modules,
1708 AS_HELP_STRING([--enable-split-app-modules],
1709 [Split file lists for app modules, e.g. base, calc.
1710 Has effect only with make distro-pack-install]),
1713 AC_ARG_ENABLE(split-opt-features,
1714 AS_HELP_STRING([--enable-split-opt-features],
1715 [Split file lists for some optional features, e.g. pyuno, testtool.
1716 Has effect only with make distro-pack-install]),
1719 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1720 AS_HELP_STRING([--disable-cairo-canvas],
1721 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1724 libo_FUZZ_ARG_ENABLE(dbus,
1725 AS_HELP_STRING([--disable-dbus],
1726 [Determines whether to enable features that depend on dbus.
1727 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1728 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1730 libo_FUZZ_ARG_ENABLE(sdremote,
1731 AS_HELP_STRING([--disable-sdremote],
1732 [Determines whether to enable Impress remote control (i.e. the server component).]),
1733 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1735 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1736 AS_HELP_STRING([--disable-sdremote-bluetooth],
1737 [Determines whether to build sdremote with bluetooth support.
1738 Requires dbus on Linux.]))
1740 libo_FUZZ_ARG_ENABLE(gio,
1741 AS_HELP_STRING([--disable-gio],
1742 [Determines whether to use the GIO support.]),
1743 ,test "${enable_gio+set}" = set || enable_gio=yes)
1746 AS_HELP_STRING([--enable-qt5],
1747 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1752 AS_HELP_STRING([--enable-qt6],
1753 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1758 AS_HELP_STRING([--enable-kf5],
1759 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1760 KF5 are available.]),
1764 AS_HELP_STRING([--enable-kf6],
1765 [Determines whether to use KF6 vclplug on platforms where Qt6 and
1766 KF6 are available.]),
1770 AC_ARG_ENABLE(gtk3_kde5,
1771 AS_HELP_STRING([--enable-gtk3-kde5],
1772 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1773 platforms where Gtk3, Qt5 and Plasma is available.]),
1777 AS_HELP_STRING([--enable-gen],
1778 [To select the gen backend in case of --disable-dynamic-loading.
1779 Per default auto-enabled when X11 is used.]),
1780 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1783 AS_HELP_STRING([--disable-gui],
1784 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1787 libo_FUZZ_ARG_ENABLE(randr,
1788 AS_HELP_STRING([--disable-randr],
1789 [Disable RandR support in the vcl project.]),
1790 ,test "${enable_randr+set}" = set || enable_randr=yes)
1792 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1793 AS_HELP_STRING([--disable-gstreamer-1-0],
1794 [Disable building with the gstreamer 1.0 avmedia backend.]),
1795 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1797 libo_FUZZ_ARG_ENABLE([eot],
1798 [AS_HELP_STRING([--enable-eot],
1799 [Enable support for Embedded OpenType fonts.])],
1800 ,test "${enable_eot+set}" = set || enable_eot=no)
1802 libo_FUZZ_ARG_ENABLE(cve-tests,
1803 AS_HELP_STRING([--disable-cve-tests],
1804 [Prevent CVE tests to be executed]),
1807 AC_ARG_ENABLE(build-opensymbol,
1808 AS_HELP_STRING([--enable-build-opensymbol],
1809 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1810 fontforge installed.]),
1813 AC_ARG_ENABLE(dependency-tracking,
1814 AS_HELP_STRING([--enable-dependency-tracking],
1815 [Do not reject slow dependency extractors.])[
1816 --disable-dependency-tracking
1817 Disables generation of dependency information.
1818 Speed up one-time builds.],
1821 AC_ARG_ENABLE(icecream,
1822 AS_HELP_STRING([--enable-icecream],
1823 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1824 It defaults to /opt/icecream for the location of the icecream gcc/g++
1825 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1829 AS_HELP_STRING([--enable-ld=<linker>],
1830 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1831 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1832 If <linker> contains any ':', the part before the first ':' is used as the value of
1833 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1834 needed for Clang 12).]),
1837 libo_FUZZ_ARG_ENABLE(cups,
1838 AS_HELP_STRING([--disable-cups],
1839 [Do not build cups support.])
1842 AC_ARG_ENABLE(ccache,
1843 AS_HELP_STRING([--disable-ccache],
1844 [Do not try to use ccache automatically.
1845 By default we will try to detect if ccache is available; in that case if
1846 CC/CXX are not yet set, and --enable-icecream is not given, we
1847 attempt to use ccache. --disable-ccache disables ccache completely.
1848 Additionally ccache's depend mode is enabled if possible,
1849 use --enable-ccache=nodepend to enable ccache without depend mode.
1853 AC_ARG_ENABLE(z7-debug,
1854 AS_HELP_STRING([--enable-z7-debug],
1855 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1856 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1857 Enabled by default if ccache is detected.]))
1859 libo_FUZZ_ARG_ENABLE(online-update,
1860 AS_HELP_STRING([--enable-online-update],
1861 [Enable the online update service that will check for new versions of
1862 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1865 libo_FUZZ_ARG_ENABLE(online-update-mar,
1866 AS_HELP_STRING([--enable-online-update-mar],
1867 [Enable the experimental Mozilla-like online update service that will
1868 check for new versions of LibreOffice. Disabled by default.]),
1871 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1872 AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1873 [Set the base URL value for --enable-online-update-mar.
1874 (Can be left off for debug purposes, even if that may render the feature
1878 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1879 AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1880 [Set the certificate DER value for --enable-online-update-mar.
1881 (Can be left off for debug purposes, even if that may render the feature
1885 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1886 AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1887 [Set the certificate name value for --enable-online-update-mar.
1888 (Can be left off for debug purposes, even if that may render the feature
1892 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1893 AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1894 [Set the certificate path value for --enable-online-update-mar.
1895 (Can be left off for debug purposes, even if that may render the feature
1899 libo_FUZZ_ARG_ENABLE(extension-update,
1900 AS_HELP_STRING([--disable-extension-update],
1901 [Disable possibility to update installed extensions.]),
1904 libo_FUZZ_ARG_ENABLE(release-build,
1905 AS_HELP_STRING([--enable-release-build],
1906 [Enable release build. Note that the "release build" choice is orthogonal to
1907 whether symbols are present, debug info is generated, or optimization
1909 See https://wiki.documentfoundation.org/Development/DevBuild]),
1912 AC_ARG_ENABLE(windows-build-signing,
1913 AS_HELP_STRING([--enable-windows-build-signing],
1914 [Enable signing of windows binaries (*.exe, *.dll)]),
1917 AC_ARG_ENABLE(silent-msi,
1918 AS_HELP_STRING([--enable-silent-msi],
1919 [Enable MSI with LIMITUI=1 (silent install).]),
1923 AS_HELP_STRING([--enable-wix],
1924 [Build Windows installer using WiX.]),
1927 AC_ARG_ENABLE(macosx-code-signing,
1928 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1929 [Sign executables, dylibs, frameworks and the app bundle. If you
1930 don't provide an identity the first suitable certificate
1931 in your keychain is used.]),
1934 AC_ARG_ENABLE(macosx-package-signing,
1935 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1936 [Create a .pkg suitable for uploading to the Mac App Store and sign
1937 it. If you don't provide an identity the first suitable certificate
1938 in your keychain is used.]),
1941 AC_ARG_ENABLE(macosx-sandbox,
1942 AS_HELP_STRING([--enable-macosx-sandbox],
1943 [Make the app bundle run in a sandbox. Requires code signing.
1944 Is required by apps distributed in the Mac App Store, and implies
1945 adherence to App Store rules.]),
1948 AC_ARG_WITH(macosx-bundle-identifier,
1949 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1950 [Define the macOS bundle identifier. Default is the somewhat weird
1951 org.libreoffice.script ("script", huh?).]),
1952 ,with_macosx_bundle_identifier=org.libreoffice.script)
1954 AC_ARG_WITH(macosx-provisioning-profile,
1955 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1956 [Specify the path to a provisioning profile to use]),
1959 AC_ARG_WITH(product-name,
1960 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1961 [Define the product name. Default is AC_PACKAGE_NAME.]),
1962 ,with_product_name=$PRODUCTNAME)
1964 libo_FUZZ_ARG_ENABLE(community-flavor,
1965 AS_HELP_STRING([--disable-community-flavor],
1966 [Disable the Community branding.]),
1969 AC_ARG_WITH(package-version,
1970 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1971 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1974 libo_FUZZ_ARG_ENABLE(readonly-installset,
1975 AS_HELP_STRING([--enable-readonly-installset],
1976 [Prevents any attempts by LibreOffice to write into its installation. That means
1977 at least that no "system-wide" extensions can be added. Partly experimental work in
1978 progress, probably not fully implemented. Always enabled for macOS.]),
1981 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1982 AS_HELP_STRING([--disable-mariadb-sdbc],
1983 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1986 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1987 AS_HELP_STRING([--disable-postgresql-sdbc],
1988 [Disable the build of the PostgreSQL-SDBC driver.])
1991 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1992 AS_HELP_STRING([--disable-lotuswordpro],
1993 [Disable the build of the Lotus Word Pro filter.]),
1994 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1996 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1997 AS_HELP_STRING([--disable-firebird-sdbc],
1998 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1999 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2001 AC_ARG_ENABLE(bogus-pkg-config,
2002 AS_HELP_STRING([--enable-bogus-pkg-config],
2003 [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.]),
2006 AC_ARG_ENABLE(openssl,
2007 AS_HELP_STRING([--disable-openssl],
2008 [Disable using libssl/libcrypto from OpenSSL. If disabled,
2009 components will use NSS. Work in progress,
2010 use only if you are hacking on it.]),
2011 ,enable_openssl=yes)
2013 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2014 AS_HELP_STRING([--enable-cipher-openssl-backend],
2015 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2016 Requires --enable-openssl.]))
2019 AS_HELP_STRING([--disable-nss],
2020 [Disable using NSS. If disabled,
2021 components will use openssl. Work in progress,
2022 use only if you are hacking on it.]),
2025 AC_ARG_ENABLE(library-bin-tar,
2026 AS_HELP_STRING([--enable-library-bin-tar],
2027 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2028 Some libraries can save their build result in a tarball
2029 stored in TARFILE_LOCATION. That binary tarball is
2030 uniquely identified by the source tarball,
2031 the content of the config_host.mk file and the content
2032 of the top-level directory in core for that library
2033 If this option is enabled, then if such a tarfile exist, it will be untarred
2034 instead of the source tarfile, and the build step will be skipped for that
2036 If a proper tarfile does not exist, then the normal source-based
2037 build is done for that library and a proper binary tarfile is created
2038 for the next time.]),
2041 AC_ARG_ENABLE(dconf,
2042 AS_HELP_STRING([--disable-dconf],
2043 [Disable the dconf configuration backend (enabled by default where
2046 libo_FUZZ_ARG_ENABLE(formula-logger,
2048 [--enable-formula-logger],
2049 [Enable formula logger for logging formula calculation flow in Calc.]
2054 AS_HELP_STRING([--disable-ldap],
2055 [Disable LDAP support.]),
2058 AC_ARG_ENABLE(opencl,
2059 AS_HELP_STRING([--disable-opencl],
2060 [Disable OpenCL support.]),
2063 libo_FUZZ_ARG_ENABLE(librelogo,
2064 AS_HELP_STRING([--disable-librelogo],
2065 [Do not build LibreLogo.]),
2066 ,enable_librelogo=yes)
2068 AC_ARG_ENABLE(wasm-strip,
2069 AS_HELP_STRING([--enable-wasm-strip],
2070 [Strip the static build like for WASM/emscripten platform.]),
2073 AC_ARG_WITH(main-module,
2074 AS_HELP_STRING([--with-main-module=<writer/calc>],
2075 [Specify which main module to build for wasm.
2076 Default value is 'writer'.]),
2079 AC_ARG_ENABLE(wasm-exceptions,
2080 AS_HELP_STRING([--enable-wasm-exceptions],
2081 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2082 matter of fact, this is currently not finished by any implementation)
2083 (see https://webassembly.org/roadmap/ for the current state]),
2086 AC_ARG_ENABLE(xmlhelp,
2087 AS_HELP_STRING([--disable-xmlhelp],
2088 [Disable XML help support]),
2089 ,enable_xmlhelp=yes)
2091 AC_ARG_ENABLE(customtarget-components,
2092 AS_HELP_STRING([--enable-customtarget-components],
2093 [Generates the static UNO object constructor mapping from the build.]))
2095 dnl ===================================================================
2096 dnl Optional Packages (--with/without-)
2097 dnl ===================================================================
2099 AC_ARG_WITH(gcc-home,
2100 AS_HELP_STRING([--with-gcc-home],
2101 [Specify the location of gcc/g++ manually. This can be used in conjunction
2102 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2103 non-default path.]),
2106 AC_ARG_WITH(gnu-patch,
2107 AS_HELP_STRING([--with-gnu-patch],
2108 [Specify location of GNU patch on Solaris or FreeBSD.]),
2111 AC_ARG_WITH(build-platform-configure-options,
2112 AS_HELP_STRING([--with-build-platform-configure-options],
2113 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2117 AS_HELP_STRING([--with-gnu-cp],
2118 [Specify location of GNU cp on Solaris or FreeBSD.]),
2121 AC_ARG_WITH(external-tar,
2122 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2123 [Specify an absolute path of where to find (and store) tarfiles.]),
2124 TARFILE_LOCATION=$withval ,
2127 AC_ARG_WITH(referenced-git,
2128 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2129 [Specify another checkout directory to reference. This makes use of
2130 git submodule update --reference, and saves a lot of diskspace
2131 when having multiple trees side-by-side.]),
2132 GIT_REFERENCE_SRC=$withval ,
2135 AC_ARG_WITH(linked-git,
2136 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2137 [Specify a directory where the repositories of submodules are located.
2138 This uses a method similar to git-new-workdir to get submodules.]),
2139 GIT_LINK_SRC=$withval ,
2142 AC_ARG_WITH(galleries,
2143 AS_HELP_STRING([--with-galleries],
2144 [Specify how galleries should be built. It is possible either to
2145 build these internally from source ("build"),
2146 or to disable them ("no")]),
2149 AC_ARG_WITH(templates,
2150 AS_HELP_STRING([--with-templates],
2151 [Specify we build with or without template files. It is possible either to
2152 build with templates ("yes"),
2153 or to disable them ("no")]),
2157 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2158 [Choose which themes to include. By default those themes with an '*' are included.
2159 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2160 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2161 *elementary, *elementary_svg,
2162 *karasa_jaga, *karasa_jaga_svg,
2163 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2164 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2167 libo_FUZZ_ARG_WITH(helppack-integration,
2168 AS_HELP_STRING([--without-helppack-integration],
2169 [It will not integrate the helppacks to the installer
2170 of the product. Please use this switch to use the online help
2171 or separate help packages.]),
2174 libo_FUZZ_ARG_WITH(fonts,
2175 AS_HELP_STRING([--without-fonts],
2176 [LibreOffice includes some third-party fonts to provide a reliable basis for
2177 help content, templates, samples, etc. When these fonts are already
2178 known to be available on the system then you should use this option.]),
2182 AS_HELP_STRING([--with-epm],
2183 [Decides which epm to use. Default is to use the one from the system if
2184 one is built. When either this is not there or you say =internal epm
2188 AC_ARG_WITH(package-format,
2189 AS_HELP_STRING([--with-package-format],
2190 [Specify package format(s) for LibreOffice installation sets. The
2191 implicit --without-package-format leads to no installation sets being
2192 generated. Possible values: archive, bsd, deb, dmg,
2193 installed, msi, pkg, and rpm.
2194 Example: --with-package-format='deb rpm']),
2198 AS_HELP_STRING([--with-tls],
2199 [Decides which TLS/SSL and cryptographic implementations to use for
2200 LibreOffice's code. Default is to use NSS although OpenSSL is also
2201 possible. Notice that selecting NSS restricts the usage of OpenSSL
2202 in LO's code but selecting OpenSSL doesn't restrict by now the
2203 usage of NSS in LO's code. Possible values: openssl, nss.
2204 Example: --with-tls="nss"]),
2207 AC_ARG_WITH(system-libs,
2208 AS_HELP_STRING([--with-system-libs],
2209 [Use libraries already on system -- enables all --with-system-* flags.]),
2212 AC_ARG_WITH(system-bzip2,
2213 AS_HELP_STRING([--with-system-bzip2],
2214 [Use bzip2 already on system. Used when --enable-online-update-mar
2215 or --enable-python=internal]),,
2216 [with_system_bzip2="$with_system_libs"])
2218 AC_ARG_WITH(system-headers,
2219 AS_HELP_STRING([--with-system-headers],
2220 [Use headers already on system -- enables all --with-system-* flags for
2221 external packages whose headers are the only entities used i.e.
2222 boost/odbc/sane-header(s).]),,
2223 [with_system_headers="$with_system_libs"])
2225 AC_ARG_WITH(system-jars,
2226 AS_HELP_STRING([--without-system-jars],
2227 [When building with --with-system-libs, also the needed jars are expected
2228 on the system. Use this to disable that]),,
2229 [with_system_jars="$with_system_libs"])
2231 AC_ARG_WITH(system-cairo,
2232 AS_HELP_STRING([--with-system-cairo],
2233 [Use cairo libraries already on system. Happens automatically for
2234 (implicit) --enable-gtk3.]))
2236 AC_ARG_WITH(system-epoxy,
2237 AS_HELP_STRING([--with-system-epoxy],
2238 [Use epoxy libraries already on system. Happens automatically for
2239 (implicit) --enable-gtk3.]),,
2240 [with_system_epoxy="$with_system_libs"])
2242 AC_ARG_WITH(myspell-dicts,
2243 AS_HELP_STRING([--with-myspell-dicts],
2244 [Adds myspell dictionaries to the LibreOffice installation set]),
2247 AC_ARG_WITH(system-dicts,
2248 AS_HELP_STRING([--without-system-dicts],
2249 [Do not use dictionaries from system paths.]),
2252 AC_ARG_WITH(external-dict-dir,
2253 AS_HELP_STRING([--with-external-dict-dir],
2254 [Specify external dictionary dir.]),
2257 AC_ARG_WITH(external-hyph-dir,
2258 AS_HELP_STRING([--with-external-hyph-dir],
2259 [Specify external hyphenation pattern dir.]),
2262 AC_ARG_WITH(external-thes-dir,
2263 AS_HELP_STRING([--with-external-thes-dir],
2264 [Specify external thesaurus dir.]),
2267 AC_ARG_WITH(system-zlib,
2268 AS_HELP_STRING([--with-system-zlib],
2269 [Use zlib already on system.]),,
2270 [with_system_zlib=auto])
2272 AC_ARG_WITH(system-jpeg,
2273 AS_HELP_STRING([--with-system-jpeg],
2274 [Use jpeg already on system.]),,
2275 [with_system_jpeg="$with_system_libs"])
2277 AC_ARG_WITH(system-expat,
2278 AS_HELP_STRING([--with-system-expat],
2279 [Use expat already on system.]),,
2280 [with_system_expat="$with_system_libs"])
2282 AC_ARG_WITH(system-libxml,
2283 AS_HELP_STRING([--with-system-libxml],
2284 [Use libxml/libxslt already on system.]),,
2285 [with_system_libxml=auto])
2287 AC_ARG_WITH(system-openldap,
2288 AS_HELP_STRING([--with-system-openldap],
2289 [Use the OpenLDAP LDAP SDK already on system.]),,
2290 [with_system_openldap="$with_system_libs"])
2292 libo_FUZZ_ARG_ENABLE(poppler,
2293 AS_HELP_STRING([--disable-poppler],
2294 [Disable building Poppler.])
2297 AC_ARG_WITH(system-poppler,
2298 AS_HELP_STRING([--with-system-poppler],
2299 [Use system poppler (only needed for PDF import).]),,
2300 [with_system_poppler="$with_system_libs"])
2302 AC_ARG_WITH(system-abseil,
2303 AS_HELP_STRING([--with-system-abseil],
2304 [Use the abseil libraries already on system.]),,
2305 [with_system_abseil="$with_system_libs"])
2307 AC_ARG_WITH(system-openjpeg,
2308 AS_HELP_STRING([--with-system-openjpeg],
2309 [Use the OpenJPEG library already on system.]),,
2310 [with_system_openjpeg="$with_system_libs"])
2312 libo_FUZZ_ARG_ENABLE(gpgmepp,
2313 AS_HELP_STRING([--disable-gpgmepp],
2314 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2317 AC_ARG_WITH(system-gpgmepp,
2318 AS_HELP_STRING([--with-system-gpgmepp],
2319 [Use gpgmepp already on system]),,
2320 [with_system_gpgmepp="$with_system_libs"])
2322 AC_ARG_WITH(system-mariadb,
2323 AS_HELP_STRING([--with-system-mariadb],
2324 [Use MariaDB/MySQL libraries already on system.]),,
2325 [with_system_mariadb="$with_system_libs"])
2327 AC_ARG_ENABLE(bundle-mariadb,
2328 AS_HELP_STRING([--enable-bundle-mariadb],
2329 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2332 AC_ARG_WITH(system-postgresql,
2333 AS_HELP_STRING([--with-system-postgresql],
2334 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2335 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2336 [with_system_postgresql="$with_system_libs"])
2338 AC_ARG_WITH(libpq-path,
2339 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2340 [Use this PostgreSQL C interface (libpq) installation for building
2341 the PostgreSQL-SDBC extension.]),
2344 AC_ARG_WITH(system-firebird,
2345 AS_HELP_STRING([--with-system-firebird],
2346 [Use Firebird libraries already on system, for building the Firebird-SDBC
2347 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2348 [with_system_firebird="$with_system_libs"])
2350 AC_ARG_WITH(system-libtommath,
2351 AS_HELP_STRING([--with-system-libtommath],
2352 [Use libtommath already on system]),,
2353 [with_system_libtommath="$with_system_libs"])
2355 AC_ARG_WITH(system-hsqldb,
2356 AS_HELP_STRING([--with-system-hsqldb],
2357 [Use hsqldb already on system.]))
2359 AC_ARG_WITH(hsqldb-jar,
2360 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2361 [Specify path to jarfile manually.]),
2362 HSQLDB_JAR=$withval)
2364 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2365 AS_HELP_STRING([--disable-scripting-beanshell],
2366 [Disable support for scripts in BeanShell.]),
2370 AC_ARG_WITH(system-beanshell,
2371 AS_HELP_STRING([--with-system-beanshell],
2372 [Use beanshell already on system.]),,
2373 [with_system_beanshell="$with_system_jars"])
2375 AC_ARG_WITH(beanshell-jar,
2376 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2377 [Specify path to jarfile manually.]),
2380 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2381 AS_HELP_STRING([--disable-scripting-javascript],
2382 [Disable support for scripts in JavaScript.]),
2386 AC_ARG_WITH(system-rhino,
2387 AS_HELP_STRING([--with-system-rhino],
2388 [Use rhino already on system.]),,)
2389 # [with_system_rhino="$with_system_jars"])
2390 # Above is not used as we have different debug interface
2391 # patched into internal rhino. This code needs to be fixed
2392 # before we can enable it by default.
2394 AC_ARG_WITH(rhino-jar,
2395 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2396 [Specify path to jarfile manually.]),
2399 AC_ARG_WITH(system-jfreereport,
2400 AS_HELP_STRING([--with-system-jfreereport],
2401 [Use JFreeReport already on system.]),,
2402 [with_system_jfreereport="$with_system_jars"])
2404 AC_ARG_WITH(sac-jar,
2405 AS_HELP_STRING([--with-sac-jar=JARFILE],
2406 [Specify path to jarfile manually.]),
2409 AC_ARG_WITH(libxml-jar,
2410 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2411 [Specify path to jarfile manually.]),
2412 LIBXML_JAR=$withval)
2414 AC_ARG_WITH(flute-jar,
2415 AS_HELP_STRING([--with-flute-jar=JARFILE],
2416 [Specify path to jarfile manually.]),
2419 AC_ARG_WITH(jfreereport-jar,
2420 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2421 [Specify path to jarfile manually.]),
2422 JFREEREPORT_JAR=$withval)
2424 AC_ARG_WITH(liblayout-jar,
2425 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2426 [Specify path to jarfile manually.]),
2427 LIBLAYOUT_JAR=$withval)
2429 AC_ARG_WITH(libloader-jar,
2430 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2431 [Specify path to jarfile manually.]),
2432 LIBLOADER_JAR=$withval)
2434 AC_ARG_WITH(libformula-jar,
2435 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2436 [Specify path to jarfile manually.]),
2437 LIBFORMULA_JAR=$withval)
2439 AC_ARG_WITH(librepository-jar,
2440 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2441 [Specify path to jarfile manually.]),
2442 LIBREPOSITORY_JAR=$withval)
2444 AC_ARG_WITH(libfonts-jar,
2445 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2446 [Specify path to jarfile manually.]),
2447 LIBFONTS_JAR=$withval)
2449 AC_ARG_WITH(libserializer-jar,
2450 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2451 [Specify path to jarfile manually.]),
2452 LIBSERIALIZER_JAR=$withval)
2454 AC_ARG_WITH(libbase-jar,
2455 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2456 [Specify path to jarfile manually.]),
2457 LIBBASE_JAR=$withval)
2459 AC_ARG_WITH(system-odbc,
2460 AS_HELP_STRING([--with-system-odbc],
2461 [Use the odbc headers already on system.]),,
2462 [with_system_odbc="auto"])
2464 AC_ARG_WITH(system-sane,
2465 AS_HELP_STRING([--with-system-sane],
2466 [Use sane.h already on system.]),,
2467 [with_system_sane="$with_system_headers"])
2469 AC_ARG_WITH(system-bluez,
2470 AS_HELP_STRING([--with-system-bluez],
2471 [Use bluetooth.h already on system.]),,
2472 [with_system_bluez="$with_system_headers"])
2474 AC_ARG_WITH(system-boost,
2475 AS_HELP_STRING([--with-system-boost],
2476 [Use boost already on system.]),,
2477 [with_system_boost="$with_system_headers"])
2479 AC_ARG_WITH(system-dragonbox,
2480 AS_HELP_STRING([--with-system-dragonbox],
2481 [Use dragonbox already on system.]),,
2482 [with_system_dragonbox="$with_system_headers"])
2484 AC_ARG_WITH(system-frozen,
2485 AS_HELP_STRING([--with-system-frozen],
2486 [Use frozen already on system.]),,
2487 [with_system_frozen="$with_system_headers"])
2489 AC_ARG_WITH(system-libfixmath,
2490 AS_HELP_STRING([--with-system-libfixmath],
2491 [Use libfixmath already on system.]),,
2492 [with_system_libfixmath="$with_system_libs"])
2494 AC_ARG_WITH(system-glm,
2495 AS_HELP_STRING([--with-system-glm],
2496 [Use glm already on system.]),,
2497 [with_system_glm="$with_system_headers"])
2499 AC_ARG_WITH(system-hunspell,
2500 AS_HELP_STRING([--with-system-hunspell],
2501 [Use libhunspell already on system.]),,
2502 [with_system_hunspell="$with_system_libs"])
2504 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2505 AS_HELP_STRING([--enable-cairo-rgba],
2506 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2508 libo_FUZZ_ARG_ENABLE(zxing,
2509 AS_HELP_STRING([--disable-zxing],
2510 [Disable use of zxing external library.]))
2512 AC_ARG_WITH(system-zxing,
2513 AS_HELP_STRING([--with-system-zxing],
2514 [Use libzxing already on system.]),,
2515 [with_system_zxing="$with_system_libs"])
2517 AC_ARG_WITH(system-zxcvbn,
2518 AS_HELP_STRING([--with-system-zxcvbn],
2519 [Use libzxcvbn already on system.]),,
2520 [with_system_zxcvbn="$with_system_libs"])
2522 AC_ARG_WITH(system-box2d,
2523 AS_HELP_STRING([--with-system-box2d],
2524 [Use box2d already on system.]),,
2525 [with_system_box2d="$with_system_libs"])
2527 AC_ARG_WITH(system-mythes,
2528 AS_HELP_STRING([--with-system-mythes],
2529 [Use mythes already on system.]),,
2530 [with_system_mythes="$with_system_libs"])
2532 AC_ARG_WITH(system-altlinuxhyph,
2533 AS_HELP_STRING([--with-system-altlinuxhyph],
2534 [Use ALTLinuxhyph already on system.]),,
2535 [with_system_altlinuxhyph="$with_system_libs"])
2537 AC_ARG_WITH(system-lpsolve,
2538 AS_HELP_STRING([--with-system-lpsolve],
2539 [Use lpsolve already on system.]),,
2540 [with_system_lpsolve="$with_system_libs"])
2542 AC_ARG_WITH(system-coinmp,
2543 AS_HELP_STRING([--with-system-coinmp],
2544 [Use CoinMP already on system.]),,
2545 [with_system_coinmp="$with_system_libs"])
2547 AC_ARG_WITH(system-liblangtag,
2548 AS_HELP_STRING([--with-system-liblangtag],
2549 [Use liblangtag library already on system.]),,
2550 [with_system_liblangtag="$with_system_libs"])
2552 AC_ARG_WITH(system-lockfile,
2553 AS_HELP_STRING([--with-system-lockfile[=file]],
2554 [Detect a system lockfile program or use the \$file argument.]))
2557 AS_HELP_STRING([--without-webdav],
2558 [Disable WebDAV support in the UCB.]))
2560 AC_ARG_WITH(linker-hash-style,
2561 AS_HELP_STRING([--with-linker-hash-style],
2562 [Use linker with --hash-style=<style> when linking shared objects.
2563 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2564 if supported on the build system, and "sysv" otherwise.]))
2566 AC_ARG_WITH(jdk-home,
2567 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2568 [If you have installed JDK 17 or later on your system please supply the
2569 path here. Note that this is not the location of the java command but the
2570 location of the entire distribution. In case of cross-compiling, this
2571 is the JDK of the host os. Use --with-build-platform-configure-options
2572 to point to a different build platform JDK.]),
2576 AS_HELP_STRING([--with-help],
2577 [Enable the build of help. There is a special parameter "common" that
2578 can be used to bundle only the common part, .e.g help-specific icons.
2579 This is useful when you build the helpcontent separately.])
2581 Usage: --with-help build the old local help
2582 --without-help no local help (default)
2583 --with-help=html build the new HTML local help
2584 --with-help=online build the new HTML online help
2588 AC_ARG_WITH(omindex,
2589 AS_HELP_STRING([--with-omindex],
2590 [Enable the support of xapian-omega index for online help.])
2592 Usage: --with-omindex=server prepare the pages for omindex
2593 but let xapian-omega be built in server.
2594 --with-omindex=noxap do not prepare online pages
2599 libo_FUZZ_ARG_WITH(java,
2600 AS_HELP_STRING([--with-java=<java command>],
2601 [Specify the name of the Java interpreter command. Typically "java"
2602 which is the default.
2604 To build without support for Java components, applets, accessibility
2605 or the XML filters written in Java, use --without-java or --with-java=no.]),
2606 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2607 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2610 AC_ARG_WITH(jvm-path,
2611 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2612 [Use a specific JVM search path at runtime.
2613 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2616 AC_ARG_WITH(ant-home,
2617 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2618 [If you have installed Apache Ant on your system, please supply the path here.
2619 Note that this is not the location of the Ant binary but the location
2620 of the entire distribution.]),
2623 AC_ARG_WITH(symbol-config,
2624 AS_HELP_STRING([--with-symbol-config],
2625 [Configuration for the crashreport symbol upload]),
2627 [with_symbol_config=no])
2629 AC_ARG_WITH(export-validation,
2630 AS_HELP_STRING([--without-export-validation],
2631 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2632 ,with_export_validation=auto)
2634 AC_ARG_WITH(bffvalidator,
2635 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2636 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2637 Requires installed Microsoft Office Binary File Format Validator.
2638 Note: export-validation (--with-export-validation) is required to be turned on.
2639 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2640 ,with_bffvalidator=no)
2642 libo_FUZZ_ARG_WITH(junit,
2643 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2644 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2645 --without-junit disables those tests. Not relevant in the --without-java case.]),
2648 AC_ARG_WITH(hamcrest,
2649 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2650 [Specifies the hamcrest jar file to use for JUnit-based tests.
2651 --without-junit disables those tests. Not relevant in the --without-java case.]),
2654 AC_ARG_WITH(perl-home,
2655 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2656 [If you have installed Perl 5 Distribution, on your system, please
2657 supply the path here. Note that this is not the location of the Perl
2658 binary but the location of the entire distribution.]),
2661 libo_FUZZ_ARG_WITH(doxygen,
2663 [--with-doxygen=<absolute path to doxygen executable>],
2664 [Specifies the doxygen executable to use when generating ODK C/C++
2665 documentation. --without-doxygen disables generation of ODK C/C++
2666 documentation. Not relevant in the --disable-odk case.]),
2669 AC_ARG_WITH(visual-studio,
2670 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2671 [Specify which Visual Studio version to use in case several are
2672 installed. Currently 2019 (default) and 2022 are supported.]),
2675 AC_ARG_WITH(windows-sdk,
2676 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2677 [Specify which Windows SDK, or "Windows Kit", version to use
2678 in case the one that came with the selected Visual Studio
2679 is not what you want for some reason. Note that not all compiler/SDK
2680 combinations are supported. The intent is that this option should not
2685 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2686 [Use this option to build LibreOffice with additional UI language support.
2687 English (US) is always included by default.
2688 Separate multiple languages with space.
2689 For all languages, use --with-lang=ALL.]),
2692 AC_ARG_WITH(locales,
2693 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2694 [Use this option to limit the locale information built in.
2695 Separate multiple locales with space.
2696 Very experimental and might well break stuff.
2697 Just a desperate measure to shrink code and data size.
2698 By default all the locales available is included.
2699 Just works with --disable-dynloading. Defaults to "ALL".
2700 This option is completely unrelated to --with-lang.])
2702 Affects also our character encoding conversion
2703 tables for encodings mainly targeted for a
2704 particular locale, like EUC-CN and EUC-TW for
2705 zh, ISO-2022-JP for ja.
2707 Affects also our add-on break iterator data for
2710 For the default, all locales, don't use this switch at all.
2711 Specifying just the language part of a locale means all matching
2712 locales will be included.
2716 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2717 libo_FUZZ_ARG_WITH(krb5,
2718 AS_HELP_STRING([--with-krb5],
2719 [Enable MIT Kerberos 5 support in modules that support it.
2720 By default automatically enabled on platforms
2721 where a good system Kerberos 5 is available.]),
2724 libo_FUZZ_ARG_WITH(gssapi,
2725 AS_HELP_STRING([--with-gssapi],
2726 [Enable GSSAPI support in modules that support it.
2727 By default automatically enabled on platforms
2728 where a good system GSSAPI is available.]),
2731 libo_FUZZ_ARG_WITH(lxml,
2732 AS_HELP_STRING([--without-lxml],
2733 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2734 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2735 report widget classes and ids.]),
2738 libo_FUZZ_ARG_WITH(latest-c++,
2739 AS_HELP_STRING([--with-latest-c++],
2740 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2741 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2742 [with_latest_c__=no])
2744 AC_ARG_WITH(gtk3-build,
2745 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2746 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2747 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2749 dnl ===================================================================
2751 dnl ===================================================================
2753 AC_ARG_WITH(branding,
2754 AS_HELP_STRING([--with-branding=/path/to/images],
2755 [Use given path to retrieve branding images set.])
2757 Search for intro.png about.svg and logo.svg.
2758 If any is missing, default ones will be used instead.
2760 Search also progress.conf for progress
2761 settings on intro screen :
2763 PROGRESSBARCOLOR="255,255,255" Set color of
2764 progress bar. Comma separated RGB decimal values.
2765 PROGRESSSIZE="407,6" Set size of progress bar.
2766 Comma separated decimal values (width, height).
2767 PROGRESSPOSITION="61,317" Set position of progress
2768 bar from left,top. Comma separated decimal values.
2769 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2770 bar frame. Comma separated RGB decimal values.
2771 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2772 bar text. Comma separated RGB decimal values.
2773 PROGRESSTEXTBASELINE="287" Set vertical position of
2774 progress bar text from top. Decimal value.
2776 Default values will be used if not found.
2781 AC_ARG_WITH(extra-buildid,
2782 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2783 [Show addition build identification in about dialog.]),
2788 AS_HELP_STRING([--with-vendor="John the Builder"],
2789 [Set vendor of the build.]),
2792 AC_ARG_WITH(privacy-policy-url,
2793 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2794 [The URL to your privacy policy (needed when
2795 enabling online-update or crashreporting via breakpad)]),
2796 [if test "x$with_privacy_policy_url" = "xyes"; then
2797 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2798 elif test "x$with_privacy_policy_url" = "xno"; then
2799 with_privacy_policy_url="undefined"
2801 ,[with_privacy_policy_url="undefined"])
2803 AC_ARG_WITH(android-package-name,
2804 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2805 [Set Android package name of the build.]),
2808 AC_ARG_WITH(compat-oowrappers,
2809 AS_HELP_STRING([--with-compat-oowrappers],
2810 [Install oo* wrappers in parallel with
2811 lo* ones to keep backward compatibility.
2812 Has effect only with make distro-pack-install]),
2815 AC_ARG_WITH(os-version,
2816 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2817 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2820 AC_ARG_WITH(parallelism,
2821 AS_HELP_STRING([--with-parallelism],
2822 [Number of jobs to run simultaneously during build. Parallel builds can
2823 save a lot of time on multi-cpu machines. Defaults to the number of
2824 CPUs on the machine, unless you configure --enable-icecream - then to
2828 AC_ARG_WITH(all-tarballs,
2829 AS_HELP_STRING([--with-all-tarballs],
2830 [Download all external tarballs unconditionally]))
2832 AC_ARG_WITH(gdrive-client-id,
2833 AS_HELP_STRING([--with-gdrive-client-id],
2834 [Provides the client id of the application for OAuth2 authentication
2835 on Google Drive. If either this or --with-gdrive-client-secret is
2836 empty, the feature will be disabled]),
2839 AC_ARG_WITH(gdrive-client-secret,
2840 AS_HELP_STRING([--with-gdrive-client-secret],
2841 [Provides the client secret of the application for OAuth2
2842 authentication on Google Drive. If either this or
2843 --with-gdrive-client-id is empty, the feature will be disabled]),
2846 AC_ARG_WITH(alfresco-cloud-client-id,
2847 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2848 [Provides the client id of the application for OAuth2 authentication
2849 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2850 empty, the feature will be disabled]),
2853 AC_ARG_WITH(alfresco-cloud-client-secret,
2854 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2855 [Provides the client secret of the application for OAuth2
2856 authentication on Alfresco Cloud. If either this or
2857 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2860 AC_ARG_WITH(onedrive-client-id,
2861 AS_HELP_STRING([--with-onedrive-client-id],
2862 [Provides the client id of the application for OAuth2 authentication
2863 on OneDrive. If either this or --with-onedrive-client-secret is
2864 empty, the feature will be disabled]),
2867 AC_ARG_WITH(onedrive-client-secret,
2868 AS_HELP_STRING([--with-onedrive-client-secret],
2869 [Provides the client secret of the application for OAuth2
2870 authentication on OneDrive. If either this or
2871 --with-onedrive-client-id is empty, the feature will be disabled]),
2874 dnl Check for coredumpctl support to present information about crashing test processes:
2875 AC_ARG_WITH(coredumpctl,
2876 AS_HELP_STRING([--with-coredumpctl],
2877 [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2880 AC_ARG_WITH(buildconfig-recorded,
2881 AS_HELP_STRING([--with-buildconfig-recorded],
2882 [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2885 AC_MSG_CHECKING([whether to record build config])
2886 if test -z "$with_buildconfig_recorded"; then
2887 with_buildconfig_recorded=no
2889 if test "$with_buildconfig_recorded" = no; then
2892 AC_MSG_RESULT([yes])
2893 # replace backslashes, to get a valid c++ string
2894 config_args=$(echo $ac_configure_args | tr '\\' '/')
2895 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2896 AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2899 dnl ===================================================================
2900 dnl Do we want to use pre-build binary tarball for recompile
2901 dnl ===================================================================
2903 if test "$enable_library_bin_tar" = "yes" ; then
2904 USE_LIBRARY_BIN_TAR=TRUE
2906 USE_LIBRARY_BIN_TAR=
2908 AC_SUBST(USE_LIBRARY_BIN_TAR)
2910 dnl ===================================================================
2911 dnl Test whether build target is Release Build
2912 dnl ===================================================================
2913 AC_MSG_CHECKING([whether build target is Release Build])
2914 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2916 ENABLE_RELEASE_BUILD=
2917 dnl Pu the value on one line as make (at least on macOS) seems to ignore
2918 dnl the newlines and then complains about spaces.
2919 GET_TASK_ALLOW_ENTITLEMENT='<!-- We want to be able to debug a hardened process when not building for release --><key>com.apple.security.get-task-allow</key><true/>'
2921 AC_MSG_RESULT([yes])
2922 ENABLE_RELEASE_BUILD=TRUE
2923 GET_TASK_ALLOW_ENTITLEMENT=
2925 AC_SUBST(ENABLE_RELEASE_BUILD)
2926 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2928 AC_MSG_CHECKING([whether to build a Community flavor])
2929 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2930 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2931 AC_MSG_RESULT([yes])
2936 dnl ===================================================================
2937 dnl Test whether to sign Windows Build
2938 dnl ===================================================================
2939 AC_MSG_CHECKING([whether to sign windows build])
2940 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2941 AC_MSG_RESULT([yes])
2942 WINDOWS_BUILD_SIGNING="TRUE"
2945 WINDOWS_BUILD_SIGNING="FALSE"
2947 AC_SUBST(WINDOWS_BUILD_SIGNING)
2949 dnl ===================================================================
2950 dnl MacOSX build and runtime environment options
2951 dnl ===================================================================
2953 AC_ARG_WITH(macosx-version-min-required,
2954 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2955 [set the minimum OS version needed to run the built LibreOffice])
2957 e. g.: --with-macosx-version-min-required=10.15
2961 dnl ===================================================================
2962 dnl Check for incompatible options set by fuzzing, and reset those
2963 dnl automatically to working combinations
2964 dnl ===================================================================
2966 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2967 "$enable_dbus" != "$enable_avahi"; then
2968 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2969 enable_avahi=$enable_dbus
2974 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2975 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2979 add_lopath_before ()
2984 for dir in $LO_PATH ; do
2985 if test "$dir" != "$1" ; then
2986 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2989 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2992 dnl ===================================================================
2993 dnl check for required programs (grep, awk, sed, bash)
2994 dnl ===================================================================
2999 if test -n "$1"; then
3000 if test "$build_os" = "cygwin"; then
3001 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3003 new_path=`cygpath -sm "$formatted_path"`
3006 new_path=`cygpath -u "$formatted_path"`
3011 if test "$2" = "after"; then
3012 add_lopath_after "$new_path"
3014 add_lopath_before "$new_path"
3020 AC_PATH_PROG( AWK, $AWK)
3021 if test -z "$AWK"; then
3022 AC_MSG_ERROR([install awk to run this script])
3025 AC_PATH_PROG(BASH, bash)
3026 if test -z "$BASH"; then
3027 AC_MSG_ERROR([bash not found in \$PATH])
3031 # prefer parallel compression tools, if available
3032 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3033 if test -z "$COMPRESSIONTOOL"; then
3034 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3035 if test -z "$COMPRESSIONTOOL"; then
3036 AC_MSG_ERROR([gzip not found in \$PATH])
3039 AC_SUBST(COMPRESSIONTOOL)
3041 AC_MSG_CHECKING([for GNU or BSD tar])
3042 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3043 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
3044 if test $? -eq 0; then
3049 AC_MSG_RESULT($GNUTAR)
3050 if test -z "$GNUTAR"; then
3051 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3055 AC_MSG_CHECKING([for tar's option to strip components])
3056 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3057 if test $? -eq 0; then
3058 STRIP_COMPONENTS="--strip-components"
3060 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3061 if test $? -eq 0; then
3062 STRIP_COMPONENTS="--strip-path"
3064 STRIP_COMPONENTS="unsupported"
3067 AC_MSG_RESULT($STRIP_COMPONENTS)
3068 if test x$STRIP_COMPONENTS = xunsupported; then
3069 AC_MSG_ERROR([you need a tar that is able to strip components.])
3071 AC_SUBST(STRIP_COMPONENTS)
3073 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3074 dnl desktop OSes from "mobile" ones.
3076 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3077 dnl In other words, that when building for an OS that is not a
3078 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3080 dnl Note the direction of the implication; there is no assumption that
3081 dnl cross-compiling would imply a non-desktop OS.
3083 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3084 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3085 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3086 if test "$_os" != Emscripten; then
3087 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3091 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3092 # also work with the default gtk3 plugin.
3093 if test "$enable_wasm_strip" = "yes"; then
3098 test "$_os" = Emscripten && enable_curl=no
3099 enable_database_connectivity=no
3102 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3103 enable_extension_integration=no
3104 enable_extensions=no
3105 enable_extension_update=no
3109 enable_lotuswordpro=no
3113 enable_online_update=no
3117 enable_report_builder=no
3119 enable_sdremote_bluetooth=no
3129 test_libpagemaker=no
3139 test "${with_fonts+set}" = set || with_fonts=yes
3140 test "${with_locales+set}" = set || with_locales=en
3142 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3143 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3144 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3145 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3146 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3147 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3148 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3149 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3150 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3151 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3152 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3153 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3154 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3155 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3156 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3157 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3158 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3159 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3162 EMSCRIPTEN_NEH_MAJOR=3
3163 EMSCRIPTEN_NEH_MINOR=1
3164 EMSCRIPTEN_NEH_TINY=3
3165 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3167 if test "$enable_wasm_exceptions" = yes; then
3168 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3169 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3170 if test $? -ne 0; then
3171 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3173 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3175 ENABLE_WASM_EXCEPTIONS=TRUE
3177 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3179 # Whether to build "avmedia" functionality or not.
3181 if test "$enable_avmedia" = yes; then
3182 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3183 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3185 test_gstreamer_1_0=no
3188 # Decide whether to build database connectivity stuff (including Base) or not.
3189 if test "$enable_database_connectivity" != no; then
3190 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3191 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3193 if test "$_os" = iOS; then
3194 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3196 disable_database_connectivity_dependencies
3199 if test -z "$enable_extensions"; then
3200 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3201 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3202 enable_extensions=yes
3206 DISABLE_SCRIPTING=''
3207 if test "$enable_scripting" = yes; then
3208 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3209 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3211 DISABLE_SCRIPTING='TRUE'
3212 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3215 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3216 # Disable dynamic_loading always for iOS and Android
3217 enable_dynamic_loading=no
3218 elif test -z "$enable_dynamic_loading"; then
3219 # Otherwise enable it unless specifically disabled
3220 enable_dynamic_loading=yes
3223 DISABLE_DYNLOADING=''
3224 if test "$enable_dynamic_loading" = yes; then
3225 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3227 DISABLE_DYNLOADING='TRUE'
3228 if test $_os != iOS -a $_os != Android; then
3229 enable_database_connectivity=no
3237 AC_SUBST(DISABLE_DYNLOADING)
3239 ENABLE_CUSTOMTARGET_COMPONENTS=
3240 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3241 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3242 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3243 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3246 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3248 if test "$enable_extensions" = yes; then
3249 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3250 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3252 enable_extension_integration=no
3253 enable_extension_update=no
3256 # remember SYSBASE value
3259 dnl ===================================================================
3260 dnl Sort out various gallery compilation options
3261 dnl ===================================================================
3262 WITH_GALLERY_BUILD=TRUE
3263 AC_MSG_CHECKING([how to build and package galleries])
3264 if test -n "${with_galleries}"; then
3265 if test "$with_galleries" = "build"; then
3266 if test "$enable_database_connectivity" = no; then
3267 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3269 AC_MSG_RESULT([build from source images internally])
3270 elif test "$with_galleries" = "no"; then
3272 AC_MSG_RESULT([disable non-internal gallery build])
3274 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3277 if test $_os != iOS -a $_os != Android; then
3278 AC_MSG_RESULT([internal src images for desktop])
3281 AC_MSG_RESULT([disable src image build])
3284 AC_SUBST(WITH_GALLERY_BUILD)
3286 dnl ===================================================================
3287 dnl Sort out various templates compilation options
3288 dnl ===================================================================
3290 AC_MSG_CHECKING([build with or without template files])
3291 if test -n "${with_templates}"; then
3292 if test "$with_templates" = "yes"; then
3293 AC_MSG_RESULT([enable all templates])
3294 elif test "$with_templates" = "no"; then
3296 AC_MSG_RESULT([disable non-internal templates])
3298 AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3301 if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3302 AC_MSG_RESULT([enable all templates])
3305 AC_MSG_RESULT([disable non-internal templates])
3308 AC_SUBST(WITH_TEMPLATES)
3310 dnl ===================================================================
3311 dnl Checks if ccache is available
3312 dnl ===================================================================
3314 if test "$enable_ccache" = "no"; then
3316 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3317 case "%$CC%$CXX%" in
3318 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3319 # assume that's good then
3320 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3321 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3322 CCACHE_DEPEND_MODE=1
3325 # try to use our own ccache if it is available and CCACHE was not already defined
3326 if test -z "$CCACHE"; then
3327 if test "$_os" = "WINNT"; then
3328 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3330 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3331 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3332 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3333 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3336 AC_PATH_PROG([CCACHE],[ccache],[not found])
3337 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3338 CCACHE=`win_short_path_for_make "$CCACHE"`
3339 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3341 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3342 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3343 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3351 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3352 # on windows/VC perhaps sccache is around?
3353 case "%$CC%$CXX%" in
3354 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3355 # assume that's good then
3356 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3357 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3358 CCACHE_DEPEND_MODE=1
3362 # for sharing code below, reuse CCACHE env var
3363 AC_PATH_PROG([CCACHE],[sccache],[not found])
3364 if test "$CCACHE" != "not found"; then
3365 CCACHE=`win_short_path_for_make "$CCACHE"`
3367 CCACHE_DEPEND_MODE=1
3372 if test "$CCACHE" = "not found"; then
3375 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3376 CCACHE_DEPEND_MODE=1
3377 # Need to check for ccache version: otherwise prevents
3378 # caching of the results (like "-x objective-c++" for Mac)
3379 if test $_os = Darwin -o $_os = iOS; then
3380 # Check ccache version
3381 AC_MSG_CHECKING([whether version of ccache is suitable])
3382 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3383 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3384 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3385 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3387 AC_MSG_RESULT([no, $CCACHE_VERSION])
3393 if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3394 AC_MSG_ERROR([No suitable ccache found])
3401 if test "$enable_ccache" = "nodepend"; then
3402 CCACHE_DEPEND_MODE=""
3404 AC_SUBST(CCACHE_DEPEND_MODE)
3406 # sccache defaults are good enough
3407 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3408 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3409 # or (...) max_size = 20.0 G
3410 # -p works with both 4.2 and 4.4
3411 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3412 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3413 if test "$ccache_size" = ""; then
3414 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3415 if test "$ccache_size" = ""; then
3418 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3419 if test $ccache_size -lt 1024; then
3421 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3422 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3424 # warn that ccache may be too small for debug build
3425 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3426 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3429 if test $ccache_size -lt 5; then
3430 #warn that ccache may be too small for debug build
3431 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3432 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3438 if test "$enable_z7_debug" != no; then
3439 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3440 ENABLE_Z7_DEBUG=TRUE
3443 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3444 add_warning "ccache will not work with --disable-z7-debug"
3446 AC_SUBST(ENABLE_Z7_DEBUG)
3448 dnl ===================================================================
3449 dnl Checks for C compiler,
3450 dnl The check for the C++ compiler is later on.
3451 dnl ===================================================================
3452 if test "$_os" != "WINNT"; then
3454 AC_MSG_CHECKING([gcc home])
3455 if test -z "$with_gcc_home"; then
3456 if test "$enable_icecream" = "yes"; then
3457 if test -d "/usr/lib/icecc/bin"; then
3458 GCC_HOME="/usr/lib/icecc/"
3459 elif test -d "/usr/libexec/icecc/bin"; then
3460 GCC_HOME="/usr/libexec/icecc/"
3461 elif test -d "/opt/icecream/bin"; then
3462 GCC_HOME="/opt/icecream/"
3464 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3468 GCC_HOME=`command -v gcc | $SED -e s,/bin/gcc,,`
3469 GCC_HOME_SET="false"
3472 GCC_HOME="$with_gcc_home"
3474 AC_MSG_RESULT($GCC_HOME)
3477 if test "$GCC_HOME_SET" = "true"; then
3478 if test -z "$CC"; then
3479 CC="$GCC_HOME/bin/gcc"
3482 if test -z "$CXX"; then
3483 CXX="$GCC_HOME/bin/g++"
3489 COMPATH=`dirname "$CC"`
3490 if test "$COMPATH" = "."; then
3491 AC_PATH_PROGS(COMPATH, $CC)
3492 dnl double square bracket to get single because of M4 quote...
3493 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3495 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3497 dnl ===================================================================
3499 dnl ===================================================================
3500 AC_MSG_CHECKING([whether to build with Java support])
3501 if test "$with_java" != "no"; then
3502 if test "$DISABLE_SCRIPTING" = TRUE; then
3503 AC_MSG_RESULT([no, overridden by --disable-scripting])
3507 AC_MSG_RESULT([yes])
3509 AC_DEFINE(HAVE_FEATURE_JAVA)
3516 AC_SUBST(ENABLE_JAVA)
3518 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3520 dnl ENABLE_JAVA="" indicate no Java support at all
3522 dnl ===================================================================
3523 dnl Check macOS SDK and compiler
3524 dnl ===================================================================
3526 if test $_os = Darwin; then
3528 # The SDK in the currently selected Xcode should be found.
3530 AC_MSG_CHECKING([what macOS SDK to use])
3531 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3532 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3533 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3534 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3535 # problems that existed in the PPC days with target versions not being respected or random
3536 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3537 # SDK version is enough, no need to do both...
3538 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3539 if test ! -d "$MACOSX_SDK_PATH"; then
3540 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3542 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3543 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3544 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3545 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3547 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3548 # correct version in case such an old SDK is specified, it will be rejected later anyway
3549 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3550 if test $MACOSX_SDK_VERSION -lt 101500; then
3551 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3553 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3554 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3556 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3558 AC_MSG_CHECKING([what minimum version of macOS to require])
3559 if test "$with_macosx_version_min_required" = "" ; then
3560 if test "$host_cpu" = x86_64; then
3561 with_macosx_version_min_required="10.15";
3563 with_macosx_version_min_required="11.0";
3566 # see same notes about MACOSX_SDK_VERSION above
3567 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3568 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3569 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3571 AC_MSG_RESULT([$with_macosx_version_min_required])
3573 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3574 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3575 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3577 AC_MSG_RESULT([yes])
3580 # export this so that "xcrun" invocations later return matching values
3581 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3582 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3583 export DEVELOPER_DIR
3584 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3585 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3587 AC_MSG_CHECKING([whether Xcode is new enough])
3588 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3589 my_xcode_ver2=${my_xcode_ver1#Xcode }
3590 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3591 if test "$my_xcode_ver3" -ge 1205; then
3592 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3593 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3594 if test "$my_xcode_ver3" -ge 1600; then
3595 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3596 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3597 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3599 if test "$my_xcode_ver3" -ge 1500; then
3600 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3601 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3602 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3603 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3604 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3609 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3612 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3613 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3615 LIBTOOL=/usr/bin/libtool
3616 INSTALL_NAME_TOOL=install_name_tool
3617 if test -z "$save_CC"; then
3618 stdlib=-stdlib=libc++
3620 AC_MSG_CHECKING([what C compiler to use])
3621 CC="`xcrun -find clang`"
3622 CC_BASE=`first_arg_basename "$CC"`
3623 if test "$host_cpu" = x86_64; then
3624 CC+=" -target x86_64-apple-macos"
3626 CC+=" -target arm64-apple-macos"
3628 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3629 AC_MSG_RESULT([$CC])
3631 AC_MSG_CHECKING([what C++ compiler to use])
3632 CXX="`xcrun -find clang++`"
3633 CXX_BASE=`first_arg_basename "$CXX"`
3634 if test "$host_cpu" = x86_64; then
3635 CXX+=" -target x86_64-apple-macos"
3637 CXX+=" -target arm64-apple-macos"
3639 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3640 AC_MSG_RESULT([$CXX])
3642 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3645 STRIP=`xcrun -find strip`
3646 LIBTOOL=`xcrun -find libtool`
3647 RANLIB=`xcrun -find ranlib`
3650 AC_MSG_CHECKING([whether to do code signing])
3652 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3655 if test "$enable_macosx_code_signing" = yes; then
3656 # By default use the first suitable certificate (?).
3658 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3659 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3660 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3661 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3662 # "Developer ID Application" one.
3663 identity="Developer ID Application:"
3665 identity=$enable_macosx_code_signing
3667 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3668 if test -n "$identity"; then
3669 MACOSX_CODESIGNING_IDENTITY=$identity
3670 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3671 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3673 AC_MSG_ERROR([cannot determine identity to use])
3677 AC_MSG_CHECKING([whether to create a Mac App Store package])
3679 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3681 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3682 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3684 if test "$enable_macosx_package_signing" = yes; then
3685 # By default use the first suitable certificate.
3686 # It should be a "3rd Party Mac Developer Installer" one
3687 identity="3rd Party Mac Developer Installer:"
3689 identity=$enable_macosx_package_signing
3691 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3692 if test -n "$identity"; then
3693 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3694 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3695 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3697 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3701 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3702 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3705 AC_MSG_CHECKING([whether to sandbox the application])
3707 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3708 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3709 elif test "$enable_macosx_sandbox" = yes; then
3710 ENABLE_MACOSX_SANDBOX=TRUE
3711 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3712 AC_MSG_RESULT([yes])
3717 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3718 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3719 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3721 if test -n "$with_macosx_provisioning_profile" ; then
3722 if test ! -f "$with_macosx_provisioning_profile"; then
3723 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3725 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3726 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3727 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3728 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3729 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3733 AC_SUBST(MACOSX_SDK_PATH)
3734 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3735 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3736 AC_SUBST(INSTALL_NAME_TOOL)
3737 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3738 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3739 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3740 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3741 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3742 AC_SUBST(MACOSX_PROVISIONING_INFO)
3743 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3744 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3745 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3747 dnl ===================================================================
3748 dnl Check iOS SDK and compiler
3749 dnl ===================================================================
3751 if test $_os = iOS; then
3752 AC_MSG_CHECKING([what iOS SDK to use])
3754 if test "$enable_ios_simulator" = "yes"; then
3755 platformlc=iphonesimulator
3756 versionmin=-mios-simulator-version-min=14.5
3759 versionmin=-miphoneos-version-min=14.5
3762 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3764 if ! test -d "$sysroot"; then
3765 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3768 AC_MSG_RESULT($sysroot)
3770 stdlib="-stdlib=libc++"
3772 AC_MSG_CHECKING([what C compiler to use])
3773 CC="`xcrun -find clang`"
3774 CC_BASE=`first_arg_basename "$CC"`
3775 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3776 AC_MSG_RESULT([$CC])
3778 AC_MSG_CHECKING([what C++ compiler to use])
3779 CXX="`xcrun -find clang++`"
3780 CXX_BASE=`first_arg_basename "$CXX"`
3781 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3782 AC_MSG_RESULT([$CXX])
3784 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3787 STRIP=`xcrun -find strip`
3788 LIBTOOL=`xcrun -find libtool`
3789 RANLIB=`xcrun -find ranlib`
3792 AC_MSG_CHECKING([whether to treat the installation as read-only])
3794 if test $_os = Darwin; then
3795 enable_readonly_installset=yes
3796 elif test "$enable_extensions" != yes; then
3797 enable_readonly_installset=yes
3799 if test "$enable_readonly_installset" = yes; then
3800 AC_MSG_RESULT([yes])
3801 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3806 dnl ===================================================================
3807 dnl Structure of install set
3808 dnl ===================================================================
3810 if test $_os = Darwin; then
3811 LIBO_BIN_FOLDER=MacOS
3812 LIBO_ETC_FOLDER=Resources
3813 LIBO_LIBEXEC_FOLDER=MacOS
3814 LIBO_LIB_FOLDER=Frameworks
3815 LIBO_LIB_PYUNO_FOLDER=Resources
3816 LIBO_SHARE_FOLDER=Resources
3817 LIBO_SHARE_HELP_FOLDER=Resources/help
3818 LIBO_SHARE_JAVA_FOLDER=Resources/java
3819 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3820 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3821 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3822 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3823 LIBO_URE_BIN_FOLDER=MacOS
3824 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3825 LIBO_URE_LIB_FOLDER=Frameworks
3826 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3827 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3828 elif test $_os = WINNT; then
3829 LIBO_BIN_FOLDER=program
3830 LIBO_ETC_FOLDER=program
3831 LIBO_LIBEXEC_FOLDER=program
3832 LIBO_LIB_FOLDER=program
3833 LIBO_LIB_PYUNO_FOLDER=program
3834 LIBO_SHARE_FOLDER=share
3835 LIBO_SHARE_HELP_FOLDER=help
3836 LIBO_SHARE_JAVA_FOLDER=program/classes
3837 LIBO_SHARE_PRESETS_FOLDER=presets
3838 LIBO_SHARE_READMES_FOLDER=readmes
3839 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3840 LIBO_SHARE_SHELL_FOLDER=program/shell
3841 LIBO_URE_BIN_FOLDER=program
3842 LIBO_URE_ETC_FOLDER=program
3843 LIBO_URE_LIB_FOLDER=program
3844 LIBO_URE_MISC_FOLDER=program
3845 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3847 LIBO_BIN_FOLDER=program
3848 LIBO_ETC_FOLDER=program
3849 LIBO_LIBEXEC_FOLDER=program
3850 LIBO_LIB_FOLDER=program
3851 LIBO_LIB_PYUNO_FOLDER=program
3852 LIBO_SHARE_FOLDER=share
3853 LIBO_SHARE_HELP_FOLDER=help
3854 LIBO_SHARE_JAVA_FOLDER=program/classes
3855 LIBO_SHARE_PRESETS_FOLDER=presets
3856 LIBO_SHARE_READMES_FOLDER=readmes
3857 if test "$enable_fuzzers" != yes; then
3858 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3860 LIBO_SHARE_RESOURCE_FOLDER=resource
3862 LIBO_SHARE_SHELL_FOLDER=program/shell
3863 LIBO_URE_BIN_FOLDER=program
3864 LIBO_URE_ETC_FOLDER=program
3865 LIBO_URE_LIB_FOLDER=program
3866 LIBO_URE_MISC_FOLDER=program
3867 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3869 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3870 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3871 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3872 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3873 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3874 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3886 # Not all of them needed in config_host.mk, add more if need arises
3887 AC_SUBST(LIBO_BIN_FOLDER)
3888 AC_SUBST(LIBO_ETC_FOLDER)
3889 AC_SUBST(LIBO_LIB_FOLDER)
3890 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3891 AC_SUBST(LIBO_SHARE_FOLDER)
3892 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3893 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3894 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3895 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3896 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3897 AC_SUBST(LIBO_URE_BIN_FOLDER)
3898 AC_SUBST(LIBO_URE_ETC_FOLDER)
3899 AC_SUBST(LIBO_URE_LIB_FOLDER)
3900 AC_SUBST(LIBO_URE_MISC_FOLDER)
3901 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3903 dnl ===================================================================
3904 dnl Windows specific tests and stuff
3905 dnl ===================================================================
3909 # Return value: $regvalue
3912 if test "$build_os" = "wsl"; then
3913 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3917 local _regentry="/proc/registry${1}/${2}"
3918 if test -f "$_regentry"; then
3919 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3920 # Registry keys read via /proc/registry* are always \0 terminated!
3921 local _regvalue=$(tr -d '\0' < "$_regentry")
3922 if test $? -eq 0; then
3928 # Get a value from the 32-bit side of the Registry
3931 reg_get_value "32" "$1"
3934 # Get a value from the 64-bit side of the Registry
3937 reg_get_value "64" "$1"
3942 # Return value: $reglist
3945 if test "$build_os" = "wsl"; then
3946 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3950 reglist=$(ls "/proc/registry${1}/${2}")
3953 # List values from the 32-bit side of the Registry
3954 reg_list_values_32()
3956 reg_list_values "32" "$1"
3959 # List values from the 64-bit side of the Registry
3960 reg_list_values_64()
3962 reg_list_values "64" "$1"
3970 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3979 PLATFORMID=windows_x86_64
3981 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3983 WIN_MULTI_ARCH="x86"
3989 PLATFORMID=windows_x86
3992 WIN_OTHER_ARCH="x64"
3997 PLATFORMID=windows_aarch64
3999 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4000 WIN_HOST_ARCH="arm64"
4005 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4009 case "$build_cpu" in
4010 x86_64) WIN_BUILD_ARCH="x64" ;;
4011 i*86) WIN_BUILD_ARCH="x86" ;;
4012 aarch64) WIN_BUILD_ARCH="arm64" ;;
4014 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4018 SCPDEFS="$SCPDEFS -D_MSC_VER"
4022 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4023 # other-arch won't, but wouldn't break the build (x64 on x86).
4024 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4025 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4029 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4030 # To allow building Windows multi-arch releases without cross-tooling
4031 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4032 cross_compiling="yes"
4036 if test "$cross_compiling" = "yes"; then
4037 export CROSS_COMPILING=TRUE
4038 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4039 ENABLE_WASM_STRIP=TRUE
4041 if test "$_os" = "Emscripten"; then
4042 if test "$with_main_module" = "calc"; then
4043 ENABLE_WASM_STRIP_WRITER=TRUE
4044 elif test "$with_main_module" = "writer"; then
4045 ENABLE_WASM_STRIP_CALC=TRUE
4050 BUILD_TYPE="$BUILD_TYPE NATIVE"
4052 AC_SUBST(CROSS_COMPILING)
4053 AC_SUBST(ENABLE_WASM_STRIP)
4054 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4055 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4057 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4058 # NOTE: must _not_ be used for bundled external libraries!
4060 if test "$GCC" = "yes"; then
4061 AC_MSG_CHECKING( for -isystem )
4063 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4064 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4066 if test -n "$ISYSTEM"; then
4072 if test -z "$ISYSTEM"; then
4073 # fall back to using -I
4078 dnl ===================================================================
4079 dnl Check which Visual Studio compiler is used
4080 dnl ===================================================================
4082 map_vs_year_to_version()
4084 # Return value: $vsversion
4096 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4100 vs_versions_to_check()
4102 # Args: $1 (optional) : versions to check, in the order of preference
4103 # Return value: $vsversions
4107 if test -n "$1"; then
4108 map_vs_year_to_version "$1"
4109 vsversions=$vsversion
4111 # Default version is 2019
4116 win_get_env_from_vsdevcmdbat()
4118 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4119 printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4120 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4121 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4122 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4124 if test "$build_os" = "wsl"; then
4125 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4127 chmod +x $WRAPPERBATCHFILEPATH
4128 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4130 rm -f $WRAPPERBATCHFILEPATH
4131 printf '%s' "$result"
4136 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4137 if test -n "$regvalue"; then
4138 PathFormat "$regvalue"
4139 UCRTSDKDIR=$formatted_path_unix
4140 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4141 UCRTVERSION=$regvalue
4143 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4147 if test -z "$UCRTSDKDIR"; then
4148 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4149 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4150 if test -f "$ide_env_file"; then
4151 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4152 UCRTSDKDIR=$formatted_path
4153 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4154 dnl Hack needed at least by tml:
4155 if test "$UCRTVERSION" = 10.0.15063.0 \
4156 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4157 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4159 UCRTVERSION=10.0.14393.0
4162 AC_MSG_ERROR([No UCRT found])
4170 # Args: $1 (optional) : The VS version year
4171 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4173 unset vctest vctoolset vcnumwithdot vcbuildnumber
4175 vs_versions_to_check "$1"
4176 if test "$build_os" = wsl; then
4177 vswhere="$PROGRAMFILESX86"
4178 if test -z "$vswhere"; then
4179 vswhere="c:\\Program Files (x86)"
4182 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4184 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4185 PathFormat "$vswhere"
4186 vswhere=$formatted_path_unix
4187 for ver in $vsversions; do
4188 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4189 if test -z "$vswhereoutput"; then
4190 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4192 # Fall back to all MS products (this includes VC++ Build Tools)
4193 if ! test -n "$vswhereoutput"; then
4194 AC_MSG_CHECKING([VC++ Build Tools and similar])
4195 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4197 if test -n "$vswhereoutput"; then
4198 PathFormat "$vswhereoutput"
4199 vctest=$formatted_path_unix
4204 if test -n "$vctest"; then
4206 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4207 vcnumwithdot=$vcnumwithdot.0
4209 case "$vcnumwithdot" in
4219 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4226 AC_MSG_CHECKING([$1 compiler])
4228 CL_EXE_PATH="$2/cl.exe"
4230 if test ! -f "$CL_EXE_PATH"; then
4231 if test "$1" = "multi-arch"; then
4232 AC_MSG_WARN([no compiler (cl.exe) in $2])
4235 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4239 dnl ===========================================================
4240 dnl Check for the corresponding mspdb*.dll
4241 dnl ===========================================================
4243 # MSVC 15.0 has libraries from 14.0?
4246 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4247 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4250 # The compiles has to find its shared libraries
4252 TEMP_PATH=`cygpath -d "$2"`
4253 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4255 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4256 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4261 AC_MSG_RESULT([$CL_EXE_PATH])
4267 if test "$_os" = "WINNT"; then
4268 AC_MSG_CHECKING([Visual C++])
4269 find_msvc "$with_visual_studio"
4270 if test -z "$vctest"; then
4271 if test -n "$with_visual_studio"; then
4272 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4274 AC_MSG_ERROR([no Visual Studio installation found])
4279 VC_PRODUCT_DIR="$vctest/VC"
4280 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4282 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4283 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4284 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4285 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4286 if test $? -ne 0; then
4292 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4293 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4294 test_cl_exe "build" "$MSVC_BUILD_PATH"
4297 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4298 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4299 test_cl_exe "host" "$MSVC_HOST_PATH"
4301 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4304 AC_MSG_CHECKING([for short pathname of VC product directory])
4305 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4306 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4311 AC_MSG_CHECKING([for UCRT location])
4313 # find_ucrt errors out if it doesn't find it
4314 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4315 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4316 ucrtincpath_formatted=$formatted_path
4317 # SOLARINC is used for external modules and must be set too.
4318 # And no, it's not sufficient to set SOLARINC only, as configure
4319 # itself doesn't honour it.
4320 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4321 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4322 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4323 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4325 AC_SUBST(UCRTSDKDIR)
4326 AC_SUBST(UCRTVERSION)
4328 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4329 # Find the proper version of MSBuild.exe to use based on the VS version
4330 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4331 if test -z "$regvalue" ; then
4332 if test "$WIN_BUILD_ARCH" != "x64"; then
4333 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4335 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4338 if test -d "$regvalue" ; then
4339 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4340 AC_MSG_RESULT([$regvalue])
4342 AC_MSG_ERROR([MSBuild.exe location not found])
4345 # Find the version of devenv.exe
4346 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4347 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4348 DEVENV_unix=$(cygpath -u "$DEVENV")
4349 if test ! -e "$DEVENV_unix"; then
4350 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4353 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4354 dnl needed when building CLR code:
4355 if test -z "$MSVC_CXX"; then
4356 # This gives us a posix path with 8.3 filename restrictions
4357 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4360 if test -z "$CC"; then
4362 CC_BASE=`first_arg_basename "$CC"`
4364 if test -z "$CXX"; then
4366 CXX_BASE=`first_arg_basename "$CXX"`
4369 if test -n "$CC"; then
4370 # Remove /cl.exe from CC case insensitive
4371 AC_MSG_NOTICE([found Visual C++ $vcyear])
4373 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4374 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4376 PathFormat "$COMPATH"
4377 COMPATH=`win_short_path_for_make "$formatted_path"`
4380 VCTOOLSET=$vctoolset
4382 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4383 # are always "better", we list them in reverse chronological order.
4385 case "$vcnumwithdot" in
4387 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4391 # The expectation is that --with-windows-sdk should not need to be used
4392 if test -n "$with_windows_sdk"; then
4393 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4394 *" "$with_windows_sdk" "*)
4395 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4398 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4403 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4408 AC_MSG_ERROR([Visual C++ not found after all, huh])
4411 # ERROR if VS version < 16.5
4412 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4414 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4415 // between Visual Studio versions and _MSC_VER:
4419 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4421 # WARN if VS version < 16.10
4422 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4423 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4427 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4429 if test $vs2019_recommended_version = yes; then
4430 AC_MSG_RESULT([yes])
4433 add_warning "You should have at least Visual Studio 2019 version 16.10 to avoid build problems. Otherwise, you may face problems with the build of some modules including dragonbox."
4436 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4437 # version of the Explorer extension (and maybe other small
4438 # bits, too) needed when installing a 32-bit LibreOffice on a
4439 # 64-bit OS. The 64-bit Explorer extension is a feature that
4440 # has been present since long in OOo. Don't confuse it with
4441 # building LibreOffice itself as 64-bit code.
4446 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4447 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4448 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4449 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4452 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4453 AC_MSG_RESULT([found])
4455 AC_MSG_RESULT([not found])
4456 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4458 elif test "$WIN_HOST_ARCH" = "x64"; then
4463 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4464 AC_SUBST(CXX_X64_BINARY)
4466 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4467 # needed to support TWAIN scan on both 32- and 64-bit systems
4469 case "$WIN_HOST_ARCH" in
4471 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4472 if test -n "$CXX_X86_BINARY"; then
4474 AC_MSG_RESULT([preset])
4475 elif test -n "$WIN_MULTI_ARCH"; then
4477 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4478 AC_MSG_RESULT([found])
4480 AC_MSG_RESULT([not found])
4481 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4486 CXX_X86_BINARY=$MSVC_CXX
4490 AC_SUBST(CXX_X86_BINARY)
4498 AC_MSG_CHECKING([whether the compiler is actually Clang])
4499 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4505 [AC_MSG_RESULT([yes])
4507 [AC_MSG_RESULT([no])])
4508 AC_SUBST(COM_IS_CLANG)
4511 if test "$COM_IS_CLANG" = TRUE; then
4512 AC_MSG_CHECKING([whether Clang is new enough])
4513 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4514 #if !defined __apple_build_version__
4518 [my_apple_clang=yes],[my_apple_clang=])
4519 if test "$my_apple_clang" = yes; then
4520 AC_MSG_RESULT([assumed yes (Apple Clang)])
4521 elif test "$_os" = Emscripten; then
4522 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4524 if test "$_os" = WINNT; then
4525 dnl In which case, assume clang-cl:
4530 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4531 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4532 CLANGVER=`echo $clang_version \
4533 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4534 if test "$CLANGVER" -ge 120000; then
4535 AC_MSG_RESULT([yes ($clang_version)])
4537 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4539 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4540 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4544 SHOWINCLUDES_PREFIX=
4545 if test "$_os" = WINNT; then
4546 dnl We need to guess the prefix of the -showIncludes output, it can be
4548 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4549 echo "#include <stdlib.h>" > conftest.c
4550 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4551 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4552 rm -f conftest.c conftest.obj
4553 if test -z "$SHOWINCLUDES_PREFIX"; then
4554 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4556 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4559 AC_SUBST(SHOWINCLUDES_PREFIX)
4562 # prefix C with ccache if needed
4564 if test "$CCACHE" != ""; then
4565 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4569 CFLAGS="$CFLAGS --ccache-skip -O2"
4570 # msvc does not fail on unknown options, check stdout
4571 if test "$COM" = MSC; then
4572 CFLAGS="$CFLAGS -nologo"
4574 save_ac_c_werror_flag=$ac_c_werror_flag
4575 ac_c_werror_flag=yes
4576 dnl an empty program will do, we're checking the compiler flags
4577 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4578 [use_ccache=yes], [use_ccache=no])
4580 ac_c_werror_flag=$save_ac_c_werror_flag
4581 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4582 AC_MSG_RESULT([yes])
4585 CC_BASE="ccache $CC_BASE"
4591 # ===================================================================
4592 # check various GCC options that Clang does not support now but maybe
4593 # will somewhen in the future, check them even for GCC, so that the
4595 # ===================================================================
4598 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4599 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4601 CFLAGS="$CFLAGS -Werror -ggdb2"
4602 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4604 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4605 AC_MSG_RESULT([yes])
4610 if test "$host_cpu" = "m68k"; then
4611 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4613 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4614 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4616 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4617 AC_MSG_RESULT([yes])
4623 AC_SUBST(HAVE_GCC_GGDB2)
4625 dnl ===================================================================
4626 dnl Test the gcc version
4627 dnl ===================================================================
4628 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4629 AC_MSG_CHECKING([the GCC version])
4630 _gcc_version=`$CC -dumpfullversion`
4631 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4632 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4633 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4635 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4637 if test "$gcc_full_version" -lt 120000; then
4638 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4641 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4642 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4643 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4644 # (which reports itself as GCC 4.2.1).
4647 AC_SUBST(GCC_VERSION)
4649 dnl Set the ENABLE_DBGUTIL variable
4650 dnl ===================================================================
4651 AC_MSG_CHECKING([whether to build with additional debug utilities])
4652 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4653 ENABLE_DBGUTIL="TRUE"
4654 # this is an extra var so it can have different default on different MSVC
4655 # versions (in case there are version specific problems with it)
4656 MSVC_USE_DEBUG_RUNTIME="TRUE"
4658 AC_MSG_RESULT([yes])
4659 # cppunit and graphite expose STL in public headers
4660 if test "$with_system_cppunit" = "yes"; then
4661 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4663 with_system_cppunit=no
4665 if test "$with_system_graphite" = "yes"; then
4666 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4668 with_system_graphite=no
4670 if test "$with_system_orcus" = "yes"; then
4671 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4673 with_system_orcus=no
4675 if test "$with_system_libcmis" = "yes"; then
4676 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4678 with_system_libcmis=no
4680 if test "$with_system_hunspell" = "yes"; then
4681 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4683 with_system_hunspell=no
4685 if test "$with_system_gpgmepp" = "yes"; then
4686 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4688 with_system_gpgmepp=no
4690 if test "$with_system_zxing" = "yes"; then
4691 AC_MSG_ERROR([--with-system-zxing conflicts with --enable-dbgutil])
4693 with_system_zxing=no
4695 if test "$with_system_poppler" = "yes"; then
4696 AC_MSG_ERROR([--with-system-poppler conflicts with --enable-dbgutil])
4698 with_system_poppler=no
4700 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4701 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4702 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4703 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4704 # of those two is using the system variant:
4705 if test "$with_system_libnumbertext" = "yes"; then
4706 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4708 with_system_libnumbertext=no
4710 if test "$with_system_libwps" = "yes"; then
4711 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4713 with_system_libwps=no
4717 MSVC_USE_DEBUG_RUNTIME=""
4720 AC_SUBST(ENABLE_DBGUTIL)
4721 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4723 dnl Set the ENABLE_DEBUG variable.
4724 dnl ===================================================================
4725 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4726 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4728 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4729 if test -z "$libo_fuzzed_enable_debug"; then
4730 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4732 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4737 AC_MSG_CHECKING([whether to do a debug build])
4738 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4740 if test -n "$ENABLE_DBGUTIL" ; then
4741 AC_MSG_RESULT([yes (dbgutil)])
4743 AC_MSG_RESULT([yes])
4749 AC_SUBST(ENABLE_DEBUG)
4751 dnl ===================================================================
4752 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4753 dnl This is done only after compiler checks (need to know if Clang is
4754 dnl used, for different defaults) and after checking if a debug build
4755 dnl is wanted (non-debug builds get the default linker if not explicitly
4756 dnl specified otherwise).
4757 dnl All checks for linker features/options should come after this.
4758 dnl ===================================================================
4761 use_ld=-fuse-ld=${1%%:*}
4763 if test "$use_ld_path" != "$1"; then
4764 if test "$COM_IS_CLANG" = TRUE; then
4765 if test "$CLANGVER" -ge 120000; then
4766 use_ld="${use_ld} --ld-path=${use_ld_path}"
4768 use_ld="-fuse-ld=${use_ld_path}"
4771 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4772 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4773 # pickup the alternative linker, when called by libtool for linking.
4774 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4775 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4778 use_ld_fail_if_error=$2
4780 AC_MSG_CHECKING([for $use_ld linker support])
4781 use_ld_ldflags_save="$LDFLAGS"
4782 LDFLAGS="$LDFLAGS $use_ld"
4783 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4786 printf ("hello world\n");
4787 ])], USE_LD=$use_ld, [])
4788 if test -n "$USE_LD"; then
4789 AC_MSG_RESULT( yes )
4792 if test -n "$use_ld_fail_if_error"; then
4798 if test -n "$use_ld_ok"; then
4799 dnl keep the value of LDFLAGS
4802 LDFLAGS="$use_ld_ldflags_save"
4806 if test "$enable_ld" != "no"; then
4807 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4808 if test -n "$enable_ld"; then
4809 check_use_ld "$enable_ld" fail_if_error
4810 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4811 dnl non-debug builds default to the default linker
4813 elif test -n "$COM_IS_CLANG"; then
4815 if test $? -ne 0; then
4817 if test $? -ne 0; then
4822 # For gcc first try gold, new versions also support lld/mold.
4824 if test $? -ne 0; then
4826 if test $? -ne 0; then
4831 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4833 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4834 if test -z "$ld_used"; then
4837 AC_MSG_CHECKING([for linker that is used])
4838 AC_MSG_RESULT([$ld_used])
4839 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4840 if echo "$ld_used" | grep -q "^GNU ld"; then
4841 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4842 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4846 if test "$enable_ld" = "yes"; then
4847 AC_MSG_ERROR([--enable-ld not supported])
4854 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4855 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4856 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4857 bsymbolic_functions_ldflags_save=$LDFLAGS
4858 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4859 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4862 printf ("hello world\n");
4863 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4864 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4865 AC_MSG_RESULT( found )
4867 AC_MSG_RESULT( not found )
4869 LDFLAGS=$bsymbolic_functions_ldflags_save
4871 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4874 if test "$GCC" = "yes"; then
4875 for flag in "--gc-sections" "-dead_strip"; do
4876 AC_MSG_CHECKING([for $flag linker support])
4877 ldflags_save=$LDFLAGS
4878 LDFLAGS="$LDFLAGS -Wl,$flag"
4879 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4882 printf ("hello world\n");
4884 LD_GC_SECTIONS="-Wl,$flag"
4885 AC_MSG_RESULT( found )
4887 AC_MSG_RESULT( not found )
4889 LDFLAGS=$ldflags_save
4890 if test -n "$LD_GC_SECTIONS"; then
4895 AC_SUBST(LD_GC_SECTIONS)
4897 HAVE_EXTERNAL_DWARF=
4898 if test "$enable_split_debug" != no; then
4900 if test -n "$ENABLE_LTO"; then
4901 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4902 elif test "$enable_split_debug" = yes; then
4904 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4905 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4908 if test -n "$use_split_debug"; then
4909 if test "$_os" = "Emscripten"; then
4910 TEST_CC_FLAG=-gseparate-dwarf
4912 TEST_CC_FLAG=-gsplit-dwarf
4914 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4916 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4917 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4919 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4920 AC_MSG_RESULT([yes])
4922 if test "$enable_split_debug" = yes; then
4929 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4930 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4931 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4934 AC_SUBST(HAVE_EXTERNAL_DWARF)
4936 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4937 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4939 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4940 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4942 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4943 AC_MSG_RESULT([yes])
4947 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4950 if test "$enable_gdb_index" != "no"; then
4951 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4952 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4953 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4955 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4957 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4958 if test "$have_ggnu_pubnames" != "TRUE"; then
4959 if test "$enable_gdb_index" = "yes"; then
4960 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4965 AC_MSG_RESULT( yes )
4966 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4967 ldflags_save=$LDFLAGS
4968 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4969 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4972 printf ("hello world\n");
4973 ])], ENABLE_GDB_INDEX=TRUE, [])
4974 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4975 AC_MSG_RESULT( yes )
4977 if test "$enable_gdb_index" = "yes"; then
4983 LDFLAGS=$ldflags_save
4987 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4988 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4989 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4992 AC_SUBST(ENABLE_GDB_INDEX)
4994 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4997 if test "$enable_sal_log" = yes; then
5000 AC_SUBST(ENABLE_SAL_LOG)
5002 dnl Check for enable symbols option
5003 dnl ===================================================================
5004 AC_MSG_CHECKING([whether to generate debug information])
5005 if test -z "$enable_symbols"; then
5006 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5012 if test "$enable_symbols" = yes; then
5013 ENABLE_SYMBOLS_FOR=all
5014 AC_MSG_RESULT([yes])
5015 elif test "$enable_symbols" = no; then
5019 # Selective debuginfo.
5020 ENABLE_SYMBOLS_FOR="$enable_symbols"
5021 AC_MSG_RESULT([for "$enable_symbols"])
5023 AC_SUBST(ENABLE_SYMBOLS_FOR)
5025 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5026 # Building on Android with full symbols: without enough memory the linker never finishes currently.
5027 AC_MSG_CHECKING([whether enough memory is available for linking])
5028 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5029 # Check for 15GB, as Linux reports a bit less than the physical memory size.
5030 if test -n "$mem_size" -a $mem_size -lt 15728640; then
5031 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5033 AC_MSG_RESULT([yes])
5038 ENABLE_OPTIMIZED_DEBUG=
5039 AC_MSG_CHECKING([whether to compile with optimization flags])
5040 if test -z "$enable_optimized"; then
5041 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5044 enable_optimized=yes
5047 if test "$enable_optimized" = yes; then
5048 ENABLE_OPTIMIZED=TRUE
5049 AC_MSG_RESULT([yes])
5050 elif test "$enable_optimized" = debug; then
5051 ENABLE_OPTIMIZED_DEBUG=TRUE
5052 AC_MSG_RESULT([yes (debug)])
5054 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5055 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5057 CFLAGS="$CFLAGS -Werror -Og"
5058 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5060 if test "$HAVE_GCC_OG" = "TRUE"; then
5061 AC_MSG_RESULT([yes])
5066 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5067 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5072 AC_SUBST(ENABLE_OPTIMIZED)
5073 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5076 # determine CPUNAME, OS, ...
5092 if test "$enable_ios_simulator" = "yes"; then
5097 PLATFORMID=macosx_aarch64
5101 if test "$enable_ios_simulator" = "yes"; then
5106 PLATFORMID=macosx_x86_64
5109 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5122 if test "$enable_ios_simulator" = "yes"; then
5123 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5127 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5132 PLATFORMID=ios_arm64
5145 PLATFORMID=dragonfly_x86
5150 PLATFORMID=dragonfly_x86_64
5153 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5167 PLATFORMID=freebsd_aarch64
5173 PLATFORMID=freebsd_x86
5178 PLATFORMID=freebsd_x86_64
5183 PLATFORMID=freebsd_powerpc64
5188 PLATFORMID=freebsd_powerpc
5191 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5207 PLATFORMID=haiku_x86
5212 PLATFORMID=haiku_x86_64
5215 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5231 PLATFORMID=kfreebsd_x86
5236 PLATFORMID=kfreebsd_x86_64
5239 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5244 linux-gnu*|linux-musl*)
5254 PLATFORMID=linux_aarch64
5256 EPM_FLAGS="-a arm64"
5261 PLATFORMID=linux_alpha
5267 PLATFORMID=linux_arm_eabi
5271 PLATFORMID=linux_arm_oabi
5279 PLATFORMID=linux_hppa
5284 PLATFORMID=linux_x86
5289 PLATFORMID=linux_ia64
5295 PLATFORMID=linux_mips_eb
5300 EPM_FLAGS="-a mips64"
5301 PLATFORMID=linux_mips64_eb
5306 EPM_FLAGS="-a mips64el"
5307 PLATFORMID=linux_mips64_el
5312 EPM_FLAGS="-a mipsel"
5313 PLATFORMID=linux_mips_el
5318 EPM_FLAGS="-a riscv64"
5319 PLATFORMID=linux_riscv64
5324 PLATFORMID=linux_m68k
5329 PLATFORMID=linux_powerpc
5334 PLATFORMID=linux_powerpc64
5338 RTL_ARCH=PowerPC_64_LE
5339 PLATFORMID=linux_powerpc64_le
5344 PLATFORMID=linux_sparc
5349 PLATFORMID=linux_sparc64
5354 PLATFORMID=linux_s390x
5359 PLATFORMID=linux_x86_64
5363 RTL_ARCH=LOONGARCH64
5364 PLATFORMID=linux_loongarch64
5367 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5383 PLATFORMID=android_arm_eabi
5388 PLATFORMID=android_aarch64
5393 PLATFORMID=android_x86
5398 PLATFORMID=android_x86_64
5401 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5416 PLATFORMID=netbsd_x86
5421 PLATFORMID=netbsd_powerpc
5426 PLATFORMID=netbsd_sparc
5431 PLATFORMID=netbsd_x86_64
5434 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5449 PLATFORMID=openbsd_x86
5454 PLATFORMID=openbsd_x86_64
5457 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5460 SOLARINC="$SOLARINC -I/usr/local/include"
5473 PLATFORMID=solaris_x86
5478 PLATFORMID=solaris_sparc
5483 PLATFORMID=solaris_sparc64
5486 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5489 SOLARINC="$SOLARINC -I/usr/local/include"
5502 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5507 PLATFORMID=linux_x86
5511 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5516 if test "$enable_gui" = "no"; then
5517 if test "$using_x11" != yes; then
5518 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5524 AC_DEFINE(HAVE_FEATURE_UI)
5526 AC_SUBST(DISABLE_GUI)
5528 if test "$with_x" = "no"; then
5532 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5533 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5536 if test "$using_x11" = yes; then
5537 if test "$USING_X11" = TRUE; then
5538 AC_DEFINE(USING_X11)
5541 if test "$DISABLE_DYNLOADING" = TRUE; then
5546 if test "$USING_X11" = TRUE; then
5547 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5551 WORKDIR="${BUILDDIR}/workdir"
5552 INSTDIR="${BUILDDIR}/instdir"
5553 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5554 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5562 AC_SUBST([INSTROOT])
5563 AC_SUBST([INSTROOTBASE])
5567 AC_SUBST(PLATFORMID)
5568 AC_SUBST(WINDOWS_X64)
5569 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5570 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5572 if test "$OS" = WNT -a "$COM" = MSC; then
5574 INTEL) CPPU_ENV=msci ;;
5575 X86_64) CPPU_ENV=mscx ;;
5576 AARCH64) CPPU_ENV=msca ;;
5578 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5586 dnl ===================================================================
5587 dnl Test which package format to use
5588 dnl ===================================================================
5589 AC_MSG_CHECKING([which package format to use])
5590 if test -n "$with_package_format" -a "$with_package_format" != no; then
5591 for i in $with_package_format; do
5593 bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5596 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5597 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5598 deb - Debian software distribution
5599 pkg - Solaris software distribution
5600 rpm - RedHat software distribution
5602 LibreOffice additionally supports:
5603 archive - .tar.gz or .zip
5605 installed - installation tree
5611 # fakeroot is needed to ensure correct file ownerships/permissions
5612 # inside deb packages and tar archives created on Linux and Solaris.
5613 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5614 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5615 if test "$FAKEROOT" = "no"; then
5617 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5620 PKGFORMAT="$with_package_format"
5621 AC_MSG_RESULT([$PKGFORMAT])
5624 AC_MSG_RESULT([none])
5628 dnl ===================================================================
5629 dnl handle help related options
5631 dnl If you change help related options, please update README.help
5632 dnl ===================================================================
5639 AC_MSG_CHECKING([which help to build])
5640 if test -n "$with_help" -a "$with_help" != "no"; then
5641 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5642 BUILD_TYPE="$BUILD_TYPE HELP"
5643 case "$with_help" in
5645 ENABLE_HTMLHELP=TRUE
5647 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5648 AC_MSG_RESULT([HTML (local)])
5651 ENABLE_HTMLHELP=TRUE
5653 AC_MSG_RESULT([HTML (online)])
5657 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5658 AC_MSG_RESULT([XML (local)])
5661 AC_MSG_ERROR([Unknown --with-help=$with_help])
5668 AC_MSG_CHECKING([if we need to build the help index tooling])
5669 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5670 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5672 AC_MSG_RESULT([yes])
5677 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5678 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5679 if test "$HELP_ONLINE" != TRUE; then
5680 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5682 case "$with_omindex" in
5684 HELP_OMINDEX_PAGE=TRUE
5685 AC_MSG_RESULT([SERVER])
5688 AC_MSG_RESULT([NOXAP])
5691 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5698 AC_MSG_CHECKING([whether to include the XML-help support])
5699 if test "$enable_xmlhelp" = yes; then
5700 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5702 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5703 AC_MSG_RESULT([yes])
5705 if test "$with_help" = yes; then
5706 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5711 dnl Test whether to integrate helppacks into the product's installer
5712 AC_MSG_CHECKING([for helppack integration])
5713 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5714 AC_MSG_RESULT([no integration])
5716 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5717 AC_MSG_RESULT([integration])
5720 AC_SUBST([ENABLE_HTMLHELP])
5721 AC_SUBST([HELP_OMINDEX_PAGE])
5722 AC_SUBST([HELP_ONLINE])
5723 # WITH_HELPPACKS is used only in configure
5725 dnl ===================================================================
5726 dnl Set up a different compiler to produce tools to run on the build
5727 dnl machine when doing cross-compilation
5728 dnl ===================================================================
5730 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5731 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5732 if test "$cross_compiling" = "yes"; then
5733 AC_MSG_CHECKING([for BUILD platform configuration])
5735 rm -rf CONF-FOR-BUILD config_build.mk
5736 mkdir CONF-FOR-BUILD
5737 # Here must be listed all files needed when running the configure script. In particular, also
5738 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5739 # keep them in the same order as there.
5740 (cd $SRC_ROOT && tar cf - \
5742 bin/get_config_variables \
5743 solenv/bin/getcompver.awk \
5744 solenv/inc/langlist.mk \
5747 config_host_lang.mk.in \
5749 bin/bffvalidator.sh.in \
5750 bin/odfvalidator.sh.in \
5751 bin/officeotron.sh.in \
5752 instsetoo_native/util/openoffice.lst.in \
5754 sysui/desktop/macosx/Info.plist.in \
5755 sysui/desktop/macosx/hardened_runtime.xcent.in \
5756 sysui/desktop/macosx/lo.xcent.in \
5757 .vscode/vs-code-template.code-workspace.in \
5758 solenv/lockfile/autoconf.h.in \
5760 | (cd CONF-FOR-BUILD && tar xf -)
5761 cp configure CONF-FOR-BUILD
5762 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5764 unset COM USING_X11 OS CPUNAME
5765 unset CC CXX SYSBASE CFLAGS
5766 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5767 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5768 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5769 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5770 if test -n "$CC_FOR_BUILD"; then
5771 export CC="$CC_FOR_BUILD"
5772 CC_BASE=`first_arg_basename "$CC"`
5774 if test -n "$CXX_FOR_BUILD"; then
5775 export CXX="$CXX_FOR_BUILD"
5776 CXX_BASE=`first_arg_basename "$CXX"`
5778 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5781 # Handle host configuration, which affects the cross-toolset too
5783 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5784 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5785 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5786 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5787 if test -n "$ENABLE_JAVA"; then
5790 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5791 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5794 if test -z "$with_jdk_home"; then
5795 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.])
5800 sub_conf_opts="$sub_conf_opts --without-java"
5802 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5803 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5804 test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5805 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5806 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5807 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5808 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5809 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5810 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5811 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5812 if test "$_os" = "Emscripten"; then
5813 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5814 if test "${with_main_module+set}" = set; then
5815 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5817 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5820 # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5821 # when cross-compiling for aarch64, overriding the defaults below
5822 test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5824 # Don't bother having configure look for stuff not needed for the build platform anyway
5825 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5826 sub_conf_defaults=" \
5827 --build="$build_alias" \
5828 --disable-cairo-canvas \
5830 --disable-customtarget-components \
5831 --disable-firebird-sdbc \
5833 --disable-gstreamer-1-0 \
5837 --disable-mariadb-sdbc \
5839 --disable-online-update \
5842 --disable-pdfimport \
5843 --disable-postgresql-sdbc \
5846 --enable-dynamic-loading \
5847 --enable-icecream="$enable_icecream" \
5853 # single quotes added for better readability in case of spaces
5854 echo " Running CONF-FOR-BUILD/configure" \
5855 $sub_conf_defaults \
5856 --with-parallelism="'$with_parallelism'" \
5857 --with-theme="'$with_theme'" \
5858 --with-vendor="'$with_vendor'" \
5860 $with_build_platform_configure_options \
5864 $sub_conf_defaults \
5865 --with-parallelism="$with_parallelism" \
5866 --with-theme="$with_theme" \
5867 "--with-vendor=$with_vendor" \
5869 $with_build_platform_configure_options \
5871 2>&1 | sed -e 's/^/ /'
5872 if test [${PIPESTATUS[0]}] -ne 0; then
5873 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5876 # filter permitted build targets
5877 PERMITTED_BUILD_TARGETS="
5917 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5918 # newlined lists, to use grep as a filter
5919 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5920 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5921 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5922 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5924 cp config_host.mk ../config_build.mk
5925 cp config_host_lang.mk ../config_build_lang.mk
5926 mv config.log ../config.Build.log
5927 mkdir -p ../config_build
5928 mv config_host/*.h ../config_build
5929 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5931 # all these will get a _FOR_BUILD postfix
5932 DIRECT_FOR_BUILD_SETTINGS="
5940 JDK_SECURITYMANAGER_DISALLOWED
5944 LIBO_URE_MISC_FOLDER
5950 # these overwrite host config with build config
5951 OVERWRITING_SETTINGS="
5966 # these need some special handling
5967 EXTRA_HANDLED_SETTINGS="
5974 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5978 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5979 echo "$line" >>build-config
5981 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5983 VV=`eval "echo $VV"`
5984 if test -n "$VV"; then
5985 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5986 echo "$line" >>build-config
5990 for V in $OVERWRITING_SETTINGS; do
5992 VV=`eval "echo $VV"`
5993 if test -n "$VV"; then
5994 line=${V}='${'${V}:-$VV'}'
5995 echo "$line" >>build-config
5999 for V in INSTDIR INSTROOT WORKDIR; do
6001 VV=`eval "echo $VV"`
6002 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6003 if test -n "$VV"; then
6004 line="${V}_FOR_BUILD='$VV'"
6005 echo "$line" >>build-config
6010 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6011 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])
6012 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6013 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6015 eval `cat CONF-FOR-BUILD/build-config`
6017 AC_MSG_RESULT([checking for BUILD platform configuration... done])
6019 rm -rf CONF-FOR-BUILD
6023 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6024 CXX_FOR_BUILD="$CXX"
6025 INSTDIR_FOR_BUILD="$INSTDIR"
6026 INSTROOT_FOR_BUILD="$INSTROOT"
6027 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6028 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6029 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6030 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6031 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6032 WORKDIR_FOR_BUILD="$WORKDIR"
6034 AC_SUBST(OS_FOR_BUILD)
6035 AC_SUBST(INSTDIR_FOR_BUILD)
6036 AC_SUBST(INSTROOT_FOR_BUILD)
6037 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6038 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6039 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6040 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6041 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6042 AC_SUBST(WORKDIR_FOR_BUILD)
6043 AC_SUBST(CC_FOR_BUILD)
6044 AC_SUBST(CXX_FOR_BUILD)
6045 AC_SUBST(CPPU_ENV_FOR_BUILD)
6047 dnl ===================================================================
6048 dnl Check for lockfile deps
6049 dnl ===================================================================
6050 if test -z "$CROSS_COMPILING"; then
6051 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6052 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6053 AC_MSG_CHECKING([which lockfile binary to use])
6054 case "$with_system_lockfile" in
6056 AC_MSG_RESULT([external])
6057 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6060 AC_MSG_RESULT([internal])
6063 if test -x "$with_system_lockfile"; then
6064 LOCKFILE="$with_system_lockfile"
6066 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6068 AC_MSG_RESULT([$with_system_lockfile])
6073 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6074 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6077 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6078 AC_CHECK_FUNCS([utime utimes])
6081 dnl ===================================================================
6082 dnl Check for syslog header
6083 dnl ===================================================================
6084 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6086 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6087 dnl ===================================================================
6088 AC_MSG_CHECKING([whether to turn warnings to errors])
6089 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6090 ENABLE_WERROR="TRUE"
6091 PYTHONWARNINGS="error"
6092 AC_MSG_RESULT([yes])
6094 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6095 ENABLE_WERROR="TRUE"
6096 PYTHONWARNINGS="error"
6097 AC_MSG_RESULT([yes])
6102 AC_SUBST(ENABLE_WERROR)
6103 AC_SUBST(PYTHONWARNINGS)
6105 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6106 dnl ===================================================================
6107 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6108 if test -z "$enable_assert_always_abort"; then
6109 if test "$ENABLE_DEBUG" = TRUE; then
6110 enable_assert_always_abort=yes
6112 enable_assert_always_abort=no
6115 if test "$enable_assert_always_abort" = "yes"; then
6116 ASSERT_ALWAYS_ABORT="TRUE"
6117 AC_MSG_RESULT([yes])
6119 ASSERT_ALWAYS_ABORT="FALSE"
6122 AC_SUBST(ASSERT_ALWAYS_ABORT)
6124 # Determine whether to use ooenv for the instdir installation
6125 # ===================================================================
6126 if test $_os != "WINNT" -a $_os != "Darwin"; then
6127 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6128 if test -z "$enable_ooenv"; then
6129 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6135 if test "$enable_ooenv" = "no"; then
6139 AC_MSG_RESULT([yes])
6142 AC_SUBST(ENABLE_OOENV)
6144 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6145 if test "$enable_qt5" = "no"; then
6146 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6152 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6153 if test "$enable_qt6" = "no"; then
6154 AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6161 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6162 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6163 AC_MSG_RESULT([yes])
6165 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6169 AC_SUBST(ENABLE_PAGEIN)
6171 dnl ===================================================================
6172 dnl check for cups support
6173 dnl ===================================================================
6175 AC_MSG_CHECKING([whether to enable CUPS support])
6176 if test "$test_cups" = yes -a "$enable_cups" != no; then
6178 AC_MSG_RESULT([yes])
6180 AC_MSG_CHECKING([whether cups support is present])
6181 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6182 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6183 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6184 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6190 AC_SUBST(ENABLE_CUPS)
6192 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6194 dnl whether to find & fetch external tarballs?
6195 dnl ===================================================================
6196 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6197 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6198 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6200 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6203 if test -z "$TARFILE_LOCATION"; then
6204 if test -d "$SRC_ROOT/src" ; then
6205 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6206 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6208 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6210 AbsolutePath "$TARFILE_LOCATION"
6211 PathFormat "${absolute_path}"
6212 TARFILE_LOCATION="${formatted_path_unix}"
6214 AC_SUBST(TARFILE_LOCATION)
6216 AC_MSG_CHECKING([whether we want to fetch tarballs])
6217 if test "$enable_fetch_external" != "no"; then
6218 if test "$with_all_tarballs" = "yes"; then
6219 AC_MSG_RESULT([yes, all of them])
6220 DO_FETCH_TARBALLS="ALL"
6222 AC_MSG_RESULT([yes, if we use them])
6223 DO_FETCH_TARBALLS="TRUE"
6229 AC_SUBST(DO_FETCH_TARBALLS)
6231 dnl Test whether to include MySpell dictionaries
6232 dnl ===================================================================
6233 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6234 if test "$with_myspell_dicts" = "yes"; then
6235 AC_MSG_RESULT([yes])
6236 WITH_MYSPELL_DICTS=TRUE
6237 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6238 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6243 AC_SUBST(WITH_MYSPELL_DICTS)
6245 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6246 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6247 if test "$with_system_dicts" = yes; then
6248 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6250 with_system_dicts=no
6253 AC_MSG_CHECKING([whether to use dicts from external paths])
6254 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6255 AC_MSG_RESULT([yes])
6257 AC_MSG_CHECKING([for spelling dictionary directory])
6258 if test -n "$with_external_dict_dir"; then
6259 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6261 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6262 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6263 DICT_SYSTEM_DIR=file:///usr/share/myspell
6266 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6267 AC_MSG_CHECKING([for hyphenation patterns directory])
6268 if test -n "$with_external_hyph_dir"; then
6269 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6271 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6273 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6274 AC_MSG_CHECKING([for thesaurus directory])
6275 if test -n "$with_external_thes_dir"; then
6276 THES_SYSTEM_DIR=file://$with_external_thes_dir
6278 THES_SYSTEM_DIR=file:///usr/share/mythes
6280 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6285 AC_SUBST(SYSTEM_DICTS)
6286 AC_SUBST(DICT_SYSTEM_DIR)
6287 AC_SUBST(HYPH_SYSTEM_DIR)
6288 AC_SUBST(THES_SYSTEM_DIR)
6290 dnl ===================================================================
6291 dnl Precompiled headers.
6293 AC_MSG_CHECKING([whether to enable pch feature])
6294 if test -z "$enable_pch"; then
6295 if test "$_os" = "WINNT"; then
6296 # Enabled by default on Windows.
6298 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6299 if test -z "$enable_ccache" -a "$SCCACHE"; then
6306 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6307 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6309 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6310 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6312 if test "$enable_pch" = "system"; then
6314 AC_MSG_RESULT([yes (system headers)])
6315 elif test "$enable_pch" = "base"; then
6317 AC_MSG_RESULT([yes (system and base headers)])
6318 elif test "$enable_pch" = "normal"; then
6320 AC_MSG_RESULT([yes (normal)])
6321 elif test "$enable_pch" = "full"; then
6323 AC_MSG_RESULT([yes (full)])
6324 elif test "$enable_pch" = "yes"; then
6325 # Pick a suitable default.
6326 if test "$GCC" = "yes"; then
6327 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6328 # while making the PCHs larger and rebuilds more likely.
6330 AC_MSG_RESULT([yes (system and base headers)])
6332 # With MSVC the highest level makes a significant difference,
6333 # and it was the default when there used to be no PCH levels.
6335 AC_MSG_RESULT([yes (full)])
6337 elif test "$enable_pch" = "no"; then
6340 AC_MSG_ERROR([Unknown value for --enable-pch])
6342 AC_SUBST(ENABLE_PCH)
6343 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6344 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6345 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6346 if test "$CCACHE_BIN" != "not found"; then
6347 AC_MSG_CHECKING([ccache version])
6348 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6349 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6350 AC_MSG_RESULT([$CCACHE_VERSION])
6351 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6352 if test "$CCACHE_NUMVER" -gt "030701"; then
6353 AC_MSG_RESULT([yes])
6355 AC_MSG_RESULT([no (not newer than 3.7.1)])
6361 PCH_INSTANTIATE_TEMPLATES=
6362 if test -n "$ENABLE_PCH"; then
6363 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6365 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6366 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6368 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6374 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6376 BUILDING_PCH_WITH_OBJ=
6377 if test -n "$ENABLE_PCH"; then
6378 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6380 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6381 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6383 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6389 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6394 if test "$COM" = MSC; then
6395 fpch_prefix="-Xclang "
6397 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6398 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6400 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6401 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6402 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6404 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6405 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6406 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6408 if test -n "$PCH_CODEGEN"; then
6414 AC_SUBST(PCH_CODEGEN)
6415 AC_SUBST(PCH_NO_CODEGEN)
6417 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6418 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6420 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6421 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6423 if test -n "$PCH_DEBUGINFO"; then
6429 AC_SUBST(PCH_DEBUGINFO)
6433 AC_MSG_CHECKING([the GNU Make version])
6434 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6435 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6436 if test "$_make_longver" -ge "040000"; then
6437 AC_MSG_RESULT([$GNUMAKE $_make_version])
6439 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6442 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6444 if test "$_make_ver_check" = ""; then
6448 HAVE_LD_HASH_STYLE=FALSE
6449 WITH_LINKER_HASH_STYLE=
6450 AC_MSG_CHECKING([for --hash-style gcc linker support])
6451 if test "$GCC" = "yes"; then
6452 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6453 hash_styles="gnu sysv"
6454 elif test "$with_linker_hash_style" = "no"; then
6457 hash_styles="$with_linker_hash_style"
6460 for hash_style in $hash_styles; do
6461 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6462 hash_style_ldflags_save=$LDFLAGS
6463 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6465 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6472 HAVE_LD_HASH_STYLE=TRUE
6473 WITH_LINKER_HASH_STYLE=$hash_style
6475 [HAVE_LD_HASH_STYLE=FALSE],
6476 [HAVE_LD_HASH_STYLE=FALSE])
6477 LDFLAGS=$hash_style_ldflags_save
6480 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6481 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6485 LDFLAGS=$hash_style_ldflags_save
6489 AC_SUBST(HAVE_LD_HASH_STYLE)
6490 AC_SUBST(WITH_LINKER_HASH_STYLE)
6492 dnl ===================================================================
6493 dnl Check whether there's a Perl version available.
6494 dnl ===================================================================
6495 if test -z "$with_perl_home"; then
6496 AC_PATH_PROG(PERL, perl)
6498 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6499 _perl_path="$with_perl_home/bin/perl"
6500 if test -x "$_perl_path"; then
6503 AC_MSG_ERROR([$_perl_path not found])
6507 dnl ===================================================================
6508 dnl Testing for Perl version 5 or greater.
6509 dnl $] is the Perl version variable, it is returned as an integer
6510 dnl ===================================================================
6511 if test "$PERL"; then
6512 AC_MSG_CHECKING([the Perl version])
6513 ${PERL} -e "exit($]);"
6515 if test "$_perl_version" -lt 5; then
6516 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6518 AC_MSG_RESULT([Perl $_perl_version])
6520 AC_MSG_ERROR([Perl not found, install Perl 5])
6523 dnl ===================================================================
6524 dnl Testing for required Perl modules
6525 dnl ===================================================================
6527 AC_MSG_CHECKING([for required Perl modules])
6528 perl_use_string="use Cwd ; use Digest::MD5"
6529 if test "$_os" = "WINNT"; then
6530 if test -n "$PKGFORMAT"; then
6531 for i in $PKGFORMAT; do
6534 # for getting fonts versions to use in MSI
6535 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6541 if test "$with_system_hsqldb" = "yes"; then
6542 perl_use_string="$perl_use_string ; use Archive::Zip"
6544 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6545 # OpenSSL needs that to build
6546 perl_use_string="$perl_use_string ; use FindBin"
6548 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6549 AC_MSG_RESULT([all modules found])
6551 AC_MSG_RESULT([failed to find some modules])
6552 # Find out which modules are missing.
6553 for i in $perl_use_string; do
6554 if test "$i" != "use" -a "$i" != ";"; then
6555 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6556 missing_perl_modules="$missing_perl_modules $i"
6561 The missing Perl modules are: $missing_perl_modules
6562 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6565 dnl ===================================================================
6566 dnl Check for pkg-config
6567 dnl ===================================================================
6568 if test "$_os" != "WINNT"; then
6571 AC_SUBST(PKG_CONFIG)
6572 AC_SUBST(PKG_CONFIG_PATH)
6573 AC_SUBST(PKG_CONFIG_LIBDIR)
6575 if test "$_os" != "WINNT"; then
6577 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6578 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6579 # explicitly. Or put /path/to/compiler in PATH yourself.
6582 if test "$COM_IS_CLANG" = "TRUE"; then
6585 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6586 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6587 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6588 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6589 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6590 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6599 dnl ===================================================================
6600 dnl pkg-config checks on macOS
6601 dnl ===================================================================
6603 if test $_os = Darwin; then
6604 AC_MSG_CHECKING([for bogus pkg-config])
6605 if test -n "$PKG_CONFIG"; then
6606 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6607 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6609 if test "$enable_bogus_pkg_config" = "yes"; then
6610 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6612 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.])
6616 AC_MSG_RESULT([no, good])
6622 # Return value: $csctest
6626 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6627 if test -n "$regvalue"; then
6635 # Return value: $altest
6639 # We need this check to detect 4.6.1 or above.
6640 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6641 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6642 PathFormat "$regvalue"
6643 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6649 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6650 for x in $reglist; do
6651 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6652 PathFormat "$regvalue"
6653 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6664 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6665 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6666 if test -n "$regvalue"; then
6671 AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6674 find_winsdk_version()
6676 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6677 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6679 unset winsdktest winsdkbinsubdir winsdklibsubdir
6683 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6684 if test -n "$regvalue"; then
6685 winsdktest=$regvalue
6686 winsdklibsubdir=win8
6691 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6692 if test -n "$regvalue"; then
6693 winsdktest=$regvalue
6694 winsdklibsubdir=winv6.3
6699 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6700 if test -n "$regvalue"; then
6701 winsdktest=$regvalue
6702 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6703 if test -n "$regvalue"; then
6704 winsdkbinsubdir="$regvalue".0
6705 winsdklibsubdir=$winsdkbinsubdir
6706 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6707 local tmppath_unix=$(cygpath -u "$tmppath")
6708 # test exist the SDK path
6709 if test -d "$tmppath_unix"; then
6710 # when path is convertible to a short path then path is okay
6711 cygpath -d "$tmppath" >/dev/null 2>&1
6712 if test $? -ne 0; then
6713 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6716 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6727 # Return value: From find_winsdk_version
6731 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6732 find_winsdk_version $ver
6733 if test -n "$winsdktest"; then
6741 # Return value: $msmdir
6744 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6745 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6748 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6753 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6754 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6755 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6756 if test -e "$my_msm_dir${my_msm_file}"; then
6763 if test -n "$msmdir"; then
6764 msmdir=`cygpath -m "$msmdir"`
6765 AC_MSG_RESULT([$msmdir])
6767 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6768 AC_MSG_FAILURE([not found])
6770 AC_MSG_WARN([not found (check config.log)])
6771 add_warning "MSM ${my_msm_file} not found"
6776 find_msvc_x64_dlls()
6778 # Return value: $msvcdllpath, $msvcdlls
6780 AC_MSG_CHECKING([for MSVC x64 DLL path])
6782 dnl Order crtver in increasing order. Then check the directories returned by
6783 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6784 dnl the result will be the highest CRT version found in the highest directory.
6786 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6789 for crtver in 141 142 143; do
6790 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6791 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6792 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6793 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6799 AC_MSG_RESULT([$msvcdllpath])
6800 AC_MSG_CHECKING([for MSVC x64 DLLs])
6801 msvcdlls="msvcp140.dll vcruntime140.dll"
6802 for dll in $msvcdlls; do
6803 if ! test -f "$msvcdllpath/$dll"; then
6804 AC_MSG_FAILURE([missing $dll])
6807 AC_MSG_RESULT([found all ($msvcdlls)])
6810 dnl =========================================
6811 dnl Check for the Windows SDK.
6812 dnl =========================================
6813 if test "$_os" = "WINNT"; then
6814 AC_MSG_CHECKING([for Windows SDK])
6815 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6817 WINDOWS_SDK_HOME=$winsdktest
6819 # normalize if found
6820 if test -n "$WINDOWS_SDK_HOME"; then
6821 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6822 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6825 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6828 if test -n "$WINDOWS_SDK_HOME"; then
6829 # Remove a possible trailing backslash
6830 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6832 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6833 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6834 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6835 have_windows_sdk_headers=yes
6836 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6837 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6838 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6839 have_windows_sdk_headers=yes
6840 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6841 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6842 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6843 have_windows_sdk_headers=yes
6845 have_windows_sdk_headers=no
6848 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6849 have_windows_sdk_libs=yes
6850 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6851 have_windows_sdk_libs=yes
6853 have_windows_sdk_libs=no
6856 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6857 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6858 the Windows SDK are installed.])
6862 if test -z "$WINDOWS_SDK_HOME"; then
6863 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6864 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6865 WINDOWS_SDK_VERSION=80
6866 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6867 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6868 WINDOWS_SDK_VERSION=81
6869 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6870 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6871 WINDOWS_SDK_VERSION=10
6872 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6874 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6876 PathFormat "$WINDOWS_SDK_HOME"
6877 WINDOWS_SDK_HOME="$formatted_path"
6878 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6879 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6880 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6881 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6882 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6883 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6884 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6888 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6889 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6890 dnl but not in v8.0), so allow this to be overridden with a
6891 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6892 dnl and configuration error if no WiLangId.vbs is found would arguably be
6893 dnl better, but I do not know under which conditions exactly it is needed by
6895 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6896 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6897 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6898 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6899 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6900 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6902 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6903 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6904 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6906 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6907 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6908 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6911 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6912 if test -n "$with_package_format" -a "$with_package_format" != no; then
6913 for i in "$with_package_format"; do
6914 if test "$i" = "msi"; then
6915 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6916 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6923 AC_SUBST(WINDOWS_SDK_HOME)
6924 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6925 AC_SUBST(WINDOWS_SDK_VERSION)
6926 AC_SUBST(WINDOWS_SDK_WILANGID)
6928 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6929 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6930 dnl dir, it also determines that dir's path w/o an arch segment if any,
6931 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6932 AC_MSG_CHECKING([for midl.exe])
6935 PathFormat "$winsdktest"
6936 winsdktest_unix="$formatted_path_unix"
6938 if test -n "$winsdkbinsubdir" \
6939 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6941 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6942 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6943 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6944 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6945 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6946 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6947 MIDL_PATH=$winsdktest/Bin
6948 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6950 PathFormat "$MIDL_PATH"
6951 if test ! -f "$formatted_path_unix/midl.exe"; then
6952 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6954 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6957 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6958 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6960 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6961 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6962 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6963 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6964 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6965 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6966 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6967 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6968 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6969 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6970 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6971 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6973 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6977 AC_MSG_CHECKING([for csc.exe])
6979 PathFormat "$csctest"
6980 csctest_unix="$formatted_path_unix"
6981 if test -f "$csctest_unix/csc.exe"; then
6984 if test ! -f "$csctest_unix/csc.exe"; then
6985 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6987 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6990 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6993 AC_MSG_CHECKING([for al.exe])
6994 if test -n "$winsdkbinsubdir" \
6995 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6997 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6998 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6999 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7000 elif test -f "$winsdktest_unix/Bin/al.exe"; then
7001 AL_PATH="$winsdktest/Bin"
7004 if test -z "$AL_PATH"; then
7006 PathFormat "$altest"
7007 altest_unix="$formatted_path_unix"
7008 if test -f "$altest_unix/bin/al.exe"; then
7009 AL_PATH="$altest/bin"
7010 elif test -f "$altest_unix/al.exe"; then
7014 PathFormat "$AL_PATH"
7015 if test ! -f "$formatted_path_unix/al.exe"; then
7016 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7018 AC_MSG_RESULT([$AL_PATH/al.exe])
7021 AL_PATH=`win_short_path_for_make "$AL_PATH"`
7023 dnl Check mscoree.lib / .NET Framework dir
7024 AC_MSG_CHECKING(.NET Framework)
7026 PathFormat "$frametest"
7027 frametest="$formatted_path_unix"
7028 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7029 DOTNET_FRAMEWORK_HOME="$frametest"
7031 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7032 DOTNET_FRAMEWORK_HOME="$winsdktest"
7035 PathFormat "$DOTNET_FRAMEWORK_HOME"
7036 if test ! -f "$formatted_path_unix/lib/mscoree.lib" -a ! -f "$formatted_path_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$formatted_path_unix/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7037 AC_MSG_ERROR([mscoree.lib not found])
7039 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7041 PathFormat "$MIDL_PATH"
7042 MIDL_PATH="$formatted_path"
7044 PathFormat "$AL_PATH"
7045 AL_PATH="$formatted_path"
7047 PathFormat "$DOTNET_FRAMEWORK_HOME"
7048 DOTNET_FRAMEWORK_HOME="$formatted_path"
7050 PathFormat "$CSC_PATH"
7051 CSC_PATH="$formatted_path"
7054 dnl ===================================================================
7055 dnl Testing for C++ compiler and version...
7056 dnl ===================================================================
7058 if test "$_os" != "WINNT"; then
7059 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7060 save_CXXFLAGS=$CXXFLAGS
7062 CXXFLAGS=$save_CXXFLAGS
7063 if test -z "$CXX_BASE"; then
7064 CXX_BASE=`first_arg_basename "$CXX"`
7068 dnl check for GNU C++ compiler version
7069 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7070 AC_MSG_CHECKING([the GNU C++ compiler version])
7072 _gpp_version=`$CXX -dumpversion`
7073 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7075 if test "$_gpp_majmin" -lt "700"; then
7076 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7078 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7081 dnl see https://issuetracker.google.com/issues/36962819
7085 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7086 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7087 #include <bits/c++config.h>]],[[
7088 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7089 && !defined(_GLIBCXX__PTHREADS) \
7090 && !defined(_GLIBCXX_HAS_GTHREADS)
7093 ]])],[AC_MSG_RESULT([yes])
7094 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7096 if test $glibcxx_threads = yes; then
7097 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7100 AC_SUBST(BOOST_CXXFLAGS)
7103 # prefx CXX with ccache if needed
7105 if test "$CCACHE" != ""; then
7106 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7108 save_CXXFLAGS=$CXXFLAGS
7109 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7110 # msvc does not fail on unknown options, check stdout
7111 if test "$COM" = MSC; then
7112 CXXFLAGS="$CXXFLAGS -nologo"
7114 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7115 ac_cxx_werror_flag=yes
7116 dnl an empty program will do, we're checking the compiler flags
7117 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7118 [use_ccache=yes], [use_ccache=no])
7119 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7120 AC_MSG_RESULT([yes])
7123 CXX_BASE="ccache $CXX_BASE"
7126 CXXFLAGS=$save_CXXFLAGS
7127 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7131 dnl ===================================================================
7132 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7133 dnl ===================================================================
7135 if test "$_os" != "WINNT"; then
7138 dnl Check whether there's a C pre-processor.
7143 dnl ===================================================================
7144 dnl Find integral type sizes and alignments
7145 dnl ===================================================================
7147 if test "$_os" != "WINNT"; then
7149 AC_CHECK_SIZEOF(long)
7150 AC_CHECK_SIZEOF(short)
7151 AC_CHECK_SIZEOF(int)
7152 AC_CHECK_SIZEOF(long long)
7153 AC_CHECK_SIZEOF(double)
7154 AC_CHECK_SIZEOF(void*)
7155 AC_CHECK_SIZEOF(size_t)
7157 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7158 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7159 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7160 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7161 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7162 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7164 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7165 m4_pattern_allow([AC_CHECK_ALIGNOF])
7166 m4_ifdef([AC_CHECK_ALIGNOF],
7168 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7169 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7170 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7171 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7174 case "$_os-$host_cpu" in
7176 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7177 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7178 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7179 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7182 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7183 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7184 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7185 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7188 if test -z "$ac_cv_alignof_short" -o \
7189 -z "$ac_cv_alignof_int" -o \
7190 -z "$ac_cv_alignof_long" -o \
7191 -z "$ac_cv_alignof_double"; then
7192 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.])
7198 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7199 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7200 if test $ac_cv_sizeof_long -eq 8; then
7201 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7202 elif test $ac_cv_sizeof_double -eq 8; then
7203 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7205 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7208 dnl Check for large file support
7210 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7211 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7213 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7214 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7218 SAL_TYPES_SIZEOFSHORT=2
7219 SAL_TYPES_SIZEOFINT=4
7220 SAL_TYPES_SIZEOFLONG=4
7221 SAL_TYPES_SIZEOFLONGLONG=8
7222 if test $WIN_HOST_BITS -eq 32; then
7223 SAL_TYPES_SIZEOFPOINTER=4
7226 SAL_TYPES_SIZEOFPOINTER=8
7229 SAL_TYPES_ALIGNMENT2=2
7230 SAL_TYPES_ALIGNMENT4=4
7231 SAL_TYPES_ALIGNMENT8=8
7234 AC_SUBST(LFS_CFLAGS)
7235 AC_SUBST(SIZEOF_SIZE_T)
7237 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7238 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7239 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7240 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7241 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7242 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7243 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7244 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7246 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7247 AC_MSG_CHECKING([whether jumbo sheets are supported])
7248 if test "$_os" != "WINNT"; then
7249 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7250 AC_MSG_RESULT([yes])
7251 ENABLE_JUMBO_SHEETS=TRUE
7252 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7257 if test $WIN_HOST_BITS -gt 32; then
7258 # 64bit windows is special-cased for tools::Long because long is 32bit
7259 AC_MSG_RESULT([yes])
7260 ENABLE_JUMBO_SHEETS=TRUE
7261 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7266 AC_SUBST(ENABLE_JUMBO_SHEETS)
7268 dnl ===================================================================
7269 dnl Check whether to enable runtime optimizations
7270 dnl ===================================================================
7271 ENABLE_RUNTIME_OPTIMIZATIONS=
7272 AC_MSG_CHECKING([whether to enable runtime optimizations])
7273 if test -z "$enable_runtime_optimizations"; then
7277 enable_runtime_optimizations=no
7283 if test "$enable_runtime_optimizations" != no; then
7284 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7285 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7286 AC_MSG_RESULT([yes])
7290 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7292 dnl ===================================================================
7293 dnl Check if valgrind headers are available
7294 dnl ===================================================================
7296 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7297 prev_cppflags=$CPPFLAGS
7298 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7299 # or where does it come from?
7300 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7301 AC_CHECK_HEADER([valgrind/valgrind.h],
7302 [ENABLE_VALGRIND=TRUE])
7303 CPPFLAGS=$prev_cppflags
7305 AC_SUBST([ENABLE_VALGRIND])
7306 if test -z "$ENABLE_VALGRIND"; then
7307 if test "$with_valgrind" = yes; then
7308 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7312 AC_SUBST([VALGRIND_CFLAGS])
7315 dnl ===================================================================
7316 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7317 dnl ===================================================================
7319 # We need at least the sys/sdt.h include header.
7320 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7321 if test "$SDT_H_FOUND" = "TRUE"; then
7322 # Found sys/sdt.h header, now make sure the c++ compiler works.
7323 # Old g++ versions had problems with probes in constructors/destructors.
7324 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7326 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7327 #include <sys/sdt.h>
7335 ProbeClass(int& v, const char *n) : ref(v), name(n)
7337 DTRACE_PROBE2(_test_, cons, name, ref);
7340 void method(int min)
7342 DTRACE_PROBE3(_test_, meth, name, ref, min);
7348 DTRACE_PROBE2(_test_, dest, name, ref);
7353 DTRACE_PROBE1(_test_, call, i);
7354 ProbeClass inst = ProbeClass(i, "call");
7356 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7357 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7360 AC_CONFIG_HEADERS([config_host/config_probes.h])
7362 dnl ===================================================================
7364 dnl ===================================================================
7365 HAVE_GCC_STACK_CLASH_PROTECTION=
7366 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7367 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7369 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7371 [AC_LANG_PROGRAM(, [[return 0;]])],
7372 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7373 [AC_MSG_RESULT([no])])
7376 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7378 CFLAGS="$CFLAGS -Werror -mno-avx"
7379 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7381 if test "$HAVE_GCC_AVX" = "TRUE"; then
7382 AC_MSG_RESULT([yes])
7387 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7388 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7390 if (__sync_add_and_fetch(&v, 1) != 1 ||
7391 __sync_sub_and_fetch(&v, 1) != 0)
7393 __sync_synchronize();
7394 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7398 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7399 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7400 AC_MSG_RESULT([yes])
7401 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7406 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7408 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7411 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7413 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7414 AC_MSG_RESULT([yes])
7415 ], [AC_MSG_RESULT([no])])
7418 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7420 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7423 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7425 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7426 AC_MSG_RESULT([yes])
7427 ], [AC_MSG_RESULT([no])])
7430 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7432 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7434 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7436 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7437 AC_MSG_RESULT([yes])
7438 ], [AC_MSG_RESULT([no])])
7441 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7446 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7448 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7449 AC_MSG_RESULT([yes])
7450 ], [AC_MSG_RESULT([no])])
7453 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7455 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7458 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7460 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7461 AC_MSG_RESULT([yes])
7462 ], [AC_MSG_RESULT([no])])
7465 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7467 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7469 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7471 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7472 AC_MSG_RESULT([yes])
7473 ], [AC_MSG_RESULT([no])])
7476 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7478 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7480 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7482 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7483 AC_MSG_RESULT([yes])
7484 ], [AC_MSG_RESULT([no])])
7487 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7489 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7491 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7493 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7494 AC_MSG_RESULT([yes])
7495 ], [AC_MSG_RESULT([no])])
7498 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7500 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7503 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7505 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7506 AC_MSG_RESULT([yes])
7507 ], [AC_MSG_RESULT([no])])
7510 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7512 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7515 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7517 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7518 AC_MSG_RESULT([yes])
7519 ], [AC_MSG_RESULT([no])])
7523 AC_SUBST(HAVE_GCC_AVX)
7524 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7525 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7527 dnl ===================================================================
7528 dnl Identify the C++ library
7529 dnl ===================================================================
7531 AC_MSG_CHECKING([what the C++ library is])
7535 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7541 [CPP_LIBRARY=GLIBCXX
7542 cpp_library_name="GNU libstdc++"
7545 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7547 #ifndef _LIBCPP_VERSION
7552 cpp_library_name="LLVM libc++"
7553 AC_DEFINE([HAVE_LIBCPP])
7556 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7563 cpp_library_name="Microsoft"
7565 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7566 AC_MSG_RESULT([$cpp_library_name])
7568 AC_SUBST([HAVE_LIBSTDCPP])
7569 AC_SUBST([HAVE_LIBCPP])
7571 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7573 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7574 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7575 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7576 # although there will be backwards compatibility).
7577 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7578 # and there would be undefined references to debug functions.
7579 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7580 # So check if debug mode can be used and disable or downgrade it to assertions
7582 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7585 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7586 #define _LIBCPP_DEBUG 0 // only assertions
7594 ]])], [libcpp_debug_links=1])
7595 if test -n "$libcpp_debug_links"; then
7596 # we can use at least assertions, check if debug mode works
7597 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7598 #define _LIBCPP_DEBUG 1 // debug mode
7601 int foo(const std::vector<int>& v) { return *v.begin(); }
7606 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7607 return (foo(v) + s.size()) != 0 ? 0 : 1;
7611 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7613 [AC_MSG_RESULT(no, using only assertions)
7614 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7622 AC_SUBST([LIBCPP_DEBUG])
7624 dnl ===================================================================
7626 dnl ===================================================================
7627 AC_PATH_PROG(GPERF, gperf)
7628 if test -z "$GPERF"; then
7629 AC_MSG_ERROR([gperf not found but needed. Install it.])
7631 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7632 GPERF=`cygpath -m $GPERF`
7634 AC_MSG_CHECKING([whether gperf is new enough])
7635 my_gperf_ver1=$($GPERF --version | head -n 1)
7636 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7637 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7638 if test "$my_gperf_ver3" -ge 301; then
7639 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7641 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7645 dnl ===================================================================
7646 dnl Check for system libcmis
7647 dnl ===================================================================
7648 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7650 dnl ===================================================================
7652 dnl ===================================================================
7654 if test -z "${CXXFLAGS_CXX11+x}"; then
7655 AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7656 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7657 if test "$with_latest_c__" = yes; then
7658 CXXFLAGS_CXX11=-std:c++latest
7660 CXXFLAGS_CXX11=-std:c++20
7662 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7663 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7664 my_flags='-std=c++20 -std=c++2a'
7665 if test "$with_latest_c__" = yes; then
7666 my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7668 for flag in $my_flags; do
7669 if test "$COM" = MSC; then
7670 flag="-Xclang $flag"
7672 save_CXXFLAGS=$CXXFLAGS
7673 CXXFLAGS="$CXXFLAGS $flag -Werror"
7675 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7676 #include <algorithm>
7677 #include <functional>
7680 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7681 std::sort(v.begin(), v.end(), fn);
7683 ]])],[CXXFLAGS_CXX11=$flag])
7685 CXXFLAGS=$save_CXXFLAGS
7686 if test -n "$CXXFLAGS_CXX11"; then
7691 if test -n "$CXXFLAGS_CXX11"; then
7692 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7697 AC_SUBST(CXXFLAGS_CXX11)
7699 if test "$GCC" = "yes"; then
7700 save_CXXFLAGS=$CXXFLAGS
7701 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7703 CXXFLAGS=$save_CXXFLAGS
7704 AC_SUBST(ATOMIC_LIB)
7707 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7708 save_CXXFLAGS=$CXXFLAGS
7709 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7712 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7715 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7731 a thinga[]={{0,0}, {1,1}};
7732 b thingb[]={{0,0}, {1,1}};
7733 size_t i = sizeof(sal_n_array_size(thinga));
7734 size_t j = sizeof(sal_n_array_size(thingb));
7735 return !(i != 0 && j != 0);
7737 ], [ AC_MSG_RESULT(yes) ],
7738 [ AC_MSG_ERROR(no)])
7740 CXXFLAGS=$save_CXXFLAGS
7742 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7743 if test "$GCC" = yes; then
7744 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7746 save_CXXFLAGS=$CXXFLAGS
7747 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7748 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7749 CXXFLAGS=$save_CXXFLAGS
7751 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7752 AC_MSG_RESULT([yes])
7757 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7759 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7761 save_CXXFLAGS=$CXXFLAGS
7762 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7763 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7764 #include <algorithm>
7765 #include <initializer_list>
7767 template<typename T> class S {
7771 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7773 constinit S<int> s{3, 2, 1};
7775 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7776 AC_MSG_RESULT([yes])
7777 ], [AC_MSG_RESULT([no])])
7778 CXXFLAGS=$save_CXXFLAGS
7781 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7783 save_CXXFLAGS=$CXXFLAGS
7784 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7785 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7786 struct S1 { S1(S1 &&); };
7788 S1 f(S2 s) { return s; }
7790 AC_DEFINE([HAVE_P1155R3],[1])
7791 AC_MSG_RESULT([yes])
7792 ], [AC_MSG_RESULT([no])])
7793 CXXFLAGS=$save_CXXFLAGS
7796 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7797 HAVE_CXX20_ATOMIC_REF=
7799 save_CXXFLAGS=$CXXFLAGS
7800 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7801 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7804 std::atomic_ref<int> y(x);
7806 HAVE_CXX20_ATOMIC_REF=TRUE
7807 AC_MSG_RESULT([yes])
7808 ], [AC_MSG_RESULT([no])])
7809 CXXFLAGS=$save_CXXFLAGS
7811 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7813 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7814 dnl which is included in -Wextra anyway):
7815 HAVE_WDEPRECATED_COPY_DTOR=
7816 if test "$GCC" = yes; then
7817 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7819 save_CXXFLAGS=$CXXFLAGS
7820 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7821 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7822 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7823 AC_MSG_RESULT([yes])
7824 ], [AC_MSG_RESULT([no])])
7825 CXXFLAGS=$save_CXXFLAGS
7828 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7830 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7831 dnl uninitialized warning for code like
7834 dnl boost::optional<OString> * g(bool b) {
7835 dnl boost::optional<OString> o;
7837 dnl return new boost::optional<OString>(o);
7840 dnl (as is e.g. present, in a slightly more elaborate form, in
7841 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7842 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7843 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7844 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7845 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7847 save_CXXFLAGS=$CXXFLAGS
7848 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7849 if test "$ENABLE_OPTIMIZED" = TRUE; then
7850 CXXFLAGS="$CXXFLAGS -O2"
7852 CXXFLAGS="$CXXFLAGS -O0"
7854 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7863 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7864 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7870 char stg[sizeof (S1)];
7878 ]])], [AC_MSG_RESULT([no])], [
7879 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7880 AC_MSG_RESULT([yes])
7882 CXXFLAGS=$save_CXXFLAGS
7885 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7887 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7888 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7889 dnl hits us e.g. with GCC 10 and --enable-optimized at
7891 dnl In file included from include/rtl/string.hxx:49,
7892 dnl from include/rtl/ustring.hxx:43,
7893 dnl from include/osl/file.hxx:35,
7894 dnl from include/codemaker/global.hxx:28,
7895 dnl from include/codemaker/options.hxx:23,
7896 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7897 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7898 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,
7899 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,
7900 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,
7901 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7902 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7903 dnl 78 | memcpy( buffer, data, length );
7904 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7905 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7906 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7907 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7909 save_CXXFLAGS=$CXXFLAGS
7910 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7911 if test "$ENABLE_OPTIMIZED" = TRUE; then
7912 CXXFLAGS="$CXXFLAGS -O2"
7914 CXXFLAGS="$CXXFLAGS -O0"
7916 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7918 void fill(char const * begin, char const * end, char c);
7924 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7925 __builtin_strncpy(c.username, "root", sizeof(c.username));
7927 ]])], [AC_MSG_RESULT([no])], [
7928 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7929 AC_MSG_RESULT([yes])
7931 CXXFLAGS=$save_CXXFLAGS
7934 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7936 HAVE_DLLEXPORTINLINES=
7937 if test "$_os" = "WINNT"; then
7938 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7940 save_CXXFLAGS=$CXXFLAGS
7941 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7942 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7943 HAVE_DLLEXPORTINLINES=TRUE
7944 AC_MSG_RESULT([yes])
7945 ], [AC_MSG_RESULT([no])])
7946 CXXFLAGS=$save_CXXFLAGS
7949 AC_SUBST([HAVE_DLLEXPORTINLINES])
7951 dnl ===================================================================
7952 dnl CPU Intrinsics support - SSE, AVX
7953 dnl ===================================================================
7955 CXXFLAGS_INTRINSICS_SSE2=
7956 CXXFLAGS_INTRINSICS_SSSE3=
7957 CXXFLAGS_INTRINSICS_SSE41=
7958 CXXFLAGS_INTRINSICS_SSE42=
7959 CXXFLAGS_INTRINSICS_AVX=
7960 CXXFLAGS_INTRINSICS_AVX2=
7961 CXXFLAGS_INTRINSICS_AVX512=
7962 CXXFLAGS_INTRINSICS_AVX512F=
7963 CXXFLAGS_INTRINSICS_F16C=
7964 CXXFLAGS_INTRINSICS_FMA=
7966 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7967 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7974 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7975 flag_avx512f=-mavx512f
7979 # With MSVC using -arch is in fact not necessary for being able
7980 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7981 # even if compiled with -arch:AVX, the -arch option really only affects
7982 # instructions generated for C/C++ code.
7983 # So use the matching same (or lower) -arch options, but only in order
7984 # to generate the best matching instructions for the C++ code surrounding
7986 # SSE2 is the default for x86/x64, so no need to specify the option.
7988 # No specific options for these, use the next lower.
7989 flag_ssse3="$flag_sse2"
7990 flag_sse41="$flag_sse2"
7991 flag_sse42="$flag_sse2"
7993 flag_avx2=-arch:AVX2
7994 flag_avx512=-arch:AVX512
7995 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7996 flag_avx512f=-arch:AVX2
7997 # No MSVC options for these.
7998 flag_f16c="$flag_sse2"
7999 flag_fma="$flag_sse2"
8002 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8004 save_CXXFLAGS=$CXXFLAGS
8005 CXXFLAGS="$CXXFLAGS $flag_sse2"
8006 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8007 #include <emmintrin.h>
8009 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8010 c = _mm_xor_si128 (a, b);
8014 [can_compile_sse2=yes],
8015 [can_compile_sse2=no])
8017 CXXFLAGS=$save_CXXFLAGS
8018 AC_MSG_RESULT([${can_compile_sse2}])
8019 if test "${can_compile_sse2}" = "yes" ; then
8020 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8023 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8025 save_CXXFLAGS=$CXXFLAGS
8026 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8027 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8028 #include <tmmintrin.h>
8030 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8031 c = _mm_maddubs_epi16 (a, b);
8035 [can_compile_ssse3=yes],
8036 [can_compile_ssse3=no])
8038 CXXFLAGS=$save_CXXFLAGS
8039 AC_MSG_RESULT([${can_compile_ssse3}])
8040 if test "${can_compile_ssse3}" = "yes" ; then
8041 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8044 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8046 save_CXXFLAGS=$CXXFLAGS
8047 CXXFLAGS="$CXXFLAGS $flag_sse41"
8048 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8049 #include <smmintrin.h>
8051 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8052 c = _mm_cmpeq_epi64 (a, b);
8056 [can_compile_sse41=yes],
8057 [can_compile_sse41=no])
8059 CXXFLAGS=$save_CXXFLAGS
8060 AC_MSG_RESULT([${can_compile_sse41}])
8061 if test "${can_compile_sse41}" = "yes" ; then
8062 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8065 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8067 save_CXXFLAGS=$CXXFLAGS
8068 CXXFLAGS="$CXXFLAGS $flag_sse42"
8069 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8070 #include <nmmintrin.h>
8072 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8073 c = _mm_cmpgt_epi64 (a, b);
8077 [can_compile_sse42=yes],
8078 [can_compile_sse42=no])
8080 CXXFLAGS=$save_CXXFLAGS
8081 AC_MSG_RESULT([${can_compile_sse42}])
8082 if test "${can_compile_sse42}" = "yes" ; then
8083 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8086 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8088 save_CXXFLAGS=$CXXFLAGS
8089 CXXFLAGS="$CXXFLAGS $flag_avx"
8090 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8091 #include <immintrin.h>
8093 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8094 c = _mm256_xor_ps(a, b);
8098 [can_compile_avx=yes],
8099 [can_compile_avx=no])
8101 CXXFLAGS=$save_CXXFLAGS
8102 AC_MSG_RESULT([${can_compile_avx}])
8103 if test "${can_compile_avx}" = "yes" ; then
8104 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8107 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8109 save_CXXFLAGS=$CXXFLAGS
8110 CXXFLAGS="$CXXFLAGS $flag_avx2"
8111 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8112 #include <immintrin.h>
8114 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8115 c = _mm256_maddubs_epi16(a, b);
8119 [can_compile_avx2=yes],
8120 [can_compile_avx2=no])
8122 CXXFLAGS=$save_CXXFLAGS
8123 AC_MSG_RESULT([${can_compile_avx2}])
8124 if test "${can_compile_avx2}" = "yes" ; then
8125 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8128 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8130 save_CXXFLAGS=$CXXFLAGS
8131 CXXFLAGS="$CXXFLAGS $flag_avx512"
8132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8133 #include <immintrin.h>
8135 __m512i a = _mm512_loadu_si512(0);
8136 __m512d v1 = _mm512_load_pd(0);
8137 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8138 __m512d v2 = _mm512_abs_pd(v1);
8142 [can_compile_avx512=yes],
8143 [can_compile_avx512=no])
8145 CXXFLAGS=$save_CXXFLAGS
8146 AC_MSG_RESULT([${can_compile_avx512}])
8147 if test "${can_compile_avx512}" = "yes" ; then
8148 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8149 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8152 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8154 save_CXXFLAGS=$CXXFLAGS
8155 CXXFLAGS="$CXXFLAGS $flag_f16c"
8156 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8157 #include <immintrin.h>
8159 __m128i a = _mm_set1_epi32 (0);
8161 c = _mm_cvtph_ps(a);
8165 [can_compile_f16c=yes],
8166 [can_compile_f16c=no])
8168 CXXFLAGS=$save_CXXFLAGS
8169 AC_MSG_RESULT([${can_compile_f16c}])
8170 if test "${can_compile_f16c}" = "yes" ; then
8171 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8174 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8176 save_CXXFLAGS=$CXXFLAGS
8177 CXXFLAGS="$CXXFLAGS $flag_fma"
8178 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8179 #include <immintrin.h>
8181 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8182 d = _mm256_fmadd_ps(a, b, c);
8186 [can_compile_fma=yes],
8187 [can_compile_fma=no])
8189 CXXFLAGS=$save_CXXFLAGS
8190 AC_MSG_RESULT([${can_compile_fma}])
8191 if test "${can_compile_fma}" = "yes" ; then
8192 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8195 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8196 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8197 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8198 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8199 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8200 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8201 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8202 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8203 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8204 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8206 dnl ===================================================================
8207 dnl system stl sanity tests
8208 dnl ===================================================================
8209 if test "$_os" != "WINNT"; then
8213 save_CPPFLAGS="$CPPFLAGS"
8214 if test -n "$MACOSX_SDK_PATH"; then
8215 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8218 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8220 if test "$CPP_LIBRARY" = GLIBCXX; then
8221 dnl gcc#19664, gcc#22482, rhbz#162935
8222 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8223 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8224 AC_MSG_RESULT([$stlvisok])
8225 if test "$stlvisok" = "no"; then
8226 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8230 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8231 # when we don't make any dynamic libraries?
8232 if test "$DISABLE_DYNLOADING" = ""; then
8233 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8234 cat > conftestlib1.cc <<_ACEOF
8235 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8236 struct S2: S1<int> { virtual ~S2(); };
8239 cat > conftestlib2.cc <<_ACEOF
8240 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8241 struct S2: S1<int> { virtual ~S2(); };
8242 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8244 gccvisinlineshiddenok=yes
8245 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8246 gccvisinlineshiddenok=no
8248 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8249 dnl known to not work with -z defs (unsetting which makes the test
8251 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8252 if test "$COM_IS_CLANG" = TRUE; then
8253 for i in $CXX $CXXFLAGS; do
8256 my_linkflagsnoundefs=
8262 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8263 gccvisinlineshiddenok=no
8268 AC_MSG_RESULT([$gccvisinlineshiddenok])
8269 if test "$gccvisinlineshiddenok" = "no"; then
8270 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8274 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8275 cat >visibility.cxx <<_ACEOF
8276 #pragma GCC visibility push(hidden)
8277 struct __attribute__ ((visibility ("default"))) TestStruct {
8280 __attribute__ ((visibility ("default"))) void TestFunc() {
8284 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8289 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8292 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8304 rm -f visibility.s visibility.cxx
8306 AC_MSG_RESULT([$gccvisbroken])
8307 if test "$gccvisbroken" = "yes"; then
8308 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8311 CPPFLAGS="$save_CPPFLAGS"
8313 AC_MSG_CHECKING([if CET endbranch is recognized])
8314 cat > endbr.s <<_ACEOF
8317 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8318 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8319 AC_MSG_RESULT([yes])
8320 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8324 rm -f endbr.s endbr.o
8325 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8330 dnl ===================================================================
8332 dnl ===================================================================
8334 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8335 if test "$GCC" = "yes"; then
8336 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8338 save_CXXFLAGS=$CXXFLAGS
8339 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8340 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8341 CXXFLAGS=$save_CXXFLAGS
8343 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8344 AC_MSG_RESULT([yes])
8349 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8351 dnl ===================================================================
8352 dnl Compiler plugins
8353 dnl ===================================================================
8356 # currently only Clang
8358 if test "$COM_IS_CLANG" != "TRUE"; then
8359 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8360 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8361 enable_compiler_plugins=no
8365 COMPILER_PLUGINS_COM_IS_CLANG=
8366 if test "$COM_IS_CLANG" = "TRUE"; then
8367 if test -n "$enable_compiler_plugins"; then
8368 compiler_plugins="$enable_compiler_plugins"
8369 elif test -n "$ENABLE_DBGUTIL"; then
8370 compiler_plugins=test
8374 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8375 if test "$CLANGVER" -lt 120001; then
8376 if test "$compiler_plugins" = yes; then
8378 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8384 if test "$compiler_plugins" != "no"; then
8385 dnl The prefix where Clang resides, override to where Clang resides if
8386 dnl using a source build:
8387 if test -z "$CLANGDIR"; then
8388 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8390 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8391 if test -z "$COMPILER_PLUGINS_CXX"; then
8392 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8394 clangbindir=$CLANGDIR/bin
8395 if test "$build_os" = "cygwin"; then
8396 clangbindir=$(cygpath -u "$clangbindir")
8398 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8399 if test -n "$LLVM_CONFIG"; then
8400 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8401 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8402 if test -z "$CLANGLIBDIR"; then
8403 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8405 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8406 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8407 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8408 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8409 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8410 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8413 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8414 clangobjdir=$($LLVM_CONFIG --obj-root)
8415 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8416 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8419 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8423 save_CPPFLAGS=$CPPFLAGS
8424 save_CXXFLAGS=$CXXFLAGS
8425 save_LDFLAGS=$LDFLAGS
8427 CXX=$COMPILER_PLUGINS_CXX
8428 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8429 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8430 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8431 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8432 [COMPILER_PLUGINS=TRUE],
8434 if test "$compiler_plugins" = "yes"; then
8435 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8437 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8438 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8441 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8442 dnl comment in compilerplugins/Makefile-clang.mk:
8443 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8445 AC_MSG_CHECKING([for clang libraries to use])
8446 if test -z "$CLANGTOOLLIBS"; then
8447 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8449 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8450 [[ clang::FullSourceLoc().dump(); ]])
8451 ],[CLANGTOOLLIBS="$LIBS"],[])
8453 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8454 dnl list of individual -lclang* (but note that that list can become outdated over time,
8455 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8456 dnl needs to include -lclangSupport now"):
8457 if test -z "$CLANGTOOLLIBS"; then
8458 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8459 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8461 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8462 [[ clang::FullSourceLoc().dump(); ]])
8463 ],[CLANGTOOLLIBS="$LIBS"],[])
8465 AC_MSG_RESULT([$CLANGTOOLLIBS])
8466 if test -z "$CLANGTOOLLIBS"; then
8467 if test "$compiler_plugins" = "yes"; then
8468 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8470 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8471 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8475 if test -n "$COMPILER_PLUGINS"; then
8476 if test -z "$CLANGSYSINCLUDE"; then
8477 if test -n "$LLVM_CONFIG"; then
8478 # Path to the clang system headers (no idea if there's a better way to get it).
8479 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8486 CPPFLAGS=$save_CPPFLAGS
8487 CXXFLAGS=$save_CXXFLAGS
8488 LDFLAGS=$save_LDFLAGS
8492 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8499 [AC_MSG_RESULT([yes])
8500 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8501 [AC_MSG_RESULT([no])])
8502 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8505 if test "$enable_compiler_plugins" = "yes"; then
8506 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8509 COMPILER_PLUGINS_ANALYZER_PCH=
8510 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8511 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8513 AC_SUBST(COMPILER_PLUGINS)
8514 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8515 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8516 AC_SUBST(COMPILER_PLUGINS_CXX)
8517 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8518 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8519 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8520 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8522 AC_SUBST(CLANGLIBDIR)
8523 AC_SUBST(CLANGTOOLLIBS)
8524 AC_SUBST(CLANGSYSINCLUDE)
8526 # Plugin to help linker.
8527 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8528 # This makes --enable-lto build with clang work.
8531 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8532 AC_SUBST(HAVE_POSIX_FALLOCATE)
8534 JITC_PROCESSOR_TYPE=""
8535 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8536 # IBMs JDK needs this...
8537 JITC_PROCESSOR_TYPE=6
8538 export JITC_PROCESSOR_TYPE
8540 AC_SUBST([JITC_PROCESSOR_TYPE])
8542 # Misc Windows Stuff
8543 AC_ARG_WITH(ucrt-dir,
8544 AS_HELP_STRING([--with-ucrt-dir],
8545 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8546 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8547 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8548 Windows6.1-KB2999226-x64.msu
8549 Windows6.1-KB2999226-x86.msu
8550 Windows8.1-KB2999226-x64.msu
8551 Windows8.1-KB2999226-x86.msu
8552 Windows8-RT-KB2999226-x64.msu
8553 Windows8-RT-KB2999226-x86.msu
8554 A zip archive including those files is available from Microsoft site:
8555 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8558 UCRT_REDISTDIR="$with_ucrt_dir"
8559 if test $_os = "WINNT"; then
8561 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8562 MSVC_DLLS="$msvcdlls"
8563 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8565 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8567 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8570 for i in $PKGFORMAT; do
8571 if test "$i" = msi; then
8572 find_msms "$with_redist"
8573 if test -n "$msmdir"; then
8574 MSM_PATH=`win_short_path_for_make "$msmdir"`
8575 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8581 if test "$UCRT_REDISTDIR" = "no"; then
8582 dnl explicitly disabled
8585 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8586 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8587 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8588 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8589 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8590 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8592 if test -n "$PKGFORMAT"; then
8593 for i in $PKGFORMAT; do
8596 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8597 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8606 AC_SUBST(UCRT_REDISTDIR)
8607 AC_SUBST(MSVC_DLL_PATH)
8612 dnl ===================================================================
8614 dnl ===================================================================
8615 if test "$ENABLE_JAVA" != ""; then
8617 # Windows-specific tests
8618 if test "$build_os" = "cygwin"; then
8619 if test -z "$with_jdk_home"; then
8620 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8621 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8622 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8623 if test -n "$regvalue"; then
8625 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8626 with_jdk_home=$regvalue
8628 howfound="found automatically"
8630 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8631 howfound="you passed"
8634 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8635 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 17])
8639 # 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.
8640 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8641 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8642 with_jdk_home=`/usr/libexec/java_home`
8645 JAVA_HOME=; export JAVA_HOME
8646 if test -z "$with_jdk_home"; then
8647 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8649 _java_path="$with_jdk_home/bin/$with_java"
8650 dnl Check if there is a Java interpreter at all.
8651 if test -x "$_java_path"; then
8652 JAVAINTERPRETER=$_java_path
8654 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8658 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8659 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8660 dnl loaded by java to run JunitTests:
8661 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8662 shortjdkhome=`cygpath -d "$with_jdk_home"`
8663 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
8664 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8665 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8666 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
8667 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8668 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8671 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8672 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8674 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8675 elif test "$cross_compiling" != "yes"; then
8677 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8678 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8679 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8680 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8683 *) # assumption: everything else 32-bit
8684 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8685 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8686 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8693 dnl ===================================================================
8695 dnl ===================================================================
8697 # Whether all the complexity here actually is needed any more or not, no idea.
8699 JDK_SECURITYMANAGER_DISALLOWED=
8700 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8702 AC_MSG_CHECKING([the installed JDK])
8703 if test -n "$JAVAINTERPRETER"; then
8704 dnl java -version sends output to stderr!
8705 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8706 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8707 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8708 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8709 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8710 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8711 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8712 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8716 dnl Sun JDK specific tests
8717 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8718 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8720 if test "$_jdk_ver" -lt 170000; then
8721 AC_MSG_ERROR([JDK is too old, you need at least 17 ($_jdk_ver < 170000)])
8723 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8724 dnl completely removed in some Java version > 18 (see
8725 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8726 if test "$_jdk_ver" -ge 180000; then
8727 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8730 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8731 if test "$_os" = "WINNT"; then
8732 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8734 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8736 # set to limit VM usage for JunitTests
8738 # set to limit VM usage for javac
8739 JAVACFLAGS=-J-Xmx128M
8742 AC_MSG_ERROR([Java not found. You need at least JDK 17])
8745 if test -z "$ENABLE_JAVA"; then
8749 elif test "$cross_compiling" = "yes"; then
8750 # Just assume compatibility of build and host JDK
8752 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8756 dnl ===================================================================
8757 dnl Checks for javac
8758 dnl ===================================================================
8759 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8760 javacompiler="javac"
8761 : ${JAVA_SOURCE_VER=8}
8762 : ${JAVA_TARGET_VER=8}
8763 if test -z "$with_jdk_home"; then
8764 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8766 _javac_path="$with_jdk_home/bin/$javacompiler"
8767 dnl Check if there is a Java compiler at all.
8768 if test -x "$_javac_path"; then
8769 JAVACOMPILER=$_javac_path
8772 if test -z "$JAVACOMPILER"; then
8773 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8775 if test "$build_os" = "cygwin"; then
8776 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8777 JAVACOMPILER="${JAVACOMPILER}.exe"
8779 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8783 dnl ===================================================================
8784 dnl Checks for javadoc
8785 dnl ===================================================================
8786 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8787 if test -z "$with_jdk_home"; then
8788 AC_PATH_PROG(JAVADOC, javadoc)
8790 _javadoc_path="$with_jdk_home/bin/javadoc"
8791 dnl Check if there is a javadoc at all.
8792 if test -x "$_javadoc_path"; then
8793 JAVADOC=$_javadoc_path
8795 AC_PATH_PROG(JAVADOC, javadoc)
8798 if test -z "$JAVADOC"; then
8799 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8801 if test "$build_os" = "cygwin"; then
8802 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8803 JAVADOC="${JAVADOC}.exe"
8805 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8808 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8809 JAVADOCISGJDOC="yes"
8813 AC_SUBST(JAVADOCISGJDOC)
8815 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8816 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8817 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8818 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8819 # try to recover first by looking whether we have an alternative
8820 # system as in Debian or newer SuSEs where following /usr/bin/javac
8821 # over /etc/alternatives/javac leads to the right bindir where we
8822 # just need to strip a bit away to get a valid JAVA_HOME
8823 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8824 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8825 # maybe only one level of symlink (e.g. on Mac)
8826 JAVA_HOME=$(readlink $JAVACOMPILER)
8827 if test "$(dirname $JAVA_HOME)" = "."; then
8828 # we've got no path to trim back
8833 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8834 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8835 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8836 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8838 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8839 if test "$JAVA_HOME" != "/usr"; then
8840 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8841 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8842 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8843 dnl Tiger already returns a JDK path...
8844 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8846 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8847 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8848 dnl that checks which version to run
8849 if test -f "$JAVA_HOME"; then
8850 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8855 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8857 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8858 if test -z "$JAVA_HOME"; then
8859 if test "x$with_jdk_home" = "x"; then
8860 cat > findhome.java <<_ACEOF
8861 [import java.io.File;
8865 public static void main(String args[])
8867 String jrelocation = System.getProperty("java.home");
8868 File jre = new File(jrelocation);
8869 System.out.println(jre.getParent());
8873 AC_MSG_CHECKING([if javac works])
8874 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8875 AC_TRY_EVAL(javac_cmd)
8876 if test $? = 0 -a -f ./findhome.class; then
8877 AC_MSG_RESULT([javac works])
8879 echo "configure: javac test failed" >&5
8880 cat findhome.java >&5
8881 AC_MSG_ERROR([javac does not work - java projects will not build!])
8883 AC_MSG_CHECKING([if gij knows its java.home])
8884 JAVA_HOME=`$JAVAINTERPRETER findhome`
8885 if test $? = 0 -a "$JAVA_HOME" != ""; then
8886 AC_MSG_RESULT([$JAVA_HOME])
8888 echo "configure: java test failed" >&5
8889 cat findhome.java >&5
8890 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8892 # clean-up after ourselves
8893 rm -f ./findhome.java ./findhome.class
8895 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8899 # now check if $JAVA_HOME is really valid
8900 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8901 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8902 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8903 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8904 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8905 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8906 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8907 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8910 PathFormat "$JAVA_HOME"
8911 JAVA_HOME="$formatted_path"
8914 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8917 AC_MSG_CHECKING([for JAWT lib])
8918 if test "$_os" = WINNT; then
8919 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8924 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8925 JAVA_ARCH=$my_java_arch
8940 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8941 JAVA_ARCH=$my_java_arch
8944 my_java_arch=sparcv9
8950 my_java_arch=$host_cpu
8953 # This is where JDK9 puts the library
8954 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8955 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8957 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8959 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8961 AC_MSG_RESULT([$JAWTLIB])
8965 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8969 JAVAINC="-I$JAVA_HOME/include/win32"
8970 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8974 if test -d "$JAVA_HOME/include/darwin"; then
8975 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8977 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8982 JAVAINC="-I$JAVA_HOME/include"
8983 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8987 JAVAINC="-I$JAVA_HOME/include"
8988 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8989 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8990 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8991 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8995 JAVAINC="-I$JAVA_HOME/include"
8996 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8997 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9001 JAVAINC="-I$JAVA_HOME/include"
9002 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9003 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9007 JAVAINC="-I$JAVA_HOME/include"
9008 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9009 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9013 JAVAINC="-I$JAVA_HOME/include"
9014 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9015 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9019 JAVAINC="-I$JAVA_HOME/include"
9020 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9021 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9025 SOLARINC="$SOLARINC $JAVAINC"
9027 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9028 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9029 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9031 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9034 AC_SUBST(JAVACFLAGS)
9035 AC_SUBST(JAVACOMPILER)
9036 AC_SUBST(JAVAINTERPRETER)
9037 AC_SUBST(JAVAIFLAGS)
9038 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9040 AC_SUBST(JAVA_HOME_FOR_BUILD)
9042 AC_SUBST(JDK_FOR_BUILD)
9043 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9044 AC_SUBST(JAVA_SOURCE_VER)
9045 AC_SUBST(JAVA_TARGET_VER)
9048 dnl ===================================================================
9049 dnl Export file validation
9050 dnl ===================================================================
9051 AC_MSG_CHECKING([whether to enable export file validation])
9052 if test "$with_export_validation" != "no"; then
9053 if test -z "$ENABLE_JAVA"; then
9054 if test "$with_export_validation" = "yes"; then
9055 AC_MSG_ERROR([requested, but Java is disabled])
9057 AC_MSG_RESULT([no, as Java is disabled])
9059 elif ! test -d "${SRC_ROOT}/schema"; then
9060 if test "$with_export_validation" = "yes"; then
9061 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9063 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9066 AC_MSG_RESULT([yes])
9067 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9069 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9070 if test -z "$ODFVALIDATOR"; then
9071 # remember to download the ODF toolkit with validator later
9072 AC_MSG_NOTICE([no odfvalidator found, will download it])
9073 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9074 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9076 # and fetch name of odfvalidator jar name from download.lst
9077 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9078 AC_SUBST(ODFVALIDATOR_JAR)
9080 if test -z "$ODFVALIDATOR_JAR"; then
9081 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9084 if test "$build_os" = "cygwin"; then
9085 # In case of Cygwin it will be executed from Windows,
9086 # so we need to run bash and absolute path to validator
9087 # so instead of "odfvalidator" it will be
9088 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9089 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9091 ODFVALIDATOR="sh $ODFVALIDATOR"
9093 AC_SUBST(ODFVALIDATOR)
9096 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9097 if test -z "$OFFICEOTRON"; then
9098 # remember to download the officeotron with validator later
9099 AC_MSG_NOTICE([no officeotron found, will download it])
9100 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9101 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9103 # and fetch name of officeotron jar name from download.lst
9104 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9105 AC_SUBST(OFFICEOTRON_JAR)
9107 if test -z "$OFFICEOTRON_JAR"; then
9108 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9111 # check version of existing officeotron
9112 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9113 if test 0"$OFFICEOTRON_VER" -lt 704; then
9114 AC_MSG_ERROR([officeotron too old])
9117 if test "$build_os" = "cygwin"; then
9118 # In case of Cygwin it will be executed from Windows,
9119 # so we need to run bash and absolute path to validator
9120 # so instead of "odfvalidator" it will be
9121 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9122 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9124 OFFICEOTRON="sh $OFFICEOTRON"
9127 AC_SUBST(OFFICEOTRON)
9132 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9133 if test "$with_bffvalidator" != "no"; then
9134 AC_DEFINE(HAVE_BFFVALIDATOR)
9136 if test "$with_export_validation" = "no"; then
9137 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9140 if test "$with_bffvalidator" = "yes"; then
9141 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9143 BFFVALIDATOR="$with_bffvalidator"
9146 if test "$build_os" = "cygwin"; then
9147 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9148 AC_MSG_RESULT($BFFVALIDATOR)
9150 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9152 elif test -n "$BFFVALIDATOR"; then
9153 # We are not in Cygwin but need to run Windows binary with wine
9154 AC_PATH_PROGS(WINE, wine)
9156 # so swap in a shell wrapper that converts paths transparently
9157 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9158 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9159 AC_SUBST(BFFVALIDATOR_EXE)
9160 AC_MSG_RESULT($BFFVALIDATOR)
9162 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9164 AC_SUBST(BFFVALIDATOR)
9169 dnl ===================================================================
9170 dnl Check for epm (not needed for Windows)
9171 dnl ===================================================================
9172 AC_MSG_CHECKING([whether to enable EPM for packing])
9173 if test "$enable_epm" = "yes"; then
9174 AC_MSG_RESULT([yes])
9175 if test "$_os" != "WINNT"; then
9176 if test $_os = Darwin; then
9178 elif test -n "$with_epm"; then
9181 AC_PATH_PROG(EPM, epm, no)
9183 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9184 AC_MSG_NOTICE([EPM will be built.])
9185 BUILD_TYPE="$BUILD_TYPE EPM"
9186 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9188 # Gentoo has some epm which is something different...
9189 AC_MSG_CHECKING([whether the found epm is the right epm])
9190 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9191 AC_MSG_RESULT([yes])
9193 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9195 AC_MSG_CHECKING([epm version])
9196 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9197 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9198 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9199 AC_MSG_RESULT([OK, >= 3.7])
9201 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9202 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9207 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9208 AC_MSG_CHECKING([for rpm])
9209 for a in "$RPM" rpmbuild rpm; do
9210 $a --usage >/dev/null 2> /dev/null
9211 if test $? -eq 0; then
9215 $a --version >/dev/null 2> /dev/null
9216 if test $? -eq 0; then
9222 if test -z "$RPM"; then
9223 AC_MSG_ERROR([not found])
9224 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9225 RPM_PATH=`command -v $RPM`
9226 AC_MSG_RESULT([$RPM_PATH])
9227 SCPDEFS="$SCPDEFS -DWITH_RPM"
9229 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9232 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9233 AC_PATH_PROG(DPKG, dpkg, no)
9234 if test "$DPKG" = "no"; then
9235 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9238 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9239 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9240 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9241 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9242 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9243 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9244 AC_MSG_RESULT([yes])
9247 if echo "$PKGFORMAT" | $GREP -q rpm; then
9249 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9250 add_warning "the rpms will need to be installed with --nodeps"
9254 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9255 add_warning "the ${_pt}s will not be relocatable"
9256 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9257 relocation will work, you need to patch your epm with the
9258 patch in epm/epm-3.7.patch or build with
9259 --with-epm=internal which will build a suitable epm])
9264 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9265 AC_PATH_PROG(PKGMK, pkgmk, no)
9266 if test "$PKGMK" = "no"; then
9267 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9274 for i in $PKGFORMAT; do
9276 bsd | deb | pkg | rpm | native | portable)
9278 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9288 if test "$enable_lotuswordpro" = "yes"; then
9291 AC_SUBST(ENABLE_LWP)
9293 dnl ===================================================================
9294 dnl Check for building ODK
9295 dnl ===================================================================
9296 AC_MSG_CHECKING([whether to build the ODK])
9297 if test "$enable_odk" = yes; then
9298 if test "$DISABLE_DYNLOADING" = TRUE; then
9299 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9301 AC_MSG_RESULT([yes])
9302 BUILD_TYPE="$BUILD_TYPE ODK"
9307 if test "$enable_odk" != yes; then
9310 if test "$with_doxygen" = no; then
9311 AC_MSG_CHECKING([for doxygen])
9315 if test "$with_doxygen" = yes; then
9316 AC_PATH_PROG([DOXYGEN], [doxygen])
9317 if test -z "$DOXYGEN"; then
9318 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9320 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9321 if ! dot -V 2>/dev/null; then
9322 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9326 AC_MSG_CHECKING([for doxygen])
9327 DOXYGEN=$with_doxygen
9328 AC_MSG_RESULT([$DOXYGEN])
9330 if test -n "$DOXYGEN"; then
9331 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9332 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9333 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9334 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9341 dnl ==================================================================
9343 dnl ==================================================================
9344 AC_MSG_CHECKING([whether to enable fuzzers])
9345 if test "$enable_fuzzers" != yes; then
9348 if test -z $LIB_FUZZING_ENGINE; then
9349 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9351 AC_MSG_RESULT([yes])
9352 ENABLE_FUZZERS="TRUE"
9353 AC_DEFINE([ENABLE_FUZZERS],1)
9354 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9356 AC_SUBST(LIB_FUZZING_ENGINE)
9358 dnl ===================================================================
9359 dnl Check for system zlib
9360 dnl ===================================================================
9361 if test "$with_system_zlib" = "auto"; then
9364 with_system_zlib="$with_system_libs"
9367 if test "$enable_fuzzers" != "yes"; then
9368 with_system_zlib=yes
9376 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9377 dnl and has no pkg-config for it at least on some tinderboxes,
9378 dnl so leaving that out for now
9379 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9380 AC_MSG_CHECKING([which zlib to use])
9381 if test "$with_system_zlib" = "yes"; then
9382 AC_MSG_RESULT([external])
9384 AC_CHECK_HEADER(zlib.h, [],
9385 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9386 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9387 [AC_MSG_ERROR(zlib not found or functional)], [])
9389 AC_MSG_RESULT([internal])
9391 BUILD_TYPE="$BUILD_TYPE ZLIB"
9392 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9393 if test "$COM" = "MSC"; then
9394 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9396 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9399 AC_SUBST(ZLIB_CFLAGS)
9401 AC_SUBST(SYSTEM_ZLIB)
9403 dnl ===================================================================
9404 dnl Check for system jpeg
9405 dnl ===================================================================
9406 AC_MSG_CHECKING([which libjpeg to use])
9407 if test "$with_system_jpeg" = "yes"; then
9408 AC_MSG_RESULT([external])
9410 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9411 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9412 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9413 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9416 AC_MSG_RESULT([internal, libjpeg-turbo])
9417 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9420 x86_64 | amd64 | i*86 | x86 | ia32)
9421 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9422 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9423 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9424 NASM="$LODE_HOME/opt/bin/nasm"
9425 elif test -x "/opt/lo/bin/nasm"; then
9426 NASM="/opt/lo/bin/nasm"
9430 if test -n "$NASM"; then
9431 AC_MSG_CHECKING([for object file format of host system])
9433 cygwin* | mingw* | pw32* | wsl*)
9443 msdosdjgpp* | go32*)
9446 os2-emx*) # not tested
9447 objfmt='MSOMF' # obj
9449 linux*coff* | linux*oldld*)
9465 kfreebsd* | freebsd* | netbsd* | openbsd*)
9466 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9479 solaris* | sunos* | sysv* | sco*)
9489 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9504 AC_MSG_RESULT([$objfmt])
9505 if test "$objfmt" = 'ELF ?'; then
9507 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9510 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9512 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9513 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9514 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9515 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9516 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9517 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9518 ELF) NAFLAGS='-felf -DELF -DPIC';;
9519 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9520 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9521 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9522 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9524 AC_MSG_RESULT([$NAFLAGS])
9526 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9527 cat > conftest.asm << EOF
9528 [%line __oline__ "configure"
9536 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9537 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9540 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9541 cat conftest.asm >&AS_MESSAGE_LOG_FD
9544 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9550 if test -z "$NASM"; then
9552 ****************************************************************************
9553 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9557 if test "$build_os" = "cygwin"; then
9559 install a pre-compiled binary for Win32
9561 mkdir -p /opt/lo/bin
9563 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9566 or get and install one from https://www.nasm.us/
9568 Then re-run autogen.sh
9570 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9571 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`command -v nasm\` finds it.
9576 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9580 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9581 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9589 AC_SUBST(LIBJPEG_CFLAGS)
9590 AC_SUBST(LIBJPEG_LIBS)
9591 AC_SUBST(SYSTEM_LIBJPEG)
9593 dnl ===================================================================
9594 dnl Check for system clucene
9595 dnl ===================================================================
9596 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9597 if test "$SYSTEM_CLUCENE" = TRUE; then
9599 save_CXXFLAGS=$CXXFLAGS
9600 save_CPPFLAGS=$CPPFLAGS
9601 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9602 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9603 dnl https://sourceforge.net/p/clucene/bugs/200/
9604 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9605 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9606 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9607 CXXFLAGS=$save_CXXFLAGS
9608 CPPFLAGS=$save_CPPFLAGS
9610 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9613 dnl ===================================================================
9614 dnl Check for system expat
9615 dnl ===================================================================
9616 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9618 dnl ===================================================================
9619 dnl Check for system xmlsec
9620 dnl ===================================================================
9621 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9623 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9624 if test "$enable_eot" = "yes"; then
9626 AC_DEFINE([ENABLE_EOT])
9627 AC_MSG_RESULT([yes])
9629 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9634 AC_SUBST([ENABLE_EOT])
9636 dnl ===================================================================
9637 dnl Check for DLP libs
9638 dnl ===================================================================
9639 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9640 AS_IF([test "$COM" = "MSC"],
9641 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9642 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9644 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9645 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9647 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9649 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9651 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9652 AS_IF([test "$COM" = "MSC"],
9653 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9654 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9656 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9657 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9659 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9661 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9662 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9664 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9666 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9668 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9670 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9671 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9673 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9674 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9676 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9678 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9679 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9681 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9683 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9685 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9687 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9689 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9690 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9692 dnl ===================================================================
9693 dnl Check for system lcms2
9694 dnl ===================================================================
9695 if test "$with_system_lcms2" != "yes"; then
9698 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9699 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9700 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9701 if test "$GCC" = "yes"; then
9702 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9704 if test "$COM" = "MSC"; then # override the above
9705 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9708 dnl ===================================================================
9709 dnl Check for system cppunit
9710 dnl ===================================================================
9711 if test "$_os" != "Android" ; then
9712 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9715 dnl ===================================================================
9716 dnl Check whether freetype is available
9718 dnl FreeType has 3 different kinds of versions
9719 dnl * release, like 2.4.10
9720 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9722 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9725 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9726 dnl ===================================================================
9727 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9728 if test "x$ac_config_site_64bit_host" = xYES; then
9729 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9731 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9733 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9735 # ===================================================================
9736 # Check for system libxslt
9737 # to prevent incompatibilities between internal libxml2 and external libxslt,
9738 # or vice versa, use with_system_libxml here
9739 # ===================================================================
9740 if test "$with_system_libxml" = "auto"; then
9743 with_system_libxml="$with_system_libs"
9746 with_system_libxml=no
9749 if test "$enable_fuzzers" != "yes"; then
9750 with_system_libxml=yes
9752 with_system_libxml=no
9758 AC_MSG_CHECKING([which libxslt to use])
9759 if test "$with_system_libxml" = "yes"; then
9760 AC_MSG_RESULT([external])
9762 if test "$_os" = "Darwin"; then
9763 dnl make sure to use SDK path
9764 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9765 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9767 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9768 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9770 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9771 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9772 FilterLibs "${LIBXSLT_LIBS}"
9773 LIBXSLT_LIBS="${filteredlibs}"
9774 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9775 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9776 FilterLibs "${LIBEXSLT_LIBS}"
9777 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9780 dnl Check for xsltproc
9781 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9782 if test "$XSLTPROC" = "no"; then
9783 AC_MSG_ERROR([xsltproc is required])
9786 AC_MSG_RESULT([internal])
9788 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9790 AC_SUBST(SYSTEM_LIBXSLT)
9791 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9792 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9794 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9796 AC_SUBST(LIBEXSLT_CFLAGS)
9797 AC_SUBST(LIBEXSLT_LIBS)
9798 AC_SUBST(LIBXSLT_CFLAGS)
9799 AC_SUBST(LIBXSLT_LIBS)
9802 # ===================================================================
9803 # Check for system libxml
9804 # ===================================================================
9805 AC_MSG_CHECKING([which libxml to use])
9806 if test "$with_system_libxml" = "yes"; then
9807 AC_MSG_RESULT([external])
9809 if test "$_os" = "Darwin"; then
9810 dnl make sure to use SDK path
9811 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9813 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9814 elif test $_os = iOS; then
9815 dnl make sure to use SDK path
9816 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9817 LIBXML_CFLAGS="-I$usr/include/libxml2"
9818 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9820 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9821 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9822 FilterLibs "${LIBXML_LIBS}"
9823 LIBXML_LIBS="${filteredlibs}"
9826 dnl Check for xmllint
9827 AC_PATH_PROG(XMLLINT, xmllint, no)
9828 if test "$XMLLINT" = "no"; then
9829 AC_MSG_ERROR([xmllint is required])
9832 AC_MSG_RESULT([internal])
9834 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9835 if test "$COM" = "MSC"; then
9836 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9838 if test "$COM" = "MSC"; then
9839 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9841 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9842 if test "$DISABLE_DYNLOADING" = TRUE; then
9843 LIBXML_LIBS="$LIBXML_LIBS -lm"
9846 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9848 AC_SUBST(SYSTEM_LIBXML)
9849 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9850 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9852 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9853 AC_SUBST(LIBXML_CFLAGS)
9854 AC_SUBST(LIBXML_LIBS)
9857 # =====================================================================
9858 # Checking for a Python interpreter with version >= 3.3.
9859 # Optionally user can pass an option to configure, i. e.
9860 # ./configure PYTHON=/usr/bin/python
9861 # =====================================================================
9862 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9863 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9864 # unless PYTHON is defined as above which allows 'system'
9865 enable_python=internal
9867 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9868 if test -n "$PYTHON"; then
9869 PYTHON_FOR_BUILD=$PYTHON
9871 # This allows a lack of system python with no error, we use internal one in that case.
9872 AM_PATH_PYTHON([3.3],, [:])
9873 # Clean PYTHON_VERSION checked below if cross-compiling
9875 if test "$PYTHON" != ":"; then
9876 PYTHON_FOR_BUILD=$PYTHON
9881 # Checks for Python to use for Pyuno
9882 AC_MSG_CHECKING([which Python to use for Pyuno])
9883 case "$enable_python" in
9885 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9886 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9887 # requirement from the choice whether to include Python stuff in the installer, but why
9889 AC_MSG_ERROR([Python is required at build time.])
9892 AC_MSG_RESULT([none])
9895 if test "$DISABLE_SCRIPTING" = TRUE; then
9896 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9897 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9899 AC_MSG_RESULT([none, overridden by --disable-scripting])
9901 elif test $build_os = cygwin -o $build_os = wsl; then
9902 dnl When building on Windows we don't attempt to use any installed
9903 dnl "system" Python.
9904 AC_MSG_RESULT([fully internal])
9905 enable_python=internal
9906 elif test "$cross_compiling" = yes; then
9907 AC_MSG_RESULT([system])
9908 enable_python=system
9910 # Unset variables set by the above AM_PATH_PYTHON so that
9911 # we actually do check anew.
9913 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
9914 AM_PATH_PYTHON([3.3],, [:])
9915 AC_MSG_CHECKING([which Python to use for Pyuno])
9916 if test "$PYTHON" = ":"; then
9917 if test -z "$PYTHON_FOR_BUILD"; then
9918 AC_MSG_RESULT([fully internal])
9920 AC_MSG_RESULT([internal])
9922 enable_python=internal
9924 AC_MSG_RESULT([system])
9925 enable_python=system
9930 AC_MSG_RESULT([internal])
9933 AC_MSG_RESULT([fully internal])
9934 enable_python=internal
9937 AC_MSG_RESULT([system])
9938 if test "$_os" = Darwin -a -z "$PYTHON"; then
9939 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9943 AC_MSG_ERROR([Incorrect --enable-python option])
9947 if test $enable_python != no; then
9948 BUILD_TYPE="$BUILD_TYPE PYUNO"
9951 if test $enable_python = system; then
9952 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9953 # Fallback: Accept these in the environment, or as set above
9956 elif test "$cross_compiling" != yes; then
9957 # Unset variables set by the above AM_PATH_PYTHON so that
9958 # we actually do check anew.
9959 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
9960 # This causes an error if no python command is found
9961 AM_PATH_PYTHON([3.3])
9962 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9963 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9964 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9965 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9966 if test -z "$PKG_CONFIG"; then
9967 PYTHON_CFLAGS="-I$python_include"
9968 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9969 elif $PKG_CONFIG --exists python-$python_version-embed; then
9970 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9971 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9972 elif $PKG_CONFIG --exists python-$python_version; then
9973 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9974 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9976 PYTHON_CFLAGS="-I$python_include"
9977 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9979 FilterLibs "${PYTHON_LIBS}"
9980 PYTHON_LIBS="${filteredlibs}"
9982 dnl How to find out the cross-compilation Python installation path?
9983 AC_MSG_CHECKING([for python version])
9984 AS_IF([test -n "$PYTHON_VERSION"],
9985 [AC_MSG_RESULT([$PYTHON_VERSION])],
9986 [AC_MSG_RESULT([not found])
9987 AC_MSG_ERROR([no usable python found])])
9988 test -n "$PYTHON_CFLAGS" && break
9991 dnl Check if the headers really work
9992 save_CPPFLAGS="$CPPFLAGS"
9993 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9994 AC_CHECK_HEADER(Python.h)
9995 CPPFLAGS="$save_CPPFLAGS"
9997 # let the PYTHON_FOR_BUILD match the same python installation that
9998 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9999 # better for PythonTests.
10000 PYTHON_FOR_BUILD=$PYTHON
10003 if test "$with_lxml" != no; then
10004 if test -z "$PYTHON_FOR_BUILD"; then
10007 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10010 if test "$cross_compiling" != yes ; then
10011 BUILD_TYPE="$BUILD_TYPE LXML"
10016 AC_MSG_CHECKING([for python lxml])
10017 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10018 AC_MSG_RESULT([yes])
10022 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10025 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10026 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10027 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10029 BUILD_TYPE="$BUILD_TYPE LXML"
10030 AC_MSG_RESULT([no, using internal lxml])
10033 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10041 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10043 PYTHON_VERSION_MAJOR=3
10044 PYTHON_VERSION_MINOR=8
10045 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10046 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10047 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10049 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10051 # Embedded Python dies without Home set
10052 if test "$HOME" = ""; then
10057 dnl By now enable_python should be "system", "internal" or "no"
10058 case $enable_python in
10062 if test "x$ac_cv_header_Python_h" != "xyes"; then
10063 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10067 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10068 AC_MSG_CHECKING([for correct python library version])
10069 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10070 #include <Python.h>
10072 int main(int argc, char **argv) {
10073 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10076 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10079 dnl FIXME Check if the Python library can be linked with, too?
10083 BUILD_TYPE="$BUILD_TYPE PYTHON"
10084 if test "$OS" = LINUX -o "$OS" = WNT ; then
10085 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10089 DISABLE_PYTHON=TRUE
10093 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10097 AC_SUBST(DISABLE_PYTHON)
10098 AC_SUBST(SYSTEM_PYTHON)
10099 AC_SUBST(PYTHON_CFLAGS)
10100 AC_SUBST(PYTHON_FOR_BUILD)
10101 AC_SUBST(PYTHON_LIBS)
10102 AC_SUBST(PYTHON_VERSION)
10103 AC_SUBST(PYTHON_VERSION_MAJOR)
10104 AC_SUBST(PYTHON_VERSION_MINOR)
10106 AC_MSG_CHECKING([whether to build LibreLogo])
10107 case "$enable_python" in
10109 AC_MSG_RESULT([no; Python disabled])
10112 if test "${enable_librelogo}" = "no"; then
10113 AC_MSG_RESULT([no])
10115 AC_MSG_RESULT([yes])
10116 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10117 AC_DEFINE([ENABLE_LIBRELOGO],1)
10121 AC_SUBST(ENABLE_LIBRELOGO)
10127 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10128 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10129 ENABLE_MARIADBC=TRUE
10130 AC_MSG_RESULT([yes])
10131 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10133 AC_MSG_RESULT([no])
10135 AC_SUBST(ENABLE_MARIADBC)
10136 AC_SUBST(MARIADBC_MAJOR)
10137 AC_SUBST(MARIADBC_MINOR)
10138 AC_SUBST(MARIADBC_MICRO)
10140 if test "$ENABLE_MARIADBC" = "TRUE"; then
10141 dnl ===================================================================
10142 dnl Check for system MariaDB
10143 dnl ===================================================================
10144 AC_MSG_CHECKING([which MariaDB to use])
10145 if test "$with_system_mariadb" = "yes"; then
10146 AC_MSG_RESULT([external])
10147 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10148 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10149 if test -z "$MARIADBCONFIG"; then
10150 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10151 if test -z "$MARIADBCONFIG"; then
10152 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10153 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10156 AC_MSG_CHECKING([MariaDB version])
10157 MARIADB_VERSION=`$MARIADBCONFIG --version`
10158 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10159 if test "$MARIADB_MAJOR" -ge "5"; then
10160 AC_MSG_RESULT([OK])
10162 AC_MSG_ERROR([too old, use 5.0.x or later])
10164 AC_MSG_CHECKING([for MariaDB Client library])
10165 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10166 if test "$COM_IS_CLANG" = TRUE; then
10167 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10169 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10170 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10171 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10173 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10174 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10175 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10176 | sed -e 's|/lib64/|/lib/|')
10178 FilterLibs "${MARIADB_LIBS}"
10179 MARIADB_LIBS="${filteredlibs}"
10180 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10181 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10182 if test "$enable_bundle_mariadb" = "yes"; then
10183 AC_MSG_RESULT([yes])
10184 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10185 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10187 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10189 /g' | grep -E '(mysqlclient|mariadb)')
10190 if test "$_os" = "Darwin"; then
10191 LIBMARIADB=${LIBMARIADB}.dylib
10192 elif test "$_os" = "WINNT"; then
10193 LIBMARIADB=${LIBMARIADB}.dll
10195 LIBMARIADB=${LIBMARIADB}.so
10197 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10198 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10199 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10200 AC_MSG_RESULT([found.])
10201 PathFormat "$LIBMARIADB_PATH"
10202 LIBMARIADB_PATH="$formatted_path"
10204 AC_MSG_ERROR([not found.])
10207 AC_MSG_RESULT([no])
10208 BUNDLE_MARIADB_CONNECTOR_C=
10211 AC_MSG_RESULT([internal])
10212 SYSTEM_MARIADB_CONNECTOR_C=
10213 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10214 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10215 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10218 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10219 AC_SUBST(MARIADB_CFLAGS)
10220 AC_SUBST(MARIADB_LIBS)
10221 AC_SUBST(LIBMARIADB)
10222 AC_SUBST(LIBMARIADB_PATH)
10223 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10226 dnl ===================================================================
10227 dnl Check for system hsqldb
10228 dnl ===================================================================
10229 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10230 AC_MSG_CHECKING([which hsqldb to use])
10231 if test "$with_system_hsqldb" = "yes"; then
10232 AC_MSG_RESULT([external])
10234 if test -z $HSQLDB_JAR; then
10235 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10237 if ! test -f $HSQLDB_JAR; then
10238 AC_MSG_ERROR(hsqldb.jar not found.)
10240 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10244 my $file = "$ENV{'HSQLDB_JAR'}";
10245 my $zip = Archive::Zip->new( $file );
10246 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10247 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10249 push @l, split(/\n/, $mf);
10250 foreach my $line (@l)
10252 if ($line =~ m/Specification-Version:/)
10254 ($t, $version) = split (/:/,$line);
10255 $version =~ s/^\s//;
10256 ($a, $b, $c, $d) = split (/\./,$version);
10257 if ($c == "0" && $d > "8")
10272 AC_MSG_RESULT([yes])
10274 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10277 AC_MSG_RESULT([internal])
10279 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10283 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10284 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10287 AC_SUBST(SYSTEM_HSQLDB)
10288 AC_SUBST(HSQLDB_JAR)
10290 dnl ===================================================================
10291 dnl Check for PostgreSQL stuff
10292 dnl ===================================================================
10293 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10294 if test "x$enable_postgresql_sdbc" != "xno"; then
10295 AC_MSG_RESULT([yes])
10296 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10298 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10299 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10301 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10302 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10305 postgres_interface=""
10306 if test "$with_system_postgresql" = "yes"; then
10307 postgres_interface="external PostgreSQL"
10308 SYSTEM_POSTGRESQL=TRUE
10309 if test "$_os" = Darwin; then
10311 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10312 pg_supp_path="$P_SEP$d$pg_supp_path"
10315 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10316 if test -n "$PGCONFIG"; then
10317 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10318 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10320 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10321 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10322 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10324 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10327 FilterLibs "${POSTGRESQL_LIB}"
10328 POSTGRESQL_LIB="${filteredlibs}"
10330 # if/when anything else than PostgreSQL uses Kerberos,
10331 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10336 # macOS has system MIT Kerberos 5 since 10.4
10337 if test "$with_krb5" != "no"; then
10340 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10341 # that the libraries where these functions are located on macOS will change, is it?
10342 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10343 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10346 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10347 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10348 KRB5_LIBS="$KRB5_LIBS $LIBS"
10351 if test "$with_gssapi" != "no"; then
10354 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10355 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10361 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10362 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10365 Linux|GNU|*BSD|DragonFly)
10366 if test "$with_krb5" != "no"; then
10369 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10370 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10373 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10374 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10375 KRB5_LIBS="$KRB5_LIBS $LIBS"
10378 if test "$with_gssapi" != "no"; then
10381 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10382 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10388 if test "$with_krb5" = "yes"; then
10391 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10392 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10395 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10396 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10397 KRB5_LIBS="$KRB5_LIBS $LIBS"
10400 if test "$with_gssapi" = "yes"; then
10403 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10404 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10410 if test -n "$with_libpq_path"; then
10411 SYSTEM_POSTGRESQL=TRUE
10412 postgres_interface="external libpq"
10413 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10414 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10417 postgres_interface="internal"
10419 POSTGRESQL_INC="%OVERRIDE_ME%"
10420 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10424 AC_MSG_CHECKING([PostgreSQL C interface])
10425 AC_MSG_RESULT([$postgres_interface])
10427 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10428 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10429 save_CFLAGS=$CFLAGS
10430 save_CPPFLAGS=$CPPFLAGS
10432 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10433 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10434 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10435 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10436 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10437 CFLAGS=$save_CFLAGS
10438 CPPFLAGS=$save_CPPFLAGS
10441 BUILD_POSTGRESQL_SDBC=TRUE
10443 AC_MSG_RESULT([no])
10445 AC_SUBST(WITH_KRB5)
10446 AC_SUBST(WITH_GSSAPI)
10447 AC_SUBST(GSSAPI_LIBS)
10448 AC_SUBST(KRB5_LIBS)
10449 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10450 AC_SUBST(SYSTEM_POSTGRESQL)
10451 AC_SUBST(POSTGRESQL_INC)
10452 AC_SUBST(POSTGRESQL_LIB)
10454 dnl ===================================================================
10455 dnl Check for Firebird stuff
10456 dnl ===================================================================
10457 ENABLE_FIREBIRD_SDBC=
10458 if test "$enable_firebird_sdbc" = "yes" ; then
10459 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10461 dnl ===================================================================
10462 dnl Check for system Firebird
10463 dnl ===================================================================
10464 AC_MSG_CHECKING([which Firebird to use])
10465 if test "$with_system_firebird" = "yes"; then
10466 AC_MSG_RESULT([external])
10467 SYSTEM_FIREBIRD=TRUE
10468 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10469 if test -z "$FIREBIRDCONFIG"; then
10470 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10471 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10472 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10474 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10476 AC_MSG_NOTICE([fb_config found])
10477 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10478 AC_MSG_CHECKING([for Firebird Client library])
10479 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10480 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10481 FilterLibs "${FIREBIRD_LIBS}"
10482 FIREBIRD_LIBS="${filteredlibs}"
10484 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10485 AC_MSG_CHECKING([Firebird version])
10486 if test -n "${FIREBIRD_VERSION}"; then
10487 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10488 if test "$FIREBIRD_MAJOR" -ge "3"; then
10489 AC_MSG_RESULT([OK])
10491 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10494 save_CFLAGS="${CFLAGS}"
10495 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10496 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10497 #if defined(FB_API_VER) && FB_API_VER == 30
10498 int fb_api_is_30(void) { return 0; }
10500 #error "Wrong Firebird API version"
10501 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10502 CFLAGS="$save_CFLAGS"
10504 ENABLE_FIREBIRD_SDBC=TRUE
10505 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10506 elif test "$enable_database_connectivity" = no; then
10507 AC_MSG_RESULT([none])
10508 elif test "$cross_compiling" = "yes"; then
10509 AC_MSG_RESULT([none])
10511 dnl Embedded Firebird has version 3.0
10512 dnl We need libatomic_ops for any non X86/X64 system
10513 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10514 dnl ===================================================================
10515 dnl Check for system libatomic_ops
10516 dnl ===================================================================
10517 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10518 if test "$with_system_libatomic_ops" = "yes"; then
10519 SYSTEM_LIBATOMIC_OPS=TRUE
10520 AC_CHECK_HEADERS(atomic_ops.h, [],
10521 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10523 SYSTEM_LIBATOMIC_OPS=
10524 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10525 LIBATOMIC_OPS_LIBS="-latomic_ops"
10526 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10530 AC_MSG_RESULT([internal])
10532 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10533 FIREBIRD_LIBS="-lfbclient"
10535 if test "$with_system_libtommath" = "yes"; then
10536 SYSTEM_LIBTOMMATH=TRUE
10537 dnl check for tommath presence
10539 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10540 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10544 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10545 LIBTOMMATH_LIBS="-ltommath"
10546 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10549 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10550 ENABLE_FIREBIRD_SDBC=TRUE
10551 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10554 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10555 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10556 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10557 AC_SUBST(LIBATOMIC_OPS_LIBS)
10558 AC_SUBST(SYSTEM_FIREBIRD)
10559 AC_SUBST(FIREBIRD_CFLAGS)
10560 AC_SUBST(FIREBIRD_LIBS)
10561 AC_SUBST(SYSTEM_LIBTOMMATH)
10562 AC_SUBST(LIBTOMMATH_CFLAGS)
10563 AC_SUBST(LIBTOMMATH_LIBS)
10565 dnl ===================================================================
10566 dnl Check for system curl
10567 dnl ===================================================================
10568 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10570 dnl ===================================================================
10571 dnl Check for system boost
10572 dnl ===================================================================
10573 AC_MSG_CHECKING([which boost to use])
10574 if test "$with_system_boost" = "yes"; then
10575 AC_MSG_RESULT([external])
10577 AX_BOOST_BASE([1.69],,[AC_MSG_ERROR([no suitable Boost found])])
10579 AX_BOOST_FILESYSTEM
10582 AC_LANG_PUSH([C++])
10583 save_CXXFLAGS=$CXXFLAGS
10584 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10585 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10586 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10587 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10588 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10589 CXXFLAGS=$save_CXXFLAGS
10591 # this is in m4/ax_boost_base.m4
10592 FilterLibs "${BOOST_LDFLAGS}"
10593 BOOST_LDFLAGS="${filteredlibs}"
10595 AC_MSG_RESULT([internal])
10596 BUILD_TYPE="$BUILD_TYPE BOOST"
10598 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10599 # use warning-suppressing wrapper headers
10600 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10602 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10605 AC_SUBST(SYSTEM_BOOST)
10607 dnl ===================================================================
10608 dnl Check for system mdds
10609 dnl ===================================================================
10610 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10611 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10613 dnl ===================================================================
10614 dnl Check for system dragonbox
10615 dnl ===================================================================
10616 AC_MSG_CHECKING([which dragonbox to use])
10617 if test "$with_system_dragonbox" = "yes"; then
10618 AC_MSG_RESULT([external])
10619 SYSTEM_DRAGONBOX=TRUE
10620 AC_LANG_PUSH([C++])
10621 save_CPPFLAGS=$CPPFLAGS
10622 # This is where upstream installs to, unfortunately no .pc or so...
10623 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10624 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10625 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10626 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10628 CPPFLAGS=$save_CPPFLAGS
10630 AC_MSG_RESULT([internal])
10631 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10634 AC_SUBST([SYSTEM_DRAGONBOX])
10635 AC_SUBST([DRAGONBOX_CFLAGS])
10637 dnl ===================================================================
10638 dnl Check for system frozen
10639 dnl ===================================================================
10640 AC_MSG_CHECKING([which frozen to use])
10641 if test "$with_system_frozen" = "yes"; then
10642 AC_MSG_RESULT([external])
10644 AC_LANG_PUSH([C++])
10645 save_CPPFLAGS=$CPPFLAGS
10646 AC_CHECK_HEADER([frozen/unordered_map.h], [],
10647 [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10649 CPPFLAGS=$save_CPPFLAGS
10651 AC_MSG_RESULT([internal])
10652 BUILD_TYPE="$BUILD_TYPE FROZEN"
10655 AC_SUBST([SYSTEM_FROZEN])
10656 AC_SUBST([FROZEN_CFLAGS])
10658 dnl ===================================================================
10659 dnl Check for system libfixmath
10660 dnl ===================================================================
10661 AC_MSG_CHECKING([which libfixmath to use])
10662 if test "$with_system_libfixmath" = "yes"; then
10663 AC_MSG_RESULT([external])
10664 SYSTEM_LIBFIXMATH=TRUE
10665 AC_LANG_PUSH([C++])
10666 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10667 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10668 AC_CHECK_LIB([libfixmath], [fix16_mul], [LIBFIXMATH_LIBS=-llibfixmath],
10669 [AC_CHECK_LIB([fixmath], [fix16_mul], [LIBFIXMATH_LIBS=-lfixmath],
10670 [AC_MSG_ERROR(libfixmath lib not found or functional)])])
10673 AC_MSG_RESULT([internal])
10677 AC_SUBST([SYSTEM_LIBFIXMATH])
10678 AC_SUBST([LIBFIXMATH_LIBS])
10680 dnl ===================================================================
10681 dnl Check for system glm
10682 dnl ===================================================================
10683 AC_MSG_CHECKING([which glm to use])
10684 if test "$with_system_glm" = "yes"; then
10685 AC_MSG_RESULT([external])
10687 AC_LANG_PUSH([C++])
10688 AC_CHECK_HEADER([glm/glm.hpp], [],
10689 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10692 AC_MSG_RESULT([internal])
10693 BUILD_TYPE="$BUILD_TYPE GLM"
10695 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10697 AC_SUBST([GLM_CFLAGS])
10698 AC_SUBST([SYSTEM_GLM])
10700 dnl ===================================================================
10701 dnl Check for system odbc
10702 dnl ===================================================================
10703 AC_MSG_CHECKING([which odbc headers to use])
10704 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
10705 AC_MSG_RESULT([external])
10706 SYSTEM_ODBC_HEADERS=TRUE
10708 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10709 save_CPPFLAGS=$CPPFLAGS
10711 PathFormat "$winsdktest"
10712 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"
10713 AC_CHECK_HEADER(sqlext.h, [],
10714 [AC_MSG_ERROR(odbc not found. install odbc)],
10715 [#include <windows.h>])
10716 CPPFLAGS=$save_CPPFLAGS
10718 AC_CHECK_HEADER(sqlext.h, [],
10719 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10721 elif test "$enable_database_connectivity" = no; then
10722 AC_MSG_RESULT([none])
10724 AC_MSG_RESULT([internal])
10725 SYSTEM_ODBC_HEADERS=
10727 AC_SUBST(SYSTEM_ODBC_HEADERS)
10729 dnl ===================================================================
10730 dnl Check for system NSS
10731 dnl ===================================================================
10732 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10733 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10734 AC_DEFINE(HAVE_FEATURE_NSS)
10736 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10739 AC_SUBST(ENABLE_NSS)
10741 dnl ===================================================================
10742 dnl Enable LDAP support
10743 dnl ===================================================================
10745 if test "$test_openldap" = yes; then
10746 AC_MSG_CHECKING([whether to enable LDAP support])
10747 if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10748 AC_MSG_RESULT([yes])
10751 if test "$enable_ldap" != "yes"; then
10752 AC_MSG_RESULT([no])
10754 AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10758 dnl ===================================================================
10759 dnl Check for system openldap
10760 dnl ===================================================================
10762 if test "$ENABLE_LDAP" = TRUE; then
10763 AC_MSG_CHECKING([which openldap library to use])
10764 if test "$with_system_openldap" = yes; then
10765 AC_MSG_RESULT([external])
10766 SYSTEM_OPENLDAP=TRUE
10767 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10768 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10769 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10771 AC_MSG_RESULT([internal])
10772 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10777 AC_SUBST(ENABLE_LDAP)
10778 AC_SUBST(SYSTEM_OPENLDAP)
10780 dnl ===================================================================
10781 dnl Check for TLS/SSL and cryptographic implementation to use
10782 dnl ===================================================================
10783 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10784 if test -n "$with_tls"; then
10787 AC_DEFINE(USE_TLS_OPENSSL)
10789 AC_MSG_RESULT([$TLS])
10791 if test "$enable_openssl" != "yes"; then
10792 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10795 # warn that OpenSSL has been selected but not all TLS code has this option
10796 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10797 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10800 AC_DEFINE(USE_TLS_NSS)
10802 AC_MSG_RESULT([$TLS])
10805 AC_MSG_RESULT([none])
10806 AC_MSG_WARN([Skipping TLS/SSL])
10810 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10812 nss - Mozilla's Network Security Services (NSS)
10817 # default to using NSS, it results in smaller oox lib
10818 AC_DEFINE(USE_TLS_NSS)
10820 AC_MSG_RESULT([$TLS])
10824 dnl ===================================================================
10825 dnl Check for system sane
10826 dnl ===================================================================
10827 AC_MSG_CHECKING([which sane header to use])
10828 if test "$with_system_sane" = "yes"; then
10829 AC_MSG_RESULT([external])
10830 AC_CHECK_HEADER(sane/sane.h, [],
10831 [AC_MSG_ERROR(sane not found. install sane)], [])
10833 AC_MSG_RESULT([internal])
10834 BUILD_TYPE="$BUILD_TYPE SANE"
10837 dnl ===================================================================
10838 dnl Check for system icu
10839 dnl ===================================================================
10842 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10843 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10844 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10845 if test "$SYSTEM_ICU" = TRUE; then
10846 AC_LANG_PUSH([C++])
10847 AC_MSG_CHECKING([for unicode/rbbi.h])
10848 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10851 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10852 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10853 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10855 if test "$CROSS_COMPILING" != TRUE; then
10856 # using the system icu tools can lead to version confusion, use the
10857 # ones from the build environment when cross-compiling
10858 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10859 if test -z "$SYSTEM_GENBRK"; then
10860 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10862 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10863 if test -z "$SYSTEM_GENCCODE"; then
10864 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10866 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10867 if test -z "$SYSTEM_GENCMN"; then
10868 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10873 AC_SUBST(SYSTEM_GENBRK)
10874 AC_SUBST(SYSTEM_GENCCODE)
10875 AC_SUBST(SYSTEM_GENCMN)
10876 AC_SUBST(ICU_MAJOR)
10877 AC_SUBST(ICU_MINOR)
10879 dnl ==================================================================
10881 dnl ==================================================================
10882 if test "$enable_curl" == "yes"; then
10883 AC_DEFINE([HAVE_FEATURE_CURL])
10886 dnl ==================================================================
10888 dnl ==================================================================
10889 DEFAULT_CRASHDUMP_VALUE="true"
10890 AC_MSG_CHECKING([whether to enable breakpad])
10891 if test "$enable_breakpad" != yes; then
10892 AC_MSG_RESULT([no])
10894 if test "$enable_curl" != "yes"; then
10895 AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10897 AC_MSG_RESULT([yes])
10898 ENABLE_BREAKPAD="TRUE"
10899 AC_DEFINE(ENABLE_BREAKPAD)
10900 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10901 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10903 AC_MSG_CHECKING([for disable crash dump])
10904 if test "$enable_crashdump" = no; then
10905 DEFAULT_CRASHDUMP_VALUE="false"
10906 AC_MSG_RESULT([yes])
10908 AC_MSG_RESULT([no])
10911 AC_MSG_CHECKING([for crashreport config])
10912 if test "$with_symbol_config" = "no"; then
10913 BREAKPAD_SYMBOL_CONFIG="invalid"
10914 AC_MSG_RESULT([no])
10916 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10917 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10918 AC_MSG_RESULT([yes])
10920 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10922 AC_SUBST(ENABLE_BREAKPAD)
10923 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10925 dnl ==================================================================
10927 dnl ==================================================================
10928 if test "$enable_libcmis" == "yes"; then
10929 if test "$enable_curl" != "yes"; then
10930 AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10934 dnl ===================================================================
10936 dnl ===================================================================
10937 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10938 if test "$with_system_orcus" != "yes"; then
10939 if test "$SYSTEM_BOOST" = "TRUE"; then
10940 dnl Link with Boost.System
10941 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10942 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10943 dnl in documentation has no effect.
10947 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10948 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10949 AC_SUBST([BOOST_SYSTEM_LIB])
10950 AC_SUBST(SYSTEM_LIBORCUS)
10952 dnl ===================================================================
10954 dnl ===================================================================
10955 harfbuzz_required_version=5.1.0
10957 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10958 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10961 GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10962 HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10965 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10966 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10969 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10970 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10972 if test "$COM" = "MSC"; then # override the above
10973 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10974 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10977 if test "$with_system_harfbuzz" = "yes"; then
10978 if test "$with_system_graphite" = "no"; then
10979 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10981 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10983 save_CFLAGS="$CFLAGS"
10984 LIBS="$LIBS $HARFBUZZ_LIBS"
10985 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10986 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10988 CFLAGS="$save_CFLAGS"
10990 if test "$with_system_graphite" = "yes"; then
10991 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10995 if test "$USING_X11" = TRUE; then
10998 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11000 if test -z "$x_includes"; then
11001 x_includes="default_x_includes"
11003 if test -z "$x_libraries"; then
11004 x_libraries="default_x_libraries"
11006 CFLAGS="$CFLAGS $X_CFLAGS"
11007 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11008 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11010 x_includes="no_x_includes"
11011 x_libraries="no_x_libraries"
11014 if test "$USING_X11" = TRUE; then
11015 dnl ===================================================================
11016 dnl Check for extension headers
11017 dnl ===================================================================
11018 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11019 [#include <X11/extensions/shape.h>])
11021 # vcl needs ICE and SM
11022 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11023 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11024 [AC_MSG_ERROR(ICE library not found)])
11025 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11026 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11027 [AC_MSG_ERROR(SM library not found)])
11030 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11031 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11032 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11035 dnl ===================================================================
11036 dnl Check for system Xrender
11037 dnl ===================================================================
11038 AC_MSG_CHECKING([whether to use Xrender])
11039 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11040 AC_MSG_RESULT([yes])
11041 PKG_CHECK_MODULES(XRENDER, xrender)
11042 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11043 FilterLibs "${XRENDER_LIBS}"
11044 XRENDER_LIBS="${filteredlibs}"
11045 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11046 [AC_MSG_ERROR(libXrender not found or functional)], [])
11047 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11048 [AC_MSG_ERROR(Xrender not found. install X)], [])
11050 AC_MSG_RESULT([no])
11052 AC_SUBST(XRENDER_CFLAGS)
11053 AC_SUBST(XRENDER_LIBS)
11055 dnl ===================================================================
11056 dnl Check for XRandr
11057 dnl ===================================================================
11058 AC_MSG_CHECKING([whether to enable RandR support])
11059 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11060 AC_MSG_RESULT([yes])
11061 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11062 if test "$ENABLE_RANDR" != "TRUE"; then
11063 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11064 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11066 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11067 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11068 XRANDR_LIBS="-lXrandr "
11069 ENABLE_RANDR="TRUE"
11071 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11072 FilterLibs "${XRANDR_LIBS}"
11073 XRANDR_LIBS="${filteredlibs}"
11076 AC_MSG_RESULT([no])
11078 AC_SUBST(XRANDR_CFLAGS)
11079 AC_SUBST(XRANDR_LIBS)
11080 AC_SUBST(ENABLE_RANDR)
11082 if test -z "$with_webdav"; then
11083 with_webdav=$test_webdav
11086 AC_MSG_CHECKING([for WebDAV support])
11087 case "$with_webdav" in
11089 AC_MSG_RESULT([no])
11093 AC_MSG_RESULT([yes])
11094 # curl is already mandatory (almost) and checked elsewhere
11095 if test "$enable_curl" = "no"; then
11096 AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11101 AC_SUBST(WITH_WEBDAV)
11103 dnl ===================================================================
11104 dnl Check for disabling cve_tests
11105 dnl ===================================================================
11106 AC_MSG_CHECKING([whether to execute CVE tests])
11107 # If not explicitly enabled or disabled, default
11108 if test -z "$enable_cve_tests"; then
11111 # Default cves off for Windows with its wild and wonderful
11112 # variety of AV software kicking in and panicking
11113 enable_cve_tests=no
11117 enable_cve_tests=yes
11121 if test "$enable_cve_tests" = "no"; then
11122 AC_MSG_RESULT([no])
11123 DISABLE_CVE_TESTS=TRUE
11124 AC_SUBST(DISABLE_CVE_TESTS)
11126 AC_MSG_RESULT([yes])
11129 dnl ===================================================================
11130 dnl Check for system openssl
11131 dnl ===================================================================
11133 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11134 if test "$enable_openssl" = "yes"; then
11135 AC_MSG_RESULT([no])
11136 ENABLE_OPENSSL=TRUE
11137 if test "$_os" = Darwin ; then
11138 # OpenSSL is deprecated when building for 10.7 or later.
11140 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11141 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11143 with_system_openssl=no
11144 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11145 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11146 && test "$with_system_openssl" != "no"; then
11147 with_system_openssl=yes
11148 SYSTEM_OPENSSL=TRUE
11150 OPENSSL_LIBS="-lssl -lcrypto"
11152 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11153 if test -n "${SYSTEM_OPENSSL}"; then
11154 AC_DEFINE([SYSTEM_OPENSSL])
11157 if test "$with_system_openssl" = "yes"; then
11158 AC_MSG_CHECKING([whether openssl supports SHA512])
11160 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11161 SHA512_CTX context;
11162 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11166 AC_MSG_RESULT([yes])
11168 # warn that although OpenSSL is disabled, system libraries may depend on it
11169 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11170 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11173 AC_SUBST([ENABLE_OPENSSL])
11175 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11176 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11177 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11178 enable_cipher_openssl_backend=no
11180 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11183 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11184 ENABLE_CIPHER_OPENSSL_BACKEND=
11185 if test "$enable_cipher_openssl_backend" = yes; then
11186 AC_MSG_RESULT([yes])
11187 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11189 AC_MSG_RESULT([no])
11191 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11193 dnl ===================================================================
11194 dnl Select the crypto backends used by LO
11195 dnl ===================================================================
11197 if test "$build_crypto" = yes; then
11198 if test "$OS" = WNT; then
11199 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11200 AC_DEFINE([USE_CRYPTO_MSCAPI])
11201 elif test "$ENABLE_NSS" = TRUE; then
11202 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11203 AC_DEFINE([USE_CRYPTO_NSS])
11207 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11208 if test "$COM" = "MSC"; then
11209 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11211 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11213 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11215 dnl ===================================================================
11216 dnl Check for system redland
11217 dnl ===================================================================
11218 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11219 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11220 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11221 if test "$with_system_redland" = "yes"; then
11222 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11223 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11229 AC_SUBST(RAPTOR_MAJOR)
11230 AC_SUBST(RASQAL_MAJOR)
11231 AC_SUBST(REDLAND_MAJOR)
11233 dnl ===================================================================
11234 dnl Check for system hunspell
11235 dnl ===================================================================
11236 AC_MSG_CHECKING([which libhunspell to use])
11237 if test "$with_system_hunspell" = "yes"; then
11238 AC_MSG_RESULT([external])
11239 SYSTEM_HUNSPELL=TRUE
11240 AC_LANG_PUSH([C++])
11241 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11242 if test "$HUNSPELL_PC" != "TRUE"; then
11243 AC_CHECK_HEADER(hunspell.hxx, [],
11245 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11246 [AC_MSG_ERROR(hunspell headers not found.)], [])
11248 AC_CHECK_LIB([hunspell], [main], [:],
11249 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11250 HUNSPELL_LIBS=-lhunspell
11253 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11254 FilterLibs "${HUNSPELL_LIBS}"
11255 HUNSPELL_LIBS="${filteredlibs}"
11257 AC_MSG_RESULT([internal])
11259 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11260 if test "$COM" = "MSC"; then
11261 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11263 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11265 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11267 AC_SUBST(SYSTEM_HUNSPELL)
11268 AC_SUBST(HUNSPELL_CFLAGS)
11269 AC_SUBST(HUNSPELL_LIBS)
11271 dnl ===================================================================
11272 dnl Check for system zxcvbn
11273 dnl ===================================================================
11274 AC_MSG_CHECKING([which zxcvbn to use])
11275 if test "$with_system_zxcvbn" = "yes"; then
11276 AC_MSG_RESULT([external])
11278 AC_CHECK_HEADER(zxcvbn.h, [],
11279 [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11280 AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11281 [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11283 AC_MSG_RESULT([internal])
11284 BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11287 AC_SUBST(SYSTEM_ZXCVBN)
11289 dnl ===================================================================
11290 dnl Check for system zxing
11291 dnl ===================================================================
11292 AC_MSG_CHECKING([whether to use zxing])
11293 if test "$enable_zxing" = "no"; then
11294 AC_MSG_RESULT([no])
11298 AC_MSG_RESULT([yes])
11300 AC_MSG_CHECKING([which libzxing to use])
11301 if test "$with_system_zxing" = "yes"; then
11302 AC_MSG_RESULT([external])
11305 AC_LANG_PUSH([C++])
11306 save_CXXFLAGS=$CXXFLAGS
11309 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11310 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11311 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11312 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11313 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11314 dnl unsetting IFS."):
11316 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11317 dnl ignore them here:
11318 if test -z "$i"; then
11321 dnl TODO: White space in $i would cause problems:
11322 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11323 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11324 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11326 CXXFLAGS=$save_CXXFLAGS
11327 if test -z "$ZXING_CFLAGS"; then
11328 AC_MSG_ERROR(zxing headers not found.)
11330 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11331 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11332 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11334 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11335 FilterLibs "${ZXING_LIBS}"
11336 ZXING_LIBS="${filteredlibs}"
11338 AC_MSG_RESULT([internal])
11340 BUILD_TYPE="$BUILD_TYPE ZXING"
11341 ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11343 if test "$ENABLE_ZXING" = TRUE; then
11344 AC_DEFINE(ENABLE_ZXING)
11346 AC_MSG_CHECKING([whether zxing::tosvg function is available])
11347 AC_LANG_PUSH([C++])
11348 save_CXXFLAGS=$CXXFLAGS
11349 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11350 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11351 #include <BitMatrix.h>
11352 #include <BitMatrixIO.h>
11354 ZXing::BitMatrix matrix(1, 1);
11355 matrix.set(0, 0, true);
11356 ZXing::ToSVG(matrix);
11360 AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11361 AC_MSG_RESULT([yes])
11362 ], [AC_MSG_RESULT([no])])
11363 CXXFLAGS=$save_CXXFLAGS
11365 AC_SUBST(HAVE_ZXING_TOSVG)
11367 AC_SUBST(SYSTEM_ZXING)
11368 AC_SUBST(ENABLE_ZXING)
11369 AC_SUBST(ZXING_CFLAGS)
11370 AC_SUBST(ZXING_LIBS)
11372 dnl ===================================================================
11373 dnl Check for system box2d
11374 dnl ===================================================================
11375 AC_MSG_CHECKING([which box2d to use])
11376 if test "$with_system_box2d" = "yes"; then
11377 AC_MSG_RESULT([external])
11379 AC_LANG_PUSH([C++])
11380 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11381 [BOX2D_H_FOUND='FALSE'])
11382 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11384 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11386 # fail this. there's no other alternative to check when we are here.
11387 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11388 [AC_MSG_ERROR(box2d headers not found.)])
11390 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11392 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11393 [ AC_MSG_ERROR(box2d library not found.) ], [])
11394 BOX2D_LIBS=-l$_BOX2D_LIB
11396 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11397 FilterLibs "${BOX2D_LIBS}"
11398 BOX2D_LIBS="${filteredlibs}"
11400 AC_MSG_RESULT([internal])
11402 BUILD_TYPE="$BUILD_TYPE BOX2D"
11404 AC_SUBST(SYSTEM_BOX2D)
11405 AC_SUBST(BOX2D_CFLAGS)
11406 AC_SUBST(BOX2D_LIBS)
11408 dnl ===================================================================
11409 dnl Checking for altlinuxhyph
11410 dnl ===================================================================
11411 AC_MSG_CHECKING([which altlinuxhyph to use])
11412 if test "$with_system_altlinuxhyph" = "yes"; then
11413 AC_MSG_RESULT([external])
11415 AC_CHECK_HEADER(hyphen.h, [],
11416 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11417 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11418 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11419 [#include <hyphen.h>])
11420 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11421 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11422 if test -z "$HYPHEN_LIB"; then
11423 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11424 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11426 if test -z "$HYPHEN_LIB"; then
11427 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11428 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11431 AC_MSG_RESULT([internal])
11433 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11434 if test "$COM" = "MSC"; then
11435 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11437 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11440 AC_SUBST(SYSTEM_HYPH)
11441 AC_SUBST(HYPHEN_LIB)
11443 dnl ===================================================================
11444 dnl Checking for mythes
11445 dnl ===================================================================
11446 AC_MSG_CHECKING([which mythes to use])
11447 if test "$with_system_mythes" = "yes"; then
11448 AC_MSG_RESULT([external])
11450 AC_LANG_PUSH([C++])
11451 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11452 if test "$MYTHES_PKGCONFIG" = "no"; then
11453 AC_CHECK_HEADER(mythes.hxx, [],
11454 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11455 AC_CHECK_LIB([mythes-1.2], [main], [:],
11456 [ MYTHES_FOUND=no], [])
11457 if test "$MYTHES_FOUND" = "no"; then
11458 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11459 [ MYTHES_FOUND=no], [])
11461 if test "$MYTHES_FOUND" = "no"; then
11462 AC_MSG_ERROR([mythes library not found!.])
11466 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11467 FilterLibs "${MYTHES_LIBS}"
11468 MYTHES_LIBS="${filteredlibs}"
11470 AC_MSG_RESULT([internal])
11472 BUILD_TYPE="$BUILD_TYPE MYTHES"
11473 if test "$COM" = "MSC"; then
11474 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11476 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11479 AC_SUBST(SYSTEM_MYTHES)
11480 AC_SUBST(MYTHES_CFLAGS)
11481 AC_SUBST(MYTHES_LIBS)
11483 dnl ===================================================================
11484 dnl How should we build the linear programming solver ?
11485 dnl ===================================================================
11488 AC_MSG_CHECKING([whether to build with CoinMP])
11489 if test "$enable_coinmp" != "no"; then
11491 AC_MSG_RESULT([yes])
11492 if test "$with_system_coinmp" = "yes"; then
11494 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11495 FilterLibs "${COINMP_LIBS}"
11496 COINMP_LIBS="${filteredlibs}"
11498 BUILD_TYPE="$BUILD_TYPE COINMP"
11501 AC_MSG_RESULT([no])
11503 AC_SUBST(ENABLE_COINMP)
11504 AC_SUBST(SYSTEM_COINMP)
11505 AC_SUBST(COINMP_CFLAGS)
11506 AC_SUBST(COINMP_LIBS)
11509 AC_MSG_CHECKING([whether to build with lpsolve])
11510 if test "$enable_lpsolve" != "no"; then
11511 ENABLE_LPSOLVE=TRUE
11512 AC_MSG_RESULT([yes])
11514 AC_MSG_RESULT([no])
11516 AC_SUBST(ENABLE_LPSOLVE)
11518 if test "$ENABLE_LPSOLVE" = TRUE; then
11519 AC_MSG_CHECKING([which lpsolve to use])
11520 if test "$with_system_lpsolve" = "yes"; then
11521 AC_MSG_RESULT([external])
11522 SYSTEM_LPSOLVE=TRUE
11523 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11524 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11526 # some systems need this. Like Ubuntu...
11527 AC_CHECK_LIB(m, floor)
11528 AC_CHECK_LIB(dl, dlopen)
11529 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11530 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11533 AC_MSG_RESULT([internal])
11535 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11538 AC_SUBST(SYSTEM_LPSOLVE)
11540 dnl ===================================================================
11541 dnl Checking for libexttextcat
11542 dnl ===================================================================
11543 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11544 if test "$with_system_libexttextcat" = "yes"; then
11545 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11547 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11549 dnl ===================================================================
11550 dnl Checking for libnumbertext
11551 dnl ===================================================================
11552 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11553 if test "$with_system_libnumbertext" = "yes"; then
11554 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11555 SYSTEM_LIBNUMBERTEXT=YES
11557 SYSTEM_LIBNUMBERTEXT=
11559 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11560 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11562 dnl ***************************************
11563 dnl testing libc version for Linux...
11564 dnl ***************************************
11565 if test "$_os" = "Linux"; then
11566 AC_MSG_CHECKING([whether the libc is recent enough])
11567 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11568 #include <features.h>
11569 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11570 #error glibc >= 2.1 is required
11572 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11575 dnl =========================================
11576 dnl Check for uuidgen
11577 dnl =========================================
11578 if test "$_os" = "WINNT"; then
11579 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11580 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11581 UUIDGEN=uuidgen.exe
11584 AC_PATH_PROG([UUIDGEN], [uuidgen])
11585 if test -z "$UUIDGEN"; then
11586 AC_MSG_WARN([uuid is needed for building installation sets])
11590 dnl ***************************************
11591 dnl Checking for bison and flex
11592 dnl ***************************************
11593 AC_PATH_PROG(BISON, bison)
11594 if test -z "$BISON"; then
11595 AC_MSG_ERROR([no bison found in \$PATH, install it])
11597 AC_MSG_CHECKING([the bison version])
11598 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11599 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11600 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11603 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]
11604 dnl typedef union YYSTYPE
11607 dnl while at least 3.4.1 is know to be good:
11608 if test "$COMPILER_PLUGINS" = TRUE; then
11609 if test "$_bison_longver" -lt 2004; then
11610 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11613 if test "$_bison_longver" -lt 2000; then
11614 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11620 AC_PATH_PROG(FLEX, flex)
11621 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11622 FLEX=`cygpath -m $FLEX`
11624 if test -z "$FLEX"; then
11625 AC_MSG_ERROR([no flex found in \$PATH, install it])
11627 AC_MSG_CHECKING([the flex version])
11628 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11629 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11630 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11635 AC_PATH_PROG(DIFF, diff)
11636 if test -z "$DIFF"; then
11637 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11641 AC_PATH_PROG(UNIQ, uniq)
11642 if test -z "$UNIQ"; then
11643 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11647 dnl ***************************************
11648 dnl Checking for patch
11649 dnl ***************************************
11650 AC_PATH_PROG(PATCH, patch)
11651 if test -z "$PATCH"; then
11652 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11655 dnl On Solaris or macOS, check if --with-gnu-patch was used
11656 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11657 if test -z "$with_gnu_patch"; then
11660 if test -x "$with_gnu_patch"; then
11661 GNUPATCH=$with_gnu_patch
11663 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11667 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11668 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11669 AC_MSG_RESULT([yes])
11671 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11672 AC_MSG_RESULT([no, but accepted (Apple patch)])
11673 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11675 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11682 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11683 GNUPATCH=`cygpath -m $GNUPATCH`
11686 dnl We also need to check for --with-gnu-cp
11688 if test -z "$with_gnu_cp"; then
11689 # check the place where the good stuff is hidden on Solaris...
11690 if test -x /usr/gnu/bin/cp; then
11691 GNUCP=/usr/gnu/bin/cp
11693 AC_PATH_PROGS(GNUCP, gnucp cp)
11695 if test -z $GNUCP; then
11696 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11699 if test -x "$with_gnu_cp"; then
11702 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11706 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11707 GNUCP=`cygpath -m $GNUCP`
11710 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11711 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11712 AC_MSG_RESULT([yes])
11713 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11714 AC_MSG_RESULT([yes])
11716 case "$build_os" in
11717 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11720 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11723 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11732 dnl ***************************************
11733 dnl testing assembler path
11734 dnl ***************************************
11736 if test "$_os" = "WINNT"; then
11737 case "$WIN_HOST_ARCH" in
11738 x86) assembler=ml.exe ;;
11739 x64) assembler=ml64.exe ;;
11740 arm64) assembler=armasm64.exe ;;
11743 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11744 if test -f "$MSVC_HOST_PATH/$assembler"; then
11745 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11746 AC_MSG_RESULT([$ML_EXE])
11748 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11754 dnl ===================================================================
11755 dnl We need zip and unzip
11756 dnl ===================================================================
11757 AC_PATH_PROG(ZIP, zip)
11758 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11759 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11760 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],,)
11763 AC_PATH_PROG(UNZIP, unzip)
11764 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11766 dnl ===================================================================
11767 dnl Zip must be a specific type for different build types.
11768 dnl ===================================================================
11769 if test $build_os = cygwin; then
11770 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11771 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11775 dnl ===================================================================
11776 dnl We need touch with -h option support.
11777 dnl ===================================================================
11778 AC_PATH_PROG(TOUCH, touch)
11779 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11780 touch "$WARNINGS_FILE"
11781 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11782 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],,)
11785 dnl ===================================================================
11786 dnl Check for system epoxy
11787 dnl ===================================================================
11788 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11789 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11791 dnl ===================================================================
11792 dnl Show which vclplugs will be built.
11793 dnl ===================================================================
11796 libo_ENABLE_VCLPLUG([gen])
11797 libo_ENABLE_VCLPLUG([gtk3])
11798 libo_ENABLE_VCLPLUG([gtk3_kde5])
11799 libo_ENABLE_VCLPLUG([gtk4])
11800 libo_ENABLE_VCLPLUG([kf5])
11801 libo_ENABLE_VCLPLUG([kf6])
11802 libo_ENABLE_VCLPLUG([qt5])
11803 libo_ENABLE_VCLPLUG([qt6])
11805 if test "$_os" = "WINNT"; then
11807 elif test "$_os" = "Darwin"; then
11809 elif test "$_os" = "iOS"; then
11811 elif test "$_os" = Android; then
11815 build_vcl_plugins="$R"
11816 if test -z "$build_vcl_plugins"; then
11817 build_vcl_plugins=" none"
11819 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11821 AC_SUBST([VCL_PLUGIN_INFO])
11823 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11824 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11827 dnl ===================================================================
11828 dnl Check for GTK libraries
11829 dnl ===================================================================
11833 ENABLE_GTKTILEDVIEWER=""
11834 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11835 if test "$with_system_cairo" = no; then
11836 add_warning 'Non-system cairo combined with gtk3 is known to cause trouble (eg. broken image in the splashscreen). Use --with-system-cairo unless you know what you are doing.'
11838 : ${with_system_cairo:=yes}
11839 PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 atk >= 2.28.1 cairo)
11840 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11841 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11842 FilterLibs "${GTK3_LIBS}"
11843 GTK3_LIBS="${filteredlibs}"
11845 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11846 if test "$with_system_epoxy" != "yes"; then
11847 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11848 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11849 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11851 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11852 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11853 if test "$build_os" = "cygwin"; then
11854 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11855 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11858 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11859 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11860 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11861 FilterLibs "${GTK3_LIBS}"
11862 GTK3_LIBS="${filteredlibs}"
11863 ENABLE_GTKTILEDVIEWER="yes"
11865 AC_SUBST(GTK3_LIBS)
11866 AC_SUBST(GTK3_CFLAGS)
11867 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11871 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11872 if test "$with_system_cairo" = no; then
11873 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11875 : ${with_system_cairo:=yes}
11876 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11877 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11878 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11879 FilterLibs "${GTK4_LIBS}"
11880 GTK4_LIBS="${filteredlibs}"
11882 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11883 if test "$with_system_epoxy" != "yes"; then
11884 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11885 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11886 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11889 AC_SUBST(GTK4_LIBS)
11890 AC_SUBST(GTK4_CFLAGS)
11892 if test "$enable_introspection" = yes; then
11893 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11894 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11896 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11900 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11901 if ! test "$ENABLE_GTK3" = TRUE; then
11902 if test "$enable_atspi_tests" = yes; then
11903 AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11905 enable_atspi_tests=no
11907 if ! test "$enable_atspi_tests" = no; then
11908 AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11909 if ! test "$XVFB_RUN" = no; then
11910 dnl make sure the found xvfb-run actually works
11911 AC_MSG_CHECKING([whether $XVFB_RUN works...])
11912 if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11913 AC_MSG_RESULT([yes])
11915 AC_MSG_RESULT([no])
11919 if test "$XVFB_RUN" = no; then
11920 if test "$enable_atspi_tests" = yes; then
11921 AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11923 enable_atspi_tests=no
11926 if ! test "$enable_atspi_tests" = no; then
11927 AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11928 if test "$DBUS_LAUNCH" = no; then
11929 if test "$enable_atspi_tests" = yes; then
11930 AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11932 enable_atspi_tests=no
11935 if ! test "$enable_atspi_tests" = no; then
11936 PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11937 [if test "$enable_atspi_tests" = yes; then
11938 AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11940 enable_atspi_tests=no
11943 if ! test "x$enable_atspi_tests" = xno; then
11944 PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11945 [have_atspi_scroll_to=1],
11946 [have_atspi_scroll_to=0])
11947 AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11948 [Whether AT-SPI2 has the scrollTo API])
11950 ENABLE_ATSPI_TESTS=
11951 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11952 AC_SUBST([ENABLE_ATSPI_TESTS])
11954 dnl ===================================================================
11955 dnl check for dbus support
11956 dnl ===================================================================
11960 DBUS_GLIB_CFLAGS=""
11964 if test "$enable_dbus" = "no"; then
11968 AC_MSG_CHECKING([whether to enable DBUS support])
11969 if test "$test_dbus" = "yes"; then
11971 AC_MSG_RESULT([yes])
11972 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11973 AC_DEFINE(ENABLE_DBUS)
11974 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11975 FilterLibs "${DBUS_LIBS}"
11976 DBUS_LIBS="${filteredlibs}"
11978 # Glib is needed for BluetoothServer
11979 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11980 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11982 DBUS_HAVE_GLIB="TRUE"
11983 AC_DEFINE(DBUS_HAVE_GLIB,1)
11985 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11988 AC_MSG_RESULT([no])
11991 AC_SUBST(ENABLE_DBUS)
11992 AC_SUBST(DBUS_CFLAGS)
11993 AC_SUBST(DBUS_LIBS)
11994 AC_SUBST(DBUS_GLIB_CFLAGS)
11995 AC_SUBST(DBUS_GLIB_LIBS)
11996 AC_SUBST(DBUS_HAVE_GLIB)
11998 AC_MSG_CHECKING([whether to enable Impress remote control])
11999 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12000 AC_MSG_RESULT([yes])
12001 ENABLE_SDREMOTE=TRUE
12002 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
12004 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12006 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12007 # The Bluetooth code doesn't compile with macOS SDK 10.15
12008 if test "$enable_sdremote_bluetooth" = yes; then
12009 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12011 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12012 enable_sdremote_bluetooth=no
12014 # If not explicitly enabled or disabled, default
12015 if test -z "$enable_sdremote_bluetooth"; then
12018 # Default to yes for these
12019 enable_sdremote_bluetooth=yes
12023 enable_sdremote_bluetooth=no
12027 # $enable_sdremote_bluetooth is guaranteed non-empty now
12029 if test "$enable_sdremote_bluetooth" != "no"; then
12030 if test "$OS" = "LINUX"; then
12031 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12032 AC_MSG_RESULT([yes])
12033 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12034 dnl ===================================================================
12035 dnl Check for system bluez
12036 dnl ===================================================================
12037 AC_MSG_CHECKING([which Bluetooth header to use])
12038 if test "$with_system_bluez" = "yes"; then
12039 AC_MSG_RESULT([external])
12040 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12041 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12044 AC_MSG_RESULT([internal])
12048 AC_MSG_RESULT([no, dbus disabled])
12049 ENABLE_SDREMOTE_BLUETOOTH=
12053 AC_MSG_RESULT([yes])
12054 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12056 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12057 <key>com.apple.security.device.bluetooth</key>
12061 AC_MSG_RESULT([no])
12062 ENABLE_SDREMOTE_BLUETOOTH=
12068 AC_MSG_RESULT([no])
12070 AC_SUBST(ENABLE_SDREMOTE)
12071 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12072 AC_SUBST(SDREMOTE_ENTITLEMENT)
12073 AC_SUBST(SYSTEM_BLUEZ)
12075 dnl ===================================================================
12076 dnl Check whether to enable GIO support
12077 dnl ===================================================================
12078 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12079 AC_MSG_CHECKING([whether to enable GIO support])
12080 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12081 dnl Need at least 2.26 for the dbus support.
12082 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12083 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12084 if test "$ENABLE_GIO" = "TRUE"; then
12085 AC_DEFINE(ENABLE_GIO)
12086 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12087 FilterLibs "${GIO_LIBS}"
12088 GIO_LIBS="${filteredlibs}"
12091 AC_MSG_RESULT([no])
12094 AC_SUBST(ENABLE_GIO)
12095 AC_SUBST(GIO_CFLAGS)
12099 dnl ===================================================================
12101 SPLIT_APP_MODULES=""
12102 if test "$enable_split_app_modules" = "yes"; then
12103 SPLIT_APP_MODULES="TRUE"
12105 AC_SUBST(SPLIT_APP_MODULES)
12107 SPLIT_OPT_FEATURES=""
12108 if test "$enable_split_opt_features" = "yes"; then
12109 SPLIT_OPT_FEATURES="TRUE"
12111 AC_SUBST(SPLIT_OPT_FEATURES)
12113 dnl ===================================================================
12114 dnl Check whether the GStreamer libraries are available.
12115 dnl ===================================================================
12117 ENABLE_GSTREAMER_1_0=""
12119 if test "$test_gstreamer_1_0" = yes; then
12121 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12122 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12123 ENABLE_GSTREAMER_1_0="TRUE"
12124 AC_MSG_RESULT([yes])
12125 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12126 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12127 FilterLibs "${GSTREAMER_1_0_LIBS}"
12128 GSTREAMER_1_0_LIBS="${filteredlibs}"
12129 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12131 AC_MSG_RESULT([no])
12134 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12135 AC_SUBST(GSTREAMER_1_0_LIBS)
12136 AC_SUBST(ENABLE_GSTREAMER_1_0)
12138 ENABLE_OPENGL_TRANSITIONS=
12139 ENABLE_OPENGL_CANVAS=
12140 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12142 elif test "$_os" = "Darwin"; then
12143 # We use frameworks on macOS, no need for detail checks
12144 ENABLE_OPENGL_TRANSITIONS=TRUE
12145 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12146 ENABLE_OPENGL_CANVAS=TRUE
12147 elif test $_os = WINNT; then
12148 ENABLE_OPENGL_TRANSITIONS=TRUE
12149 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12150 ENABLE_OPENGL_CANVAS=TRUE
12152 if test "$USING_X11" = TRUE; then
12153 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12154 ENABLE_OPENGL_TRANSITIONS=TRUE
12155 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12156 ENABLE_OPENGL_CANVAS=TRUE
12160 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12161 AC_SUBST(ENABLE_OPENGL_CANVAS)
12163 dnl =================================================
12164 dnl Check whether to build with OpenCL support.
12165 dnl =================================================
12167 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12168 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12169 # platform (optional at run-time, used through clew).
12170 BUILD_TYPE="$BUILD_TYPE OPENCL"
12171 AC_DEFINE(HAVE_FEATURE_OPENCL)
12174 dnl =================================================
12175 dnl Check whether to build with dconf support.
12176 dnl =================================================
12178 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12179 PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12180 if test "$enable_dconf" = yes; then
12181 AC_MSG_ERROR([dconf not found])
12186 AC_MSG_CHECKING([whether to enable dconf])
12187 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12191 AC_MSG_RESULT([no])
12194 AC_DEFINE(ENABLE_DCONF)
12195 AC_MSG_RESULT([yes])
12197 AC_SUBST([DCONF_CFLAGS])
12198 AC_SUBST([DCONF_LIBS])
12199 AC_SUBST([ENABLE_DCONF])
12202 AC_MSG_CHECKING([whether to build the PDF import feature])
12204 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12205 AC_MSG_RESULT([yes])
12206 ENABLE_PDFIMPORT=TRUE
12207 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12209 AC_MSG_RESULT([no])
12213 AC_MSG_CHECKING([whether to build PDFium])
12215 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12216 AC_MSG_RESULT([yes])
12218 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12220 AC_MSG_RESULT([no])
12222 AC_SUBST(ENABLE_PDFIUM)
12224 if test "$ENABLE_PDFIUM" = "TRUE"; then
12225 AC_MSG_CHECKING([which OpenJPEG library to use])
12226 if test "$with_system_openjpeg" = "yes"; then
12227 SYSTEM_OPENJPEG2=TRUE
12228 AC_MSG_RESULT([external])
12229 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12230 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12231 FilterLibs "${OPENJPEG2_LIBS}"
12232 OPENJPEG2_LIBS="${filteredlibs}"
12234 SYSTEM_OPENJPEG2=FALSE
12235 AC_MSG_RESULT([internal])
12238 AC_MSG_CHECKING([which Abseil library to use])
12239 if test "$with_system_abseil" = "yes"; then
12240 AC_MSG_RESULT([external])
12242 AC_LANG_PUSH([C++])
12243 PKG_CHECK_MODULES(ABSEIL, absl_bad_optional_access absl_bad_variant_access absl_inlined_vector )
12245 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12246 FilterLibs "${ABSEIL_LIBS}"
12247 ABSEIL_LIBS="${filteredlibs}"
12249 AC_MSG_RESULT([internal])
12252 AC_SUBST(SYSTEM_OPENJPEG2)
12253 AC_SUBST(SYSTEM_ABSEIL)
12254 AC_SUBST(ABSEIL_CFLAGS)
12255 AC_SUBST(ABSEIL_LIBS)
12257 dnl ===================================================================
12258 dnl Check for poppler
12259 dnl ===================================================================
12261 AC_MSG_CHECKING([whether to build Poppler])
12262 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12263 AC_MSG_RESULT([yes])
12264 ENABLE_POPPLER=TRUE
12265 AC_DEFINE(HAVE_FEATURE_POPPLER)
12267 AC_MSG_RESULT([no])
12269 AC_SUBST(ENABLE_POPPLER)
12271 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12272 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12275 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12276 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12279 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12280 dnl ===================================================================
12281 dnl Check for system poppler
12282 dnl ===================================================================
12283 AC_MSG_CHECKING([which PDF import poppler to use])
12284 if test "$with_system_poppler" = "yes"; then
12285 AC_MSG_RESULT([external])
12286 SYSTEM_POPPLER=TRUE
12287 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12288 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12289 FilterLibs "${POPPLER_LIBS}"
12290 POPPLER_LIBS="${filteredlibs}"
12292 AC_MSG_RESULT([internal])
12294 BUILD_TYPE="$BUILD_TYPE POPPLER"
12296 AC_DEFINE([ENABLE_PDFIMPORT],1)
12298 AC_SUBST(ENABLE_PDFIMPORT)
12299 AC_SUBST(SYSTEM_POPPLER)
12300 AC_SUBST(POPPLER_CFLAGS)
12301 AC_SUBST(POPPLER_LIBS)
12305 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12306 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12307 if test "$SYSTEM_FREETYPE" = TRUE; then
12308 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12309 [skia_freetype_ok=yes],
12310 [skia_freetype_ok=no])
12311 else # internal is ok
12312 skia_freetype_ok=yes
12314 AC_MSG_CHECKING([whether to build Skia])
12315 if test "$skia_freetype_ok" = "yes"; then
12316 if test "$enable_skia" = "debug"; then
12317 AC_MSG_RESULT([yes (debug)])
12318 ENABLE_SKIA_DEBUG=TRUE
12320 AC_MSG_RESULT([yes])
12324 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12325 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12328 AC_DEFINE(HAVE_FEATURE_SKIA)
12329 BUILD_TYPE="$BUILD_TYPE SKIA"
12331 if test "$OS" = "MACOSX"; then
12332 AC_DEFINE(SK_GANESH,1)
12333 AC_DEFINE(SK_METAL,1)
12337 AC_DEFINE(SK_GANESH,1)
12338 AC_DEFINE(SK_VULKAN,1)
12343 AC_MSG_RESULT([no (freetype too old)])
12344 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12348 AC_MSG_CHECKING([whether to build Skia])
12349 AC_MSG_RESULT([no])
12351 AC_SUBST(ENABLE_SKIA)
12352 AC_SUBST(ENABLE_SKIA_DEBUG)
12354 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12355 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12356 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12357 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12358 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12359 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12360 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12361 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12362 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12363 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12365 HAVE_LO_CLANG_DLLEXPORTINLINES=
12367 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12368 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12369 AC_MSG_CHECKING([for Clang])
12370 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12372 if test "$_os" = "WINNT"; then
12373 AC_MSG_CHECKING([for clang-cl])
12374 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12375 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12376 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12377 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12378 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12379 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12381 if test -n "$LO_CLANG_CC"; then
12382 dnl explicitly set -m32/-m64
12383 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12384 LO_CLANG_CXX="$LO_CLANG_CC"
12385 AC_MSG_RESULT([$LO_CLANG_CC])
12387 AC_MSG_RESULT([no])
12390 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12391 echo "#include <stdlib.h>" > conftest.c
12392 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12393 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12394 rm -f conftest.c conftest.obj
12395 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12396 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12398 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12401 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12402 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12405 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12406 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12407 LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12408 if test "$LO_CLANG_VERSION" -lt 50002; then
12409 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12414 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12416 CXX="$LO_CLANG_CXX"
12417 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12418 AC_LANG_PUSH([C++])
12419 save_CXXFLAGS=$CXXFLAGS
12420 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12421 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12422 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12423 AC_MSG_RESULT([yes])
12424 ], [AC_MSG_RESULT([no])])
12425 CXXFLAGS=$save_CXXFLAGS
12428 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12429 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.])
12432 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12433 # Skia is the default on Windows and Mac, so hard-require Clang.
12434 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12435 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12436 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12438 AC_MSG_WARN([Clang compiler not found.])
12443 CXX="$LO_CLANG_CXX"
12444 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12447 flag_sse41=-msse4.1
12448 flag_sse42=-msse4.2
12451 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12452 flag_avx512f=-mavx512f
12456 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12457 AC_LANG_PUSH([C++])
12458 save_CXXFLAGS=$CXXFLAGS
12459 CXXFLAGS="$CXXFLAGS $flag_sse2"
12460 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12461 #include <emmintrin.h>
12463 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12464 c = _mm_xor_si128 (a, b);
12468 [can_compile_sse2=yes],
12469 [can_compile_sse2=no])
12471 CXXFLAGS=$save_CXXFLAGS
12472 AC_MSG_RESULT([${can_compile_sse2}])
12473 if test "${can_compile_sse2}" = "yes" ; then
12474 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12477 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12478 AC_LANG_PUSH([C++])
12479 save_CXXFLAGS=$CXXFLAGS
12480 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12481 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12482 #include <tmmintrin.h>
12484 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12485 c = _mm_maddubs_epi16 (a, b);
12489 [can_compile_ssse3=yes],
12490 [can_compile_ssse3=no])
12492 CXXFLAGS=$save_CXXFLAGS
12493 AC_MSG_RESULT([${can_compile_ssse3}])
12494 if test "${can_compile_ssse3}" = "yes" ; then
12495 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12498 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12499 AC_LANG_PUSH([C++])
12500 save_CXXFLAGS=$CXXFLAGS
12501 CXXFLAGS="$CXXFLAGS $flag_sse41"
12502 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12503 #include <smmintrin.h>
12505 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12506 c = _mm_cmpeq_epi64 (a, b);
12510 [can_compile_sse41=yes],
12511 [can_compile_sse41=no])
12513 CXXFLAGS=$save_CXXFLAGS
12514 AC_MSG_RESULT([${can_compile_sse41}])
12515 if test "${can_compile_sse41}" = "yes" ; then
12516 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12519 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12520 AC_LANG_PUSH([C++])
12521 save_CXXFLAGS=$CXXFLAGS
12522 CXXFLAGS="$CXXFLAGS $flag_sse42"
12523 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12524 #include <nmmintrin.h>
12526 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12527 c = _mm_cmpgt_epi64 (a, b);
12531 [can_compile_sse42=yes],
12532 [can_compile_sse42=no])
12534 CXXFLAGS=$save_CXXFLAGS
12535 AC_MSG_RESULT([${can_compile_sse42}])
12536 if test "${can_compile_sse42}" = "yes" ; then
12537 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12540 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12541 AC_LANG_PUSH([C++])
12542 save_CXXFLAGS=$CXXFLAGS
12543 CXXFLAGS="$CXXFLAGS $flag_avx"
12544 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12545 #include <immintrin.h>
12547 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12548 c = _mm256_xor_ps(a, b);
12552 [can_compile_avx=yes],
12553 [can_compile_avx=no])
12555 CXXFLAGS=$save_CXXFLAGS
12556 AC_MSG_RESULT([${can_compile_avx}])
12557 if test "${can_compile_avx}" = "yes" ; then
12558 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12561 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12562 AC_LANG_PUSH([C++])
12563 save_CXXFLAGS=$CXXFLAGS
12564 CXXFLAGS="$CXXFLAGS $flag_avx2"
12565 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12566 #include <immintrin.h>
12568 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12569 c = _mm256_maddubs_epi16(a, b);
12573 [can_compile_avx2=yes],
12574 [can_compile_avx2=no])
12576 CXXFLAGS=$save_CXXFLAGS
12577 AC_MSG_RESULT([${can_compile_avx2}])
12578 if test "${can_compile_avx2}" = "yes" ; then
12579 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12582 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12583 AC_LANG_PUSH([C++])
12584 save_CXXFLAGS=$CXXFLAGS
12585 CXXFLAGS="$CXXFLAGS $flag_avx512"
12586 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12587 #include <immintrin.h>
12589 __m512i a = _mm512_loadu_si512(0);
12590 __m512d v1 = _mm512_load_pd(0);
12591 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12592 __m512d v2 = _mm512_abs_pd(v1);
12596 [can_compile_avx512=yes],
12597 [can_compile_avx512=no])
12599 CXXFLAGS=$save_CXXFLAGS
12600 AC_MSG_RESULT([${can_compile_avx512}])
12601 if test "${can_compile_avx512}" = "yes" ; then
12602 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12603 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12606 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12607 AC_LANG_PUSH([C++])
12608 save_CXXFLAGS=$CXXFLAGS
12609 CXXFLAGS="$CXXFLAGS $flag_f16c"
12610 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12611 #include <immintrin.h>
12613 __m128i a = _mm_set1_epi32 (0);
12615 c = _mm_cvtph_ps(a);
12619 [can_compile_f16c=yes],
12620 [can_compile_f16c=no])
12622 CXXFLAGS=$save_CXXFLAGS
12623 AC_MSG_RESULT([${can_compile_f16c}])
12624 if test "${can_compile_f16c}" = "yes" ; then
12625 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12628 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12629 AC_LANG_PUSH([C++])
12630 save_CXXFLAGS=$CXXFLAGS
12631 CXXFLAGS="$CXXFLAGS $flag_fma"
12632 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12633 #include <immintrin.h>
12635 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12636 d = _mm256_fmadd_ps(a, b, c);
12640 [can_compile_fma=yes],
12641 [can_compile_fma=no])
12643 CXXFLAGS=$save_CXXFLAGS
12644 AC_MSG_RESULT([${can_compile_fma}])
12645 if test "${can_compile_fma}" = "yes" ; then
12646 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12653 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12655 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12656 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12660 save_CFLAGS=$CFLAGS
12661 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12662 dnl an empty program will do, we're checking the compiler flags
12663 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12664 [use_ccache=yes], [use_ccache=no])
12665 CFLAGS=$save_CFLAGS
12667 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12668 AC_MSG_RESULT([yes])
12670 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12671 AC_MSG_RESULT([no])
12675 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12676 AC_LANG_PUSH([C++])
12678 CXX="$LO_CLANG_CXX"
12679 save_CXXFLAGS=$CXXFLAGS
12680 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12681 dnl an empty program will do, we're checking the compiler flags
12682 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12683 [use_ccache=yes], [use_ccache=no])
12684 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12685 AC_MSG_RESULT([yes])
12687 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12688 AC_MSG_RESULT([no])
12690 CXXFLAGS=$save_CXXFLAGS
12695 AC_SUBST(LO_CLANG_CC)
12696 AC_SUBST(LO_CLANG_CXX)
12697 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12698 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12699 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12700 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12701 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12702 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12703 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12704 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12705 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12706 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12707 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12708 AC_SUBST(LO_CLANG_VERSION)
12709 AC_SUBST(CLANG_USE_LD)
12710 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12714 AC_MSG_CHECKING([whether to enable gpgmepp])
12715 if test "$enable_gpgmepp" = no; then
12716 AC_MSG_RESULT([no])
12717 elif test "$enable_mpl_subset" = "yes"; then
12718 AC_MSG_RESULT([no (MPL only)])
12719 elif test "$enable_fuzzers" = "yes"; then
12720 AC_MSG_RESULT([no (oss-fuzz)])
12721 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12722 AC_MSG_RESULT([yes])
12723 dnl ===================================================================
12724 dnl Check for system gpgme
12725 dnl ===================================================================
12726 AC_MSG_CHECKING([which gpgmepp to use])
12727 if test "$with_system_gpgmepp" = "yes"; then
12728 AC_MSG_RESULT([external])
12729 SYSTEM_GPGMEPP=TRUE
12731 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12732 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12733 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12734 AC_CHECK_HEADER(gpgme.h, [],
12735 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12736 AC_CHECK_LIB(gpgmepp, main, [],
12737 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12738 GPGMEPP_LIBS=-lgpgmepp
12740 AC_MSG_RESULT([internal])
12741 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12743 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12744 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12745 if test "$_os" != "WINNT"; then
12746 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12747 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12750 ENABLE_GPGMEPP=TRUE
12751 AC_DEFINE([HAVE_FEATURE_GPGME])
12752 AC_PATH_PROG(GPG, gpg)
12753 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12754 # so let's exclude that manually for the moment
12755 if test -n "$GPG" -a "$_os" != "WINNT"; then
12756 # make sure we not only have a working gpgme, but a full working
12757 # gpg installation to run OpenPGP signature verification
12758 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12760 if test "$_os" = "Linux"; then
12762 AC_MSG_CHECKING([for /run/user/$uid])
12763 if test -d /run/user/$uid; then
12764 AC_MSG_RESULT([yes])
12765 AC_PATH_PROG(GPGCONF, gpgconf)
12767 # Older versions of gpgconf are not working as expected, since
12768 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12769 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12770 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12771 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12772 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12773 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12774 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12775 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12776 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12777 if $GPGCONF --dump-options > /dev/null ; then
12778 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12779 AC_MSG_RESULT([yes])
12780 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12781 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12783 AC_MSG_RESULT([no])
12786 AC_MSG_RESULT([no. missing or broken gpgconf?])
12789 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12792 AC_MSG_RESULT([no])
12796 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12798 AC_SUBST(ENABLE_GPGMEPP)
12799 AC_SUBST(SYSTEM_GPGMEPP)
12800 AC_SUBST(GPG_ERROR_CFLAGS)
12801 AC_SUBST(GPG_ERROR_LIBS)
12802 AC_SUBST(LIBASSUAN_CFLAGS)
12803 AC_SUBST(LIBASSUAN_LIBS)
12804 AC_SUBST(GPGMEPP_CFLAGS)
12805 AC_SUBST(GPGMEPP_LIBS)
12807 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12808 if test "$with_java" != "no"; then
12809 AC_MSG_RESULT([yes])
12810 ENABLE_JAVA_WEBSOCKET=TRUE
12811 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12814 AC_MSG_RESULT([no])
12815 ENABLE_JAVA_WEBSOCKET=
12817 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12819 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12820 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12821 AC_MSG_RESULT([yes])
12822 ENABLE_MEDIAWIKI=TRUE
12823 BUILD_TYPE="$BUILD_TYPE XSLTML"
12824 if test "x$with_java" = "xno"; then
12825 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12828 AC_MSG_RESULT([no])
12830 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12832 AC_SUBST(ENABLE_MEDIAWIKI)
12834 AC_MSG_CHECKING([whether to build the Report Builder])
12835 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12836 AC_MSG_RESULT([yes])
12837 ENABLE_REPORTBUILDER=TRUE
12838 AC_MSG_CHECKING([which jfreereport libs to use])
12839 if test "$with_system_jfreereport" = "yes"; then
12840 SYSTEM_JFREEREPORT=TRUE
12841 AC_MSG_RESULT([external])
12842 if test -z $SAC_JAR; then
12843 SAC_JAR=/usr/share/java/sac.jar
12845 if ! test -f $SAC_JAR; then
12846 AC_MSG_ERROR(sac.jar not found.)
12849 if test -z $LIBXML_JAR; then
12850 if test -f /usr/share/java/libxml-1.0.0.jar; then
12851 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12852 elif test -f /usr/share/java/libxml.jar; then
12853 LIBXML_JAR=/usr/share/java/libxml.jar
12855 AC_MSG_ERROR(libxml.jar replacement not found.)
12857 elif ! test -f $LIBXML_JAR; then
12858 AC_MSG_ERROR(libxml.jar not found.)
12861 if test -z $FLUTE_JAR; then
12862 if test -f /usr/share/java/flute-1.3.0.jar; then
12863 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12864 elif test -f /usr/share/java/flute.jar; then
12865 FLUTE_JAR=/usr/share/java/flute.jar
12867 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12869 elif ! test -f $FLUTE_JAR; then
12870 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12873 if test -z $JFREEREPORT_JAR; then
12874 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12875 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12876 elif test -f /usr/share/java/flow-engine.jar; then
12877 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12879 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12881 elif ! test -f $JFREEREPORT_JAR; then
12882 AC_MSG_ERROR(jfreereport.jar not found.)
12885 if test -z $LIBLAYOUT_JAR; then
12886 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12887 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12888 elif test -f /usr/share/java/liblayout.jar; then
12889 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12891 AC_MSG_ERROR(liblayout.jar replacement not found.)
12893 elif ! test -f $LIBLAYOUT_JAR; then
12894 AC_MSG_ERROR(liblayout.jar not found.)
12897 if test -z $LIBLOADER_JAR; then
12898 if test -f /usr/share/java/libloader-1.0.0.jar; then
12899 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12900 elif test -f /usr/share/java/libloader.jar; then
12901 LIBLOADER_JAR=/usr/share/java/libloader.jar
12903 AC_MSG_ERROR(libloader.jar replacement not found.)
12905 elif ! test -f $LIBLOADER_JAR; then
12906 AC_MSG_ERROR(libloader.jar not found.)
12909 if test -z $LIBFORMULA_JAR; then
12910 if test -f /usr/share/java/libformula-0.2.0.jar; then
12911 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12912 elif test -f /usr/share/java/libformula.jar; then
12913 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12915 AC_MSG_ERROR(libformula.jar replacement not found.)
12917 elif ! test -f $LIBFORMULA_JAR; then
12918 AC_MSG_ERROR(libformula.jar not found.)
12921 if test -z $LIBREPOSITORY_JAR; then
12922 if test -f /usr/share/java/librepository-1.0.0.jar; then
12923 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12924 elif test -f /usr/share/java/librepository.jar; then
12925 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12927 AC_MSG_ERROR(librepository.jar replacement not found.)
12929 elif ! test -f $LIBREPOSITORY_JAR; then
12930 AC_MSG_ERROR(librepository.jar not found.)
12933 if test -z $LIBFONTS_JAR; then
12934 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12935 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12936 elif test -f /usr/share/java/libfonts.jar; then
12937 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12939 AC_MSG_ERROR(libfonts.jar replacement not found.)
12941 elif ! test -f $LIBFONTS_JAR; then
12942 AC_MSG_ERROR(libfonts.jar not found.)
12945 if test -z $LIBSERIALIZER_JAR; then
12946 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12947 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12948 elif test -f /usr/share/java/libserializer.jar; then
12949 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12951 AC_MSG_ERROR(libserializer.jar replacement not found.)
12953 elif ! test -f $LIBSERIALIZER_JAR; then
12954 AC_MSG_ERROR(libserializer.jar not found.)
12957 if test -z $LIBBASE_JAR; then
12958 if test -f /usr/share/java/libbase-1.0.0.jar; then
12959 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12960 elif test -f /usr/share/java/libbase.jar; then
12961 LIBBASE_JAR=/usr/share/java/libbase.jar
12963 AC_MSG_ERROR(libbase.jar replacement not found.)
12965 elif ! test -f $LIBBASE_JAR; then
12966 AC_MSG_ERROR(libbase.jar not found.)
12970 AC_MSG_RESULT([internal])
12971 SYSTEM_JFREEREPORT=
12972 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12975 BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
12977 AC_MSG_RESULT([no])
12978 ENABLE_REPORTBUILDER=
12979 SYSTEM_JFREEREPORT=
12981 AC_SUBST(ENABLE_REPORTBUILDER)
12982 AC_SUBST(SYSTEM_JFREEREPORT)
12984 AC_SUBST(LIBXML_JAR)
12985 AC_SUBST(FLUTE_JAR)
12986 AC_SUBST(JFREEREPORT_JAR)
12987 AC_SUBST(LIBBASE_JAR)
12988 AC_SUBST(LIBLAYOUT_JAR)
12989 AC_SUBST(LIBLOADER_JAR)
12990 AC_SUBST(LIBFORMULA_JAR)
12991 AC_SUBST(LIBREPOSITORY_JAR)
12992 AC_SUBST(LIBFONTS_JAR)
12993 AC_SUBST(LIBSERIALIZER_JAR)
12995 # scripting provider for BeanShell?
12996 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12997 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12998 AC_MSG_RESULT([yes])
12999 ENABLE_SCRIPTING_BEANSHELL=TRUE
13001 dnl ===================================================================
13002 dnl Check for system beanshell
13003 dnl ===================================================================
13004 AC_MSG_CHECKING([which beanshell to use])
13005 if test "$with_system_beanshell" = "yes"; then
13006 AC_MSG_RESULT([external])
13008 if test -z $BSH_JAR; then
13009 BSH_JAR=/usr/share/java/bsh.jar
13011 if ! test -f $BSH_JAR; then
13012 AC_MSG_ERROR(bsh.jar not found.)
13015 AC_MSG_RESULT([internal])
13017 BUILD_TYPE="$BUILD_TYPE BSH"
13020 AC_MSG_RESULT([no])
13021 ENABLE_SCRIPTING_BEANSHELL=
13022 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13024 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13025 AC_SUBST(SYSTEM_BSH)
13028 # scripting provider for JavaScript?
13029 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13030 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13031 AC_MSG_RESULT([yes])
13032 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13034 dnl ===================================================================
13035 dnl Check for system rhino
13036 dnl ===================================================================
13037 AC_MSG_CHECKING([which rhino to use])
13038 if test "$with_system_rhino" = "yes"; then
13039 AC_MSG_RESULT([external])
13041 if test -z $RHINO_JAR; then
13042 RHINO_JAR=/usr/share/java/js.jar
13044 if ! test -f $RHINO_JAR; then
13045 AC_MSG_ERROR(js.jar not found.)
13048 AC_MSG_RESULT([internal])
13050 BUILD_TYPE="$BUILD_TYPE RHINO"
13054 AC_MSG_RESULT([no])
13055 ENABLE_SCRIPTING_JAVASCRIPT=
13056 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13058 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13059 AC_SUBST(SYSTEM_RHINO)
13060 AC_SUBST(RHINO_JAR)
13062 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13063 # paths should be added to library search path. So lets put all 64-bit
13066 case "$host_cpu" in
13067 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13068 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13069 supports_multilib="yes"
13076 dnl ===================================================================
13077 dnl QT5 Integration
13078 dnl ===================================================================
13084 QT5_GOBJECT_CFLAGS=""
13085 QT5_GOBJECT_LIBS=""
13086 QT5_HAVE_GOBJECT=""
13087 QT5_PLATFORMS_SRCDIR=""
13088 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13089 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13090 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13092 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13093 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13095 if test -n "$supports_multilib"; then
13096 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13099 qt5_test_include="QtWidgets/qapplication.h"
13100 if test "$_os" = "Emscripten"; then
13101 qt5_test_library="libQt5Widgets.a"
13103 qt5_test_library="libQt5Widgets.so"
13106 dnl Check for qmake5
13107 if test -n "$QT5DIR"; then
13108 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13110 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13112 if test "$QMAKE5" = "no"; then
13113 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13115 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13116 if test -z "$qmake5_test_ver"; then
13117 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13119 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13120 qt5_minimal_minor="15"
13121 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13122 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13124 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13128 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13129 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13130 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13131 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13133 AC_MSG_CHECKING([for Qt5 headers])
13135 for inc_dir in $qt5_incdirs; do
13136 if test -r "$inc_dir/$qt5_test_include"; then
13137 qt5_incdir="$inc_dir"
13141 AC_MSG_RESULT([$qt5_incdir])
13142 if test "x$qt5_incdir" = "xno"; then
13143 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13145 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13146 AC_LANG_PUSH([C++])
13147 save_CPPFLAGS=$CPPFLAGS
13148 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13149 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13150 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13151 CPPFLAGS=$save_CPPFLAGS
13154 AC_MSG_CHECKING([for Qt5 libraries])
13156 for lib_dir in $qt5_libdirs; do
13157 if test -r "$lib_dir/$qt5_test_library"; then
13158 qt5_libdir="$lib_dir"
13162 AC_MSG_RESULT([$qt5_libdir])
13163 if test "x$qt5_libdir" = "xno"; then
13164 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13167 if test "$_os" = "Emscripten"; then
13168 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13169 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13171 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13172 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13175 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13176 if ! test -x "$EMSDK_LLVM_NM"; then
13177 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13179 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13180 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13182 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13183 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13184 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13186 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13187 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13191 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13192 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13193 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13194 if test "$_os" = "Emscripten"; then
13195 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13198 if test "$USING_X11" = TRUE; then
13199 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13200 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13201 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13203 AC_DEFINE(QT5_USING_X11)
13206 dnl Check for Meta Object Compiler
13208 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13209 if test "$MOC5" = "no"; then
13210 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13211 the root of your Qt installation by exporting QT5DIR before running "configure".])
13214 if test "$test_gstreamer_1_0" = yes; then
13215 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13217 AC_DEFINE(QT5_HAVE_GOBJECT)
13219 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13223 AC_SUBST(QT5_CFLAGS)
13226 AC_SUBST(QT5_GOBJECT_CFLAGS)
13227 AC_SUBST(QT5_GOBJECT_LIBS)
13228 AC_SUBST(QT5_HAVE_GOBJECT)
13229 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13231 dnl ===================================================================
13232 dnl QT6 Integration
13233 dnl ===================================================================
13239 QT6_PLATFORMS_SRCDIR=""
13240 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13241 \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13243 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13244 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13246 if test -n "$supports_multilib"; then
13247 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13250 qt6_test_include="QtWidgets/qapplication.h"
13251 if test "$_os" = "Emscripten"; then
13252 qt6_test_library="libQt6Widgets.a"
13254 qt6_test_library="libQt6Widgets.so"
13257 dnl Check for qmake6
13258 if test -n "$QT6DIR"; then
13259 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13261 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13263 if test "$QMAKE6" = "no"; then
13264 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13266 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13267 if test -z "$qmake6_test_ver"; then
13268 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13270 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13273 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13274 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13275 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13276 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13278 AC_MSG_CHECKING([for Qt6 headers])
13280 for inc_dir in $qt6_incdirs; do
13281 if test -r "$inc_dir/$qt6_test_include"; then
13282 qt6_incdir="$inc_dir"
13286 AC_MSG_RESULT([$qt6_incdir])
13287 if test "x$qt6_incdir" = "xno"; then
13288 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13290 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13291 AC_LANG_PUSH([C++])
13292 save_CPPFLAGS=$CPPFLAGS
13293 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13294 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13295 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13296 CPPFLAGS=$save_CPPFLAGS
13299 AC_MSG_CHECKING([for Qt6 libraries])
13301 for lib_dir in $qt6_libdirs; do
13302 if test -r "$lib_dir/$qt6_test_library"; then
13303 qt6_libdir="$lib_dir"
13307 AC_MSG_RESULT([$qt6_libdir])
13308 if test "x$qt6_libdir" = "xno"; then
13309 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13312 if test "$_os" = "Emscripten"; then
13313 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13314 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13316 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13317 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13321 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13322 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13323 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13324 if test "$_os" = "Emscripten"; then
13325 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13328 if test "$USING_X11" = TRUE; then
13329 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13330 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13331 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13333 AC_DEFINE(QT6_USING_X11)
13336 dnl Check for Meta Object Compiler
13338 for lib_dir in $qt6_libdirs; do
13339 if test -z "$qt6_libexec_dirs"; then
13340 qt6_libexec_dirs="$lib_dir/libexec"
13342 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13345 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
13346 if test "$MOC6" = "no"; then
13347 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13348 the root of your Qt installation by exporting QT6DIR before running "configure".])
13350 moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13351 if test -z "$moc6_test_ver"; then
13352 AC_MSG_ERROR([Wrong moc for Qt6 found.])
13354 AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13357 AC_SUBST(QT6_CFLAGS)
13360 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13362 dnl ===================================================================
13363 dnl KF5 Integration
13364 dnl ===================================================================
13368 KF5_CONFIG="kf5-config"
13369 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13370 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13372 if test "$OS" = "HAIKU"; then
13373 haiku_arch="`echo $RTL_ARCH | tr X x`"
13374 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13375 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13378 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13379 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13380 if test -n "$supports_multilib"; then
13381 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13384 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13385 kf5_test_library="libKF5KIOFileWidgets.so"
13386 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13388 dnl kf5 KDE4 support compatibility installed
13389 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13390 if test "$KF5_CONFIG" != "no"; then
13391 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13392 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13395 dnl Check for KF5 headers
13396 AC_MSG_CHECKING([for KF5 headers])
13398 for kf5_check in $kf5_incdirs; do
13399 if test -r "$kf5_check/$kf5_test_include"; then
13400 kf5_incdir="$kf5_check/KF5"
13404 AC_MSG_RESULT([$kf5_incdir])
13405 if test "x$kf5_incdir" = "xno"; then
13406 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13409 dnl Check for KF5 libraries
13410 AC_MSG_CHECKING([for KF5 libraries])
13412 for kf5_check in $kf5_libdirs; do
13413 if test -r "$kf5_check/$kf5_test_library"; then
13414 kf5_libdir="$kf5_check"
13419 AC_MSG_RESULT([$kf5_libdir])
13420 if test "x$kf5_libdir" = "xno"; then
13421 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13424 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"
13425 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13426 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13428 if test "$USING_X11" = TRUE; then
13429 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13432 AC_LANG_PUSH([C++])
13433 save_CXXFLAGS=$CXXFLAGS
13434 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13435 AC_MSG_CHECKING([whether KDE is >= 5.0])
13436 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13437 #include <kcoreaddons_version.h>
13439 int main(int argc, char **argv) {
13440 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13443 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13444 CXXFLAGS=$save_CXXFLAGS
13447 AC_SUBST(KF5_CFLAGS)
13450 dnl ===================================================================
13451 dnl KF6 Integration
13452 dnl ===================================================================
13456 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13458 if test "$OS" = "HAIKU"; then
13459 haiku_arch="`echo $RTL_ARCH | tr X x`"
13460 kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13461 kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13464 kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13465 kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13466 if test -n "$supports_multilib"; then
13467 kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13470 kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13471 kf6_test_library="libKF6KIOFileWidgets.so"
13472 kf6_libdirs="$qt6_libdir $kf6_libdirs"
13474 dnl Check for KF6 headers
13475 AC_MSG_CHECKING([for KF6 headers])
13477 for kf6_check in $kf6_incdirs; do
13478 if test -r "$kf6_check/$kf6_test_include"; then
13479 kf6_incdir="$kf6_check/KF6"
13483 AC_MSG_RESULT([$kf6_incdir])
13484 if test "x$kf6_incdir" = "xno"; then
13485 AC_MSG_ERROR([KF6 headers not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13488 dnl Check for KF6 libraries
13489 AC_MSG_CHECKING([for KF6 libraries])
13491 for kf6_check in $kf6_libdirs; do
13492 if test -r "$kf6_check/$kf6_test_library"; then
13493 kf6_libdir="$kf6_check"
13498 AC_MSG_RESULT([$kf6_libdir])
13499 if test "x$kf6_libdir" = "xno"; then
13500 AC_MSG_ERROR([KF6 libraries not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13503 KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13504 KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13505 KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13507 AC_LANG_PUSH([C++])
13508 save_CXXFLAGS=$CXXFLAGS
13509 CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13510 dnl KF6 development version as of 2023-06 uses version number 5.240
13511 AC_MSG_CHECKING([whether KDE is >= 5.240])
13512 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13513 #include <kcoreaddons_version.h>
13515 int main(int argc, char **argv) {
13516 if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13519 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13520 CXXFLAGS=$save_CXXFLAGS
13523 AC_SUBST(KF6_CFLAGS)
13526 dnl ===================================================================
13527 dnl Test whether to include Evolution 2 support
13528 dnl ===================================================================
13529 AC_MSG_CHECKING([whether to enable evolution 2 support])
13530 if test "$enable_evolution2" = yes; then
13531 AC_MSG_RESULT([yes])
13532 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13533 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13534 FilterLibs "${GOBJECT_LIBS}"
13535 GOBJECT_LIBS="${filteredlibs}"
13536 ENABLE_EVOAB2="TRUE"
13538 AC_MSG_RESULT([no])
13540 AC_SUBST(ENABLE_EVOAB2)
13541 AC_SUBST(GOBJECT_CFLAGS)
13542 AC_SUBST(GOBJECT_LIBS)
13544 dnl ===================================================================
13545 dnl Test which themes to include
13546 dnl ===================================================================
13547 AC_MSG_CHECKING([which themes to include])
13548 # if none given use default subset of available themes
13549 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13550 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_dark sukapura_dark_svg sukapura_svg"
13554 if test "x$with_theme" != "xno"; then
13555 for theme in $with_theme; do
13557 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) WITH_THEMES="${WITH_THEMES:+$WITH_THEMES }$theme" ;;
13558 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13562 AC_MSG_RESULT([$WITH_THEMES])
13563 AC_SUBST([WITH_THEMES])
13565 ###############################################################################
13566 # Extensions checking
13567 ###############################################################################
13568 AC_MSG_CHECKING([for extensions integration])
13569 if test "x$enable_extension_integration" != "xno"; then
13570 WITH_EXTENSION_INTEGRATION=TRUE
13571 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13572 AC_MSG_RESULT([yes, use integration])
13574 WITH_EXTENSION_INTEGRATION=
13575 AC_MSG_RESULT([no, do not integrate])
13577 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13579 dnl Should any extra extensions be included?
13580 dnl There are standalone tests for each of these below.
13581 WITH_EXTRA_EXTENSIONS=
13582 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13584 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13585 if test "x$with_java" != "xno"; then
13586 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13589 AC_MSG_CHECKING([whether to build opens___.ttf])
13590 if test "$enable_build_opensymbol" = "yes"; then
13591 AC_MSG_RESULT([yes])
13592 AC_PATH_PROG(FONTFORGE, fontforge)
13593 if test -z "$FONTFORGE"; then
13594 AC_MSG_ERROR([fontforge not installed])
13597 AC_MSG_RESULT([no])
13598 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13600 AC_SUBST(FONTFORGE)
13602 dnl ===================================================================
13603 dnl Test whether to include fonts
13604 dnl ===================================================================
13605 AC_MSG_CHECKING([whether to include third-party fonts])
13606 if test "$with_fonts" != "no"; then
13607 AC_MSG_RESULT([yes])
13609 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13610 AC_DEFINE(HAVE_MORE_FONTS)
13612 AC_MSG_RESULT([no])
13614 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13616 AC_SUBST(WITH_FONTS)
13619 dnl ===================================================================
13620 dnl Test whether to enable online update service
13621 dnl ===================================================================
13622 AC_MSG_CHECKING([whether to enable online update])
13623 ENABLE_ONLINE_UPDATE=
13624 if test "$enable_online_update" = ""; then
13625 AC_MSG_RESULT([no])
13627 if test "$enable_online_update" = "mar"; then
13628 AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13629 elif test "$enable_online_update" = "yes"; then
13630 if test "$enable_curl" != "yes"; then
13631 AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13633 AC_MSG_RESULT([yes])
13634 ENABLE_ONLINE_UPDATE="TRUE"
13636 AC_MSG_RESULT([no])
13639 AC_SUBST(ENABLE_ONLINE_UPDATE)
13642 dnl ===================================================================
13643 dnl Test whether to enable mar online update service
13644 dnl ===================================================================
13645 AC_MSG_CHECKING([whether to enable mar online update])
13646 ENABLE_ONLINE_UPDATE_MAR=
13647 if test "$enable_online_update_mar" = yes; then
13648 AC_MSG_RESULT([yes])
13649 BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13650 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13651 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13653 AC_MSG_RESULT([no])
13655 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13657 AC_MSG_CHECKING([for mar online update baseurl])
13658 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13659 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13660 AC_MSG_RESULT([yes])
13662 AC_MSG_RESULT([no])
13664 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13666 AC_MSG_CHECKING([for mar online update certificateder])
13667 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13668 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13669 AC_MSG_RESULT([yes])
13671 AC_MSG_RESULT([no])
13673 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13675 AC_MSG_CHECKING([for mar online update certificatename])
13676 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13677 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13678 AC_MSG_RESULT([yes])
13680 AC_MSG_RESULT([no])
13682 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13684 AC_MSG_CHECKING([for mar online update certificatepath])
13685 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13686 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13687 AC_MSG_RESULT([yes])
13689 AC_MSG_RESULT([no])
13691 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13694 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13695 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13696 if test "x$with_privacy_policy_url" = "xundefined"; then
13697 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13700 AC_SUBST(PRIVACY_POLICY_URL)
13701 dnl ===================================================================
13702 dnl Test whether we need bzip2
13703 dnl ===================================================================
13705 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13706 AC_MSG_CHECKING([whether to use system bzip2])
13707 if test "$with_system_bzip2" = yes; then
13709 AC_MSG_RESULT([yes])
13710 PKG_CHECK_MODULES(BZIP2, bzip2)
13711 FilterLibs "${BZIP2_LIBS}"
13712 BZIP2_LIBS="${filteredlibs}"
13714 AC_MSG_RESULT([no])
13715 BUILD_TYPE="$BUILD_TYPE BZIP2"
13718 AC_SUBST(SYSTEM_BZIP2)
13719 AC_SUBST(BZIP2_CFLAGS)
13720 AC_SUBST(BZIP2_LIBS)
13722 dnl ===================================================================
13723 dnl Test whether to enable extension update
13724 dnl ===================================================================
13725 AC_MSG_CHECKING([whether to enable extension update])
13726 ENABLE_EXTENSION_UPDATE=
13727 if test "x$enable_extension_update" = "xno"; then
13728 AC_MSG_RESULT([no])
13730 AC_MSG_RESULT([yes])
13731 ENABLE_EXTENSION_UPDATE="TRUE"
13732 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13733 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13735 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13738 dnl ===================================================================
13739 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13740 dnl ===================================================================
13741 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13742 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13743 AC_MSG_RESULT([no])
13746 AC_MSG_RESULT([yes])
13747 ENABLE_SILENT_MSI=TRUE
13748 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13750 AC_SUBST(ENABLE_SILENT_MSI)
13752 dnl ===================================================================
13753 dnl Check for WiX tools.
13754 dnl ===================================================================
13755 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13756 AC_MSG_RESULT([no])
13759 AC_MSG_RESULT([yes])
13760 # FIXME: this should do proper detection, but the path is currently
13761 # hardcoded in msicreator/createmsi.py
13762 if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13763 AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13767 AC_SUBST(ENABLE_WIX)
13769 AC_MSG_CHECKING([whether and how to use Xinerama])
13770 if test "$USING_X11" = TRUE; then
13771 if test "$x_libraries" = "default_x_libraries"; then
13772 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13773 if test "x$XINERAMALIB" = x; then
13774 XINERAMALIB="/usr/lib"
13777 XINERAMALIB="$x_libraries"
13779 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13780 # we have both versions, let the user decide but use the dynamic one
13783 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13784 XINERAMA_LINK=dynamic
13786 XINERAMA_LINK=static
13788 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13789 # we have only the dynamic version
13791 XINERAMA_LINK=dynamic
13792 elif test -e "$XINERAMALIB/libXinerama.a"; then
13794 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13796 XINERAMA_LINK=static
13806 if test "$USE_XINERAMA" = "TRUE"; then
13807 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13808 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13809 [AC_MSG_ERROR(Xinerama header not found.)], [])
13810 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13811 if test "x$XEXTLIB" = x; then
13812 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13814 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13815 if test "$_os" = "FreeBSD"; then
13816 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13818 if test "$_os" = "Linux"; then
13819 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13821 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13822 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13824 AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13829 AC_MSG_RESULT([no])
13831 AC_SUBST(XINERAMA_LINK)
13833 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13834 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13835 enable_cairo_rgba=yes
13837 if test "$enable_cairo_rgba" = yes; then
13838 AC_DEFINE(ENABLE_CAIRO_RGBA)
13839 ENABLE_CAIRO_RGBA=TRUE
13840 AC_MSG_RESULT([yes])
13843 AC_MSG_RESULT([no])
13845 AC_SUBST(ENABLE_CAIRO_RGBA)
13847 dnl ===================================================================
13848 dnl Test whether to build cairo or rely on the system version
13849 dnl ===================================================================
13851 if test "$test_cairo" = "yes"; then
13852 AC_MSG_CHECKING([whether to use the system cairo])
13854 : ${with_system_cairo:=$with_system_libs}
13855 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13857 AC_MSG_RESULT([yes])
13859 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13860 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13861 FilterLibs "${CAIRO_LIBS}"
13862 CAIRO_LIBS="${filteredlibs}"
13864 if test "$test_xrender" = "yes"; then
13865 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13867 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13868 #ifdef PictStandardA8
13872 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13877 AC_MSG_RESULT([no])
13878 BUILD_TYPE="$BUILD_TYPE CAIRO"
13881 if test "$enable_cairo_canvas" != no; then
13882 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13883 ENABLE_CAIRO_CANVAS=TRUE
13887 AC_SUBST(CAIRO_CFLAGS)
13888 AC_SUBST(CAIRO_LIBS)
13889 AC_SUBST(ENABLE_CAIRO_CANVAS)
13890 AC_SUBST(SYSTEM_CAIRO)
13892 dnl ===================================================================
13893 dnl Test whether to use avahi
13894 dnl ===================================================================
13895 if test "$_os" = "WINNT"; then
13896 # Windows uses bundled mDNSResponder
13897 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13898 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13899 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13900 [ENABLE_AVAHI="TRUE"])
13901 AC_DEFINE(HAVE_FEATURE_AVAHI)
13902 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13903 FilterLibs "${AVAHI_LIBS}"
13904 AVAHI_LIBS="${filteredlibs}"
13907 AC_SUBST(ENABLE_AVAHI)
13908 AC_SUBST(AVAHI_CFLAGS)
13909 AC_SUBST(AVAHI_LIBS)
13911 dnl ===================================================================
13912 dnl Test whether to use liblangtag
13913 dnl ===================================================================
13915 AC_MSG_CHECKING([whether to use system liblangtag])
13916 if test "$with_system_liblangtag" = yes; then
13917 SYSTEM_LIBLANGTAG=TRUE
13918 AC_MSG_RESULT([yes])
13919 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13920 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13921 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13922 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13923 FilterLibs "${LIBLANGTAG_LIBS}"
13924 LIBLANGTAG_LIBS="${filteredlibs}"
13927 AC_MSG_RESULT([no])
13928 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13929 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13930 if test "$COM" = "MSC"; then
13931 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13933 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13936 AC_SUBST(SYSTEM_LIBLANGTAG)
13937 AC_SUBST(LIBLANGTAG_CFLAGS)
13938 AC_SUBST(LIBLANGTAG_LIBS)
13940 dnl ===================================================================
13941 dnl Test whether to build libpng or rely on the system version
13942 dnl ===================================================================
13944 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13945 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13946 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13948 dnl ===================================================================
13949 dnl Test whether to build libtiff or rely on the system version
13950 dnl ===================================================================
13952 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13954 dnl ===================================================================
13955 dnl Test whether to build libwebp or rely on the system version
13956 dnl ===================================================================
13958 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13960 dnl ===================================================================
13961 dnl Check for runtime JVM search path
13962 dnl ===================================================================
13963 if test "$ENABLE_JAVA" != ""; then
13964 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13965 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13966 AC_MSG_RESULT([yes])
13967 if ! test -d "$with_jvm_path"; then
13968 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13970 if ! test -d "$with_jvm_path"jvm; then
13971 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13973 JVM_ONE_PATH_CHECK="$with_jvm_path"
13974 AC_SUBST(JVM_ONE_PATH_CHECK)
13976 AC_MSG_RESULT([no])
13980 dnl ===================================================================
13981 dnl Test for the presence of Ant and that it works
13982 dnl ===================================================================
13984 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13985 # breaks filename decoding, so for the ant section, set it to LANG
13987 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13988 ANT_HOME=; export ANT_HOME
13989 WITH_ANT_HOME=; export WITH_ANT_HOME
13990 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13991 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13992 if test "$_os" = "WINNT"; then
13993 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13995 with_ant_home="$LODE_HOME/opt/ant"
13997 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13998 with_ant_home="$LODE_HOME/opt/ant"
14001 if test -z "$with_ant_home"; then
14002 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14004 if test "$_os" = "WINNT"; then
14005 # AC_PATH_PROGS needs unix path
14006 with_ant_home=`cygpath -u "$with_ant_home"`
14008 AbsolutePath "$with_ant_home"
14009 with_ant_home=$absolute_path
14010 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14011 WITH_ANT_HOME=$with_ant_home
14012 ANT_HOME=$with_ant_home
14015 if test -z "$ANT"; then
14016 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14018 # resolve relative or absolute symlink
14019 while test -h "$ANT"; do
14021 a_basename=`basename "$ANT"`
14022 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14023 cd "`dirname "$ANT"`"
14024 cd "`dirname "$a_script"`"
14025 ANT="`pwd`"/"`basename "$a_script"`"
14029 AC_MSG_CHECKING([if $ANT works])
14030 mkdir -p conftest.dir
14033 cat > conftest.java << EOF
14034 public class conftest {
14035 int testmethod(int a, int b) {
14041 cat > conftest.xml << EOF
14042 <project name="conftest" default="conftest">
14043 <target name="conftest">
14044 <javac srcdir="." includes="conftest.java">
14050 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14051 if test $? = 0 -a -f ./conftest.class; then
14052 AC_MSG_RESULT([Ant works])
14053 if test -z "$WITH_ANT_HOME"; then
14054 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14055 if test -z "$ANT_HOME"; then
14056 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14059 ANT_HOME="$WITH_ANT_HOME"
14062 echo "configure: Ant test failed" >&5
14063 cat conftest.java >&5
14064 cat conftest.xml >&5
14065 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14068 rm -fr conftest.dir
14070 if test -z "$ANT_HOME"; then
14071 ANT_HOME="NO_ANT_HOME"
14073 PathFormat "$ANT_HOME"
14074 ANT_HOME="$formatted_path"
14076 ANT="$formatted_path"
14079 dnl Checking for ant.jar
14080 if test "$ANT_HOME" != "NO_ANT_HOME"; then
14081 AC_MSG_CHECKING([Ant lib directory])
14082 if test -f $ANT_HOME/lib/ant.jar; then
14083 ANT_LIB="$ANT_HOME/lib"
14085 if test -f $ANT_HOME/ant.jar; then
14086 ANT_LIB="$ANT_HOME"
14088 if test -f /usr/share/java/ant.jar; then
14089 ANT_LIB=/usr/share/java
14091 if test -f /usr/share/ant-core/lib/ant.jar; then
14092 ANT_LIB=/usr/share/ant-core/lib
14094 if test -f $ANT_HOME/lib/ant/ant.jar; then
14095 ANT_LIB="$ANT_HOME/lib/ant"
14097 if test -f /usr/share/lib/ant/ant.jar; then
14098 ANT_LIB=/usr/share/lib/ant
14100 AC_MSG_ERROR([Ant libraries not found!])
14107 PathFormat "$ANT_LIB"
14108 ANT_LIB="$formatted_path"
14109 AC_MSG_RESULT([Ant lib directory found.])
14113 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14115 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14116 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14117 ant_version_major=`echo $ant_version | cut -d. -f1`
14118 ant_version_minor=`echo $ant_version | cut -d. -f2`
14119 echo "configure: ant_version $ant_version " >&5
14120 echo "configure: ant_version_major $ant_version_major " >&5
14121 echo "configure: ant_version_minor $ant_version_minor " >&5
14122 if test "$ant_version_major" -ge "2"; then
14123 AC_MSG_RESULT([yes, $ant_version])
14124 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14125 AC_MSG_RESULT([yes, $ant_version])
14127 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14130 rm -f conftest* core core.* *.core
14138 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14139 AC_MSG_CHECKING([for JUnit 4])
14140 if test "$with_junit" = "yes"; then
14141 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14142 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14143 elif test -e /usr/share/java/junit4.jar; then
14144 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14146 if test -e /usr/share/lib/java/junit.jar; then
14147 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14149 OOO_JUNIT_JAR=/usr/share/java/junit.jar
14153 OOO_JUNIT_JAR=$with_junit
14155 if test "$_os" = "WINNT"; then
14156 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14158 printf 'import org.junit.Before;' > conftest.java
14159 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14160 AC_MSG_RESULT([$OOO_JUNIT_JAR])
14163 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14164 specify its pathname via --with-junit=..., or disable it via --without-junit])
14166 rm -f conftest.class conftest.java
14167 if test $OOO_JUNIT_JAR != ""; then
14168 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14171 AC_MSG_CHECKING([for included Hamcrest])
14172 printf 'import org.hamcrest.BaseDescription;' > conftest.java
14173 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14174 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14176 AC_MSG_RESULT([Not included])
14177 AC_MSG_CHECKING([for standalone hamcrest jar.])
14178 if test "$with_hamcrest" = "yes"; then
14179 if test -e /usr/share/lib/java/hamcrest.jar; then
14180 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14181 elif test -e /usr/share/java/hamcrest/core.jar; then
14182 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14183 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14184 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14186 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14189 HAMCREST_JAR=$with_hamcrest
14191 if test "$_os" = "WINNT"; then
14192 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14194 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14195 AC_MSG_RESULT([$HAMCREST_JAR])
14197 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),
14198 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14201 rm -f conftest.class conftest.java
14203 AC_SUBST(OOO_JUNIT_JAR)
14204 AC_SUBST(HAMCREST_JAR)
14205 # set back LC_ALL to C after the java related tests...
14211 # check for wget and curl
14216 if test "$enable_fetch_external" != "no"; then
14218 CURL=`command -v curl`
14220 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14222 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14223 if test $? -eq 0; then
14229 if test -z "$WGET" -a -z "$CURL"; then
14230 AC_MSG_ERROR([neither wget nor curl found!])
14239 # check for sha256sum
14243 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14244 eval "$i -a 256 --version" > /dev/null 2>&1
14246 if test $ret -eq 0; then
14247 SHA256SUM="$i -a 256"
14252 if test -z "$SHA256SUM"; then
14253 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14254 eval "$i --version" > /dev/null 2>&1
14256 if test $ret -eq 0; then
14263 if test -z "$SHA256SUM"; then
14264 AC_MSG_ERROR([no sha256sum found!])
14267 AC_SUBST(SHA256SUM)
14269 dnl ===================================================================
14270 dnl Dealing with l10n options
14271 dnl ===================================================================
14272 AC_MSG_CHECKING([which languages to be built])
14273 # get list of all languages
14274 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14275 # the sed command does the following:
14276 # + if a line ends with a backslash, append the next line to it
14277 # + adds " on the beginning of the value (after =)
14278 # + adds " at the end of the value
14279 # + removes en-US; we want to put it on the beginning
14280 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14281 [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)]
14282 ALL_LANGS="en-US $completelangiso"
14283 # check the configured localizations
14284 WITH_LANG="$with_lang"
14286 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14287 # (Norwegian is "nb" and "nn".)
14288 if test "$WITH_LANG" = "no"; then
14292 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14293 AC_MSG_RESULT([en-US])
14295 AC_MSG_RESULT([$WITH_LANG])
14296 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14297 if test -z "$MSGFMT"; then
14298 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14299 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14300 elif test -x "/opt/lo/bin/msgfmt"; then
14301 MSGFMT="/opt/lo/bin/msgfmt"
14303 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14304 if test -z "$MSGFMT"; then
14305 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14309 if test -z "$MSGUNIQ"; then
14310 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14311 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14312 elif test -x "/opt/lo/bin/msguniq"; then
14313 MSGUNIQ="/opt/lo/bin/msguniq"
14315 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14316 if test -z "$MSGUNIQ"; then
14317 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14324 # check that the list is valid
14325 for lang in $WITH_LANG; do
14326 test "$lang" = "ALL" && continue
14327 # need to check for the exact string, so add space before and after the list of all languages
14328 for vl in $ALL_LANGS; do
14329 if test "$vl" = "$lang"; then
14333 if test "$vl" != "$lang"; then
14334 # if you're reading this - you prolly quoted your languages remove the quotes ...
14335 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14338 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14339 echo $WITH_LANG | grep -q en-US
14340 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14342 # list with substituted ALL
14343 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14344 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14345 test "$WITH_LANG" = "en-US" && WITH_LANG=
14346 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14347 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14348 ALL_LANGS=`echo $ALL_LANGS qtz`
14350 AC_SUBST(ALL_LANGS)
14351 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14352 AC_SUBST(WITH_LANG)
14353 AC_SUBST(WITH_LANG_LIST)
14354 AC_SUBST(GIT_NEEDED_SUBMODULES)
14356 WITH_POOR_HELP_LOCALIZATIONS=
14357 if test -d "$SRC_ROOT/translations/source"; then
14358 for l in `ls -1 $SRC_ROOT/translations/source`; do
14359 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14360 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14364 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14366 if test -n "$with_locales" -a "$with_locales" != ALL; then
14367 WITH_LOCALES="$with_locales"
14369 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14370 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14371 # config_host/config_locales.h.in
14372 for locale in $WITH_LOCALES; do
14375 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14379 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14382 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14387 AC_DEFINE(WITH_LOCALE_ALL)
14389 AC_SUBST(WITH_LOCALES)
14391 dnl git submodule update --reference
14392 dnl ===================================================================
14393 if test -n "${GIT_REFERENCE_SRC}"; then
14394 for repo in ${GIT_NEEDED_SUBMODULES}; do
14395 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14396 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14400 AC_SUBST(GIT_REFERENCE_SRC)
14402 dnl git submodules linked dirs
14403 dnl ===================================================================
14404 if test -n "${GIT_LINK_SRC}"; then
14405 for repo in ${GIT_NEEDED_SUBMODULES}; do
14406 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14407 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14411 AC_SUBST(GIT_LINK_SRC)
14414 dnl ===================================================================
14415 AC_MSG_CHECKING([for alternative branding images directory])
14416 # initialize mapped arrays
14417 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14418 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14420 if test -z "$with_branding" -o "$with_branding" = "no"; then
14421 AC_MSG_RESULT([none])
14422 DEFAULT_BRAND_IMAGES="$brand_files"
14424 if ! test -d $with_branding ; then
14425 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14427 AC_MSG_RESULT([$with_branding])
14428 CUSTOM_BRAND_DIR="$with_branding"
14429 for lfile in $brand_files
14431 if ! test -f $with_branding/$lfile ; then
14432 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14433 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14435 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14438 check_for_progress="yes"
14441 AC_SUBST([BRAND_INTRO_IMAGES])
14442 AC_SUBST([CUSTOM_BRAND_DIR])
14443 AC_SUBST([CUSTOM_BRAND_IMAGES])
14444 AC_SUBST([DEFAULT_BRAND_IMAGES])
14447 AC_MSG_CHECKING([for 'intro' progress settings])
14451 PROGRESSFRAMECOLOR=
14453 PROGRESSTEXTBASELINE=
14455 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14456 source "$with_branding/progress.conf"
14457 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14459 AC_MSG_RESULT([none])
14462 AC_SUBST(PROGRESSBARCOLOR)
14463 AC_SUBST(PROGRESSSIZE)
14464 AC_SUBST(PROGRESSPOSITION)
14465 AC_SUBST(PROGRESSFRAMECOLOR)
14466 AC_SUBST(PROGRESSTEXTCOLOR)
14467 AC_SUBST(PROGRESSTEXTBASELINE)
14470 dnl ===================================================================
14471 dnl Custom build version
14472 dnl ===================================================================
14473 AC_MSG_CHECKING([for extra build ID])
14474 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14475 EXTRA_BUILDID="$with_extra_buildid"
14477 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14478 if test -n "$EXTRA_BUILDID" ; then
14479 AC_MSG_RESULT([$EXTRA_BUILDID])
14481 AC_MSG_RESULT([not set])
14483 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14486 AC_MSG_CHECKING([for vendor])
14487 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14488 OOO_VENDOR="$USERNAME"
14490 if test -z "$OOO_VENDOR"; then
14494 if test -z "$OOO_VENDOR"; then
14495 OOO_VENDOR="`id -u -n`"
14498 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14500 OOO_VENDOR="$with_vendor"
14501 AC_MSG_RESULT([$OOO_VENDOR])
14503 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14504 AC_SUBST(OOO_VENDOR)
14506 if test "$_os" = "Android" ; then
14507 ANDROID_PACKAGE_NAME=
14508 AC_MSG_CHECKING([for Android package name])
14509 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14510 if test -n "$ENABLE_DEBUG"; then
14511 # Default to the package name that makes ndk-gdb happy.
14512 ANDROID_PACKAGE_NAME="org.libreoffice"
14514 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14517 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14519 ANDROID_PACKAGE_NAME="$with_android_package_name"
14520 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14522 AC_SUBST(ANDROID_PACKAGE_NAME)
14525 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14526 if test "$with_compat_oowrappers" = "yes"; then
14527 WITH_COMPAT_OOWRAPPERS=TRUE
14530 WITH_COMPAT_OOWRAPPERS=
14533 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14535 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14536 AC_MSG_CHECKING([for install dirname])
14537 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14538 INSTALLDIRNAME="$with_install_dirname"
14540 AC_MSG_RESULT([$INSTALLDIRNAME])
14541 AC_SUBST(INSTALLDIRNAME)
14543 AC_MSG_CHECKING([for prefix])
14544 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14545 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14546 PREFIXDIR="$prefix"
14547 AC_MSG_RESULT([$PREFIXDIR])
14548 AC_SUBST(PREFIXDIR)
14550 LIBDIR=[$(eval echo $(eval echo $libdir))]
14553 DATADIR=[$(eval echo $(eval echo $datadir))]
14556 MANDIR=[$(eval echo $(eval echo $mandir))]
14559 DOCDIR=[$(eval echo $(eval echo $docdir))]
14562 BINDIR=[$(eval echo $(eval echo $bindir))]
14565 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14566 AC_SUBST(INSTALLDIR)
14568 TESTINSTALLDIR="${BUILDDIR}/test-install"
14569 AC_SUBST(TESTINSTALLDIR)
14572 # ===================================================================
14573 # OAuth2 id and secrets
14574 # ===================================================================
14576 AC_MSG_CHECKING([for Google Drive client id and secret])
14577 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14578 AC_MSG_RESULT([not set])
14579 GDRIVE_CLIENT_ID="\"\""
14580 GDRIVE_CLIENT_SECRET="\"\""
14582 AC_MSG_RESULT([set])
14583 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14584 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14586 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14587 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14589 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14590 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14591 AC_MSG_RESULT([not set])
14592 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14593 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14595 AC_MSG_RESULT([set])
14596 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14597 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14599 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14600 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14602 AC_MSG_CHECKING([for OneDrive client id and secret])
14603 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14604 AC_MSG_RESULT([not set])
14605 ONEDRIVE_CLIENT_ID="\"\""
14606 ONEDRIVE_CLIENT_SECRET="\"\""
14608 AC_MSG_RESULT([set])
14609 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14610 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14612 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14613 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14616 dnl ===================================================================
14617 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14618 dnl --enable-dependency-tracking configure option
14619 dnl ===================================================================
14620 AC_MSG_CHECKING([whether to enable dependency tracking])
14621 if test "$enable_dependency_tracking" = "no"; then
14623 AC_MSG_RESULT([no])
14625 AC_MSG_RESULT([yes])
14629 dnl ===================================================================
14630 dnl Number of CPUs to use during the build
14631 dnl ===================================================================
14632 AC_MSG_CHECKING([for number of processors to use])
14633 # plain --with-parallelism is just the default
14634 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14635 if test "$with_parallelism" = "no"; then
14638 PARALLELISM=$with_parallelism
14641 if test "$enable_icecream" = "yes"; then
14646 Darwin|FreeBSD|NetBSD|OpenBSD)
14647 PARALLELISM=`sysctl -n hw.ncpu`
14651 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14653 # what else than above does profit here *and* has /proc?
14655 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14659 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14660 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14664 if test $PARALLELISM -eq 0; then
14665 AC_MSG_RESULT([explicit make -j option needed])
14667 AC_MSG_RESULT([$PARALLELISM])
14669 AC_SUBST(PARALLELISM)
14672 # Set up ILIB for MSVC build
14675 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14677 if test -n "$JAVA_HOME"; then
14678 ILIB="$ILIB;$JAVA_HOME/lib"
14681 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14682 ILIB="$ILIB;$formatted_path"
14683 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14684 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14685 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14686 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14687 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14688 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14690 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14691 ucrtlibpath_formatted=$formatted_path
14692 ILIB="$ILIB;$ucrtlibpath_formatted"
14693 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14694 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14695 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14696 ILIB="$ILIB;$formatted_path"
14698 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14699 ILIB="$ILIB;$formatted_path"
14702 if test "$cross_compiling" != "yes"; then
14703 ILIB_FOR_BUILD="$ILIB"
14707 AC_SUBST(ILIB_FOR_BUILD)
14709 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14710 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14711 dnl from consteval constructor initializing const variable",
14712 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14713 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14714 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14715 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14716 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14717 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14718 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14719 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14720 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14721 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14722 AC_LANG_PUSH([C++])
14724 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14725 CXX="env LIB=$ILIB $CXX"
14727 save_CXXFLAGS=$CXXFLAGS
14728 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14729 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14731 consteval S() { i = 1; }
14738 consteval S1(int n): a(n) {}
14754 struct S4 { consteval S4() = default; };
14755 void f4(bool b) { b ? S4() : S4(); }
14758 consteval S5() { c = 0; }
14759 char * f() { return &c; }
14765 auto s5 = S5().f();
14767 return (s.i == 1) ? 0 : 1;
14769 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14770 AC_MSG_RESULT([yes])
14771 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14773 CXXFLAGS=$save_CXXFLAGS
14776 # ===================================================================
14777 # Creating bigger shared library to link against
14778 # ===================================================================
14779 AC_MSG_CHECKING([whether to create huge library])
14782 if test $_os = iOS -o $_os = Android; then
14783 # Never any point in mergelibs for these as we build just static
14784 # libraries anyway...
14785 enable_mergelibs=no
14788 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14789 if test $_os != Linux -a $_os != WINNT; then
14790 add_warning "--enable-mergelibs is not tested for this platform"
14793 AC_MSG_RESULT([yes])
14794 AC_DEFINE(ENABLE_MERGELIBS)
14796 AC_MSG_RESULT([no])
14798 AC_SUBST([MERGELIBS])
14800 dnl ===================================================================
14801 dnl icerun is a wrapper that stops us spawning tens of processes
14802 dnl locally - for tools that can't be executed on the compile cluster
14803 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14804 dnl ===================================================================
14805 AC_MSG_CHECKING([whether to use icerun wrapper])
14807 if test "$enable_icecream" = "yes" && command -v icerun >/dev/null ; then
14808 ICECREAM_RUN=icerun
14809 AC_MSG_RESULT([yes])
14811 AC_MSG_RESULT([no])
14813 AC_SUBST(ICECREAM_RUN)
14815 dnl ===================================================================
14816 dnl Setup the ICECC_VERSION for the build the same way it was set for
14817 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14818 dnl ===================================================================
14819 x_ICECC_VERSION=[\#]
14820 if test -n "$ICECC_VERSION" ; then
14823 AC_SUBST(x_ICECC_VERSION)
14824 AC_SUBST(ICECC_VERSION)
14826 dnl ===================================================================
14828 AC_MSG_CHECKING([MPL subset])
14832 if test "$enable_mpl_subset" = "yes"; then
14836 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14838 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14841 if test "$warn_report" = "true"; then
14842 mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14844 if test "x$enable_postgresql_sdbc" != "xno"; then
14845 mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14847 if test "$enable_lotuswordpro" = "yes"; then
14848 mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14850 if test -n "$ENABLE_POPPLER"; then
14851 if test "x$SYSTEM_POPPLER" = "x"; then
14852 mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14855 # cf. m4/libo_check_extension.m4
14856 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14857 mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14861 for theme in $WITH_THEMES; do
14863 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14864 denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14866 filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14869 if test "x$denied_themes" != "x"; then
14870 if test "x$filtered_themes" == "x"; then
14871 filtered_themes="colibre"
14873 mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14876 ENABLE_OPENGL_TRANSITIONS=
14878 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14879 mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14882 if test "x$mpl_error_string" != "x"; then
14883 AC_MSG_ERROR([$mpl_error_string])
14888 AC_DEFINE(MPL_HAVE_SUBSET)
14889 AC_MSG_RESULT([only])
14891 AC_MSG_RESULT([no restrictions])
14893 AC_SUBST(MPL_SUBSET)
14896 dnl ===================================================================
14898 AC_MSG_CHECKING([formula logger])
14899 ENABLE_FORMULA_LOGGER=
14901 if test "x$enable_formula_logger" = "xyes"; then
14902 AC_MSG_RESULT([yes])
14903 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14904 ENABLE_FORMULA_LOGGER=TRUE
14905 elif test -n "$ENABLE_DBGUTIL" ; then
14906 AC_MSG_RESULT([yes])
14907 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14908 ENABLE_FORMULA_LOGGER=TRUE
14910 AC_MSG_RESULT([no])
14913 AC_SUBST(ENABLE_FORMULA_LOGGER)
14915 dnl ===================================================================
14916 dnl Checking for active Antivirus software.
14917 dnl ===================================================================
14919 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14920 AC_MSG_CHECKING([for active Antivirus software])
14921 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14922 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14923 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14924 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14925 AC_MSG_RESULT([found])
14926 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14927 echo $EICAR_STRING > $SRC_ROOT/eicar
14928 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14930 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14931 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14933 echo $EICAR_STRING > $BUILDDIR/eicar
14934 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14936 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14937 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14939 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"
14941 AC_MSG_RESULT([not found])
14944 AC_MSG_RESULT([n/a])
14948 dnl ===================================================================
14950 AC_MSG_CHECKING([for coredumpctl support])
14951 if test -z "$with_coredumpctl" && test $_os != Linux; then
14952 with_coredumpctl=no
14954 if test "$with_coredumpctl" = no; then
14957 AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14958 AC_PATH_PROG(JQ, jq)
14959 AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14960 AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14961 if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14962 || test -z "$SYSTEMD_RUN"
14964 if test -z "$with_coredumpctl"; then
14967 if test -z "$COREDUMPCTL"; then
14968 AC_MSG_ERROR([coredumpctl not found])
14970 if test -z "$JQ"; then
14971 AC_MSG_ERROR([jq not found])
14973 if test -z "$SYSTEMD_ESCAPE"; then
14974 AC_MSG_ERROR([systemd-escape not found])
14976 if test -z "$SYSTEMD_RUN"; then
14977 AC_MSG_ERROR([systemd-run not found])
14981 WITH_COREDUMPCTL=TRUE
14984 if test -z "$WITH_COREDUMPCTL"; then
14985 AC_MSG_RESULT([no])
14987 AC_MSG_RESULT([yes])
14989 AC_SUBST(COREDUMPCTL)
14991 AC_SUBST(SYSTEMD_ESCAPE)
14992 AC_SUBST(SYSTEMD_RUN)
14993 AC_SUBST(WITH_COREDUMPCTL)
14995 dnl ===================================================================
14996 dnl Setting up the environment.
14997 dnl ===================================================================
14998 AC_MSG_NOTICE([setting up the build environment variables...])
15002 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15003 if test -d "$COMPATH/atlmfc/lib/spectre"; then
15004 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15005 ATL_INCLUDE="$COMPATH/atlmfc/include"
15006 elif test -d "$COMPATH/atlmfc/lib"; then
15007 ATL_LIB="$COMPATH/atlmfc/lib"
15008 ATL_INCLUDE="$COMPATH/atlmfc/include"
15010 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15011 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15013 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15014 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15015 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15018 if test "$build_os" = "cygwin"; then
15019 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15020 PathFormat "/usr/bin/find.exe"
15021 FIND="$formatted_path"
15022 PathFormat "/usr/bin/sort.exe"
15023 SORT="$formatted_path"
15024 PathFormat "/usr/bin/grep.exe"
15025 WIN_GREP="$formatted_path"
15026 PathFormat "/usr/bin/ls.exe"
15027 WIN_LS="$formatted_path"
15028 PathFormat "/usr/bin/touch.exe"
15029 WIN_TOUCH="$formatted_path"
15035 AC_SUBST(ATL_INCLUDE)
15041 AC_SUBST(WIN_TOUCH)
15043 AC_SUBST(BUILD_TYPE)
15048 PERL="$formatted_path"
15051 if test -n "$TMPDIR"; then
15052 TEMP_DIRECTORY="$TMPDIR"
15054 TEMP_DIRECTORY="/tmp"
15056 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15057 if test "$build_os" = "cygwin"; then
15058 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15059 CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15061 AC_SUBST(TEMP_DIRECTORY)
15062 AC_SUBST(CYGWIN_BASH)
15064 # setup the PATH for the environment
15065 if test -n "$LO_PATH_FOR_BUILD"; then
15066 LO_PATH="$LO_PATH_FOR_BUILD"
15069 pathmunge "$MSVC_HOST_PATH" "before"
15077 dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15078 if test "$ENABLE_JAVA" != ""; then
15079 pathmunge "$JAVA_HOME/bin" "after"
15084 # Win32 make needs native paths
15085 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15086 LO_PATH=`cygpath -p -m "$PATH"`
15088 if test "$WIN_BUILD_ARCH" = "x64"; then
15089 # needed for msi packaging
15090 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15092 if test "$WIN_BUILD_ARCH" = "arm64"; then
15093 # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15094 # the x86 ones probably would work just as well...
15095 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15097 # .NET 4.6 and higher don't have bin directory
15098 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15099 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15101 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15102 pathmunge "$CSC_PATH" "before"
15103 pathmunge "$MIDL_PATH" "before"
15104 pathmunge "$AL_PATH" "before"
15105 pathmunge "$MSVC_MULTI_PATH" "before"
15106 pathmunge "$MSVC_BUILD_PATH" "before"
15107 if test -n "$MSBUILD_PATH" ; then
15108 pathmunge "$MSBUILD_PATH" "before"
15110 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15111 if test "$ENABLE_JAVA" != ""; then
15112 if test -d "$JAVA_HOME/jre/bin/client"; then
15113 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15115 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15116 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15118 pathmunge "$JAVA_HOME/bin" "before"
15120 pathmunge "$MSVC_HOST_PATH" "before"
15124 pathmunge "/usr/css/bin" "before"
15125 if test "$ENABLE_JAVA" != ""; then
15126 pathmunge "$JAVA_HOME/bin" "after"
15134 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15135 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15136 x_LO_ELFCHECK_ALLOWLIST=
15138 x_LO_ELFCHECK_ALLOWLIST=[\#]
15140 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15141 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15145 # Generate a configuration sha256 we can use for deps
15146 if test -f config_host.mk; then
15147 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15149 if test -f config_host_lang.mk; then
15150 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15153 CFLAGS=$my_original_CFLAGS
15154 CXXFLAGS=$my_original_CXXFLAGS
15155 CPPFLAGS=$my_original_CPPFLAGS
15157 AC_CONFIG_LINKS([include:include])
15159 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15160 # BUILD platform configuration] - otherwise breaks cross building
15161 AC_CONFIG_FILES([config_host.mk
15162 config_host_lang.mk
15164 bin/bffvalidator.sh
15165 bin/odfvalidator.sh
15167 instsetoo_native/util/openoffice.lst
15168 sysui/desktop/macosx/Info.plist
15169 hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15170 lo.xcent:sysui/desktop/macosx/lo.xcent.in
15171 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15173 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15174 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15175 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15176 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15177 AC_CONFIG_HEADERS([config_host/config_clang.h])
15178 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15179 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15180 AC_CONFIG_HEADERS([config_host/config_eot.h])
15181 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15182 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15183 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15184 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15185 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15186 AC_CONFIG_HEADERS([config_host/config_features.h])
15187 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15188 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15189 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15190 AC_CONFIG_HEADERS([config_host/config_folders.h])
15191 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15192 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15193 AC_CONFIG_HEADERS([config_host/config_gio.h])
15194 AC_CONFIG_HEADERS([config_host/config_global.h])
15195 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15196 AC_CONFIG_HEADERS([config_host/config_java.h])
15197 AC_CONFIG_HEADERS([config_host/config_langs.h])
15198 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15199 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15200 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15201 AC_CONFIG_HEADERS([config_host/config_locales.h])
15202 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15203 AC_CONFIG_HEADERS([config_host/config_oox.h])
15204 AC_CONFIG_HEADERS([config_host/config_options.h])
15205 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15206 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15207 AC_CONFIG_HEADERS([config_host/config_skia.h])
15208 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15209 AC_CONFIG_HEADERS([config_host/config_validation.h])
15210 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15211 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15212 AC_CONFIG_HEADERS([config_host/config_version.h])
15213 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15214 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15215 AC_CONFIG_HEADERS([config_host/config_python.h])
15216 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15217 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15218 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15221 if test "$CROSS_COMPILING" = TRUE; then
15222 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15225 # touch the config timestamp file
15226 if test ! -f config_host.mk.stamp; then
15227 echo > config_host.mk.stamp
15228 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15229 echo "Host Configuration unchanged - avoiding scp2 stamp update"
15231 echo > config_host.mk.stamp
15234 # touch the config lang timestamp file
15235 if test ! -f config_host_lang.mk.stamp; then
15236 echo > config_host_lang.mk.stamp
15237 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15238 echo "Language Configuration unchanged - avoiding scp2 stamp update"
15240 echo > config_host_lang.mk.stamp
15244 if test \( "$STALE_MAKE" = "TRUE" \) \
15245 -a "$build_os" = "cygwin"; then
15248 ****************************************************************************
15250 Your make version is known to be horribly slow, and hard to debug
15251 problems with. To get a reasonably functional make please do:
15253 to install a pre-compiled binary make for Win32
15255 mkdir -p /opt/lo/bin
15257 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15258 cp make-4.2.1-msvc.exe make
15261 to install from source:
15262 place yourself in a working directory of you choice.
15264 git clone git://git.savannah.gnu.org/make.git
15266 [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"]
15267 set PATH=%PATH%;C:\Cygwin\bin
15268 [or Cygwin64, if that is what you have]
15269 cd path-to-make-repo-you-cloned-above
15270 build_w32.bat --without-guile
15272 should result in a WinRel/gnumake.exe.
15273 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15275 Then re-run autogen.sh
15277 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15278 Alternatively, you can install the 'new' make where ever you want and make sure that `command -v make` finds it.
15285 ****************************************************************************
15287 To show information on various make targets and make flags, run:
15290 To just build, run:
15295 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15297 After the build has finished successfully, you can immediately run what you built using the command:
15300 if test $_os = Darwin; then
15301 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15303 echo instdir/program/soffice
15307 If you want to run the unit tests, run:
15313 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15314 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15315 cat "$WARNINGS_FILE_FOR_BUILD"
15319 if test -s "$WARNINGS_FILE"; then
15320 echo "HOST config ($WARNINGS_FILE)"
15321 cat "$WARNINGS_FILE"
15324 # Remove unneeded emconfigure artifacts
15325 rm -f a.out a.wasm a.out.js a.out.wasm
15327 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: