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.2.2.2],[],[],[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 which 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=`which git 2>/dev/null`
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=`which gpg 2>/dev/null`
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 "$(which "$(cygpath -u $a)")")"
571 GNUMAKE_WIN_NATIVE="TRUE"
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 ! which 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 AC_SUBST(EMSDK_FILE_PACKAGER)
1428 ###############################################################################
1429 # Extensions switches --enable/--disable
1430 ###############################################################################
1431 # By default these should be enabled unless having extra dependencies.
1432 # If there is extra dependency over configure options then the enable should
1433 # be automagic based on whether the requiring feature is enabled or not.
1434 # All this options change anything only with --enable-extension-integration.
1436 # The name of this option and its help string makes it sound as if
1437 # extensions are built anyway, just not integrated in the installer,
1438 # if you use --disable-extension-integration. Is that really the
1441 AC_ARG_ENABLE(ios-simulator,
1442 AS_HELP_STRING([--enable-ios-simulator],
1443 [build for iOS simulator])
1446 libo_FUZZ_ARG_ENABLE(extension-integration,
1447 AS_HELP_STRING([--disable-extension-integration],
1448 [Disable integration of the built extensions in the installer of the
1449 product. Use this switch to disable the integration.])
1452 AC_ARG_ENABLE(avmedia,
1453 AS_HELP_STRING([--disable-avmedia],
1454 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1455 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1457 AC_ARG_ENABLE(database-connectivity,
1458 AS_HELP_STRING([--disable-database-connectivity],
1459 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1462 # This doesn't mean not building (or "integrating") extensions
1463 # (although it probably should; i.e. it should imply
1464 # --disable-extension-integration I guess), it means not supporting
1465 # any extension mechanism at all
1466 libo_FUZZ_ARG_ENABLE(extensions,
1467 AS_HELP_STRING([--disable-extensions],
1468 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1471 AC_ARG_ENABLE(scripting,
1472 AS_HELP_STRING([--disable-scripting],
1473 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1474 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1476 # This is mainly for Android and iOS, but could potentially be used in some
1477 # special case otherwise, too, so factored out as a separate setting
1479 AC_ARG_ENABLE(dynamic-loading,
1480 AS_HELP_STRING([--disable-dynamic-loading],
1481 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1484 libo_FUZZ_ARG_ENABLE(report-builder,
1485 AS_HELP_STRING([--disable-report-builder],
1486 [Disable the Report Builder.])
1489 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1490 AS_HELP_STRING([--enable-ext-wiki-publisher],
1491 [Enable the Wiki Publisher extension.])
1494 libo_FUZZ_ARG_ENABLE(lpsolve,
1495 AS_HELP_STRING([--disable-lpsolve],
1496 [Disable compilation of the lp solve solver ])
1498 libo_FUZZ_ARG_ENABLE(coinmp,
1499 AS_HELP_STRING([--disable-coinmp],
1500 [Disable compilation of the CoinMP solver ])
1503 libo_FUZZ_ARG_ENABLE(pdfimport,
1504 AS_HELP_STRING([--disable-pdfimport],
1505 [Disable building the PDF import feature.])
1508 libo_FUZZ_ARG_ENABLE(pdfium,
1509 AS_HELP_STRING([--disable-pdfium],
1510 [Disable building PDFium. Results in unsecure PDF signature verification.])
1513 libo_FUZZ_ARG_ENABLE(skia,
1514 AS_HELP_STRING([--disable-skia],
1515 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1518 ###############################################################################
1520 dnl ---------- *** ----------
1522 libo_FUZZ_ARG_ENABLE(mergelibs,
1523 AS_HELP_STRING([--enable-mergelibs],
1524 [Merge several of the smaller libraries into one big, "merged", one.])
1527 libo_FUZZ_ARG_ENABLE(breakpad,
1528 AS_HELP_STRING([--enable-breakpad],
1529 [Enables breakpad for crash reporting.])
1532 libo_FUZZ_ARG_ENABLE(crashdump,
1533 AS_HELP_STRING([--disable-crashdump],
1534 [Disable dump.ini and dump-file, when --enable-breakpad])
1537 AC_ARG_ENABLE(fetch-external,
1538 AS_HELP_STRING([--disable-fetch-external],
1539 [Disables fetching external tarballs from web sources.])
1542 AC_ARG_ENABLE(fuzzers,
1543 AS_HELP_STRING([--enable-fuzzers],
1544 [Enables building libfuzzer targets for fuzz testing.])
1547 libo_FUZZ_ARG_ENABLE(pch,
1548 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1549 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1550 Using 'system' will include only external headers, 'base' will add also headers
1551 from base modules, 'normal' will also add all headers except from the module built,
1552 'full' will use all suitable headers even from a module itself.])
1555 libo_FUZZ_ARG_ENABLE(epm,
1556 AS_HELP_STRING([--enable-epm],
1557 [LibreOffice includes self-packaging code, that requires epm, however epm is
1558 useless for large scale package building.])
1561 libo_FUZZ_ARG_ENABLE(odk,
1562 AS_HELP_STRING([--enable-odk],
1563 [Enable building the Office Development Kit, the part that extensions need to build against])
1566 AC_ARG_ENABLE(mpl-subset,
1567 AS_HELP_STRING([--enable-mpl-subset],
1568 [Don't compile any pieces which are not MPL or more liberally licensed])
1571 libo_FUZZ_ARG_ENABLE(evolution2,
1572 AS_HELP_STRING([--enable-evolution2],
1573 [Allows the built-in evolution 2 addressbook connectivity build to be
1577 AC_ARG_ENABLE(avahi,
1578 AS_HELP_STRING([--enable-avahi],
1579 [Determines whether to use Avahi to advertise Impress to remote controls.])
1582 libo_FUZZ_ARG_ENABLE(werror,
1583 AS_HELP_STRING([--enable-werror],
1584 [Turn warnings to errors. (Has no effect in modules where the treating
1585 of warnings as errors is disabled explicitly.)]),
1588 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1589 AS_HELP_STRING([--enable-assert-always-abort],
1590 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1593 libo_FUZZ_ARG_ENABLE(dbgutil,
1594 AS_HELP_STRING([--enable-dbgutil],
1595 [Provide debugging support from --enable-debug and include additional debugging
1596 utilities such as object counting or more expensive checks.
1597 This is the recommended option for developers.
1598 Note that this makes the build ABI incompatible, it is not possible to mix object
1599 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1601 libo_FUZZ_ARG_ENABLE(debug,
1602 AS_HELP_STRING([--enable-debug],
1603 [Include debugging information, disable compiler optimization and inlining plus
1604 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1606 libo_FUZZ_ARG_ENABLE(split-debug,
1607 AS_HELP_STRING([--disable-split-debug],
1608 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1609 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1611 libo_FUZZ_ARG_ENABLE(gdb-index,
1612 AS_HELP_STRING([--disable-gdb-index],
1613 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1614 The feature requires a linker that supports the --gdb-index option.]))
1616 libo_FUZZ_ARG_ENABLE(sal-log,
1617 AS_HELP_STRING([--enable-sal-log],
1618 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1620 libo_FUZZ_ARG_ENABLE(symbols,
1621 AS_HELP_STRING([--enable-symbols],
1622 [Generate debug information.
1623 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1624 otherwise. It is possible to explicitly specify gbuild build targets
1625 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1626 everything in the directory; there is no ordering, more specific overrides
1627 more general, and disabling takes precedence).
1628 Example: --enable-symbols="all -sw/ -Library_sc".]))
1630 libo_FUZZ_ARG_ENABLE(optimized,
1631 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1632 [Whether to compile with optimization flags.
1633 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1634 otherwise. Using 'debug' will try to use only optimizations that should
1635 not interfere with debugging. For Emscripten we default to optimized (-O1)
1636 debug build, as otherwise binaries become too large.]))
1638 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1639 AS_HELP_STRING([--disable-runtime-optimizations],
1640 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1641 JVM JIT) that are known to interact badly with certain dynamic analysis
1642 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1643 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1644 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1646 AC_ARG_WITH(valgrind,
1647 AS_HELP_STRING([--with-valgrind],
1648 [Make availability of Valgrind headers a hard requirement.]))
1650 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1651 AS_HELP_STRING([--enable-compiler-plugins],
1652 [Enable compiler plugins that will perform additional checks during
1653 building. Enabled automatically by --enable-dbgutil.
1654 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1655 COMPILER_PLUGINS_DEBUG=
1656 if test "$enable_compiler_plugins" = debug; then
1657 enable_compiler_plugins=yes
1658 COMPILER_PLUGINS_DEBUG=TRUE
1661 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1662 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1663 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1664 relevant in the --disable-compiler-plugins case.]))
1666 libo_FUZZ_ARG_ENABLE(ooenv,
1667 AS_HELP_STRING([--enable-ooenv],
1668 [Enable ooenv for the instdir installation.]))
1671 AS_HELP_STRING([--enable-lto],
1672 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1673 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1676 AC_ARG_ENABLE(python,
1677 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1678 [Enables or disables Python support at run-time.
1679 Also specifies what Python to use at build-time.
1680 'fully-internal' even forces the internal version for uses of Python
1682 On macOS the only choices are
1683 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1686 libo_FUZZ_ARG_ENABLE(gtk3,
1687 AS_HELP_STRING([--disable-gtk3],
1688 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1689 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1692 AS_HELP_STRING([--enable-gtk4],
1693 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1695 AC_ARG_ENABLE(atspi-tests,
1696 AS_HELP_STRING([--disable-atspi-tests],
1697 [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1699 AC_ARG_ENABLE(introspection,
1700 AS_HELP_STRING([--enable-introspection],
1701 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1702 Linux distributions.)]))
1704 AC_ARG_ENABLE(split-app-modules,
1705 AS_HELP_STRING([--enable-split-app-modules],
1706 [Split file lists for app modules, e.g. base, calc.
1707 Has effect only with make distro-pack-install]),
1710 AC_ARG_ENABLE(split-opt-features,
1711 AS_HELP_STRING([--enable-split-opt-features],
1712 [Split file lists for some optional features, e.g. pyuno, testtool.
1713 Has effect only with make distro-pack-install]),
1716 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1717 AS_HELP_STRING([--disable-cairo-canvas],
1718 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1721 libo_FUZZ_ARG_ENABLE(dbus,
1722 AS_HELP_STRING([--disable-dbus],
1723 [Determines whether to enable features that depend on dbus.
1724 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1725 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1727 libo_FUZZ_ARG_ENABLE(sdremote,
1728 AS_HELP_STRING([--disable-sdremote],
1729 [Determines whether to enable Impress remote control (i.e. the server component).]),
1730 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1732 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1733 AS_HELP_STRING([--disable-sdremote-bluetooth],
1734 [Determines whether to build sdremote with bluetooth support.
1735 Requires dbus on Linux.]))
1737 libo_FUZZ_ARG_ENABLE(gio,
1738 AS_HELP_STRING([--disable-gio],
1739 [Determines whether to use the GIO support.]),
1740 ,test "${enable_gio+set}" = set || enable_gio=yes)
1743 AS_HELP_STRING([--enable-qt5],
1744 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1749 AS_HELP_STRING([--enable-qt6],
1750 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1755 AS_HELP_STRING([--enable-kf5],
1756 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1757 KF5 are available.]),
1761 AS_HELP_STRING([--enable-kf6],
1762 [Determines whether to use KF6 vclplug on platforms where Qt6 and
1763 KF6 are available.]),
1767 AC_ARG_ENABLE(gtk3_kde5,
1768 AS_HELP_STRING([--enable-gtk3-kde5],
1769 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1770 platforms where Gtk3, Qt5 and Plasma is available.]),
1774 AS_HELP_STRING([--enable-gen],
1775 [To select the gen backend in case of --disable-dynamic-loading.
1776 Per default auto-enabled when X11 is used.]),
1777 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1780 AS_HELP_STRING([--disable-gui],
1781 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1784 libo_FUZZ_ARG_ENABLE(randr,
1785 AS_HELP_STRING([--disable-randr],
1786 [Disable RandR support in the vcl project.]),
1787 ,test "${enable_randr+set}" = set || enable_randr=yes)
1789 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1790 AS_HELP_STRING([--disable-gstreamer-1-0],
1791 [Disable building with the gstreamer 1.0 avmedia backend.]),
1792 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1794 libo_FUZZ_ARG_ENABLE([eot],
1795 [AS_HELP_STRING([--enable-eot],
1796 [Enable support for Embedded OpenType fonts.])],
1797 ,test "${enable_eot+set}" = set || enable_eot=no)
1799 libo_FUZZ_ARG_ENABLE(cve-tests,
1800 AS_HELP_STRING([--disable-cve-tests],
1801 [Prevent CVE tests to be executed]),
1804 AC_ARG_ENABLE(build-opensymbol,
1805 AS_HELP_STRING([--enable-build-opensymbol],
1806 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1807 fontforge installed.]),
1810 AC_ARG_ENABLE(dependency-tracking,
1811 AS_HELP_STRING([--enable-dependency-tracking],
1812 [Do not reject slow dependency extractors.])[
1813 --disable-dependency-tracking
1814 Disables generation of dependency information.
1815 Speed up one-time builds.],
1818 AC_ARG_ENABLE(icecream,
1819 AS_HELP_STRING([--enable-icecream],
1820 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1821 It defaults to /opt/icecream for the location of the icecream gcc/g++
1822 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1826 AS_HELP_STRING([--enable-ld=<linker>],
1827 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1828 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1829 If <linker> contains any ':', the part before the first ':' is used as the value of
1830 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1831 needed for Clang 12).]),
1834 libo_FUZZ_ARG_ENABLE(cups,
1835 AS_HELP_STRING([--disable-cups],
1836 [Do not build cups support.])
1839 AC_ARG_ENABLE(ccache,
1840 AS_HELP_STRING([--disable-ccache],
1841 [Do not try to use ccache automatically.
1842 By default we will try to detect if ccache is available; in that case if
1843 CC/CXX are not yet set, and --enable-icecream is not given, we
1844 attempt to use ccache. --disable-ccache disables ccache completely.
1845 Additionally ccache's depend mode is enabled if possible,
1846 use --enable-ccache=nodepend to enable ccache without depend mode.
1850 AC_ARG_ENABLE(z7-debug,
1851 AS_HELP_STRING([--enable-z7-debug],
1852 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1853 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1854 Enabled by default if ccache is detected.]))
1856 libo_FUZZ_ARG_ENABLE(online-update,
1857 AS_HELP_STRING([--enable-online-update],
1858 [Enable the online update service that will check for new versions of
1859 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1862 libo_FUZZ_ARG_ENABLE(online-update-mar,
1863 AS_HELP_STRING([--enable-online-update-mar],
1864 [Enable the experimental Mozilla-like online update service that will
1865 check for new versions of LibreOffice. Disabled by default.]),
1868 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1869 AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1870 [Set the base URL value for --enable-online-update-mar.
1871 (Can be left off for debug purposes, even if that may render the feature
1875 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1876 AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1877 [Set the certificate DER value for --enable-online-update-mar.
1878 (Can be left off for debug purposes, even if that may render the feature
1882 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1883 AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1884 [Set the certificate name value for --enable-online-update-mar.
1885 (Can be left off for debug purposes, even if that may render the feature
1889 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1890 AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1891 [Set the certificate path value for --enable-online-update-mar.
1892 (Can be left off for debug purposes, even if that may render the feature
1896 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1897 AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1898 [Set the upload URL value for --enable-online-update-mar.
1899 (Can be left off for debug purposes, even if that may render the feature
1903 libo_FUZZ_ARG_ENABLE(extension-update,
1904 AS_HELP_STRING([--disable-extension-update],
1905 [Disable possibility to update installed extensions.]),
1908 libo_FUZZ_ARG_ENABLE(release-build,
1909 AS_HELP_STRING([--enable-release-build],
1910 [Enable release build. Note that the "release build" choice is orthogonal to
1911 whether symbols are present, debug info is generated, or optimization
1913 See https://wiki.documentfoundation.org/Development/DevBuild]),
1916 AC_ARG_ENABLE(windows-build-signing,
1917 AS_HELP_STRING([--enable-windows-build-signing],
1918 [Enable signing of windows binaries (*.exe, *.dll)]),
1921 AC_ARG_ENABLE(silent-msi,
1922 AS_HELP_STRING([--enable-silent-msi],
1923 [Enable MSI with LIMITUI=1 (silent install).]),
1927 AS_HELP_STRING([--enable-wix],
1928 [Build Windows installer using WiX.]),
1931 AC_ARG_ENABLE(macosx-code-signing,
1932 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1933 [Sign executables, dylibs, frameworks and the app bundle. If you
1934 don't provide an identity the first suitable certificate
1935 in your keychain is used.]),
1938 AC_ARG_ENABLE(macosx-package-signing,
1939 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1940 [Create a .pkg suitable for uploading to the Mac App Store and sign
1941 it. If you don't provide an identity the first suitable certificate
1942 in your keychain is used.]),
1945 AC_ARG_ENABLE(macosx-sandbox,
1946 AS_HELP_STRING([--enable-macosx-sandbox],
1947 [Make the app bundle run in a sandbox. Requires code signing.
1948 Is required by apps distributed in the Mac App Store, and implies
1949 adherence to App Store rules.]),
1952 AC_ARG_WITH(macosx-bundle-identifier,
1953 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1954 [Define the macOS bundle identifier. Default is the somewhat weird
1955 org.libreoffice.script ("script", huh?).]),
1956 ,with_macosx_bundle_identifier=org.libreoffice.script)
1958 AC_ARG_WITH(macosx-provisioning-profile,
1959 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1960 [Specify the path to a provisioning profile to use]),
1963 AC_ARG_WITH(product-name,
1964 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1965 [Define the product name. Default is AC_PACKAGE_NAME.]),
1966 ,with_product_name=$PRODUCTNAME)
1968 libo_FUZZ_ARG_ENABLE(community-flavor,
1969 AS_HELP_STRING([--disable-community-flavor],
1970 [Disable the Community branding.]),
1973 AC_ARG_WITH(package-version,
1974 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1975 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1978 libo_FUZZ_ARG_ENABLE(readonly-installset,
1979 AS_HELP_STRING([--enable-readonly-installset],
1980 [Prevents any attempts by LibreOffice to write into its installation. That means
1981 at least that no "system-wide" extensions can be added. Partly experimental work in
1982 progress, probably not fully implemented. Always enabled for macOS.]),
1985 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1986 AS_HELP_STRING([--disable-mariadb-sdbc],
1987 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1990 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1991 AS_HELP_STRING([--disable-postgresql-sdbc],
1992 [Disable the build of the PostgreSQL-SDBC driver.])
1995 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1996 AS_HELP_STRING([--disable-lotuswordpro],
1997 [Disable the build of the Lotus Word Pro filter.]),
1998 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2000 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2001 AS_HELP_STRING([--disable-firebird-sdbc],
2002 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2003 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2005 AC_ARG_ENABLE(bogus-pkg-config,
2006 AS_HELP_STRING([--enable-bogus-pkg-config],
2007 [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.]),
2010 AC_ARG_ENABLE(openssl,
2011 AS_HELP_STRING([--disable-openssl],
2012 [Disable using libssl/libcrypto from OpenSSL. If disabled,
2013 components will use NSS. Work in progress,
2014 use only if you are hacking on it.]),
2015 ,enable_openssl=yes)
2017 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2018 AS_HELP_STRING([--enable-cipher-openssl-backend],
2019 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2020 Requires --enable-openssl.]))
2023 AS_HELP_STRING([--disable-nss],
2024 [Disable using NSS. If disabled,
2025 components will use openssl. Work in progress,
2026 use only if you are hacking on it.]),
2029 AC_ARG_ENABLE(library-bin-tar,
2030 AS_HELP_STRING([--enable-library-bin-tar],
2031 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2032 Some libraries can save their build result in a tarball
2033 stored in TARFILE_LOCATION. That binary tarball is
2034 uniquely identified by the source tarball,
2035 the content of the config_host.mk file and the content
2036 of the top-level directory in core for that library
2037 If this option is enabled, then if such a tarfile exist, it will be untarred
2038 instead of the source tarfile, and the build step will be skipped for that
2040 If a proper tarfile does not exist, then the normal source-based
2041 build is done for that library and a proper binary tarfile is created
2042 for the next time.]),
2045 AC_ARG_ENABLE(dconf,
2046 AS_HELP_STRING([--disable-dconf],
2047 [Disable the dconf configuration backend (enabled by default where
2050 libo_FUZZ_ARG_ENABLE(formula-logger,
2052 [--enable-formula-logger],
2053 [Enable formula logger for logging formula calculation flow in Calc.]
2058 AS_HELP_STRING([--disable-ldap],
2059 [Disable LDAP support.]),
2062 AC_ARG_ENABLE(opencl,
2063 AS_HELP_STRING([--disable-opencl],
2064 [Disable OpenCL support.]),
2067 libo_FUZZ_ARG_ENABLE(librelogo,
2068 AS_HELP_STRING([--disable-librelogo],
2069 [Do not build LibreLogo.]),
2070 ,enable_librelogo=yes)
2072 AC_ARG_ENABLE(wasm-strip,
2073 AS_HELP_STRING([--enable-wasm-strip],
2074 [Strip the static build like for WASM/emscripten platform.]),
2077 AC_ARG_WITH(main-module,
2078 AS_HELP_STRING([--with-main-module=<writer/calc>],
2079 [Specify which main module to build for wasm.
2080 Default value is 'writer'.]),
2083 AC_ARG_ENABLE(wasm-exceptions,
2084 AS_HELP_STRING([--enable-wasm-exceptions],
2085 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2086 matter of fact, this is currently not finished by any implementation)
2087 (see https://webassembly.org/roadmap/ for the current state]),
2090 AC_ARG_ENABLE(xmlhelp,
2091 AS_HELP_STRING([--disable-xmlhelp],
2092 [Disable XML help support]),
2093 ,enable_xmlhelp=yes)
2095 AC_ARG_ENABLE(customtarget-components,
2096 AS_HELP_STRING([--enable-customtarget-components],
2097 [Generates the static UNO object constructor mapping from the build.]))
2099 dnl ===================================================================
2100 dnl Optional Packages (--with/without-)
2101 dnl ===================================================================
2103 AC_ARG_WITH(gcc-home,
2104 AS_HELP_STRING([--with-gcc-home],
2105 [Specify the location of gcc/g++ manually. This can be used in conjunction
2106 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2107 non-default path.]),
2110 AC_ARG_WITH(gnu-patch,
2111 AS_HELP_STRING([--with-gnu-patch],
2112 [Specify location of GNU patch on Solaris or FreeBSD.]),
2115 AC_ARG_WITH(build-platform-configure-options,
2116 AS_HELP_STRING([--with-build-platform-configure-options],
2117 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2121 AS_HELP_STRING([--with-gnu-cp],
2122 [Specify location of GNU cp on Solaris or FreeBSD.]),
2125 AC_ARG_WITH(external-tar,
2126 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2127 [Specify an absolute path of where to find (and store) tarfiles.]),
2128 TARFILE_LOCATION=$withval ,
2131 AC_ARG_WITH(referenced-git,
2132 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2133 [Specify another checkout directory to reference. This makes use of
2134 git submodule update --reference, and saves a lot of diskspace
2135 when having multiple trees side-by-side.]),
2136 GIT_REFERENCE_SRC=$withval ,
2139 AC_ARG_WITH(linked-git,
2140 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2141 [Specify a directory where the repositories of submodules are located.
2142 This uses a method similar to git-new-workdir to get submodules.]),
2143 GIT_LINK_SRC=$withval ,
2146 AC_ARG_WITH(galleries,
2147 AS_HELP_STRING([--with-galleries],
2148 [Specify how galleries should be built. It is possible either to
2149 build these internally from source ("build"),
2150 or to disable them ("no")]),
2153 AC_ARG_WITH(templates,
2154 AS_HELP_STRING([--with-templates],
2155 [Specify we build with or without template files. It is possible either to
2156 build with templates ("yes"),
2157 or to disable them ("no")]),
2161 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2162 [Choose which themes to include. By default those themes with an '*' are included.
2163 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2164 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2165 *elementary, *elementary_svg,
2166 *karasa_jaga, *karasa_jaga_svg,
2167 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2168 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2171 libo_FUZZ_ARG_WITH(helppack-integration,
2172 AS_HELP_STRING([--without-helppack-integration],
2173 [It will not integrate the helppacks to the installer
2174 of the product. Please use this switch to use the online help
2175 or separate help packages.]),
2178 libo_FUZZ_ARG_WITH(fonts,
2179 AS_HELP_STRING([--without-fonts],
2180 [LibreOffice includes some third-party fonts to provide a reliable basis for
2181 help content, templates, samples, etc. When these fonts are already
2182 known to be available on the system then you should use this option.]),
2186 AS_HELP_STRING([--with-epm],
2187 [Decides which epm to use. Default is to use the one from the system if
2188 one is built. When either this is not there or you say =internal epm
2192 AC_ARG_WITH(package-format,
2193 AS_HELP_STRING([--with-package-format],
2194 [Specify package format(s) for LibreOffice installation sets. The
2195 implicit --without-package-format leads to no installation sets being
2196 generated. Possible values: archive, bsd, deb, dmg,
2197 installed, msi, pkg, and rpm.
2198 Example: --with-package-format='deb rpm']),
2202 AS_HELP_STRING([--with-tls],
2203 [Decides which TLS/SSL and cryptographic implementations to use for
2204 LibreOffice's code. Default is to use NSS although OpenSSL is also
2205 possible. Notice that selecting NSS restricts the usage of OpenSSL
2206 in LO's code but selecting OpenSSL doesn't restrict by now the
2207 usage of NSS in LO's code. Possible values: openssl, nss.
2208 Example: --with-tls="nss"]),
2211 AC_ARG_WITH(system-libs,
2212 AS_HELP_STRING([--with-system-libs],
2213 [Use libraries already on system -- enables all --with-system-* flags.]),
2216 AC_ARG_WITH(system-bzip2,
2217 AS_HELP_STRING([--with-system-bzip2],
2218 [Use bzip2 already on system. Used when --enable-online-update-mar
2219 or --enable-python=internal]),,
2220 [with_system_bzip2="$with_system_libs"])
2222 AC_ARG_WITH(system-headers,
2223 AS_HELP_STRING([--with-system-headers],
2224 [Use headers already on system -- enables all --with-system-* flags for
2225 external packages whose headers are the only entities used i.e.
2226 boost/odbc/sane-header(s).]),,
2227 [with_system_headers="$with_system_libs"])
2229 AC_ARG_WITH(system-jars,
2230 AS_HELP_STRING([--without-system-jars],
2231 [When building with --with-system-libs, also the needed jars are expected
2232 on the system. Use this to disable that]),,
2233 [with_system_jars="$with_system_libs"])
2235 AC_ARG_WITH(system-cairo,
2236 AS_HELP_STRING([--with-system-cairo],
2237 [Use cairo libraries already on system. Happens automatically for
2238 (implicit) --enable-gtk3.]))
2240 AC_ARG_WITH(system-epoxy,
2241 AS_HELP_STRING([--with-system-epoxy],
2242 [Use epoxy libraries already on system. Happens automatically for
2243 (implicit) --enable-gtk3.]),,
2244 [with_system_epoxy="$with_system_libs"])
2246 AC_ARG_WITH(myspell-dicts,
2247 AS_HELP_STRING([--with-myspell-dicts],
2248 [Adds myspell dictionaries to the LibreOffice installation set]),
2251 AC_ARG_WITH(system-dicts,
2252 AS_HELP_STRING([--without-system-dicts],
2253 [Do not use dictionaries from system paths.]),
2256 AC_ARG_WITH(external-dict-dir,
2257 AS_HELP_STRING([--with-external-dict-dir],
2258 [Specify external dictionary dir.]),
2261 AC_ARG_WITH(external-hyph-dir,
2262 AS_HELP_STRING([--with-external-hyph-dir],
2263 [Specify external hyphenation pattern dir.]),
2266 AC_ARG_WITH(external-thes-dir,
2267 AS_HELP_STRING([--with-external-thes-dir],
2268 [Specify external thesaurus dir.]),
2271 AC_ARG_WITH(system-zlib,
2272 AS_HELP_STRING([--with-system-zlib],
2273 [Use zlib already on system.]),,
2274 [with_system_zlib=auto])
2276 AC_ARG_WITH(system-jpeg,
2277 AS_HELP_STRING([--with-system-jpeg],
2278 [Use jpeg already on system.]),,
2279 [with_system_jpeg="$with_system_libs"])
2281 AC_ARG_WITH(system-expat,
2282 AS_HELP_STRING([--with-system-expat],
2283 [Use expat already on system.]),,
2284 [with_system_expat="$with_system_libs"])
2286 AC_ARG_WITH(system-libxml,
2287 AS_HELP_STRING([--with-system-libxml],
2288 [Use libxml/libxslt already on system.]),,
2289 [with_system_libxml=auto])
2291 AC_ARG_WITH(system-openldap,
2292 AS_HELP_STRING([--with-system-openldap],
2293 [Use the OpenLDAP LDAP SDK already on system.]),,
2294 [with_system_openldap="$with_system_libs"])
2296 libo_FUZZ_ARG_ENABLE(poppler,
2297 AS_HELP_STRING([--disable-poppler],
2298 [Disable building Poppler.])
2301 AC_ARG_WITH(system-poppler,
2302 AS_HELP_STRING([--with-system-poppler],
2303 [Use system poppler (only needed for PDF import).]),,
2304 [with_system_poppler="$with_system_libs"])
2306 AC_ARG_WITH(system-abseil,
2307 AS_HELP_STRING([--with-system-abseil],
2308 [Use the abseil libraries already on system.]),,
2309 [with_system_abseil="$with_system_libs"])
2311 AC_ARG_WITH(system-openjpeg,
2312 AS_HELP_STRING([--with-system-openjpeg],
2313 [Use the OpenJPEG library already on system.]),,
2314 [with_system_openjpeg="$with_system_libs"])
2316 libo_FUZZ_ARG_ENABLE(gpgmepp,
2317 AS_HELP_STRING([--disable-gpgmepp],
2318 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2321 AC_ARG_WITH(system-gpgmepp,
2322 AS_HELP_STRING([--with-system-gpgmepp],
2323 [Use gpgmepp already on system]),,
2324 [with_system_gpgmepp="$with_system_libs"])
2326 AC_ARG_WITH(system-mariadb,
2327 AS_HELP_STRING([--with-system-mariadb],
2328 [Use MariaDB/MySQL libraries already on system.]),,
2329 [with_system_mariadb="$with_system_libs"])
2331 AC_ARG_ENABLE(bundle-mariadb,
2332 AS_HELP_STRING([--enable-bundle-mariadb],
2333 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2336 AC_ARG_WITH(system-postgresql,
2337 AS_HELP_STRING([--with-system-postgresql],
2338 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2339 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2340 [with_system_postgresql="$with_system_libs"])
2342 AC_ARG_WITH(libpq-path,
2343 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2344 [Use this PostgreSQL C interface (libpq) installation for building
2345 the PostgreSQL-SDBC extension.]),
2348 AC_ARG_WITH(system-firebird,
2349 AS_HELP_STRING([--with-system-firebird],
2350 [Use Firebird libraries already on system, for building the Firebird-SDBC
2351 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2352 [with_system_firebird="$with_system_libs"])
2354 AC_ARG_WITH(system-libtommath,
2355 AS_HELP_STRING([--with-system-libtommath],
2356 [Use libtommath already on system]),,
2357 [with_system_libtommath="$with_system_libs"])
2359 AC_ARG_WITH(system-hsqldb,
2360 AS_HELP_STRING([--with-system-hsqldb],
2361 [Use hsqldb already on system.]))
2363 AC_ARG_WITH(hsqldb-jar,
2364 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2365 [Specify path to jarfile manually.]),
2366 HSQLDB_JAR=$withval)
2368 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2369 AS_HELP_STRING([--disable-scripting-beanshell],
2370 [Disable support for scripts in BeanShell.]),
2374 AC_ARG_WITH(system-beanshell,
2375 AS_HELP_STRING([--with-system-beanshell],
2376 [Use beanshell already on system.]),,
2377 [with_system_beanshell="$with_system_jars"])
2379 AC_ARG_WITH(beanshell-jar,
2380 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2381 [Specify path to jarfile manually.]),
2384 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2385 AS_HELP_STRING([--disable-scripting-javascript],
2386 [Disable support for scripts in JavaScript.]),
2390 AC_ARG_WITH(system-rhino,
2391 AS_HELP_STRING([--with-system-rhino],
2392 [Use rhino already on system.]),,)
2393 # [with_system_rhino="$with_system_jars"])
2394 # Above is not used as we have different debug interface
2395 # patched into internal rhino. This code needs to be fixed
2396 # before we can enable it by default.
2398 AC_ARG_WITH(rhino-jar,
2399 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2400 [Specify path to jarfile manually.]),
2403 AC_ARG_WITH(system-jfreereport,
2404 AS_HELP_STRING([--with-system-jfreereport],
2405 [Use JFreeReport already on system.]),,
2406 [with_system_jfreereport="$with_system_jars"])
2408 AC_ARG_WITH(sac-jar,
2409 AS_HELP_STRING([--with-sac-jar=JARFILE],
2410 [Specify path to jarfile manually.]),
2413 AC_ARG_WITH(libxml-jar,
2414 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2415 [Specify path to jarfile manually.]),
2416 LIBXML_JAR=$withval)
2418 AC_ARG_WITH(flute-jar,
2419 AS_HELP_STRING([--with-flute-jar=JARFILE],
2420 [Specify path to jarfile manually.]),
2423 AC_ARG_WITH(jfreereport-jar,
2424 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2425 [Specify path to jarfile manually.]),
2426 JFREEREPORT_JAR=$withval)
2428 AC_ARG_WITH(liblayout-jar,
2429 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2430 [Specify path to jarfile manually.]),
2431 LIBLAYOUT_JAR=$withval)
2433 AC_ARG_WITH(libloader-jar,
2434 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2435 [Specify path to jarfile manually.]),
2436 LIBLOADER_JAR=$withval)
2438 AC_ARG_WITH(libformula-jar,
2439 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2440 [Specify path to jarfile manually.]),
2441 LIBFORMULA_JAR=$withval)
2443 AC_ARG_WITH(librepository-jar,
2444 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2445 [Specify path to jarfile manually.]),
2446 LIBREPOSITORY_JAR=$withval)
2448 AC_ARG_WITH(libfonts-jar,
2449 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2450 [Specify path to jarfile manually.]),
2451 LIBFONTS_JAR=$withval)
2453 AC_ARG_WITH(libserializer-jar,
2454 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2455 [Specify path to jarfile manually.]),
2456 LIBSERIALIZER_JAR=$withval)
2458 AC_ARG_WITH(libbase-jar,
2459 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2460 [Specify path to jarfile manually.]),
2461 LIBBASE_JAR=$withval)
2463 AC_ARG_WITH(system-odbc,
2464 AS_HELP_STRING([--with-system-odbc],
2465 [Use the odbc headers already on system.]),,
2466 [with_system_odbc="auto"])
2468 AC_ARG_WITH(system-sane,
2469 AS_HELP_STRING([--with-system-sane],
2470 [Use sane.h already on system.]),,
2471 [with_system_sane="$with_system_headers"])
2473 AC_ARG_WITH(system-bluez,
2474 AS_HELP_STRING([--with-system-bluez],
2475 [Use bluetooth.h already on system.]),,
2476 [with_system_bluez="$with_system_headers"])
2478 AC_ARG_WITH(system-boost,
2479 AS_HELP_STRING([--with-system-boost],
2480 [Use boost already on system.]),,
2481 [with_system_boost="$with_system_headers"])
2483 AC_ARG_WITH(system-dragonbox,
2484 AS_HELP_STRING([--with-system-dragonbox],
2485 [Use dragonbox already on system.]),,
2486 [with_system_dragonbox="$with_system_headers"])
2488 AC_ARG_WITH(system-frozen,
2489 AS_HELP_STRING([--with-system-frozen],
2490 [Use frozen already on system.]),,
2491 [with_system_frozen="$with_system_headers"])
2493 AC_ARG_WITH(system-libfixmath,
2494 AS_HELP_STRING([--with-system-libfixmath],
2495 [Use libfixmath already on system.]),,
2496 [with_system_libfixmath="$with_system_libs"])
2498 AC_ARG_WITH(system-glm,
2499 AS_HELP_STRING([--with-system-glm],
2500 [Use glm already on system.]),,
2501 [with_system_glm="$with_system_headers"])
2503 AC_ARG_WITH(system-hunspell,
2504 AS_HELP_STRING([--with-system-hunspell],
2505 [Use libhunspell already on system.]),,
2506 [with_system_hunspell="$with_system_libs"])
2508 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2509 AS_HELP_STRING([--enable-cairo-rgba],
2510 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2512 libo_FUZZ_ARG_ENABLE(zxing,
2513 AS_HELP_STRING([--disable-zxing],
2514 [Disable use of zxing external library.]))
2516 AC_ARG_WITH(system-zxing,
2517 AS_HELP_STRING([--with-system-zxing],
2518 [Use libzxing already on system.]),,
2519 [with_system_zxing="$with_system_libs"])
2521 AC_ARG_WITH(system-zxcvbn,
2522 AS_HELP_STRING([--with-system-zxcvbn],
2523 [Use libzxcvbn already on system.]),,
2524 [with_system_zxcvbn="$with_system_libs"])
2526 AC_ARG_WITH(system-box2d,
2527 AS_HELP_STRING([--with-system-box2d],
2528 [Use box2d already on system.]),,
2529 [with_system_box2d="$with_system_libs"])
2531 AC_ARG_WITH(system-mythes,
2532 AS_HELP_STRING([--with-system-mythes],
2533 [Use mythes already on system.]),,
2534 [with_system_mythes="$with_system_libs"])
2536 AC_ARG_WITH(system-altlinuxhyph,
2537 AS_HELP_STRING([--with-system-altlinuxhyph],
2538 [Use ALTLinuxhyph already on system.]),,
2539 [with_system_altlinuxhyph="$with_system_libs"])
2541 AC_ARG_WITH(system-lpsolve,
2542 AS_HELP_STRING([--with-system-lpsolve],
2543 [Use lpsolve already on system.]),,
2544 [with_system_lpsolve="$with_system_libs"])
2546 AC_ARG_WITH(system-coinmp,
2547 AS_HELP_STRING([--with-system-coinmp],
2548 [Use CoinMP already on system.]),,
2549 [with_system_coinmp="$with_system_libs"])
2551 AC_ARG_WITH(system-liblangtag,
2552 AS_HELP_STRING([--with-system-liblangtag],
2553 [Use liblangtag library already on system.]),,
2554 [with_system_liblangtag="$with_system_libs"])
2556 AC_ARG_WITH(system-lockfile,
2557 AS_HELP_STRING([--with-system-lockfile[=file]],
2558 [Detect a system lockfile program or use the \$file argument.]))
2561 AS_HELP_STRING([--without-webdav],
2562 [Disable WebDAV support in the UCB.]))
2564 AC_ARG_WITH(linker-hash-style,
2565 AS_HELP_STRING([--with-linker-hash-style],
2566 [Use linker with --hash-style=<style> when linking shared objects.
2567 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2568 if supported on the build system, and "sysv" otherwise.]))
2570 AC_ARG_WITH(jdk-home,
2571 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2572 [If you have installed JDK 8 or later on your system please supply the
2573 path here. Note that this is not the location of the java command but the
2574 location of the entire distribution. In case of cross-compiling, this
2575 is the JDK of the host os. Use --with-build-platform-configure-options
2576 to point to a different build platform JDK.]),
2580 AS_HELP_STRING([--with-help],
2581 [Enable the build of help. There is a special parameter "common" that
2582 can be used to bundle only the common part, .e.g help-specific icons.
2583 This is useful when you build the helpcontent separately.])
2585 Usage: --with-help build the old local help
2586 --without-help no local help (default)
2587 --with-help=html build the new HTML local help
2588 --with-help=online build the new HTML online help
2592 AC_ARG_WITH(omindex,
2593 AS_HELP_STRING([--with-omindex],
2594 [Enable the support of xapian-omega index for online help.])
2596 Usage: --with-omindex=server prepare the pages for omindex
2597 but let xapian-omega be built in server.
2598 --with-omindex=noxap do not prepare online pages
2603 libo_FUZZ_ARG_WITH(java,
2604 AS_HELP_STRING([--with-java=<java command>],
2605 [Specify the name of the Java interpreter command. Typically "java"
2606 which is the default.
2608 To build without support for Java components, applets, accessibility
2609 or the XML filters written in Java, use --without-java or --with-java=no.]),
2610 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2611 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2614 AC_ARG_WITH(jvm-path,
2615 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2616 [Use a specific JVM search path at runtime.
2617 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2620 AC_ARG_WITH(ant-home,
2621 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2622 [If you have installed Apache Ant on your system, please supply the path here.
2623 Note that this is not the location of the Ant binary but the location
2624 of the entire distribution.]),
2627 AC_ARG_WITH(symbol-config,
2628 AS_HELP_STRING([--with-symbol-config],
2629 [Configuration for the crashreport symbol upload]),
2631 [with_symbol_config=no])
2633 AC_ARG_WITH(export-validation,
2634 AS_HELP_STRING([--without-export-validation],
2635 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2636 ,with_export_validation=auto)
2638 AC_ARG_WITH(bffvalidator,
2639 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2640 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2641 Requires installed Microsoft Office Binary File Format Validator.
2642 Note: export-validation (--with-export-validation) is required to be turned on.
2643 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2644 ,with_bffvalidator=no)
2646 libo_FUZZ_ARG_WITH(junit,
2647 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2648 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2649 --without-junit disables those tests. Not relevant in the --without-java case.]),
2652 AC_ARG_WITH(hamcrest,
2653 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2654 [Specifies the hamcrest jar file to use for JUnit-based tests.
2655 --without-junit disables those tests. Not relevant in the --without-java case.]),
2658 AC_ARG_WITH(perl-home,
2659 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2660 [If you have installed Perl 5 Distribution, on your system, please
2661 supply the path here. Note that this is not the location of the Perl
2662 binary but the location of the entire distribution.]),
2665 libo_FUZZ_ARG_WITH(doxygen,
2667 [--with-doxygen=<absolute path to doxygen executable>],
2668 [Specifies the doxygen executable to use when generating ODK C/C++
2669 documentation. --without-doxygen disables generation of ODK C/C++
2670 documentation. Not relevant in the --disable-odk case.]),
2673 AC_ARG_WITH(visual-studio,
2674 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2675 [Specify which Visual Studio version to use in case several are
2676 installed. Currently 2019 (default) and 2022 are supported.]),
2679 AC_ARG_WITH(windows-sdk,
2680 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2681 [Specify which Windows SDK, or "Windows Kit", version to use
2682 in case the one that came with the selected Visual Studio
2683 is not what you want for some reason. Note that not all compiler/SDK
2684 combinations are supported. The intent is that this option should not
2689 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2690 [Use this option to build LibreOffice with additional UI language support.
2691 English (US) is always included by default.
2692 Separate multiple languages with space.
2693 For all languages, use --with-lang=ALL.]),
2696 AC_ARG_WITH(locales,
2697 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2698 [Use this option to limit the locale information built in.
2699 Separate multiple locales with space.
2700 Very experimental and might well break stuff.
2701 Just a desperate measure to shrink code and data size.
2702 By default all the locales available is included.
2703 Just works with --disable-dynloading. Defaults to "ALL".
2704 This option is completely unrelated to --with-lang.])
2706 Affects also our character encoding conversion
2707 tables for encodings mainly targeted for a
2708 particular locale, like EUC-CN and EUC-TW for
2709 zh, ISO-2022-JP for ja.
2711 Affects also our add-on break iterator data for
2714 For the default, all locales, don't use this switch at all.
2715 Specifying just the language part of a locale means all matching
2716 locales will be included.
2720 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2721 libo_FUZZ_ARG_WITH(krb5,
2722 AS_HELP_STRING([--with-krb5],
2723 [Enable MIT Kerberos 5 support in modules that support it.
2724 By default automatically enabled on platforms
2725 where a good system Kerberos 5 is available.]),
2728 libo_FUZZ_ARG_WITH(gssapi,
2729 AS_HELP_STRING([--with-gssapi],
2730 [Enable GSSAPI support in modules that support it.
2731 By default automatically enabled on platforms
2732 where a good system GSSAPI is available.]),
2735 libo_FUZZ_ARG_WITH(lxml,
2736 AS_HELP_STRING([--without-lxml],
2737 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2738 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2739 report widget classes and ids.]),
2742 libo_FUZZ_ARG_WITH(latest-c++,
2743 AS_HELP_STRING([--with-latest-c++],
2744 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2745 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2746 [with_latest_c__=no])
2748 AC_ARG_WITH(gtk3-build,
2749 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2750 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2751 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2753 dnl ===================================================================
2755 dnl ===================================================================
2757 AC_ARG_WITH(branding,
2758 AS_HELP_STRING([--with-branding=/path/to/images],
2759 [Use given path to retrieve branding images set.])
2761 Search for intro.png about.svg and logo.svg.
2762 If any is missing, default ones will be used instead.
2764 Search also progress.conf for progress
2765 settings on intro screen :
2767 PROGRESSBARCOLOR="255,255,255" Set color of
2768 progress bar. Comma separated RGB decimal values.
2769 PROGRESSSIZE="407,6" Set size of progress bar.
2770 Comma separated decimal values (width, height).
2771 PROGRESSPOSITION="61,317" Set position of progress
2772 bar from left,top. Comma separated decimal values.
2773 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2774 bar frame. Comma separated RGB decimal values.
2775 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2776 bar text. Comma separated RGB decimal values.
2777 PROGRESSTEXTBASELINE="287" Set vertical position of
2778 progress bar text from top. Decimal value.
2780 Default values will be used if not found.
2785 AC_ARG_WITH(extra-buildid,
2786 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2787 [Show addition build identification in about dialog.]),
2792 AS_HELP_STRING([--with-vendor="John the Builder"],
2793 [Set vendor of the build.]),
2796 AC_ARG_WITH(privacy-policy-url,
2797 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2798 [The URL to your privacy policy (needed when
2799 enabling online-update or crashreporting via breakpad)]),
2800 [if test "x$with_privacy_policy_url" = "xyes"; then
2801 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2802 elif test "x$with_privacy_policy_url" = "xno"; then
2803 with_privacy_policy_url="undefined"
2805 ,[with_privacy_policy_url="undefined"])
2807 AC_ARG_WITH(android-package-name,
2808 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2809 [Set Android package name of the build.]),
2812 AC_ARG_WITH(compat-oowrappers,
2813 AS_HELP_STRING([--with-compat-oowrappers],
2814 [Install oo* wrappers in parallel with
2815 lo* ones to keep backward compatibility.
2816 Has effect only with make distro-pack-install]),
2819 AC_ARG_WITH(os-version,
2820 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2821 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2824 AC_ARG_WITH(parallelism,
2825 AS_HELP_STRING([--with-parallelism],
2826 [Number of jobs to run simultaneously during build. Parallel builds can
2827 save a lot of time on multi-cpu machines. Defaults to the number of
2828 CPUs on the machine, unless you configure --enable-icecream - then to
2832 AC_ARG_WITH(all-tarballs,
2833 AS_HELP_STRING([--with-all-tarballs],
2834 [Download all external tarballs unconditionally]))
2836 AC_ARG_WITH(gdrive-client-id,
2837 AS_HELP_STRING([--with-gdrive-client-id],
2838 [Provides the client id of the application for OAuth2 authentication
2839 on Google Drive. If either this or --with-gdrive-client-secret is
2840 empty, the feature will be disabled]),
2843 AC_ARG_WITH(gdrive-client-secret,
2844 AS_HELP_STRING([--with-gdrive-client-secret],
2845 [Provides the client secret of the application for OAuth2
2846 authentication on Google Drive. If either this or
2847 --with-gdrive-client-id is empty, the feature will be disabled]),
2850 AC_ARG_WITH(alfresco-cloud-client-id,
2851 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2852 [Provides the client id of the application for OAuth2 authentication
2853 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2854 empty, the feature will be disabled]),
2857 AC_ARG_WITH(alfresco-cloud-client-secret,
2858 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2859 [Provides the client secret of the application for OAuth2
2860 authentication on Alfresco Cloud. If either this or
2861 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2864 AC_ARG_WITH(onedrive-client-id,
2865 AS_HELP_STRING([--with-onedrive-client-id],
2866 [Provides the client id of the application for OAuth2 authentication
2867 on OneDrive. If either this or --with-onedrive-client-secret is
2868 empty, the feature will be disabled]),
2871 AC_ARG_WITH(onedrive-client-secret,
2872 AS_HELP_STRING([--with-onedrive-client-secret],
2873 [Provides the client secret of the application for OAuth2
2874 authentication on OneDrive. If either this or
2875 --with-onedrive-client-id is empty, the feature will be disabled]),
2878 dnl Check for coredumpctl support to present information about crashing test processes:
2879 AC_ARG_WITH(coredumpctl,
2880 AS_HELP_STRING([--with-coredumpctl],
2881 [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2884 AC_ARG_WITH(buildconfig-recorded,
2885 AS_HELP_STRING([--with-buildconfig-recorded],
2886 [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2889 AC_MSG_CHECKING([whether to record build config])
2890 if test -z "$with_buildconfig_recorded"; then
2891 with_buildconfig_recorded=no
2893 if test "$with_buildconfig_recorded" = no; then
2896 AC_MSG_RESULT([yes])
2897 # replace backslashes, to get a valid c++ string
2898 config_args=$(echo $ac_configure_args | tr '\\' '/')
2899 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2900 AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2903 dnl ===================================================================
2904 dnl Do we want to use pre-build binary tarball for recompile
2905 dnl ===================================================================
2907 if test "$enable_library_bin_tar" = "yes" ; then
2908 USE_LIBRARY_BIN_TAR=TRUE
2910 USE_LIBRARY_BIN_TAR=
2912 AC_SUBST(USE_LIBRARY_BIN_TAR)
2914 dnl ===================================================================
2915 dnl Test whether build target is Release Build
2916 dnl ===================================================================
2917 AC_MSG_CHECKING([whether build target is Release Build])
2918 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2920 ENABLE_RELEASE_BUILD=
2921 dnl Pu the value on one line as make (at least on macOS) seems to ignore
2922 dnl the newlines and then complains about spaces.
2923 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/>'
2925 AC_MSG_RESULT([yes])
2926 ENABLE_RELEASE_BUILD=TRUE
2927 GET_TASK_ALLOW_ENTITLEMENT=
2929 AC_SUBST(ENABLE_RELEASE_BUILD)
2930 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2932 AC_MSG_CHECKING([whether to build a Community flavor])
2933 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2934 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2935 AC_MSG_RESULT([yes])
2940 dnl ===================================================================
2941 dnl Test whether to sign Windows Build
2942 dnl ===================================================================
2943 AC_MSG_CHECKING([whether to sign windows build])
2944 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2945 AC_MSG_RESULT([yes])
2946 WINDOWS_BUILD_SIGNING="TRUE"
2949 WINDOWS_BUILD_SIGNING="FALSE"
2951 AC_SUBST(WINDOWS_BUILD_SIGNING)
2953 dnl ===================================================================
2954 dnl MacOSX build and runtime environment options
2955 dnl ===================================================================
2957 AC_ARG_WITH(macosx-version-min-required,
2958 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2959 [set the minimum OS version needed to run the built LibreOffice])
2961 e. g.: --with-macosx-version-min-required=10.15
2965 dnl ===================================================================
2966 dnl Check for incompatible options set by fuzzing, and reset those
2967 dnl automatically to working combinations
2968 dnl ===================================================================
2970 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2971 "$enable_dbus" != "$enable_avahi"; then
2972 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2973 enable_avahi=$enable_dbus
2978 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2979 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2983 add_lopath_before ()
2988 for dir in $LO_PATH ; do
2989 if test "$dir" != "$1" ; then
2990 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2993 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2996 dnl ===================================================================
2997 dnl check for required programs (grep, awk, sed, bash)
2998 dnl ===================================================================
3003 if test -n "$1"; then
3004 if test "$build_os" = "cygwin"; then
3005 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3007 new_path=`cygpath -sm "$formatted_path"`
3010 new_path=`cygpath -u "$formatted_path"`
3015 if test "$2" = "after"; then
3016 add_lopath_after "$new_path"
3018 add_lopath_before "$new_path"
3024 AC_PATH_PROG( AWK, $AWK)
3025 if test -z "$AWK"; then
3026 AC_MSG_ERROR([install awk to run this script])
3029 AC_PATH_PROG(BASH, bash)
3030 if test -z "$BASH"; then
3031 AC_MSG_ERROR([bash not found in \$PATH])
3035 # prefer parallel compression tools, if available
3036 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3037 if test -z "$COMPRESSIONTOOL"; then
3038 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3039 if test -z "$COMPRESSIONTOOL"; then
3040 AC_MSG_ERROR([gzip not found in \$PATH])
3043 AC_SUBST(COMPRESSIONTOOL)
3045 AC_MSG_CHECKING([for GNU or BSD tar])
3046 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3047 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
3048 if test $? -eq 0; then
3053 AC_MSG_RESULT($GNUTAR)
3054 if test -z "$GNUTAR"; then
3055 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3059 AC_MSG_CHECKING([for tar's option to strip components])
3060 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3061 if test $? -eq 0; then
3062 STRIP_COMPONENTS="--strip-components"
3064 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3065 if test $? -eq 0; then
3066 STRIP_COMPONENTS="--strip-path"
3068 STRIP_COMPONENTS="unsupported"
3071 AC_MSG_RESULT($STRIP_COMPONENTS)
3072 if test x$STRIP_COMPONENTS = xunsupported; then
3073 AC_MSG_ERROR([you need a tar that is able to strip components.])
3075 AC_SUBST(STRIP_COMPONENTS)
3077 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3078 dnl desktop OSes from "mobile" ones.
3080 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3081 dnl In other words, that when building for an OS that is not a
3082 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3084 dnl Note the direction of the implication; there is no assumption that
3085 dnl cross-compiling would imply a non-desktop OS.
3087 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3088 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3089 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3090 if test "$_os" != Emscripten; then
3091 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3095 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3096 # also work with the default gtk3 plugin.
3097 if test "$enable_wasm_strip" = "yes"; then
3102 test "$_os" = Emscripten && enable_curl=no
3103 enable_database_connectivity=no
3106 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3107 enable_extension_integration=no
3108 enable_extensions=no
3109 enable_extension_update=no
3113 enable_lotuswordpro=no
3117 enable_online_update=no
3121 enable_report_builder=no
3123 enable_sdremote_bluetooth=no
3133 test_libpagemaker=no
3143 test "${with_fonts+set}" = set || with_fonts=yes
3144 test "${with_locales+set}" = set || with_locales=en
3146 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3147 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3148 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3149 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3150 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3151 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3152 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3153 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3154 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3155 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3156 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3157 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3158 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3159 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3160 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3161 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3162 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3163 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3166 EMSCRIPTEN_NEH_MAJOR=3
3167 EMSCRIPTEN_NEH_MINOR=1
3168 EMSCRIPTEN_NEH_TINY=3
3169 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3171 if test "$enable_wasm_exceptions" = yes; then
3172 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3173 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3174 if test $? -ne 0; then
3175 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3177 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3179 ENABLE_WASM_EXCEPTIONS=TRUE
3181 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3183 # Whether to build "avmedia" functionality or not.
3185 if test "$enable_avmedia" = yes; then
3186 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3187 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3189 test_gstreamer_1_0=no
3192 # Decide whether to build database connectivity stuff (including Base) or not.
3193 if test "$enable_database_connectivity" != no; then
3194 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3195 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3197 if test "$_os" = iOS; then
3198 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3200 disable_database_connectivity_dependencies
3203 if test -z "$enable_extensions"; then
3204 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3205 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3206 enable_extensions=yes
3210 DISABLE_SCRIPTING=''
3211 if test "$enable_scripting" = yes; then
3212 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3213 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3215 DISABLE_SCRIPTING='TRUE'
3216 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3219 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3220 # Disable dynamic_loading always for iOS and Android
3221 enable_dynamic_loading=no
3222 elif test -z "$enable_dynamic_loading"; then
3223 # Otherwise enable it unless specifically disabled
3224 enable_dynamic_loading=yes
3227 DISABLE_DYNLOADING=''
3228 if test "$enable_dynamic_loading" = yes; then
3229 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3231 DISABLE_DYNLOADING='TRUE'
3232 if test $_os != iOS -a $_os != Android; then
3233 enable_database_connectivity=no
3241 AC_SUBST(DISABLE_DYNLOADING)
3243 ENABLE_CUSTOMTARGET_COMPONENTS=
3244 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3245 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3246 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3247 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3250 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3252 if test "$enable_extensions" = yes; then
3253 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3254 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3256 enable_extension_integration=no
3257 enable_extension_update=no
3260 # remember SYSBASE value
3263 dnl ===================================================================
3264 dnl Sort out various gallery compilation options
3265 dnl ===================================================================
3266 WITH_GALLERY_BUILD=TRUE
3267 AC_MSG_CHECKING([how to build and package galleries])
3268 if test -n "${with_galleries}"; then
3269 if test "$with_galleries" = "build"; then
3270 if test "$enable_database_connectivity" = no; then
3271 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3273 AC_MSG_RESULT([build from source images internally])
3274 elif test "$with_galleries" = "no"; then
3276 AC_MSG_RESULT([disable non-internal gallery build])
3278 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3281 if test $_os != iOS -a $_os != Android; then
3282 AC_MSG_RESULT([internal src images for desktop])
3285 AC_MSG_RESULT([disable src image build])
3288 AC_SUBST(WITH_GALLERY_BUILD)
3290 dnl ===================================================================
3291 dnl Sort out various templates compilation options
3292 dnl ===================================================================
3294 AC_MSG_CHECKING([build with or without template files])
3295 if test -n "${with_templates}"; then
3296 if test "$with_templates" = "yes"; then
3297 AC_MSG_RESULT([enable all templates])
3298 elif test "$with_templates" = "no"; then
3300 AC_MSG_RESULT([disable non-internal templates])
3302 AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3305 if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3306 AC_MSG_RESULT([enable all templates])
3309 AC_MSG_RESULT([disable non-internal templates])
3312 AC_SUBST(WITH_TEMPLATES)
3314 dnl ===================================================================
3315 dnl Checks if ccache is available
3316 dnl ===================================================================
3318 if test "$enable_ccache" = "no"; then
3320 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3321 case "%$CC%$CXX%" in
3322 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3323 # assume that's good then
3324 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3325 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3326 CCACHE_DEPEND_MODE=1
3329 # try to use our own ccache if it is available and CCACHE was not already defined
3330 if test -z "$CCACHE"; then
3331 if test "$_os" = "WINNT"; then
3332 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3334 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3335 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3336 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3337 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3340 AC_PATH_PROG([CCACHE],[ccache],[not found])
3341 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3342 CCACHE=`win_short_path_for_make "$CCACHE"`
3343 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3345 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3346 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3347 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3355 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3356 # on windows/VC perhaps sccache is around?
3357 case "%$CC%$CXX%" in
3358 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3359 # assume that's good then
3360 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3361 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3362 CCACHE_DEPEND_MODE=1
3366 # for sharing code below, reuse CCACHE env var
3367 AC_PATH_PROG([CCACHE],[sccache],[not found])
3368 if test "$CCACHE" != "not found"; then
3369 CCACHE=`win_short_path_for_make "$CCACHE"`
3371 CCACHE_DEPEND_MODE=1
3376 if test "$CCACHE" = "not found"; then
3379 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3380 CCACHE_DEPEND_MODE=1
3381 # Need to check for ccache version: otherwise prevents
3382 # caching of the results (like "-x objective-c++" for Mac)
3383 if test $_os = Darwin -o $_os = iOS; then
3384 # Check ccache version
3385 AC_MSG_CHECKING([whether version of ccache is suitable])
3386 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3387 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3388 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3389 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3391 AC_MSG_RESULT([no, $CCACHE_VERSION])
3402 if test "$enable_ccache" = "nodepend"; then
3403 CCACHE_DEPEND_MODE=""
3405 AC_SUBST(CCACHE_DEPEND_MODE)
3407 # sccache defaults are good enough
3408 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3409 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3410 # or (...) max_size = 20.0 G
3411 # -p works with both 4.2 and 4.4
3412 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3413 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3414 if test "$ccache_size" = ""; then
3415 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3416 if test "$ccache_size" = ""; then
3419 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3420 if test $ccache_size -lt 1024; then
3422 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3423 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3425 # warn that ccache may be too small for debug build
3426 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3427 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3430 if test $ccache_size -lt 5; then
3431 #warn that ccache may be too small for debug build
3432 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3433 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3439 if test "$enable_z7_debug" != no; then
3440 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3441 ENABLE_Z7_DEBUG=TRUE
3444 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3445 add_warning "ccache will not work with --disable-z7-debug"
3447 AC_SUBST(ENABLE_Z7_DEBUG)
3449 dnl ===================================================================
3450 dnl Checks for C compiler,
3451 dnl The check for the C++ compiler is later on.
3452 dnl ===================================================================
3453 if test "$_os" != "WINNT"; then
3455 AC_MSG_CHECKING([gcc home])
3456 if test -z "$with_gcc_home"; then
3457 if test "$enable_icecream" = "yes"; then
3458 if test -d "/usr/lib/icecc/bin"; then
3459 GCC_HOME="/usr/lib/icecc/"
3460 elif test -d "/usr/libexec/icecc/bin"; then
3461 GCC_HOME="/usr/libexec/icecc/"
3462 elif test -d "/opt/icecream/bin"; then
3463 GCC_HOME="/opt/icecream/"
3465 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3469 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3470 GCC_HOME_SET="false"
3473 GCC_HOME="$with_gcc_home"
3475 AC_MSG_RESULT($GCC_HOME)
3478 if test "$GCC_HOME_SET" = "true"; then
3479 if test -z "$CC"; then
3480 CC="$GCC_HOME/bin/gcc"
3483 if test -z "$CXX"; then
3484 CXX="$GCC_HOME/bin/g++"
3490 COMPATH=`dirname "$CC"`
3491 if test "$COMPATH" = "."; then
3492 AC_PATH_PROGS(COMPATH, $CC)
3493 dnl double square bracket to get single because of M4 quote...
3494 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3496 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3498 dnl ===================================================================
3500 dnl ===================================================================
3501 AC_MSG_CHECKING([whether to build with Java support])
3502 if test "$with_java" != "no"; then
3503 if test "$DISABLE_SCRIPTING" = TRUE; then
3504 AC_MSG_RESULT([no, overridden by --disable-scripting])
3508 AC_MSG_RESULT([yes])
3510 AC_DEFINE(HAVE_FEATURE_JAVA)
3517 AC_SUBST(ENABLE_JAVA)
3519 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3521 dnl ENABLE_JAVA="" indicate no Java support at all
3523 dnl ===================================================================
3524 dnl Check macOS SDK and compiler
3525 dnl ===================================================================
3527 if test $_os = Darwin; then
3529 # The SDK in the currently selected Xcode should be found.
3531 AC_MSG_CHECKING([what macOS SDK to use])
3532 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3533 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3534 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3535 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3536 # problems that existed in the PPC days with target versions not being respected or random
3537 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3538 # SDK version is enough, no need to do both...
3539 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3540 if test ! -d "$MACOSX_SDK_PATH"; then
3541 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3543 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3544 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3545 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3546 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3548 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3549 # correct version in case such an old SDK is specified, it will be rejected later anyway
3550 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3551 if test $MACOSX_SDK_VERSION -lt 101500; then
3552 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3554 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3555 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3557 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3559 AC_MSG_CHECKING([what minimum version of macOS to require])
3560 if test "$with_macosx_version_min_required" = "" ; then
3561 if test "$host_cpu" = x86_64; then
3562 with_macosx_version_min_required="10.15";
3564 with_macosx_version_min_required="11.0";
3567 # see same notes about MACOSX_SDK_VERSION above
3568 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3569 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3570 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3572 AC_MSG_RESULT([$with_macosx_version_min_required])
3574 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3575 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3576 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3578 AC_MSG_RESULT([yes])
3581 # export this so that "xcrun" invocations later return matching values
3582 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3583 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3584 export DEVELOPER_DIR
3585 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3586 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3588 AC_MSG_CHECKING([whether Xcode is new enough])
3589 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3590 my_xcode_ver2=${my_xcode_ver1#Xcode }
3591 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3592 if test "$my_xcode_ver3" -ge 1205; then
3593 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3594 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3595 if test "$my_xcode_ver3" -ge 1600; then
3596 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3597 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3598 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3600 if test "$my_xcode_ver3" -ge 1500; then
3601 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3602 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3603 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3604 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3605 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3610 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3613 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3614 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3616 LIBTOOL=/usr/bin/libtool
3617 INSTALL_NAME_TOOL=install_name_tool
3618 if test -z "$save_CC"; then
3619 stdlib=-stdlib=libc++
3621 AC_MSG_CHECKING([what C compiler to use])
3622 CC="`xcrun -find clang`"
3623 CC_BASE=`first_arg_basename "$CC"`
3624 if test "$host_cpu" = x86_64; then
3625 CC+=" -target x86_64-apple-macos"
3627 CC+=" -target arm64-apple-macos"
3629 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3630 AC_MSG_RESULT([$CC])
3632 AC_MSG_CHECKING([what C++ compiler to use])
3633 CXX="`xcrun -find clang++`"
3634 CXX_BASE=`first_arg_basename "$CXX"`
3635 if test "$host_cpu" = x86_64; then
3636 CXX+=" -target x86_64-apple-macos"
3638 CXX+=" -target arm64-apple-macos"
3640 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3641 AC_MSG_RESULT([$CXX])
3643 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3646 STRIP=`xcrun -find strip`
3647 LIBTOOL=`xcrun -find libtool`
3648 RANLIB=`xcrun -find ranlib`
3651 AC_MSG_CHECKING([whether to do code signing])
3653 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3656 if test "$enable_macosx_code_signing" = yes; then
3657 # By default use the first suitable certificate (?).
3659 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3660 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3661 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3662 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3663 # "Developer ID Application" one.
3664 identity="Developer ID Application:"
3666 identity=$enable_macosx_code_signing
3668 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3669 if test -n "$identity"; then
3670 MACOSX_CODESIGNING_IDENTITY=$identity
3671 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3672 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3674 AC_MSG_ERROR([cannot determine identity to use])
3678 AC_MSG_CHECKING([whether to create a Mac App Store package])
3680 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3682 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3683 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3685 if test "$enable_macosx_package_signing" = yes; then
3686 # By default use the first suitable certificate.
3687 # It should be a "3rd Party Mac Developer Installer" one
3688 identity="3rd Party Mac Developer Installer:"
3690 identity=$enable_macosx_package_signing
3692 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3693 if test -n "$identity"; then
3694 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3695 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3696 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3698 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3702 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3703 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3706 AC_MSG_CHECKING([whether to sandbox the application])
3708 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3709 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3710 elif test "$enable_macosx_sandbox" = yes; then
3711 ENABLE_MACOSX_SANDBOX=TRUE
3712 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3713 AC_MSG_RESULT([yes])
3718 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3719 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3720 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3722 if test -n "$with_macosx_provisioning_profile" ; then
3723 if test ! -f "$with_macosx_provisioning_profile"; then
3724 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3726 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3727 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3728 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3729 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3730 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3734 AC_SUBST(MACOSX_SDK_PATH)
3735 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3736 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3737 AC_SUBST(INSTALL_NAME_TOOL)
3738 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3739 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3740 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3741 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3742 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3743 AC_SUBST(MACOSX_PROVISIONING_INFO)
3744 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3745 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3746 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3748 dnl ===================================================================
3749 dnl Check iOS SDK and compiler
3750 dnl ===================================================================
3752 if test $_os = iOS; then
3753 AC_MSG_CHECKING([what iOS SDK to use])
3755 if test "$enable_ios_simulator" = "yes"; then
3756 platformlc=iphonesimulator
3757 versionmin=-mios-simulator-version-min=14.5
3760 versionmin=-miphoneos-version-min=14.5
3763 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3765 if ! test -d "$sysroot"; then
3766 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3769 AC_MSG_RESULT($sysroot)
3771 stdlib="-stdlib=libc++"
3773 AC_MSG_CHECKING([what C compiler to use])
3774 CC="`xcrun -find clang`"
3775 CC_BASE=`first_arg_basename "$CC"`
3776 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3777 AC_MSG_RESULT([$CC])
3779 AC_MSG_CHECKING([what C++ compiler to use])
3780 CXX="`xcrun -find clang++`"
3781 CXX_BASE=`first_arg_basename "$CXX"`
3782 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3783 AC_MSG_RESULT([$CXX])
3785 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3788 STRIP=`xcrun -find strip`
3789 LIBTOOL=`xcrun -find libtool`
3790 RANLIB=`xcrun -find ranlib`
3793 AC_MSG_CHECKING([whether to treat the installation as read-only])
3795 if test $_os = Darwin; then
3796 enable_readonly_installset=yes
3797 elif test "$enable_extensions" != yes; then
3798 enable_readonly_installset=yes
3800 if test "$enable_readonly_installset" = yes; then
3801 AC_MSG_RESULT([yes])
3802 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3807 dnl ===================================================================
3808 dnl Structure of install set
3809 dnl ===================================================================
3811 if test $_os = Darwin; then
3812 LIBO_BIN_FOLDER=MacOS
3813 LIBO_ETC_FOLDER=Resources
3814 LIBO_LIBEXEC_FOLDER=MacOS
3815 LIBO_LIB_FOLDER=Frameworks
3816 LIBO_LIB_PYUNO_FOLDER=Resources
3817 LIBO_SHARE_FOLDER=Resources
3818 LIBO_SHARE_HELP_FOLDER=Resources/help
3819 LIBO_SHARE_JAVA_FOLDER=Resources/java
3820 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3821 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3822 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3823 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3824 LIBO_URE_BIN_FOLDER=MacOS
3825 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3826 LIBO_URE_LIB_FOLDER=Frameworks
3827 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3828 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3829 elif test $_os = WINNT; then
3830 LIBO_BIN_FOLDER=program
3831 LIBO_ETC_FOLDER=program
3832 LIBO_LIBEXEC_FOLDER=program
3833 LIBO_LIB_FOLDER=program
3834 LIBO_LIB_PYUNO_FOLDER=program
3835 LIBO_SHARE_FOLDER=share
3836 LIBO_SHARE_HELP_FOLDER=help
3837 LIBO_SHARE_JAVA_FOLDER=program/classes
3838 LIBO_SHARE_PRESETS_FOLDER=presets
3839 LIBO_SHARE_READMES_FOLDER=readmes
3840 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3841 LIBO_SHARE_SHELL_FOLDER=program/shell
3842 LIBO_URE_BIN_FOLDER=program
3843 LIBO_URE_ETC_FOLDER=program
3844 LIBO_URE_LIB_FOLDER=program
3845 LIBO_URE_MISC_FOLDER=program
3846 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3848 LIBO_BIN_FOLDER=program
3849 LIBO_ETC_FOLDER=program
3850 LIBO_LIBEXEC_FOLDER=program
3851 LIBO_LIB_FOLDER=program
3852 LIBO_LIB_PYUNO_FOLDER=program
3853 LIBO_SHARE_FOLDER=share
3854 LIBO_SHARE_HELP_FOLDER=help
3855 LIBO_SHARE_JAVA_FOLDER=program/classes
3856 LIBO_SHARE_PRESETS_FOLDER=presets
3857 LIBO_SHARE_READMES_FOLDER=readmes
3858 if test "$enable_fuzzers" != yes; then
3859 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3861 LIBO_SHARE_RESOURCE_FOLDER=resource
3863 LIBO_SHARE_SHELL_FOLDER=program/shell
3864 LIBO_URE_BIN_FOLDER=program
3865 LIBO_URE_ETC_FOLDER=program
3866 LIBO_URE_LIB_FOLDER=program
3867 LIBO_URE_MISC_FOLDER=program
3868 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3870 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3871 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3872 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3873 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3874 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3885 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3887 # Not all of them needed in config_host.mk, add more if need arises
3888 AC_SUBST(LIBO_BIN_FOLDER)
3889 AC_SUBST(LIBO_ETC_FOLDER)
3890 AC_SUBST(LIBO_LIB_FOLDER)
3891 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3892 AC_SUBST(LIBO_SHARE_FOLDER)
3893 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3894 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3895 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3896 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3897 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3898 AC_SUBST(LIBO_URE_BIN_FOLDER)
3899 AC_SUBST(LIBO_URE_ETC_FOLDER)
3900 AC_SUBST(LIBO_URE_LIB_FOLDER)
3901 AC_SUBST(LIBO_URE_MISC_FOLDER)
3902 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3904 dnl ===================================================================
3905 dnl Windows specific tests and stuff
3906 dnl ===================================================================
3910 # Return value: $regvalue
3913 if test "$build_os" = "wsl"; then
3914 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3918 local _regentry="/proc/registry${1}/${2}"
3919 if test -f "$_regentry"; then
3920 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3921 # Registry keys read via /proc/registry* are always \0 terminated!
3922 local _regvalue=$(tr -d '\0' < "$_regentry")
3923 if test $? -eq 0; then
3929 # Get a value from the 32-bit side of the Registry
3932 reg_get_value "32" "$1"
3935 # Get a value from the 64-bit side of the Registry
3938 reg_get_value "64" "$1"
3943 # Return value: $reglist
3946 if test "$build_os" = "wsl"; then
3947 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3951 reglist=$(ls "/proc/registry${1}/${2}")
3954 # List values from the 32-bit side of the Registry
3955 reg_list_values_32()
3957 reg_list_values "32" "$1"
3960 # List values from the 64-bit side of the Registry
3961 reg_list_values_64()
3963 reg_list_values "64" "$1"
3971 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3980 PLATFORMID=windows_x86_64
3982 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3984 WIN_MULTI_ARCH="x86"
3990 PLATFORMID=windows_x86
3993 WIN_OTHER_ARCH="x64"
3998 PLATFORMID=windows_aarch64
4000 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4001 WIN_HOST_ARCH="arm64"
4006 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4010 case "$build_cpu" in
4011 x86_64) WIN_BUILD_ARCH="x64" ;;
4012 i*86) WIN_BUILD_ARCH="x86" ;;
4013 aarch64) WIN_BUILD_ARCH="arm64" ;;
4015 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4019 SCPDEFS="$SCPDEFS -D_MSC_VER"
4023 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4024 # other-arch won't, but wouldn't break the build (x64 on x86).
4025 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4026 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4030 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4031 # To allow building Windows multi-arch releases without cross-tooling
4032 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4033 cross_compiling="yes"
4037 if test "$cross_compiling" = "yes"; then
4038 export CROSS_COMPILING=TRUE
4039 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4040 ENABLE_WASM_STRIP=TRUE
4042 if test "$_os" = "Emscripten"; then
4043 if test "$with_main_module" = "calc"; then
4044 ENABLE_WASM_STRIP_WRITER=TRUE
4045 elif test "$with_main_module" = "writer"; then
4046 ENABLE_WASM_STRIP_CALC=TRUE
4051 BUILD_TYPE="$BUILD_TYPE NATIVE"
4053 AC_SUBST(CROSS_COMPILING)
4054 AC_SUBST(ENABLE_WASM_STRIP)
4055 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4056 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4058 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4059 # NOTE: must _not_ be used for bundled external libraries!
4061 if test "$GCC" = "yes"; then
4062 AC_MSG_CHECKING( for -isystem )
4064 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4065 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4067 if test -n "$ISYSTEM"; then
4073 if test -z "$ISYSTEM"; then
4074 # fall back to using -I
4079 dnl ===================================================================
4080 dnl Check which Visual Studio compiler is used
4081 dnl ===================================================================
4083 map_vs_year_to_version()
4085 # Return value: $vsversion
4097 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4101 vs_versions_to_check()
4103 # Args: $1 (optional) : versions to check, in the order of preference
4104 # Return value: $vsversions
4108 if test -n "$1"; then
4109 map_vs_year_to_version "$1"
4110 vsversions=$vsversion
4112 # Default version is 2019
4117 win_get_env_from_vsdevcmdbat()
4119 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4120 printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4121 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4122 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4123 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4125 if test "$build_os" = "wsl"; then
4126 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4128 chmod +x $WRAPPERBATCHFILEPATH
4129 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4131 rm -f $WRAPPERBATCHFILEPATH
4132 printf '%s' "$result"
4137 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4138 if test -n "$regvalue"; then
4139 PathFormat "$regvalue"
4140 UCRTSDKDIR=$formatted_path_unix
4141 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4142 UCRTVERSION=$regvalue
4144 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4148 if test -z "$UCRTSDKDIR"; then
4149 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4150 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4151 if test -f "$ide_env_file"; then
4152 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4153 UCRTSDKDIR=$formatted_path
4154 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4155 dnl Hack needed at least by tml:
4156 if test "$UCRTVERSION" = 10.0.15063.0 \
4157 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4158 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4160 UCRTVERSION=10.0.14393.0
4163 AC_MSG_ERROR([No UCRT found])
4171 # Args: $1 (optional) : The VS version year
4172 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4174 unset vctest vctoolset vcnumwithdot vcbuildnumber
4176 vs_versions_to_check "$1"
4177 if test "$build_os" = wsl; then
4178 vswhere="$PROGRAMFILESX86"
4179 if test -z "$vswhere"; then
4180 vswhere="c:\\Program Files (x86)"
4183 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4185 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4186 PathFormat "$vswhere"
4187 vswhere=$formatted_path_unix
4188 for ver in $vsversions; do
4189 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4190 if test -z "$vswhereoutput"; then
4191 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4193 # Fall back to all MS products (this includes VC++ Build Tools)
4194 if ! test -n "$vswhereoutput"; then
4195 AC_MSG_CHECKING([VC++ Build Tools and similar])
4196 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4198 if test -n "$vswhereoutput"; then
4199 PathFormat "$vswhereoutput"
4200 vctest=$formatted_path_unix
4205 if test -n "$vctest"; then
4207 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4208 vcnumwithdot=$vcnumwithdot.0
4210 case "$vcnumwithdot" in
4220 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4227 AC_MSG_CHECKING([$1 compiler])
4229 CL_EXE_PATH="$2/cl.exe"
4231 if test ! -f "$CL_EXE_PATH"; then
4232 if test "$1" = "multi-arch"; then
4233 AC_MSG_WARN([no compiler (cl.exe) in $2])
4236 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4240 dnl ===========================================================
4241 dnl Check for the corresponding mspdb*.dll
4242 dnl ===========================================================
4244 # MSVC 15.0 has libraries from 14.0?
4247 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4248 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4251 # The compiles has to find its shared libraries
4253 TEMP_PATH=`cygpath -d "$2"`
4254 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4256 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4257 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4262 AC_MSG_RESULT([$CL_EXE_PATH])
4268 if test "$_os" = "WINNT"; then
4269 AC_MSG_CHECKING([Visual C++])
4270 find_msvc "$with_visual_studio"
4271 if test -z "$vctest"; then
4272 if test -n "$with_visual_studio"; then
4273 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4275 AC_MSG_ERROR([no Visual Studio installation found])
4280 VC_PRODUCT_DIR="$vctest/VC"
4281 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4283 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4284 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4285 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4286 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4287 if test $? -ne 0; then
4293 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4294 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4295 test_cl_exe "build" "$MSVC_BUILD_PATH"
4298 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4299 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4300 test_cl_exe "host" "$MSVC_HOST_PATH"
4302 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4305 AC_MSG_CHECKING([for short pathname of VC product directory])
4306 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4307 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4312 AC_MSG_CHECKING([for UCRT location])
4314 # find_ucrt errors out if it doesn't find it
4315 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4316 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4317 ucrtincpath_formatted=$formatted_path
4318 # SOLARINC is used for external modules and must be set too.
4319 # And no, it's not sufficient to set SOLARINC only, as configure
4320 # itself doesn't honour it.
4321 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4322 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4323 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4324 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4326 AC_SUBST(UCRTSDKDIR)
4327 AC_SUBST(UCRTVERSION)
4329 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4330 # Find the proper version of MSBuild.exe to use based on the VS version
4331 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4332 if test -z "$regvalue" ; then
4333 if test "$WIN_BUILD_ARCH" != "x64"; then
4334 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4336 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4339 if test -d "$regvalue" ; then
4340 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4341 AC_MSG_RESULT([$regvalue])
4343 AC_MSG_ERROR([MSBuild.exe location not found])
4346 # Find the version of devenv.exe
4347 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4348 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4349 DEVENV_unix=$(cygpath -u "$DEVENV")
4350 if test ! -e "$DEVENV_unix"; then
4351 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4354 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4355 dnl needed when building CLR code:
4356 if test -z "$MSVC_CXX"; then
4357 # This gives us a posix path with 8.3 filename restrictions
4358 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4361 if test -z "$CC"; then
4363 CC_BASE=`first_arg_basename "$CC"`
4365 if test -z "$CXX"; then
4367 CXX_BASE=`first_arg_basename "$CXX"`
4370 if test -n "$CC"; then
4371 # Remove /cl.exe from CC case insensitive
4372 AC_MSG_NOTICE([found Visual C++ $vcyear])
4374 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4375 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4377 PathFormat "$COMPATH"
4378 COMPATH=`win_short_path_for_make "$formatted_path"`
4381 VCTOOLSET=$vctoolset
4383 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4384 # are always "better", we list them in reverse chronological order.
4386 case "$vcnumwithdot" in
4388 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4392 # The expectation is that --with-windows-sdk should not need to be used
4393 if test -n "$with_windows_sdk"; then
4394 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4395 *" "$with_windows_sdk" "*)
4396 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4399 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4404 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4409 AC_MSG_ERROR([Visual C++ not found after all, huh])
4412 # ERROR if VS version < 16.5
4413 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4414 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4415 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4416 // between Visual Studio versions and _MSC_VER:
4420 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4422 # WARN if VS version < 16.10
4423 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4428 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4430 if test $vs2019_recommended_version = yes; then
4431 AC_MSG_RESULT([yes])
4434 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."
4437 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4438 # version of the Explorer extension (and maybe other small
4439 # bits, too) needed when installing a 32-bit LibreOffice on a
4440 # 64-bit OS. The 64-bit Explorer extension is a feature that
4441 # has been present since long in OOo. Don't confuse it with
4442 # building LibreOffice itself as 64-bit code.
4447 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4448 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4449 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4450 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4453 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4454 AC_MSG_RESULT([found])
4456 AC_MSG_RESULT([not found])
4457 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4459 elif test "$WIN_HOST_ARCH" = "x64"; then
4464 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4465 AC_SUBST(CXX_X64_BINARY)
4467 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4468 # needed to support TWAIN scan on both 32- and 64-bit systems
4470 case "$WIN_HOST_ARCH" in
4472 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4473 if test -n "$CXX_X86_BINARY"; then
4475 AC_MSG_RESULT([preset])
4476 elif test -n "$WIN_MULTI_ARCH"; then
4478 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4479 AC_MSG_RESULT([found])
4481 AC_MSG_RESULT([not found])
4482 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4487 CXX_X86_BINARY=$MSVC_CXX
4491 AC_SUBST(CXX_X86_BINARY)
4499 AC_MSG_CHECKING([whether the compiler is actually Clang])
4500 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4506 [AC_MSG_RESULT([yes])
4508 [AC_MSG_RESULT([no])])
4509 AC_SUBST(COM_IS_CLANG)
4512 if test "$COM_IS_CLANG" = TRUE; then
4513 AC_MSG_CHECKING([whether Clang is new enough])
4514 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4515 #if !defined __apple_build_version__
4519 [my_apple_clang=yes],[my_apple_clang=])
4520 if test "$my_apple_clang" = yes; then
4521 AC_MSG_RESULT([assumed yes (Apple Clang)])
4522 elif test "$_os" = Emscripten; then
4523 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4525 if test "$_os" = WINNT; then
4526 dnl In which case, assume clang-cl:
4531 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4532 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4533 CLANGVER=`echo $clang_version \
4534 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4535 if test "$CLANGVER" -ge 120000; then
4536 AC_MSG_RESULT([yes ($clang_version)])
4538 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4540 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4541 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4545 SHOWINCLUDES_PREFIX=
4546 if test "$_os" = WINNT; then
4547 dnl We need to guess the prefix of the -showIncludes output, it can be
4549 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4550 echo "#include <stdlib.h>" > conftest.c
4551 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4552 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4553 rm -f conftest.c conftest.obj
4554 if test -z "$SHOWINCLUDES_PREFIX"; then
4555 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4557 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4560 AC_SUBST(SHOWINCLUDES_PREFIX)
4563 # prefix C with ccache if needed
4565 if test "$CCACHE" != ""; then
4566 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4570 CFLAGS="$CFLAGS --ccache-skip -O2"
4571 # msvc does not fail on unknown options, check stdout
4572 if test "$COM" = MSC; then
4573 CFLAGS="$CFLAGS -nologo"
4575 save_ac_c_werror_flag=$ac_c_werror_flag
4576 ac_c_werror_flag=yes
4577 dnl an empty program will do, we're checking the compiler flags
4578 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4579 [use_ccache=yes], [use_ccache=no])
4581 ac_c_werror_flag=$save_ac_c_werror_flag
4582 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4583 AC_MSG_RESULT([yes])
4586 CC_BASE="ccache $CC_BASE"
4592 # ===================================================================
4593 # check various GCC options that Clang does not support now but maybe
4594 # will somewhen in the future, check them even for GCC, so that the
4596 # ===================================================================
4599 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4600 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4602 CFLAGS="$CFLAGS -Werror -ggdb2"
4603 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4605 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4606 AC_MSG_RESULT([yes])
4611 if test "$host_cpu" = "m68k"; then
4612 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4614 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4615 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4617 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4618 AC_MSG_RESULT([yes])
4624 AC_SUBST(HAVE_GCC_GGDB2)
4626 dnl ===================================================================
4627 dnl Test the gcc version
4628 dnl ===================================================================
4629 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4630 AC_MSG_CHECKING([the GCC version])
4631 _gcc_version=`$CC -dumpfullversion`
4632 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4633 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4634 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4636 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4638 if test "$gcc_full_version" -lt 120000; then
4639 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4642 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4643 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4644 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4645 # (which reports itself as GCC 4.2.1).
4648 AC_SUBST(GCC_VERSION)
4650 dnl Set the ENABLE_DBGUTIL variable
4651 dnl ===================================================================
4652 AC_MSG_CHECKING([whether to build with additional debug utilities])
4653 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4654 ENABLE_DBGUTIL="TRUE"
4655 # this is an extra var so it can have different default on different MSVC
4656 # versions (in case there are version specific problems with it)
4657 MSVC_USE_DEBUG_RUNTIME="TRUE"
4659 AC_MSG_RESULT([yes])
4660 # cppunit and graphite expose STL in public headers
4661 if test "$with_system_cppunit" = "yes"; then
4662 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4664 with_system_cppunit=no
4666 if test "$with_system_graphite" = "yes"; then
4667 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4669 with_system_graphite=no
4671 if test "$with_system_orcus" = "yes"; then
4672 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4674 with_system_orcus=no
4676 if test "$with_system_libcmis" = "yes"; then
4677 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4679 with_system_libcmis=no
4681 if test "$with_system_hunspell" = "yes"; then
4682 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4684 with_system_hunspell=no
4686 if test "$with_system_gpgmepp" = "yes"; then
4687 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4689 with_system_gpgmepp=no
4691 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4692 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4693 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4694 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4695 # of those two is using the system variant:
4696 if test "$with_system_libnumbertext" = "yes"; then
4697 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4699 with_system_libnumbertext=no
4701 if test "$with_system_libwps" = "yes"; then
4702 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4704 with_system_libwps=no
4708 MSVC_USE_DEBUG_RUNTIME=""
4711 AC_SUBST(ENABLE_DBGUTIL)
4712 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4714 dnl Set the ENABLE_DEBUG variable.
4715 dnl ===================================================================
4716 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4717 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4719 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4720 if test -z "$libo_fuzzed_enable_debug"; then
4721 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4723 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4728 AC_MSG_CHECKING([whether to do a debug build])
4729 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4731 if test -n "$ENABLE_DBGUTIL" ; then
4732 AC_MSG_RESULT([yes (dbgutil)])
4734 AC_MSG_RESULT([yes])
4740 AC_SUBST(ENABLE_DEBUG)
4742 dnl ===================================================================
4743 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4744 dnl This is done only after compiler checks (need to know if Clang is
4745 dnl used, for different defaults) and after checking if a debug build
4746 dnl is wanted (non-debug builds get the default linker if not explicitly
4747 dnl specified otherwise).
4748 dnl All checks for linker features/options should come after this.
4749 dnl ===================================================================
4752 use_ld=-fuse-ld=${1%%:*}
4754 if test "$use_ld_path" != "$1"; then
4755 if test "$COM_IS_CLANG" = TRUE; then
4756 if test "$CLANGVER" -ge 120000; then
4757 use_ld="${use_ld} --ld-path=${use_ld_path}"
4759 use_ld="-fuse-ld=${use_ld_path}"
4762 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4763 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4764 # pickup the alternative linker, when called by libtool for linking.
4765 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4766 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4769 use_ld_fail_if_error=$2
4771 AC_MSG_CHECKING([for $use_ld linker support])
4772 use_ld_ldflags_save="$LDFLAGS"
4773 LDFLAGS="$LDFLAGS $use_ld"
4774 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4777 printf ("hello world\n");
4778 ])], USE_LD=$use_ld, [])
4779 if test -n "$USE_LD"; then
4780 AC_MSG_RESULT( yes )
4783 if test -n "$use_ld_fail_if_error"; then
4789 if test -n "$use_ld_ok"; then
4790 dnl keep the value of LDFLAGS
4793 LDFLAGS="$use_ld_ldflags_save"
4797 if test "$enable_ld" != "no"; then
4798 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4799 if test -n "$enable_ld"; then
4800 check_use_ld "$enable_ld" fail_if_error
4801 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4802 dnl non-debug builds default to the default linker
4804 elif test -n "$COM_IS_CLANG"; then
4806 if test $? -ne 0; then
4808 if test $? -ne 0; then
4813 # For gcc first try gold, new versions also support lld/mold.
4815 if test $? -ne 0; then
4817 if test $? -ne 0; then
4822 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4824 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4825 if test -z "$ld_used"; then
4828 AC_MSG_CHECKING([for linker that is used])
4829 AC_MSG_RESULT([$ld_used])
4830 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4831 if echo "$ld_used" | grep -q "^GNU ld"; then
4832 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4833 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4837 if test "$enable_ld" = "yes"; then
4838 AC_MSG_ERROR([--enable-ld not supported])
4845 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4846 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4847 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4848 bsymbolic_functions_ldflags_save=$LDFLAGS
4849 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4850 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4853 printf ("hello world\n");
4854 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4855 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4856 AC_MSG_RESULT( found )
4858 AC_MSG_RESULT( not found )
4860 LDFLAGS=$bsymbolic_functions_ldflags_save
4862 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4865 if test "$GCC" = "yes"; then
4866 for flag in "--gc-sections" "-dead_strip"; do
4867 AC_MSG_CHECKING([for $flag linker support])
4868 ldflags_save=$LDFLAGS
4869 LDFLAGS="$LDFLAGS -Wl,$flag"
4870 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4873 printf ("hello world\n");
4875 LD_GC_SECTIONS="-Wl,$flag"
4876 AC_MSG_RESULT( found )
4878 AC_MSG_RESULT( not found )
4880 LDFLAGS=$ldflags_save
4881 if test -n "$LD_GC_SECTIONS"; then
4886 AC_SUBST(LD_GC_SECTIONS)
4888 HAVE_EXTERNAL_DWARF=
4889 if test "$enable_split_debug" != no; then
4891 if test -n "$ENABLE_LTO"; then
4892 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4893 elif test "$enable_split_debug" = yes; then
4895 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4896 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4899 if test -n "$use_split_debug"; then
4900 if test "$_os" = "Emscripten"; then
4901 TEST_CC_FLAG=-gseparate-dwarf
4903 TEST_CC_FLAG=-gsplit-dwarf
4905 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4907 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4908 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4910 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4911 AC_MSG_RESULT([yes])
4913 if test "$enable_split_debug" = yes; then
4920 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4921 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4922 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4925 AC_SUBST(HAVE_EXTERNAL_DWARF)
4927 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4928 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4930 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4931 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4933 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4934 AC_MSG_RESULT([yes])
4938 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4941 if test "$enable_gdb_index" != "no"; then
4942 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4943 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4944 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4946 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4948 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4949 if test "$have_ggnu_pubnames" != "TRUE"; then
4950 if test "$enable_gdb_index" = "yes"; then
4951 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4956 AC_MSG_RESULT( yes )
4957 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4958 ldflags_save=$LDFLAGS
4959 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4960 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4963 printf ("hello world\n");
4964 ])], ENABLE_GDB_INDEX=TRUE, [])
4965 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4966 AC_MSG_RESULT( yes )
4968 if test "$enable_gdb_index" = "yes"; then
4974 LDFLAGS=$ldflags_save
4978 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4979 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4980 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4983 AC_SUBST(ENABLE_GDB_INDEX)
4985 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4988 if test "$enable_sal_log" = yes; then
4991 AC_SUBST(ENABLE_SAL_LOG)
4993 dnl Check for enable symbols option
4994 dnl ===================================================================
4995 AC_MSG_CHECKING([whether to generate debug information])
4996 if test -z "$enable_symbols"; then
4997 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5003 if test "$enable_symbols" = yes; then
5004 ENABLE_SYMBOLS_FOR=all
5005 AC_MSG_RESULT([yes])
5006 elif test "$enable_symbols" = no; then
5010 # Selective debuginfo.
5011 ENABLE_SYMBOLS_FOR="$enable_symbols"
5012 AC_MSG_RESULT([for "$enable_symbols"])
5014 AC_SUBST(ENABLE_SYMBOLS_FOR)
5016 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5017 # Building on Android with full symbols: without enough memory the linker never finishes currently.
5018 AC_MSG_CHECKING([whether enough memory is available for linking])
5019 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5020 # Check for 15GB, as Linux reports a bit less than the physical memory size.
5021 if test -n "$mem_size" -a $mem_size -lt 15728640; then
5022 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5024 AC_MSG_RESULT([yes])
5029 ENABLE_OPTIMIZED_DEBUG=
5030 AC_MSG_CHECKING([whether to compile with optimization flags])
5031 if test -z "$enable_optimized"; then
5032 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5035 enable_optimized=yes
5038 if test "$enable_optimized" = yes; then
5039 ENABLE_OPTIMIZED=TRUE
5040 AC_MSG_RESULT([yes])
5041 elif test "$enable_optimized" = debug; then
5042 ENABLE_OPTIMIZED_DEBUG=TRUE
5043 AC_MSG_RESULT([yes (debug)])
5045 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5046 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5048 CFLAGS="$CFLAGS -Werror -Og"
5049 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5051 if test "$HAVE_GCC_OG" = "TRUE"; then
5052 AC_MSG_RESULT([yes])
5057 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5058 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5063 AC_SUBST(ENABLE_OPTIMIZED)
5064 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5067 # determine CPUNAME, OS, ...
5083 if test "$enable_ios_simulator" = "yes"; then
5088 PLATFORMID=macosx_aarch64
5092 if test "$enable_ios_simulator" = "yes"; then
5097 PLATFORMID=macosx_x86_64
5100 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5113 if test "$enable_ios_simulator" = "yes"; then
5114 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5118 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5123 PLATFORMID=ios_arm64
5136 PLATFORMID=dragonfly_x86
5141 PLATFORMID=dragonfly_x86_64
5144 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5158 PLATFORMID=freebsd_aarch64
5164 PLATFORMID=freebsd_x86
5169 PLATFORMID=freebsd_x86_64
5174 PLATFORMID=freebsd_powerpc64
5179 PLATFORMID=freebsd_powerpc
5182 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5198 PLATFORMID=haiku_x86
5203 PLATFORMID=haiku_x86_64
5206 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5222 PLATFORMID=kfreebsd_x86
5227 PLATFORMID=kfreebsd_x86_64
5230 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5235 linux-gnu*|linux-musl*)
5245 PLATFORMID=linux_aarch64
5247 EPM_FLAGS="-a arm64"
5252 PLATFORMID=linux_alpha
5258 PLATFORMID=linux_arm_eabi
5262 PLATFORMID=linux_arm_oabi
5270 PLATFORMID=linux_hppa
5275 PLATFORMID=linux_x86
5280 PLATFORMID=linux_ia64
5286 PLATFORMID=linux_mips_eb
5291 EPM_FLAGS="-a mips64"
5292 PLATFORMID=linux_mips64_eb
5297 EPM_FLAGS="-a mips64el"
5298 PLATFORMID=linux_mips64_el
5303 EPM_FLAGS="-a mipsel"
5304 PLATFORMID=linux_mips_el
5309 EPM_FLAGS="-a riscv64"
5310 PLATFORMID=linux_riscv64
5315 PLATFORMID=linux_m68k
5320 PLATFORMID=linux_powerpc
5325 PLATFORMID=linux_powerpc64
5329 RTL_ARCH=PowerPC_64_LE
5330 PLATFORMID=linux_powerpc64_le
5335 PLATFORMID=linux_sparc
5340 PLATFORMID=linux_sparc64
5345 PLATFORMID=linux_s390x
5350 PLATFORMID=linux_x86_64
5354 RTL_ARCH=LOONGARCH64
5355 PLATFORMID=linux_loongarch64
5358 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5374 PLATFORMID=android_arm_eabi
5379 PLATFORMID=android_aarch64
5384 PLATFORMID=android_x86
5389 PLATFORMID=android_x86_64
5392 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5407 PLATFORMID=netbsd_x86
5412 PLATFORMID=netbsd_powerpc
5417 PLATFORMID=netbsd_sparc
5422 PLATFORMID=netbsd_x86_64
5425 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5440 PLATFORMID=openbsd_x86
5445 PLATFORMID=openbsd_x86_64
5448 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5451 SOLARINC="$SOLARINC -I/usr/local/include"
5464 PLATFORMID=solaris_x86
5469 PLATFORMID=solaris_sparc
5474 PLATFORMID=solaris_sparc64
5477 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5480 SOLARINC="$SOLARINC -I/usr/local/include"
5493 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5498 PLATFORMID=linux_x86
5502 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5507 if test "$enable_gui" = "no"; then
5508 if test "$using_x11" != yes; then
5509 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5515 AC_DEFINE(HAVE_FEATURE_UI)
5517 AC_SUBST(DISABLE_GUI)
5519 if test "$with_x" = "no"; then
5523 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5524 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5527 if test "$using_x11" = yes; then
5528 if test "$USING_X11" = TRUE; then
5529 AC_DEFINE(USING_X11)
5532 if test "$DISABLE_DYNLOADING" = TRUE; then
5537 if test "$USING_X11" = TRUE; then
5538 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5542 WORKDIR="${BUILDDIR}/workdir"
5543 INSTDIR="${BUILDDIR}/instdir"
5544 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5545 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5553 AC_SUBST([INSTROOT])
5554 AC_SUBST([INSTROOTBASE])
5558 AC_SUBST(PLATFORMID)
5559 AC_SUBST(WINDOWS_X64)
5560 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5561 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5563 if test "$OS" = WNT -a "$COM" = MSC; then
5565 INTEL) CPPU_ENV=msci ;;
5566 X86_64) CPPU_ENV=mscx ;;
5567 AARCH64) CPPU_ENV=msca ;;
5569 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5577 dnl ===================================================================
5578 dnl Test which package format to use
5579 dnl ===================================================================
5580 AC_MSG_CHECKING([which package format to use])
5581 if test -n "$with_package_format" -a "$with_package_format" != no; then
5582 for i in $with_package_format; do
5584 bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5587 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5588 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5589 deb - Debian software distribution
5590 pkg - Solaris software distribution
5591 rpm - RedHat software distribution
5593 LibreOffice additionally supports:
5594 archive - .tar.gz or .zip
5596 installed - installation tree
5602 # fakeroot is needed to ensure correct file ownerships/permissions
5603 # inside deb packages and tar archives created on Linux and Solaris.
5604 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5605 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5606 if test "$FAKEROOT" = "no"; then
5608 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5611 PKGFORMAT="$with_package_format"
5612 AC_MSG_RESULT([$PKGFORMAT])
5615 AC_MSG_RESULT([none])
5619 dnl ===================================================================
5620 dnl handle help related options
5622 dnl If you change help related options, please update README.help
5623 dnl ===================================================================
5630 AC_MSG_CHECKING([which help to build])
5631 if test -n "$with_help" -a "$with_help" != "no"; then
5632 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5633 BUILD_TYPE="$BUILD_TYPE HELP"
5634 case "$with_help" in
5636 ENABLE_HTMLHELP=TRUE
5638 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5639 AC_MSG_RESULT([HTML (local)])
5642 ENABLE_HTMLHELP=TRUE
5644 AC_MSG_RESULT([HTML (online)])
5648 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5649 AC_MSG_RESULT([XML (local)])
5652 AC_MSG_ERROR([Unknown --with-help=$with_help])
5659 AC_MSG_CHECKING([if we need to build the help index tooling])
5660 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5661 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5663 AC_MSG_RESULT([yes])
5668 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5669 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5670 if test "$HELP_ONLINE" != TRUE; then
5671 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5673 case "$with_omindex" in
5675 HELP_OMINDEX_PAGE=TRUE
5676 AC_MSG_RESULT([SERVER])
5679 AC_MSG_RESULT([NOXAP])
5682 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5689 AC_MSG_CHECKING([whether to include the XML-help support])
5690 if test "$enable_xmlhelp" = yes; then
5691 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5693 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5694 AC_MSG_RESULT([yes])
5696 if test "$with_help" = yes; then
5697 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5702 dnl Test whether to integrate helppacks into the product's installer
5703 AC_MSG_CHECKING([for helppack integration])
5704 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5705 AC_MSG_RESULT([no integration])
5707 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5708 AC_MSG_RESULT([integration])
5711 AC_SUBST([ENABLE_HTMLHELP])
5712 AC_SUBST([HELP_OMINDEX_PAGE])
5713 AC_SUBST([HELP_ONLINE])
5714 # WITH_HELPPACKS is used only in configure
5716 dnl ===================================================================
5717 dnl Set up a different compiler to produce tools to run on the build
5718 dnl machine when doing cross-compilation
5719 dnl ===================================================================
5721 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5722 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5723 if test "$cross_compiling" = "yes"; then
5724 AC_MSG_CHECKING([for BUILD platform configuration])
5726 rm -rf CONF-FOR-BUILD config_build.mk
5727 mkdir CONF-FOR-BUILD
5728 # Here must be listed all files needed when running the configure script. In particular, also
5729 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5730 # keep them in the same order as there.
5731 (cd $SRC_ROOT && tar cf - \
5733 bin/get_config_variables \
5734 solenv/bin/getcompver.awk \
5735 solenv/inc/langlist.mk \
5738 config_host_lang.mk.in \
5740 bin/bffvalidator.sh.in \
5741 bin/odfvalidator.sh.in \
5742 bin/officeotron.sh.in \
5743 instsetoo_native/util/openoffice.lst.in \
5745 sysui/desktop/macosx/Info.plist.in \
5746 sysui/desktop/macosx/hardened_runtime.xcent.in \
5747 sysui/desktop/macosx/lo.xcent.in \
5748 .vscode/vs-code-template.code-workspace.in \
5749 solenv/lockfile/autoconf.h.in \
5751 | (cd CONF-FOR-BUILD && tar xf -)
5752 cp configure CONF-FOR-BUILD
5753 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5755 unset COM USING_X11 OS CPUNAME
5756 unset CC CXX SYSBASE CFLAGS
5757 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5758 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5759 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5760 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5761 if test -n "$CC_FOR_BUILD"; then
5762 export CC="$CC_FOR_BUILD"
5763 CC_BASE=`first_arg_basename "$CC"`
5765 if test -n "$CXX_FOR_BUILD"; then
5766 export CXX="$CXX_FOR_BUILD"
5767 CXX_BASE=`first_arg_basename "$CXX"`
5769 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5772 # Handle host configuration, which affects the cross-toolset too
5774 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5775 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5776 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5777 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5778 if test -n "$ENABLE_JAVA"; then
5781 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5782 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5785 if test -z "$with_jdk_home"; then
5786 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.])
5791 sub_conf_opts="$sub_conf_opts --without-java"
5793 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5794 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5795 test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5796 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5797 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5798 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5799 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5800 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5801 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5802 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5803 if test "$_os" = "Emscripten"; then
5804 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5805 if test "${with_main_module+set}" = set; then
5806 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5808 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5811 # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5812 # when cross-compiling for aarch64, overriding the defaults below
5813 test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5815 # Don't bother having configure look for stuff not needed for the build platform anyway
5816 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5817 sub_conf_defaults=" \
5818 --build="$build_alias" \
5819 --disable-cairo-canvas \
5821 --disable-customtarget-components \
5822 --disable-firebird-sdbc \
5824 --disable-gstreamer-1-0 \
5828 --disable-mariadb-sdbc \
5830 --disable-online-update \
5833 --disable-pdfimport \
5834 --disable-postgresql-sdbc \
5837 --enable-dynamic-loading \
5838 --enable-icecream="$enable_icecream" \
5844 # single quotes added for better readability in case of spaces
5845 echo " Running CONF-FOR-BUILD/configure" \
5846 $sub_conf_defaults \
5847 --with-parallelism="'$with_parallelism'" \
5848 --with-theme="'$with_theme'" \
5849 --with-vendor="'$with_vendor'" \
5851 $with_build_platform_configure_options \
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 \
5862 2>&1 | sed -e 's/^/ /'
5863 if test [${PIPESTATUS[0]}] -ne 0; then
5864 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5867 # filter permitted build targets
5868 PERMITTED_BUILD_TARGETS="
5907 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5908 # newlined lists, to use grep as a filter
5909 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5910 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5911 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5912 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5914 cp config_host.mk ../config_build.mk
5915 cp config_host_lang.mk ../config_build_lang.mk
5916 mv config.log ../config.Build.log
5917 mkdir -p ../config_build
5918 mv config_host/*.h ../config_build
5919 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5921 # all these will get a _FOR_BUILD postfix
5922 DIRECT_FOR_BUILD_SETTINGS="
5930 JDK_SECURITYMANAGER_DISALLOWED
5934 LIBO_URE_MISC_FOLDER
5940 # these overwrite host config with build config
5941 OVERWRITING_SETTINGS="
5956 # these need some special handling
5957 EXTRA_HANDLED_SETTINGS="
5964 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5968 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5969 echo "$line" >>build-config
5971 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5973 VV=`eval "echo $VV"`
5974 if test -n "$VV"; then
5975 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5976 echo "$line" >>build-config
5980 for V in $OVERWRITING_SETTINGS; do
5982 VV=`eval "echo $VV"`
5983 if test -n "$VV"; then
5984 line=${V}='${'${V}:-$VV'}'
5985 echo "$line" >>build-config
5989 for V in INSTDIR INSTROOT WORKDIR; do
5991 VV=`eval "echo $VV"`
5992 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5993 if test -n "$VV"; then
5994 line="${V}_FOR_BUILD='$VV'"
5995 echo "$line" >>build-config
6000 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6001 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])
6002 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6003 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6005 eval `cat CONF-FOR-BUILD/build-config`
6007 AC_MSG_RESULT([checking for BUILD platform configuration... done])
6009 rm -rf CONF-FOR-BUILD
6013 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6014 CXX_FOR_BUILD="$CXX"
6015 INSTDIR_FOR_BUILD="$INSTDIR"
6016 INSTROOT_FOR_BUILD="$INSTROOT"
6017 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6018 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6019 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6020 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6021 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6022 WORKDIR_FOR_BUILD="$WORKDIR"
6024 AC_SUBST(OS_FOR_BUILD)
6025 AC_SUBST(INSTDIR_FOR_BUILD)
6026 AC_SUBST(INSTROOT_FOR_BUILD)
6027 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6028 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6029 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6030 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6031 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6032 AC_SUBST(WORKDIR_FOR_BUILD)
6033 AC_SUBST(CC_FOR_BUILD)
6034 AC_SUBST(CXX_FOR_BUILD)
6035 AC_SUBST(CPPU_ENV_FOR_BUILD)
6037 dnl ===================================================================
6038 dnl Check for lockfile deps
6039 dnl ===================================================================
6040 if test -z "$CROSS_COMPILING"; then
6041 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6042 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6043 AC_MSG_CHECKING([which lockfile binary to use])
6044 case "$with_system_lockfile" in
6046 AC_MSG_RESULT([external])
6047 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6050 AC_MSG_RESULT([internal])
6053 if test -x "$with_system_lockfile"; then
6054 LOCKFILE="$with_system_lockfile"
6056 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6058 AC_MSG_RESULT([$with_system_lockfile])
6063 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6064 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6067 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6068 AC_CHECK_FUNCS([utime utimes])
6071 dnl ===================================================================
6072 dnl Check for syslog header
6073 dnl ===================================================================
6074 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6076 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6077 dnl ===================================================================
6078 AC_MSG_CHECKING([whether to turn warnings to errors])
6079 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6080 ENABLE_WERROR="TRUE"
6081 PYTHONWARNINGS="error"
6082 AC_MSG_RESULT([yes])
6084 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6085 ENABLE_WERROR="TRUE"
6086 PYTHONWARNINGS="error"
6087 AC_MSG_RESULT([yes])
6092 AC_SUBST(ENABLE_WERROR)
6093 AC_SUBST(PYTHONWARNINGS)
6095 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6096 dnl ===================================================================
6097 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6098 if test -z "$enable_assert_always_abort"; then
6099 if test "$ENABLE_DEBUG" = TRUE; then
6100 enable_assert_always_abort=yes
6102 enable_assert_always_abort=no
6105 if test "$enable_assert_always_abort" = "yes"; then
6106 ASSERT_ALWAYS_ABORT="TRUE"
6107 AC_MSG_RESULT([yes])
6109 ASSERT_ALWAYS_ABORT="FALSE"
6112 AC_SUBST(ASSERT_ALWAYS_ABORT)
6114 # Determine whether to use ooenv for the instdir installation
6115 # ===================================================================
6116 if test $_os != "WINNT" -a $_os != "Darwin"; then
6117 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6118 if test -z "$enable_ooenv"; then
6119 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6125 if test "$enable_ooenv" = "no"; then
6129 AC_MSG_RESULT([yes])
6132 AC_SUBST(ENABLE_OOENV)
6134 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6135 if test "$enable_qt5" = "no"; then
6136 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6142 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6143 if test "$enable_qt6" = "no"; then
6144 AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6151 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6152 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6153 AC_MSG_RESULT([yes])
6155 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6159 AC_SUBST(ENABLE_PAGEIN)
6161 dnl ===================================================================
6162 dnl check for cups support
6163 dnl ===================================================================
6165 AC_MSG_CHECKING([whether to enable CUPS support])
6166 if test "$test_cups" = yes -a "$enable_cups" != no; then
6168 AC_MSG_RESULT([yes])
6170 AC_MSG_CHECKING([whether cups support is present])
6171 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6172 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6173 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6174 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6180 AC_SUBST(ENABLE_CUPS)
6182 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6184 dnl whether to find & fetch external tarballs?
6185 dnl ===================================================================
6186 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6187 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6188 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6190 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6193 if test -z "$TARFILE_LOCATION"; then
6194 if test -d "$SRC_ROOT/src" ; then
6195 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6196 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6198 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6200 AbsolutePath "$TARFILE_LOCATION"
6201 PathFormat "${absolute_path}"
6202 TARFILE_LOCATION="${formatted_path_unix}"
6204 AC_SUBST(TARFILE_LOCATION)
6206 AC_MSG_CHECKING([whether we want to fetch tarballs])
6207 if test "$enable_fetch_external" != "no"; then
6208 if test "$with_all_tarballs" = "yes"; then
6209 AC_MSG_RESULT([yes, all of them])
6210 DO_FETCH_TARBALLS="ALL"
6212 AC_MSG_RESULT([yes, if we use them])
6213 DO_FETCH_TARBALLS="TRUE"
6219 AC_SUBST(DO_FETCH_TARBALLS)
6221 dnl Test whether to include MySpell dictionaries
6222 dnl ===================================================================
6223 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6224 if test "$with_myspell_dicts" = "yes"; then
6225 AC_MSG_RESULT([yes])
6226 WITH_MYSPELL_DICTS=TRUE
6227 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6228 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6233 AC_SUBST(WITH_MYSPELL_DICTS)
6235 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6236 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6237 if test "$with_system_dicts" = yes; then
6238 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6240 with_system_dicts=no
6243 AC_MSG_CHECKING([whether to use dicts from external paths])
6244 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6245 AC_MSG_RESULT([yes])
6247 AC_MSG_CHECKING([for spelling dictionary directory])
6248 if test -n "$with_external_dict_dir"; then
6249 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6251 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6252 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6253 DICT_SYSTEM_DIR=file:///usr/share/myspell
6256 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6257 AC_MSG_CHECKING([for hyphenation patterns directory])
6258 if test -n "$with_external_hyph_dir"; then
6259 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6261 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6263 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6264 AC_MSG_CHECKING([for thesaurus directory])
6265 if test -n "$with_external_thes_dir"; then
6266 THES_SYSTEM_DIR=file://$with_external_thes_dir
6268 THES_SYSTEM_DIR=file:///usr/share/mythes
6270 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6275 AC_SUBST(SYSTEM_DICTS)
6276 AC_SUBST(DICT_SYSTEM_DIR)
6277 AC_SUBST(HYPH_SYSTEM_DIR)
6278 AC_SUBST(THES_SYSTEM_DIR)
6280 dnl ===================================================================
6281 dnl Precompiled headers.
6283 AC_MSG_CHECKING([whether to enable pch feature])
6284 if test -z "$enable_pch"; then
6285 if test "$_os" = "WINNT"; then
6286 # Enabled by default on Windows.
6288 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6289 if test -z "$enable_ccache" -a "$SCCACHE"; then
6296 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6297 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6299 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6300 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6302 if test "$enable_pch" = "system"; then
6304 AC_MSG_RESULT([yes (system headers)])
6305 elif test "$enable_pch" = "base"; then
6307 AC_MSG_RESULT([yes (system and base headers)])
6308 elif test "$enable_pch" = "normal"; then
6310 AC_MSG_RESULT([yes (normal)])
6311 elif test "$enable_pch" = "full"; then
6313 AC_MSG_RESULT([yes (full)])
6314 elif test "$enable_pch" = "yes"; then
6315 # Pick a suitable default.
6316 if test "$GCC" = "yes"; then
6317 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6318 # while making the PCHs larger and rebuilds more likely.
6320 AC_MSG_RESULT([yes (system and base headers)])
6322 # With MSVC the highest level makes a significant difference,
6323 # and it was the default when there used to be no PCH levels.
6325 AC_MSG_RESULT([yes (full)])
6327 elif test "$enable_pch" = "no"; then
6330 AC_MSG_ERROR([Unknown value for --enable-pch])
6332 AC_SUBST(ENABLE_PCH)
6333 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6334 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6335 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6336 if test "$CCACHE_BIN" != "not found"; then
6337 AC_MSG_CHECKING([ccache version])
6338 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6339 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6340 AC_MSG_RESULT([$CCACHE_VERSION])
6341 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6342 if test "$CCACHE_NUMVER" -gt "030701"; then
6343 AC_MSG_RESULT([yes])
6345 AC_MSG_RESULT([no (not newer than 3.7.1)])
6351 PCH_INSTANTIATE_TEMPLATES=
6352 if test -n "$ENABLE_PCH"; then
6353 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6355 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6356 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6358 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6364 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6366 BUILDING_PCH_WITH_OBJ=
6367 if test -n "$ENABLE_PCH"; then
6368 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6370 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6371 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6373 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6379 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6384 if test "$COM" = MSC; then
6385 fpch_prefix="-Xclang "
6387 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6388 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6390 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6391 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6392 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6394 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6395 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6396 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6398 if test -n "$PCH_CODEGEN"; then
6404 AC_SUBST(PCH_CODEGEN)
6405 AC_SUBST(PCH_NO_CODEGEN)
6407 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6408 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6410 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6411 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6413 if test -n "$PCH_DEBUGINFO"; then
6419 AC_SUBST(PCH_DEBUGINFO)
6423 AC_MSG_CHECKING([the GNU Make version])
6424 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6425 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6426 if test "$_make_longver" -ge "040000"; then
6427 AC_MSG_RESULT([$GNUMAKE $_make_version])
6429 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6432 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6434 if test "$_make_ver_check" = ""; then
6438 HAVE_LD_HASH_STYLE=FALSE
6439 WITH_LINKER_HASH_STYLE=
6440 AC_MSG_CHECKING([for --hash-style gcc linker support])
6441 if test "$GCC" = "yes"; then
6442 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6443 hash_styles="gnu sysv"
6444 elif test "$with_linker_hash_style" = "no"; then
6447 hash_styles="$with_linker_hash_style"
6450 for hash_style in $hash_styles; do
6451 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6452 hash_style_ldflags_save=$LDFLAGS
6453 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6455 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6462 HAVE_LD_HASH_STYLE=TRUE
6463 WITH_LINKER_HASH_STYLE=$hash_style
6465 [HAVE_LD_HASH_STYLE=FALSE],
6466 [HAVE_LD_HASH_STYLE=FALSE])
6467 LDFLAGS=$hash_style_ldflags_save
6470 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6471 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6475 LDFLAGS=$hash_style_ldflags_save
6479 AC_SUBST(HAVE_LD_HASH_STYLE)
6480 AC_SUBST(WITH_LINKER_HASH_STYLE)
6482 dnl ===================================================================
6483 dnl Check whether there's a Perl version available.
6484 dnl ===================================================================
6485 if test -z "$with_perl_home"; then
6486 AC_PATH_PROG(PERL, perl)
6488 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6489 _perl_path="$with_perl_home/bin/perl"
6490 if test -x "$_perl_path"; then
6493 AC_MSG_ERROR([$_perl_path not found])
6497 dnl ===================================================================
6498 dnl Testing for Perl version 5 or greater.
6499 dnl $] is the Perl version variable, it is returned as an integer
6500 dnl ===================================================================
6501 if test "$PERL"; then
6502 AC_MSG_CHECKING([the Perl version])
6503 ${PERL} -e "exit($]);"
6505 if test "$_perl_version" -lt 5; then
6506 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6508 AC_MSG_RESULT([Perl $_perl_version])
6510 AC_MSG_ERROR([Perl not found, install Perl 5])
6513 dnl ===================================================================
6514 dnl Testing for required Perl modules
6515 dnl ===================================================================
6517 AC_MSG_CHECKING([for required Perl modules])
6518 perl_use_string="use Cwd ; use Digest::MD5"
6519 if test "$_os" = "WINNT"; then
6520 if test -n "$PKGFORMAT"; then
6521 for i in $PKGFORMAT; do
6524 # for getting fonts versions to use in MSI
6525 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6531 if test "$with_system_hsqldb" = "yes"; then
6532 perl_use_string="$perl_use_string ; use Archive::Zip"
6534 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6535 # OpenSSL needs that to build
6536 perl_use_string="$perl_use_string ; use FindBin"
6538 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6539 AC_MSG_RESULT([all modules found])
6541 AC_MSG_RESULT([failed to find some modules])
6542 # Find out which modules are missing.
6543 for i in $perl_use_string; do
6544 if test "$i" != "use" -a "$i" != ";"; then
6545 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6546 missing_perl_modules="$missing_perl_modules $i"
6551 The missing Perl modules are: $missing_perl_modules
6552 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6555 dnl ===================================================================
6556 dnl Check for pkg-config
6557 dnl ===================================================================
6558 if test "$_os" != "WINNT"; then
6561 AC_SUBST(PKG_CONFIG)
6562 AC_SUBST(PKG_CONFIG_PATH)
6563 AC_SUBST(PKG_CONFIG_LIBDIR)
6565 if test "$_os" != "WINNT"; then
6567 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6568 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6569 # explicitly. Or put /path/to/compiler in PATH yourself.
6572 if test "$COM_IS_CLANG" = "TRUE"; then
6575 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6576 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6577 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6578 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6579 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6580 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6589 dnl ===================================================================
6590 dnl pkg-config checks on macOS
6591 dnl ===================================================================
6593 if test $_os = Darwin; then
6594 AC_MSG_CHECKING([for bogus pkg-config])
6595 if test -n "$PKG_CONFIG"; then
6596 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6597 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6599 if test "$enable_bogus_pkg_config" = "yes"; then
6600 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6602 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.])
6606 AC_MSG_RESULT([no, good])
6612 # Return value: $csctest
6616 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6617 if test -n "$regvalue"; then
6625 # Return value: $altest
6629 # We need this check to detect 4.6.1 or above.
6630 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6631 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6632 PathFormat "$regvalue"
6633 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6639 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6640 for x in $reglist; do
6641 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/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
6654 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
6655 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6656 if test -n "$regvalue"; then
6661 AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6664 find_winsdk_version()
6666 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6667 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6669 unset winsdktest winsdkbinsubdir winsdklibsubdir
6673 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6674 if test -n "$regvalue"; then
6675 winsdktest=$regvalue
6676 winsdklibsubdir=win8
6681 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6682 if test -n "$regvalue"; then
6683 winsdktest=$regvalue
6684 winsdklibsubdir=winv6.3
6689 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6690 if test -n "$regvalue"; then
6691 winsdktest=$regvalue
6692 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6693 if test -n "$regvalue"; then
6694 winsdkbinsubdir="$regvalue".0
6695 winsdklibsubdir=$winsdkbinsubdir
6696 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6697 local tmppath_unix=$(cygpath -u "$tmppath")
6698 # test exist the SDK path
6699 if test -d "$tmppath_unix"; then
6700 # when path is convertible to a short path then path is okay
6701 cygpath -d "$tmppath" >/dev/null 2>&1
6702 if test $? -ne 0; then
6703 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6706 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6717 # Return value: From find_winsdk_version
6721 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6722 find_winsdk_version $ver
6723 if test -n "$winsdktest"; then
6731 # Return value: $msmdir
6734 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6735 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6738 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6743 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6744 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6745 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6746 if test -e "$my_msm_dir${my_msm_file}"; then
6753 if test -n "$msmdir"; then
6754 msmdir=`cygpath -m "$msmdir"`
6755 AC_MSG_RESULT([$msmdir])
6757 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6758 AC_MSG_FAILURE([not found])
6760 AC_MSG_WARN([not found (check config.log)])
6761 add_warning "MSM ${my_msm_file} not found"
6766 find_msvc_x64_dlls()
6768 # Return value: $msvcdllpath, $msvcdlls
6770 AC_MSG_CHECKING([for MSVC x64 DLL path])
6772 dnl Order crtver in increasing order. Then check the directories returned by
6773 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6774 dnl the result will be the highest CRT version found in the highest directory.
6776 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6779 for crtver in 141 142 143; do
6780 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6781 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6782 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6783 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6789 AC_MSG_RESULT([$msvcdllpath])
6790 AC_MSG_CHECKING([for MSVC x64 DLLs])
6791 msvcdlls="msvcp140.dll vcruntime140.dll"
6792 for dll in $msvcdlls; do
6793 if ! test -f "$msvcdllpath/$dll"; then
6794 AC_MSG_FAILURE([missing $dll])
6797 AC_MSG_RESULT([found all ($msvcdlls)])
6800 dnl =========================================
6801 dnl Check for the Windows SDK.
6802 dnl =========================================
6803 if test "$_os" = "WINNT"; then
6804 AC_MSG_CHECKING([for Windows SDK])
6805 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6807 WINDOWS_SDK_HOME=$winsdktest
6809 # normalize if found
6810 if test -n "$WINDOWS_SDK_HOME"; then
6811 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6812 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6815 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6818 if test -n "$WINDOWS_SDK_HOME"; then
6819 # Remove a possible trailing backslash
6820 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6822 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6823 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6824 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6825 have_windows_sdk_headers=yes
6826 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6827 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6828 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6829 have_windows_sdk_headers=yes
6830 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6831 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6832 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6833 have_windows_sdk_headers=yes
6835 have_windows_sdk_headers=no
6838 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6839 have_windows_sdk_libs=yes
6840 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6841 have_windows_sdk_libs=yes
6843 have_windows_sdk_libs=no
6846 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6847 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6848 the Windows SDK are installed.])
6852 if test -z "$WINDOWS_SDK_HOME"; then
6853 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6854 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6855 WINDOWS_SDK_VERSION=80
6856 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6857 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6858 WINDOWS_SDK_VERSION=81
6859 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6860 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6861 WINDOWS_SDK_VERSION=10
6862 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6864 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6866 PathFormat "$WINDOWS_SDK_HOME"
6867 WINDOWS_SDK_HOME="$formatted_path"
6868 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6869 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6870 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6871 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6872 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6873 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6874 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6878 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6879 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6880 dnl but not in v8.0), so allow this to be overridden with a
6881 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6882 dnl and configuration error if no WiLangId.vbs is found would arguably be
6883 dnl better, but I do not know under which conditions exactly it is needed by
6885 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6886 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6887 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6888 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6889 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6890 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6892 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6893 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6894 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6896 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6897 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6898 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6901 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6902 if test -n "$with_package_format" -a "$with_package_format" != no; then
6903 for i in "$with_package_format"; do
6904 if test "$i" = "msi"; then
6905 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6906 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6913 AC_SUBST(WINDOWS_SDK_HOME)
6914 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6915 AC_SUBST(WINDOWS_SDK_VERSION)
6916 AC_SUBST(WINDOWS_SDK_WILANGID)
6918 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6919 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6920 dnl dir, it also determines that dir's path w/o an arch segment if any,
6921 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6922 AC_MSG_CHECKING([for midl.exe])
6925 PathFormat "$winsdktest"
6926 winsdktest_unix="$formatted_path_unix"
6928 if test -n "$winsdkbinsubdir" \
6929 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6931 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6932 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6933 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6934 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6935 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6936 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6937 MIDL_PATH=$winsdktest/Bin
6938 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6940 PathFormat "$MIDL_PATH"
6941 if test ! -f "$formatted_path_unix/midl.exe"; then
6942 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6944 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6947 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6948 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6950 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6951 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6952 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6953 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6954 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6955 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6956 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6957 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6958 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6959 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6960 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6961 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6963 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6967 AC_MSG_CHECKING([for csc.exe])
6969 PathFormat "$csctest"
6970 csctest_unix="$formatted_path_unix"
6971 if test -f "$csctest_unix/csc.exe"; then
6974 if test ! -f "$csctest_unix/csc.exe"; then
6975 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6977 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6980 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6983 AC_MSG_CHECKING([for al.exe])
6984 if test -n "$winsdkbinsubdir" \
6985 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6987 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6988 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6989 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6990 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6991 AL_PATH="$winsdktest/Bin"
6994 if test -z "$AL_PATH"; then
6996 PathFormat "$altest"
6997 altest_unix="$formatted_path_unix"
6998 if test -f "$altest_unix/bin/al.exe"; then
6999 AL_PATH="$altest/bin"
7000 elif test -f "$altest_unix/al.exe"; then
7004 PathFormat "$AL_PATH"
7005 if test ! -f "$formatted_path_unix/al.exe"; then
7006 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7008 AC_MSG_RESULT([$AL_PATH/al.exe])
7011 AL_PATH=`win_short_path_for_make "$AL_PATH"`
7013 dnl Check mscoree.lib / .NET Framework dir
7014 AC_MSG_CHECKING(.NET Framework)
7016 PathFormat "$frametest"
7017 frametest="$formatted_path_unix"
7018 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7019 DOTNET_FRAMEWORK_HOME="$frametest"
7021 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7022 DOTNET_FRAMEWORK_HOME="$winsdktest"
7025 PathFormat "$DOTNET_FRAMEWORK_HOME"
7026 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
7027 AC_MSG_ERROR([mscoree.lib not found])
7029 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7031 PathFormat "$MIDL_PATH"
7032 MIDL_PATH="$formatted_path"
7034 PathFormat "$AL_PATH"
7035 AL_PATH="$formatted_path"
7037 PathFormat "$DOTNET_FRAMEWORK_HOME"
7038 DOTNET_FRAMEWORK_HOME="$formatted_path"
7040 PathFormat "$CSC_PATH"
7041 CSC_PATH="$formatted_path"
7044 dnl ===================================================================
7045 dnl Testing for C++ compiler and version...
7046 dnl ===================================================================
7048 if test "$_os" != "WINNT"; then
7049 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7050 save_CXXFLAGS=$CXXFLAGS
7052 CXXFLAGS=$save_CXXFLAGS
7053 if test -z "$CXX_BASE"; then
7054 CXX_BASE=`first_arg_basename "$CXX"`
7058 dnl check for GNU C++ compiler version
7059 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7060 AC_MSG_CHECKING([the GNU C++ compiler version])
7062 _gpp_version=`$CXX -dumpversion`
7063 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7065 if test "$_gpp_majmin" -lt "700"; then
7066 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7068 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7071 dnl see https://issuetracker.google.com/issues/36962819
7075 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7076 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7077 #include <bits/c++config.h>]],[[
7078 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7079 && !defined(_GLIBCXX__PTHREADS) \
7080 && !defined(_GLIBCXX_HAS_GTHREADS)
7083 ]])],[AC_MSG_RESULT([yes])
7084 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7086 if test $glibcxx_threads = yes; then
7087 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7090 AC_SUBST(BOOST_CXXFLAGS)
7093 # prefx CXX with ccache if needed
7095 if test "$CCACHE" != ""; then
7096 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7098 save_CXXFLAGS=$CXXFLAGS
7099 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7100 # msvc does not fail on unknown options, check stdout
7101 if test "$COM" = MSC; then
7102 CXXFLAGS="$CXXFLAGS -nologo"
7104 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7105 ac_cxx_werror_flag=yes
7106 dnl an empty program will do, we're checking the compiler flags
7107 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7108 [use_ccache=yes], [use_ccache=no])
7109 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7110 AC_MSG_RESULT([yes])
7113 CXX_BASE="ccache $CXX_BASE"
7116 CXXFLAGS=$save_CXXFLAGS
7117 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7121 dnl ===================================================================
7122 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7123 dnl ===================================================================
7125 if test "$_os" != "WINNT"; then
7128 dnl Check whether there's a C pre-processor.
7133 dnl ===================================================================
7134 dnl Find integral type sizes and alignments
7135 dnl ===================================================================
7137 if test "$_os" != "WINNT"; then
7139 AC_CHECK_SIZEOF(long)
7140 AC_CHECK_SIZEOF(short)
7141 AC_CHECK_SIZEOF(int)
7142 AC_CHECK_SIZEOF(long long)
7143 AC_CHECK_SIZEOF(double)
7144 AC_CHECK_SIZEOF(void*)
7145 AC_CHECK_SIZEOF(size_t)
7147 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7148 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7149 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7150 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7151 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7152 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7154 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7155 m4_pattern_allow([AC_CHECK_ALIGNOF])
7156 m4_ifdef([AC_CHECK_ALIGNOF],
7158 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7159 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7160 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7161 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7164 case "$_os-$host_cpu" in
7166 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7167 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7168 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7169 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7172 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7173 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7174 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7175 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7178 if test -z "$ac_cv_alignof_short" -o \
7179 -z "$ac_cv_alignof_int" -o \
7180 -z "$ac_cv_alignof_long" -o \
7181 -z "$ac_cv_alignof_double"; then
7182 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.])
7188 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7189 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7190 if test $ac_cv_sizeof_long -eq 8; then
7191 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7192 elif test $ac_cv_sizeof_double -eq 8; then
7193 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7195 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7198 dnl Check for large file support
7200 if test -n "$ac_cv_sys_largefile_opts" -a "$ac_cv_sys_largefile_opts" != "none needed" -a "$ac_cv_sys_largefile_opts" != "support not detected"; then
7201 LFS_CFLAGS="$ac_cv_sys_largefile_opts"
7202 elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7203 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7205 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7206 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7210 SAL_TYPES_SIZEOFSHORT=2
7211 SAL_TYPES_SIZEOFINT=4
7212 SAL_TYPES_SIZEOFLONG=4
7213 SAL_TYPES_SIZEOFLONGLONG=8
7214 if test $WIN_HOST_BITS -eq 32; then
7215 SAL_TYPES_SIZEOFPOINTER=4
7218 SAL_TYPES_SIZEOFPOINTER=8
7221 SAL_TYPES_ALIGNMENT2=2
7222 SAL_TYPES_ALIGNMENT4=4
7223 SAL_TYPES_ALIGNMENT8=8
7226 AC_SUBST(LFS_CFLAGS)
7227 AC_SUBST(SIZEOF_SIZE_T)
7229 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7230 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7231 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7232 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7233 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7234 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7235 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7236 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7238 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7239 AC_MSG_CHECKING([whether jumbo sheets are supported])
7240 if test "$_os" != "WINNT"; then
7241 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7242 AC_MSG_RESULT([yes])
7243 ENABLE_JUMBO_SHEETS=TRUE
7244 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7249 if test $WIN_HOST_BITS -gt 32; then
7250 # 64bit windows is special-cased for tools::Long because long is 32bit
7251 AC_MSG_RESULT([yes])
7252 ENABLE_JUMBO_SHEETS=TRUE
7253 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7258 AC_SUBST(ENABLE_JUMBO_SHEETS)
7260 dnl ===================================================================
7261 dnl Check whether to enable runtime optimizations
7262 dnl ===================================================================
7263 ENABLE_RUNTIME_OPTIMIZATIONS=
7264 AC_MSG_CHECKING([whether to enable runtime optimizations])
7265 if test -z "$enable_runtime_optimizations"; then
7269 enable_runtime_optimizations=no
7275 if test "$enable_runtime_optimizations" != no; then
7276 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7277 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7278 AC_MSG_RESULT([yes])
7282 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7284 dnl ===================================================================
7285 dnl Check if valgrind headers are available
7286 dnl ===================================================================
7288 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7289 prev_cppflags=$CPPFLAGS
7290 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7291 # or where does it come from?
7292 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7293 AC_CHECK_HEADER([valgrind/valgrind.h],
7294 [ENABLE_VALGRIND=TRUE])
7295 CPPFLAGS=$prev_cppflags
7297 AC_SUBST([ENABLE_VALGRIND])
7298 if test -z "$ENABLE_VALGRIND"; then
7299 if test "$with_valgrind" = yes; then
7300 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7304 AC_SUBST([VALGRIND_CFLAGS])
7307 dnl ===================================================================
7308 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7309 dnl ===================================================================
7311 # We need at least the sys/sdt.h include header.
7312 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7313 if test "$SDT_H_FOUND" = "TRUE"; then
7314 # Found sys/sdt.h header, now make sure the c++ compiler works.
7315 # Old g++ versions had problems with probes in constructors/destructors.
7316 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7318 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7319 #include <sys/sdt.h>
7327 ProbeClass(int& v, const char *n) : ref(v), name(n)
7329 DTRACE_PROBE2(_test_, cons, name, ref);
7332 void method(int min)
7334 DTRACE_PROBE3(_test_, meth, name, ref, min);
7340 DTRACE_PROBE2(_test_, dest, name, ref);
7345 DTRACE_PROBE1(_test_, call, i);
7346 ProbeClass inst = ProbeClass(i, "call");
7348 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7349 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7352 AC_CONFIG_HEADERS([config_host/config_probes.h])
7354 dnl ===================================================================
7356 dnl ===================================================================
7357 HAVE_GCC_STACK_CLASH_PROTECTION=
7358 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7359 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7361 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7363 [AC_LANG_PROGRAM(, [[return 0;]])],
7364 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7365 [AC_MSG_RESULT([no])])
7368 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7370 CFLAGS="$CFLAGS -Werror -mno-avx"
7371 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7373 if test "$HAVE_GCC_AVX" = "TRUE"; then
7374 AC_MSG_RESULT([yes])
7379 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7380 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7382 if (__sync_add_and_fetch(&v, 1) != 1 ||
7383 __sync_sub_and_fetch(&v, 1) != 0)
7385 __sync_synchronize();
7386 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7390 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7391 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7392 AC_MSG_RESULT([yes])
7393 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7398 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7403 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7405 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7406 AC_MSG_RESULT([yes])
7407 ], [AC_MSG_RESULT([no])])
7410 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7412 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7415 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7417 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7418 AC_MSG_RESULT([yes])
7419 ], [AC_MSG_RESULT([no])])
7422 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7426 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7428 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7429 AC_MSG_RESULT([yes])
7430 ], [AC_MSG_RESULT([no])])
7433 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7435 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7438 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7440 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7441 AC_MSG_RESULT([yes])
7442 ], [AC_MSG_RESULT([no])])
7445 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7447 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7450 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7452 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7453 AC_MSG_RESULT([yes])
7454 ], [AC_MSG_RESULT([no])])
7457 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7459 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7461 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7463 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7464 AC_MSG_RESULT([yes])
7465 ], [AC_MSG_RESULT([no])])
7468 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7470 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7472 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7474 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7475 AC_MSG_RESULT([yes])
7476 ], [AC_MSG_RESULT([no])])
7479 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7481 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7483 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7485 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7486 AC_MSG_RESULT([yes])
7487 ], [AC_MSG_RESULT([no])])
7490 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7492 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7495 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7497 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7498 AC_MSG_RESULT([yes])
7499 ], [AC_MSG_RESULT([no])])
7502 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7504 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7509 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7510 AC_MSG_RESULT([yes])
7511 ], [AC_MSG_RESULT([no])])
7515 AC_SUBST(HAVE_GCC_AVX)
7516 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7517 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7519 dnl ===================================================================
7520 dnl Identify the C++ library
7521 dnl ===================================================================
7523 AC_MSG_CHECKING([what the C++ library is])
7527 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7533 [CPP_LIBRARY=GLIBCXX
7534 cpp_library_name="GNU libstdc++"
7537 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7539 #ifndef _LIBCPP_VERSION
7544 cpp_library_name="LLVM libc++"
7545 AC_DEFINE([HAVE_LIBCPP])
7548 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7555 cpp_library_name="Microsoft"
7557 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7558 AC_MSG_RESULT([$cpp_library_name])
7560 AC_SUBST([HAVE_LIBSTDCPP])
7561 AC_SUBST([HAVE_LIBCPP])
7563 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7565 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7566 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7567 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7568 # although there will be backwards compatibility).
7569 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7570 # and there would be undefined references to debug functions.
7571 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7572 # So check if debug mode can be used and disable or downgrade it to assertions
7574 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7577 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7578 #define _LIBCPP_DEBUG 0 // only assertions
7586 ]])], [libcpp_debug_links=1])
7587 if test -n "$libcpp_debug_links"; then
7588 # we can use at least assertions, check if debug mode works
7589 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7590 #define _LIBCPP_DEBUG 1 // debug mode
7593 int foo(const std::vector<int>& v) { return *v.begin(); }
7598 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7599 return (foo(v) + s.size()) != 0 ? 0 : 1;
7603 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7605 [AC_MSG_RESULT(no, using only assertions)
7606 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7614 AC_SUBST([LIBCPP_DEBUG])
7616 dnl ===================================================================
7618 dnl ===================================================================
7619 AC_PATH_PROG(GPERF, gperf)
7620 if test -z "$GPERF"; then
7621 AC_MSG_ERROR([gperf not found but needed. Install it.])
7623 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7624 GPERF=`cygpath -m $GPERF`
7626 AC_MSG_CHECKING([whether gperf is new enough])
7627 my_gperf_ver1=$($GPERF --version | head -n 1)
7628 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7629 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7630 if test "$my_gperf_ver3" -ge 301; then
7631 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7633 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7637 dnl ===================================================================
7638 dnl Check for system libcmis
7639 dnl ===================================================================
7640 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7642 dnl ===================================================================
7644 dnl ===================================================================
7646 if test -z "${CXXFLAGS_CXX11+x}"; then
7647 AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7648 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7649 if test "$with_latest_c__" = yes; then
7650 CXXFLAGS_CXX11=-std:c++latest
7652 CXXFLAGS_CXX11=-std:c++20
7654 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7655 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7656 my_flags='-std=c++20 -std=c++2a'
7657 if test "$with_latest_c__" = yes; then
7658 my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7660 for flag in $my_flags; do
7661 if test "$COM" = MSC; then
7662 flag="-Xclang $flag"
7664 save_CXXFLAGS=$CXXFLAGS
7665 CXXFLAGS="$CXXFLAGS $flag -Werror"
7667 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7668 #include <algorithm>
7669 #include <functional>
7672 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7673 std::sort(v.begin(), v.end(), fn);
7675 ]])],[CXXFLAGS_CXX11=$flag])
7677 CXXFLAGS=$save_CXXFLAGS
7678 if test -n "$CXXFLAGS_CXX11"; then
7683 if test -n "$CXXFLAGS_CXX11"; then
7684 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7689 AC_SUBST(CXXFLAGS_CXX11)
7691 if test "$GCC" = "yes"; then
7692 save_CXXFLAGS=$CXXFLAGS
7693 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7695 CXXFLAGS=$save_CXXFLAGS
7696 AC_SUBST(ATOMIC_LIB)
7699 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7700 save_CXXFLAGS=$CXXFLAGS
7701 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7704 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7707 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7723 a thinga[]={{0,0}, {1,1}};
7724 b thingb[]={{0,0}, {1,1}};
7725 size_t i = sizeof(sal_n_array_size(thinga));
7726 size_t j = sizeof(sal_n_array_size(thingb));
7727 return !(i != 0 && j != 0);
7729 ], [ AC_MSG_RESULT(yes) ],
7730 [ AC_MSG_ERROR(no)])
7732 CXXFLAGS=$save_CXXFLAGS
7734 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7735 if test "$GCC" = yes; then
7736 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7738 save_CXXFLAGS=$CXXFLAGS
7739 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7740 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7741 CXXFLAGS=$save_CXXFLAGS
7743 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7744 AC_MSG_RESULT([yes])
7749 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7751 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7753 save_CXXFLAGS=$CXXFLAGS
7754 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7755 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7756 #include <algorithm>
7757 #include <initializer_list>
7759 template<typename T> class S {
7763 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7765 constinit S<int> s{3, 2, 1};
7767 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7768 AC_MSG_RESULT([yes])
7769 ], [AC_MSG_RESULT([no])])
7770 CXXFLAGS=$save_CXXFLAGS
7773 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7775 save_CXXFLAGS=$CXXFLAGS
7776 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7777 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7778 struct S1 { S1(S1 &&); };
7780 S1 f(S2 s) { return s; }
7782 AC_DEFINE([HAVE_P1155R3],[1])
7783 AC_MSG_RESULT([yes])
7784 ], [AC_MSG_RESULT([no])])
7785 CXXFLAGS=$save_CXXFLAGS
7788 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7789 HAVE_CXX20_ATOMIC_REF=
7791 save_CXXFLAGS=$CXXFLAGS
7792 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7793 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7796 std::atomic_ref<int> y(x);
7798 HAVE_CXX20_ATOMIC_REF=TRUE
7799 AC_MSG_RESULT([yes])
7800 ], [AC_MSG_RESULT([no])])
7801 CXXFLAGS=$save_CXXFLAGS
7803 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7805 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7806 dnl which is included in -Wextra anyway):
7807 HAVE_WDEPRECATED_COPY_DTOR=
7808 if test "$GCC" = yes; then
7809 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7811 save_CXXFLAGS=$CXXFLAGS
7812 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7813 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7814 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7815 AC_MSG_RESULT([yes])
7816 ], [AC_MSG_RESULT([no])])
7817 CXXFLAGS=$save_CXXFLAGS
7820 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7822 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7823 dnl uninitialized warning for code like
7826 dnl boost::optional<OString> * g(bool b) {
7827 dnl boost::optional<OString> o;
7829 dnl return new boost::optional<OString>(o);
7832 dnl (as is e.g. present, in a slightly more elaborate form, in
7833 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7834 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7835 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7836 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7837 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7839 save_CXXFLAGS=$CXXFLAGS
7840 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7841 if test "$ENABLE_OPTIMIZED" = TRUE; then
7842 CXXFLAGS="$CXXFLAGS -O2"
7844 CXXFLAGS="$CXXFLAGS -O0"
7846 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7855 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7856 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7862 char stg[sizeof (S1)];
7870 ]])], [AC_MSG_RESULT([no])], [
7871 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7872 AC_MSG_RESULT([yes])
7874 CXXFLAGS=$save_CXXFLAGS
7877 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7879 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7880 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7881 dnl hits us e.g. with GCC 10 and --enable-optimized at
7883 dnl In file included from include/rtl/string.hxx:49,
7884 dnl from include/rtl/ustring.hxx:43,
7885 dnl from include/osl/file.hxx:35,
7886 dnl from include/codemaker/global.hxx:28,
7887 dnl from include/codemaker/options.hxx:23,
7888 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7889 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7890 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,
7891 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,
7892 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,
7893 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7894 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7895 dnl 78 | memcpy( buffer, data, length );
7896 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7897 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7898 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7899 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7901 save_CXXFLAGS=$CXXFLAGS
7902 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7903 if test "$ENABLE_OPTIMIZED" = TRUE; then
7904 CXXFLAGS="$CXXFLAGS -O2"
7906 CXXFLAGS="$CXXFLAGS -O0"
7908 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7909 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7910 void fill(char const * begin, char const * end, char c);
7916 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7917 __builtin_strncpy(c.username, "root", sizeof(c.username));
7919 ]])], [AC_MSG_RESULT([no])], [
7920 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7921 AC_MSG_RESULT([yes])
7923 CXXFLAGS=$save_CXXFLAGS
7926 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7928 HAVE_DLLEXPORTINLINES=
7929 if test "$_os" = "WINNT"; then
7930 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7932 save_CXXFLAGS=$CXXFLAGS
7933 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7934 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7935 HAVE_DLLEXPORTINLINES=TRUE
7936 AC_MSG_RESULT([yes])
7937 ], [AC_MSG_RESULT([no])])
7938 CXXFLAGS=$save_CXXFLAGS
7941 AC_SUBST([HAVE_DLLEXPORTINLINES])
7943 dnl ===================================================================
7944 dnl CPU Intrinsics support - SSE, AVX
7945 dnl ===================================================================
7947 CXXFLAGS_INTRINSICS_SSE2=
7948 CXXFLAGS_INTRINSICS_SSSE3=
7949 CXXFLAGS_INTRINSICS_SSE41=
7950 CXXFLAGS_INTRINSICS_SSE42=
7951 CXXFLAGS_INTRINSICS_AVX=
7952 CXXFLAGS_INTRINSICS_AVX2=
7953 CXXFLAGS_INTRINSICS_AVX512=
7954 CXXFLAGS_INTRINSICS_AVX512F=
7955 CXXFLAGS_INTRINSICS_F16C=
7956 CXXFLAGS_INTRINSICS_FMA=
7958 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7959 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7966 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7967 flag_avx512f=-mavx512f
7971 # With MSVC using -arch is in fact not necessary for being able
7972 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7973 # even if compiled with -arch:AVX, the -arch option really only affects
7974 # instructions generated for C/C++ code.
7975 # So use the matching same (or lower) -arch options, but only in order
7976 # to generate the best matching instructions for the C++ code surrounding
7978 # SSE2 is the default for x86/x64, so no need to specify the option.
7980 # No specific options for these, use the next lower.
7981 flag_ssse3="$flag_sse2"
7982 flag_sse41="$flag_sse2"
7983 flag_sse42="$flag_sse2"
7985 flag_avx2=-arch:AVX2
7986 flag_avx512=-arch:AVX512
7987 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7988 flag_avx512f=-arch:AVX2
7989 # No MSVC options for these.
7990 flag_f16c="$flag_sse2"
7991 flag_fma="$flag_sse2"
7994 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7996 save_CXXFLAGS=$CXXFLAGS
7997 CXXFLAGS="$CXXFLAGS $flag_sse2"
7998 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7999 #include <emmintrin.h>
8001 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8002 c = _mm_xor_si128 (a, b);
8006 [can_compile_sse2=yes],
8007 [can_compile_sse2=no])
8009 CXXFLAGS=$save_CXXFLAGS
8010 AC_MSG_RESULT([${can_compile_sse2}])
8011 if test "${can_compile_sse2}" = "yes" ; then
8012 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8015 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8017 save_CXXFLAGS=$CXXFLAGS
8018 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8019 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8020 #include <tmmintrin.h>
8022 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8023 c = _mm_maddubs_epi16 (a, b);
8027 [can_compile_ssse3=yes],
8028 [can_compile_ssse3=no])
8030 CXXFLAGS=$save_CXXFLAGS
8031 AC_MSG_RESULT([${can_compile_ssse3}])
8032 if test "${can_compile_ssse3}" = "yes" ; then
8033 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8036 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8038 save_CXXFLAGS=$CXXFLAGS
8039 CXXFLAGS="$CXXFLAGS $flag_sse41"
8040 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8041 #include <smmintrin.h>
8043 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8044 c = _mm_cmpeq_epi64 (a, b);
8048 [can_compile_sse41=yes],
8049 [can_compile_sse41=no])
8051 CXXFLAGS=$save_CXXFLAGS
8052 AC_MSG_RESULT([${can_compile_sse41}])
8053 if test "${can_compile_sse41}" = "yes" ; then
8054 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8057 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8059 save_CXXFLAGS=$CXXFLAGS
8060 CXXFLAGS="$CXXFLAGS $flag_sse42"
8061 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8062 #include <nmmintrin.h>
8064 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8065 c = _mm_cmpgt_epi64 (a, b);
8069 [can_compile_sse42=yes],
8070 [can_compile_sse42=no])
8072 CXXFLAGS=$save_CXXFLAGS
8073 AC_MSG_RESULT([${can_compile_sse42}])
8074 if test "${can_compile_sse42}" = "yes" ; then
8075 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8078 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8080 save_CXXFLAGS=$CXXFLAGS
8081 CXXFLAGS="$CXXFLAGS $flag_avx"
8082 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8083 #include <immintrin.h>
8085 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8086 c = _mm256_xor_ps(a, b);
8090 [can_compile_avx=yes],
8091 [can_compile_avx=no])
8093 CXXFLAGS=$save_CXXFLAGS
8094 AC_MSG_RESULT([${can_compile_avx}])
8095 if test "${can_compile_avx}" = "yes" ; then
8096 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8099 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8101 save_CXXFLAGS=$CXXFLAGS
8102 CXXFLAGS="$CXXFLAGS $flag_avx2"
8103 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8104 #include <immintrin.h>
8106 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8107 c = _mm256_maddubs_epi16(a, b);
8111 [can_compile_avx2=yes],
8112 [can_compile_avx2=no])
8114 CXXFLAGS=$save_CXXFLAGS
8115 AC_MSG_RESULT([${can_compile_avx2}])
8116 if test "${can_compile_avx2}" = "yes" ; then
8117 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8120 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8122 save_CXXFLAGS=$CXXFLAGS
8123 CXXFLAGS="$CXXFLAGS $flag_avx512"
8124 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8125 #include <immintrin.h>
8127 __m512i a = _mm512_loadu_si512(0);
8128 __m512d v1 = _mm512_load_pd(0);
8129 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8130 __m512d v2 = _mm512_abs_pd(v1);
8134 [can_compile_avx512=yes],
8135 [can_compile_avx512=no])
8137 CXXFLAGS=$save_CXXFLAGS
8138 AC_MSG_RESULT([${can_compile_avx512}])
8139 if test "${can_compile_avx512}" = "yes" ; then
8140 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8141 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8144 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8146 save_CXXFLAGS=$CXXFLAGS
8147 CXXFLAGS="$CXXFLAGS $flag_f16c"
8148 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8149 #include <immintrin.h>
8151 __m128i a = _mm_set1_epi32 (0);
8153 c = _mm_cvtph_ps(a);
8157 [can_compile_f16c=yes],
8158 [can_compile_f16c=no])
8160 CXXFLAGS=$save_CXXFLAGS
8161 AC_MSG_RESULT([${can_compile_f16c}])
8162 if test "${can_compile_f16c}" = "yes" ; then
8163 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8166 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8168 save_CXXFLAGS=$CXXFLAGS
8169 CXXFLAGS="$CXXFLAGS $flag_fma"
8170 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8171 #include <immintrin.h>
8173 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8174 d = _mm256_fmadd_ps(a, b, c);
8178 [can_compile_fma=yes],
8179 [can_compile_fma=no])
8181 CXXFLAGS=$save_CXXFLAGS
8182 AC_MSG_RESULT([${can_compile_fma}])
8183 if test "${can_compile_fma}" = "yes" ; then
8184 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8187 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8188 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8189 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8190 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8191 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8192 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8193 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8194 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8195 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8196 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8198 dnl ===================================================================
8199 dnl system stl sanity tests
8200 dnl ===================================================================
8201 if test "$_os" != "WINNT"; then
8205 save_CPPFLAGS="$CPPFLAGS"
8206 if test -n "$MACOSX_SDK_PATH"; then
8207 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8210 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8212 if test "$CPP_LIBRARY" = GLIBCXX; then
8213 dnl gcc#19664, gcc#22482, rhbz#162935
8214 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8215 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8216 AC_MSG_RESULT([$stlvisok])
8217 if test "$stlvisok" = "no"; then
8218 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8222 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8223 # when we don't make any dynamic libraries?
8224 if test "$DISABLE_DYNLOADING" = ""; then
8225 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8226 cat > conftestlib1.cc <<_ACEOF
8227 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8228 struct S2: S1<int> { virtual ~S2(); };
8231 cat > conftestlib2.cc <<_ACEOF
8232 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8233 struct S2: S1<int> { virtual ~S2(); };
8234 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8236 gccvisinlineshiddenok=yes
8237 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8238 gccvisinlineshiddenok=no
8240 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8241 dnl known to not work with -z defs (unsetting which makes the test
8243 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8244 if test "$COM_IS_CLANG" = TRUE; then
8245 for i in $CXX $CXXFLAGS; do
8248 my_linkflagsnoundefs=
8254 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8255 gccvisinlineshiddenok=no
8260 AC_MSG_RESULT([$gccvisinlineshiddenok])
8261 if test "$gccvisinlineshiddenok" = "no"; then
8262 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8266 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8267 cat >visibility.cxx <<_ACEOF
8268 #pragma GCC visibility push(hidden)
8269 struct __attribute__ ((visibility ("default"))) TestStruct {
8272 __attribute__ ((visibility ("default"))) void TestFunc() {
8276 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8281 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8284 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8296 rm -f visibility.s visibility.cxx
8298 AC_MSG_RESULT([$gccvisbroken])
8299 if test "$gccvisbroken" = "yes"; then
8300 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8303 CPPFLAGS="$save_CPPFLAGS"
8305 AC_MSG_CHECKING([if CET endbranch is recognized])
8306 cat > endbr.s <<_ACEOF
8309 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8310 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8311 AC_MSG_RESULT([yes])
8312 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8316 rm -f endbr.s endbr.o
8317 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8322 dnl ===================================================================
8324 dnl ===================================================================
8326 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8327 if test "$GCC" = "yes"; then
8328 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8330 save_CXXFLAGS=$CXXFLAGS
8331 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8332 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8333 CXXFLAGS=$save_CXXFLAGS
8335 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8336 AC_MSG_RESULT([yes])
8341 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8343 dnl ===================================================================
8344 dnl Compiler plugins
8345 dnl ===================================================================
8348 # currently only Clang
8350 if test "$COM_IS_CLANG" != "TRUE"; then
8351 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8352 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8353 enable_compiler_plugins=no
8357 COMPILER_PLUGINS_COM_IS_CLANG=
8358 if test "$COM_IS_CLANG" = "TRUE"; then
8359 if test -n "$enable_compiler_plugins"; then
8360 compiler_plugins="$enable_compiler_plugins"
8361 elif test -n "$ENABLE_DBGUTIL"; then
8362 compiler_plugins=test
8366 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8367 if test "$CLANGVER" -lt 120001; then
8368 if test "$compiler_plugins" = yes; then
8370 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8376 if test "$compiler_plugins" != "no"; then
8377 dnl The prefix where Clang resides, override to where Clang resides if
8378 dnl using a source build:
8379 if test -z "$CLANGDIR"; then
8380 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8382 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8383 if test -z "$COMPILER_PLUGINS_CXX"; then
8384 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8386 clangbindir=$CLANGDIR/bin
8387 if test "$build_os" = "cygwin"; then
8388 clangbindir=$(cygpath -u "$clangbindir")
8390 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8391 if test -n "$LLVM_CONFIG"; then
8392 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8393 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8394 if test -z "$CLANGLIBDIR"; then
8395 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8397 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8398 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8399 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8400 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8401 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8402 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8405 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8406 clangobjdir=$($LLVM_CONFIG --obj-root)
8407 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8408 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8411 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8415 save_CPPFLAGS=$CPPFLAGS
8416 save_CXXFLAGS=$CXXFLAGS
8417 save_LDFLAGS=$LDFLAGS
8419 CXX=$COMPILER_PLUGINS_CXX
8420 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8421 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8422 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8423 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8424 [COMPILER_PLUGINS=TRUE],
8426 if test "$compiler_plugins" = "yes"; then
8427 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8429 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8430 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8433 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8434 dnl comment in compilerplugins/Makefile-clang.mk:
8435 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8437 AC_MSG_CHECKING([for clang libraries to use])
8438 if test -z "$CLANGTOOLLIBS"; then
8439 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8441 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8442 [[ clang::FullSourceLoc().dump(); ]])
8443 ],[CLANGTOOLLIBS="$LIBS"],[])
8445 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8446 dnl list of individual -lclang* (but note that that list can become outdated over time,
8447 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8448 dnl needs to include -lclangSupport now"):
8449 if test -z "$CLANGTOOLLIBS"; then
8450 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8451 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8453 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8454 [[ clang::FullSourceLoc().dump(); ]])
8455 ],[CLANGTOOLLIBS="$LIBS"],[])
8457 AC_MSG_RESULT([$CLANGTOOLLIBS])
8458 if test -z "$CLANGTOOLLIBS"; then
8459 if test "$compiler_plugins" = "yes"; then
8460 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8462 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8463 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8467 if test -n "$COMPILER_PLUGINS"; then
8468 if test -z "$CLANGSYSINCLUDE"; then
8469 if test -n "$LLVM_CONFIG"; then
8470 # Path to the clang system headers (no idea if there's a better way to get it).
8471 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8478 CPPFLAGS=$save_CPPFLAGS
8479 CXXFLAGS=$save_CXXFLAGS
8480 LDFLAGS=$save_LDFLAGS
8484 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8491 [AC_MSG_RESULT([yes])
8492 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8493 [AC_MSG_RESULT([no])])
8494 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8497 if test "$enable_compiler_plugins" = "yes"; then
8498 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8501 COMPILER_PLUGINS_ANALYZER_PCH=
8502 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8503 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8505 AC_SUBST(COMPILER_PLUGINS)
8506 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8507 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8508 AC_SUBST(COMPILER_PLUGINS_CXX)
8509 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8510 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8511 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8512 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8514 AC_SUBST(CLANGLIBDIR)
8515 AC_SUBST(CLANGTOOLLIBS)
8516 AC_SUBST(CLANGSYSINCLUDE)
8518 # Plugin to help linker.
8519 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8520 # This makes --enable-lto build with clang work.
8523 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8524 AC_SUBST(HAVE_POSIX_FALLOCATE)
8526 JITC_PROCESSOR_TYPE=""
8527 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8528 # IBMs JDK needs this...
8529 JITC_PROCESSOR_TYPE=6
8530 export JITC_PROCESSOR_TYPE
8532 AC_SUBST([JITC_PROCESSOR_TYPE])
8534 # Misc Windows Stuff
8535 AC_ARG_WITH(ucrt-dir,
8536 AS_HELP_STRING([--with-ucrt-dir],
8537 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8538 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8539 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8540 Windows6.1-KB2999226-x64.msu
8541 Windows6.1-KB2999226-x86.msu
8542 Windows8.1-KB2999226-x64.msu
8543 Windows8.1-KB2999226-x86.msu
8544 Windows8-RT-KB2999226-x64.msu
8545 Windows8-RT-KB2999226-x86.msu
8546 A zip archive including those files is available from Microsoft site:
8547 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8550 UCRT_REDISTDIR="$with_ucrt_dir"
8551 if test $_os = "WINNT"; then
8553 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8554 MSVC_DLLS="$msvcdlls"
8555 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8557 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8559 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8562 for i in $PKGFORMAT; do
8563 if test "$i" = msi; then
8564 find_msms "$with_redist"
8565 if test -n "$msmdir"; then
8566 MSM_PATH=`win_short_path_for_make "$msmdir"`
8567 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8573 if test "$UCRT_REDISTDIR" = "no"; then
8574 dnl explicitly disabled
8577 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8578 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8579 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8580 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8581 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8582 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8584 if test -n "$PKGFORMAT"; then
8585 for i in $PKGFORMAT; do
8588 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8589 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8598 AC_SUBST(UCRT_REDISTDIR)
8599 AC_SUBST(MSVC_DLL_PATH)
8604 dnl ===================================================================
8606 dnl ===================================================================
8607 if test "$ENABLE_JAVA" != ""; then
8609 # Windows-specific tests
8610 if test "$build_os" = "cygwin"; then
8611 if test -z "$with_jdk_home"; then
8612 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8613 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8614 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8615 if test -n "$regvalue"; then
8617 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8618 with_jdk_home=$regvalue
8620 howfound="found automatically"
8622 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8623 howfound="you passed"
8626 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8627 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 8])
8631 # 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.
8632 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8633 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8634 with_jdk_home=`/usr/libexec/java_home`
8637 JAVA_HOME=; export JAVA_HOME
8638 if test -z "$with_jdk_home"; then
8639 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8641 _java_path="$with_jdk_home/bin/$with_java"
8642 dnl Check if there is a Java interpreter at all.
8643 if test -x "$_java_path"; then
8644 JAVAINTERPRETER=$_java_path
8646 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8650 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8651 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8652 dnl loaded by java to run JunitTests:
8653 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8654 shortjdkhome=`cygpath -d "$with_jdk_home"`
8655 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
8656 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8657 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8658 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
8659 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8660 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8663 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8664 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8666 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8667 elif test "$cross_compiling" != "yes"; then
8669 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8670 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8671 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8672 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8675 *) # assumption: everything else 32-bit
8676 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8677 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8678 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8685 dnl ===================================================================
8687 dnl ===================================================================
8689 # Whether all the complexity here actually is needed any more or not, no idea.
8691 JDK_SECURITYMANAGER_DISALLOWED=
8693 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8695 AC_MSG_CHECKING([the installed JDK])
8696 if test -n "$JAVAINTERPRETER"; then
8697 dnl java -version sends output to stderr!
8698 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8699 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8700 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8701 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8702 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8703 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8704 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8705 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8709 dnl Sun JDK specific tests
8710 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8711 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8713 if test "$_jdk_ver" -lt 10800; then
8714 AC_MSG_ERROR([JDK is too old, you need at least 8 ($_jdk_ver < 10800)])
8716 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8717 dnl completely removed in some Java version > 18 (see
8718 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8719 if test "$_jdk_ver" -ge 180000; then
8720 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8723 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8724 if test "$_os" = "WINNT"; then
8725 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8727 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8729 dnl Check whether the build Java supports modules
8730 if test "$_jdk_ver" -ge 90000; then
8733 AC_MSG_WARN([Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)])
8734 add_warning "Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)"
8737 # set to limit VM usage for JunitTests
8739 # set to limit VM usage for javac
8740 JAVACFLAGS=-J-Xmx128M
8743 AC_MSG_ERROR([Java not found. You need at least JDK 8])
8746 if test -z "$ENABLE_JAVA"; then
8750 elif test "$cross_compiling" = "yes"; then
8751 # Just assume compatibility of build and host JDK
8753 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8757 dnl ===================================================================
8758 dnl Checks for javac
8759 dnl ===================================================================
8760 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8761 javacompiler="javac"
8762 : ${JAVA_SOURCE_VER=8}
8763 : ${JAVA_TARGET_VER=8}
8764 if test -z "$with_jdk_home"; then
8765 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8767 _javac_path="$with_jdk_home/bin/$javacompiler"
8768 dnl Check if there is a Java compiler at all.
8769 if test -x "$_javac_path"; then
8770 JAVACOMPILER=$_javac_path
8773 if test -z "$JAVACOMPILER"; then
8774 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8776 if test "$build_os" = "cygwin"; then
8777 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8778 JAVACOMPILER="${JAVACOMPILER}.exe"
8780 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8784 dnl ===================================================================
8785 dnl Checks for javadoc
8786 dnl ===================================================================
8787 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8788 if test -z "$with_jdk_home"; then
8789 AC_PATH_PROG(JAVADOC, javadoc)
8791 _javadoc_path="$with_jdk_home/bin/javadoc"
8792 dnl Check if there is a javadoc at all.
8793 if test -x "$_javadoc_path"; then
8794 JAVADOC=$_javadoc_path
8796 AC_PATH_PROG(JAVADOC, javadoc)
8799 if test -z "$JAVADOC"; then
8800 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8802 if test "$build_os" = "cygwin"; then
8803 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8804 JAVADOC="${JAVADOC}.exe"
8806 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8809 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8810 JAVADOCISGJDOC="yes"
8814 AC_SUBST(JAVADOCISGJDOC)
8816 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8817 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8818 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8819 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8820 # try to recover first by looking whether we have an alternative
8821 # system as in Debian or newer SuSEs where following /usr/bin/javac
8822 # over /etc/alternatives/javac leads to the right bindir where we
8823 # just need to strip a bit away to get a valid JAVA_HOME
8824 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8825 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8826 # maybe only one level of symlink (e.g. on Mac)
8827 JAVA_HOME=$(readlink $JAVACOMPILER)
8828 if test "$(dirname $JAVA_HOME)" = "."; then
8829 # we've got no path to trim back
8834 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8835 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8836 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8837 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8839 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8840 if test "$JAVA_HOME" != "/usr"; then
8841 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8842 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8843 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8844 dnl Tiger already returns a JDK path...
8845 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8847 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8848 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8849 dnl that checks which version to run
8850 if test -f "$JAVA_HOME"; then
8851 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8856 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8858 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8859 if test -z "$JAVA_HOME"; then
8860 if test "x$with_jdk_home" = "x"; then
8861 cat > findhome.java <<_ACEOF
8862 [import java.io.File;
8866 public static void main(String args[])
8868 String jrelocation = System.getProperty("java.home");
8869 File jre = new File(jrelocation);
8870 System.out.println(jre.getParent());
8874 AC_MSG_CHECKING([if javac works])
8875 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8876 AC_TRY_EVAL(javac_cmd)
8877 if test $? = 0 -a -f ./findhome.class; then
8878 AC_MSG_RESULT([javac works])
8880 echo "configure: javac test failed" >&5
8881 cat findhome.java >&5
8882 AC_MSG_ERROR([javac does not work - java projects will not build!])
8884 AC_MSG_CHECKING([if gij knows its java.home])
8885 JAVA_HOME=`$JAVAINTERPRETER findhome`
8886 if test $? = 0 -a "$JAVA_HOME" != ""; then
8887 AC_MSG_RESULT([$JAVA_HOME])
8889 echo "configure: java test failed" >&5
8890 cat findhome.java >&5
8891 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8893 # clean-up after ourselves
8894 rm -f ./findhome.java ./findhome.class
8896 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8900 # now check if $JAVA_HOME is really valid
8901 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8902 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8903 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8904 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8905 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8906 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8907 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8908 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8911 PathFormat "$JAVA_HOME"
8912 JAVA_HOME="$formatted_path"
8915 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8918 AC_MSG_CHECKING([for JAWT lib])
8919 if test "$_os" = WINNT; then
8920 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8925 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8926 JAVA_ARCH=$my_java_arch
8941 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8942 JAVA_ARCH=$my_java_arch
8945 my_java_arch=sparcv9
8951 my_java_arch=$host_cpu
8954 # This is where JDK9 puts the library
8955 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8956 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8958 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8960 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8962 AC_MSG_RESULT([$JAWTLIB])
8966 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8970 JAVAINC="-I$JAVA_HOME/include/win32"
8971 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8975 if test -d "$JAVA_HOME/include/darwin"; then
8976 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8978 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8983 JAVAINC="-I$JAVA_HOME/include"
8984 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8988 JAVAINC="-I$JAVA_HOME/include"
8989 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8990 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8991 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8992 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8996 JAVAINC="-I$JAVA_HOME/include"
8997 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8998 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9002 JAVAINC="-I$JAVA_HOME/include"
9003 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9004 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9008 JAVAINC="-I$JAVA_HOME/include"
9009 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9010 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9014 JAVAINC="-I$JAVA_HOME/include"
9015 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9016 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9020 JAVAINC="-I$JAVA_HOME/include"
9021 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9022 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9026 SOLARINC="$SOLARINC $JAVAINC"
9028 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9029 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9030 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9032 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9035 AC_SUBST(JAVACFLAGS)
9036 AC_SUBST(JAVACOMPILER)
9037 AC_SUBST(JAVAINTERPRETER)
9038 AC_SUBST(JAVAIFLAGS)
9039 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9041 AC_SUBST(JAVA_HOME_FOR_BUILD)
9043 AC_SUBST(JDK_FOR_BUILD)
9044 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9045 AC_SUBST(JAVA_SOURCE_VER)
9046 AC_SUBST(JAVA_TARGET_VER)
9047 AC_SUBST(MODULAR_JAVA)
9050 dnl ===================================================================
9051 dnl Export file validation
9052 dnl ===================================================================
9053 AC_MSG_CHECKING([whether to enable export file validation])
9054 if test "$with_export_validation" != "no"; then
9055 if test -z "$ENABLE_JAVA"; then
9056 if test "$with_export_validation" = "yes"; then
9057 AC_MSG_ERROR([requested, but Java is disabled])
9059 AC_MSG_RESULT([no, as Java is disabled])
9061 elif ! test -d "${SRC_ROOT}/schema"; then
9062 if test "$with_export_validation" = "yes"; then
9063 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9065 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9068 AC_MSG_RESULT([yes])
9069 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9071 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9072 if test -z "$ODFVALIDATOR"; then
9073 # remember to download the ODF toolkit with validator later
9074 AC_MSG_NOTICE([no odfvalidator found, will download it])
9075 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9076 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9078 # and fetch name of odfvalidator jar name from download.lst
9079 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9080 AC_SUBST(ODFVALIDATOR_JAR)
9082 if test -z "$ODFVALIDATOR_JAR"; then
9083 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9086 if test "$build_os" = "cygwin"; then
9087 # In case of Cygwin it will be executed from Windows,
9088 # so we need to run bash and absolute path to validator
9089 # so instead of "odfvalidator" it will be
9090 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9091 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9093 ODFVALIDATOR="sh $ODFVALIDATOR"
9095 AC_SUBST(ODFVALIDATOR)
9098 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9099 if test -z "$OFFICEOTRON"; then
9100 # remember to download the officeotron with validator later
9101 AC_MSG_NOTICE([no officeotron found, will download it])
9102 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9103 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9105 # and fetch name of officeotron jar name from download.lst
9106 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9107 AC_SUBST(OFFICEOTRON_JAR)
9109 if test -z "$OFFICEOTRON_JAR"; then
9110 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9113 # check version of existing officeotron
9114 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9115 if test 0"$OFFICEOTRON_VER" -lt 704; then
9116 AC_MSG_ERROR([officeotron too old])
9119 if test "$build_os" = "cygwin"; then
9120 # In case of Cygwin it will be executed from Windows,
9121 # so we need to run bash and absolute path to validator
9122 # so instead of "odfvalidator" it will be
9123 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9124 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9126 OFFICEOTRON="sh $OFFICEOTRON"
9129 AC_SUBST(OFFICEOTRON)
9134 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9135 if test "$with_bffvalidator" != "no"; then
9136 AC_DEFINE(HAVE_BFFVALIDATOR)
9138 if test "$with_export_validation" = "no"; then
9139 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9142 if test "$with_bffvalidator" = "yes"; then
9143 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9145 BFFVALIDATOR="$with_bffvalidator"
9148 if test "$build_os" = "cygwin"; then
9149 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9150 AC_MSG_RESULT($BFFVALIDATOR)
9152 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9154 elif test -n "$BFFVALIDATOR"; then
9155 # We are not in Cygwin but need to run Windows binary with wine
9156 AC_PATH_PROGS(WINE, wine)
9158 # so swap in a shell wrapper that converts paths transparently
9159 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9160 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9161 AC_SUBST(BFFVALIDATOR_EXE)
9162 AC_MSG_RESULT($BFFVALIDATOR)
9164 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9166 AC_SUBST(BFFVALIDATOR)
9171 dnl ===================================================================
9172 dnl Check for epm (not needed for Windows)
9173 dnl ===================================================================
9174 AC_MSG_CHECKING([whether to enable EPM for packing])
9175 if test "$enable_epm" = "yes"; then
9176 AC_MSG_RESULT([yes])
9177 if test "$_os" != "WINNT"; then
9178 if test $_os = Darwin; then
9180 elif test -n "$with_epm"; then
9183 AC_PATH_PROG(EPM, epm, no)
9185 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9186 AC_MSG_NOTICE([EPM will be built.])
9187 BUILD_TYPE="$BUILD_TYPE EPM"
9188 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9190 # Gentoo has some epm which is something different...
9191 AC_MSG_CHECKING([whether the found epm is the right epm])
9192 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9193 AC_MSG_RESULT([yes])
9195 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9197 AC_MSG_CHECKING([epm version])
9198 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9199 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9200 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9201 AC_MSG_RESULT([OK, >= 3.7])
9203 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9204 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9209 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9210 AC_MSG_CHECKING([for rpm])
9211 for a in "$RPM" rpmbuild rpm; do
9212 $a --usage >/dev/null 2> /dev/null
9213 if test $? -eq 0; then
9217 $a --version >/dev/null 2> /dev/null
9218 if test $? -eq 0; then
9224 if test -z "$RPM"; then
9225 AC_MSG_ERROR([not found])
9226 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9227 RPM_PATH=`which $RPM`
9228 AC_MSG_RESULT([$RPM_PATH])
9229 SCPDEFS="$SCPDEFS -DWITH_RPM"
9231 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9234 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9235 AC_PATH_PROG(DPKG, dpkg, no)
9236 if test "$DPKG" = "no"; then
9237 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9240 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9241 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9242 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9243 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9244 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9245 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9246 AC_MSG_RESULT([yes])
9249 if echo "$PKGFORMAT" | $GREP -q rpm; then
9251 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9252 add_warning "the rpms will need to be installed with --nodeps"
9256 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9257 add_warning "the ${_pt}s will not be relocatable"
9258 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9259 relocation will work, you need to patch your epm with the
9260 patch in epm/epm-3.7.patch or build with
9261 --with-epm=internal which will build a suitable epm])
9266 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9267 AC_PATH_PROG(PKGMK, pkgmk, no)
9268 if test "$PKGMK" = "no"; then
9269 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9276 for i in $PKGFORMAT; do
9278 bsd | deb | pkg | rpm | native | portable)
9280 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9290 if test "$enable_lotuswordpro" = "yes"; then
9293 AC_SUBST(ENABLE_LWP)
9295 dnl ===================================================================
9296 dnl Check for building ODK
9297 dnl ===================================================================
9298 AC_MSG_CHECKING([whether to build the ODK])
9299 if test "$enable_odk" = yes; then
9300 if test "$DISABLE_DYNLOADING" = TRUE; then
9301 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9303 AC_MSG_RESULT([yes])
9304 BUILD_TYPE="$BUILD_TYPE ODK"
9309 if test "$enable_odk" != yes; then
9312 if test "$with_doxygen" = no; then
9313 AC_MSG_CHECKING([for doxygen])
9317 if test "$with_doxygen" = yes; then
9318 AC_PATH_PROG([DOXYGEN], [doxygen])
9319 if test -z "$DOXYGEN"; then
9320 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9322 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9323 if ! dot -V 2>/dev/null; then
9324 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9328 AC_MSG_CHECKING([for doxygen])
9329 DOXYGEN=$with_doxygen
9330 AC_MSG_RESULT([$DOXYGEN])
9332 if test -n "$DOXYGEN"; then
9333 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9334 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9335 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9336 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9343 dnl ==================================================================
9345 dnl ==================================================================
9346 AC_MSG_CHECKING([whether to enable fuzzers])
9347 if test "$enable_fuzzers" != yes; then
9350 if test -z $LIB_FUZZING_ENGINE; then
9351 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9353 AC_MSG_RESULT([yes])
9354 ENABLE_FUZZERS="TRUE"
9355 AC_DEFINE([ENABLE_FUZZERS],1)
9356 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9358 AC_SUBST(LIB_FUZZING_ENGINE)
9360 dnl ===================================================================
9361 dnl Check for system zlib
9362 dnl ===================================================================
9363 if test "$with_system_zlib" = "auto"; then
9366 with_system_zlib="$with_system_libs"
9369 if test "$enable_fuzzers" != "yes"; then
9370 with_system_zlib=yes
9378 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9379 dnl and has no pkg-config for it at least on some tinderboxes,
9380 dnl so leaving that out for now
9381 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9382 AC_MSG_CHECKING([which zlib to use])
9383 if test "$with_system_zlib" = "yes"; then
9384 AC_MSG_RESULT([external])
9386 AC_CHECK_HEADER(zlib.h, [],
9387 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9388 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9389 [AC_MSG_ERROR(zlib not found or functional)], [])
9391 AC_MSG_RESULT([internal])
9393 BUILD_TYPE="$BUILD_TYPE ZLIB"
9394 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9395 if test "$COM" = "MSC"; then
9396 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9398 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9401 AC_SUBST(ZLIB_CFLAGS)
9403 AC_SUBST(SYSTEM_ZLIB)
9405 dnl ===================================================================
9406 dnl Check for system jpeg
9407 dnl ===================================================================
9408 AC_MSG_CHECKING([which libjpeg to use])
9409 if test "$with_system_jpeg" = "yes"; then
9410 AC_MSG_RESULT([external])
9412 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9413 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9414 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9415 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9418 AC_MSG_RESULT([internal, libjpeg-turbo])
9419 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9422 x86_64 | amd64 | i*86 | x86 | ia32)
9423 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9424 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9425 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9426 NASM="$LODE_HOME/opt/bin/nasm"
9427 elif test -x "/opt/lo/bin/nasm"; then
9428 NASM="/opt/lo/bin/nasm"
9432 if test -n "$NASM"; then
9433 AC_MSG_CHECKING([for object file format of host system])
9435 cygwin* | mingw* | pw32* | wsl*)
9445 msdosdjgpp* | go32*)
9448 os2-emx*) # not tested
9449 objfmt='MSOMF' # obj
9451 linux*coff* | linux*oldld*)
9467 kfreebsd* | freebsd* | netbsd* | openbsd*)
9468 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9481 solaris* | sunos* | sysv* | sco*)
9491 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9506 AC_MSG_RESULT([$objfmt])
9507 if test "$objfmt" = 'ELF ?'; then
9509 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9512 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9514 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9515 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9516 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9517 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9518 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9519 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9520 ELF) NAFLAGS='-felf -DELF -DPIC';;
9521 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9522 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9523 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9524 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9526 AC_MSG_RESULT([$NAFLAGS])
9528 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9529 cat > conftest.asm << EOF
9530 [%line __oline__ "configure"
9538 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9539 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9542 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9543 cat conftest.asm >&AS_MESSAGE_LOG_FD
9546 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9552 if test -z "$NASM"; then
9554 ****************************************************************************
9555 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9559 if test "$build_os" = "cygwin"; then
9561 install a pre-compiled binary for Win32
9563 mkdir -p /opt/lo/bin
9565 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9568 or get and install one from https://www.nasm.us/
9570 Then re-run autogen.sh
9572 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9573 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9578 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9582 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9583 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9591 AC_SUBST(LIBJPEG_CFLAGS)
9592 AC_SUBST(LIBJPEG_LIBS)
9593 AC_SUBST(SYSTEM_LIBJPEG)
9595 dnl ===================================================================
9596 dnl Check for system clucene
9597 dnl ===================================================================
9598 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9599 if test "$SYSTEM_CLUCENE" = TRUE; then
9601 save_CXXFLAGS=$CXXFLAGS
9602 save_CPPFLAGS=$CPPFLAGS
9603 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9604 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9605 dnl https://sourceforge.net/p/clucene/bugs/200/
9606 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9607 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9608 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9609 CXXFLAGS=$save_CXXFLAGS
9610 CPPFLAGS=$save_CPPFLAGS
9612 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9615 dnl ===================================================================
9616 dnl Check for system expat
9617 dnl ===================================================================
9618 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9620 dnl ===================================================================
9621 dnl Check for system xmlsec
9622 dnl ===================================================================
9623 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9625 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9626 if test "$enable_eot" = "yes"; then
9628 AC_DEFINE([ENABLE_EOT])
9629 AC_MSG_RESULT([yes])
9631 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9636 AC_SUBST([ENABLE_EOT])
9638 dnl ===================================================================
9639 dnl Check for DLP libs
9640 dnl ===================================================================
9641 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9642 AS_IF([test "$COM" = "MSC"],
9643 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9644 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9646 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9647 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9649 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9651 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9653 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9654 AS_IF([test "$COM" = "MSC"],
9655 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9656 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9658 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9659 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9661 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9663 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9664 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9666 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9668 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9670 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9672 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9673 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9675 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9676 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9678 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9680 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9681 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9683 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9685 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9687 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9689 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9691 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9692 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9694 dnl ===================================================================
9695 dnl Check for system lcms2
9696 dnl ===================================================================
9697 if test "$with_system_lcms2" != "yes"; then
9700 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9701 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9702 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9703 if test "$GCC" = "yes"; then
9704 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9706 if test "$COM" = "MSC"; then # override the above
9707 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9710 dnl ===================================================================
9711 dnl Check for system cppunit
9712 dnl ===================================================================
9713 if test "$_os" != "Android" ; then
9714 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9717 dnl ===================================================================
9718 dnl Check whether freetype is available
9720 dnl FreeType has 3 different kinds of versions
9721 dnl * release, like 2.4.10
9722 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9724 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9727 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9728 dnl ===================================================================
9729 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9730 if test "x$ac_config_site_64bit_host" = xYES; then
9731 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9733 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9735 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9737 # ===================================================================
9738 # Check for system libxslt
9739 # to prevent incompatibilities between internal libxml2 and external libxslt,
9740 # or vice versa, use with_system_libxml here
9741 # ===================================================================
9742 if test "$with_system_libxml" = "auto"; then
9745 with_system_libxml="$with_system_libs"
9748 with_system_libxml=no
9751 if test "$enable_fuzzers" != "yes"; then
9752 with_system_libxml=yes
9754 with_system_libxml=no
9760 AC_MSG_CHECKING([which libxslt to use])
9761 if test "$with_system_libxml" = "yes"; then
9762 AC_MSG_RESULT([external])
9764 if test "$_os" = "Darwin"; then
9765 dnl make sure to use SDK path
9766 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9767 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9769 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9770 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9772 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9773 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9774 FilterLibs "${LIBXSLT_LIBS}"
9775 LIBXSLT_LIBS="${filteredlibs}"
9776 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9777 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9778 FilterLibs "${LIBEXSLT_LIBS}"
9779 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9782 dnl Check for xsltproc
9783 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9784 if test "$XSLTPROC" = "no"; then
9785 AC_MSG_ERROR([xsltproc is required])
9788 AC_MSG_RESULT([internal])
9790 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9792 AC_SUBST(SYSTEM_LIBXSLT)
9793 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9794 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9796 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9798 AC_SUBST(LIBEXSLT_CFLAGS)
9799 AC_SUBST(LIBEXSLT_LIBS)
9800 AC_SUBST(LIBXSLT_CFLAGS)
9801 AC_SUBST(LIBXSLT_LIBS)
9804 # ===================================================================
9805 # Check for system libxml
9806 # ===================================================================
9807 AC_MSG_CHECKING([which libxml to use])
9808 if test "$with_system_libxml" = "yes"; then
9809 AC_MSG_RESULT([external])
9811 if test "$_os" = "Darwin"; then
9812 dnl make sure to use SDK path
9813 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9815 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9816 elif test $_os = iOS; then
9817 dnl make sure to use SDK path
9818 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9819 LIBXML_CFLAGS="-I$usr/include/libxml2"
9820 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9822 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9823 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9824 FilterLibs "${LIBXML_LIBS}"
9825 LIBXML_LIBS="${filteredlibs}"
9828 dnl Check for xmllint
9829 AC_PATH_PROG(XMLLINT, xmllint, no)
9830 if test "$XMLLINT" = "no"; then
9831 AC_MSG_ERROR([xmllint is required])
9834 AC_MSG_RESULT([internal])
9836 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9837 if test "$COM" = "MSC"; then
9838 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9840 if test "$COM" = "MSC"; then
9841 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9843 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9844 if test "$DISABLE_DYNLOADING" = TRUE; then
9845 LIBXML_LIBS="$LIBXML_LIBS -lm"
9848 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9850 AC_SUBST(SYSTEM_LIBXML)
9851 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9852 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9854 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9855 AC_SUBST(LIBXML_CFLAGS)
9856 AC_SUBST(LIBXML_LIBS)
9859 # =====================================================================
9860 # Checking for a Python interpreter with version >= 3.3.
9861 # Optionally user can pass an option to configure, i. e.
9862 # ./configure PYTHON=/usr/bin/python
9863 # =====================================================================
9864 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9865 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9866 # unless PYTHON is defined as above which allows 'system'
9867 enable_python=internal
9869 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9870 if test -n "$PYTHON"; then
9871 PYTHON_FOR_BUILD=$PYTHON
9873 # This allows a lack of system python with no error, we use internal one in that case.
9874 AM_PATH_PYTHON([3.3],, [:])
9875 # Clean PYTHON_VERSION checked below if cross-compiling
9877 if test "$PYTHON" != ":"; then
9878 PYTHON_FOR_BUILD=$PYTHON
9883 # Checks for Python to use for Pyuno
9884 AC_MSG_CHECKING([which Python to use for Pyuno])
9885 case "$enable_python" in
9887 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9888 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9889 # requirement from the choice whether to include Python stuff in the installer, but why
9891 AC_MSG_ERROR([Python is required at build time.])
9894 AC_MSG_RESULT([none])
9897 if test "$DISABLE_SCRIPTING" = TRUE; then
9898 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9899 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9901 AC_MSG_RESULT([none, overridden by --disable-scripting])
9903 elif test $build_os = cygwin -o $build_os = wsl; then
9904 dnl When building on Windows we don't attempt to use any installed
9905 dnl "system" Python.
9906 AC_MSG_RESULT([fully internal])
9907 enable_python=internal
9908 elif test "$cross_compiling" = yes; then
9909 AC_MSG_RESULT([system])
9910 enable_python=system
9912 # Unset variables set by the above AM_PATH_PYTHON so that
9913 # we actually do check anew.
9915 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
9916 AM_PATH_PYTHON([3.3],, [:])
9917 AC_MSG_CHECKING([which Python to use for Pyuno])
9918 if test "$PYTHON" = ":"; then
9919 if test -z "$PYTHON_FOR_BUILD"; then
9920 AC_MSG_RESULT([fully internal])
9922 AC_MSG_RESULT([internal])
9924 enable_python=internal
9926 AC_MSG_RESULT([system])
9927 enable_python=system
9932 AC_MSG_RESULT([internal])
9935 AC_MSG_RESULT([fully internal])
9936 enable_python=internal
9939 AC_MSG_RESULT([system])
9940 if test "$_os" = Darwin -a -z "$PYTHON"; then
9941 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9945 AC_MSG_ERROR([Incorrect --enable-python option])
9949 if test $enable_python != no; then
9950 BUILD_TYPE="$BUILD_TYPE PYUNO"
9953 if test $enable_python = system; then
9954 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9955 # Fallback: Accept these in the environment, or as set above
9958 elif test "$cross_compiling" != yes; then
9959 # Unset variables set by the above AM_PATH_PYTHON so that
9960 # we actually do check anew.
9961 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
9962 # This causes an error if no python command is found
9963 AM_PATH_PYTHON([3.3])
9964 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9965 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9966 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9967 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9968 if test -z "$PKG_CONFIG"; then
9969 PYTHON_CFLAGS="-I$python_include"
9970 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9971 elif $PKG_CONFIG --exists python-$python_version-embed; then
9972 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9973 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9974 elif $PKG_CONFIG --exists python-$python_version; then
9975 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9976 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9978 PYTHON_CFLAGS="-I$python_include"
9979 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9981 FilterLibs "${PYTHON_LIBS}"
9982 PYTHON_LIBS="${filteredlibs}"
9984 dnl How to find out the cross-compilation Python installation path?
9985 AC_MSG_CHECKING([for python version])
9986 AS_IF([test -n "$PYTHON_VERSION"],
9987 [AC_MSG_RESULT([$PYTHON_VERSION])],
9988 [AC_MSG_RESULT([not found])
9989 AC_MSG_ERROR([no usable python found])])
9990 test -n "$PYTHON_CFLAGS" && break
9993 dnl Check if the headers really work
9994 save_CPPFLAGS="$CPPFLAGS"
9995 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9996 AC_CHECK_HEADER(Python.h)
9997 CPPFLAGS="$save_CPPFLAGS"
9999 # let the PYTHON_FOR_BUILD match the same python installation that
10000 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10001 # better for PythonTests.
10002 PYTHON_FOR_BUILD=$PYTHON
10005 if test "$with_lxml" != no; then
10006 if test -z "$PYTHON_FOR_BUILD"; then
10009 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10012 if test "$cross_compiling" != yes ; then
10013 BUILD_TYPE="$BUILD_TYPE LXML"
10018 AC_MSG_CHECKING([for python lxml])
10019 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10020 AC_MSG_RESULT([yes])
10024 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10027 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10028 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10029 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10031 BUILD_TYPE="$BUILD_TYPE LXML"
10032 AC_MSG_RESULT([no, using internal lxml])
10035 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10043 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10045 PYTHON_VERSION_MAJOR=3
10046 PYTHON_VERSION_MINOR=8
10047 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
10048 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10049 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10051 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10053 # Embedded Python dies without Home set
10054 if test "$HOME" = ""; then
10059 dnl By now enable_python should be "system", "internal" or "no"
10060 case $enable_python in
10064 if test "x$ac_cv_header_Python_h" != "xyes"; then
10065 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10069 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10070 AC_MSG_CHECKING([for correct python library version])
10071 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10072 #include <Python.h>
10074 int main(int argc, char **argv) {
10075 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10078 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10081 dnl FIXME Check if the Python library can be linked with, too?
10085 BUILD_TYPE="$BUILD_TYPE PYTHON"
10086 if test "$OS" = LINUX -o "$OS" = WNT ; then
10087 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10091 DISABLE_PYTHON=TRUE
10095 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10099 AC_SUBST(DISABLE_PYTHON)
10100 AC_SUBST(SYSTEM_PYTHON)
10101 AC_SUBST(PYTHON_CFLAGS)
10102 AC_SUBST(PYTHON_FOR_BUILD)
10103 AC_SUBST(PYTHON_LIBS)
10104 AC_SUBST(PYTHON_VERSION)
10105 AC_SUBST(PYTHON_VERSION_MAJOR)
10106 AC_SUBST(PYTHON_VERSION_MINOR)
10108 AC_MSG_CHECKING([whether to build LibreLogo])
10109 case "$enable_python" in
10111 AC_MSG_RESULT([no; Python disabled])
10114 if test "${enable_librelogo}" = "no"; then
10115 AC_MSG_RESULT([no])
10117 AC_MSG_RESULT([yes])
10118 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10119 AC_DEFINE([ENABLE_LIBRELOGO],1)
10123 AC_SUBST(ENABLE_LIBRELOGO)
10129 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10130 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10131 ENABLE_MARIADBC=TRUE
10132 AC_MSG_RESULT([yes])
10133 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10135 AC_MSG_RESULT([no])
10137 AC_SUBST(ENABLE_MARIADBC)
10138 AC_SUBST(MARIADBC_MAJOR)
10139 AC_SUBST(MARIADBC_MINOR)
10140 AC_SUBST(MARIADBC_MICRO)
10142 if test "$ENABLE_MARIADBC" = "TRUE"; then
10143 dnl ===================================================================
10144 dnl Check for system MariaDB
10145 dnl ===================================================================
10146 AC_MSG_CHECKING([which MariaDB to use])
10147 if test "$with_system_mariadb" = "yes"; then
10148 AC_MSG_RESULT([external])
10149 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10150 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10151 if test -z "$MARIADBCONFIG"; then
10152 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10153 if test -z "$MARIADBCONFIG"; then
10154 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10155 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10158 AC_MSG_CHECKING([MariaDB version])
10159 MARIADB_VERSION=`$MARIADBCONFIG --version`
10160 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10161 if test "$MARIADB_MAJOR" -ge "5"; then
10162 AC_MSG_RESULT([OK])
10164 AC_MSG_ERROR([too old, use 5.0.x or later])
10166 AC_MSG_CHECKING([for MariaDB Client library])
10167 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10168 if test "$COM_IS_CLANG" = TRUE; then
10169 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10171 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10172 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10173 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10175 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10176 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10177 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10178 | sed -e 's|/lib64/|/lib/|')
10180 FilterLibs "${MARIADB_LIBS}"
10181 MARIADB_LIBS="${filteredlibs}"
10182 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10183 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10184 if test "$enable_bundle_mariadb" = "yes"; then
10185 AC_MSG_RESULT([yes])
10186 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10187 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10189 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10191 /g' | grep -E '(mysqlclient|mariadb)')
10192 if test "$_os" = "Darwin"; then
10193 LIBMARIADB=${LIBMARIADB}.dylib
10194 elif test "$_os" = "WINNT"; then
10195 LIBMARIADB=${LIBMARIADB}.dll
10197 LIBMARIADB=${LIBMARIADB}.so
10199 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10200 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10201 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10202 AC_MSG_RESULT([found.])
10203 PathFormat "$LIBMARIADB_PATH"
10204 LIBMARIADB_PATH="$formatted_path"
10206 AC_MSG_ERROR([not found.])
10209 AC_MSG_RESULT([no])
10210 BUNDLE_MARIADB_CONNECTOR_C=
10213 AC_MSG_RESULT([internal])
10214 SYSTEM_MARIADB_CONNECTOR_C=
10215 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10216 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10217 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10220 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10221 AC_SUBST(MARIADB_CFLAGS)
10222 AC_SUBST(MARIADB_LIBS)
10223 AC_SUBST(LIBMARIADB)
10224 AC_SUBST(LIBMARIADB_PATH)
10225 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10228 dnl ===================================================================
10229 dnl Check for system hsqldb
10230 dnl ===================================================================
10231 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10232 AC_MSG_CHECKING([which hsqldb to use])
10233 if test "$with_system_hsqldb" = "yes"; then
10234 AC_MSG_RESULT([external])
10236 if test -z $HSQLDB_JAR; then
10237 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10239 if ! test -f $HSQLDB_JAR; then
10240 AC_MSG_ERROR(hsqldb.jar not found.)
10242 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10246 my $file = "$ENV{'HSQLDB_JAR'}";
10247 my $zip = Archive::Zip->new( $file );
10248 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10249 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10251 push @l, split(/\n/, $mf);
10252 foreach my $line (@l)
10254 if ($line =~ m/Specification-Version:/)
10256 ($t, $version) = split (/:/,$line);
10257 $version =~ s/^\s//;
10258 ($a, $b, $c, $d) = split (/\./,$version);
10259 if ($c == "0" && $d > "8")
10274 AC_MSG_RESULT([yes])
10276 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10279 AC_MSG_RESULT([internal])
10281 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10285 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10286 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10289 AC_SUBST(SYSTEM_HSQLDB)
10290 AC_SUBST(HSQLDB_JAR)
10292 dnl ===================================================================
10293 dnl Check for PostgreSQL stuff
10294 dnl ===================================================================
10295 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10296 if test "x$enable_postgresql_sdbc" != "xno"; then
10297 AC_MSG_RESULT([yes])
10298 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10300 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10301 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10303 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10304 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10307 postgres_interface=""
10308 if test "$with_system_postgresql" = "yes"; then
10309 postgres_interface="external PostgreSQL"
10310 SYSTEM_POSTGRESQL=TRUE
10311 if test "$_os" = Darwin; then
10313 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10314 pg_supp_path="$P_SEP$d$pg_supp_path"
10317 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10318 if test -n "$PGCONFIG"; then
10319 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10320 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10322 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10323 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10324 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10326 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10329 FilterLibs "${POSTGRESQL_LIB}"
10330 POSTGRESQL_LIB="${filteredlibs}"
10332 # if/when anything else than PostgreSQL uses Kerberos,
10333 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10338 # macOS has system MIT Kerberos 5 since 10.4
10339 if test "$with_krb5" != "no"; then
10342 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10343 # that the libraries where these functions are located on macOS will change, is it?
10344 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10345 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10348 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10349 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10350 KRB5_LIBS="$KRB5_LIBS $LIBS"
10353 if test "$with_gssapi" != "no"; then
10356 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10357 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10363 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10364 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10367 Linux|GNU|*BSD|DragonFly)
10368 if test "$with_krb5" != "no"; then
10371 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10372 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10375 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10376 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10377 KRB5_LIBS="$KRB5_LIBS $LIBS"
10380 if test "$with_gssapi" != "no"; then
10383 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10384 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10390 if test "$with_krb5" = "yes"; then
10393 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10394 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10397 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10398 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10399 KRB5_LIBS="$KRB5_LIBS $LIBS"
10402 if test "$with_gssapi" = "yes"; then
10405 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10406 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10412 if test -n "$with_libpq_path"; then
10413 SYSTEM_POSTGRESQL=TRUE
10414 postgres_interface="external libpq"
10415 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10416 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10419 postgres_interface="internal"
10421 POSTGRESQL_INC="%OVERRIDE_ME%"
10422 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10426 AC_MSG_CHECKING([PostgreSQL C interface])
10427 AC_MSG_RESULT([$postgres_interface])
10429 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10430 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10431 save_CFLAGS=$CFLAGS
10432 save_CPPFLAGS=$CPPFLAGS
10434 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10435 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10436 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10437 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10438 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10439 CFLAGS=$save_CFLAGS
10440 CPPFLAGS=$save_CPPFLAGS
10443 BUILD_POSTGRESQL_SDBC=TRUE
10445 AC_MSG_RESULT([no])
10447 AC_SUBST(WITH_KRB5)
10448 AC_SUBST(WITH_GSSAPI)
10449 AC_SUBST(GSSAPI_LIBS)
10450 AC_SUBST(KRB5_LIBS)
10451 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10452 AC_SUBST(SYSTEM_POSTGRESQL)
10453 AC_SUBST(POSTGRESQL_INC)
10454 AC_SUBST(POSTGRESQL_LIB)
10456 dnl ===================================================================
10457 dnl Check for Firebird stuff
10458 dnl ===================================================================
10459 ENABLE_FIREBIRD_SDBC=
10460 if test "$enable_firebird_sdbc" = "yes" ; then
10461 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10463 dnl ===================================================================
10464 dnl Check for system Firebird
10465 dnl ===================================================================
10466 AC_MSG_CHECKING([which Firebird to use])
10467 if test "$with_system_firebird" = "yes"; then
10468 AC_MSG_RESULT([external])
10469 SYSTEM_FIREBIRD=TRUE
10470 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10471 if test -z "$FIREBIRDCONFIG"; then
10472 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10473 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10474 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10476 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10478 AC_MSG_NOTICE([fb_config found])
10479 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10480 AC_MSG_CHECKING([for Firebird Client library])
10481 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10482 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10483 FilterLibs "${FIREBIRD_LIBS}"
10484 FIREBIRD_LIBS="${filteredlibs}"
10486 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10487 AC_MSG_CHECKING([Firebird version])
10488 if test -n "${FIREBIRD_VERSION}"; then
10489 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10490 if test "$FIREBIRD_MAJOR" -ge "3"; then
10491 AC_MSG_RESULT([OK])
10493 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10496 save_CFLAGS="${CFLAGS}"
10497 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10498 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10499 #if defined(FB_API_VER) && FB_API_VER == 30
10500 int fb_api_is_30(void) { return 0; }
10502 #error "Wrong Firebird API version"
10503 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10504 CFLAGS="$save_CFLAGS"
10506 ENABLE_FIREBIRD_SDBC=TRUE
10507 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10508 elif test "$enable_database_connectivity" = no; then
10509 AC_MSG_RESULT([none])
10510 elif test "$cross_compiling" = "yes"; then
10511 AC_MSG_RESULT([none])
10513 dnl Embedded Firebird has version 3.0
10514 dnl We need libatomic_ops for any non X86/X64 system
10515 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10516 dnl ===================================================================
10517 dnl Check for system libatomic_ops
10518 dnl ===================================================================
10519 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10520 if test "$with_system_libatomic_ops" = "yes"; then
10521 SYSTEM_LIBATOMIC_OPS=TRUE
10522 AC_CHECK_HEADERS(atomic_ops.h, [],
10523 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10525 SYSTEM_LIBATOMIC_OPS=
10526 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10527 LIBATOMIC_OPS_LIBS="-latomic_ops"
10528 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10532 AC_MSG_RESULT([internal])
10534 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10535 FIREBIRD_LIBS="-lfbclient"
10537 if test "$with_system_libtommath" = "yes"; then
10538 SYSTEM_LIBTOMMATH=TRUE
10539 dnl check for tommath presence
10541 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10542 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10546 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10547 LIBTOMMATH_LIBS="-ltommath"
10548 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10551 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10552 ENABLE_FIREBIRD_SDBC=TRUE
10553 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10556 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10557 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10558 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10559 AC_SUBST(LIBATOMIC_OPS_LIBS)
10560 AC_SUBST(SYSTEM_FIREBIRD)
10561 AC_SUBST(FIREBIRD_CFLAGS)
10562 AC_SUBST(FIREBIRD_LIBS)
10563 AC_SUBST(SYSTEM_LIBTOMMATH)
10564 AC_SUBST(LIBTOMMATH_CFLAGS)
10565 AC_SUBST(LIBTOMMATH_LIBS)
10567 dnl ===================================================================
10568 dnl Check for system curl
10569 dnl ===================================================================
10570 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10572 dnl ===================================================================
10573 dnl Check for system boost
10574 dnl ===================================================================
10575 AC_MSG_CHECKING([which boost to use])
10576 if test "$with_system_boost" = "yes"; then
10577 AC_MSG_RESULT([external])
10579 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10581 AX_BOOST_FILESYSTEM
10584 AC_LANG_PUSH([C++])
10585 save_CXXFLAGS=$CXXFLAGS
10586 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10587 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10588 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10589 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10590 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10591 CXXFLAGS=$save_CXXFLAGS
10593 # this is in m4/ax_boost_base.m4
10594 FilterLibs "${BOOST_LDFLAGS}"
10595 BOOST_LDFLAGS="${filteredlibs}"
10597 AC_MSG_RESULT([internal])
10598 BUILD_TYPE="$BUILD_TYPE BOOST"
10600 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10601 # use warning-suppressing wrapper headers
10602 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10604 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10607 AC_SUBST(SYSTEM_BOOST)
10609 dnl ===================================================================
10610 dnl Check for system mdds
10611 dnl ===================================================================
10612 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10613 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10615 dnl ===================================================================
10616 dnl Check for system dragonbox
10617 dnl ===================================================================
10618 AC_MSG_CHECKING([which dragonbox to use])
10619 if test "$with_system_dragonbox" = "yes"; then
10620 AC_MSG_RESULT([external])
10621 SYSTEM_DRAGONBOX=TRUE
10622 AC_LANG_PUSH([C++])
10623 save_CPPFLAGS=$CPPFLAGS
10624 # This is where upstream installs to, unfortunately no .pc or so...
10625 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10626 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10627 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10628 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10630 CPPFLAGS=$save_CPPFLAGS
10632 AC_MSG_RESULT([internal])
10633 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10636 AC_SUBST([SYSTEM_DRAGONBOX])
10637 AC_SUBST([DRAGONBOX_CFLAGS])
10639 dnl ===================================================================
10640 dnl Check for system frozen
10641 dnl ===================================================================
10642 AC_MSG_CHECKING([which frozen to use])
10643 if test "$with_system_frozen" = "yes"; then
10644 AC_MSG_RESULT([external])
10646 AC_LANG_PUSH([C++])
10647 save_CPPFLAGS=$CPPFLAGS
10648 AC_CHECK_HEADER([frozen/unordered_map.h], [],
10649 [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10651 CPPFLAGS=$save_CPPFLAGS
10653 AC_MSG_RESULT([internal])
10654 BUILD_TYPE="$BUILD_TYPE FROZEN"
10657 AC_SUBST([SYSTEM_FROZEN])
10658 AC_SUBST([FROZEN_CFLAGS])
10660 dnl ===================================================================
10661 dnl Check for system libfixmath
10662 dnl ===================================================================
10663 AC_MSG_CHECKING([which libfixmath to use])
10664 if test "$with_system_libfixmath" = "yes"; then
10665 AC_MSG_RESULT([external])
10666 SYSTEM_LIBFIXMATH=TRUE
10667 AC_LANG_PUSH([C++])
10668 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10669 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10670 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10673 AC_MSG_RESULT([internal])
10676 AC_SUBST([SYSTEM_LIBFIXMATH])
10678 dnl ===================================================================
10679 dnl Check for system glm
10680 dnl ===================================================================
10681 AC_MSG_CHECKING([which glm to use])
10682 if test "$with_system_glm" = "yes"; then
10683 AC_MSG_RESULT([external])
10685 AC_LANG_PUSH([C++])
10686 AC_CHECK_HEADER([glm/glm.hpp], [],
10687 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10690 AC_MSG_RESULT([internal])
10691 BUILD_TYPE="$BUILD_TYPE GLM"
10693 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10695 AC_SUBST([GLM_CFLAGS])
10696 AC_SUBST([SYSTEM_GLM])
10698 dnl ===================================================================
10699 dnl Check for system odbc
10700 dnl ===================================================================
10701 AC_MSG_CHECKING([which odbc headers to use])
10702 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
10703 AC_MSG_RESULT([external])
10704 SYSTEM_ODBC_HEADERS=TRUE
10706 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10707 save_CPPFLAGS=$CPPFLAGS
10709 PathFormat "$winsdktest"
10710 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"
10711 AC_CHECK_HEADER(sqlext.h, [],
10712 [AC_MSG_ERROR(odbc not found. install odbc)],
10713 [#include <windows.h>])
10714 CPPFLAGS=$save_CPPFLAGS
10716 AC_CHECK_HEADER(sqlext.h, [],
10717 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10719 elif test "$enable_database_connectivity" = no; then
10720 AC_MSG_RESULT([none])
10722 AC_MSG_RESULT([internal])
10723 SYSTEM_ODBC_HEADERS=
10725 AC_SUBST(SYSTEM_ODBC_HEADERS)
10727 dnl ===================================================================
10728 dnl Check for system NSS
10729 dnl ===================================================================
10730 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10731 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10732 AC_DEFINE(HAVE_FEATURE_NSS)
10734 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10737 AC_SUBST(ENABLE_NSS)
10739 dnl ===================================================================
10740 dnl Enable LDAP support
10741 dnl ===================================================================
10743 if test "$test_openldap" = yes; then
10744 AC_MSG_CHECKING([whether to enable LDAP support])
10745 if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10746 AC_MSG_RESULT([yes])
10749 if test "$enable_ldap" != "yes"; then
10750 AC_MSG_RESULT([no])
10752 AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10756 dnl ===================================================================
10757 dnl Check for system openldap
10758 dnl ===================================================================
10760 if test "$ENABLE_LDAP" = TRUE; then
10761 AC_MSG_CHECKING([which openldap library to use])
10762 if test "$with_system_openldap" = yes; then
10763 AC_MSG_RESULT([external])
10764 SYSTEM_OPENLDAP=TRUE
10765 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10766 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10767 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10769 AC_MSG_RESULT([internal])
10770 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10775 AC_SUBST(ENABLE_LDAP)
10776 AC_SUBST(SYSTEM_OPENLDAP)
10778 dnl ===================================================================
10779 dnl Check for TLS/SSL and cryptographic implementation to use
10780 dnl ===================================================================
10781 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10782 if test -n "$with_tls"; then
10785 AC_DEFINE(USE_TLS_OPENSSL)
10787 AC_MSG_RESULT([$TLS])
10789 if test "$enable_openssl" != "yes"; then
10790 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10793 # warn that OpenSSL has been selected but not all TLS code has this option
10794 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10795 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10798 AC_DEFINE(USE_TLS_NSS)
10800 AC_MSG_RESULT([$TLS])
10803 AC_MSG_RESULT([none])
10804 AC_MSG_WARN([Skipping TLS/SSL])
10808 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10810 nss - Mozilla's Network Security Services (NSS)
10815 # default to using NSS, it results in smaller oox lib
10816 AC_DEFINE(USE_TLS_NSS)
10818 AC_MSG_RESULT([$TLS])
10822 dnl ===================================================================
10823 dnl Check for system sane
10824 dnl ===================================================================
10825 AC_MSG_CHECKING([which sane header to use])
10826 if test "$with_system_sane" = "yes"; then
10827 AC_MSG_RESULT([external])
10828 AC_CHECK_HEADER(sane/sane.h, [],
10829 [AC_MSG_ERROR(sane not found. install sane)], [])
10831 AC_MSG_RESULT([internal])
10832 BUILD_TYPE="$BUILD_TYPE SANE"
10835 dnl ===================================================================
10836 dnl Check for system icu
10837 dnl ===================================================================
10840 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10841 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10842 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10843 if test "$SYSTEM_ICU" = TRUE; then
10844 AC_LANG_PUSH([C++])
10845 AC_MSG_CHECKING([for unicode/rbbi.h])
10846 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10849 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10850 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10851 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10853 if test "$CROSS_COMPILING" != TRUE; then
10854 # using the system icu tools can lead to version confusion, use the
10855 # ones from the build environment when cross-compiling
10856 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10857 if test -z "$SYSTEM_GENBRK"; then
10858 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10860 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10861 if test -z "$SYSTEM_GENCCODE"; then
10862 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10864 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10865 if test -z "$SYSTEM_GENCMN"; then
10866 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10871 AC_SUBST(SYSTEM_GENBRK)
10872 AC_SUBST(SYSTEM_GENCCODE)
10873 AC_SUBST(SYSTEM_GENCMN)
10874 AC_SUBST(ICU_MAJOR)
10875 AC_SUBST(ICU_MINOR)
10877 dnl ==================================================================
10879 dnl ==================================================================
10880 if test "$enable_curl" == "yes"; then
10881 AC_DEFINE([HAVE_FEATURE_CURL])
10884 dnl ==================================================================
10886 dnl ==================================================================
10887 DEFAULT_CRASHDUMP_VALUE="true"
10888 AC_MSG_CHECKING([whether to enable breakpad])
10889 if test "$enable_breakpad" != yes; then
10890 AC_MSG_RESULT([no])
10892 if test "$enable_curl" != "yes"; then
10893 AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10895 AC_MSG_RESULT([yes])
10896 ENABLE_BREAKPAD="TRUE"
10897 AC_DEFINE(ENABLE_BREAKPAD)
10898 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10899 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10901 AC_MSG_CHECKING([for disable crash dump])
10902 if test "$enable_crashdump" = no; then
10903 DEFAULT_CRASHDUMP_VALUE="false"
10904 AC_MSG_RESULT([yes])
10906 AC_MSG_RESULT([no])
10909 AC_MSG_CHECKING([for crashreport config])
10910 if test "$with_symbol_config" = "no"; then
10911 BREAKPAD_SYMBOL_CONFIG="invalid"
10912 AC_MSG_RESULT([no])
10914 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10915 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10916 AC_MSG_RESULT([yes])
10918 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10920 AC_SUBST(ENABLE_BREAKPAD)
10921 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10923 dnl ==================================================================
10925 dnl ==================================================================
10926 if test "$enable_libcmis" == "yes"; then
10927 if test "$enable_curl" != "yes"; then
10928 AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10932 dnl ===================================================================
10934 dnl ===================================================================
10935 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10936 if test "$with_system_orcus" != "yes"; then
10937 if test "$SYSTEM_BOOST" = "TRUE"; then
10938 dnl Link with Boost.System
10939 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10940 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10941 dnl in documentation has no effect.
10945 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10946 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10947 AC_SUBST([BOOST_SYSTEM_LIB])
10948 AC_SUBST(SYSTEM_LIBORCUS)
10950 dnl ===================================================================
10952 dnl ===================================================================
10953 harfbuzz_required_version=5.1.0
10955 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10956 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10959 GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10960 HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10963 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10964 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10967 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10968 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10970 if test "$COM" = "MSC"; then # override the above
10971 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10972 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10975 if test "$with_system_harfbuzz" = "yes"; then
10976 if test "$with_system_graphite" = "no"; then
10977 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10979 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10981 save_CFLAGS="$CFLAGS"
10982 LIBS="$LIBS $HARFBUZZ_LIBS"
10983 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10984 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10986 CFLAGS="$save_CFLAGS"
10988 if test "$with_system_graphite" = "yes"; then
10989 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10993 if test "$USING_X11" = TRUE; then
10996 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10998 if test -z "$x_includes"; then
10999 x_includes="default_x_includes"
11001 if test -z "$x_libraries"; then
11002 x_libraries="default_x_libraries"
11004 CFLAGS="$CFLAGS $X_CFLAGS"
11005 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11006 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11008 x_includes="no_x_includes"
11009 x_libraries="no_x_libraries"
11012 if test "$USING_X11" = TRUE; then
11013 dnl ===================================================================
11014 dnl Check for extension headers
11015 dnl ===================================================================
11016 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11017 [#include <X11/extensions/shape.h>])
11019 # vcl needs ICE and SM
11020 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11021 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11022 [AC_MSG_ERROR(ICE library not found)])
11023 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11024 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11025 [AC_MSG_ERROR(SM library not found)])
11028 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11029 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11030 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11033 dnl ===================================================================
11034 dnl Check for system Xrender
11035 dnl ===================================================================
11036 AC_MSG_CHECKING([whether to use Xrender])
11037 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11038 AC_MSG_RESULT([yes])
11039 PKG_CHECK_MODULES(XRENDER, xrender)
11040 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11041 FilterLibs "${XRENDER_LIBS}"
11042 XRENDER_LIBS="${filteredlibs}"
11043 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11044 [AC_MSG_ERROR(libXrender not found or functional)], [])
11045 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11046 [AC_MSG_ERROR(Xrender not found. install X)], [])
11048 AC_MSG_RESULT([no])
11050 AC_SUBST(XRENDER_CFLAGS)
11051 AC_SUBST(XRENDER_LIBS)
11053 dnl ===================================================================
11054 dnl Check for XRandr
11055 dnl ===================================================================
11056 AC_MSG_CHECKING([whether to enable RandR support])
11057 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11058 AC_MSG_RESULT([yes])
11059 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11060 if test "$ENABLE_RANDR" != "TRUE"; then
11061 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11062 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11064 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11065 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11066 XRANDR_LIBS="-lXrandr "
11067 ENABLE_RANDR="TRUE"
11069 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11070 FilterLibs "${XRANDR_LIBS}"
11071 XRANDR_LIBS="${filteredlibs}"
11074 AC_MSG_RESULT([no])
11076 AC_SUBST(XRANDR_CFLAGS)
11077 AC_SUBST(XRANDR_LIBS)
11078 AC_SUBST(ENABLE_RANDR)
11080 if test -z "$with_webdav"; then
11081 with_webdav=$test_webdav
11084 AC_MSG_CHECKING([for WebDAV support])
11085 case "$with_webdav" in
11087 AC_MSG_RESULT([no])
11091 AC_MSG_RESULT([yes])
11092 # curl is already mandatory (almost) and checked elsewhere
11093 if test "$enable_curl" = "no"; then
11094 AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11099 AC_SUBST(WITH_WEBDAV)
11101 dnl ===================================================================
11102 dnl Check for disabling cve_tests
11103 dnl ===================================================================
11104 AC_MSG_CHECKING([whether to execute CVE tests])
11105 # If not explicitly enabled or disabled, default
11106 if test -z "$enable_cve_tests"; then
11109 # Default cves off for Windows with its wild and wonderful
11110 # variety of AV software kicking in and panicking
11111 enable_cve_tests=no
11115 enable_cve_tests=yes
11119 if test "$enable_cve_tests" = "no"; then
11120 AC_MSG_RESULT([no])
11121 DISABLE_CVE_TESTS=TRUE
11122 AC_SUBST(DISABLE_CVE_TESTS)
11124 AC_MSG_RESULT([yes])
11127 dnl ===================================================================
11128 dnl Check for system openssl
11129 dnl ===================================================================
11131 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11132 if test "$enable_openssl" = "yes"; then
11133 AC_MSG_RESULT([no])
11134 ENABLE_OPENSSL=TRUE
11135 if test "$_os" = Darwin ; then
11136 # OpenSSL is deprecated when building for 10.7 or later.
11138 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11139 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11141 with_system_openssl=no
11142 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11143 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11144 && test "$with_system_openssl" != "no"; then
11145 with_system_openssl=yes
11146 SYSTEM_OPENSSL=TRUE
11148 OPENSSL_LIBS="-lssl -lcrypto"
11150 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11151 if test -n "${SYSTEM_OPENSSL}"; then
11152 AC_DEFINE([SYSTEM_OPENSSL])
11155 if test "$with_system_openssl" = "yes"; then
11156 AC_MSG_CHECKING([whether openssl supports SHA512])
11158 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11159 SHA512_CTX context;
11160 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11164 AC_MSG_RESULT([yes])
11166 # warn that although OpenSSL is disabled, system libraries may depend on it
11167 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11168 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11171 AC_SUBST([ENABLE_OPENSSL])
11173 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11174 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11175 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11176 enable_cipher_openssl_backend=no
11178 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11181 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11182 ENABLE_CIPHER_OPENSSL_BACKEND=
11183 if test "$enable_cipher_openssl_backend" = yes; then
11184 AC_MSG_RESULT([yes])
11185 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11187 AC_MSG_RESULT([no])
11189 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11191 dnl ===================================================================
11192 dnl Select the crypto backends used by LO
11193 dnl ===================================================================
11195 if test "$build_crypto" = yes; then
11196 if test "$OS" = WNT; then
11197 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11198 AC_DEFINE([USE_CRYPTO_MSCAPI])
11199 elif test "$ENABLE_NSS" = TRUE; then
11200 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11201 AC_DEFINE([USE_CRYPTO_NSS])
11205 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11206 if test "$COM" = "MSC"; then
11207 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11209 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11211 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11213 dnl ===================================================================
11214 dnl Check for system redland
11215 dnl ===================================================================
11216 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11217 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11218 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11219 if test "$with_system_redland" = "yes"; then
11220 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11221 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11227 AC_SUBST(RAPTOR_MAJOR)
11228 AC_SUBST(RASQAL_MAJOR)
11229 AC_SUBST(REDLAND_MAJOR)
11231 dnl ===================================================================
11232 dnl Check for system hunspell
11233 dnl ===================================================================
11234 AC_MSG_CHECKING([which libhunspell to use])
11235 if test "$with_system_hunspell" = "yes"; then
11236 AC_MSG_RESULT([external])
11237 SYSTEM_HUNSPELL=TRUE
11238 AC_LANG_PUSH([C++])
11239 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11240 if test "$HUNSPELL_PC" != "TRUE"; then
11241 AC_CHECK_HEADER(hunspell.hxx, [],
11243 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11244 [AC_MSG_ERROR(hunspell headers not found.)], [])
11246 AC_CHECK_LIB([hunspell], [main], [:],
11247 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11248 HUNSPELL_LIBS=-lhunspell
11251 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11252 FilterLibs "${HUNSPELL_LIBS}"
11253 HUNSPELL_LIBS="${filteredlibs}"
11255 AC_MSG_RESULT([internal])
11257 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11258 if test "$COM" = "MSC"; then
11259 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11261 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11263 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11265 AC_SUBST(SYSTEM_HUNSPELL)
11266 AC_SUBST(HUNSPELL_CFLAGS)
11267 AC_SUBST(HUNSPELL_LIBS)
11269 dnl ===================================================================
11270 dnl Check for system zxcvbn
11271 dnl ===================================================================
11272 AC_MSG_CHECKING([which zxcvbn to use])
11273 if test "$with_system_zxcvbn" = "yes"; then
11274 AC_MSG_RESULT([external])
11276 AC_CHECK_HEADER(zxcvbn.h, [],
11277 [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11278 AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11279 [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11281 AC_MSG_RESULT([internal])
11282 BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11285 AC_SUBST(SYSTEM_ZXCVBN)
11287 dnl ===================================================================
11288 dnl Check for system zxing
11289 dnl ===================================================================
11290 AC_MSG_CHECKING([whether to use zxing])
11291 if test "$enable_zxing" = "no"; then
11292 AC_MSG_RESULT([no])
11296 AC_MSG_RESULT([yes])
11298 AC_MSG_CHECKING([which libzxing to use])
11299 if test "$with_system_zxing" = "yes"; then
11300 AC_MSG_RESULT([external])
11303 AC_LANG_PUSH([C++])
11304 save_CXXFLAGS=$CXXFLAGS
11307 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11308 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11309 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11310 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11311 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11312 dnl unsetting IFS."):
11314 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11315 dnl ignore them here:
11316 if test -z "$i"; then
11319 dnl TODO: White space in $i would cause problems:
11320 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11321 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11322 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11324 CXXFLAGS=$save_CXXFLAGS
11325 if test -z "$ZXING_CFLAGS"; then
11326 AC_MSG_ERROR(zxing headers not found.)
11328 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11329 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11330 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11332 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11333 FilterLibs "${ZXING_LIBS}"
11334 ZXING_LIBS="${filteredlibs}"
11336 AC_MSG_RESULT([internal])
11338 BUILD_TYPE="$BUILD_TYPE ZXING"
11339 ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11341 if test "$ENABLE_ZXING" = TRUE; then
11342 AC_DEFINE(ENABLE_ZXING)
11344 AC_MSG_CHECKING([whether zxing::tosvg function is available])
11345 AC_LANG_PUSH([C++])
11346 save_CXXFLAGS=$CXXFLAGS
11347 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11348 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11349 #include <BitMatrix.h>
11350 #include <BitMatrixIO.h>
11352 ZXing::BitMatrix matrix(1, 1);
11353 matrix.set(0, 0, true);
11354 ZXing::ToSVG(matrix);
11358 AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11359 AC_MSG_RESULT([yes])
11360 ], [AC_MSG_RESULT([no])])
11361 CXXFLAGS=$save_CXXFLAGS
11363 AC_SUBST(HAVE_ZXING_TOSVG)
11365 AC_SUBST(SYSTEM_ZXING)
11366 AC_SUBST(ENABLE_ZXING)
11367 AC_SUBST(ZXING_CFLAGS)
11368 AC_SUBST(ZXING_LIBS)
11370 dnl ===================================================================
11371 dnl Check for system box2d
11372 dnl ===================================================================
11373 AC_MSG_CHECKING([which box2d to use])
11374 if test "$with_system_box2d" = "yes"; then
11375 AC_MSG_RESULT([external])
11377 AC_LANG_PUSH([C++])
11378 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11379 [BOX2D_H_FOUND='FALSE'])
11380 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11382 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11384 # fail this. there's no other alternative to check when we are here.
11385 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11386 [AC_MSG_ERROR(box2d headers not found.)])
11388 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11390 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11391 [ AC_MSG_ERROR(box2d library not found.) ], [])
11392 BOX2D_LIBS=-l$_BOX2D_LIB
11394 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11395 FilterLibs "${BOX2D_LIBS}"
11396 BOX2D_LIBS="${filteredlibs}"
11398 AC_MSG_RESULT([internal])
11400 BUILD_TYPE="$BUILD_TYPE BOX2D"
11402 AC_SUBST(SYSTEM_BOX2D)
11403 AC_SUBST(BOX2D_CFLAGS)
11404 AC_SUBST(BOX2D_LIBS)
11406 dnl ===================================================================
11407 dnl Checking for altlinuxhyph
11408 dnl ===================================================================
11409 AC_MSG_CHECKING([which altlinuxhyph to use])
11410 if test "$with_system_altlinuxhyph" = "yes"; then
11411 AC_MSG_RESULT([external])
11413 AC_CHECK_HEADER(hyphen.h, [],
11414 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11415 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11416 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11417 [#include <hyphen.h>])
11418 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11419 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11420 if test -z "$HYPHEN_LIB"; then
11421 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11422 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11424 if test -z "$HYPHEN_LIB"; then
11425 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11426 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11429 AC_MSG_RESULT([internal])
11431 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11432 if test "$COM" = "MSC"; then
11433 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11435 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11438 AC_SUBST(SYSTEM_HYPH)
11439 AC_SUBST(HYPHEN_LIB)
11441 dnl ===================================================================
11442 dnl Checking for mythes
11443 dnl ===================================================================
11444 AC_MSG_CHECKING([which mythes to use])
11445 if test "$with_system_mythes" = "yes"; then
11446 AC_MSG_RESULT([external])
11448 AC_LANG_PUSH([C++])
11449 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11450 if test "$MYTHES_PKGCONFIG" = "no"; then
11451 AC_CHECK_HEADER(mythes.hxx, [],
11452 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11453 AC_CHECK_LIB([mythes-1.2], [main], [:],
11454 [ MYTHES_FOUND=no], [])
11455 if test "$MYTHES_FOUND" = "no"; then
11456 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11457 [ MYTHES_FOUND=no], [])
11459 if test "$MYTHES_FOUND" = "no"; then
11460 AC_MSG_ERROR([mythes library not found!.])
11464 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11465 FilterLibs "${MYTHES_LIBS}"
11466 MYTHES_LIBS="${filteredlibs}"
11468 AC_MSG_RESULT([internal])
11470 BUILD_TYPE="$BUILD_TYPE MYTHES"
11471 if test "$COM" = "MSC"; then
11472 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11474 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11477 AC_SUBST(SYSTEM_MYTHES)
11478 AC_SUBST(MYTHES_CFLAGS)
11479 AC_SUBST(MYTHES_LIBS)
11481 dnl ===================================================================
11482 dnl How should we build the linear programming solver ?
11483 dnl ===================================================================
11486 AC_MSG_CHECKING([whether to build with CoinMP])
11487 if test "$enable_coinmp" != "no"; then
11489 AC_MSG_RESULT([yes])
11490 if test "$with_system_coinmp" = "yes"; then
11492 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11493 FilterLibs "${COINMP_LIBS}"
11494 COINMP_LIBS="${filteredlibs}"
11496 BUILD_TYPE="$BUILD_TYPE COINMP"
11499 AC_MSG_RESULT([no])
11501 AC_SUBST(ENABLE_COINMP)
11502 AC_SUBST(SYSTEM_COINMP)
11503 AC_SUBST(COINMP_CFLAGS)
11504 AC_SUBST(COINMP_LIBS)
11507 AC_MSG_CHECKING([whether to build with lpsolve])
11508 if test "$enable_lpsolve" != "no"; then
11509 ENABLE_LPSOLVE=TRUE
11510 AC_MSG_RESULT([yes])
11512 AC_MSG_RESULT([no])
11514 AC_SUBST(ENABLE_LPSOLVE)
11516 if test "$ENABLE_LPSOLVE" = TRUE; then
11517 AC_MSG_CHECKING([which lpsolve to use])
11518 if test "$with_system_lpsolve" = "yes"; then
11519 AC_MSG_RESULT([external])
11520 SYSTEM_LPSOLVE=TRUE
11521 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11522 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11524 # some systems need this. Like Ubuntu...
11525 AC_CHECK_LIB(m, floor)
11526 AC_CHECK_LIB(dl, dlopen)
11527 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11528 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11531 AC_MSG_RESULT([internal])
11533 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11536 AC_SUBST(SYSTEM_LPSOLVE)
11538 dnl ===================================================================
11539 dnl Checking for libexttextcat
11540 dnl ===================================================================
11541 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11542 if test "$with_system_libexttextcat" = "yes"; then
11543 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11545 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11547 dnl ===================================================================
11548 dnl Checking for libnumbertext
11549 dnl ===================================================================
11550 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11551 if test "$with_system_libnumbertext" = "yes"; then
11552 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11553 SYSTEM_LIBNUMBERTEXT=YES
11555 SYSTEM_LIBNUMBERTEXT=
11557 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11558 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11560 dnl ***************************************
11561 dnl testing libc version for Linux...
11562 dnl ***************************************
11563 if test "$_os" = "Linux"; then
11564 AC_MSG_CHECKING([whether the libc is recent enough])
11565 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11566 #include <features.h>
11567 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11568 #error glibc >= 2.1 is required
11570 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11573 dnl =========================================
11574 dnl Check for uuidgen
11575 dnl =========================================
11576 if test "$_os" = "WINNT"; then
11577 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11578 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11579 UUIDGEN=uuidgen.exe
11582 AC_PATH_PROG([UUIDGEN], [uuidgen])
11583 if test -z "$UUIDGEN"; then
11584 AC_MSG_WARN([uuid is needed for building installation sets])
11588 dnl ***************************************
11589 dnl Checking for bison and flex
11590 dnl ***************************************
11591 AC_PATH_PROG(BISON, bison)
11592 if test -z "$BISON"; then
11593 AC_MSG_ERROR([no bison found in \$PATH, install it])
11595 AC_MSG_CHECKING([the bison version])
11596 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11597 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11598 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11601 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]
11602 dnl typedef union YYSTYPE
11605 dnl while at least 3.4.1 is know to be good:
11606 if test "$COMPILER_PLUGINS" = TRUE; then
11607 if test "$_bison_longver" -lt 2004; then
11608 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11611 if test "$_bison_longver" -lt 2000; then
11612 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11618 AC_PATH_PROG(FLEX, flex)
11619 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11620 FLEX=`cygpath -m $FLEX`
11622 if test -z "$FLEX"; then
11623 AC_MSG_ERROR([no flex found in \$PATH, install it])
11625 AC_MSG_CHECKING([the flex version])
11626 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11627 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11628 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11633 AC_PATH_PROG(DIFF, diff)
11634 if test -z "$DIFF"; then
11635 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11639 AC_PATH_PROG(UNIQ, uniq)
11640 if test -z "$UNIQ"; then
11641 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11645 dnl ***************************************
11646 dnl Checking for patch
11647 dnl ***************************************
11648 AC_PATH_PROG(PATCH, patch)
11649 if test -z "$PATCH"; then
11650 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11653 dnl On Solaris or macOS, check if --with-gnu-patch was used
11654 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11655 if test -z "$with_gnu_patch"; then
11658 if test -x "$with_gnu_patch"; then
11659 GNUPATCH=$with_gnu_patch
11661 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11665 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11666 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11667 AC_MSG_RESULT([yes])
11669 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11670 AC_MSG_RESULT([no, but accepted (Apple patch)])
11671 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11673 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11680 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11681 GNUPATCH=`cygpath -m $GNUPATCH`
11684 dnl We also need to check for --with-gnu-cp
11686 if test -z "$with_gnu_cp"; then
11687 # check the place where the good stuff is hidden on Solaris...
11688 if test -x /usr/gnu/bin/cp; then
11689 GNUCP=/usr/gnu/bin/cp
11691 AC_PATH_PROGS(GNUCP, gnucp cp)
11693 if test -z $GNUCP; then
11694 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11697 if test -x "$with_gnu_cp"; then
11700 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11704 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11705 GNUCP=`cygpath -m $GNUCP`
11708 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11709 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11710 AC_MSG_RESULT([yes])
11711 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11712 AC_MSG_RESULT([yes])
11714 case "$build_os" in
11715 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11718 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11721 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11730 dnl ***************************************
11731 dnl testing assembler path
11732 dnl ***************************************
11734 if test "$_os" = "WINNT"; then
11735 case "$WIN_HOST_ARCH" in
11736 x86) assembler=ml.exe ;;
11737 x64) assembler=ml64.exe ;;
11738 arm64) assembler=armasm64.exe ;;
11741 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11742 if test -f "$MSVC_HOST_PATH/$assembler"; then
11743 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11744 AC_MSG_RESULT([$ML_EXE])
11746 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11752 dnl ===================================================================
11753 dnl We need zip and unzip
11754 dnl ===================================================================
11755 AC_PATH_PROG(ZIP, zip)
11756 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11757 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11758 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],,)
11761 AC_PATH_PROG(UNZIP, unzip)
11762 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11764 dnl ===================================================================
11765 dnl Zip must be a specific type for different build types.
11766 dnl ===================================================================
11767 if test $build_os = cygwin; then
11768 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11769 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11773 dnl ===================================================================
11774 dnl We need touch with -h option support.
11775 dnl ===================================================================
11776 AC_PATH_PROG(TOUCH, touch)
11777 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11778 touch "$WARNINGS_FILE"
11779 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11780 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],,)
11783 dnl ===================================================================
11784 dnl Check for system epoxy
11785 dnl ===================================================================
11786 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11787 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11789 dnl ===================================================================
11790 dnl Show which vclplugs will be built.
11791 dnl ===================================================================
11794 libo_ENABLE_VCLPLUG([gen])
11795 libo_ENABLE_VCLPLUG([gtk3])
11796 libo_ENABLE_VCLPLUG([gtk3_kde5])
11797 libo_ENABLE_VCLPLUG([gtk4])
11798 libo_ENABLE_VCLPLUG([kf5])
11799 libo_ENABLE_VCLPLUG([kf6])
11800 libo_ENABLE_VCLPLUG([qt5])
11801 libo_ENABLE_VCLPLUG([qt6])
11803 if test "$_os" = "WINNT"; then
11805 elif test "$_os" = "Darwin"; then
11807 elif test "$_os" = "iOS"; then
11809 elif test "$_os" = Android; then
11813 build_vcl_plugins="$R"
11814 if test -z "$build_vcl_plugins"; then
11815 build_vcl_plugins=" none"
11817 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11819 AC_SUBST([VCL_PLUGIN_INFO])
11821 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11822 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11825 dnl ===================================================================
11826 dnl Check for GTK libraries
11827 dnl ===================================================================
11831 ENABLE_GTKTILEDVIEWER=""
11832 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11833 if test "$with_system_cairo" = no; then
11834 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.'
11836 : ${with_system_cairo:=yes}
11837 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)
11838 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11839 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11840 FilterLibs "${GTK3_LIBS}"
11841 GTK3_LIBS="${filteredlibs}"
11843 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11844 if test "$with_system_epoxy" != "yes"; then
11845 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11846 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11847 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11849 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11850 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11851 if test "$build_os" = "cygwin"; then
11852 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11853 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11856 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11857 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11858 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11859 FilterLibs "${GTK3_LIBS}"
11860 GTK3_LIBS="${filteredlibs}"
11861 ENABLE_GTKTILEDVIEWER="yes"
11863 AC_SUBST(GTK3_LIBS)
11864 AC_SUBST(GTK3_CFLAGS)
11865 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11869 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11870 if test "$with_system_cairo" = no; then
11871 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11873 : ${with_system_cairo:=yes}
11874 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11875 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11876 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11877 FilterLibs "${GTK4_LIBS}"
11878 GTK4_LIBS="${filteredlibs}"
11880 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11881 if test "$with_system_epoxy" != "yes"; then
11882 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11883 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11884 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11887 AC_SUBST(GTK4_LIBS)
11888 AC_SUBST(GTK4_CFLAGS)
11890 if test "$enable_introspection" = yes; then
11891 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11892 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11894 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11898 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11899 if ! test "$ENABLE_GTK3" = TRUE; then
11900 if test "$enable_atspi_tests" = yes; then
11901 AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11903 enable_atspi_tests=no
11905 if ! test "$enable_atspi_tests" = no; then
11906 AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11907 if ! test "$XVFB_RUN" = no; then
11908 dnl make sure the found xvfb-run actually works
11909 AC_MSG_CHECKING([whether $XVFB_RUN works...])
11910 if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11911 AC_MSG_RESULT([yes])
11913 AC_MSG_RESULT([no])
11917 if test "$XVFB_RUN" = no; then
11918 if test "$enable_atspi_tests" = yes; then
11919 AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11921 enable_atspi_tests=no
11924 if ! test "$enable_atspi_tests" = no; then
11925 AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11926 if test "$DBUS_LAUNCH" = no; then
11927 if test "$enable_atspi_tests" = yes; then
11928 AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11930 enable_atspi_tests=no
11933 if ! test "$enable_atspi_tests" = no; then
11934 PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11935 [if test "$enable_atspi_tests" = yes; then
11936 AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11938 enable_atspi_tests=no
11941 if ! test "x$enable_atspi_tests" = xno; then
11942 PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11943 [have_atspi_scroll_to=1],
11944 [have_atspi_scroll_to=0])
11945 AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11946 [Whether AT-SPI2 has the scrollTo API])
11948 ENABLE_ATSPI_TESTS=
11949 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11950 AC_SUBST([ENABLE_ATSPI_TESTS])
11952 dnl ===================================================================
11953 dnl check for dbus support
11954 dnl ===================================================================
11958 DBUS_GLIB_CFLAGS=""
11962 if test "$enable_dbus" = "no"; then
11966 AC_MSG_CHECKING([whether to enable DBUS support])
11967 if test "$test_dbus" = "yes"; then
11969 AC_MSG_RESULT([yes])
11970 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11971 AC_DEFINE(ENABLE_DBUS)
11972 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11973 FilterLibs "${DBUS_LIBS}"
11974 DBUS_LIBS="${filteredlibs}"
11976 # Glib is needed for BluetoothServer
11977 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11978 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11980 DBUS_HAVE_GLIB="TRUE"
11981 AC_DEFINE(DBUS_HAVE_GLIB,1)
11983 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11986 AC_MSG_RESULT([no])
11989 AC_SUBST(ENABLE_DBUS)
11990 AC_SUBST(DBUS_CFLAGS)
11991 AC_SUBST(DBUS_LIBS)
11992 AC_SUBST(DBUS_GLIB_CFLAGS)
11993 AC_SUBST(DBUS_GLIB_LIBS)
11994 AC_SUBST(DBUS_HAVE_GLIB)
11996 AC_MSG_CHECKING([whether to enable Impress remote control])
11997 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11998 AC_MSG_RESULT([yes])
11999 ENABLE_SDREMOTE=TRUE
12000 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
12002 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12004 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12005 # The Bluetooth code doesn't compile with macOS SDK 10.15
12006 if test "$enable_sdremote_bluetooth" = yes; then
12007 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12009 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12010 enable_sdremote_bluetooth=no
12012 # If not explicitly enabled or disabled, default
12013 if test -z "$enable_sdremote_bluetooth"; then
12016 # Default to yes for these
12017 enable_sdremote_bluetooth=yes
12021 enable_sdremote_bluetooth=no
12025 # $enable_sdremote_bluetooth is guaranteed non-empty now
12027 if test "$enable_sdremote_bluetooth" != "no"; then
12028 if test "$OS" = "LINUX"; then
12029 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12030 AC_MSG_RESULT([yes])
12031 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12032 dnl ===================================================================
12033 dnl Check for system bluez
12034 dnl ===================================================================
12035 AC_MSG_CHECKING([which Bluetooth header to use])
12036 if test "$with_system_bluez" = "yes"; then
12037 AC_MSG_RESULT([external])
12038 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12039 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12042 AC_MSG_RESULT([internal])
12046 AC_MSG_RESULT([no, dbus disabled])
12047 ENABLE_SDREMOTE_BLUETOOTH=
12051 AC_MSG_RESULT([yes])
12052 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12054 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12055 <key>com.apple.security.device.bluetooth</key>
12059 AC_MSG_RESULT([no])
12060 ENABLE_SDREMOTE_BLUETOOTH=
12066 AC_MSG_RESULT([no])
12068 AC_SUBST(ENABLE_SDREMOTE)
12069 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12070 AC_SUBST(SDREMOTE_ENTITLEMENT)
12071 AC_SUBST(SYSTEM_BLUEZ)
12073 dnl ===================================================================
12074 dnl Check whether to enable GIO support
12075 dnl ===================================================================
12076 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12077 AC_MSG_CHECKING([whether to enable GIO support])
12078 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12079 dnl Need at least 2.26 for the dbus support.
12080 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12081 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12082 if test "$ENABLE_GIO" = "TRUE"; then
12083 AC_DEFINE(ENABLE_GIO)
12084 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12085 FilterLibs "${GIO_LIBS}"
12086 GIO_LIBS="${filteredlibs}"
12089 AC_MSG_RESULT([no])
12092 AC_SUBST(ENABLE_GIO)
12093 AC_SUBST(GIO_CFLAGS)
12097 dnl ===================================================================
12099 SPLIT_APP_MODULES=""
12100 if test "$enable_split_app_modules" = "yes"; then
12101 SPLIT_APP_MODULES="TRUE"
12103 AC_SUBST(SPLIT_APP_MODULES)
12105 SPLIT_OPT_FEATURES=""
12106 if test "$enable_split_opt_features" = "yes"; then
12107 SPLIT_OPT_FEATURES="TRUE"
12109 AC_SUBST(SPLIT_OPT_FEATURES)
12111 dnl ===================================================================
12112 dnl Check whether the GStreamer libraries are available.
12113 dnl ===================================================================
12115 ENABLE_GSTREAMER_1_0=""
12117 if test "$test_gstreamer_1_0" = yes; then
12119 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12120 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12121 ENABLE_GSTREAMER_1_0="TRUE"
12122 AC_MSG_RESULT([yes])
12123 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12124 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12125 FilterLibs "${GSTREAMER_1_0_LIBS}"
12126 GSTREAMER_1_0_LIBS="${filteredlibs}"
12127 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12129 AC_MSG_RESULT([no])
12132 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12133 AC_SUBST(GSTREAMER_1_0_LIBS)
12134 AC_SUBST(ENABLE_GSTREAMER_1_0)
12136 ENABLE_OPENGL_TRANSITIONS=
12137 ENABLE_OPENGL_CANVAS=
12138 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12140 elif test "$_os" = "Darwin"; then
12141 # We use frameworks on macOS, no need for detail checks
12142 ENABLE_OPENGL_TRANSITIONS=TRUE
12143 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12144 ENABLE_OPENGL_CANVAS=TRUE
12145 elif test $_os = WINNT; then
12146 ENABLE_OPENGL_TRANSITIONS=TRUE
12147 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12148 ENABLE_OPENGL_CANVAS=TRUE
12150 if test "$USING_X11" = TRUE; then
12151 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12152 ENABLE_OPENGL_TRANSITIONS=TRUE
12153 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12154 ENABLE_OPENGL_CANVAS=TRUE
12158 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12159 AC_SUBST(ENABLE_OPENGL_CANVAS)
12161 dnl =================================================
12162 dnl Check whether to build with OpenCL support.
12163 dnl =================================================
12165 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12166 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12167 # platform (optional at run-time, used through clew).
12168 BUILD_TYPE="$BUILD_TYPE OPENCL"
12169 AC_DEFINE(HAVE_FEATURE_OPENCL)
12172 dnl =================================================
12173 dnl Check whether to build with dconf support.
12174 dnl =================================================
12176 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12177 PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12178 if test "$enable_dconf" = yes; then
12179 AC_MSG_ERROR([dconf not found])
12184 AC_MSG_CHECKING([whether to enable dconf])
12185 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12189 AC_MSG_RESULT([no])
12192 AC_DEFINE(ENABLE_DCONF)
12193 AC_MSG_RESULT([yes])
12195 AC_SUBST([DCONF_CFLAGS])
12196 AC_SUBST([DCONF_LIBS])
12197 AC_SUBST([ENABLE_DCONF])
12200 AC_MSG_CHECKING([whether to build the PDF import feature])
12202 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12203 AC_MSG_RESULT([yes])
12204 ENABLE_PDFIMPORT=TRUE
12205 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12207 AC_MSG_RESULT([no])
12211 AC_MSG_CHECKING([whether to build PDFium])
12213 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12214 AC_MSG_RESULT([yes])
12216 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12218 AC_MSG_RESULT([no])
12220 AC_SUBST(ENABLE_PDFIUM)
12222 if test "$ENABLE_PDFIUM" = "TRUE"; then
12223 AC_MSG_CHECKING([which OpenJPEG library to use])
12224 if test "$with_system_openjpeg" = "yes"; then
12225 SYSTEM_OPENJPEG2=TRUE
12226 AC_MSG_RESULT([external])
12227 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12228 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12229 FilterLibs "${OPENJPEG2_LIBS}"
12230 OPENJPEG2_LIBS="${filteredlibs}"
12232 SYSTEM_OPENJPEG2=FALSE
12233 AC_MSG_RESULT([internal])
12236 AC_MSG_CHECKING([which Abseil library to use])
12237 if test "$with_system_abseil" = "yes"; then
12238 AC_MSG_RESULT([external])
12240 AC_LANG_PUSH([C++])
12241 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12242 [AC_MSG_ERROR(abseil headers not found.)], [])
12243 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12244 [AC_MSG_ERROR(abseil headers not found.)], [])
12245 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12246 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12247 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12248 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12249 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12251 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12252 FilterLibs "${ABSEIL_LIBS}"
12253 ABSEIL_LIBS="${filteredlibs}"
12255 AC_MSG_RESULT([internal])
12258 AC_SUBST(SYSTEM_OPENJPEG2)
12259 AC_SUBST(SYSTEM_ABSEIL)
12260 AC_SUBST(ABSEIL_CFLAGS)
12261 AC_SUBST(ABSEIL_LIBS)
12263 dnl ===================================================================
12264 dnl Check for poppler
12265 dnl ===================================================================
12267 AC_MSG_CHECKING([whether to build Poppler])
12268 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12269 AC_MSG_RESULT([yes])
12270 ENABLE_POPPLER=TRUE
12271 AC_DEFINE(HAVE_FEATURE_POPPLER)
12273 AC_MSG_RESULT([no])
12275 AC_SUBST(ENABLE_POPPLER)
12277 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12278 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12281 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12282 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12285 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12286 dnl ===================================================================
12287 dnl Check for system poppler
12288 dnl ===================================================================
12289 AC_MSG_CHECKING([which PDF import poppler to use])
12290 if test "$with_system_poppler" = "yes"; then
12291 AC_MSG_RESULT([external])
12292 SYSTEM_POPPLER=TRUE
12293 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12294 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12295 FilterLibs "${POPPLER_LIBS}"
12296 POPPLER_LIBS="${filteredlibs}"
12298 AC_MSG_RESULT([internal])
12300 BUILD_TYPE="$BUILD_TYPE POPPLER"
12302 AC_DEFINE([ENABLE_PDFIMPORT],1)
12304 AC_SUBST(ENABLE_PDFIMPORT)
12305 AC_SUBST(SYSTEM_POPPLER)
12306 AC_SUBST(POPPLER_CFLAGS)
12307 AC_SUBST(POPPLER_LIBS)
12311 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12312 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12313 if test "$SYSTEM_FREETYPE" = TRUE; then
12314 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12315 [skia_freetype_ok=yes],
12316 [skia_freetype_ok=no])
12317 else # internal is ok
12318 skia_freetype_ok=yes
12320 AC_MSG_CHECKING([whether to build Skia])
12321 if test "$skia_freetype_ok" = "yes"; then
12322 if test "$enable_skia" = "debug"; then
12323 AC_MSG_RESULT([yes (debug)])
12324 ENABLE_SKIA_DEBUG=TRUE
12326 AC_MSG_RESULT([yes])
12330 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12331 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12334 AC_DEFINE(HAVE_FEATURE_SKIA)
12335 BUILD_TYPE="$BUILD_TYPE SKIA"
12337 if test "$OS" = "MACOSX"; then
12338 AC_DEFINE(SK_GANESH,1)
12339 AC_DEFINE(SK_METAL,1)
12343 AC_DEFINE(SK_GANESH,1)
12344 AC_DEFINE(SK_VULKAN,1)
12349 AC_MSG_RESULT([no (freetype too old)])
12350 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12354 AC_MSG_CHECKING([whether to build Skia])
12355 AC_MSG_RESULT([no])
12357 AC_SUBST(ENABLE_SKIA)
12358 AC_SUBST(ENABLE_SKIA_DEBUG)
12360 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12361 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12362 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12363 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12364 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12365 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12366 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12367 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12368 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12369 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12371 HAVE_LO_CLANG_DLLEXPORTINLINES=
12373 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12374 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12375 AC_MSG_CHECKING([for Clang])
12376 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12378 if test "$_os" = "WINNT"; then
12379 AC_MSG_CHECKING([for clang-cl])
12380 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12381 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12382 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12383 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12384 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12385 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12387 if test -n "$LO_CLANG_CC"; then
12388 dnl explicitly set -m32/-m64
12389 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12390 LO_CLANG_CXX="$LO_CLANG_CC"
12391 AC_MSG_RESULT([$LO_CLANG_CC])
12393 AC_MSG_RESULT([no])
12396 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12397 echo "#include <stdlib.h>" > conftest.c
12398 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12399 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12400 rm -f conftest.c conftest.obj
12401 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12402 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12404 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12407 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12408 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12411 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12412 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12413 LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12414 if test "$LO_CLANG_VERSION" -lt 50002; then
12415 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12420 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12422 CXX="$LO_CLANG_CXX"
12423 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12424 AC_LANG_PUSH([C++])
12425 save_CXXFLAGS=$CXXFLAGS
12426 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12427 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12428 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12429 AC_MSG_RESULT([yes])
12430 ], [AC_MSG_RESULT([no])])
12431 CXXFLAGS=$save_CXXFLAGS
12434 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12435 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.])
12438 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12439 # Skia is the default on Windows and Mac, so hard-require Clang.
12440 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12441 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12442 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12444 AC_MSG_WARN([Clang compiler not found.])
12449 CXX="$LO_CLANG_CXX"
12450 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12453 flag_sse41=-msse4.1
12454 flag_sse42=-msse4.2
12457 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12458 flag_avx512f=-mavx512f
12462 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12463 AC_LANG_PUSH([C++])
12464 save_CXXFLAGS=$CXXFLAGS
12465 CXXFLAGS="$CXXFLAGS $flag_sse2"
12466 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12467 #include <emmintrin.h>
12469 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12470 c = _mm_xor_si128 (a, b);
12474 [can_compile_sse2=yes],
12475 [can_compile_sse2=no])
12477 CXXFLAGS=$save_CXXFLAGS
12478 AC_MSG_RESULT([${can_compile_sse2}])
12479 if test "${can_compile_sse2}" = "yes" ; then
12480 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12483 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12484 AC_LANG_PUSH([C++])
12485 save_CXXFLAGS=$CXXFLAGS
12486 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12487 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12488 #include <tmmintrin.h>
12490 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12491 c = _mm_maddubs_epi16 (a, b);
12495 [can_compile_ssse3=yes],
12496 [can_compile_ssse3=no])
12498 CXXFLAGS=$save_CXXFLAGS
12499 AC_MSG_RESULT([${can_compile_ssse3}])
12500 if test "${can_compile_ssse3}" = "yes" ; then
12501 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12504 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12505 AC_LANG_PUSH([C++])
12506 save_CXXFLAGS=$CXXFLAGS
12507 CXXFLAGS="$CXXFLAGS $flag_sse41"
12508 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12509 #include <smmintrin.h>
12511 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12512 c = _mm_cmpeq_epi64 (a, b);
12516 [can_compile_sse41=yes],
12517 [can_compile_sse41=no])
12519 CXXFLAGS=$save_CXXFLAGS
12520 AC_MSG_RESULT([${can_compile_sse41}])
12521 if test "${can_compile_sse41}" = "yes" ; then
12522 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12525 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12526 AC_LANG_PUSH([C++])
12527 save_CXXFLAGS=$CXXFLAGS
12528 CXXFLAGS="$CXXFLAGS $flag_sse42"
12529 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12530 #include <nmmintrin.h>
12532 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12533 c = _mm_cmpgt_epi64 (a, b);
12537 [can_compile_sse42=yes],
12538 [can_compile_sse42=no])
12540 CXXFLAGS=$save_CXXFLAGS
12541 AC_MSG_RESULT([${can_compile_sse42}])
12542 if test "${can_compile_sse42}" = "yes" ; then
12543 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12546 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12547 AC_LANG_PUSH([C++])
12548 save_CXXFLAGS=$CXXFLAGS
12549 CXXFLAGS="$CXXFLAGS $flag_avx"
12550 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12551 #include <immintrin.h>
12553 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12554 c = _mm256_xor_ps(a, b);
12558 [can_compile_avx=yes],
12559 [can_compile_avx=no])
12561 CXXFLAGS=$save_CXXFLAGS
12562 AC_MSG_RESULT([${can_compile_avx}])
12563 if test "${can_compile_avx}" = "yes" ; then
12564 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12567 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12568 AC_LANG_PUSH([C++])
12569 save_CXXFLAGS=$CXXFLAGS
12570 CXXFLAGS="$CXXFLAGS $flag_avx2"
12571 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12572 #include <immintrin.h>
12574 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12575 c = _mm256_maddubs_epi16(a, b);
12579 [can_compile_avx2=yes],
12580 [can_compile_avx2=no])
12582 CXXFLAGS=$save_CXXFLAGS
12583 AC_MSG_RESULT([${can_compile_avx2}])
12584 if test "${can_compile_avx2}" = "yes" ; then
12585 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12588 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12589 AC_LANG_PUSH([C++])
12590 save_CXXFLAGS=$CXXFLAGS
12591 CXXFLAGS="$CXXFLAGS $flag_avx512"
12592 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12593 #include <immintrin.h>
12595 __m512i a = _mm512_loadu_si512(0);
12596 __m512d v1 = _mm512_load_pd(0);
12597 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12598 __m512d v2 = _mm512_abs_pd(v1);
12602 [can_compile_avx512=yes],
12603 [can_compile_avx512=no])
12605 CXXFLAGS=$save_CXXFLAGS
12606 AC_MSG_RESULT([${can_compile_avx512}])
12607 if test "${can_compile_avx512}" = "yes" ; then
12608 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12609 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12612 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12613 AC_LANG_PUSH([C++])
12614 save_CXXFLAGS=$CXXFLAGS
12615 CXXFLAGS="$CXXFLAGS $flag_f16c"
12616 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12617 #include <immintrin.h>
12619 __m128i a = _mm_set1_epi32 (0);
12621 c = _mm_cvtph_ps(a);
12625 [can_compile_f16c=yes],
12626 [can_compile_f16c=no])
12628 CXXFLAGS=$save_CXXFLAGS
12629 AC_MSG_RESULT([${can_compile_f16c}])
12630 if test "${can_compile_f16c}" = "yes" ; then
12631 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12634 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12635 AC_LANG_PUSH([C++])
12636 save_CXXFLAGS=$CXXFLAGS
12637 CXXFLAGS="$CXXFLAGS $flag_fma"
12638 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12639 #include <immintrin.h>
12641 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12642 d = _mm256_fmadd_ps(a, b, c);
12646 [can_compile_fma=yes],
12647 [can_compile_fma=no])
12649 CXXFLAGS=$save_CXXFLAGS
12650 AC_MSG_RESULT([${can_compile_fma}])
12651 if test "${can_compile_fma}" = "yes" ; then
12652 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12659 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12661 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12662 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12666 save_CFLAGS=$CFLAGS
12667 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12668 dnl an empty program will do, we're checking the compiler flags
12669 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12670 [use_ccache=yes], [use_ccache=no])
12671 CFLAGS=$save_CFLAGS
12673 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12674 AC_MSG_RESULT([yes])
12676 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12677 AC_MSG_RESULT([no])
12681 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12682 AC_LANG_PUSH([C++])
12684 CXX="$LO_CLANG_CXX"
12685 save_CXXFLAGS=$CXXFLAGS
12686 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12687 dnl an empty program will do, we're checking the compiler flags
12688 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12689 [use_ccache=yes], [use_ccache=no])
12690 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12691 AC_MSG_RESULT([yes])
12693 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12694 AC_MSG_RESULT([no])
12696 CXXFLAGS=$save_CXXFLAGS
12701 AC_SUBST(LO_CLANG_CC)
12702 AC_SUBST(LO_CLANG_CXX)
12703 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12704 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12705 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12706 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12707 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12708 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12709 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12710 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12711 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12712 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12713 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12714 AC_SUBST(LO_CLANG_VERSION)
12715 AC_SUBST(CLANG_USE_LD)
12716 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12720 AC_MSG_CHECKING([whether to enable gpgmepp])
12721 if test "$enable_gpgmepp" = no; then
12722 AC_MSG_RESULT([no])
12723 elif test "$enable_mpl_subset" = "yes"; then
12724 AC_MSG_RESULT([no (MPL only)])
12725 elif test "$enable_fuzzers" = "yes"; then
12726 AC_MSG_RESULT([no (oss-fuzz)])
12727 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12728 AC_MSG_RESULT([yes])
12729 dnl ===================================================================
12730 dnl Check for system gpgme
12731 dnl ===================================================================
12732 AC_MSG_CHECKING([which gpgmepp to use])
12733 if test "$with_system_gpgmepp" = "yes"; then
12734 AC_MSG_RESULT([external])
12735 SYSTEM_GPGMEPP=TRUE
12737 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12738 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12739 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12740 AC_CHECK_HEADER(gpgme.h, [],
12741 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12742 AC_CHECK_LIB(gpgmepp, main, [],
12743 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12744 GPGMEPP_LIBS=-lgpgmepp
12746 AC_MSG_RESULT([internal])
12747 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12749 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12750 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12751 if test "$_os" != "WINNT"; then
12752 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12753 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12756 ENABLE_GPGMEPP=TRUE
12757 AC_DEFINE([HAVE_FEATURE_GPGME])
12758 AC_PATH_PROG(GPG, gpg)
12759 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12760 # so let's exclude that manually for the moment
12761 if test -n "$GPG" -a "$_os" != "WINNT"; then
12762 # make sure we not only have a working gpgme, but a full working
12763 # gpg installation to run OpenPGP signature verification
12764 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12766 if test "$_os" = "Linux"; then
12768 AC_MSG_CHECKING([for /run/user/$uid])
12769 if test -d /run/user/$uid; then
12770 AC_MSG_RESULT([yes])
12771 AC_PATH_PROG(GPGCONF, gpgconf)
12773 # Older versions of gpgconf are not working as expected, since
12774 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12775 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12776 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12777 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12778 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12779 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12780 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12781 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12782 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12783 if $GPGCONF --dump-options > /dev/null ; then
12784 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12785 AC_MSG_RESULT([yes])
12786 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12787 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12789 AC_MSG_RESULT([no])
12792 AC_MSG_RESULT([no. missing or broken gpgconf?])
12795 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12798 AC_MSG_RESULT([no])
12802 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12804 AC_SUBST(ENABLE_GPGMEPP)
12805 AC_SUBST(SYSTEM_GPGMEPP)
12806 AC_SUBST(GPG_ERROR_CFLAGS)
12807 AC_SUBST(GPG_ERROR_LIBS)
12808 AC_SUBST(LIBASSUAN_CFLAGS)
12809 AC_SUBST(LIBASSUAN_LIBS)
12810 AC_SUBST(GPGMEPP_CFLAGS)
12811 AC_SUBST(GPGMEPP_LIBS)
12813 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12814 if test "$with_java" != "no"; then
12815 AC_MSG_RESULT([yes])
12816 ENABLE_JAVA_WEBSOCKET=TRUE
12817 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12820 AC_MSG_RESULT([no])
12821 ENABLE_JAVA_WEBSOCKET=
12823 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12825 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12826 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12827 AC_MSG_RESULT([yes])
12828 ENABLE_MEDIAWIKI=TRUE
12829 BUILD_TYPE="$BUILD_TYPE XSLTML"
12830 if test "x$with_java" = "xno"; then
12831 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12834 AC_MSG_RESULT([no])
12836 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12838 AC_SUBST(ENABLE_MEDIAWIKI)
12840 AC_MSG_CHECKING([whether to build the Report Builder])
12841 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12842 AC_MSG_RESULT([yes])
12843 ENABLE_REPORTBUILDER=TRUE
12844 AC_MSG_CHECKING([which jfreereport libs to use])
12845 if test "$with_system_jfreereport" = "yes"; then
12846 SYSTEM_JFREEREPORT=TRUE
12847 AC_MSG_RESULT([external])
12848 if test -z $SAC_JAR; then
12849 SAC_JAR=/usr/share/java/sac.jar
12851 if ! test -f $SAC_JAR; then
12852 AC_MSG_ERROR(sac.jar not found.)
12855 if test -z $LIBXML_JAR; then
12856 if test -f /usr/share/java/libxml-1.0.0.jar; then
12857 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12858 elif test -f /usr/share/java/libxml.jar; then
12859 LIBXML_JAR=/usr/share/java/libxml.jar
12861 AC_MSG_ERROR(libxml.jar replacement not found.)
12863 elif ! test -f $LIBXML_JAR; then
12864 AC_MSG_ERROR(libxml.jar not found.)
12867 if test -z $FLUTE_JAR; then
12868 if test -f /usr/share/java/flute-1.3.0.jar; then
12869 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12870 elif test -f /usr/share/java/flute.jar; then
12871 FLUTE_JAR=/usr/share/java/flute.jar
12873 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12875 elif ! test -f $FLUTE_JAR; then
12876 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12879 if test -z $JFREEREPORT_JAR; then
12880 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12881 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12882 elif test -f /usr/share/java/flow-engine.jar; then
12883 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12885 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12887 elif ! test -f $JFREEREPORT_JAR; then
12888 AC_MSG_ERROR(jfreereport.jar not found.)
12891 if test -z $LIBLAYOUT_JAR; then
12892 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12893 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12894 elif test -f /usr/share/java/liblayout.jar; then
12895 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12897 AC_MSG_ERROR(liblayout.jar replacement not found.)
12899 elif ! test -f $LIBLAYOUT_JAR; then
12900 AC_MSG_ERROR(liblayout.jar not found.)
12903 if test -z $LIBLOADER_JAR; then
12904 if test -f /usr/share/java/libloader-1.0.0.jar; then
12905 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12906 elif test -f /usr/share/java/libloader.jar; then
12907 LIBLOADER_JAR=/usr/share/java/libloader.jar
12909 AC_MSG_ERROR(libloader.jar replacement not found.)
12911 elif ! test -f $LIBLOADER_JAR; then
12912 AC_MSG_ERROR(libloader.jar not found.)
12915 if test -z $LIBFORMULA_JAR; then
12916 if test -f /usr/share/java/libformula-0.2.0.jar; then
12917 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12918 elif test -f /usr/share/java/libformula.jar; then
12919 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12921 AC_MSG_ERROR(libformula.jar replacement not found.)
12923 elif ! test -f $LIBFORMULA_JAR; then
12924 AC_MSG_ERROR(libformula.jar not found.)
12927 if test -z $LIBREPOSITORY_JAR; then
12928 if test -f /usr/share/java/librepository-1.0.0.jar; then
12929 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12930 elif test -f /usr/share/java/librepository.jar; then
12931 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12933 AC_MSG_ERROR(librepository.jar replacement not found.)
12935 elif ! test -f $LIBREPOSITORY_JAR; then
12936 AC_MSG_ERROR(librepository.jar not found.)
12939 if test -z $LIBFONTS_JAR; then
12940 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12941 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12942 elif test -f /usr/share/java/libfonts.jar; then
12943 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12945 AC_MSG_ERROR(libfonts.jar replacement not found.)
12947 elif ! test -f $LIBFONTS_JAR; then
12948 AC_MSG_ERROR(libfonts.jar not found.)
12951 if test -z $LIBSERIALIZER_JAR; then
12952 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12953 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12954 elif test -f /usr/share/java/libserializer.jar; then
12955 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12957 AC_MSG_ERROR(libserializer.jar replacement not found.)
12959 elif ! test -f $LIBSERIALIZER_JAR; then
12960 AC_MSG_ERROR(libserializer.jar not found.)
12963 if test -z $LIBBASE_JAR; then
12964 if test -f /usr/share/java/libbase-1.0.0.jar; then
12965 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12966 elif test -f /usr/share/java/libbase.jar; then
12967 LIBBASE_JAR=/usr/share/java/libbase.jar
12969 AC_MSG_ERROR(libbase.jar replacement not found.)
12971 elif ! test -f $LIBBASE_JAR; then
12972 AC_MSG_ERROR(libbase.jar not found.)
12976 AC_MSG_RESULT([internal])
12977 SYSTEM_JFREEREPORT=
12978 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12982 AC_MSG_RESULT([no])
12983 ENABLE_REPORTBUILDER=
12984 SYSTEM_JFREEREPORT=
12986 AC_SUBST(ENABLE_REPORTBUILDER)
12987 AC_SUBST(SYSTEM_JFREEREPORT)
12989 AC_SUBST(LIBXML_JAR)
12990 AC_SUBST(FLUTE_JAR)
12991 AC_SUBST(JFREEREPORT_JAR)
12992 AC_SUBST(LIBBASE_JAR)
12993 AC_SUBST(LIBLAYOUT_JAR)
12994 AC_SUBST(LIBLOADER_JAR)
12995 AC_SUBST(LIBFORMULA_JAR)
12996 AC_SUBST(LIBREPOSITORY_JAR)
12997 AC_SUBST(LIBFONTS_JAR)
12998 AC_SUBST(LIBSERIALIZER_JAR)
13000 # scripting provider for BeanShell?
13001 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13002 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13003 AC_MSG_RESULT([yes])
13004 ENABLE_SCRIPTING_BEANSHELL=TRUE
13006 dnl ===================================================================
13007 dnl Check for system beanshell
13008 dnl ===================================================================
13009 AC_MSG_CHECKING([which beanshell to use])
13010 if test "$with_system_beanshell" = "yes"; then
13011 AC_MSG_RESULT([external])
13013 if test -z $BSH_JAR; then
13014 BSH_JAR=/usr/share/java/bsh.jar
13016 if ! test -f $BSH_JAR; then
13017 AC_MSG_ERROR(bsh.jar not found.)
13020 AC_MSG_RESULT([internal])
13022 BUILD_TYPE="$BUILD_TYPE BSH"
13025 AC_MSG_RESULT([no])
13026 ENABLE_SCRIPTING_BEANSHELL=
13027 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13029 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13030 AC_SUBST(SYSTEM_BSH)
13033 # scripting provider for JavaScript?
13034 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13035 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13036 AC_MSG_RESULT([yes])
13037 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13039 dnl ===================================================================
13040 dnl Check for system rhino
13041 dnl ===================================================================
13042 AC_MSG_CHECKING([which rhino to use])
13043 if test "$with_system_rhino" = "yes"; then
13044 AC_MSG_RESULT([external])
13046 if test -z $RHINO_JAR; then
13047 RHINO_JAR=/usr/share/java/js.jar
13049 if ! test -f $RHINO_JAR; then
13050 AC_MSG_ERROR(js.jar not found.)
13053 AC_MSG_RESULT([internal])
13055 BUILD_TYPE="$BUILD_TYPE RHINO"
13059 AC_MSG_RESULT([no])
13060 ENABLE_SCRIPTING_JAVASCRIPT=
13061 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13063 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13064 AC_SUBST(SYSTEM_RHINO)
13065 AC_SUBST(RHINO_JAR)
13067 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13068 # paths should be added to library search path. So lets put all 64-bit
13071 case "$host_cpu" in
13072 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13073 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13074 supports_multilib="yes"
13081 dnl ===================================================================
13082 dnl QT5 Integration
13083 dnl ===================================================================
13089 QT5_GOBJECT_CFLAGS=""
13090 QT5_GOBJECT_LIBS=""
13091 QT5_HAVE_GOBJECT=""
13092 QT5_PLATFORMS_SRCDIR=""
13093 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13094 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13095 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13097 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13098 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13100 if test -n "$supports_multilib"; then
13101 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13104 qt5_test_include="QtWidgets/qapplication.h"
13105 if test "$_os" = "Emscripten"; then
13106 qt5_test_library="libQt5Widgets.a"
13108 qt5_test_library="libQt5Widgets.so"
13111 dnl Check for qmake5
13112 if test -n "$QT5DIR"; then
13113 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13115 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13117 if test "$QMAKE5" = "no"; then
13118 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13120 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13121 if test -z "$qmake5_test_ver"; then
13122 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13124 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13125 qt5_minimal_minor="15"
13126 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13127 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13129 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13133 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13134 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13135 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13136 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13138 AC_MSG_CHECKING([for Qt5 headers])
13140 for inc_dir in $qt5_incdirs; do
13141 if test -r "$inc_dir/$qt5_test_include"; then
13142 qt5_incdir="$inc_dir"
13146 AC_MSG_RESULT([$qt5_incdir])
13147 if test "x$qt5_incdir" = "xno"; then
13148 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13150 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13151 AC_LANG_PUSH([C++])
13152 save_CPPFLAGS=$CPPFLAGS
13153 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13154 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13155 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13156 CPPFLAGS=$save_CPPFLAGS
13159 AC_MSG_CHECKING([for Qt5 libraries])
13161 for lib_dir in $qt5_libdirs; do
13162 if test -r "$lib_dir/$qt5_test_library"; then
13163 qt5_libdir="$lib_dir"
13167 AC_MSG_RESULT([$qt5_libdir])
13168 if test "x$qt5_libdir" = "xno"; then
13169 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13172 if test "$_os" = "Emscripten"; then
13173 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13174 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13176 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13177 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13180 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13181 if ! test -x "$EMSDK_LLVM_NM"; then
13182 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13184 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13185 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13187 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13188 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13189 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13191 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13192 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13196 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13197 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13198 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13199 if test "$_os" = "Emscripten"; then
13200 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13203 if test "$USING_X11" = TRUE; then
13204 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13205 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13206 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13208 AC_DEFINE(QT5_USING_X11)
13211 dnl Check for Meta Object Compiler
13213 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13214 if test "$MOC5" = "no"; then
13215 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13216 the root of your Qt installation by exporting QT5DIR before running "configure".])
13219 if test "$test_gstreamer_1_0" = yes; then
13220 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13222 AC_DEFINE(QT5_HAVE_GOBJECT)
13224 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13228 AC_SUBST(QT5_CFLAGS)
13231 AC_SUBST(QT5_GOBJECT_CFLAGS)
13232 AC_SUBST(QT5_GOBJECT_LIBS)
13233 AC_SUBST(QT5_HAVE_GOBJECT)
13234 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13236 dnl ===================================================================
13237 dnl QT6 Integration
13238 dnl ===================================================================
13244 QT6_PLATFORMS_SRCDIR=""
13245 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13246 \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13248 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13249 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13251 if test -n "$supports_multilib"; then
13252 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13255 qt6_test_include="QtWidgets/qapplication.h"
13256 if test "$_os" = "Emscripten"; then
13257 qt6_test_library="libQt6Widgets.a"
13259 qt6_test_library="libQt6Widgets.so"
13262 dnl Check for qmake6
13263 if test -n "$QT6DIR"; then
13264 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13266 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13268 if test "$QMAKE6" = "no"; then
13269 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13271 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13272 if test -z "$qmake6_test_ver"; then
13273 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13275 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13278 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13279 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13280 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13281 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13283 AC_MSG_CHECKING([for Qt6 headers])
13285 for inc_dir in $qt6_incdirs; do
13286 if test -r "$inc_dir/$qt6_test_include"; then
13287 qt6_incdir="$inc_dir"
13291 AC_MSG_RESULT([$qt6_incdir])
13292 if test "x$qt6_incdir" = "xno"; then
13293 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13295 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13296 AC_LANG_PUSH([C++])
13297 save_CPPFLAGS=$CPPFLAGS
13298 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13299 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13300 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13301 CPPFLAGS=$save_CPPFLAGS
13304 AC_MSG_CHECKING([for Qt6 libraries])
13306 for lib_dir in $qt6_libdirs; do
13307 if test -r "$lib_dir/$qt6_test_library"; then
13308 qt6_libdir="$lib_dir"
13312 AC_MSG_RESULT([$qt6_libdir])
13313 if test "x$qt6_libdir" = "xno"; then
13314 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13317 if test "$_os" = "Emscripten"; then
13318 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13319 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13321 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13322 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13326 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13327 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13328 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13329 if test "$_os" = "Emscripten"; then
13330 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13333 if test "$USING_X11" = TRUE; then
13334 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13335 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13336 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13338 AC_DEFINE(QT6_USING_X11)
13341 dnl Check for Meta Object Compiler
13343 for lib_dir in $qt6_libdirs; do
13344 if test -z "$qt6_libexec_dirs"; then
13345 qt6_libexec_dirs="$lib_dir/libexec"
13347 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13350 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])
13351 if test "$MOC6" = "no"; then
13352 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13353 the root of your Qt installation by exporting QT6DIR before running "configure".])
13355 moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13356 if test -z "$moc6_test_ver"; then
13357 AC_MSG_ERROR([Wrong moc for Qt6 found.])
13359 AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13362 AC_SUBST(QT6_CFLAGS)
13365 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13367 dnl ===================================================================
13368 dnl KF5 Integration
13369 dnl ===================================================================
13373 KF5_CONFIG="kf5-config"
13374 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13375 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13377 if test "$OS" = "HAIKU"; then
13378 haiku_arch="`echo $RTL_ARCH | tr X x`"
13379 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13380 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13383 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13384 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13385 if test -n "$supports_multilib"; then
13386 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13389 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13390 kf5_test_library="libKF5KIOFileWidgets.so"
13391 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13393 dnl kf5 KDE4 support compatibility installed
13394 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13395 if test "$KF5_CONFIG" != "no"; then
13396 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13397 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13400 dnl Check for KF5 headers
13401 AC_MSG_CHECKING([for KF5 headers])
13403 for kf5_check in $kf5_incdirs; do
13404 if test -r "$kf5_check/$kf5_test_include"; then
13405 kf5_incdir="$kf5_check/KF5"
13409 AC_MSG_RESULT([$kf5_incdir])
13410 if test "x$kf5_incdir" = "xno"; then
13411 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13414 dnl Check for KF5 libraries
13415 AC_MSG_CHECKING([for KF5 libraries])
13417 for kf5_check in $kf5_libdirs; do
13418 if test -r "$kf5_check/$kf5_test_library"; then
13419 kf5_libdir="$kf5_check"
13424 AC_MSG_RESULT([$kf5_libdir])
13425 if test "x$kf5_libdir" = "xno"; then
13426 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13429 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"
13430 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13431 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13433 if test "$USING_X11" = TRUE; then
13434 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13437 AC_LANG_PUSH([C++])
13438 save_CXXFLAGS=$CXXFLAGS
13439 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13440 AC_MSG_CHECKING([whether KDE is >= 5.0])
13441 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13442 #include <kcoreaddons_version.h>
13444 int main(int argc, char **argv) {
13445 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13448 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13449 CXXFLAGS=$save_CXXFLAGS
13452 AC_SUBST(KF5_CFLAGS)
13455 dnl ===================================================================
13456 dnl KF6 Integration
13457 dnl ===================================================================
13461 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13463 if test "$OS" = "HAIKU"; then
13464 haiku_arch="`echo $RTL_ARCH | tr X x`"
13465 kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13466 kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13469 kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13470 kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13471 if test -n "$supports_multilib"; then
13472 kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13475 kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13476 kf6_test_library="libKF6KIOFileWidgets.so"
13477 kf6_libdirs="$qt6_libdir $kf6_libdirs"
13479 dnl Check for KF6 headers
13480 AC_MSG_CHECKING([for KF6 headers])
13482 for kf6_check in $kf6_incdirs; do
13483 if test -r "$kf6_check/$kf6_test_include"; then
13484 kf6_incdir="$kf6_check/KF6"
13488 AC_MSG_RESULT([$kf6_incdir])
13489 if test "x$kf6_incdir" = "xno"; then
13490 AC_MSG_ERROR([KF6 headers not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13493 dnl Check for KF6 libraries
13494 AC_MSG_CHECKING([for KF6 libraries])
13496 for kf6_check in $kf6_libdirs; do
13497 if test -r "$kf6_check/$kf6_test_library"; then
13498 kf6_libdir="$kf6_check"
13503 AC_MSG_RESULT([$kf6_libdir])
13504 if test "x$kf6_libdir" = "xno"; then
13505 AC_MSG_ERROR([KF6 libraries not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13508 KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfig -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"
13509 KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13510 KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13512 AC_LANG_PUSH([C++])
13513 save_CXXFLAGS=$CXXFLAGS
13514 CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13515 dnl KF6 development version as of 2023-06 uses version number 5.240
13516 AC_MSG_CHECKING([whether KDE is >= 5.240])
13517 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13518 #include <kcoreaddons_version.h>
13520 int main(int argc, char **argv) {
13521 if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13524 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13525 CXXFLAGS=$save_CXXFLAGS
13528 AC_SUBST(KF6_CFLAGS)
13531 dnl ===================================================================
13532 dnl Test whether to include Evolution 2 support
13533 dnl ===================================================================
13534 AC_MSG_CHECKING([whether to enable evolution 2 support])
13535 if test "$enable_evolution2" = yes; then
13536 AC_MSG_RESULT([yes])
13537 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13538 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13539 FilterLibs "${GOBJECT_LIBS}"
13540 GOBJECT_LIBS="${filteredlibs}"
13541 ENABLE_EVOAB2="TRUE"
13543 AC_MSG_RESULT([no])
13545 AC_SUBST(ENABLE_EVOAB2)
13546 AC_SUBST(GOBJECT_CFLAGS)
13547 AC_SUBST(GOBJECT_LIBS)
13549 dnl ===================================================================
13550 dnl Test which themes to include
13551 dnl ===================================================================
13552 AC_MSG_CHECKING([which themes to include])
13553 # if none given use default subset of available themes
13554 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13555 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"
13559 if test "x$with_theme" != "xno"; then
13560 for theme in $with_theme; do
13562 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" ;;
13563 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13567 AC_MSG_RESULT([$WITH_THEMES])
13568 AC_SUBST([WITH_THEMES])
13570 ###############################################################################
13571 # Extensions checking
13572 ###############################################################################
13573 AC_MSG_CHECKING([for extensions integration])
13574 if test "x$enable_extension_integration" != "xno"; then
13575 WITH_EXTENSION_INTEGRATION=TRUE
13576 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13577 AC_MSG_RESULT([yes, use integration])
13579 WITH_EXTENSION_INTEGRATION=
13580 AC_MSG_RESULT([no, do not integrate])
13582 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13584 dnl Should any extra extensions be included?
13585 dnl There are standalone tests for each of these below.
13586 WITH_EXTRA_EXTENSIONS=
13587 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13589 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13590 if test "x$with_java" != "xno"; then
13591 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13594 AC_MSG_CHECKING([whether to build opens___.ttf])
13595 if test "$enable_build_opensymbol" = "yes"; then
13596 AC_MSG_RESULT([yes])
13597 AC_PATH_PROG(FONTFORGE, fontforge)
13598 if test -z "$FONTFORGE"; then
13599 AC_MSG_ERROR([fontforge not installed])
13602 AC_MSG_RESULT([no])
13603 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13605 AC_SUBST(FONTFORGE)
13607 dnl ===================================================================
13608 dnl Test whether to include fonts
13609 dnl ===================================================================
13610 AC_MSG_CHECKING([whether to include third-party fonts])
13611 if test "$with_fonts" != "no"; then
13612 AC_MSG_RESULT([yes])
13614 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13615 AC_DEFINE(HAVE_MORE_FONTS)
13617 AC_MSG_RESULT([no])
13619 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13621 AC_SUBST(WITH_FONTS)
13624 dnl ===================================================================
13625 dnl Test whether to enable online update service
13626 dnl ===================================================================
13627 AC_MSG_CHECKING([whether to enable online update])
13628 ENABLE_ONLINE_UPDATE=
13629 if test "$enable_online_update" = ""; then
13630 AC_MSG_RESULT([no])
13632 if test "$enable_online_update" = "mar"; then
13633 AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13634 elif test "$enable_online_update" = "yes"; then
13635 if test "$enable_curl" != "yes"; then
13636 AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13638 AC_MSG_RESULT([yes])
13639 ENABLE_ONLINE_UPDATE="TRUE"
13641 AC_MSG_RESULT([no])
13644 AC_SUBST(ENABLE_ONLINE_UPDATE)
13647 dnl ===================================================================
13648 dnl Test whether to enable mar online update service
13649 dnl ===================================================================
13650 AC_MSG_CHECKING([whether to enable mar online update])
13651 ENABLE_ONLINE_UPDATE_MAR=
13652 if test "$enable_online_update_mar" = yes; then
13653 AC_MSG_RESULT([yes])
13654 BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13655 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13656 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13658 AC_MSG_RESULT([no])
13660 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13662 AC_MSG_CHECKING([for mar online update baseurl])
13663 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13664 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13665 AC_MSG_RESULT([yes])
13667 AC_MSG_RESULT([no])
13669 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13671 AC_MSG_CHECKING([for mar online update certificateder])
13672 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13673 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13674 AC_MSG_RESULT([yes])
13676 AC_MSG_RESULT([no])
13678 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13680 AC_MSG_CHECKING([for mar online update certificatename])
13681 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13682 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13683 AC_MSG_RESULT([yes])
13685 AC_MSG_RESULT([no])
13687 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13689 AC_MSG_CHECKING([for mar online update certificatepath])
13690 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13691 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13692 AC_MSG_RESULT([yes])
13694 AC_MSG_RESULT([no])
13696 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13698 AC_MSG_CHECKING([for mar online update uploadurl])
13699 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13700 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13701 AC_MSG_RESULT([yes])
13703 AC_MSG_RESULT([no])
13705 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13708 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13709 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13710 if test "x$with_privacy_policy_url" = "xundefined"; then
13711 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13714 AC_SUBST(PRIVACY_POLICY_URL)
13715 dnl ===================================================================
13716 dnl Test whether we need bzip2
13717 dnl ===================================================================
13719 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13720 AC_MSG_CHECKING([whether to use system bzip2])
13721 if test "$with_system_bzip2" = yes; then
13723 AC_MSG_RESULT([yes])
13724 PKG_CHECK_MODULES(BZIP2, bzip2)
13725 FilterLibs "${BZIP2_LIBS}"
13726 BZIP2_LIBS="${filteredlibs}"
13728 AC_MSG_RESULT([no])
13729 BUILD_TYPE="$BUILD_TYPE BZIP2"
13732 AC_SUBST(SYSTEM_BZIP2)
13733 AC_SUBST(BZIP2_CFLAGS)
13734 AC_SUBST(BZIP2_LIBS)
13736 dnl ===================================================================
13737 dnl Test whether to enable extension update
13738 dnl ===================================================================
13739 AC_MSG_CHECKING([whether to enable extension update])
13740 ENABLE_EXTENSION_UPDATE=
13741 if test "x$enable_extension_update" = "xno"; then
13742 AC_MSG_RESULT([no])
13744 AC_MSG_RESULT([yes])
13745 ENABLE_EXTENSION_UPDATE="TRUE"
13746 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13747 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13749 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13752 dnl ===================================================================
13753 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13754 dnl ===================================================================
13755 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13756 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13757 AC_MSG_RESULT([no])
13760 AC_MSG_RESULT([yes])
13761 ENABLE_SILENT_MSI=TRUE
13762 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13764 AC_SUBST(ENABLE_SILENT_MSI)
13766 dnl ===================================================================
13767 dnl Check for WiX tools.
13768 dnl ===================================================================
13769 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13770 AC_MSG_RESULT([no])
13773 AC_MSG_RESULT([yes])
13774 # FIXME: this should do proper detection, but the path is currently
13775 # hardcoded in msicreator/createmsi.py
13776 if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13777 AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13781 AC_SUBST(ENABLE_WIX)
13783 AC_MSG_CHECKING([whether and how to use Xinerama])
13784 if test "$USING_X11" = TRUE; then
13785 if test "$x_libraries" = "default_x_libraries"; then
13786 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13787 if test "x$XINERAMALIB" = x; then
13788 XINERAMALIB="/usr/lib"
13791 XINERAMALIB="$x_libraries"
13793 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13794 # we have both versions, let the user decide but use the dynamic one
13797 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13798 XINERAMA_LINK=dynamic
13800 XINERAMA_LINK=static
13802 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13803 # we have only the dynamic version
13805 XINERAMA_LINK=dynamic
13806 elif test -e "$XINERAMALIB/libXinerama.a"; then
13808 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13810 XINERAMA_LINK=static
13820 if test "$USE_XINERAMA" = "TRUE"; then
13821 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13822 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13823 [AC_MSG_ERROR(Xinerama header not found.)], [])
13824 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13825 if test "x$XEXTLIB" = x; then
13826 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13828 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13829 if test "$_os" = "FreeBSD"; then
13830 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13832 if test "$_os" = "Linux"; then
13833 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13835 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13836 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13838 AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13843 AC_MSG_RESULT([no])
13845 AC_SUBST(XINERAMA_LINK)
13847 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13848 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13849 enable_cairo_rgba=yes
13851 if test "$enable_cairo_rgba" = yes; then
13852 AC_DEFINE(ENABLE_CAIRO_RGBA)
13853 ENABLE_CAIRO_RGBA=TRUE
13854 AC_MSG_RESULT([yes])
13857 AC_MSG_RESULT([no])
13859 AC_SUBST(ENABLE_CAIRO_RGBA)
13861 dnl ===================================================================
13862 dnl Test whether to build cairo or rely on the system version
13863 dnl ===================================================================
13865 if test "$test_cairo" = "yes"; then
13866 AC_MSG_CHECKING([whether to use the system cairo])
13868 : ${with_system_cairo:=$with_system_libs}
13869 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13871 AC_MSG_RESULT([yes])
13873 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13874 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13875 FilterLibs "${CAIRO_LIBS}"
13876 CAIRO_LIBS="${filteredlibs}"
13878 if test "$test_xrender" = "yes"; then
13879 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13881 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13882 #ifdef PictStandardA8
13886 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13891 AC_MSG_RESULT([no])
13892 BUILD_TYPE="$BUILD_TYPE CAIRO"
13895 if test "$enable_cairo_canvas" != no; then
13896 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13897 ENABLE_CAIRO_CANVAS=TRUE
13901 AC_SUBST(CAIRO_CFLAGS)
13902 AC_SUBST(CAIRO_LIBS)
13903 AC_SUBST(ENABLE_CAIRO_CANVAS)
13904 AC_SUBST(SYSTEM_CAIRO)
13906 dnl ===================================================================
13907 dnl Test whether to use avahi
13908 dnl ===================================================================
13909 if test "$_os" = "WINNT"; then
13910 # Windows uses bundled mDNSResponder
13911 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13912 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13913 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13914 [ENABLE_AVAHI="TRUE"])
13915 AC_DEFINE(HAVE_FEATURE_AVAHI)
13916 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13917 FilterLibs "${AVAHI_LIBS}"
13918 AVAHI_LIBS="${filteredlibs}"
13921 AC_SUBST(ENABLE_AVAHI)
13922 AC_SUBST(AVAHI_CFLAGS)
13923 AC_SUBST(AVAHI_LIBS)
13925 dnl ===================================================================
13926 dnl Test whether to use liblangtag
13927 dnl ===================================================================
13929 AC_MSG_CHECKING([whether to use system liblangtag])
13930 if test "$with_system_liblangtag" = yes; then
13931 SYSTEM_LIBLANGTAG=TRUE
13932 AC_MSG_RESULT([yes])
13933 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13934 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13935 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13936 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13937 FilterLibs "${LIBLANGTAG_LIBS}"
13938 LIBLANGTAG_LIBS="${filteredlibs}"
13941 AC_MSG_RESULT([no])
13942 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13943 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13944 if test "$COM" = "MSC"; then
13945 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13947 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13950 AC_SUBST(SYSTEM_LIBLANGTAG)
13951 AC_SUBST(LIBLANGTAG_CFLAGS)
13952 AC_SUBST(LIBLANGTAG_LIBS)
13954 dnl ===================================================================
13955 dnl Test whether to build libpng or rely on the system version
13956 dnl ===================================================================
13958 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13959 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13960 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13962 dnl ===================================================================
13963 dnl Test whether to build libtiff or rely on the system version
13964 dnl ===================================================================
13966 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13968 dnl ===================================================================
13969 dnl Test whether to build libwebp or rely on the system version
13970 dnl ===================================================================
13972 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13974 dnl ===================================================================
13975 dnl Check for runtime JVM search path
13976 dnl ===================================================================
13977 if test "$ENABLE_JAVA" != ""; then
13978 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13979 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13980 AC_MSG_RESULT([yes])
13981 if ! test -d "$with_jvm_path"; then
13982 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13984 if ! test -d "$with_jvm_path"jvm; then
13985 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13987 JVM_ONE_PATH_CHECK="$with_jvm_path"
13988 AC_SUBST(JVM_ONE_PATH_CHECK)
13990 AC_MSG_RESULT([no])
13994 dnl ===================================================================
13995 dnl Test for the presence of Ant and that it works
13996 dnl ===================================================================
13998 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13999 # breaks filename decoding, so for the ant section, set it to LANG
14001 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14002 ANT_HOME=; export ANT_HOME
14003 WITH_ANT_HOME=; export WITH_ANT_HOME
14004 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14005 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14006 if test "$_os" = "WINNT"; then
14007 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14009 with_ant_home="$LODE_HOME/opt/ant"
14011 elif test -x "$LODE_HOME/opt/bin/ant" ; then
14012 with_ant_home="$LODE_HOME/opt/ant"
14015 if test -z "$with_ant_home"; then
14016 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14018 if test "$_os" = "WINNT"; then
14019 # AC_PATH_PROGS needs unix path
14020 with_ant_home=`cygpath -u "$with_ant_home"`
14022 AbsolutePath "$with_ant_home"
14023 with_ant_home=$absolute_path
14024 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14025 WITH_ANT_HOME=$with_ant_home
14026 ANT_HOME=$with_ant_home
14029 if test -z "$ANT"; then
14030 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14032 # resolve relative or absolute symlink
14033 while test -h "$ANT"; do
14035 a_basename=`basename "$ANT"`
14036 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14037 cd "`dirname "$ANT"`"
14038 cd "`dirname "$a_script"`"
14039 ANT="`pwd`"/"`basename "$a_script"`"
14043 AC_MSG_CHECKING([if $ANT works])
14044 mkdir -p conftest.dir
14047 cat > conftest.java << EOF
14048 public class conftest {
14049 int testmethod(int a, int b) {
14055 cat > conftest.xml << EOF
14056 <project name="conftest" default="conftest">
14057 <target name="conftest">
14058 <javac srcdir="." includes="conftest.java">
14064 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14065 if test $? = 0 -a -f ./conftest.class; then
14066 AC_MSG_RESULT([Ant works])
14067 if test -z "$WITH_ANT_HOME"; then
14068 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14069 if test -z "$ANT_HOME"; then
14070 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14073 ANT_HOME="$WITH_ANT_HOME"
14076 echo "configure: Ant test failed" >&5
14077 cat conftest.java >&5
14078 cat conftest.xml >&5
14079 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14082 rm -fr conftest.dir
14084 if test -z "$ANT_HOME"; then
14085 ANT_HOME="NO_ANT_HOME"
14087 PathFormat "$ANT_HOME"
14088 ANT_HOME="$formatted_path"
14090 ANT="$formatted_path"
14093 dnl Checking for ant.jar
14094 if test "$ANT_HOME" != "NO_ANT_HOME"; then
14095 AC_MSG_CHECKING([Ant lib directory])
14096 if test -f $ANT_HOME/lib/ant.jar; then
14097 ANT_LIB="$ANT_HOME/lib"
14099 if test -f $ANT_HOME/ant.jar; then
14100 ANT_LIB="$ANT_HOME"
14102 if test -f /usr/share/java/ant.jar; then
14103 ANT_LIB=/usr/share/java
14105 if test -f /usr/share/ant-core/lib/ant.jar; then
14106 ANT_LIB=/usr/share/ant-core/lib
14108 if test -f $ANT_HOME/lib/ant/ant.jar; then
14109 ANT_LIB="$ANT_HOME/lib/ant"
14111 if test -f /usr/share/lib/ant/ant.jar; then
14112 ANT_LIB=/usr/share/lib/ant
14114 AC_MSG_ERROR([Ant libraries not found!])
14121 PathFormat "$ANT_LIB"
14122 ANT_LIB="$formatted_path"
14123 AC_MSG_RESULT([Ant lib directory found.])
14127 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14129 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14130 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14131 ant_version_major=`echo $ant_version | cut -d. -f1`
14132 ant_version_minor=`echo $ant_version | cut -d. -f2`
14133 echo "configure: ant_version $ant_version " >&5
14134 echo "configure: ant_version_major $ant_version_major " >&5
14135 echo "configure: ant_version_minor $ant_version_minor " >&5
14136 if test "$ant_version_major" -ge "2"; then
14137 AC_MSG_RESULT([yes, $ant_version])
14138 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14139 AC_MSG_RESULT([yes, $ant_version])
14141 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14144 rm -f conftest* core core.* *.core
14152 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14153 AC_MSG_CHECKING([for JUnit 4])
14154 if test "$with_junit" = "yes"; then
14155 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14156 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14157 elif test -e /usr/share/java/junit4.jar; then
14158 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14160 if test -e /usr/share/lib/java/junit.jar; then
14161 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14163 OOO_JUNIT_JAR=/usr/share/java/junit.jar
14167 OOO_JUNIT_JAR=$with_junit
14169 if test "$_os" = "WINNT"; then
14170 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14172 printf 'import org.junit.Before;' > conftest.java
14173 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14174 AC_MSG_RESULT([$OOO_JUNIT_JAR])
14177 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14178 specify its pathname via --with-junit=..., or disable it via --without-junit])
14180 rm -f conftest.class conftest.java
14181 if test $OOO_JUNIT_JAR != ""; then
14182 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14185 AC_MSG_CHECKING([for included Hamcrest])
14186 printf 'import org.hamcrest.BaseDescription;' > conftest.java
14187 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14188 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14190 AC_MSG_RESULT([Not included])
14191 AC_MSG_CHECKING([for standalone hamcrest jar.])
14192 if test "$with_hamcrest" = "yes"; then
14193 if test -e /usr/share/lib/java/hamcrest.jar; then
14194 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14195 elif test -e /usr/share/java/hamcrest/core.jar; then
14196 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14197 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14198 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14200 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14203 HAMCREST_JAR=$with_hamcrest
14205 if test "$_os" = "WINNT"; then
14206 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14208 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14209 AC_MSG_RESULT([$HAMCREST_JAR])
14211 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),
14212 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14215 rm -f conftest.class conftest.java
14217 AC_SUBST(OOO_JUNIT_JAR)
14218 AC_SUBST(HAMCREST_JAR)
14219 # set back LC_ALL to C after the java related tests...
14225 # check for wget and curl
14230 if test "$enable_fetch_external" != "no"; then
14232 CURL=`which curl 2>/dev/null`
14234 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14236 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14237 if test $? -eq 0; then
14243 if test -z "$WGET" -a -z "$CURL"; then
14244 AC_MSG_ERROR([neither wget nor curl found!])
14253 # check for sha256sum
14257 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14258 eval "$i -a 256 --version" > /dev/null 2>&1
14260 if test $ret -eq 0; then
14261 SHA256SUM="$i -a 256"
14266 if test -z "$SHA256SUM"; then
14267 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14268 eval "$i --version" > /dev/null 2>&1
14270 if test $ret -eq 0; then
14277 if test -z "$SHA256SUM"; then
14278 AC_MSG_ERROR([no sha256sum found!])
14281 AC_SUBST(SHA256SUM)
14283 dnl ===================================================================
14284 dnl Dealing with l10n options
14285 dnl ===================================================================
14286 AC_MSG_CHECKING([which languages to be built])
14287 # get list of all languages
14288 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14289 # the sed command does the following:
14290 # + if a line ends with a backslash, append the next line to it
14291 # + adds " on the beginning of the value (after =)
14292 # + adds " at the end of the value
14293 # + removes en-US; we want to put it on the beginning
14294 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14295 [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)]
14296 ALL_LANGS="en-US $completelangiso"
14297 # check the configured localizations
14298 WITH_LANG="$with_lang"
14300 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14301 # (Norwegian is "nb" and "nn".)
14302 if test "$WITH_LANG" = "no"; then
14306 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14307 AC_MSG_RESULT([en-US])
14309 AC_MSG_RESULT([$WITH_LANG])
14310 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14311 if test -z "$MSGFMT"; then
14312 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14313 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14314 elif test -x "/opt/lo/bin/msgfmt"; then
14315 MSGFMT="/opt/lo/bin/msgfmt"
14317 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14318 if test -z "$MSGFMT"; then
14319 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14323 if test -z "$MSGUNIQ"; then
14324 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14325 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14326 elif test -x "/opt/lo/bin/msguniq"; then
14327 MSGUNIQ="/opt/lo/bin/msguniq"
14329 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14330 if test -z "$MSGUNIQ"; then
14331 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14338 # check that the list is valid
14339 for lang in $WITH_LANG; do
14340 test "$lang" = "ALL" && continue
14341 # need to check for the exact string, so add space before and after the list of all languages
14342 for vl in $ALL_LANGS; do
14343 if test "$vl" = "$lang"; then
14347 if test "$vl" != "$lang"; then
14348 # if you're reading this - you prolly quoted your languages remove the quotes ...
14349 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14352 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14353 echo $WITH_LANG | grep -q en-US
14354 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14356 # list with substituted ALL
14357 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14358 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14359 test "$WITH_LANG" = "en-US" && WITH_LANG=
14360 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14361 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14362 ALL_LANGS=`echo $ALL_LANGS qtz`
14364 AC_SUBST(ALL_LANGS)
14365 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14366 AC_SUBST(WITH_LANG)
14367 AC_SUBST(WITH_LANG_LIST)
14368 AC_SUBST(GIT_NEEDED_SUBMODULES)
14370 WITH_POOR_HELP_LOCALIZATIONS=
14371 if test -d "$SRC_ROOT/translations/source"; then
14372 for l in `ls -1 $SRC_ROOT/translations/source`; do
14373 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14374 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14378 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14380 if test -n "$with_locales" -a "$with_locales" != ALL; then
14381 WITH_LOCALES="$with_locales"
14383 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14384 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14385 # config_host/config_locales.h.in
14386 for locale in $WITH_LOCALES; do
14389 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14393 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14396 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14401 AC_DEFINE(WITH_LOCALE_ALL)
14403 AC_SUBST(WITH_LOCALES)
14405 dnl git submodule update --reference
14406 dnl ===================================================================
14407 if test -n "${GIT_REFERENCE_SRC}"; then
14408 for repo in ${GIT_NEEDED_SUBMODULES}; do
14409 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14410 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14414 AC_SUBST(GIT_REFERENCE_SRC)
14416 dnl git submodules linked dirs
14417 dnl ===================================================================
14418 if test -n "${GIT_LINK_SRC}"; then
14419 for repo in ${GIT_NEEDED_SUBMODULES}; do
14420 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14421 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14425 AC_SUBST(GIT_LINK_SRC)
14428 dnl ===================================================================
14429 AC_MSG_CHECKING([for alternative branding images directory])
14430 # initialize mapped arrays
14431 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14432 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14434 if test -z "$with_branding" -o "$with_branding" = "no"; then
14435 AC_MSG_RESULT([none])
14436 DEFAULT_BRAND_IMAGES="$brand_files"
14438 if ! test -d $with_branding ; then
14439 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14441 AC_MSG_RESULT([$with_branding])
14442 CUSTOM_BRAND_DIR="$with_branding"
14443 for lfile in $brand_files
14445 if ! test -f $with_branding/$lfile ; then
14446 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14447 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14449 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14452 check_for_progress="yes"
14455 AC_SUBST([BRAND_INTRO_IMAGES])
14456 AC_SUBST([CUSTOM_BRAND_DIR])
14457 AC_SUBST([CUSTOM_BRAND_IMAGES])
14458 AC_SUBST([DEFAULT_BRAND_IMAGES])
14461 AC_MSG_CHECKING([for 'intro' progress settings])
14465 PROGRESSFRAMECOLOR=
14467 PROGRESSTEXTBASELINE=
14469 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14470 source "$with_branding/progress.conf"
14471 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14473 AC_MSG_RESULT([none])
14476 AC_SUBST(PROGRESSBARCOLOR)
14477 AC_SUBST(PROGRESSSIZE)
14478 AC_SUBST(PROGRESSPOSITION)
14479 AC_SUBST(PROGRESSFRAMECOLOR)
14480 AC_SUBST(PROGRESSTEXTCOLOR)
14481 AC_SUBST(PROGRESSTEXTBASELINE)
14484 dnl ===================================================================
14485 dnl Custom build version
14486 dnl ===================================================================
14487 AC_MSG_CHECKING([for extra build ID])
14488 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14489 EXTRA_BUILDID="$with_extra_buildid"
14491 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14492 if test -n "$EXTRA_BUILDID" ; then
14493 AC_MSG_RESULT([$EXTRA_BUILDID])
14495 AC_MSG_RESULT([not set])
14497 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14500 AC_MSG_CHECKING([for vendor])
14501 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14502 OOO_VENDOR="$USERNAME"
14504 if test -z "$OOO_VENDOR"; then
14508 if test -z "$OOO_VENDOR"; then
14509 OOO_VENDOR="`id -u -n`"
14512 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14514 OOO_VENDOR="$with_vendor"
14515 AC_MSG_RESULT([$OOO_VENDOR])
14517 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14518 AC_SUBST(OOO_VENDOR)
14520 if test "$_os" = "Android" ; then
14521 ANDROID_PACKAGE_NAME=
14522 AC_MSG_CHECKING([for Android package name])
14523 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14524 if test -n "$ENABLE_DEBUG"; then
14525 # Default to the package name that makes ndk-gdb happy.
14526 ANDROID_PACKAGE_NAME="org.libreoffice"
14528 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14531 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14533 ANDROID_PACKAGE_NAME="$with_android_package_name"
14534 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14536 AC_SUBST(ANDROID_PACKAGE_NAME)
14539 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14540 if test "$with_compat_oowrappers" = "yes"; then
14541 WITH_COMPAT_OOWRAPPERS=TRUE
14544 WITH_COMPAT_OOWRAPPERS=
14547 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14549 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14550 AC_MSG_CHECKING([for install dirname])
14551 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14552 INSTALLDIRNAME="$with_install_dirname"
14554 AC_MSG_RESULT([$INSTALLDIRNAME])
14555 AC_SUBST(INSTALLDIRNAME)
14557 AC_MSG_CHECKING([for prefix])
14558 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14559 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14560 PREFIXDIR="$prefix"
14561 AC_MSG_RESULT([$PREFIXDIR])
14562 AC_SUBST(PREFIXDIR)
14564 LIBDIR=[$(eval echo $(eval echo $libdir))]
14567 DATADIR=[$(eval echo $(eval echo $datadir))]
14570 MANDIR=[$(eval echo $(eval echo $mandir))]
14573 DOCDIR=[$(eval echo $(eval echo $docdir))]
14576 BINDIR=[$(eval echo $(eval echo $bindir))]
14579 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14580 AC_SUBST(INSTALLDIR)
14582 TESTINSTALLDIR="${BUILDDIR}/test-install"
14583 AC_SUBST(TESTINSTALLDIR)
14586 # ===================================================================
14587 # OAuth2 id and secrets
14588 # ===================================================================
14590 AC_MSG_CHECKING([for Google Drive client id and secret])
14591 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14592 AC_MSG_RESULT([not set])
14593 GDRIVE_CLIENT_ID="\"\""
14594 GDRIVE_CLIENT_SECRET="\"\""
14596 AC_MSG_RESULT([set])
14597 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14598 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14600 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14601 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14603 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14604 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14605 AC_MSG_RESULT([not set])
14606 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14607 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14609 AC_MSG_RESULT([set])
14610 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14611 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14613 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14614 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14616 AC_MSG_CHECKING([for OneDrive client id and secret])
14617 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14618 AC_MSG_RESULT([not set])
14619 ONEDRIVE_CLIENT_ID="\"\""
14620 ONEDRIVE_CLIENT_SECRET="\"\""
14622 AC_MSG_RESULT([set])
14623 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14624 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14626 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14627 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14630 dnl ===================================================================
14631 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14632 dnl --enable-dependency-tracking configure option
14633 dnl ===================================================================
14634 AC_MSG_CHECKING([whether to enable dependency tracking])
14635 if test "$enable_dependency_tracking" = "no"; then
14637 AC_MSG_RESULT([no])
14639 AC_MSG_RESULT([yes])
14643 dnl ===================================================================
14644 dnl Number of CPUs to use during the build
14645 dnl ===================================================================
14646 AC_MSG_CHECKING([for number of processors to use])
14647 # plain --with-parallelism is just the default
14648 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14649 if test "$with_parallelism" = "no"; then
14652 PARALLELISM=$with_parallelism
14655 if test "$enable_icecream" = "yes"; then
14660 Darwin|FreeBSD|NetBSD|OpenBSD)
14661 PARALLELISM=`sysctl -n hw.ncpu`
14665 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14667 # what else than above does profit here *and* has /proc?
14669 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14673 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14674 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14678 if test $PARALLELISM -eq 0; then
14679 AC_MSG_RESULT([explicit make -j option needed])
14681 AC_MSG_RESULT([$PARALLELISM])
14683 AC_SUBST(PARALLELISM)
14686 # Set up ILIB for MSVC build
14689 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14691 if test -n "$JAVA_HOME"; then
14692 ILIB="$ILIB;$JAVA_HOME/lib"
14695 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14696 ILIB="$ILIB;$formatted_path"
14697 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14698 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14699 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14700 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14701 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14702 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14704 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14705 ucrtlibpath_formatted=$formatted_path
14706 ILIB="$ILIB;$ucrtlibpath_formatted"
14707 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14708 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14709 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14710 ILIB="$ILIB;$formatted_path"
14712 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14713 ILIB="$ILIB;$formatted_path"
14716 if test "$cross_compiling" != "yes"; then
14717 ILIB_FOR_BUILD="$ILIB"
14721 AC_SUBST(ILIB_FOR_BUILD)
14723 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14724 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14725 dnl from consteval constructor initializing const variable",
14726 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14727 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14728 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14729 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14730 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14731 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14732 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14733 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14734 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14735 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14736 AC_LANG_PUSH([C++])
14738 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14739 CXX="env LIB=$ILIB $CXX"
14741 save_CXXFLAGS=$CXXFLAGS
14742 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14743 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14745 consteval S() { i = 1; }
14752 consteval S1(int n): a(n) {}
14768 struct S4 { consteval S4() = default; };
14769 void f4(bool b) { b ? S4() : S4(); }
14772 consteval S5() { c = 0; }
14773 char * f() { return &c; }
14779 auto s5 = S5().f();
14781 return (s.i == 1) ? 0 : 1;
14783 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14784 AC_MSG_RESULT([yes])
14785 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14787 CXXFLAGS=$save_CXXFLAGS
14790 # ===================================================================
14791 # Creating bigger shared library to link against
14792 # ===================================================================
14793 AC_MSG_CHECKING([whether to create huge library])
14796 if test $_os = iOS -o $_os = Android; then
14797 # Never any point in mergelibs for these as we build just static
14798 # libraries anyway...
14799 enable_mergelibs=no
14802 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14803 if test $_os != Linux -a $_os != WINNT; then
14804 add_warning "--enable-mergelibs is not tested for this platform"
14807 AC_MSG_RESULT([yes])
14808 AC_DEFINE(ENABLE_MERGELIBS)
14810 AC_MSG_RESULT([no])
14812 AC_SUBST([MERGELIBS])
14814 dnl ===================================================================
14815 dnl icerun is a wrapper that stops us spawning tens of processes
14816 dnl locally - for tools that can't be executed on the compile cluster
14817 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14818 dnl ===================================================================
14819 AC_MSG_CHECKING([whether to use icerun wrapper])
14821 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14822 ICECREAM_RUN=icerun
14823 AC_MSG_RESULT([yes])
14825 AC_MSG_RESULT([no])
14827 AC_SUBST(ICECREAM_RUN)
14829 dnl ===================================================================
14830 dnl Setup the ICECC_VERSION for the build the same way it was set for
14831 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14832 dnl ===================================================================
14833 x_ICECC_VERSION=[\#]
14834 if test -n "$ICECC_VERSION" ; then
14837 AC_SUBST(x_ICECC_VERSION)
14838 AC_SUBST(ICECC_VERSION)
14840 dnl ===================================================================
14842 AC_MSG_CHECKING([MPL subset])
14846 if test "$enable_mpl_subset" = "yes"; then
14850 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14852 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14855 if test "$warn_report" = "true"; then
14856 mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14858 if test "x$enable_postgresql_sdbc" != "xno"; then
14859 mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14861 if test "$enable_lotuswordpro" = "yes"; then
14862 mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14864 if test -n "$ENABLE_POPPLER"; then
14865 if test "x$SYSTEM_POPPLER" = "x"; then
14866 mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14869 # cf. m4/libo_check_extension.m4
14870 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14871 mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14875 for theme in $WITH_THEMES; do
14877 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14878 denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14880 filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14883 if test "x$denied_themes" != "x"; then
14884 if test "x$filtered_themes" == "x"; then
14885 filtered_themes="colibre"
14887 mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14890 ENABLE_OPENGL_TRANSITIONS=
14892 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14893 mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14896 if test "x$mpl_error_string" != "x"; then
14897 AC_MSG_ERROR([$mpl_error_string])
14902 AC_DEFINE(MPL_HAVE_SUBSET)
14903 AC_MSG_RESULT([only])
14905 AC_MSG_RESULT([no restrictions])
14907 AC_SUBST(MPL_SUBSET)
14910 dnl ===================================================================
14912 AC_MSG_CHECKING([formula logger])
14913 ENABLE_FORMULA_LOGGER=
14915 if test "x$enable_formula_logger" = "xyes"; then
14916 AC_MSG_RESULT([yes])
14917 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14918 ENABLE_FORMULA_LOGGER=TRUE
14919 elif test -n "$ENABLE_DBGUTIL" ; then
14920 AC_MSG_RESULT([yes])
14921 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14922 ENABLE_FORMULA_LOGGER=TRUE
14924 AC_MSG_RESULT([no])
14927 AC_SUBST(ENABLE_FORMULA_LOGGER)
14929 dnl ===================================================================
14930 dnl Checking for active Antivirus software.
14931 dnl ===================================================================
14933 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14934 AC_MSG_CHECKING([for active Antivirus software])
14935 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14936 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14937 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14938 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14939 AC_MSG_RESULT([found])
14940 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14941 echo $EICAR_STRING > $SRC_ROOT/eicar
14942 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14944 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14945 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14947 echo $EICAR_STRING > $BUILDDIR/eicar
14948 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14950 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14951 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14953 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"
14955 AC_MSG_RESULT([not found])
14958 AC_MSG_RESULT([n/a])
14962 dnl ===================================================================
14964 AC_MSG_CHECKING([for coredumpctl support])
14965 if test -z "$with_coredumpctl" && test $_os != Linux; then
14966 with_coredumpctl=no
14968 if test "$with_coredumpctl" = no; then
14971 AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14972 AC_PATH_PROG(JQ, jq)
14973 AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14974 AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14975 if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14976 || test -z "$SYSTEMD_RUN"
14978 if test -z "$with_coredumpctl"; then
14981 if test -z "$COREDUMPCTL"; then
14982 AC_MSG_ERROR([coredumpctl not found])
14984 if test -z "$JQ"; then
14985 AC_MSG_ERROR([jq not found])
14987 if test -z "$SYSTEMD_ESCAPE"; then
14988 AC_MSG_ERROR([systemd-escape not found])
14990 if test -z "$SYSTEMD_RUN"; then
14991 AC_MSG_ERROR([systemd-run not found])
14995 WITH_COREDUMPCTL=TRUE
14998 if test -z "$WITH_COREDUMPCTL"; then
14999 AC_MSG_RESULT([no])
15001 AC_MSG_RESULT([yes])
15003 AC_SUBST(COREDUMPCTL)
15005 AC_SUBST(SYSTEMD_ESCAPE)
15006 AC_SUBST(SYSTEMD_RUN)
15007 AC_SUBST(WITH_COREDUMPCTL)
15009 dnl ===================================================================
15010 dnl Setting up the environment.
15011 dnl ===================================================================
15012 AC_MSG_NOTICE([setting up the build environment variables...])
15016 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15017 if test -d "$COMPATH/atlmfc/lib/spectre"; then
15018 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15019 ATL_INCLUDE="$COMPATH/atlmfc/include"
15020 elif test -d "$COMPATH/atlmfc/lib"; then
15021 ATL_LIB="$COMPATH/atlmfc/lib"
15022 ATL_INCLUDE="$COMPATH/atlmfc/include"
15024 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15025 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15027 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15028 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15029 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15032 if test "$build_os" = "cygwin"; then
15033 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15034 PathFormat "/usr/bin/find.exe"
15035 FIND="$formatted_path"
15036 PathFormat "/usr/bin/sort.exe"
15037 SORT="$formatted_path"
15038 PathFormat "/usr/bin/grep.exe"
15039 WIN_GREP="$formatted_path"
15040 PathFormat "/usr/bin/ls.exe"
15041 WIN_LS="$formatted_path"
15042 PathFormat "/usr/bin/touch.exe"
15043 WIN_TOUCH="$formatted_path"
15049 AC_SUBST(ATL_INCLUDE)
15055 AC_SUBST(WIN_TOUCH)
15057 AC_SUBST(BUILD_TYPE)
15062 PERL="$formatted_path"
15065 if test -n "$TMPDIR"; then
15066 TEMP_DIRECTORY="$TMPDIR"
15068 TEMP_DIRECTORY="/tmp"
15070 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15071 if test "$build_os" = "cygwin"; then
15072 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15073 CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15075 AC_SUBST(TEMP_DIRECTORY)
15076 AC_SUBST(CYGWIN_BASH)
15078 # setup the PATH for the environment
15079 if test -n "$LO_PATH_FOR_BUILD"; then
15080 LO_PATH="$LO_PATH_FOR_BUILD"
15083 pathmunge "$MSVC_HOST_PATH" "before"
15091 dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15092 if test "$ENABLE_JAVA" != ""; then
15093 pathmunge "$JAVA_HOME/bin" "after"
15098 # Win32 make needs native paths
15099 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15100 LO_PATH=`cygpath -p -m "$PATH"`
15102 if test "$WIN_BUILD_ARCH" = "x64"; then
15103 # needed for msi packaging
15104 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15106 if test "$WIN_BUILD_ARCH" = "arm64"; then
15107 # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15108 # the x86 ones probably would work just as well...
15109 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15111 # .NET 4.6 and higher don't have bin directory
15112 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15113 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15115 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15116 pathmunge "$CSC_PATH" "before"
15117 pathmunge "$MIDL_PATH" "before"
15118 pathmunge "$AL_PATH" "before"
15119 pathmunge "$MSVC_MULTI_PATH" "before"
15120 pathmunge "$MSVC_BUILD_PATH" "before"
15121 if test -n "$MSBUILD_PATH" ; then
15122 pathmunge "$MSBUILD_PATH" "before"
15124 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15125 if test "$ENABLE_JAVA" != ""; then
15126 if test -d "$JAVA_HOME/jre/bin/client"; then
15127 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15129 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15130 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15132 pathmunge "$JAVA_HOME/bin" "before"
15134 pathmunge "$MSVC_HOST_PATH" "before"
15138 pathmunge "/usr/css/bin" "before"
15139 if test "$ENABLE_JAVA" != ""; then
15140 pathmunge "$JAVA_HOME/bin" "after"
15148 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15149 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15150 x_LO_ELFCHECK_ALLOWLIST=
15152 x_LO_ELFCHECK_ALLOWLIST=[\#]
15154 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15155 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15159 # Generate a configuration sha256 we can use for deps
15160 if test -f config_host.mk; then
15161 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15163 if test -f config_host_lang.mk; then
15164 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15167 CFLAGS=$my_original_CFLAGS
15168 CXXFLAGS=$my_original_CXXFLAGS
15169 CPPFLAGS=$my_original_CPPFLAGS
15171 AC_CONFIG_LINKS([include:include])
15173 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15174 # BUILD platform configuration] - otherwise breaks cross building
15175 AC_CONFIG_FILES([config_host.mk
15176 config_host_lang.mk
15178 bin/bffvalidator.sh
15179 bin/odfvalidator.sh
15181 instsetoo_native/util/openoffice.lst
15182 sysui/desktop/macosx/Info.plist
15183 hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15184 lo.xcent:sysui/desktop/macosx/lo.xcent.in
15185 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15187 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15188 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15189 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15190 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15191 AC_CONFIG_HEADERS([config_host/config_clang.h])
15192 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15193 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15194 AC_CONFIG_HEADERS([config_host/config_eot.h])
15195 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15196 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15197 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15198 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15199 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15200 AC_CONFIG_HEADERS([config_host/config_features.h])
15201 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15202 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15203 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15204 AC_CONFIG_HEADERS([config_host/config_folders.h])
15205 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15206 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15207 AC_CONFIG_HEADERS([config_host/config_gio.h])
15208 AC_CONFIG_HEADERS([config_host/config_global.h])
15209 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15210 AC_CONFIG_HEADERS([config_host/config_java.h])
15211 AC_CONFIG_HEADERS([config_host/config_langs.h])
15212 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15213 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15214 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15215 AC_CONFIG_HEADERS([config_host/config_locales.h])
15216 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15217 AC_CONFIG_HEADERS([config_host/config_oox.h])
15218 AC_CONFIG_HEADERS([config_host/config_options.h])
15219 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15220 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15221 AC_CONFIG_HEADERS([config_host/config_skia.h])
15222 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15223 AC_CONFIG_HEADERS([config_host/config_validation.h])
15224 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15225 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15226 AC_CONFIG_HEADERS([config_host/config_version.h])
15227 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15228 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15229 AC_CONFIG_HEADERS([config_host/config_python.h])
15230 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15231 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15232 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15235 if test "$CROSS_COMPILING" = TRUE; then
15236 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15239 # touch the config timestamp file
15240 if test ! -f config_host.mk.stamp; then
15241 echo > config_host.mk.stamp
15242 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15243 echo "Host Configuration unchanged - avoiding scp2 stamp update"
15245 echo > config_host.mk.stamp
15248 # touch the config lang timestamp file
15249 if test ! -f config_host_lang.mk.stamp; then
15250 echo > config_host_lang.mk.stamp
15251 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15252 echo "Language Configuration unchanged - avoiding scp2 stamp update"
15254 echo > config_host_lang.mk.stamp
15258 if test \( "$STALE_MAKE" = "TRUE" \) \
15259 -a "$build_os" = "cygwin"; then
15262 ****************************************************************************
15264 Your make version is known to be horribly slow, and hard to debug
15265 problems with. To get a reasonably functional make please do:
15267 to install a pre-compiled binary make for Win32
15269 mkdir -p /opt/lo/bin
15271 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15272 cp make-4.2.1-msvc.exe make
15275 to install from source:
15276 place yourself in a working directory of you choice.
15278 git clone git://git.savannah.gnu.org/make.git
15280 [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"]
15281 set PATH=%PATH%;C:\Cygwin\bin
15282 [or Cygwin64, if that is what you have]
15283 cd path-to-make-repo-you-cloned-above
15284 build_w32.bat --without-guile
15286 should result in a WinRel/gnumake.exe.
15287 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15289 Then re-run autogen.sh
15291 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15292 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15299 ****************************************************************************
15301 To show information on various make targets and make flags, run:
15304 To just build, run:
15309 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15311 After the build has finished successfully, you can immediately run what you built using the command:
15314 if test $_os = Darwin; then
15315 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15317 echo instdir/program/soffice
15321 If you want to run the unit tests, run:
15327 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15328 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15329 cat "$WARNINGS_FILE_FOR_BUILD"
15333 if test -s "$WARNINGS_FILE"; then
15334 echo "HOST config ($WARNINGS_FILE)"
15335 cat "$WARNINGS_FILE"
15338 # Remove unneeded emconfigure artifacts
15339 rm -f a.out a.wasm a.out.js a.out.wasm
15341 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: