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.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
205 # Convert to unix path, mkdir would treat c:/path as a relative path.
207 local rel="$formatted_path_unix"
209 test ! -e "$rel" && mkdir -p "$rel"
210 if test -d "$rel" ; then
211 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212 absolute_path="$(pwd)"
215 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
225 if test "$have_WARNINGS" = "no"; then
226 echo "*************************************" > "$WARNINGS_FILE"
228 if 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 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 # replace backslashes, to get a valid c++ string
526 config_args=$(echo $ac_configure_args | tr '\\' '/')
527 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
529 dnl ===================================================================
531 dnl ===================================================================
532 AC_MSG_CHECKING([for product version])
533 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
534 AC_MSG_RESULT([$PRODUCTVERSION])
535 AC_SUBST(PRODUCTVERSION)
538 # AC_PROG_EGREP doesn't set GREP on all systems as well
539 AC_PATH_PROG(GREP, grep)
547 dnl ======================================
548 dnl Required GObject introspection version
549 dnl ======================================
550 INTROSPECTION_REQUIRED_VERSION=1.32.0
552 dnl ===================================================================
553 dnl Search all the common names for GNU Make
554 dnl ===================================================================
555 AC_MSG_CHECKING([for GNU Make])
557 # try to use our own make if it is available and GNUMAKE was not already defined
558 if test -z "$GNUMAKE"; then
559 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
560 GNUMAKE="$LODE_HOME/opt/bin/make"
561 elif test -x "/opt/lo/bin/make"; then
562 GNUMAKE="/opt/lo/bin/make"
567 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
568 if test -n "$a"; then
569 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
570 if test $? -eq 0; then
571 if test "$build_os" = "cygwin"; then
572 if test -n "$($a -v | grep 'Built for Windows')" ; then
573 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
574 GNUMAKE_WIN_NATIVE="TRUE"
585 AC_MSG_RESULT($GNUMAKE)
586 if test -z "$GNUMAKE"; then
587 AC_MSG_ERROR([not found. install GNU Make.])
589 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
590 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
594 win_short_path_for_make()
596 local short_path="$1"
597 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
598 cygpath -sm "$short_path"
600 cygpath -u "$(cygpath -d "$short_path")"
605 if test "$build_os" = "cygwin"; then
606 PathFormat "$SRC_ROOT"
607 SRC_ROOT="$formatted_path"
608 PathFormat "$BUILDDIR"
609 BUILDDIR="$formatted_path"
611 AC_MSG_CHECKING(for explicit COMSPEC)
612 if test -z "$COMSPEC"; then
613 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
615 AC_MSG_RESULT([found: $COMSPEC])
622 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
623 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
624 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
626 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
627 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
630 # need sed in os checks...
631 AC_PATH_PROGS(SED, sed)
632 if test -z "$SED"; then
633 AC_MSG_ERROR([install sed to run this script])
636 # Set the ENABLE_LTO variable
637 # ===================================================================
638 AC_MSG_CHECKING([whether to use link-time optimization])
639 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
648 AC_ARG_ENABLE(fuzz-options,
649 AS_HELP_STRING([--enable-fuzz-options],
650 [Randomly enable or disable each of those configurable options
651 that are supposed to be freely selectable without interdependencies,
652 or where bad interaction from interdependencies is automatically avoided.])
655 dnl ===================================================================
656 dnl When building for Android, --with-android-ndk,
657 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
659 dnl ===================================================================
661 AC_ARG_WITH(android-ndk,
662 AS_HELP_STRING([--with-android-ndk],
663 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
666 AC_ARG_WITH(android-ndk-toolchain-version,
667 AS_HELP_STRING([--with-android-ndk-toolchain-version],
668 [Specify which toolchain version to use, of those present in the
669 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
670 with_android_ndk_toolchain_version=clang5.0)
672 AC_ARG_WITH(android-sdk,
673 AS_HELP_STRING([--with-android-sdk],
674 [Specify location of the Android SDK. Mandatory when building for Android.]),
677 AC_ARG_WITH(android-api-level,
678 AS_HELP_STRING([--with-android-api-level],
679 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
683 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
684 with_android_ndk="$SRC_ROOT/external/android-ndk"
686 if test -n "$with_android_ndk"; then
687 eval ANDROID_NDK_DIR=$with_android_ndk
690 if test -n "$with_android_api_level" ; then
691 ANDROID_API_LEVEL="$with_android_api_level"
694 if test $host_cpu = arm; then
695 LLVM_TRIPLE=armv7a-linux-androideabi
696 ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
697 ANDROID_APP_ABI=armeabi-v7a
698 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
699 elif test $host_cpu = aarch64; then
700 LLVM_TRIPLE=aarch64-linux-android
701 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
702 # minimum android version that supports aarch64
703 if test "$ANDROID_API_LEVEL" -lt "21" ; then
706 ANDROID_APP_ABI=arm64-v8a
707 elif test $host_cpu = x86_64; then
708 LLVM_TRIPLE=x86_64-linux-android
709 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
710 # minimum android version that supports x86_64
712 ANDROID_APP_ABI=x86_64
714 # host_cpu is something like "i386" or "i686" I guess, NDK uses
715 # "x86" in some contexts
716 LLVM_TRIPLE=i686-linux-android
717 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
721 # Set up a lot of pre-canned defaults
723 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
724 if test ! -f $ANDROID_NDK_DIR/source.properties; then
725 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
727 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
729 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
731 if test -z "$ANDROID_NDK_VERSION"; then
732 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
734 case $ANDROID_NDK_VERSION in
736 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
738 11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
739 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
744 # NDK 24 dropped support for API levels < 19
745 if test "$ANDROID_API_LEVEL" -lt "19"; then
748 case $ANDROID_NDK_VERSION in
752 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
753 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
759 case "$with_android_ndk_toolchain_version" in
761 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
764 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
767 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
769 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
770 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
771 # manage to link the (app-specific) single huge .so that is built for the app in
772 # android/source/ if there is debug information in a significant part of the object files.
773 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
774 # all objects have been built with debug information.)
777 android_HOST_TAG=linux-x86_64
780 android_HOST_TAG=darwin-x86_64
783 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
784 # ndk would also support windows and windows-x86_64
787 ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
788 ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
790 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
791 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
792 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
793 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
794 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
796 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
797 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
798 if test "$ENABLE_LTO" = TRUE; then
799 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
800 # $CC and $CXX when building external libraries
801 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
804 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
806 if test -z "$CC"; then
807 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
810 if test -z "$CXX"; then
811 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
815 AC_SUBST(ANDROID_NDK_DIR)
816 AC_SUBST(ANDROID_API_LEVEL)
817 AC_SUBST(ANDROID_APP_ABI)
818 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
819 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
820 AC_SUBST(ANDROID_TOOLCHAIN)
822 dnl ===================================================================
823 dnl --with-android-sdk
824 dnl ===================================================================
826 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
827 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
829 if test -n "$with_android_sdk"; then
830 eval ANDROID_SDK_DIR=$with_android_sdk
831 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
833 AC_SUBST(ANDROID_SDK_DIR)
835 AC_ARG_ENABLE([android-lok],
836 AS_HELP_STRING([--enable-android-lok],
837 [The Android app from the android/ subdir needs several tweaks all
838 over the place that break the LOK when used in the Online-based
839 Android app. This switch indicates that the intent of this build is
840 actually the Online-based, non-modified LOK.])
843 if test -n "$ANDROID_NDK_DIR" ; then
844 if test "$enable_android_lok" = yes; then
845 ENABLE_ANDROID_LOK=TRUE
846 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
847 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
849 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
852 AC_SUBST([ENABLE_ANDROID_LOK])
854 libo_FUZZ_ARG_ENABLE([android-editing],
855 AS_HELP_STRING([--enable-android-editing],
856 [Enable the experimental editing feature on Android.])
858 ENABLE_ANDROID_EDITING=
859 if test "$enable_android_editing" = yes; then
860 ENABLE_ANDROID_EDITING=TRUE
862 AC_SUBST([ENABLE_ANDROID_EDITING])
864 disable_database_connectivity_dependencies()
867 enable_firebird_sdbc=no
868 enable_mariadb_sdbc=no
869 enable_postgresql_sdbc=no
870 enable_report_builder=no
873 # ===================================================================
875 # Start initial platform setup
877 # The using_* variables reflect platform support and should not be
878 # changed after the "End initial platform setup" block.
879 # This is also true for most test_* variables.
880 # ===================================================================
889 # There is currently just iOS not using salplug, so this explicitly enables it.
890 # must: using_freetype_fontconfig
891 # may: using_headless_plugin defaults to $using_freetype_fontconfig
894 # Default values, as such probably valid just for Linux, set
895 # differently below just for Mac OSX, but at least better than
896 # hardcoding these as we used to do. Much of this is duplicated also
897 # in solenv for old build system and for gbuild, ideally we should
898 # perhaps define stuff like this only here in configure.ac?
900 LINKFLAGSSHL="-shared"
904 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
907 INSTROOTCONTENTSUFFIX=
910 HOST_PLATFORM="$host"
912 host_cpu_for_clang="$host_cpu"
917 using_freetype_fontconfig=yes
922 dnl ===========================================================
923 dnl Check whether we're using Solaris 10 - SPARC or Intel.
924 dnl ===========================================================
925 AC_MSG_CHECKING([the Solaris operating system release])
926 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
927 if test "$_os_release" -lt "10"; then
928 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
930 AC_MSG_RESULT([ok ($_os_release)])
933 dnl Check whether we're using a SPARC or i386 processor
934 AC_MSG_CHECKING([the processor type])
935 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
936 AC_MSG_RESULT([ok ($host_cpu)])
938 AC_MSG_ERROR([only SPARC and i386 processors are supported])
942 linux-gnu*|k*bsd*-gnu*|linux-musl*)
943 using_freetype_fontconfig=yes
948 if test "$enable_fuzzers" = yes; then
949 test_system_freetype=no
955 using_freetype_fontconfig=yes
961 # When building on Windows normally with MSVC under Cygwin,
962 # configure thinks that the host platform (the platform the
963 # built code will run on) is Cygwin, even if it obviously is
964 # Windows, which in Autoconf terminology is called
965 # "mingw32". (Which is misleading as MinGW is the name of the
966 # tool-chain, not an operating system.)
968 # Somewhat confusing, yes. But this configure script doesn't
969 # look at $host etc that much, it mostly uses its own $_os
970 # variable, set here in this case statement.
972 using_freetype_fontconfig=no
983 if test "$host_cpu" = "aarch64"; then
987 enable_firebird_sdbc=no
992 using_freetype_fontconfig=no
996 if test -n "$LODE_HOME" ; then
998 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1001 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
1002 INSTROOTCONTENTSUFFIX=/Contents
1003 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
1004 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1005 LINKFLAGSSHL="-dynamiclib -single_module"
1012 # -undefined error is the default
1013 LINKFLAGSNOUNDEFS=""
1016 # Apple's Clang uses "arm64"
1017 host_cpu_for_clang=arm64
1022 using_freetype_fontconfig=no
1028 if test -n "$LODE_HOME" ; then
1030 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1034 enable_mpl_subset=yes
1035 enable_lotuswordpro=no
1036 disable_database_connectivity_dependencies
1039 enable_extension_integration=no
1042 if test "$enable_ios_simulator" = "yes"; then
1043 host=x86_64-apple-darwin
1045 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1046 LINKFLAGSSHL="-dynamiclib -single_module"
1053 # -undefined error is the default
1054 LINKFLAGSNOUNDEFS=""
1056 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1057 # part, so use aarch64-apple-darwin for now.
1058 HOST_PLATFORM=aarch64-apple-darwin
1060 # Apple's Clang uses "arm64"
1061 host_cpu_for_clang=arm64
1065 using_freetype_fontconfig=yes
1068 AC_MSG_CHECKING([the FreeBSD operating system release])
1069 if test -n "$with_os_version"; then
1070 OSVERSION="$with_os_version"
1072 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1074 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1075 AC_MSG_CHECKING([which thread library to use])
1076 if test "$OSVERSION" -lt "500016"; then
1077 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078 PTHREAD_LIBS="-pthread"
1079 elif test "$OSVERSION" -lt "502102"; then
1080 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1081 PTHREAD_LIBS="-lc_r"
1084 PTHREAD_LIBS="-pthread"
1086 AC_MSG_RESULT([$PTHREAD_LIBS])
1091 using_freetype_fontconfig=yes
1095 PTHREAD_LIBS="-pthread -lpthread"
1100 using_freetype_fontconfig=yes
1102 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1103 PTHREAD_LIBS="-pthread"
1108 using_freetype_fontconfig=yes
1111 PTHREAD_LIBS="-pthread"
1116 # API exists, but seems not really usable since Android 7 AFAIK
1118 using_freetype_fontconfig=yes
1119 using_headless_plugin=no
1123 test_system_freetype=no
1125 disable_database_connectivity_dependencies
1126 enable_lotuswordpro=no
1127 enable_mpl_subset=yes
1128 enable_cairo_canvas=no
1138 using_freetype_fontconfig=yes
1148 enable_postgresql_sdbc=no
1149 enable_firebird_sdbc=no
1154 # API currently just exists in headers, not code
1156 using_freetype_fontconfig=yes
1160 test_split_debug=yes
1161 test_system_freetype=no
1162 enable_compiler_plugins=no
1163 enable_customtarget_components=yes
1164 enable_split_debug=yes
1165 enable_wasm_strip=yes
1167 with_theme="colibre"
1172 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1176 AC_SUBST(HOST_PLATFORM)
1178 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1179 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1182 # Set defaults, if not set by platform
1183 test "${test_cups+set}" = set || test_cups="$using_x11"
1184 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1185 test "${test_gen+set}" = set || test_gen="$using_x11"
1186 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1187 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1188 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1189 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1190 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1191 # don't handle test_qt5, so it can disable test_kf5 later
1192 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1193 test "${test_randr+set}" = set || test_randr="$using_x11"
1194 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1195 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1197 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1198 # Make sure fontconfig and freetype test both either system or not
1199 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1200 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1202 # convenience / platform overriding "fixes"
1204 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1205 test "$test_kf5" = yes && test_qt5=yes
1206 test "$test_gtk3" != yes && enable_gtk3=no
1207 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1208 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1209 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1211 # Keep in sync with the above $using_x11 depending test default list
1217 test_gstreamer_1_0=no
1229 test "$using_x11" = yes && USING_X11=TRUE
1231 if test "$using_freetype_fontconfig" = yes; then
1232 AC_DEFINE(USE_HEADLESS_CODE)
1233 USE_HEADLESS_CODE=TRUE
1234 if test "$using_headless_plugin" = yes; then
1235 AC_DEFINE(ENABLE_HEADLESS)
1236 ENABLE_HEADLESS=TRUE
1243 AC_SUBST(ENABLE_HEADLESS)
1244 AC_SUBST(USE_HEADLESS_CODE)
1246 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1247 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1248 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1249 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1251 # ===================================================================
1253 # End initial platform setup
1255 # ===================================================================
1257 if test "$_os" = "Android" ; then
1258 # Verify that the NDK and SDK options are proper
1259 if test -z "$with_android_ndk"; then
1260 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1261 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1262 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1265 if test -z "$ANDROID_SDK_DIR"; then
1266 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1267 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1268 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1272 AC_SUBST(SDKDIRNAME)
1274 AC_SUBST(PTHREAD_CFLAGS)
1275 AC_SUBST(PTHREAD_LIBS)
1277 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1278 # By default use the ones specified by our build system,
1279 # but explicit override is possible.
1280 AC_MSG_CHECKING(for explicit AFLAGS)
1281 if test -n "$AFLAGS"; then
1282 AC_MSG_RESULT([$AFLAGS])
1288 AC_MSG_CHECKING(for explicit CFLAGS)
1289 if test -n "$CFLAGS"; then
1290 AC_MSG_RESULT([$CFLAGS])
1296 AC_MSG_CHECKING(for explicit CXXFLAGS)
1297 if test -n "$CXXFLAGS"; then
1298 AC_MSG_RESULT([$CXXFLAGS])
1304 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1305 if test -n "$OBJCFLAGS"; then
1306 AC_MSG_RESULT([$OBJCFLAGS])
1312 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1313 if test -n "$OBJCXXFLAGS"; then
1314 AC_MSG_RESULT([$OBJCXXFLAGS])
1320 AC_MSG_CHECKING(for explicit LDFLAGS)
1321 if test -n "$LDFLAGS"; then
1322 AC_MSG_RESULT([$LDFLAGS])
1332 AC_SUBST(OBJCXXFLAGS)
1336 AC_SUBST(x_CXXFLAGS)
1337 AC_SUBST(x_OBJCFLAGS)
1338 AC_SUBST(x_OBJCXXFLAGS)
1341 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1342 my_original_CFLAGS=$CFLAGS
1343 my_original_CXXFLAGS=$CXXFLAGS
1344 my_original_CPPFLAGS=$CPPFLAGS
1346 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1347 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1348 dnl AC_PROG_CC internally.
1349 if test "$_os" != "WINNT"; then
1350 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1354 if test -z "$CC_BASE"; then
1355 CC_BASE=`first_arg_basename "$CC"`
1359 if test "$_os" != "WINNT"; then
1360 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1364 AC_SUBST(ENDIANNESS)
1366 if test "$usable_dlapi" != no; then
1367 AC_DEFINE([HAVE_DLAPI])
1368 if test "$test_unix_dlapi" != no; then
1370 AC_SEARCH_LIBS([dlsym], [dl],
1371 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1372 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1374 AC_DEFINE([HAVE_UNIX_DLAPI])
1377 AC_SUBST(UNIX_DLAPI_LIBS)
1379 # Check for a (GNU) backtrace implementation
1380 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1381 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1382 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1384 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1385 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1386 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1389 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1390 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1393 dnl ===================================================================
1394 dnl Sanity checks for Emscripten SDK setup
1395 dnl ===================================================================
1397 EMSCRIPTEN_MIN_MAJOR=2
1398 EMSCRIPTEN_MIN_MINOR=0
1399 EMSCRIPTEN_MIN_TINY=31
1400 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1402 if test "$_os" = "Emscripten"; then
1403 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1404 AS_IF([test -z "$EMSDK"],
1405 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1406 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1407 if test -f "$EMSCRIPTEN_VERSION_H"; then
1408 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1409 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1410 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1412 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1413 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1414 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1415 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1418 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1420 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1421 if test $? -eq 0; then
1422 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1424 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1428 if ! which emconfigure >/dev/null 2>&1; then
1429 AC_MSG_WARN([emconfigure must be in your \$PATH])
1432 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1433 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1436 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1437 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1438 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1441 if test $EMSCRIPTEN_ERROR -ne 0; then
1442 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1445 AC_SUBST(EMSDK_FILE_PACKAGER)
1447 ###############################################################################
1448 # Extensions switches --enable/--disable
1449 ###############################################################################
1450 # By default these should be enabled unless having extra dependencies.
1451 # If there is extra dependency over configure options then the enable should
1452 # be automagic based on whether the requiring feature is enabled or not.
1453 # All this options change anything only with --enable-extension-integration.
1455 # The name of this option and its help string makes it sound as if
1456 # extensions are built anyway, just not integrated in the installer,
1457 # if you use --disable-extension-integration. Is that really the
1460 AC_ARG_ENABLE(ios-simulator,
1461 AS_HELP_STRING([--enable-ios-simulator],
1462 [build for iOS simulator])
1465 libo_FUZZ_ARG_ENABLE(extension-integration,
1466 AS_HELP_STRING([--disable-extension-integration],
1467 [Disable integration of the built extensions in the installer of the
1468 product. Use this switch to disable the integration.])
1471 AC_ARG_ENABLE(avmedia,
1472 AS_HELP_STRING([--disable-avmedia],
1473 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1474 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1476 AC_ARG_ENABLE(database-connectivity,
1477 AS_HELP_STRING([--disable-database-connectivity],
1478 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1481 # This doesn't mean not building (or "integrating") extensions
1482 # (although it probably should; i.e. it should imply
1483 # --disable-extension-integration I guess), it means not supporting
1484 # any extension mechanism at all
1485 libo_FUZZ_ARG_ENABLE(extensions,
1486 AS_HELP_STRING([--disable-extensions],
1487 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1490 AC_ARG_ENABLE(scripting,
1491 AS_HELP_STRING([--disable-scripting],
1492 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1493 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1495 # This is mainly for Android and iOS, but could potentially be used in some
1496 # special case otherwise, too, so factored out as a separate setting
1498 AC_ARG_ENABLE(dynamic-loading,
1499 AS_HELP_STRING([--disable-dynamic-loading],
1500 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1503 libo_FUZZ_ARG_ENABLE(report-builder,
1504 AS_HELP_STRING([--disable-report-builder],
1505 [Disable the Report Builder.])
1508 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1509 AS_HELP_STRING([--enable-ext-wiki-publisher],
1510 [Enable the Wiki Publisher extension.])
1513 libo_FUZZ_ARG_ENABLE(lpsolve,
1514 AS_HELP_STRING([--disable-lpsolve],
1515 [Disable compilation of the lp solve solver ])
1517 libo_FUZZ_ARG_ENABLE(coinmp,
1518 AS_HELP_STRING([--disable-coinmp],
1519 [Disable compilation of the CoinMP solver ])
1522 libo_FUZZ_ARG_ENABLE(pdfimport,
1523 AS_HELP_STRING([--disable-pdfimport],
1524 [Disable building the PDF import feature.])
1527 libo_FUZZ_ARG_ENABLE(pdfium,
1528 AS_HELP_STRING([--disable-pdfium],
1529 [Disable building PDFium. Results in unsecure PDF signature verification.])
1532 libo_FUZZ_ARG_ENABLE(skia,
1533 AS_HELP_STRING([--disable-skia],
1534 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1537 ###############################################################################
1539 dnl ---------- *** ----------
1541 libo_FUZZ_ARG_ENABLE(mergelibs,
1542 AS_HELP_STRING([--enable-mergelibs],
1543 [Merge several of the smaller libraries into one big, "merged", one.])
1546 libo_FUZZ_ARG_ENABLE(breakpad,
1547 AS_HELP_STRING([--enable-breakpad],
1548 [Enables breakpad for crash reporting.])
1551 libo_FUZZ_ARG_ENABLE(crashdump,
1552 AS_HELP_STRING([--disable-crashdump],
1553 [Disable dump.ini and dump-file, when --enable-breakpad])
1556 AC_ARG_ENABLE(fetch-external,
1557 AS_HELP_STRING([--disable-fetch-external],
1558 [Disables fetching external tarballs from web sources.])
1561 AC_ARG_ENABLE(fuzzers,
1562 AS_HELP_STRING([--enable-fuzzers],
1563 [Enables building libfuzzer targets for fuzz testing.])
1566 libo_FUZZ_ARG_ENABLE(pch,
1567 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1568 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1569 Using 'system' will include only external headers, 'base' will add also headers
1570 from base modules, 'normal' will also add all headers except from the module built,
1571 'full' will use all suitable headers even from a module itself.])
1574 libo_FUZZ_ARG_ENABLE(epm,
1575 AS_HELP_STRING([--enable-epm],
1576 [LibreOffice includes self-packaging code, that requires epm, however epm is
1577 useless for large scale package building.])
1580 libo_FUZZ_ARG_ENABLE(odk,
1581 AS_HELP_STRING([--enable-odk],
1582 [Enable building the Office Development Kit, the part that extensions need to build against])
1585 AC_ARG_ENABLE(mpl-subset,
1586 AS_HELP_STRING([--enable-mpl-subset],
1587 [Don't compile any pieces which are not MPL or more liberally licensed])
1590 libo_FUZZ_ARG_ENABLE(evolution2,
1591 AS_HELP_STRING([--enable-evolution2],
1592 [Allows the built-in evolution 2 addressbook connectivity build to be
1596 AC_ARG_ENABLE(avahi,
1597 AS_HELP_STRING([--enable-avahi],
1598 [Determines whether to use Avahi to advertise Impress to remote controls.])
1601 libo_FUZZ_ARG_ENABLE(werror,
1602 AS_HELP_STRING([--enable-werror],
1603 [Turn warnings to errors. (Has no effect in modules where the treating
1604 of warnings as errors is disabled explicitly.)]),
1607 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1608 AS_HELP_STRING([--enable-assert-always-abort],
1609 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1612 libo_FUZZ_ARG_ENABLE(dbgutil,
1613 AS_HELP_STRING([--enable-dbgutil],
1614 [Provide debugging support from --enable-debug and include additional debugging
1615 utilities such as object counting or more expensive checks.
1616 This is the recommended option for developers.
1617 Note that this makes the build ABI incompatible, it is not possible to mix object
1618 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1620 libo_FUZZ_ARG_ENABLE(debug,
1621 AS_HELP_STRING([--enable-debug],
1622 [Include debugging information, disable compiler optimization and inlining plus
1623 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1625 libo_FUZZ_ARG_ENABLE(split-debug,
1626 AS_HELP_STRING([--disable-split-debug],
1627 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1628 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1630 libo_FUZZ_ARG_ENABLE(gdb-index,
1631 AS_HELP_STRING([--disable-gdb-index],
1632 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1633 The feature requires a linker that supports the --gdb-index option.]))
1635 libo_FUZZ_ARG_ENABLE(sal-log,
1636 AS_HELP_STRING([--enable-sal-log],
1637 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1639 libo_FUZZ_ARG_ENABLE(symbols,
1640 AS_HELP_STRING([--enable-symbols],
1641 [Generate debug information.
1642 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1643 otherwise. It is possible to explicitly specify gbuild build targets
1644 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1645 everything in the directory; there is no ordering, more specific overrides
1646 more general, and disabling takes precedence).
1647 Example: --enable-symbols="all -sw/ -Library_sc".]))
1649 libo_FUZZ_ARG_ENABLE(optimized,
1650 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1651 [Whether to compile with optimization flags.
1652 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1653 otherwise. Using 'debug' will try to use only optimizations that should
1654 not interfere with debugging. For Emscripten we default to optimized (-O1)
1655 debug build, as otherwise binaries become too large.]))
1657 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1658 AS_HELP_STRING([--disable-runtime-optimizations],
1659 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1660 JVM JIT) that are known to interact badly with certain dynamic analysis
1661 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1662 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1663 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1665 AC_ARG_WITH(valgrind,
1666 AS_HELP_STRING([--with-valgrind],
1667 [Make availability of Valgrind headers a hard requirement.]))
1669 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1670 AS_HELP_STRING([--enable-compiler-plugins],
1671 [Enable compiler plugins that will perform additional checks during
1672 building. Enabled automatically by --enable-dbgutil.
1673 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1674 COMPILER_PLUGINS_DEBUG=
1675 if test "$enable_compiler_plugins" = debug; then
1676 enable_compiler_plugins=yes
1677 COMPILER_PLUGINS_DEBUG=TRUE
1680 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1681 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1682 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1683 relevant in the --disable-compiler-plugins case.]))
1685 libo_FUZZ_ARG_ENABLE(ooenv,
1686 AS_HELP_STRING([--enable-ooenv],
1687 [Enable ooenv for the instdir installation.]))
1690 AS_HELP_STRING([--enable-lto],
1691 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1692 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1695 AC_ARG_ENABLE(python,
1696 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1697 [Enables or disables Python support at run-time.
1698 Also specifies what Python to use at build-time.
1699 'fully-internal' even forces the internal version for uses of Python
1701 On macOS the only choices are
1702 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1705 libo_FUZZ_ARG_ENABLE(gtk3,
1706 AS_HELP_STRING([--disable-gtk3],
1707 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1708 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1711 AS_HELP_STRING([--enable-gtk4],
1712 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1714 AC_ARG_ENABLE(atspi-tests,
1715 AS_HELP_STRING([--disable-atspi-tests],
1716 [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1718 AC_ARG_ENABLE(introspection,
1719 AS_HELP_STRING([--enable-introspection],
1720 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1721 Linux distributions.)]))
1723 AC_ARG_ENABLE(split-app-modules,
1724 AS_HELP_STRING([--enable-split-app-modules],
1725 [Split file lists for app modules, e.g. base, calc.
1726 Has effect only with make distro-pack-install]),
1729 AC_ARG_ENABLE(split-opt-features,
1730 AS_HELP_STRING([--enable-split-opt-features],
1731 [Split file lists for some optional features, e.g. pyuno, testtool.
1732 Has effect only with make distro-pack-install]),
1735 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1736 AS_HELP_STRING([--disable-cairo-canvas],
1737 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1740 libo_FUZZ_ARG_ENABLE(dbus,
1741 AS_HELP_STRING([--disable-dbus],
1742 [Determines whether to enable features that depend on dbus.
1743 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1744 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1746 libo_FUZZ_ARG_ENABLE(sdremote,
1747 AS_HELP_STRING([--disable-sdremote],
1748 [Determines whether to enable Impress remote control (i.e. the server component).]),
1749 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1751 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1752 AS_HELP_STRING([--disable-sdremote-bluetooth],
1753 [Determines whether to build sdremote with bluetooth support.
1754 Requires dbus on Linux.]))
1756 libo_FUZZ_ARG_ENABLE(gio,
1757 AS_HELP_STRING([--disable-gio],
1758 [Determines whether to use the GIO support.]),
1759 ,test "${enable_gio+set}" = set || enable_gio=yes)
1762 AS_HELP_STRING([--enable-qt5],
1763 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1768 AS_HELP_STRING([--enable-qt6],
1769 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1774 AS_HELP_STRING([--enable-kf5],
1775 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1776 KF5 are available.]),
1780 AS_HELP_STRING([--enable-kf6],
1781 [Determines whether to use KF6 vclplug on platforms where Qt6 and
1782 KF6 are available.]),
1786 AC_ARG_ENABLE(gtk3_kde5,
1787 AS_HELP_STRING([--enable-gtk3-kde5],
1788 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1789 platforms where Gtk3, Qt5 and Plasma is available.]),
1793 AS_HELP_STRING([--enable-gen],
1794 [To select the gen backend in case of --disable-dynamic-loading.
1795 Per default auto-enabled when X11 is used.]),
1796 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1799 AS_HELP_STRING([--disable-gui],
1800 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1803 libo_FUZZ_ARG_ENABLE(randr,
1804 AS_HELP_STRING([--disable-randr],
1805 [Disable RandR support in the vcl project.]),
1806 ,test "${enable_randr+set}" = set || enable_randr=yes)
1808 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1809 AS_HELP_STRING([--disable-gstreamer-1-0],
1810 [Disable building with the gstreamer 1.0 avmedia backend.]),
1811 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1813 libo_FUZZ_ARG_ENABLE([eot],
1814 [AS_HELP_STRING([--enable-eot],
1815 [Enable support for Embedded OpenType fonts.])],
1816 ,test "${enable_eot+set}" = set || enable_eot=no)
1818 libo_FUZZ_ARG_ENABLE(cve-tests,
1819 AS_HELP_STRING([--disable-cve-tests],
1820 [Prevent CVE tests to be executed]),
1823 AC_ARG_ENABLE(build-opensymbol,
1824 AS_HELP_STRING([--enable-build-opensymbol],
1825 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1826 fontforge installed.]),
1829 AC_ARG_ENABLE(dependency-tracking,
1830 AS_HELP_STRING([--enable-dependency-tracking],
1831 [Do not reject slow dependency extractors.])[
1832 --disable-dependency-tracking
1833 Disables generation of dependency information.
1834 Speed up one-time builds.],
1837 AC_ARG_ENABLE(icecream,
1838 AS_HELP_STRING([--enable-icecream],
1839 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1840 It defaults to /opt/icecream for the location of the icecream gcc/g++
1841 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1845 AS_HELP_STRING([--enable-ld=<linker>],
1846 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1847 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1848 If <linker> contains any ':', the part before the first ':' is used as the value of
1849 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1850 needed for Clang 12).]),
1853 libo_FUZZ_ARG_ENABLE(cups,
1854 AS_HELP_STRING([--disable-cups],
1855 [Do not build cups support.])
1858 AC_ARG_ENABLE(ccache,
1859 AS_HELP_STRING([--disable-ccache],
1860 [Do not try to use ccache automatically.
1861 By default we will try to detect if ccache is available; in that case if
1862 CC/CXX are not yet set, and --enable-icecream is not given, we
1863 attempt to use ccache. --disable-ccache disables ccache completely.
1864 Additionally ccache's depend mode is enabled if possible,
1865 use --enable-ccache=nodepend to enable ccache without depend mode.
1869 AC_ARG_ENABLE(z7-debug,
1870 AS_HELP_STRING([--enable-z7-debug],
1871 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1872 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1873 Enabled by default if ccache is detected.]))
1875 libo_FUZZ_ARG_ENABLE(online-update,
1876 AS_HELP_STRING([--enable-online-update],
1877 [Enable the online update service that will check for new versions of
1878 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1879 If the value is "mar", the experimental Mozilla-like update will be
1880 enabled instead of the traditional update mechanism.]),
1883 AC_ARG_WITH(update-config,
1884 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1885 [Path to the update config ini file]))
1887 libo_FUZZ_ARG_ENABLE(extension-update,
1888 AS_HELP_STRING([--disable-extension-update],
1889 [Disable possibility to update installed extensions.]),
1892 libo_FUZZ_ARG_ENABLE(release-build,
1893 AS_HELP_STRING([--enable-release-build],
1894 [Enable release build. Note that the "release build" choice is orthogonal to
1895 whether symbols are present, debug info is generated, or optimization
1897 See https://wiki.documentfoundation.org/Development/DevBuild]),
1900 AC_ARG_ENABLE(windows-build-signing,
1901 AS_HELP_STRING([--enable-windows-build-signing],
1902 [Enable signing of windows binaries (*.exe, *.dll)]),
1905 AC_ARG_ENABLE(silent-msi,
1906 AS_HELP_STRING([--enable-silent-msi],
1907 [Enable MSI with LIMITUI=1 (silent install).]),
1911 AS_HELP_STRING([--enable-wix],
1912 [Build Windows installer using WiX.]),
1915 AC_ARG_ENABLE(macosx-code-signing,
1916 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1917 [Sign executables, dylibs, frameworks and the app bundle. If you
1918 don't provide an identity the first suitable certificate
1919 in your keychain is used.]),
1922 AC_ARG_ENABLE(macosx-package-signing,
1923 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1924 [Create a .pkg suitable for uploading to the Mac App Store and sign
1925 it. If you don't provide an identity the first suitable certificate
1926 in your keychain is used.]),
1929 AC_ARG_ENABLE(macosx-sandbox,
1930 AS_HELP_STRING([--enable-macosx-sandbox],
1931 [Make the app bundle run in a sandbox. Requires code signing.
1932 Is required by apps distributed in the Mac App Store, and implies
1933 adherence to App Store rules.]),
1936 AC_ARG_WITH(macosx-bundle-identifier,
1937 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1938 [Define the macOS bundle identifier. Default is the somewhat weird
1939 org.libreoffice.script ("script", huh?).]),
1940 ,with_macosx_bundle_identifier=org.libreoffice.script)
1942 AC_ARG_WITH(macosx-provisioning-profile,
1943 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1944 [Specify the path to a provisioning profile to use]),
1947 AC_ARG_WITH(product-name,
1948 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1949 [Define the product name. Default is AC_PACKAGE_NAME.]),
1950 ,with_product_name=$PRODUCTNAME)
1952 libo_FUZZ_ARG_ENABLE(community-flavor,
1953 AS_HELP_STRING([--disable-community-flavor],
1954 [Disable the Community branding.]),
1957 AC_ARG_WITH(package-version,
1958 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1959 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1962 libo_FUZZ_ARG_ENABLE(readonly-installset,
1963 AS_HELP_STRING([--enable-readonly-installset],
1964 [Prevents any attempts by LibreOffice to write into its installation. That means
1965 at least that no "system-wide" extensions can be added. Partly experimental work in
1966 progress, probably not fully implemented. Always enabled for macOS.]),
1969 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1970 AS_HELP_STRING([--disable-mariadb-sdbc],
1971 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1974 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1975 AS_HELP_STRING([--disable-postgresql-sdbc],
1976 [Disable the build of the PostgreSQL-SDBC driver.])
1979 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1980 AS_HELP_STRING([--disable-lotuswordpro],
1981 [Disable the build of the Lotus Word Pro filter.]),
1982 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1984 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1985 AS_HELP_STRING([--disable-firebird-sdbc],
1986 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1987 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1989 AC_ARG_ENABLE(bogus-pkg-config,
1990 AS_HELP_STRING([--enable-bogus-pkg-config],
1991 [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.]),
1994 AC_ARG_ENABLE(openssl,
1995 AS_HELP_STRING([--disable-openssl],
1996 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1997 components will use NSS. Work in progress,
1998 use only if you are hacking on it.]),
1999 ,enable_openssl=yes)
2001 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2002 AS_HELP_STRING([--enable-cipher-openssl-backend],
2003 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2004 Requires --enable-openssl.]))
2007 AS_HELP_STRING([--disable-nss],
2008 [Disable using NSS. If disabled,
2009 components will use openssl. Work in progress,
2010 use only if you are hacking on it.]),
2013 AC_ARG_ENABLE(library-bin-tar,
2014 AS_HELP_STRING([--enable-library-bin-tar],
2015 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2016 Some libraries can save their build result in a tarball
2017 stored in TARFILE_LOCATION. That binary tarball is
2018 uniquely identified by the source tarball,
2019 the content of the config_host.mk file and the content
2020 of the top-level directory in core for that library
2021 If this option is enabled, then if such a tarfile exist, it will be untarred
2022 instead of the source tarfile, and the build step will be skipped for that
2024 If a proper tarfile does not exist, then the normal source-based
2025 build is done for that library and a proper binary tarfile is created
2026 for the next time.]),
2029 AC_ARG_ENABLE(dconf,
2030 AS_HELP_STRING([--disable-dconf],
2031 [Disable the dconf configuration backend (enabled by default where
2034 libo_FUZZ_ARG_ENABLE(formula-logger,
2036 [--enable-formula-logger],
2037 [Enable formula logger for logging formula calculation flow in Calc.]
2042 AS_HELP_STRING([--disable-ldap],
2043 [Disable LDAP support.]),
2046 AC_ARG_ENABLE(opencl,
2047 AS_HELP_STRING([--disable-opencl],
2048 [Disable OpenCL support.]),
2051 libo_FUZZ_ARG_ENABLE(librelogo,
2052 AS_HELP_STRING([--disable-librelogo],
2053 [Do not build LibreLogo.]),
2054 ,enable_librelogo=yes)
2056 AC_ARG_ENABLE(wasm-strip,
2057 AS_HELP_STRING([--enable-wasm-strip],
2058 [Strip the static build like for WASM/emscripten platform.]),
2061 AC_ARG_WITH(main-module,
2062 AS_HELP_STRING([--with-main-module=<writer/calc>],
2063 [Specify which main module to build for wasm.
2064 Default value is 'writer'.]),
2067 AC_ARG_ENABLE(wasm-exceptions,
2068 AS_HELP_STRING([--enable-wasm-exceptions],
2069 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2070 matter of fact, this is currently not finished by any implementation)
2071 (see https://webassembly.org/roadmap/ for the current state]),
2074 AC_ARG_ENABLE(xmlhelp,
2075 AS_HELP_STRING([--disable-xmlhelp],
2076 [Disable XML help support]),
2077 ,enable_xmlhelp=yes)
2079 AC_ARG_ENABLE(customtarget-components,
2080 AS_HELP_STRING([--enable-customtarget-components],
2081 [Generates the static UNO object constructor mapping from the build.]))
2083 dnl ===================================================================
2084 dnl Optional Packages (--with/without-)
2085 dnl ===================================================================
2087 AC_ARG_WITH(gcc-home,
2088 AS_HELP_STRING([--with-gcc-home],
2089 [Specify the location of gcc/g++ manually. This can be used in conjunction
2090 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2091 non-default path.]),
2094 AC_ARG_WITH(gnu-patch,
2095 AS_HELP_STRING([--with-gnu-patch],
2096 [Specify location of GNU patch on Solaris or FreeBSD.]),
2099 AC_ARG_WITH(build-platform-configure-options,
2100 AS_HELP_STRING([--with-build-platform-configure-options],
2101 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2105 AS_HELP_STRING([--with-gnu-cp],
2106 [Specify location of GNU cp on Solaris or FreeBSD.]),
2109 AC_ARG_WITH(external-tar,
2110 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2111 [Specify an absolute path of where to find (and store) tarfiles.]),
2112 TARFILE_LOCATION=$withval ,
2115 AC_ARG_WITH(referenced-git,
2116 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2117 [Specify another checkout directory to reference. This makes use of
2118 git submodule update --reference, and saves a lot of diskspace
2119 when having multiple trees side-by-side.]),
2120 GIT_REFERENCE_SRC=$withval ,
2123 AC_ARG_WITH(linked-git,
2124 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2125 [Specify a directory where the repositories of submodules are located.
2126 This uses a method similar to git-new-workdir to get submodules.]),
2127 GIT_LINK_SRC=$withval ,
2130 AC_ARG_WITH(galleries,
2131 AS_HELP_STRING([--with-galleries],
2132 [Specify how galleries should be built. It is possible either to
2133 build these internally from source ("build"),
2134 or to disable them ("no")]),
2138 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2139 [Choose which themes to include. By default those themes with an '*' are included.
2140 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2141 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2142 *elementary, *elementary_svg,
2143 *karasa_jaga, *karasa_jaga_svg,
2144 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2145 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2148 libo_FUZZ_ARG_WITH(helppack-integration,
2149 AS_HELP_STRING([--without-helppack-integration],
2150 [It will not integrate the helppacks to the installer
2151 of the product. Please use this switch to use the online help
2152 or separate help packages.]),
2155 libo_FUZZ_ARG_WITH(fonts,
2156 AS_HELP_STRING([--without-fonts],
2157 [LibreOffice includes some third-party fonts to provide a reliable basis for
2158 help content, templates, samples, etc. When these fonts are already
2159 known to be available on the system then you should use this option.]),
2163 AS_HELP_STRING([--with-epm],
2164 [Decides which epm to use. Default is to use the one from the system if
2165 one is built. When either this is not there or you say =internal epm
2169 AC_ARG_WITH(package-format,
2170 AS_HELP_STRING([--with-package-format],
2171 [Specify package format(s) for LibreOffice installation sets. The
2172 implicit --without-package-format leads to no installation sets being
2173 generated. Possible values: archive, bsd, deb, dmg,
2174 installed, msi, pkg, and rpm.
2175 Example: --with-package-format='deb rpm']),
2179 AS_HELP_STRING([--with-tls],
2180 [Decides which TLS/SSL and cryptographic implementations to use for
2181 LibreOffice's code. Default is to use NSS although OpenSSL is also
2182 possible. Notice that selecting NSS restricts the usage of OpenSSL
2183 in LO's code but selecting OpenSSL doesn't restrict by now the
2184 usage of NSS in LO's code. Possible values: openssl, nss.
2185 Example: --with-tls="nss"]),
2188 AC_ARG_WITH(system-libs,
2189 AS_HELP_STRING([--with-system-libs],
2190 [Use libraries already on system -- enables all --with-system-* flags.]),
2193 AC_ARG_WITH(system-bzip2,
2194 AS_HELP_STRING([--with-system-bzip2],
2195 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2196 [with_system_bzip2="$with_system_libs"])
2198 AC_ARG_WITH(system-headers,
2199 AS_HELP_STRING([--with-system-headers],
2200 [Use headers already on system -- enables all --with-system-* flags for
2201 external packages whose headers are the only entities used i.e.
2202 boost/odbc/sane-header(s).]),,
2203 [with_system_headers="$with_system_libs"])
2205 AC_ARG_WITH(system-jars,
2206 AS_HELP_STRING([--without-system-jars],
2207 [When building with --with-system-libs, also the needed jars are expected
2208 on the system. Use this to disable that]),,
2209 [with_system_jars="$with_system_libs"])
2211 AC_ARG_WITH(system-cairo,
2212 AS_HELP_STRING([--with-system-cairo],
2213 [Use cairo libraries already on system. Happens automatically for
2214 (implicit) --enable-gtk3.]))
2216 AC_ARG_WITH(system-epoxy,
2217 AS_HELP_STRING([--with-system-epoxy],
2218 [Use epoxy libraries already on system. Happens automatically for
2219 (implicit) --enable-gtk3.]),,
2220 [with_system_epoxy="$with_system_libs"])
2222 AC_ARG_WITH(myspell-dicts,
2223 AS_HELP_STRING([--with-myspell-dicts],
2224 [Adds myspell dictionaries to the LibreOffice installation set]),
2227 AC_ARG_WITH(system-dicts,
2228 AS_HELP_STRING([--without-system-dicts],
2229 [Do not use dictionaries from system paths.]),
2232 AC_ARG_WITH(external-dict-dir,
2233 AS_HELP_STRING([--with-external-dict-dir],
2234 [Specify external dictionary dir.]),
2237 AC_ARG_WITH(external-hyph-dir,
2238 AS_HELP_STRING([--with-external-hyph-dir],
2239 [Specify external hyphenation pattern dir.]),
2242 AC_ARG_WITH(external-thes-dir,
2243 AS_HELP_STRING([--with-external-thes-dir],
2244 [Specify external thesaurus dir.]),
2247 AC_ARG_WITH(system-zlib,
2248 AS_HELP_STRING([--with-system-zlib],
2249 [Use zlib already on system.]),,
2250 [with_system_zlib=auto])
2252 AC_ARG_WITH(system-jpeg,
2253 AS_HELP_STRING([--with-system-jpeg],
2254 [Use jpeg already on system.]),,
2255 [with_system_jpeg="$with_system_libs"])
2257 AC_ARG_WITH(system-expat,
2258 AS_HELP_STRING([--with-system-expat],
2259 [Use expat already on system.]),,
2260 [with_system_expat="$with_system_libs"])
2262 AC_ARG_WITH(system-libxml,
2263 AS_HELP_STRING([--with-system-libxml],
2264 [Use libxml/libxslt already on system.]),,
2265 [with_system_libxml=auto])
2267 AC_ARG_WITH(system-openldap,
2268 AS_HELP_STRING([--with-system-openldap],
2269 [Use the OpenLDAP LDAP SDK already on system.]),,
2270 [with_system_openldap="$with_system_libs"])
2272 libo_FUZZ_ARG_ENABLE(poppler,
2273 AS_HELP_STRING([--disable-poppler],
2274 [Disable building Poppler.])
2277 AC_ARG_WITH(system-poppler,
2278 AS_HELP_STRING([--with-system-poppler],
2279 [Use system poppler (only needed for PDF import).]),,
2280 [with_system_poppler="$with_system_libs"])
2282 AC_ARG_WITH(system-abseil,
2283 AS_HELP_STRING([--with-system-abseil],
2284 [Use the abseil libraries already on system.]),,
2285 [with_system_abseil="$with_system_libs"])
2287 AC_ARG_WITH(system-openjpeg,
2288 AS_HELP_STRING([--with-system-openjpeg],
2289 [Use the OpenJPEG library already on system.]),,
2290 [with_system_openjpeg="$with_system_libs"])
2292 libo_FUZZ_ARG_ENABLE(gpgmepp,
2293 AS_HELP_STRING([--disable-gpgmepp],
2294 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2297 AC_ARG_WITH(system-gpgmepp,
2298 AS_HELP_STRING([--with-system-gpgmepp],
2299 [Use gpgmepp already on system]),,
2300 [with_system_gpgmepp="$with_system_libs"])
2302 AC_ARG_WITH(system-mariadb,
2303 AS_HELP_STRING([--with-system-mariadb],
2304 [Use MariaDB/MySQL libraries already on system.]),,
2305 [with_system_mariadb="$with_system_libs"])
2307 AC_ARG_ENABLE(bundle-mariadb,
2308 AS_HELP_STRING([--enable-bundle-mariadb],
2309 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2312 AC_ARG_WITH(system-postgresql,
2313 AS_HELP_STRING([--with-system-postgresql],
2314 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2315 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2316 [with_system_postgresql="$with_system_libs"])
2318 AC_ARG_WITH(libpq-path,
2319 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2320 [Use this PostgreSQL C interface (libpq) installation for building
2321 the PostgreSQL-SDBC extension.]),
2324 AC_ARG_WITH(system-firebird,
2325 AS_HELP_STRING([--with-system-firebird],
2326 [Use Firebird libraries already on system, for building the Firebird-SDBC
2327 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2328 [with_system_firebird="$with_system_libs"])
2330 AC_ARG_WITH(system-libtommath,
2331 AS_HELP_STRING([--with-system-libtommath],
2332 [Use libtommath already on system]),,
2333 [with_system_libtommath="$with_system_libs"])
2335 AC_ARG_WITH(system-hsqldb,
2336 AS_HELP_STRING([--with-system-hsqldb],
2337 [Use hsqldb already on system.]))
2339 AC_ARG_WITH(hsqldb-jar,
2340 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2341 [Specify path to jarfile manually.]),
2342 HSQLDB_JAR=$withval)
2344 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2345 AS_HELP_STRING([--disable-scripting-beanshell],
2346 [Disable support for scripts in BeanShell.]),
2350 AC_ARG_WITH(system-beanshell,
2351 AS_HELP_STRING([--with-system-beanshell],
2352 [Use beanshell already on system.]),,
2353 [with_system_beanshell="$with_system_jars"])
2355 AC_ARG_WITH(beanshell-jar,
2356 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2357 [Specify path to jarfile manually.]),
2360 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2361 AS_HELP_STRING([--disable-scripting-javascript],
2362 [Disable support for scripts in JavaScript.]),
2366 AC_ARG_WITH(system-rhino,
2367 AS_HELP_STRING([--with-system-rhino],
2368 [Use rhino already on system.]),,)
2369 # [with_system_rhino="$with_system_jars"])
2370 # Above is not used as we have different debug interface
2371 # patched into internal rhino. This code needs to be fixed
2372 # before we can enable it by default.
2374 AC_ARG_WITH(rhino-jar,
2375 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2376 [Specify path to jarfile manually.]),
2379 AC_ARG_WITH(system-jfreereport,
2380 AS_HELP_STRING([--with-system-jfreereport],
2381 [Use JFreeReport already on system.]),,
2382 [with_system_jfreereport="$with_system_jars"])
2384 AC_ARG_WITH(sac-jar,
2385 AS_HELP_STRING([--with-sac-jar=JARFILE],
2386 [Specify path to jarfile manually.]),
2389 AC_ARG_WITH(libxml-jar,
2390 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2391 [Specify path to jarfile manually.]),
2392 LIBXML_JAR=$withval)
2394 AC_ARG_WITH(flute-jar,
2395 AS_HELP_STRING([--with-flute-jar=JARFILE],
2396 [Specify path to jarfile manually.]),
2399 AC_ARG_WITH(jfreereport-jar,
2400 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2401 [Specify path to jarfile manually.]),
2402 JFREEREPORT_JAR=$withval)
2404 AC_ARG_WITH(liblayout-jar,
2405 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2406 [Specify path to jarfile manually.]),
2407 LIBLAYOUT_JAR=$withval)
2409 AC_ARG_WITH(libloader-jar,
2410 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2411 [Specify path to jarfile manually.]),
2412 LIBLOADER_JAR=$withval)
2414 AC_ARG_WITH(libformula-jar,
2415 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2416 [Specify path to jarfile manually.]),
2417 LIBFORMULA_JAR=$withval)
2419 AC_ARG_WITH(librepository-jar,
2420 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2421 [Specify path to jarfile manually.]),
2422 LIBREPOSITORY_JAR=$withval)
2424 AC_ARG_WITH(libfonts-jar,
2425 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2426 [Specify path to jarfile manually.]),
2427 LIBFONTS_JAR=$withval)
2429 AC_ARG_WITH(libserializer-jar,
2430 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2431 [Specify path to jarfile manually.]),
2432 LIBSERIALIZER_JAR=$withval)
2434 AC_ARG_WITH(libbase-jar,
2435 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2436 [Specify path to jarfile manually.]),
2437 LIBBASE_JAR=$withval)
2439 AC_ARG_WITH(system-odbc,
2440 AS_HELP_STRING([--with-system-odbc],
2441 [Use the odbc headers already on system.]),,
2442 [with_system_odbc="auto"])
2444 AC_ARG_WITH(system-sane,
2445 AS_HELP_STRING([--with-system-sane],
2446 [Use sane.h already on system.]),,
2447 [with_system_sane="$with_system_headers"])
2449 AC_ARG_WITH(system-bluez,
2450 AS_HELP_STRING([--with-system-bluez],
2451 [Use bluetooth.h already on system.]),,
2452 [with_system_bluez="$with_system_headers"])
2454 AC_ARG_WITH(system-boost,
2455 AS_HELP_STRING([--with-system-boost],
2456 [Use boost already on system.]),,
2457 [with_system_boost="$with_system_headers"])
2459 AC_ARG_WITH(system-dragonbox,
2460 AS_HELP_STRING([--with-system-dragonbox],
2461 [Use dragonbox already on system.]),,
2462 [with_system_dragonbox="$with_system_headers"])
2464 AC_ARG_WITH(system-frozen,
2465 AS_HELP_STRING([--with-system-frozen],
2466 [Use frozen already on system.]),,
2467 [with_system_frozen="$with_system_headers"])
2469 AC_ARG_WITH(system-libfixmath,
2470 AS_HELP_STRING([--with-system-libfixmath],
2471 [Use libfixmath already on system.]),,
2472 [with_system_libfixmath="$with_system_libs"])
2474 AC_ARG_WITH(system-glm,
2475 AS_HELP_STRING([--with-system-glm],
2476 [Use glm already on system.]),,
2477 [with_system_glm="$with_system_headers"])
2479 AC_ARG_WITH(system-hunspell,
2480 AS_HELP_STRING([--with-system-hunspell],
2481 [Use libhunspell already on system.]),,
2482 [with_system_hunspell="$with_system_libs"])
2484 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2485 AS_HELP_STRING([--enable-cairo-rgba],
2486 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2488 libo_FUZZ_ARG_ENABLE(zxing,
2489 AS_HELP_STRING([--disable-zxing],
2490 [Disable use of zxing external library.]))
2492 AC_ARG_WITH(system-zxing,
2493 AS_HELP_STRING([--with-system-zxing],
2494 [Use libzxing already on system.]),,
2495 [with_system_zxing="$with_system_libs"])
2497 AC_ARG_WITH(system-box2d,
2498 AS_HELP_STRING([--with-system-box2d],
2499 [Use box2d already on system.]),,
2500 [with_system_box2d="$with_system_libs"])
2502 AC_ARG_WITH(system-mythes,
2503 AS_HELP_STRING([--with-system-mythes],
2504 [Use mythes already on system.]),,
2505 [with_system_mythes="$with_system_libs"])
2507 AC_ARG_WITH(system-altlinuxhyph,
2508 AS_HELP_STRING([--with-system-altlinuxhyph],
2509 [Use ALTLinuxhyph already on system.]),,
2510 [with_system_altlinuxhyph="$with_system_libs"])
2512 AC_ARG_WITH(system-lpsolve,
2513 AS_HELP_STRING([--with-system-lpsolve],
2514 [Use lpsolve already on system.]),,
2515 [with_system_lpsolve="$with_system_libs"])
2517 AC_ARG_WITH(system-coinmp,
2518 AS_HELP_STRING([--with-system-coinmp],
2519 [Use CoinMP already on system.]),,
2520 [with_system_coinmp="$with_system_libs"])
2522 AC_ARG_WITH(system-liblangtag,
2523 AS_HELP_STRING([--with-system-liblangtag],
2524 [Use liblangtag library already on system.]),,
2525 [with_system_liblangtag="$with_system_libs"])
2527 AC_ARG_WITH(system-lockfile,
2528 AS_HELP_STRING([--with-system-lockfile[=file]],
2529 [Detect a system lockfile program or use the \$file argument.]))
2532 AS_HELP_STRING([--without-webdav],
2533 [Disable WebDAV support in the UCB.]))
2535 AC_ARG_WITH(linker-hash-style,
2536 AS_HELP_STRING([--with-linker-hash-style],
2537 [Use linker with --hash-style=<style> when linking shared objects.
2538 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2539 if supported on the build system, and "sysv" otherwise.]))
2541 AC_ARG_WITH(jdk-home,
2542 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2543 [If you have installed JDK 9 or later on your system please supply the
2544 path here. Note that this is not the location of the java command but the
2545 location of the entire distribution. In case of cross-compiling, this
2546 is the JDK of the host os. Use --with-build-platform-configure-options
2547 to point to a different build platform JDK.]),
2551 AS_HELP_STRING([--with-help],
2552 [Enable the build of help. There is a special parameter "common" that
2553 can be used to bundle only the common part, .e.g help-specific icons.
2554 This is useful when you build the helpcontent separately.])
2556 Usage: --with-help build the old local help
2557 --without-help no local help (default)
2558 --with-help=html build the new HTML local help
2559 --with-help=online build the new HTML online help
2563 AC_ARG_WITH(omindex,
2564 AS_HELP_STRING([--with-omindex],
2565 [Enable the support of xapian-omega index for online help.])
2567 Usage: --with-omindex=server prepare the pages for omindex
2568 but let xapian-omega be built in server.
2569 --with-omindex=noxap do not prepare online pages
2574 libo_FUZZ_ARG_WITH(java,
2575 AS_HELP_STRING([--with-java=<java command>],
2576 [Specify the name of the Java interpreter command. Typically "java"
2577 which is the default.
2579 To build without support for Java components, applets, accessibility
2580 or the XML filters written in Java, use --without-java or --with-java=no.]),
2581 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2582 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2585 AC_ARG_WITH(jvm-path,
2586 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2587 [Use a specific JVM search path at runtime.
2588 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2591 AC_ARG_WITH(ant-home,
2592 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2593 [If you have installed Apache Ant on your system, please supply the path here.
2594 Note that this is not the location of the Ant binary but the location
2595 of the entire distribution.]),
2598 AC_ARG_WITH(symbol-config,
2599 AS_HELP_STRING([--with-symbol-config],
2600 [Configuration for the crashreport symbol upload]),
2602 [with_symbol_config=no])
2604 AC_ARG_WITH(export-validation,
2605 AS_HELP_STRING([--without-export-validation],
2606 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2607 ,with_export_validation=auto)
2609 AC_ARG_WITH(bffvalidator,
2610 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2611 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2612 Requires installed Microsoft Office Binary File Format Validator.
2613 Note: export-validation (--with-export-validation) is required to be turned on.
2614 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2615 ,with_bffvalidator=no)
2617 libo_FUZZ_ARG_WITH(junit,
2618 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2619 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2620 --without-junit disables those tests. Not relevant in the --without-java case.]),
2623 AC_ARG_WITH(hamcrest,
2624 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2625 [Specifies the hamcrest jar file to use for JUnit-based tests.
2626 --without-junit disables those tests. Not relevant in the --without-java case.]),
2629 AC_ARG_WITH(perl-home,
2630 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2631 [If you have installed Perl 5 Distribution, on your system, please
2632 supply the path here. Note that this is not the location of the Perl
2633 binary but the location of the entire distribution.]),
2636 libo_FUZZ_ARG_WITH(doxygen,
2638 [--with-doxygen=<absolute path to doxygen executable>],
2639 [Specifies the doxygen executable to use when generating ODK C/C++
2640 documentation. --without-doxygen disables generation of ODK C/C++
2641 documentation. Not relevant in the --disable-odk case.]),
2644 AC_ARG_WITH(visual-studio,
2645 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2646 [Specify which Visual Studio version to use in case several are
2647 installed. Currently 2019 (default) and 2022 are supported.]),
2650 AC_ARG_WITH(windows-sdk,
2651 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2652 [Specify which Windows SDK, or "Windows Kit", version to use
2653 in case the one that came with the selected Visual Studio
2654 is not what you want for some reason. Note that not all compiler/SDK
2655 combinations are supported. The intent is that this option should not
2660 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2661 [Use this option to build LibreOffice with additional UI language support.
2662 English (US) is always included by default.
2663 Separate multiple languages with space.
2664 For all languages, use --with-lang=ALL.]),
2667 AC_ARG_WITH(locales,
2668 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2669 [Use this option to limit the locale information built in.
2670 Separate multiple locales with space.
2671 Very experimental and might well break stuff.
2672 Just a desperate measure to shrink code and data size.
2673 By default all the locales available is included.
2674 Just works with --disable-dynloading. Defaults to "ALL".
2675 This option is completely unrelated to --with-lang.])
2677 Affects also our character encoding conversion
2678 tables for encodings mainly targeted for a
2679 particular locale, like EUC-CN and EUC-TW for
2680 zh, ISO-2022-JP for ja.
2682 Affects also our add-on break iterator data for
2685 For the default, all locales, don't use this switch at all.
2686 Specifying just the language part of a locale means all matching
2687 locales will be included.
2691 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2692 libo_FUZZ_ARG_WITH(krb5,
2693 AS_HELP_STRING([--with-krb5],
2694 [Enable MIT Kerberos 5 support in modules that support it.
2695 By default automatically enabled on platforms
2696 where a good system Kerberos 5 is available.]),
2699 libo_FUZZ_ARG_WITH(gssapi,
2700 AS_HELP_STRING([--with-gssapi],
2701 [Enable GSSAPI support in modules that support it.
2702 By default automatically enabled on platforms
2703 where a good system GSSAPI is available.]),
2706 libo_FUZZ_ARG_WITH(lxml,
2707 AS_HELP_STRING([--without-lxml],
2708 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2709 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2710 report widget classes and ids.]),
2713 libo_FUZZ_ARG_WITH(latest-c++,
2714 AS_HELP_STRING([--with-latest-c++],
2715 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2716 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2717 [with_latest_c__=no])
2719 AC_ARG_WITH(gtk3-build,
2720 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2721 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2722 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2724 dnl ===================================================================
2726 dnl ===================================================================
2728 AC_ARG_WITH(branding,
2729 AS_HELP_STRING([--with-branding=/path/to/images],
2730 [Use given path to retrieve branding images set.])
2732 Search for intro.png about.svg and logo.svg.
2733 If any is missing, default ones will be used instead.
2735 Search also progress.conf for progress
2736 settings on intro screen :
2738 PROGRESSBARCOLOR="255,255,255" Set color of
2739 progress bar. Comma separated RGB decimal values.
2740 PROGRESSSIZE="407,6" Set size of progress bar.
2741 Comma separated decimal values (width, height).
2742 PROGRESSPOSITION="61,317" Set position of progress
2743 bar from left,top. Comma separated decimal values.
2744 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2745 bar frame. Comma separated RGB decimal values.
2746 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2747 bar text. Comma separated RGB decimal values.
2748 PROGRESSTEXTBASELINE="287" Set vertical position of
2749 progress bar text from top. Decimal value.
2751 Default values will be used if not found.
2756 AC_ARG_WITH(extra-buildid,
2757 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2758 [Show addition build identification in about dialog.]),
2763 AS_HELP_STRING([--with-vendor="John the Builder"],
2764 [Set vendor of the build.]),
2767 AC_ARG_WITH(privacy-policy-url,
2768 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2769 [The URL to your privacy policy (needed when
2770 enabling online-update or crashreporting via breakpad)]),
2771 [if test "x$with_privacy_policy_url" = "xyes"; then
2772 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2773 elif test "x$with_privacy_policy_url" = "xno"; then
2774 with_privacy_policy_url="undefined"
2776 ,[with_privacy_policy_url="undefined"])
2778 AC_ARG_WITH(android-package-name,
2779 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2780 [Set Android package name of the build.]),
2783 AC_ARG_WITH(compat-oowrappers,
2784 AS_HELP_STRING([--with-compat-oowrappers],
2785 [Install oo* wrappers in parallel with
2786 lo* ones to keep backward compatibility.
2787 Has effect only with make distro-pack-install]),
2790 AC_ARG_WITH(os-version,
2791 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2792 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2795 AC_ARG_WITH(parallelism,
2796 AS_HELP_STRING([--with-parallelism],
2797 [Number of jobs to run simultaneously during build. Parallel builds can
2798 save a lot of time on multi-cpu machines. Defaults to the number of
2799 CPUs on the machine, unless you configure --enable-icecream - then to
2803 AC_ARG_WITH(all-tarballs,
2804 AS_HELP_STRING([--with-all-tarballs],
2805 [Download all external tarballs unconditionally]))
2807 AC_ARG_WITH(gdrive-client-id,
2808 AS_HELP_STRING([--with-gdrive-client-id],
2809 [Provides the client id of the application for OAuth2 authentication
2810 on Google Drive. If either this or --with-gdrive-client-secret is
2811 empty, the feature will be disabled]),
2814 AC_ARG_WITH(gdrive-client-secret,
2815 AS_HELP_STRING([--with-gdrive-client-secret],
2816 [Provides the client secret of the application for OAuth2
2817 authentication on Google Drive. If either this or
2818 --with-gdrive-client-id is empty, the feature will be disabled]),
2821 AC_ARG_WITH(alfresco-cloud-client-id,
2822 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2823 [Provides the client id of the application for OAuth2 authentication
2824 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2825 empty, the feature will be disabled]),
2828 AC_ARG_WITH(alfresco-cloud-client-secret,
2829 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2830 [Provides the client secret of the application for OAuth2
2831 authentication on Alfresco Cloud. If either this or
2832 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2835 AC_ARG_WITH(onedrive-client-id,
2836 AS_HELP_STRING([--with-onedrive-client-id],
2837 [Provides the client id of the application for OAuth2 authentication
2838 on OneDrive. If either this or --with-onedrive-client-secret is
2839 empty, the feature will be disabled]),
2842 AC_ARG_WITH(onedrive-client-secret,
2843 AS_HELP_STRING([--with-onedrive-client-secret],
2844 [Provides the client secret of the application for OAuth2
2845 authentication on OneDrive. If either this or
2846 --with-onedrive-client-id is empty, the feature will be disabled]),
2849 dnl Check for coredumpctl support to present information about crashing test processes:
2850 AC_ARG_WITH(coredumpctl,
2851 AS_HELP_STRING([--with-coredumpctl],
2852 [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2855 dnl ===================================================================
2856 dnl Do we want to use pre-build binary tarball for recompile
2857 dnl ===================================================================
2859 if test "$enable_library_bin_tar" = "yes" ; then
2860 USE_LIBRARY_BIN_TAR=TRUE
2862 USE_LIBRARY_BIN_TAR=
2864 AC_SUBST(USE_LIBRARY_BIN_TAR)
2866 dnl ===================================================================
2867 dnl Test whether build target is Release Build
2868 dnl ===================================================================
2869 AC_MSG_CHECKING([whether build target is Release Build])
2870 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2872 ENABLE_RELEASE_BUILD=
2873 dnl Pu the value on one line as make (at least on macOS) seems to ignore
2874 dnl the newlines and then complains about spaces.
2875 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/>'
2877 AC_MSG_RESULT([yes])
2878 ENABLE_RELEASE_BUILD=TRUE
2879 GET_TASK_ALLOW_ENTITLEMENT=
2881 AC_SUBST(ENABLE_RELEASE_BUILD)
2882 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2884 AC_MSG_CHECKING([whether to build a Community flavor])
2885 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2886 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2887 AC_MSG_RESULT([yes])
2892 dnl ===================================================================
2893 dnl Test whether to sign Windows Build
2894 dnl ===================================================================
2895 AC_MSG_CHECKING([whether to sign windows build])
2896 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2897 AC_MSG_RESULT([yes])
2898 WINDOWS_BUILD_SIGNING="TRUE"
2901 WINDOWS_BUILD_SIGNING="FALSE"
2903 AC_SUBST(WINDOWS_BUILD_SIGNING)
2905 dnl ===================================================================
2906 dnl MacOSX build and runtime environment options
2907 dnl ===================================================================
2909 AC_ARG_WITH(macosx-version-min-required,
2910 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2911 [set the minimum OS version needed to run the built LibreOffice])
2913 e. g.: --with-macosx-version-min-required=10.15
2917 dnl ===================================================================
2918 dnl Check for incompatible options set by fuzzing, and reset those
2919 dnl automatically to working combinations
2920 dnl ===================================================================
2922 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2923 "$enable_dbus" != "$enable_avahi"; then
2924 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2925 enable_avahi=$enable_dbus
2930 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2931 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2935 add_lopath_before ()
2940 for dir in $LO_PATH ; do
2941 if test "$dir" != "$1" ; then
2942 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2945 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2948 dnl ===================================================================
2949 dnl check for required programs (grep, awk, sed, bash)
2950 dnl ===================================================================
2955 if test -n "$1"; then
2956 if test "$build_os" = "cygwin"; then
2957 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2959 new_path=`cygpath -sm "$formatted_path"`
2962 new_path=`cygpath -u "$formatted_path"`
2967 if test "$2" = "after"; then
2968 add_lopath_after "$new_path"
2970 add_lopath_before "$new_path"
2976 AC_PATH_PROG( AWK, $AWK)
2977 if test -z "$AWK"; then
2978 AC_MSG_ERROR([install awk to run this script])
2981 AC_PATH_PROG(BASH, bash)
2982 if test -z "$BASH"; then
2983 AC_MSG_ERROR([bash not found in \$PATH])
2987 # prefer parallel compression tools, if available
2988 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2989 if test -z "$COMPRESSIONTOOL"; then
2990 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2991 if test -z "$COMPRESSIONTOOL"; then
2992 AC_MSG_ERROR([gzip not found in \$PATH])
2995 AC_SUBST(COMPRESSIONTOOL)
2997 AC_MSG_CHECKING([for GNU or BSD tar])
2998 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2999 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
3000 if test $? -eq 0; then
3005 AC_MSG_RESULT($GNUTAR)
3006 if test -z "$GNUTAR"; then
3007 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3011 AC_MSG_CHECKING([for tar's option to strip components])
3012 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3013 if test $? -eq 0; then
3014 STRIP_COMPONENTS="--strip-components"
3016 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3017 if test $? -eq 0; then
3018 STRIP_COMPONENTS="--strip-path"
3020 STRIP_COMPONENTS="unsupported"
3023 AC_MSG_RESULT($STRIP_COMPONENTS)
3024 if test x$STRIP_COMPONENTS = xunsupported; then
3025 AC_MSG_ERROR([you need a tar that is able to strip components.])
3027 AC_SUBST(STRIP_COMPONENTS)
3029 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3030 dnl desktop OSes from "mobile" ones.
3032 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3033 dnl In other words, that when building for an OS that is not a
3034 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3036 dnl Note the direction of the implication; there is no assumption that
3037 dnl cross-compiling would imply a non-desktop OS.
3039 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3040 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3041 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3042 if test "$_os" != Emscripten; then
3043 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3047 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3048 # also work with the default gtk3 plugin.
3049 if test "$enable_wasm_strip" = "yes"; then
3054 test "$_os" = Emscripten && enable_curl=no
3055 enable_database_connectivity=no
3058 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3059 enable_extension_integration=no
3060 enable_extensions=no
3061 enable_extension_update=no
3065 enable_lotuswordpro=no
3069 enable_online_update=no
3073 enable_report_builder=no
3075 enable_sdremote_bluetooth=no
3085 test_libpagemaker=no
3094 test "${with_fonts+set}" = set || with_fonts=yes
3095 test "${with_locales+set}" = set || with_locales=en
3097 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3098 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3099 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3100 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3101 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3102 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3103 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3104 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3105 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3106 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3107 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3108 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3109 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3110 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3111 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3112 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3113 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3114 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3117 EMSCRIPTEN_NEH_MAJOR=3
3118 EMSCRIPTEN_NEH_MINOR=1
3119 EMSCRIPTEN_NEH_TINY=3
3120 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3122 if test "$enable_wasm_exceptions" = yes; then
3123 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3124 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3125 if test $? -ne 0; then
3126 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3128 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3130 ENABLE_WASM_EXCEPTIONS=TRUE
3132 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3134 # Whether to build "avmedia" functionality or not.
3136 if test "$enable_avmedia" = yes; then
3137 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3138 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3140 test_gstreamer_1_0=no
3143 # Decide whether to build database connectivity stuff (including Base) or not.
3144 if test "$enable_database_connectivity" != no; then
3145 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3146 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3148 if test "$_os" = iOS; then
3149 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3151 disable_database_connectivity_dependencies
3154 if test -z "$enable_extensions"; then
3155 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3156 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3157 enable_extensions=yes
3161 DISABLE_SCRIPTING=''
3162 if test "$enable_scripting" = yes; then
3163 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3164 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3166 DISABLE_SCRIPTING='TRUE'
3167 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3170 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3171 # Disable dynamic_loading always for iOS and Android
3172 enable_dynamic_loading=no
3173 elif test -z "$enable_dynamic_loading"; then
3174 # Otherwise enable it unless specifically disabled
3175 enable_dynamic_loading=yes
3178 DISABLE_DYNLOADING=''
3179 if test "$enable_dynamic_loading" = yes; then
3180 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3182 DISABLE_DYNLOADING='TRUE'
3183 if test $_os != iOS -a $_os != Android; then
3184 enable_database_connectivity=no
3192 AC_SUBST(DISABLE_DYNLOADING)
3194 ENABLE_CUSTOMTARGET_COMPONENTS=
3195 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3196 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3197 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3198 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3201 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3203 if test "$enable_extensions" = yes; then
3204 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3205 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3207 enable_extension_integration=no
3208 enable_extension_update=no
3211 # remember SYSBASE value
3214 dnl ===================================================================
3215 dnl Sort out various gallery compilation options
3216 dnl ===================================================================
3217 WITH_GALLERY_BUILD=TRUE
3218 AC_MSG_CHECKING([how to build and package galleries])
3219 if test -n "${with_galleries}"; then
3220 if test "$with_galleries" = "build"; then
3221 if test "$enable_database_connectivity" = no; then
3222 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3224 AC_MSG_RESULT([build from source images internally])
3225 elif test "$with_galleries" = "no"; then
3227 AC_MSG_RESULT([disable non-internal gallery build])
3229 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3232 if test $_os != iOS -a $_os != Android; then
3233 AC_MSG_RESULT([internal src images for desktop])
3236 AC_MSG_RESULT([disable src image build])
3239 AC_SUBST(WITH_GALLERY_BUILD)
3241 dnl ===================================================================
3242 dnl Checks if ccache is available
3243 dnl ===================================================================
3245 if test "$enable_ccache" = "no"; then
3247 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3248 case "%$CC%$CXX%" in
3249 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3250 # assume that's good then
3251 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3252 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3253 CCACHE_DEPEND_MODE=1
3256 # try to use our own ccache if it is available and CCACHE was not already defined
3257 if test -z "$CCACHE"; then
3258 if test "$_os" = "WINNT"; then
3259 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3261 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3262 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3263 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3264 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3267 AC_PATH_PROG([CCACHE],[ccache],[not found])
3268 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3269 CCACHE=`win_short_path_for_make "$CCACHE"`
3270 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3272 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3273 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3274 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3282 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3283 # on windows/VC perhaps sccache is around?
3284 case "%$CC%$CXX%" in
3285 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3286 # assume that's good then
3287 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3288 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3289 CCACHE_DEPEND_MODE=1
3293 # for sharing code below, reuse CCACHE env var
3294 AC_PATH_PROG([CCACHE],[sccache],[not found])
3295 if test "$CCACHE" != "not found"; then
3296 CCACHE=`win_short_path_for_make "$CCACHE"`
3298 CCACHE_DEPEND_MODE=1
3303 if test "$CCACHE" = "not found"; then
3306 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3307 CCACHE_DEPEND_MODE=1
3308 # Need to check for ccache version: otherwise prevents
3309 # caching of the results (like "-x objective-c++" for Mac)
3310 if test $_os = Darwin -o $_os = iOS; then
3311 # Check ccache version
3312 AC_MSG_CHECKING([whether version of ccache is suitable])
3313 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3314 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3315 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3316 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3318 AC_MSG_RESULT([no, $CCACHE_VERSION])
3329 if test "$enable_ccache" = "nodepend"; then
3330 CCACHE_DEPEND_MODE=""
3332 AC_SUBST(CCACHE_DEPEND_MODE)
3334 # sccache defaults are good enough
3335 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3336 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3337 # or (...) max_size = 20.0 G
3338 # -p works with both 4.2 and 4.4
3339 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3340 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3341 if test "$ccache_size" = ""; then
3342 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3343 if test "$ccache_size" = ""; then
3346 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3347 if test $ccache_size -lt 1024; then
3349 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3350 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3352 # warn that ccache may be too small for debug build
3353 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3354 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3357 if test $ccache_size -lt 5; then
3358 #warn that ccache may be too small for debug build
3359 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3360 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3366 if test "$enable_z7_debug" != no; then
3367 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3368 ENABLE_Z7_DEBUG=TRUE
3371 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3372 add_warning "ccache will not work with --disable-z7-debug"
3374 AC_SUBST(ENABLE_Z7_DEBUG)
3376 dnl ===================================================================
3377 dnl Checks for C compiler,
3378 dnl The check for the C++ compiler is later on.
3379 dnl ===================================================================
3380 if test "$_os" != "WINNT"; then
3382 AC_MSG_CHECKING([gcc home])
3383 if test -z "$with_gcc_home"; then
3384 if test "$enable_icecream" = "yes"; then
3385 if test -d "/usr/lib/icecc/bin"; then
3386 GCC_HOME="/usr/lib/icecc/"
3387 elif test -d "/usr/libexec/icecc/bin"; then
3388 GCC_HOME="/usr/libexec/icecc/"
3389 elif test -d "/opt/icecream/bin"; then
3390 GCC_HOME="/opt/icecream/"
3392 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3396 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3397 GCC_HOME_SET="false"
3400 GCC_HOME="$with_gcc_home"
3402 AC_MSG_RESULT($GCC_HOME)
3405 if test "$GCC_HOME_SET" = "true"; then
3406 if test -z "$CC"; then
3407 CC="$GCC_HOME/bin/gcc"
3410 if test -z "$CXX"; then
3411 CXX="$GCC_HOME/bin/g++"
3417 COMPATH=`dirname "$CC"`
3418 if test "$COMPATH" = "."; then
3419 AC_PATH_PROGS(COMPATH, $CC)
3420 dnl double square bracket to get single because of M4 quote...
3421 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3423 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3425 dnl ===================================================================
3427 dnl ===================================================================
3428 AC_MSG_CHECKING([whether to build with Java support])
3429 if test "$with_java" != "no"; then
3430 if test "$DISABLE_SCRIPTING" = TRUE; then
3431 AC_MSG_RESULT([no, overridden by --disable-scripting])
3435 AC_MSG_RESULT([yes])
3437 AC_DEFINE(HAVE_FEATURE_JAVA)
3444 AC_SUBST(ENABLE_JAVA)
3446 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3448 dnl ENABLE_JAVA="" indicate no Java support at all
3450 dnl ===================================================================
3451 dnl Check macOS SDK and compiler
3452 dnl ===================================================================
3454 if test $_os = Darwin; then
3456 # The SDK in the currently selected Xcode should be found.
3458 AC_MSG_CHECKING([what macOS SDK to use])
3459 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3460 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3461 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3462 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3463 # problems that existed in the PPC days with target versions not being respected or random
3464 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3465 # SDK version is enough, no need to do both...
3466 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3467 if test ! -d "$MACOSX_SDK_PATH"; then
3468 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3470 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3471 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3472 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3473 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3475 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3476 # correct version in case such an old SDK is specified, it will be rejected later anyway
3477 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3478 if test $MACOSX_SDK_VERSION -lt 101500; then
3479 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3481 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3482 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3484 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3486 AC_MSG_CHECKING([what minimum version of macOS to require])
3487 if test "$with_macosx_version_min_required" = "" ; then
3488 if test "$host_cpu" = x86_64; then
3489 with_macosx_version_min_required="10.15";
3491 with_macosx_version_min_required="11.0";
3494 # see same notes about MACOSX_SDK_VERSION above
3495 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3496 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3497 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3499 AC_MSG_RESULT([$with_macosx_version_min_required])
3501 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3502 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3503 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3505 AC_MSG_RESULT([yes])
3508 # export this so that "xcrun" invocations later return matching values
3509 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3510 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3511 export DEVELOPER_DIR
3512 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3513 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3515 AC_MSG_CHECKING([whether Xcode is new enough])
3516 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3517 my_xcode_ver2=${my_xcode_ver1#Xcode }
3518 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3519 if test "$my_xcode_ver3" -ge 1205; then
3520 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3521 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3522 if test "$my_xcode_ver3" -ge 1600; then
3523 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3524 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3525 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3527 if test "$my_xcode_ver3" -ge 1500; then
3528 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3529 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3530 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3531 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3532 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3537 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3540 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3541 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3543 LIBTOOL=/usr/bin/libtool
3544 INSTALL_NAME_TOOL=install_name_tool
3545 if test -z "$save_CC"; then
3546 stdlib=-stdlib=libc++
3548 AC_MSG_CHECKING([what C compiler to use])
3549 CC="`xcrun -find clang`"
3550 CC_BASE=`first_arg_basename "$CC"`
3551 if test "$host_cpu" = x86_64; then
3552 CC+=" -target x86_64-apple-macos"
3554 CC+=" -target arm64-apple-macos"
3556 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3557 AC_MSG_RESULT([$CC])
3559 AC_MSG_CHECKING([what C++ compiler to use])
3560 CXX="`xcrun -find clang++`"
3561 CXX_BASE=`first_arg_basename "$CXX"`
3562 if test "$host_cpu" = x86_64; then
3563 CXX+=" -target x86_64-apple-macos"
3565 CXX+=" -target arm64-apple-macos"
3567 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3568 AC_MSG_RESULT([$CXX])
3570 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3573 STRIP=`xcrun -find strip`
3574 LIBTOOL=`xcrun -find libtool`
3575 RANLIB=`xcrun -find ranlib`
3578 AC_MSG_CHECKING([whether to do code signing])
3580 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3583 if test "$enable_macosx_code_signing" = yes; then
3584 # By default use the first suitable certificate (?).
3586 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3587 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3588 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3589 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3590 # "Developer ID Application" one.
3591 identity="Developer ID Application:"
3593 identity=$enable_macosx_code_signing
3595 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3596 if test -n "$identity"; then
3597 MACOSX_CODESIGNING_IDENTITY=$identity
3598 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3599 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3601 AC_MSG_ERROR([cannot determine identity to use])
3605 AC_MSG_CHECKING([whether to create a Mac App Store package])
3607 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3609 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3610 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3612 if test "$enable_macosx_package_signing" = yes; then
3613 # By default use the first suitable certificate.
3614 # It should be a "3rd Party Mac Developer Installer" one
3615 identity="3rd Party Mac Developer Installer:"
3617 identity=$enable_macosx_package_signing
3619 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3620 if test -n "$identity"; then
3621 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3622 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3623 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3625 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3629 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3630 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3633 AC_MSG_CHECKING([whether to sandbox the application])
3635 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3636 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3637 elif test "$enable_macosx_sandbox" = yes; then
3638 ENABLE_MACOSX_SANDBOX=TRUE
3639 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3640 AC_MSG_RESULT([yes])
3645 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3646 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3647 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3649 if test -n "$with_macosx_provisioning_profile" ; then
3650 if test ! -f "$with_macosx_provisioning_profile"; then
3651 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3653 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3654 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3655 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3656 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3657 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3661 AC_SUBST(MACOSX_SDK_PATH)
3662 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3663 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3664 AC_SUBST(INSTALL_NAME_TOOL)
3665 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3666 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3667 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3668 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3669 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3670 AC_SUBST(MACOSX_PROVISIONING_INFO)
3671 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3672 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3673 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3675 dnl ===================================================================
3676 dnl Check iOS SDK and compiler
3677 dnl ===================================================================
3679 if test $_os = iOS; then
3680 AC_MSG_CHECKING([what iOS SDK to use])
3682 if test "$enable_ios_simulator" = "yes"; then
3683 platformlc=iphonesimulator
3684 versionmin=-mios-simulator-version-min=14.5
3687 versionmin=-miphoneos-version-min=14.5
3690 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3692 if ! test -d "$sysroot"; then
3693 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3696 AC_MSG_RESULT($sysroot)
3698 stdlib="-stdlib=libc++"
3700 AC_MSG_CHECKING([what C compiler to use])
3701 CC="`xcrun -find clang`"
3702 CC_BASE=`first_arg_basename "$CC"`
3703 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3704 AC_MSG_RESULT([$CC])
3706 AC_MSG_CHECKING([what C++ compiler to use])
3707 CXX="`xcrun -find clang++`"
3708 CXX_BASE=`first_arg_basename "$CXX"`
3709 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3710 AC_MSG_RESULT([$CXX])
3712 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3715 STRIP=`xcrun -find strip`
3716 LIBTOOL=`xcrun -find libtool`
3717 RANLIB=`xcrun -find ranlib`
3720 AC_MSG_CHECKING([whether to treat the installation as read-only])
3722 if test $_os = Darwin; then
3723 enable_readonly_installset=yes
3724 elif test "$enable_extensions" != yes; then
3725 enable_readonly_installset=yes
3727 if test "$enable_readonly_installset" = yes; then
3728 AC_MSG_RESULT([yes])
3729 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3734 dnl ===================================================================
3735 dnl Structure of install set
3736 dnl ===================================================================
3738 if test $_os = Darwin; then
3739 LIBO_BIN_FOLDER=MacOS
3740 LIBO_ETC_FOLDER=Resources
3741 LIBO_LIBEXEC_FOLDER=MacOS
3742 LIBO_LIB_FOLDER=Frameworks
3743 LIBO_LIB_PYUNO_FOLDER=Resources
3744 LIBO_SHARE_FOLDER=Resources
3745 LIBO_SHARE_HELP_FOLDER=Resources/help
3746 LIBO_SHARE_JAVA_FOLDER=Resources/java
3747 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3748 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3749 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3750 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3751 LIBO_URE_BIN_FOLDER=MacOS
3752 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3753 LIBO_URE_LIB_FOLDER=Frameworks
3754 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3755 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3756 elif test $_os = WINNT; then
3757 LIBO_BIN_FOLDER=program
3758 LIBO_ETC_FOLDER=program
3759 LIBO_LIBEXEC_FOLDER=program
3760 LIBO_LIB_FOLDER=program
3761 LIBO_LIB_PYUNO_FOLDER=program
3762 LIBO_SHARE_FOLDER=share
3763 LIBO_SHARE_HELP_FOLDER=help
3764 LIBO_SHARE_JAVA_FOLDER=program/classes
3765 LIBO_SHARE_PRESETS_FOLDER=presets
3766 LIBO_SHARE_READMES_FOLDER=readmes
3767 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3768 LIBO_SHARE_SHELL_FOLDER=program/shell
3769 LIBO_URE_BIN_FOLDER=program
3770 LIBO_URE_ETC_FOLDER=program
3771 LIBO_URE_LIB_FOLDER=program
3772 LIBO_URE_MISC_FOLDER=program
3773 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3775 LIBO_BIN_FOLDER=program
3776 LIBO_ETC_FOLDER=program
3777 LIBO_LIBEXEC_FOLDER=program
3778 LIBO_LIB_FOLDER=program
3779 LIBO_LIB_PYUNO_FOLDER=program
3780 LIBO_SHARE_FOLDER=share
3781 LIBO_SHARE_HELP_FOLDER=help
3782 LIBO_SHARE_JAVA_FOLDER=program/classes
3783 LIBO_SHARE_PRESETS_FOLDER=presets
3784 LIBO_SHARE_READMES_FOLDER=readmes
3785 if test "$enable_fuzzers" != yes; then
3786 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3788 LIBO_SHARE_RESOURCE_FOLDER=resource
3790 LIBO_SHARE_SHELL_FOLDER=program/shell
3791 LIBO_URE_BIN_FOLDER=program
3792 LIBO_URE_ETC_FOLDER=program
3793 LIBO_URE_LIB_FOLDER=program
3794 LIBO_URE_MISC_FOLDER=program
3795 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3797 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3798 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3799 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3800 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3801 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3802 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3803 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3804 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3805 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3806 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3807 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3808 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3809 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3810 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3811 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3812 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3814 # Not all of them needed in config_host.mk, add more if need arises
3815 AC_SUBST(LIBO_BIN_FOLDER)
3816 AC_SUBST(LIBO_ETC_FOLDER)
3817 AC_SUBST(LIBO_LIB_FOLDER)
3818 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3819 AC_SUBST(LIBO_SHARE_FOLDER)
3820 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3821 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3822 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3823 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3824 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3825 AC_SUBST(LIBO_URE_BIN_FOLDER)
3826 AC_SUBST(LIBO_URE_ETC_FOLDER)
3827 AC_SUBST(LIBO_URE_LIB_FOLDER)
3828 AC_SUBST(LIBO_URE_MISC_FOLDER)
3829 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3831 dnl ===================================================================
3832 dnl Windows specific tests and stuff
3833 dnl ===================================================================
3837 # Return value: $regvalue
3840 if test "$build_os" = "wsl"; then
3841 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3845 local _regentry="/proc/registry${1}/${2}"
3846 if test -f "$_regentry"; then
3847 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3848 # Registry keys read via /proc/registry* are always \0 terminated!
3849 local _regvalue=$(tr -d '\0' < "$_regentry")
3850 if test $? -eq 0; then
3856 # Get a value from the 32-bit side of the Registry
3859 reg_get_value "32" "$1"
3862 # Get a value from the 64-bit side of the Registry
3865 reg_get_value "64" "$1"
3870 # Return value: $reglist
3873 if test "$build_os" = "wsl"; then
3874 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3878 reglist=$(ls "/proc/registry${1}/${2}")
3881 # List values from the 32-bit side of the Registry
3882 reg_list_values_32()
3884 reg_list_values "32" "$1"
3887 # List values from the 64-bit side of the Registry
3888 reg_list_values_64()
3890 reg_list_values "64" "$1"
3898 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3907 PLATFORMID=windows_x86_64
3909 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3911 WIN_MULTI_ARCH="x86"
3917 PLATFORMID=windows_x86
3920 WIN_OTHER_ARCH="x64"
3925 PLATFORMID=windows_aarch64
3927 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3928 WIN_HOST_ARCH="arm64"
3933 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3937 case "$build_cpu" in
3938 x86_64) WIN_BUILD_ARCH="x64" ;;
3939 i*86) WIN_BUILD_ARCH="x86" ;;
3940 aarch64) WIN_BUILD_ARCH="arm64" ;;
3942 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3946 SCPDEFS="$SCPDEFS -D_MSC_VER"
3950 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3951 # other-arch won't, but wouldn't break the build (x64 on x86).
3952 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3953 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3957 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3958 # To allow building Windows multi-arch releases without cross-tooling
3959 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3960 cross_compiling="yes"
3964 if test "$cross_compiling" = "yes"; then
3965 export CROSS_COMPILING=TRUE
3966 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3967 ENABLE_WASM_STRIP=TRUE
3969 if test "$_os" = "Emscripten"; then
3970 if test "$with_main_module" = "calc"; then
3971 ENABLE_WASM_STRIP_WRITER=TRUE
3972 elif test "$with_main_module" = "writer"; then
3973 ENABLE_WASM_STRIP_CALC=TRUE
3978 BUILD_TYPE="$BUILD_TYPE NATIVE"
3980 AC_SUBST(CROSS_COMPILING)
3981 AC_SUBST(ENABLE_WASM_STRIP)
3982 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3983 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3985 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3986 # NOTE: must _not_ be used for bundled external libraries!
3988 if test "$GCC" = "yes"; then
3989 AC_MSG_CHECKING( for -isystem )
3991 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3992 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3994 if test -n "$ISYSTEM"; then
4000 if test -z "$ISYSTEM"; then
4001 # fall back to using -I
4006 dnl ===================================================================
4007 dnl Check which Visual Studio compiler is used
4008 dnl ===================================================================
4010 map_vs_year_to_version()
4012 # Return value: $vsversion
4024 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4028 vs_versions_to_check()
4030 # Args: $1 (optional) : versions to check, in the order of preference
4031 # Return value: $vsversions
4035 if test -n "$1"; then
4036 map_vs_year_to_version "$1"
4037 vsversions=$vsversion
4039 # Default version is 2019
4044 win_get_env_from_vsdevcmdbat()
4046 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4047 printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4048 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4049 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4050 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4052 if test "$build_os" = "wsl"; then
4053 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4055 chmod +x $WRAPPERBATCHFILEPATH
4056 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4058 rm -f $WRAPPERBATCHFILEPATH
4059 printf '%s' "$result"
4064 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4065 if test -n "$regvalue"; then
4066 PathFormat "$regvalue"
4067 UCRTSDKDIR=$formatted_path_unix
4068 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4069 UCRTVERSION=$regvalue
4071 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4075 if test -z "$UCRTSDKDIR"; then
4076 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4077 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4078 if test -f "$ide_env_file"; then
4079 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4080 UCRTSDKDIR=$formatted_path
4081 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4082 dnl Hack needed at least by tml:
4083 if test "$UCRTVERSION" = 10.0.15063.0 \
4084 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4085 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4087 UCRTVERSION=10.0.14393.0
4090 AC_MSG_ERROR([No UCRT found])
4098 # Args: $1 (optional) : The VS version year
4099 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4101 unset vctest vctoolset vcnumwithdot vcbuildnumber
4103 vs_versions_to_check "$1"
4104 if test "$build_os" = wsl; then
4105 vswhere="$PROGRAMFILESX86"
4106 if test -z "$vswhere"; then
4107 vswhere="c:\\Program Files (x86)"
4110 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4112 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4113 PathFormat "$vswhere"
4114 vswhere=$formatted_path_unix
4115 for ver in $vsversions; do
4116 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4117 if test -z "$vswhereoutput"; then
4118 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4120 # Fall back to all MS products (this includes VC++ Build Tools)
4121 if ! test -n "$vswhereoutput"; then
4122 AC_MSG_CHECKING([VC++ Build Tools and similar])
4123 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4125 if test -n "$vswhereoutput"; then
4126 PathFormat "$vswhereoutput"
4127 vctest=$formatted_path_unix
4132 if test -n "$vctest"; then
4134 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4135 vcnumwithdot=$vcnumwithdot.0
4137 case "$vcnumwithdot" in
4147 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4154 AC_MSG_CHECKING([$1 compiler])
4156 CL_EXE_PATH="$2/cl.exe"
4158 if test ! -f "$CL_EXE_PATH"; then
4159 if test "$1" = "multi-arch"; then
4160 AC_MSG_WARN([no compiler (cl.exe) in $2])
4163 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4167 dnl ===========================================================
4168 dnl Check for the corresponding mspdb*.dll
4169 dnl ===========================================================
4171 # MSVC 15.0 has libraries from 14.0?
4174 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4175 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4178 # The compiles has to find its shared libraries
4180 TEMP_PATH=`cygpath -d "$2"`
4181 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4183 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4184 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4189 AC_MSG_RESULT([$CL_EXE_PATH])
4195 if test "$_os" = "WINNT"; then
4196 AC_MSG_CHECKING([Visual C++])
4197 find_msvc "$with_visual_studio"
4198 if test -z "$vctest"; then
4199 if test -n "$with_visual_studio"; then
4200 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4202 AC_MSG_ERROR([no Visual Studio installation found])
4207 VC_PRODUCT_DIR="$vctest/VC"
4208 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4210 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4211 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4212 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4213 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4214 if test $? -ne 0; then
4220 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4221 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4222 test_cl_exe "build" "$MSVC_BUILD_PATH"
4225 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4226 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4227 test_cl_exe "host" "$MSVC_HOST_PATH"
4229 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4232 AC_MSG_CHECKING([for short pathname of VC product directory])
4233 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4234 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4239 AC_MSG_CHECKING([for UCRT location])
4241 # find_ucrt errors out if it doesn't find it
4242 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4243 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4244 ucrtincpath_formatted=$formatted_path
4245 # SOLARINC is used for external modules and must be set too.
4246 # And no, it's not sufficient to set SOLARINC only, as configure
4247 # itself doesn't honour it.
4248 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4249 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4250 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4251 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4253 AC_SUBST(UCRTSDKDIR)
4254 AC_SUBST(UCRTVERSION)
4256 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4257 # Find the proper version of MSBuild.exe to use based on the VS version
4258 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4259 if test -z "$regvalue" ; then
4260 if test "$WIN_BUILD_ARCH" != "x64"; then
4261 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4263 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4266 if test -d "$regvalue" ; then
4267 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4268 AC_MSG_RESULT([$regvalue])
4270 AC_MSG_ERROR([MSBuild.exe location not found])
4273 # Find the version of devenv.exe
4274 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4275 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4276 DEVENV_unix=$(cygpath -u "$DEVENV")
4277 if test ! -e "$DEVENV_unix"; then
4278 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4281 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4282 dnl needed when building CLR code:
4283 if test -z "$MSVC_CXX"; then
4284 # This gives us a posix path with 8.3 filename restrictions
4285 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4288 if test -z "$CC"; then
4290 CC_BASE=`first_arg_basename "$CC"`
4292 if test -z "$CXX"; then
4294 CXX_BASE=`first_arg_basename "$CXX"`
4297 if test -n "$CC"; then
4298 # Remove /cl.exe from CC case insensitive
4299 AC_MSG_NOTICE([found Visual C++ $vcyear])
4301 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4302 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4304 PathFormat "$COMPATH"
4305 COMPATH=`win_short_path_for_make "$formatted_path"`
4308 VCTOOLSET=$vctoolset
4310 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4311 # are always "better", we list them in reverse chronological order.
4313 case "$vcnumwithdot" in
4315 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4319 # The expectation is that --with-windows-sdk should not need to be used
4320 if test -n "$with_windows_sdk"; then
4321 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4322 *" "$with_windows_sdk" "*)
4323 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4326 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4331 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4336 AC_MSG_ERROR([Visual C++ not found after all, huh])
4339 # ERROR if VS version < 16.5
4340 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4341 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4342 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4343 // between Visual Studio versions and _MSC_VER:
4347 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4349 # WARN if VS version < 16.10
4350 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4351 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4355 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4357 if test $vs2019_recommended_version = yes; then
4358 AC_MSG_RESULT([yes])
4361 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."
4364 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4365 # version of the Explorer extension (and maybe other small
4366 # bits, too) needed when installing a 32-bit LibreOffice on a
4367 # 64-bit OS. The 64-bit Explorer extension is a feature that
4368 # has been present since long in OOo. Don't confuse it with
4369 # building LibreOffice itself as 64-bit code.
4374 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4375 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4376 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4377 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4380 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4381 AC_MSG_RESULT([found])
4383 AC_MSG_RESULT([not found])
4384 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4386 elif test "$WIN_HOST_ARCH" = "x64"; then
4391 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4392 AC_SUBST(CXX_X64_BINARY)
4394 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4395 # needed to support TWAIN scan on both 32- and 64-bit systems
4397 case "$WIN_HOST_ARCH" in
4399 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4400 if test -n "$CXX_X86_BINARY"; then
4402 AC_MSG_RESULT([preset])
4403 elif test -n "$WIN_MULTI_ARCH"; then
4405 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4406 AC_MSG_RESULT([found])
4408 AC_MSG_RESULT([not found])
4409 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4414 CXX_X86_BINARY=$MSVC_CXX
4418 AC_SUBST(CXX_X86_BINARY)
4426 AC_MSG_CHECKING([whether the compiler is actually Clang])
4427 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4433 [AC_MSG_RESULT([yes])
4435 [AC_MSG_RESULT([no])])
4436 AC_SUBST(COM_IS_CLANG)
4439 if test "$COM_IS_CLANG" = TRUE; then
4440 AC_MSG_CHECKING([whether Clang is new enough])
4441 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4442 #if !defined __apple_build_version__
4446 [my_apple_clang=yes],[my_apple_clang=])
4447 if test "$my_apple_clang" = yes; then
4448 AC_MSG_RESULT([assumed yes (Apple Clang)])
4449 elif test "$_os" = Emscripten; then
4450 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4452 if test "$_os" = WINNT; then
4453 dnl In which case, assume clang-cl:
4458 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4459 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4460 CLANGVER=`echo $clang_version \
4461 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4462 if test "$CLANGVER" -ge 120000; then
4463 AC_MSG_RESULT([yes ($clang_version)])
4465 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4467 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4468 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4472 SHOWINCLUDES_PREFIX=
4473 if test "$_os" = WINNT; then
4474 dnl We need to guess the prefix of the -showIncludes output, it can be
4476 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4477 echo "#include <stdlib.h>" > conftest.c
4478 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4479 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4480 rm -f conftest.c conftest.obj
4481 if test -z "$SHOWINCLUDES_PREFIX"; then
4482 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4484 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4487 AC_SUBST(SHOWINCLUDES_PREFIX)
4490 # prefix C with ccache if needed
4492 if test "$CCACHE" != ""; then
4493 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4497 CFLAGS="$CFLAGS --ccache-skip -O2"
4498 # msvc does not fail on unknown options, check stdout
4499 if test "$COM" = MSC; then
4500 CFLAGS="$CFLAGS -nologo"
4502 save_ac_c_werror_flag=$ac_c_werror_flag
4503 ac_c_werror_flag=yes
4504 dnl an empty program will do, we're checking the compiler flags
4505 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4506 [use_ccache=yes], [use_ccache=no])
4508 ac_c_werror_flag=$save_ac_c_werror_flag
4509 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4510 AC_MSG_RESULT([yes])
4513 CC_BASE="ccache $CC_BASE"
4519 # ===================================================================
4520 # check various GCC options that Clang does not support now but maybe
4521 # will somewhen in the future, check them even for GCC, so that the
4523 # ===================================================================
4526 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4527 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4529 CFLAGS="$CFLAGS -Werror -ggdb2"
4530 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4532 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4533 AC_MSG_RESULT([yes])
4538 if test "$host_cpu" = "m68k"; then
4539 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4541 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4542 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4544 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4545 AC_MSG_RESULT([yes])
4551 AC_SUBST(HAVE_GCC_GGDB2)
4553 dnl ===================================================================
4554 dnl Test the gcc version
4555 dnl ===================================================================
4556 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4557 AC_MSG_CHECKING([the GCC version])
4558 _gcc_version=`$CC -dumpfullversion`
4559 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4560 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4561 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4563 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4565 if test "$gcc_full_version" -lt 120000; then
4566 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4569 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4570 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4571 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4572 # (which reports itself as GCC 4.2.1).
4575 AC_SUBST(GCC_VERSION)
4577 dnl Set the ENABLE_DBGUTIL variable
4578 dnl ===================================================================
4579 AC_MSG_CHECKING([whether to build with additional debug utilities])
4580 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4581 ENABLE_DBGUTIL="TRUE"
4582 # this is an extra var so it can have different default on different MSVC
4583 # versions (in case there are version specific problems with it)
4584 MSVC_USE_DEBUG_RUNTIME="TRUE"
4586 AC_MSG_RESULT([yes])
4587 # cppunit and graphite expose STL in public headers
4588 if test "$with_system_cppunit" = "yes"; then
4589 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4591 with_system_cppunit=no
4593 if test "$with_system_graphite" = "yes"; then
4594 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4596 with_system_graphite=no
4598 if test "$with_system_orcus" = "yes"; then
4599 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4601 with_system_orcus=no
4603 if test "$with_system_libcmis" = "yes"; then
4604 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4606 with_system_libcmis=no
4608 if test "$with_system_hunspell" = "yes"; then
4609 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4611 with_system_hunspell=no
4613 if test "$with_system_gpgmepp" = "yes"; then
4614 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4616 with_system_gpgmepp=no
4618 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4619 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4620 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4621 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4622 # of those two is using the system variant:
4623 if test "$with_system_libnumbertext" = "yes"; then
4624 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4626 with_system_libnumbertext=no
4628 if test "$with_system_libwps" = "yes"; then
4629 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4631 with_system_libwps=no
4635 MSVC_USE_DEBUG_RUNTIME=""
4638 AC_SUBST(ENABLE_DBGUTIL)
4639 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4641 dnl Set the ENABLE_DEBUG variable.
4642 dnl ===================================================================
4643 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4644 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4646 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4647 if test -z "$libo_fuzzed_enable_debug"; then
4648 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4650 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4655 AC_MSG_CHECKING([whether to do a debug build])
4656 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4658 if test -n "$ENABLE_DBGUTIL" ; then
4659 AC_MSG_RESULT([yes (dbgutil)])
4661 AC_MSG_RESULT([yes])
4667 AC_SUBST(ENABLE_DEBUG)
4669 dnl ===================================================================
4670 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4671 dnl This is done only after compiler checks (need to know if Clang is
4672 dnl used, for different defaults) and after checking if a debug build
4673 dnl is wanted (non-debug builds get the default linker if not explicitly
4674 dnl specified otherwise).
4675 dnl All checks for linker features/options should come after this.
4676 dnl ===================================================================
4679 use_ld=-fuse-ld=${1%%:*}
4681 if test "$use_ld_path" != "$1"; then
4682 if test "$COM_IS_CLANG" = TRUE; then
4683 if test "$CLANGVER" -ge 120000; then
4684 use_ld="${use_ld} --ld-path=${use_ld_path}"
4686 use_ld="-fuse-ld=${use_ld_path}"
4689 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4690 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4691 # pickup the alternative linker, when called by libtool for linking.
4692 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4693 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4696 use_ld_fail_if_error=$2
4698 AC_MSG_CHECKING([for $use_ld linker support])
4699 use_ld_ldflags_save="$LDFLAGS"
4700 LDFLAGS="$LDFLAGS $use_ld"
4701 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4704 printf ("hello world\n");
4705 ])], USE_LD=$use_ld, [])
4706 if test -n "$USE_LD"; then
4707 AC_MSG_RESULT( yes )
4710 if test -n "$use_ld_fail_if_error"; then
4716 if test -n "$use_ld_ok"; then
4717 dnl keep the value of LDFLAGS
4720 LDFLAGS="$use_ld_ldflags_save"
4724 if test "$enable_ld" != "no"; then
4725 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4726 if test -n "$enable_ld"; then
4727 check_use_ld "$enable_ld" fail_if_error
4728 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4729 dnl non-debug builds default to the default linker
4731 elif test -n "$COM_IS_CLANG"; then
4733 if test $? -ne 0; then
4735 if test $? -ne 0; then
4740 # For gcc first try gold, new versions also support lld/mold.
4742 if test $? -ne 0; then
4744 if test $? -ne 0; then
4749 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4751 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4752 if test -z "$ld_used"; then
4755 AC_MSG_CHECKING([for linker that is used])
4756 AC_MSG_RESULT([$ld_used])
4757 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4758 if echo "$ld_used" | grep -q "^GNU ld"; then
4759 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4760 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4764 if test "$enable_ld" = "yes"; then
4765 AC_MSG_ERROR([--enable-ld not supported])
4772 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4773 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4774 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4775 bsymbolic_functions_ldflags_save=$LDFLAGS
4776 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4777 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4780 printf ("hello world\n");
4781 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4782 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4783 AC_MSG_RESULT( found )
4785 AC_MSG_RESULT( not found )
4787 LDFLAGS=$bsymbolic_functions_ldflags_save
4789 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4792 if test "$GCC" = "yes"; then
4793 for flag in "--gc-sections" "-dead_strip"; do
4794 AC_MSG_CHECKING([for $flag linker support])
4795 ldflags_save=$LDFLAGS
4796 LDFLAGS="$LDFLAGS -Wl,$flag"
4797 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4800 printf ("hello world\n");
4802 LD_GC_SECTIONS="-Wl,$flag"
4803 AC_MSG_RESULT( found )
4805 AC_MSG_RESULT( not found )
4807 LDFLAGS=$ldflags_save
4808 if test -n "$LD_GC_SECTIONS"; then
4813 AC_SUBST(LD_GC_SECTIONS)
4815 HAVE_EXTERNAL_DWARF=
4816 if test "$enable_split_debug" != no; then
4818 if test -n "$ENABLE_LTO"; then
4819 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4820 elif test "$enable_split_debug" = yes; then
4822 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4823 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4826 if test -n "$use_split_debug"; then
4827 if test "$_os" = "Emscripten"; then
4828 TEST_CC_FLAG=-gseparate-dwarf
4830 TEST_CC_FLAG=-gsplit-dwarf
4832 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4834 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4835 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4837 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4838 AC_MSG_RESULT([yes])
4840 if test "$enable_split_debug" = yes; then
4847 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4848 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4849 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4852 AC_SUBST(HAVE_EXTERNAL_DWARF)
4854 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4855 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4857 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4858 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4860 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4861 AC_MSG_RESULT([yes])
4865 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4868 if test "$enable_gdb_index" != "no"; then
4869 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4870 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4871 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4873 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4875 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4876 if test "$have_ggnu_pubnames" != "TRUE"; then
4877 if test "$enable_gdb_index" = "yes"; then
4878 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4883 AC_MSG_RESULT( yes )
4884 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4885 ldflags_save=$LDFLAGS
4886 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4887 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4890 printf ("hello world\n");
4891 ])], ENABLE_GDB_INDEX=TRUE, [])
4892 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4893 AC_MSG_RESULT( yes )
4895 if test "$enable_gdb_index" = "yes"; then
4901 LDFLAGS=$ldflags_save
4905 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4906 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4907 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4910 AC_SUBST(ENABLE_GDB_INDEX)
4912 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4915 if test "$enable_sal_log" = yes; then
4918 AC_SUBST(ENABLE_SAL_LOG)
4920 dnl Check for enable symbols option
4921 dnl ===================================================================
4922 AC_MSG_CHECKING([whether to generate debug information])
4923 if test -z "$enable_symbols"; then
4924 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4930 if test "$enable_symbols" = yes; then
4931 ENABLE_SYMBOLS_FOR=all
4932 AC_MSG_RESULT([yes])
4933 elif test "$enable_symbols" = no; then
4937 # Selective debuginfo.
4938 ENABLE_SYMBOLS_FOR="$enable_symbols"
4939 AC_MSG_RESULT([for "$enable_symbols"])
4941 AC_SUBST(ENABLE_SYMBOLS_FOR)
4943 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4944 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4945 AC_MSG_CHECKING([whether enough memory is available for linking])
4946 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4947 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4948 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4949 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4951 AC_MSG_RESULT([yes])
4956 ENABLE_OPTIMIZED_DEBUG=
4957 AC_MSG_CHECKING([whether to compile with optimization flags])
4958 if test -z "$enable_optimized"; then
4959 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4962 enable_optimized=yes
4965 if test "$enable_optimized" = yes; then
4966 ENABLE_OPTIMIZED=TRUE
4967 AC_MSG_RESULT([yes])
4968 elif test "$enable_optimized" = debug; then
4969 ENABLE_OPTIMIZED_DEBUG=TRUE
4970 AC_MSG_RESULT([yes (debug)])
4972 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4973 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4975 CFLAGS="$CFLAGS -Werror -Og"
4976 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4978 if test "$HAVE_GCC_OG" = "TRUE"; then
4979 AC_MSG_RESULT([yes])
4984 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4985 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4990 AC_SUBST(ENABLE_OPTIMIZED)
4991 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4994 # determine CPUNAME, OS, ...
5010 if test "$enable_ios_simulator" = "yes"; then
5015 PLATFORMID=macosx_aarch64
5019 if test "$enable_ios_simulator" = "yes"; then
5024 PLATFORMID=macosx_x86_64
5027 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5040 if test "$enable_ios_simulator" = "yes"; then
5041 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5045 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5050 PLATFORMID=ios_arm64
5063 PLATFORMID=dragonfly_x86
5068 PLATFORMID=dragonfly_x86_64
5071 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5085 PLATFORMID=freebsd_aarch64
5091 PLATFORMID=freebsd_x86
5096 PLATFORMID=freebsd_x86_64
5101 PLATFORMID=freebsd_powerpc64
5106 PLATFORMID=freebsd_powerpc
5109 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5125 PLATFORMID=haiku_x86
5130 PLATFORMID=haiku_x86_64
5133 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5149 PLATFORMID=kfreebsd_x86
5154 PLATFORMID=kfreebsd_x86_64
5157 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5162 linux-gnu*|linux-musl*)
5172 PLATFORMID=linux_aarch64
5174 EPM_FLAGS="-a arm64"
5179 PLATFORMID=linux_alpha
5185 PLATFORMID=linux_arm_eabi
5189 PLATFORMID=linux_arm_oabi
5197 PLATFORMID=linux_hppa
5202 PLATFORMID=linux_x86
5207 PLATFORMID=linux_ia64
5213 PLATFORMID=linux_mips_eb
5218 EPM_FLAGS="-a mips64"
5219 PLATFORMID=linux_mips64_eb
5224 EPM_FLAGS="-a mips64el"
5225 PLATFORMID=linux_mips64_el
5230 EPM_FLAGS="-a mipsel"
5231 PLATFORMID=linux_mips_el
5236 EPM_FLAGS="-a riscv64"
5237 PLATFORMID=linux_riscv64
5242 PLATFORMID=linux_m68k
5247 PLATFORMID=linux_powerpc
5252 PLATFORMID=linux_powerpc64
5256 RTL_ARCH=PowerPC_64_LE
5257 PLATFORMID=linux_powerpc64_le
5262 PLATFORMID=linux_sparc
5267 PLATFORMID=linux_sparc64
5272 PLATFORMID=linux_s390x
5277 PLATFORMID=linux_x86_64
5281 RTL_ARCH=LOONGARCH64
5282 PLATFORMID=linux_loongarch64
5285 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5301 PLATFORMID=android_arm_eabi
5306 PLATFORMID=android_aarch64
5311 PLATFORMID=android_x86
5316 PLATFORMID=android_x86_64
5319 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5334 PLATFORMID=netbsd_x86
5339 PLATFORMID=netbsd_powerpc
5344 PLATFORMID=netbsd_sparc
5349 PLATFORMID=netbsd_x86_64
5352 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5367 PLATFORMID=openbsd_x86
5372 PLATFORMID=openbsd_x86_64
5375 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5378 SOLARINC="$SOLARINC -I/usr/local/include"
5391 PLATFORMID=solaris_x86
5396 PLATFORMID=solaris_sparc
5401 PLATFORMID=solaris_sparc64
5404 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5407 SOLARINC="$SOLARINC -I/usr/local/include"
5420 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5425 PLATFORMID=linux_x86
5429 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5434 if test "$enable_gui" = "no"; then
5435 if test "$using_x11" != yes; then
5436 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5442 AC_DEFINE(HAVE_FEATURE_UI)
5444 AC_SUBST(DISABLE_GUI)
5446 if test "$with_x" = "no"; then
5450 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5451 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5454 if test "$using_x11" = yes; then
5455 if test "$USING_X11" = TRUE; then
5456 AC_DEFINE(USING_X11)
5459 if test "$DISABLE_DYNLOADING" = TRUE; then
5464 if test "$USING_X11" = TRUE; then
5465 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5469 WORKDIR="${BUILDDIR}/workdir"
5470 INSTDIR="${BUILDDIR}/instdir"
5471 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5472 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5480 AC_SUBST([INSTROOT])
5481 AC_SUBST([INSTROOTBASE])
5485 AC_SUBST(PLATFORMID)
5486 AC_SUBST(WINDOWS_X64)
5487 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5488 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5490 if test "$OS" = WNT -a "$COM" = MSC; then
5492 INTEL) CPPU_ENV=msci ;;
5493 X86_64) CPPU_ENV=mscx ;;
5494 AARCH64) CPPU_ENV=msca ;;
5496 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5504 dnl ===================================================================
5505 dnl Test which package format to use
5506 dnl ===================================================================
5507 AC_MSG_CHECKING([which package format to use])
5508 if test -n "$with_package_format" -a "$with_package_format" != no; then
5509 for i in $with_package_format; do
5511 bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5514 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5515 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5516 deb - Debian software distribution
5517 pkg - Solaris software distribution
5518 rpm - RedHat software distribution
5520 LibreOffice additionally supports:
5521 archive - .tar.gz or .zip
5523 installed - installation tree
5529 # fakeroot is needed to ensure correct file ownerships/permissions
5530 # inside deb packages and tar archives created on Linux and Solaris.
5531 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5532 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5533 if test "$FAKEROOT" = "no"; then
5535 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5538 PKGFORMAT="$with_package_format"
5539 AC_MSG_RESULT([$PKGFORMAT])
5542 AC_MSG_RESULT([none])
5546 dnl ===================================================================
5547 dnl handle help related options
5549 dnl If you change help related options, please update README.help
5550 dnl ===================================================================
5557 AC_MSG_CHECKING([which help to build])
5558 if test -n "$with_help" -a "$with_help" != "no"; then
5559 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5560 BUILD_TYPE="$BUILD_TYPE HELP"
5561 case "$with_help" in
5563 ENABLE_HTMLHELP=TRUE
5565 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5566 AC_MSG_RESULT([HTML (local)])
5569 ENABLE_HTMLHELP=TRUE
5571 AC_MSG_RESULT([HTML (online)])
5575 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5576 AC_MSG_RESULT([XML (local)])
5579 AC_MSG_ERROR([Unknown --with-help=$with_help])
5586 AC_MSG_CHECKING([if we need to build the help index tooling])
5587 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5588 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5590 AC_MSG_RESULT([yes])
5595 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5596 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5597 if test "$HELP_ONLINE" != TRUE; then
5598 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5600 case "$with_omindex" in
5602 HELP_OMINDEX_PAGE=TRUE
5603 AC_MSG_RESULT([SERVER])
5606 AC_MSG_RESULT([NOXAP])
5609 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5616 AC_MSG_CHECKING([whether to include the XML-help support])
5617 if test "$enable_xmlhelp" = yes; then
5618 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5620 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5621 AC_MSG_RESULT([yes])
5623 if test "$with_help" = yes; then
5624 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5629 dnl Test whether to integrate helppacks into the product's installer
5630 AC_MSG_CHECKING([for helppack integration])
5631 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5632 AC_MSG_RESULT([no integration])
5634 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5635 AC_MSG_RESULT([integration])
5638 AC_SUBST([ENABLE_HTMLHELP])
5639 AC_SUBST([HELP_OMINDEX_PAGE])
5640 AC_SUBST([HELP_ONLINE])
5641 # WITH_HELPPACKS is used only in configure
5643 dnl ===================================================================
5644 dnl Set up a different compiler to produce tools to run on the build
5645 dnl machine when doing cross-compilation
5646 dnl ===================================================================
5648 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5649 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5650 if test "$cross_compiling" = "yes"; then
5651 AC_MSG_CHECKING([for BUILD platform configuration])
5653 rm -rf CONF-FOR-BUILD config_build.mk
5654 mkdir CONF-FOR-BUILD
5655 # Here must be listed all files needed when running the configure script. In particular, also
5656 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5657 # keep them in the same order as there.
5658 (cd $SRC_ROOT && tar cf - \
5660 bin/get_config_variables \
5661 solenv/bin/getcompver.awk \
5662 solenv/inc/langlist.mk \
5665 config_host_lang.mk.in \
5668 bin/bffvalidator.sh.in \
5669 bin/odfvalidator.sh.in \
5670 bin/officeotron.sh.in \
5671 hardened_runtime.xcent.in \
5672 instsetoo_native/util/openoffice.lst.in \
5674 sysui/desktop/macosx/Info.plist.in \
5675 .vscode/vs-code-template.code-workspace.in \
5676 solenv/lockfile/autoconf.h.in \
5678 | (cd CONF-FOR-BUILD && tar xf -)
5679 cp configure CONF-FOR-BUILD
5680 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5682 unset COM USING_X11 OS CPUNAME
5683 unset CC CXX SYSBASE CFLAGS
5684 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5685 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5686 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5687 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5688 if test -n "$CC_FOR_BUILD"; then
5689 export CC="$CC_FOR_BUILD"
5690 CC_BASE=`first_arg_basename "$CC"`
5692 if test -n "$CXX_FOR_BUILD"; then
5693 export CXX="$CXX_FOR_BUILD"
5694 CXX_BASE=`first_arg_basename "$CXX"`
5696 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5699 # Handle host configuration, which affects the cross-toolset too
5701 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5702 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5703 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5704 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5705 if test -n "$ENABLE_JAVA"; then
5708 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5709 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5712 if test -z "$with_jdk_home"; then
5713 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.])
5718 sub_conf_opts="$sub_conf_opts --without-java"
5720 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5721 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5722 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5723 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5724 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5725 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5726 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5727 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5728 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5729 if test "$_os" = "Emscripten"; then
5730 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5731 if test "${with_main_module+set}" = set; then
5732 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5734 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5737 # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5738 # when cross-compiling for aarch64, overriding the defaults below
5739 test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5741 # Don't bother having configure look for stuff not needed for the build platform anyway
5742 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5743 sub_conf_defaults=" \
5744 --build="$build_alias" \
5745 --disable-cairo-canvas \
5747 --disable-customtarget-components \
5748 --disable-firebird-sdbc \
5750 --disable-gstreamer-1-0 \
5754 --disable-mariadb-sdbc \
5756 --disable-online-update \
5759 --disable-pdfimport \
5760 --disable-postgresql-sdbc \
5763 --enable-dynamic-loading \
5764 --enable-icecream="$enable_icecream" \
5770 # single quotes added for better readability in case of spaces
5771 echo " Running CONF-FOR-BUILD/configure" \
5772 $sub_conf_defaults \
5773 --with-parallelism="'$with_parallelism'" \
5774 --with-theme="'$with_theme'" \
5775 --with-vendor="'$with_vendor'" \
5777 $with_build_platform_configure_options \
5781 $sub_conf_defaults \
5782 --with-parallelism="$with_parallelism" \
5783 --with-theme="$with_theme" \
5784 "--with-vendor=$with_vendor" \
5786 $with_build_platform_configure_options \
5788 2>&1 | sed -e 's/^/ /'
5789 if test [${PIPESTATUS[0]}] -ne 0; then
5790 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5793 # filter permitted build targets
5794 PERMITTED_BUILD_TARGETS="
5830 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5831 # newlined lists, to use grep as a filter
5832 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5833 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5834 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5835 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5837 cp config_host.mk ../config_build.mk
5838 cp config_host_lang.mk ../config_build_lang.mk
5839 mv config.log ../config.Build.log
5840 mkdir -p ../config_build
5841 mv config_host/*.h ../config_build
5842 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5844 # all these will get a _FOR_BUILD postfix
5845 DIRECT_FOR_BUILD_SETTINGS="
5853 JDK_SECURITYMANAGER_DISALLOWED
5857 LIBO_URE_MISC_FOLDER
5863 # these overwrite host config with build config
5864 OVERWRITING_SETTINGS="
5879 # these need some special handling
5880 EXTRA_HANDLED_SETTINGS="
5887 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5891 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5892 echo "$line" >>build-config
5894 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5896 VV=`eval "echo $VV"`
5897 if test -n "$VV"; then
5898 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5899 echo "$line" >>build-config
5903 for V in $OVERWRITING_SETTINGS; do
5905 VV=`eval "echo $VV"`
5906 if test -n "$VV"; then
5907 line=${V}='${'${V}:-$VV'}'
5908 echo "$line" >>build-config
5912 for V in INSTDIR INSTROOT WORKDIR; do
5914 VV=`eval "echo $VV"`
5915 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5916 if test -n "$VV"; then
5917 line="${V}_FOR_BUILD='$VV'"
5918 echo "$line" >>build-config
5923 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5924 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])
5925 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5926 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5928 eval `cat CONF-FOR-BUILD/build-config`
5930 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5932 rm -rf CONF-FOR-BUILD
5936 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5937 CXX_FOR_BUILD="$CXX"
5938 INSTDIR_FOR_BUILD="$INSTDIR"
5939 INSTROOT_FOR_BUILD="$INSTROOT"
5940 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5941 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5942 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5943 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5944 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5945 WORKDIR_FOR_BUILD="$WORKDIR"
5947 AC_SUBST(OS_FOR_BUILD)
5948 AC_SUBST(INSTDIR_FOR_BUILD)
5949 AC_SUBST(INSTROOT_FOR_BUILD)
5950 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5951 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5952 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5953 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5954 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5955 AC_SUBST(WORKDIR_FOR_BUILD)
5956 AC_SUBST(CC_FOR_BUILD)
5957 AC_SUBST(CXX_FOR_BUILD)
5958 AC_SUBST(CPPU_ENV_FOR_BUILD)
5960 dnl ===================================================================
5961 dnl Check for lockfile deps
5962 dnl ===================================================================
5963 if test -z "$CROSS_COMPILING"; then
5964 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5965 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5966 AC_MSG_CHECKING([which lockfile binary to use])
5967 case "$with_system_lockfile" in
5969 AC_MSG_RESULT([external])
5970 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5973 AC_MSG_RESULT([internal])
5976 if test -x "$with_system_lockfile"; then
5977 LOCKFILE="$with_system_lockfile"
5979 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5981 AC_MSG_RESULT([$with_system_lockfile])
5986 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5987 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5990 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5991 AC_CHECK_FUNCS([utime utimes])
5994 dnl ===================================================================
5995 dnl Check for syslog header
5996 dnl ===================================================================
5997 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5999 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6000 dnl ===================================================================
6001 AC_MSG_CHECKING([whether to turn warnings to errors])
6002 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6003 ENABLE_WERROR="TRUE"
6004 PYTHONWARNINGS="error"
6005 AC_MSG_RESULT([yes])
6007 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6008 ENABLE_WERROR="TRUE"
6009 PYTHONWARNINGS="error"
6010 AC_MSG_RESULT([yes])
6015 AC_SUBST(ENABLE_WERROR)
6016 AC_SUBST(PYTHONWARNINGS)
6018 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6019 dnl ===================================================================
6020 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6021 if test -z "$enable_assert_always_abort"; then
6022 if test "$ENABLE_DEBUG" = TRUE; then
6023 enable_assert_always_abort=yes
6025 enable_assert_always_abort=no
6028 if test "$enable_assert_always_abort" = "yes"; then
6029 ASSERT_ALWAYS_ABORT="TRUE"
6030 AC_MSG_RESULT([yes])
6032 ASSERT_ALWAYS_ABORT="FALSE"
6035 AC_SUBST(ASSERT_ALWAYS_ABORT)
6037 # Determine whether to use ooenv for the instdir installation
6038 # ===================================================================
6039 if test $_os != "WINNT" -a $_os != "Darwin"; then
6040 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6041 if test -z "$enable_ooenv"; then
6042 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6048 if test "$enable_ooenv" = "no"; then
6052 AC_MSG_RESULT([yes])
6055 AC_SUBST(ENABLE_OOENV)
6057 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6058 if test "$enable_qt5" = "no"; then
6059 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6065 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6066 if test "$enable_qt6" = "no"; then
6067 AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6074 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6075 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6076 AC_MSG_RESULT([yes])
6078 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6082 AC_SUBST(ENABLE_PAGEIN)
6084 dnl ===================================================================
6085 dnl check for cups support
6086 dnl ===================================================================
6088 AC_MSG_CHECKING([whether to enable CUPS support])
6089 if test "$test_cups" = yes -a "$enable_cups" != no; then
6091 AC_MSG_RESULT([yes])
6093 AC_MSG_CHECKING([whether cups support is present])
6094 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6095 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6096 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6097 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6103 AC_SUBST(ENABLE_CUPS)
6105 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6107 dnl whether to find & fetch external tarballs?
6108 dnl ===================================================================
6109 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6110 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6111 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6113 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6116 if test -z "$TARFILE_LOCATION"; then
6117 if test -d "$SRC_ROOT/src" ; then
6118 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6119 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6121 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6123 AbsolutePath "$TARFILE_LOCATION"
6124 PathFormat "${absolute_path}"
6125 TARFILE_LOCATION="${formatted_path_unix}"
6127 AC_SUBST(TARFILE_LOCATION)
6129 AC_MSG_CHECKING([whether we want to fetch tarballs])
6130 if test "$enable_fetch_external" != "no"; then
6131 if test "$with_all_tarballs" = "yes"; then
6132 AC_MSG_RESULT([yes, all of them])
6133 DO_FETCH_TARBALLS="ALL"
6135 AC_MSG_RESULT([yes, if we use them])
6136 DO_FETCH_TARBALLS="TRUE"
6142 AC_SUBST(DO_FETCH_TARBALLS)
6144 dnl Test whether to include MySpell dictionaries
6145 dnl ===================================================================
6146 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6147 if test "$with_myspell_dicts" = "yes"; then
6148 AC_MSG_RESULT([yes])
6149 WITH_MYSPELL_DICTS=TRUE
6150 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6151 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6156 AC_SUBST(WITH_MYSPELL_DICTS)
6158 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6159 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6160 if test "$with_system_dicts" = yes; then
6161 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6163 with_system_dicts=no
6166 AC_MSG_CHECKING([whether to use dicts from external paths])
6167 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6168 AC_MSG_RESULT([yes])
6170 AC_MSG_CHECKING([for spelling dictionary directory])
6171 if test -n "$with_external_dict_dir"; then
6172 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6174 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6175 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6176 DICT_SYSTEM_DIR=file:///usr/share/myspell
6179 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6180 AC_MSG_CHECKING([for hyphenation patterns directory])
6181 if test -n "$with_external_hyph_dir"; then
6182 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6184 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6186 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6187 AC_MSG_CHECKING([for thesaurus directory])
6188 if test -n "$with_external_thes_dir"; then
6189 THES_SYSTEM_DIR=file://$with_external_thes_dir
6191 THES_SYSTEM_DIR=file:///usr/share/mythes
6193 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6198 AC_SUBST(SYSTEM_DICTS)
6199 AC_SUBST(DICT_SYSTEM_DIR)
6200 AC_SUBST(HYPH_SYSTEM_DIR)
6201 AC_SUBST(THES_SYSTEM_DIR)
6203 dnl ===================================================================
6204 dnl Precompiled headers.
6206 AC_MSG_CHECKING([whether to enable pch feature])
6207 if test -z "$enable_pch"; then
6208 if test "$_os" = "WINNT"; then
6209 # Enabled by default on Windows.
6211 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6212 if test -z "$enable_ccache" -a "$SCCACHE"; then
6219 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6220 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6222 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6223 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6225 if test "$enable_pch" = "system"; then
6227 AC_MSG_RESULT([yes (system headers)])
6228 elif test "$enable_pch" = "base"; then
6230 AC_MSG_RESULT([yes (system and base headers)])
6231 elif test "$enable_pch" = "normal"; then
6233 AC_MSG_RESULT([yes (normal)])
6234 elif test "$enable_pch" = "full"; then
6236 AC_MSG_RESULT([yes (full)])
6237 elif test "$enable_pch" = "yes"; then
6238 # Pick a suitable default.
6239 if test "$GCC" = "yes"; then
6240 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6241 # while making the PCHs larger and rebuilds more likely.
6243 AC_MSG_RESULT([yes (system and base headers)])
6245 # With MSVC the highest level makes a significant difference,
6246 # and it was the default when there used to be no PCH levels.
6248 AC_MSG_RESULT([yes (full)])
6250 elif test "$enable_pch" = "no"; then
6253 AC_MSG_ERROR([Unknown value for --enable-pch])
6255 AC_SUBST(ENABLE_PCH)
6256 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6257 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6258 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6259 if test "$CCACHE_BIN" != "not found"; then
6260 AC_MSG_CHECKING([ccache version])
6261 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6262 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6263 AC_MSG_RESULT([$CCACHE_VERSION])
6264 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6265 if test "$CCACHE_NUMVER" -gt "030701"; then
6266 AC_MSG_RESULT([yes])
6268 AC_MSG_RESULT([no (not newer than 3.7.1)])
6274 PCH_INSTANTIATE_TEMPLATES=
6275 if test -n "$ENABLE_PCH"; then
6276 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6278 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6279 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6281 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6287 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6289 BUILDING_PCH_WITH_OBJ=
6290 if test -n "$ENABLE_PCH"; then
6291 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6293 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6294 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6296 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6302 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6307 if test "$COM" = MSC; then
6308 fpch_prefix="-Xclang "
6310 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6311 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6313 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6314 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6315 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6317 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6318 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6319 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6321 if test -n "$PCH_CODEGEN"; then
6327 AC_SUBST(PCH_CODEGEN)
6328 AC_SUBST(PCH_NO_CODEGEN)
6330 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6331 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6333 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6334 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6336 if test -n "$PCH_DEBUGINFO"; then
6342 AC_SUBST(PCH_DEBUGINFO)
6346 AC_MSG_CHECKING([the GNU Make version])
6347 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6348 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6349 if test "$_make_longver" -ge "040000"; then
6350 AC_MSG_RESULT([$GNUMAKE $_make_version])
6352 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6355 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6357 if test "$_make_ver_check" = ""; then
6361 HAVE_LD_HASH_STYLE=FALSE
6362 WITH_LINKER_HASH_STYLE=
6363 AC_MSG_CHECKING([for --hash-style gcc linker support])
6364 if test "$GCC" = "yes"; then
6365 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6366 hash_styles="gnu sysv"
6367 elif test "$with_linker_hash_style" = "no"; then
6370 hash_styles="$with_linker_hash_style"
6373 for hash_style in $hash_styles; do
6374 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6375 hash_style_ldflags_save=$LDFLAGS
6376 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6378 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6385 HAVE_LD_HASH_STYLE=TRUE
6386 WITH_LINKER_HASH_STYLE=$hash_style
6388 [HAVE_LD_HASH_STYLE=FALSE],
6389 [HAVE_LD_HASH_STYLE=FALSE])
6390 LDFLAGS=$hash_style_ldflags_save
6393 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6394 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6398 LDFLAGS=$hash_style_ldflags_save
6402 AC_SUBST(HAVE_LD_HASH_STYLE)
6403 AC_SUBST(WITH_LINKER_HASH_STYLE)
6405 dnl ===================================================================
6406 dnl Check whether there's a Perl version available.
6407 dnl ===================================================================
6408 if test -z "$with_perl_home"; then
6409 AC_PATH_PROG(PERL, perl)
6411 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6412 _perl_path="$with_perl_home/bin/perl"
6413 if test -x "$_perl_path"; then
6416 AC_MSG_ERROR([$_perl_path not found])
6420 dnl ===================================================================
6421 dnl Testing for Perl version 5 or greater.
6422 dnl $] is the Perl version variable, it is returned as an integer
6423 dnl ===================================================================
6424 if test "$PERL"; then
6425 AC_MSG_CHECKING([the Perl version])
6426 ${PERL} -e "exit($]);"
6428 if test "$_perl_version" -lt 5; then
6429 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6431 AC_MSG_RESULT([Perl $_perl_version])
6433 AC_MSG_ERROR([Perl not found, install Perl 5])
6436 dnl ===================================================================
6437 dnl Testing for required Perl modules
6438 dnl ===================================================================
6440 AC_MSG_CHECKING([for required Perl modules])
6441 perl_use_string="use Cwd ; use Digest::MD5"
6442 if test "$_os" = "WINNT"; then
6443 if test -n "$PKGFORMAT"; then
6444 for i in $PKGFORMAT; do
6447 # for getting fonts versions to use in MSI
6448 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6454 if test "$with_system_hsqldb" = "yes"; then
6455 perl_use_string="$perl_use_string ; use Archive::Zip"
6457 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6458 # OpenSSL needs that to build
6459 perl_use_string="$perl_use_string ; use FindBin"
6461 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6462 AC_MSG_RESULT([all modules found])
6464 AC_MSG_RESULT([failed to find some modules])
6465 # Find out which modules are missing.
6466 for i in $perl_use_string; do
6467 if test "$i" != "use" -a "$i" != ";"; then
6468 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6469 missing_perl_modules="$missing_perl_modules $i"
6474 The missing Perl modules are: $missing_perl_modules
6475 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6478 dnl ===================================================================
6479 dnl Check for pkg-config
6480 dnl ===================================================================
6481 if test "$_os" != "WINNT"; then
6484 AC_SUBST(PKG_CONFIG)
6485 AC_SUBST(PKG_CONFIG_PATH)
6486 AC_SUBST(PKG_CONFIG_LIBDIR)
6488 if test "$_os" != "WINNT"; then
6490 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6491 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6492 # explicitly. Or put /path/to/compiler in PATH yourself.
6495 if test "$COM_IS_CLANG" = "TRUE"; then
6498 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6499 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6500 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6501 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6502 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6503 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6512 dnl ===================================================================
6513 dnl pkg-config checks on macOS
6514 dnl ===================================================================
6516 if test $_os = Darwin; then
6517 AC_MSG_CHECKING([for bogus pkg-config])
6518 if test -n "$PKG_CONFIG"; then
6519 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6520 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6522 if test "$enable_bogus_pkg_config" = "yes"; then
6523 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6525 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.])
6529 AC_MSG_RESULT([no, good])
6535 # Return value: $csctest
6539 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6540 if test -n "$regvalue"; then
6548 # Return value: $altest
6552 # We need this check to detect 4.6.1 or above.
6553 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6554 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6555 PathFormat "$regvalue"
6556 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6562 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6563 for x in $reglist; do
6564 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6565 PathFormat "$regvalue"
6566 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6577 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
6578 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6579 if test -n "$regvalue"; then
6584 AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6587 find_winsdk_version()
6589 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6590 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6592 unset winsdktest winsdkbinsubdir winsdklibsubdir
6596 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6597 if test -n "$regvalue"; then
6598 winsdktest=$regvalue
6599 winsdklibsubdir=win8
6604 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6605 if test -n "$regvalue"; then
6606 winsdktest=$regvalue
6607 winsdklibsubdir=winv6.3
6612 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6613 if test -n "$regvalue"; then
6614 winsdktest=$regvalue
6615 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6616 if test -n "$regvalue"; then
6617 winsdkbinsubdir="$regvalue".0
6618 winsdklibsubdir=$winsdkbinsubdir
6619 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6620 local tmppath_unix=$(cygpath -u "$tmppath")
6621 # test exist the SDK path
6622 if test -d "$tmppath_unix"; then
6623 # when path is convertible to a short path then path is okay
6624 cygpath -d "$tmppath" >/dev/null 2>&1
6625 if test $? -ne 0; then
6626 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6629 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6640 # Return value: From find_winsdk_version
6644 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6645 find_winsdk_version $ver
6646 if test -n "$winsdktest"; then
6654 # Return value: $msmdir
6657 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6658 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6661 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6666 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6667 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6668 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6669 if test -e "$my_msm_dir${my_msm_file}"; then
6676 if test -n "$msmdir"; then
6677 msmdir=`cygpath -m "$msmdir"`
6678 AC_MSG_RESULT([$msmdir])
6680 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6681 AC_MSG_FAILURE([not found])
6683 AC_MSG_WARN([not found (check config.log)])
6684 add_warning "MSM ${my_msm_file} not found"
6689 find_msvc_x64_dlls()
6691 # Return value: $msvcdllpath, $msvcdlls
6693 AC_MSG_CHECKING([for MSVC x64 DLL path])
6695 dnl Order crtver in increasing order. Then check the directories returned by
6696 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6697 dnl the result will be the highest CRT version found in the highest directory.
6699 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6702 for crtver in 141 142 143; do
6703 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6704 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6705 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6706 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6712 AC_MSG_RESULT([$msvcdllpath])
6713 AC_MSG_CHECKING([for MSVC x64 DLLs])
6714 msvcdlls="msvcp140.dll vcruntime140.dll"
6715 for dll in $msvcdlls; do
6716 if ! test -f "$msvcdllpath/$dll"; then
6717 AC_MSG_FAILURE([missing $dll])
6720 AC_MSG_RESULT([found all ($msvcdlls)])
6723 dnl =========================================
6724 dnl Check for the Windows SDK.
6725 dnl =========================================
6726 if test "$_os" = "WINNT"; then
6727 AC_MSG_CHECKING([for Windows SDK])
6728 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6730 WINDOWS_SDK_HOME=$winsdktest
6732 # normalize if found
6733 if test -n "$WINDOWS_SDK_HOME"; then
6734 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6735 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6738 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6741 if test -n "$WINDOWS_SDK_HOME"; then
6742 # Remove a possible trailing backslash
6743 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6745 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6746 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6747 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6748 have_windows_sdk_headers=yes
6749 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6750 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6751 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6752 have_windows_sdk_headers=yes
6753 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6754 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6755 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6756 have_windows_sdk_headers=yes
6758 have_windows_sdk_headers=no
6761 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6762 have_windows_sdk_libs=yes
6763 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6764 have_windows_sdk_libs=yes
6766 have_windows_sdk_libs=no
6769 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6770 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6771 the Windows SDK are installed.])
6775 if test -z "$WINDOWS_SDK_HOME"; then
6776 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6777 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6778 WINDOWS_SDK_VERSION=80
6779 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6780 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6781 WINDOWS_SDK_VERSION=81
6782 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6783 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6784 WINDOWS_SDK_VERSION=10
6785 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6787 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6789 PathFormat "$WINDOWS_SDK_HOME"
6790 WINDOWS_SDK_HOME="$formatted_path"
6791 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6792 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6793 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6794 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6795 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6796 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6797 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6801 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6802 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6803 dnl but not in v8.0), so allow this to be overridden with a
6804 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6805 dnl and configuration error if no WiLangId.vbs is found would arguably be
6806 dnl better, but I do not know under which conditions exactly it is needed by
6808 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6809 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6810 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6811 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6812 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6813 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6815 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6816 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6817 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6819 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6820 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6821 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6824 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6825 if test -n "$with_package_format" -a "$with_package_format" != no; then
6826 for i in "$with_package_format"; do
6827 if test "$i" = "msi"; then
6828 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6829 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6836 AC_SUBST(WINDOWS_SDK_HOME)
6837 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6838 AC_SUBST(WINDOWS_SDK_VERSION)
6839 AC_SUBST(WINDOWS_SDK_WILANGID)
6841 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6842 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6843 dnl dir, it also determines that dir's path w/o an arch segment if any,
6844 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6845 AC_MSG_CHECKING([for midl.exe])
6848 PathFormat "$winsdktest"
6849 winsdktest_unix="$formatted_path_unix"
6851 if test -n "$winsdkbinsubdir" \
6852 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6854 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6855 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6856 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6857 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6858 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6859 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6860 MIDL_PATH=$winsdktest/Bin
6861 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6863 PathFormat "$MIDL_PATH"
6864 if test ! -f "$formatted_path_unix/midl.exe"; then
6865 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6867 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6870 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6871 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6873 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6874 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6875 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6876 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6877 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6878 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6879 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6880 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6881 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6882 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6883 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6884 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6886 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6890 AC_MSG_CHECKING([for csc.exe])
6892 PathFormat "$csctest"
6893 csctest_unix="$formatted_path_unix"
6894 if test -f "$csctest_unix/csc.exe"; then
6897 if test ! -f "$csctest_unix/csc.exe"; then
6898 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6900 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6903 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6906 AC_MSG_CHECKING([for al.exe])
6907 if test -n "$winsdkbinsubdir" \
6908 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6910 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6911 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6912 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6913 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6914 AL_PATH="$winsdktest/Bin"
6917 if test -z "$AL_PATH"; then
6919 PathFormat "$altest"
6920 altest_unix="$formatted_path_unix"
6921 if test -f "$altest_unix/bin/al.exe"; then
6922 AL_PATH="$altest/bin"
6923 elif test -f "$altest_unix/al.exe"; then
6927 PathFormat "$AL_PATH"
6928 if test ! -f "$formatted_path_unix/al.exe"; then
6929 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6931 AC_MSG_RESULT([$AL_PATH/al.exe])
6934 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6936 dnl Check mscoree.lib / .NET Framework dir
6937 AC_MSG_CHECKING(.NET Framework)
6939 PathFormat "$frametest"
6940 frametest="$formatted_path_unix"
6941 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6942 DOTNET_FRAMEWORK_HOME="$frametest"
6944 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6945 DOTNET_FRAMEWORK_HOME="$winsdktest"
6948 PathFormat "$DOTNET_FRAMEWORK_HOME"
6949 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
6950 AC_MSG_ERROR([mscoree.lib not found])
6952 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6954 PathFormat "$MIDL_PATH"
6955 MIDL_PATH="$formatted_path"
6957 PathFormat "$AL_PATH"
6958 AL_PATH="$formatted_path"
6960 PathFormat "$DOTNET_FRAMEWORK_HOME"
6961 DOTNET_FRAMEWORK_HOME="$formatted_path"
6963 PathFormat "$CSC_PATH"
6964 CSC_PATH="$formatted_path"
6967 dnl ===================================================================
6968 dnl Testing for C++ compiler and version...
6969 dnl ===================================================================
6971 if test "$_os" != "WINNT"; then
6972 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6973 save_CXXFLAGS=$CXXFLAGS
6975 CXXFLAGS=$save_CXXFLAGS
6976 if test -z "$CXX_BASE"; then
6977 CXX_BASE=`first_arg_basename "$CXX"`
6981 dnl check for GNU C++ compiler version
6982 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6983 AC_MSG_CHECKING([the GNU C++ compiler version])
6985 _gpp_version=`$CXX -dumpversion`
6986 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6988 if test "$_gpp_majmin" -lt "700"; then
6989 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6991 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6994 dnl see https://issuetracker.google.com/issues/36962819
6998 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6999 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7000 #include <bits/c++config.h>]],[[
7001 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7002 && !defined(_GLIBCXX__PTHREADS) \
7003 && !defined(_GLIBCXX_HAS_GTHREADS)
7006 ]])],[AC_MSG_RESULT([yes])
7007 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7009 if test $glibcxx_threads = yes; then
7010 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7013 AC_SUBST(BOOST_CXXFLAGS)
7016 # prefx CXX with ccache if needed
7018 if test "$CCACHE" != ""; then
7019 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7021 save_CXXFLAGS=$CXXFLAGS
7022 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7023 # msvc does not fail on unknown options, check stdout
7024 if test "$COM" = MSC; then
7025 CXXFLAGS="$CXXFLAGS -nologo"
7027 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7028 ac_cxx_werror_flag=yes
7029 dnl an empty program will do, we're checking the compiler flags
7030 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7031 [use_ccache=yes], [use_ccache=no])
7032 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7033 AC_MSG_RESULT([yes])
7036 CXX_BASE="ccache $CXX_BASE"
7039 CXXFLAGS=$save_CXXFLAGS
7040 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7044 dnl ===================================================================
7045 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7046 dnl ===================================================================
7048 if test "$_os" != "WINNT"; then
7051 dnl Check whether there's a C pre-processor.
7056 dnl ===================================================================
7057 dnl Find integral type sizes and alignments
7058 dnl ===================================================================
7060 if test "$_os" != "WINNT"; then
7062 AC_CHECK_SIZEOF(long)
7063 AC_CHECK_SIZEOF(short)
7064 AC_CHECK_SIZEOF(int)
7065 AC_CHECK_SIZEOF(long long)
7066 AC_CHECK_SIZEOF(double)
7067 AC_CHECK_SIZEOF(void*)
7068 AC_CHECK_SIZEOF(size_t)
7070 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7071 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7072 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7073 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7074 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7075 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7077 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7078 m4_pattern_allow([AC_CHECK_ALIGNOF])
7079 m4_ifdef([AC_CHECK_ALIGNOF],
7081 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7082 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7083 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7084 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7087 case "$_os-$host_cpu" in
7089 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7090 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7091 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7092 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7095 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7096 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7097 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7098 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7101 if test -z "$ac_cv_alignof_short" -o \
7102 -z "$ac_cv_alignof_int" -o \
7103 -z "$ac_cv_alignof_long" -o \
7104 -z "$ac_cv_alignof_double"; then
7105 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.])
7111 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7112 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7113 if test $ac_cv_sizeof_long -eq 8; then
7114 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7115 elif test $ac_cv_sizeof_double -eq 8; then
7116 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7118 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7121 dnl Check for large file support
7123 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7124 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7126 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7127 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7131 SAL_TYPES_SIZEOFSHORT=2
7132 SAL_TYPES_SIZEOFINT=4
7133 SAL_TYPES_SIZEOFLONG=4
7134 SAL_TYPES_SIZEOFLONGLONG=8
7135 if test $WIN_HOST_BITS -eq 32; then
7136 SAL_TYPES_SIZEOFPOINTER=4
7139 SAL_TYPES_SIZEOFPOINTER=8
7142 SAL_TYPES_ALIGNMENT2=2
7143 SAL_TYPES_ALIGNMENT4=4
7144 SAL_TYPES_ALIGNMENT8=8
7147 AC_SUBST(LFS_CFLAGS)
7148 AC_SUBST(SIZEOF_SIZE_T)
7150 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7151 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7152 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7153 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7154 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7155 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7156 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7157 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7159 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7160 AC_MSG_CHECKING([whether jumbo sheets are supported])
7161 if test "$_os" != "WINNT"; then
7162 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7163 AC_MSG_RESULT([yes])
7164 ENABLE_JUMBO_SHEETS=TRUE
7165 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7170 if test $WIN_HOST_BITS -gt 32; then
7171 # 64bit windows is special-cased for tools::Long because long is 32bit
7172 AC_MSG_RESULT([yes])
7173 ENABLE_JUMBO_SHEETS=TRUE
7174 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7179 AC_SUBST(ENABLE_JUMBO_SHEETS)
7181 dnl ===================================================================
7182 dnl Check whether to enable runtime optimizations
7183 dnl ===================================================================
7184 ENABLE_RUNTIME_OPTIMIZATIONS=
7185 AC_MSG_CHECKING([whether to enable runtime optimizations])
7186 if test -z "$enable_runtime_optimizations"; then
7190 enable_runtime_optimizations=no
7196 if test "$enable_runtime_optimizations" != no; then
7197 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7198 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7199 AC_MSG_RESULT([yes])
7203 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7205 dnl ===================================================================
7206 dnl Check if valgrind headers are available
7207 dnl ===================================================================
7209 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7210 prev_cppflags=$CPPFLAGS
7211 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7212 # or where does it come from?
7213 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7214 AC_CHECK_HEADER([valgrind/valgrind.h],
7215 [ENABLE_VALGRIND=TRUE])
7216 CPPFLAGS=$prev_cppflags
7218 AC_SUBST([ENABLE_VALGRIND])
7219 if test -z "$ENABLE_VALGRIND"; then
7220 if test "$with_valgrind" = yes; then
7221 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7225 AC_SUBST([VALGRIND_CFLAGS])
7228 dnl ===================================================================
7229 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7230 dnl ===================================================================
7232 # We need at least the sys/sdt.h include header.
7233 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7234 if test "$SDT_H_FOUND" = "TRUE"; then
7235 # Found sys/sdt.h header, now make sure the c++ compiler works.
7236 # Old g++ versions had problems with probes in constructors/destructors.
7237 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7239 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7240 #include <sys/sdt.h>
7248 ProbeClass(int& v, const char *n) : ref(v), name(n)
7250 DTRACE_PROBE2(_test_, cons, name, ref);
7253 void method(int min)
7255 DTRACE_PROBE3(_test_, meth, name, ref, min);
7261 DTRACE_PROBE2(_test_, dest, name, ref);
7266 DTRACE_PROBE1(_test_, call, i);
7267 ProbeClass inst = ProbeClass(i, "call");
7269 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7270 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7273 AC_CONFIG_HEADERS([config_host/config_probes.h])
7275 dnl ===================================================================
7277 dnl ===================================================================
7278 HAVE_GCC_STACK_CLASH_PROTECTION=
7279 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7280 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7282 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7284 [AC_LANG_PROGRAM(, [[return 0;]])],
7285 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7286 [AC_MSG_RESULT([no])])
7289 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7291 CFLAGS="$CFLAGS -Werror -mno-avx"
7292 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7294 if test "$HAVE_GCC_AVX" = "TRUE"; then
7295 AC_MSG_RESULT([yes])
7300 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7301 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7303 if (__sync_add_and_fetch(&v, 1) != 1 ||
7304 __sync_sub_and_fetch(&v, 1) != 0)
7306 __sync_synchronize();
7307 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7311 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7312 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7313 AC_MSG_RESULT([yes])
7314 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7319 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7321 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7324 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7326 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7327 AC_MSG_RESULT([yes])
7328 ], [AC_MSG_RESULT([no])])
7331 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7333 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7336 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7338 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7339 AC_MSG_RESULT([yes])
7340 ], [AC_MSG_RESULT([no])])
7343 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7345 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7347 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7349 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7350 AC_MSG_RESULT([yes])
7351 ], [AC_MSG_RESULT([no])])
7354 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7356 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7359 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7361 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7362 AC_MSG_RESULT([yes])
7363 ], [AC_MSG_RESULT([no])])
7366 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7368 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7371 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7373 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7374 AC_MSG_RESULT([yes])
7375 ], [AC_MSG_RESULT([no])])
7378 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7380 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7382 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7384 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7385 AC_MSG_RESULT([yes])
7386 ], [AC_MSG_RESULT([no])])
7389 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7391 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7395 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7396 AC_MSG_RESULT([yes])
7397 ], [AC_MSG_RESULT([no])])
7400 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7402 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7404 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7406 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7407 AC_MSG_RESULT([yes])
7408 ], [AC_MSG_RESULT([no])])
7411 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7416 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7418 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7419 AC_MSG_RESULT([yes])
7420 ], [AC_MSG_RESULT([no])])
7423 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7425 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7428 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7430 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7431 AC_MSG_RESULT([yes])
7432 ], [AC_MSG_RESULT([no])])
7436 AC_SUBST(HAVE_GCC_AVX)
7437 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7438 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7440 dnl ===================================================================
7441 dnl Identify the C++ library
7442 dnl ===================================================================
7444 AC_MSG_CHECKING([what the C++ library is])
7448 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7454 [CPP_LIBRARY=GLIBCXX
7455 cpp_library_name="GNU libstdc++"
7458 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7460 #ifndef _LIBCPP_VERSION
7465 cpp_library_name="LLVM libc++"
7466 AC_DEFINE([HAVE_LIBCPP])
7469 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7476 cpp_library_name="Microsoft"
7478 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7479 AC_MSG_RESULT([$cpp_library_name])
7481 AC_SUBST([HAVE_LIBSTDCPP])
7482 AC_SUBST([HAVE_LIBCPP])
7484 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7486 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7487 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7488 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7489 # although there will be backwards compatibility).
7490 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7491 # and there would be undefined references to debug functions.
7492 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7493 # So check if debug mode can be used and disable or downgrade it to assertions
7495 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7498 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7499 #define _LIBCPP_DEBUG 0 // only assertions
7507 ]])], [libcpp_debug_links=1])
7508 if test -n "$libcpp_debug_links"; then
7509 # we can use at least assertions, check if debug mode works
7510 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7511 #define _LIBCPP_DEBUG 1 // debug mode
7514 int foo(const std::vector<int>& v) { return *v.begin(); }
7519 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7520 return (foo(v) + s.size()) != 0 ? 0 : 1;
7524 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7526 [AC_MSG_RESULT(no, using only assertions)
7527 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7535 AC_SUBST([LIBCPP_DEBUG])
7537 dnl ===================================================================
7539 dnl ===================================================================
7540 AC_PATH_PROG(GPERF, gperf)
7541 if test -z "$GPERF"; then
7542 AC_MSG_ERROR([gperf not found but needed. Install it.])
7544 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7545 GPERF=`cygpath -m $GPERF`
7547 AC_MSG_CHECKING([whether gperf is new enough])
7548 my_gperf_ver1=$($GPERF --version | head -n 1)
7549 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7550 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7551 if test "$my_gperf_ver3" -ge 301; then
7552 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7554 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7558 dnl ===================================================================
7559 dnl Check for system libcmis
7560 dnl ===================================================================
7561 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7563 dnl ===================================================================
7565 dnl ===================================================================
7567 if test -z "${CXXFLAGS_CXX11+x}"; then
7568 AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7569 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7570 if test "$with_latest_c__" = yes; then
7571 CXXFLAGS_CXX11=-std:c++latest
7573 CXXFLAGS_CXX11=-std:c++20
7575 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7576 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7577 my_flags='-std=c++20 -std=c++2a'
7578 if test "$with_latest_c__" = yes; then
7579 my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7581 for flag in $my_flags; do
7582 if test "$COM" = MSC; then
7583 flag="-Xclang $flag"
7585 save_CXXFLAGS=$CXXFLAGS
7586 CXXFLAGS="$CXXFLAGS $flag -Werror"
7587 if test "$SYSTEM_LIBCMIS" = TRUE; then
7588 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7592 #include <algorithm>
7593 #include <functional>
7596 #if defined SYSTEM_LIBCMIS
7597 // See ucb/source/ucp/cmis/auth_provider.hxx:
7598 #if !defined __clang__
7599 #pragma GCC diagnostic push
7600 #pragma GCC diagnostic ignored "-Wdeprecated"
7601 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7603 #include <libcmis/libcmis.hxx>
7604 #if !defined __clang__
7605 #pragma GCC diagnostic pop
7609 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7610 std::sort(v.begin(), v.end(), fn);
7612 ]])],[CXXFLAGS_CXX11=$flag])
7614 CXXFLAGS=$save_CXXFLAGS
7615 if test -n "$CXXFLAGS_CXX11"; then
7620 if test -n "$CXXFLAGS_CXX11"; then
7621 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7626 AC_SUBST(CXXFLAGS_CXX11)
7628 if test "$GCC" = "yes"; then
7629 save_CXXFLAGS=$CXXFLAGS
7630 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7632 CXXFLAGS=$save_CXXFLAGS
7633 AC_SUBST(ATOMIC_LIB)
7636 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7637 save_CXXFLAGS=$CXXFLAGS
7638 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7641 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7644 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7660 a thinga[]={{0,0}, {1,1}};
7661 b thingb[]={{0,0}, {1,1}};
7662 size_t i = sizeof(sal_n_array_size(thinga));
7663 size_t j = sizeof(sal_n_array_size(thingb));
7664 return !(i != 0 && j != 0);
7666 ], [ AC_MSG_RESULT(yes) ],
7667 [ AC_MSG_ERROR(no)])
7669 CXXFLAGS=$save_CXXFLAGS
7671 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7672 if test "$GCC" = yes; then
7673 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7675 save_CXXFLAGS=$CXXFLAGS
7676 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7677 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7678 CXXFLAGS=$save_CXXFLAGS
7680 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7681 AC_MSG_RESULT([yes])
7686 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7688 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7690 save_CXXFLAGS=$CXXFLAGS
7691 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7692 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7693 #include <algorithm>
7694 #include <initializer_list>
7696 template<typename T> class S {
7700 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7702 constinit S<int> s{3, 2, 1};
7704 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7705 AC_MSG_RESULT([yes])
7706 ], [AC_MSG_RESULT([no])])
7707 CXXFLAGS=$save_CXXFLAGS
7710 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7712 save_CXXFLAGS=$CXXFLAGS
7713 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7714 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7716 #include <type_traits>
7717 // Don't check size_type directly, as it was called index_type before P1872R0:
7718 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7720 AC_DEFINE([HAVE_CPP_SPAN],[1])
7721 AC_MSG_RESULT([yes])
7722 ], [AC_MSG_RESULT([no])])
7723 CXXFLAGS=$save_CXXFLAGS
7726 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7728 save_CXXFLAGS=$CXXFLAGS
7729 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7730 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7731 struct S1 { S1(S1 &&); };
7733 S1 f(S2 s) { return s; }
7735 AC_DEFINE([HAVE_P1155R3],[1])
7736 AC_MSG_RESULT([yes])
7737 ], [AC_MSG_RESULT([no])])
7738 CXXFLAGS=$save_CXXFLAGS
7741 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7742 HAVE_CXX20_ATOMIC_REF=
7744 save_CXXFLAGS=$CXXFLAGS
7745 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7746 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7749 std::atomic_ref<int> y(x);
7751 HAVE_CXX20_ATOMIC_REF=TRUE
7752 AC_MSG_RESULT([yes])
7753 ], [AC_MSG_RESULT([no])])
7754 CXXFLAGS=$save_CXXFLAGS
7756 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7758 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7759 dnl which is included in -Wextra anyway):
7760 HAVE_WDEPRECATED_COPY_DTOR=
7761 if test "$GCC" = yes; then
7762 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7764 save_CXXFLAGS=$CXXFLAGS
7765 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7766 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7767 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7768 AC_MSG_RESULT([yes])
7769 ], [AC_MSG_RESULT([no])])
7770 CXXFLAGS=$save_CXXFLAGS
7773 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7775 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7776 dnl uninitialized warning for code like
7779 dnl boost::optional<OString> * g(bool b) {
7780 dnl boost::optional<OString> o;
7782 dnl return new boost::optional<OString>(o);
7785 dnl (as is e.g. present, in a slightly more elaborate form, in
7786 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7787 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7788 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7789 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7790 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7792 save_CXXFLAGS=$CXXFLAGS
7793 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7794 if test "$ENABLE_OPTIMIZED" = TRUE; then
7795 CXXFLAGS="$CXXFLAGS -O2"
7797 CXXFLAGS="$CXXFLAGS -O0"
7799 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7808 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7809 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7815 char stg[sizeof (S1)];
7823 ]])], [AC_MSG_RESULT([no])], [
7824 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7825 AC_MSG_RESULT([yes])
7827 CXXFLAGS=$save_CXXFLAGS
7830 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7832 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7833 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7834 dnl hits us e.g. with GCC 10 and --enable-optimized at
7836 dnl In file included from include/rtl/string.hxx:49,
7837 dnl from include/rtl/ustring.hxx:43,
7838 dnl from include/osl/file.hxx:35,
7839 dnl from include/codemaker/global.hxx:28,
7840 dnl from include/codemaker/options.hxx:23,
7841 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7842 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7843 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,
7844 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,
7845 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,
7846 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7847 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7848 dnl 78 | memcpy( buffer, data, length );
7849 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7850 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7851 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7852 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7854 save_CXXFLAGS=$CXXFLAGS
7855 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7856 if test "$ENABLE_OPTIMIZED" = TRUE; then
7857 CXXFLAGS="$CXXFLAGS -O2"
7859 CXXFLAGS="$CXXFLAGS -O0"
7861 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7862 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7863 void fill(char const * begin, char const * end, char c);
7869 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7870 __builtin_strncpy(c.username, "root", sizeof(c.username));
7872 ]])], [AC_MSG_RESULT([no])], [
7873 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7874 AC_MSG_RESULT([yes])
7876 CXXFLAGS=$save_CXXFLAGS
7879 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7881 HAVE_DLLEXPORTINLINES=
7882 if test "$_os" = "WINNT"; then
7883 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7885 save_CXXFLAGS=$CXXFLAGS
7886 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7887 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7888 HAVE_DLLEXPORTINLINES=TRUE
7889 AC_MSG_RESULT([yes])
7890 ], [AC_MSG_RESULT([no])])
7891 CXXFLAGS=$save_CXXFLAGS
7894 AC_SUBST([HAVE_DLLEXPORTINLINES])
7896 dnl ===================================================================
7897 dnl CPU Intrinsics support - SSE, AVX
7898 dnl ===================================================================
7900 CXXFLAGS_INTRINSICS_SSE2=
7901 CXXFLAGS_INTRINSICS_SSSE3=
7902 CXXFLAGS_INTRINSICS_SSE41=
7903 CXXFLAGS_INTRINSICS_SSE42=
7904 CXXFLAGS_INTRINSICS_AVX=
7905 CXXFLAGS_INTRINSICS_AVX2=
7906 CXXFLAGS_INTRINSICS_AVX512=
7907 CXXFLAGS_INTRINSICS_AVX512F=
7908 CXXFLAGS_INTRINSICS_F16C=
7909 CXXFLAGS_INTRINSICS_FMA=
7911 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7912 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7919 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7920 flag_avx512f=-mavx512f
7924 # With MSVC using -arch is in fact not necessary for being able
7925 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7926 # even if compiled with -arch:AVX, the -arch option really only affects
7927 # instructions generated for C/C++ code.
7928 # So use the matching same (or lower) -arch options, but only in order
7929 # to generate the best matching instructions for the C++ code surrounding
7931 # SSE2 is the default for x86/x64, so no need to specify the option.
7933 # No specific options for these, use the next lower.
7934 flag_ssse3="$flag_sse2"
7935 flag_sse41="$flag_sse2"
7936 flag_sse42="$flag_sse2"
7938 flag_avx2=-arch:AVX2
7939 flag_avx512=-arch:AVX512
7940 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7941 flag_avx512f=-arch:AVX2
7942 # No MSVC options for these.
7943 flag_f16c="$flag_sse2"
7944 flag_fma="$flag_sse2"
7947 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7949 save_CXXFLAGS=$CXXFLAGS
7950 CXXFLAGS="$CXXFLAGS $flag_sse2"
7951 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7952 #include <emmintrin.h>
7954 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7955 c = _mm_xor_si128 (a, b);
7959 [can_compile_sse2=yes],
7960 [can_compile_sse2=no])
7962 CXXFLAGS=$save_CXXFLAGS
7963 AC_MSG_RESULT([${can_compile_sse2}])
7964 if test "${can_compile_sse2}" = "yes" ; then
7965 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7968 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7970 save_CXXFLAGS=$CXXFLAGS
7971 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7972 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7973 #include <tmmintrin.h>
7975 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7976 c = _mm_maddubs_epi16 (a, b);
7980 [can_compile_ssse3=yes],
7981 [can_compile_ssse3=no])
7983 CXXFLAGS=$save_CXXFLAGS
7984 AC_MSG_RESULT([${can_compile_ssse3}])
7985 if test "${can_compile_ssse3}" = "yes" ; then
7986 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7989 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7991 save_CXXFLAGS=$CXXFLAGS
7992 CXXFLAGS="$CXXFLAGS $flag_sse41"
7993 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7994 #include <smmintrin.h>
7996 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7997 c = _mm_cmpeq_epi64 (a, b);
8001 [can_compile_sse41=yes],
8002 [can_compile_sse41=no])
8004 CXXFLAGS=$save_CXXFLAGS
8005 AC_MSG_RESULT([${can_compile_sse41}])
8006 if test "${can_compile_sse41}" = "yes" ; then
8007 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8010 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8012 save_CXXFLAGS=$CXXFLAGS
8013 CXXFLAGS="$CXXFLAGS $flag_sse42"
8014 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8015 #include <nmmintrin.h>
8017 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8018 c = _mm_cmpgt_epi64 (a, b);
8022 [can_compile_sse42=yes],
8023 [can_compile_sse42=no])
8025 CXXFLAGS=$save_CXXFLAGS
8026 AC_MSG_RESULT([${can_compile_sse42}])
8027 if test "${can_compile_sse42}" = "yes" ; then
8028 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8031 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8033 save_CXXFLAGS=$CXXFLAGS
8034 CXXFLAGS="$CXXFLAGS $flag_avx"
8035 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8036 #include <immintrin.h>
8038 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8039 c = _mm256_xor_ps(a, b);
8043 [can_compile_avx=yes],
8044 [can_compile_avx=no])
8046 CXXFLAGS=$save_CXXFLAGS
8047 AC_MSG_RESULT([${can_compile_avx}])
8048 if test "${can_compile_avx}" = "yes" ; then
8049 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8052 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8054 save_CXXFLAGS=$CXXFLAGS
8055 CXXFLAGS="$CXXFLAGS $flag_avx2"
8056 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8057 #include <immintrin.h>
8059 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8060 c = _mm256_maddubs_epi16(a, b);
8064 [can_compile_avx2=yes],
8065 [can_compile_avx2=no])
8067 CXXFLAGS=$save_CXXFLAGS
8068 AC_MSG_RESULT([${can_compile_avx2}])
8069 if test "${can_compile_avx2}" = "yes" ; then
8070 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8073 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8075 save_CXXFLAGS=$CXXFLAGS
8076 CXXFLAGS="$CXXFLAGS $flag_avx512"
8077 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8078 #include <immintrin.h>
8080 __m512i a = _mm512_loadu_si512(0);
8081 __m512d v1 = _mm512_load_pd(0);
8082 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8083 __m512d v2 = _mm512_abs_pd(v1);
8087 [can_compile_avx512=yes],
8088 [can_compile_avx512=no])
8090 CXXFLAGS=$save_CXXFLAGS
8091 AC_MSG_RESULT([${can_compile_avx512}])
8092 if test "${can_compile_avx512}" = "yes" ; then
8093 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8094 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8097 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8099 save_CXXFLAGS=$CXXFLAGS
8100 CXXFLAGS="$CXXFLAGS $flag_f16c"
8101 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8102 #include <immintrin.h>
8104 __m128i a = _mm_set1_epi32 (0);
8106 c = _mm_cvtph_ps(a);
8110 [can_compile_f16c=yes],
8111 [can_compile_f16c=no])
8113 CXXFLAGS=$save_CXXFLAGS
8114 AC_MSG_RESULT([${can_compile_f16c}])
8115 if test "${can_compile_f16c}" = "yes" ; then
8116 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8119 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8121 save_CXXFLAGS=$CXXFLAGS
8122 CXXFLAGS="$CXXFLAGS $flag_fma"
8123 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8124 #include <immintrin.h>
8126 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8127 d = _mm256_fmadd_ps(a, b, c);
8131 [can_compile_fma=yes],
8132 [can_compile_fma=no])
8134 CXXFLAGS=$save_CXXFLAGS
8135 AC_MSG_RESULT([${can_compile_fma}])
8136 if test "${can_compile_fma}" = "yes" ; then
8137 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8140 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8141 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8142 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8143 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8144 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8145 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8146 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8147 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8148 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8149 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8151 dnl ===================================================================
8152 dnl system stl sanity tests
8153 dnl ===================================================================
8154 if test "$_os" != "WINNT"; then
8158 save_CPPFLAGS="$CPPFLAGS"
8159 if test -n "$MACOSX_SDK_PATH"; then
8160 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8163 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8165 if test "$CPP_LIBRARY" = GLIBCXX; then
8166 dnl gcc#19664, gcc#22482, rhbz#162935
8167 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8168 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8169 AC_MSG_RESULT([$stlvisok])
8170 if test "$stlvisok" = "no"; then
8171 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8175 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8176 # when we don't make any dynamic libraries?
8177 if test "$DISABLE_DYNLOADING" = ""; then
8178 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8179 cat > conftestlib1.cc <<_ACEOF
8180 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8181 struct S2: S1<int> { virtual ~S2(); };
8184 cat > conftestlib2.cc <<_ACEOF
8185 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8186 struct S2: S1<int> { virtual ~S2(); };
8187 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8189 gccvisinlineshiddenok=yes
8190 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8191 gccvisinlineshiddenok=no
8193 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8194 dnl known to not work with -z defs (unsetting which makes the test
8196 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8197 if test "$COM_IS_CLANG" = TRUE; then
8198 for i in $CXX $CXXFLAGS; do
8201 my_linkflagsnoundefs=
8207 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8208 gccvisinlineshiddenok=no
8213 AC_MSG_RESULT([$gccvisinlineshiddenok])
8214 if test "$gccvisinlineshiddenok" = "no"; then
8215 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8219 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8220 cat >visibility.cxx <<_ACEOF
8221 #pragma GCC visibility push(hidden)
8222 struct __attribute__ ((visibility ("default"))) TestStruct {
8225 __attribute__ ((visibility ("default"))) void TestFunc() {
8229 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8234 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8237 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8249 rm -f visibility.s visibility.cxx
8251 AC_MSG_RESULT([$gccvisbroken])
8252 if test "$gccvisbroken" = "yes"; then
8253 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8256 CPPFLAGS="$save_CPPFLAGS"
8258 AC_MSG_CHECKING([if CET endbranch is recognized])
8259 cat > endbr.s <<_ACEOF
8262 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8263 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8264 AC_MSG_RESULT([yes])
8265 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8269 rm -f endbr.s endbr.o
8270 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8275 dnl ===================================================================
8277 dnl ===================================================================
8279 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8280 if test "$GCC" = "yes"; then
8281 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8283 save_CXXFLAGS=$CXXFLAGS
8284 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8285 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8286 CXXFLAGS=$save_CXXFLAGS
8288 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8289 AC_MSG_RESULT([yes])
8294 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8296 dnl ===================================================================
8297 dnl Compiler plugins
8298 dnl ===================================================================
8301 # currently only Clang
8303 if test "$COM_IS_CLANG" != "TRUE"; then
8304 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8305 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8306 enable_compiler_plugins=no
8310 COMPILER_PLUGINS_COM_IS_CLANG=
8311 if test "$COM_IS_CLANG" = "TRUE"; then
8312 if test -n "$enable_compiler_plugins"; then
8313 compiler_plugins="$enable_compiler_plugins"
8314 elif test -n "$ENABLE_DBGUTIL"; then
8315 compiler_plugins=test
8319 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8320 if test "$CLANGVER" -lt 120001; then
8321 if test "$compiler_plugins" = yes; then
8323 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8329 if test "$compiler_plugins" != "no"; then
8330 dnl The prefix where Clang resides, override to where Clang resides if
8331 dnl using a source build:
8332 if test -z "$CLANGDIR"; then
8333 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8335 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8336 if test -z "$COMPILER_PLUGINS_CXX"; then
8337 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8339 clangbindir=$CLANGDIR/bin
8340 if test "$build_os" = "cygwin"; then
8341 clangbindir=$(cygpath -u "$clangbindir")
8343 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8344 if test -n "$LLVM_CONFIG"; then
8345 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8346 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8347 if test -z "$CLANGLIBDIR"; then
8348 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8350 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8351 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8352 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8353 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8354 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8355 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8358 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8359 clangobjdir=$($LLVM_CONFIG --obj-root)
8360 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8361 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8364 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8368 save_CPPFLAGS=$CPPFLAGS
8369 save_CXXFLAGS=$CXXFLAGS
8370 save_LDFLAGS=$LDFLAGS
8372 CXX=$COMPILER_PLUGINS_CXX
8373 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8374 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8375 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8376 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8377 [COMPILER_PLUGINS=TRUE],
8379 if test "$compiler_plugins" = "yes"; then
8380 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8382 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8383 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8386 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8387 dnl comment in compilerplugins/Makefile-clang.mk:
8388 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8390 AC_MSG_CHECKING([for clang libraries to use])
8391 if test -z "$CLANGTOOLLIBS"; then
8392 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8394 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8395 [[ clang::FullSourceLoc().dump(); ]])
8396 ],[CLANGTOOLLIBS="$LIBS"],[])
8398 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8399 dnl list of individual -lclang* (but note that that list can become outdated over time,
8400 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8401 dnl needs to include -lclangSupport now"):
8402 if test -z "$CLANGTOOLLIBS"; then
8403 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8404 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8406 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8407 [[ clang::FullSourceLoc().dump(); ]])
8408 ],[CLANGTOOLLIBS="$LIBS"],[])
8410 AC_MSG_RESULT([$CLANGTOOLLIBS])
8411 if test -z "$CLANGTOOLLIBS"; then
8412 if test "$compiler_plugins" = "yes"; then
8413 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8415 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8416 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8420 if test -n "$COMPILER_PLUGINS"; then
8421 if test -z "$CLANGSYSINCLUDE"; then
8422 if test -n "$LLVM_CONFIG"; then
8423 # Path to the clang system headers (no idea if there's a better way to get it).
8424 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8431 CPPFLAGS=$save_CPPFLAGS
8432 CXXFLAGS=$save_CXXFLAGS
8433 LDFLAGS=$save_LDFLAGS
8437 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8444 [AC_MSG_RESULT([yes])
8445 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8446 [AC_MSG_RESULT([no])])
8447 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8450 if test "$enable_compiler_plugins" = "yes"; then
8451 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8454 COMPILER_PLUGINS_ANALYZER_PCH=
8455 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8456 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8458 AC_SUBST(COMPILER_PLUGINS)
8459 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8460 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8461 AC_SUBST(COMPILER_PLUGINS_CXX)
8462 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8463 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8464 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8465 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8467 AC_SUBST(CLANGLIBDIR)
8468 AC_SUBST(CLANGTOOLLIBS)
8469 AC_SUBST(CLANGSYSINCLUDE)
8471 # Plugin to help linker.
8472 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8473 # This makes --enable-lto build with clang work.
8476 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8477 AC_SUBST(HAVE_POSIX_FALLOCATE)
8479 JITC_PROCESSOR_TYPE=""
8480 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8481 # IBMs JDK needs this...
8482 JITC_PROCESSOR_TYPE=6
8483 export JITC_PROCESSOR_TYPE
8485 AC_SUBST([JITC_PROCESSOR_TYPE])
8487 # Misc Windows Stuff
8488 AC_ARG_WITH(ucrt-dir,
8489 AS_HELP_STRING([--with-ucrt-dir],
8490 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8491 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8492 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8493 Windows6.1-KB2999226-x64.msu
8494 Windows6.1-KB2999226-x86.msu
8495 Windows8.1-KB2999226-x64.msu
8496 Windows8.1-KB2999226-x86.msu
8497 Windows8-RT-KB2999226-x64.msu
8498 Windows8-RT-KB2999226-x86.msu
8499 A zip archive including those files is available from Microsoft site:
8500 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8503 UCRT_REDISTDIR="$with_ucrt_dir"
8504 if test $_os = "WINNT"; then
8506 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8507 MSVC_DLLS="$msvcdlls"
8508 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8510 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8512 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8515 for i in $PKGFORMAT; do
8516 if test "$i" = msi; then
8517 find_msms "$with_redist"
8518 if test -n "$msmdir"; then
8519 MSM_PATH=`win_short_path_for_make "$msmdir"`
8520 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8526 if test "$UCRT_REDISTDIR" = "no"; then
8527 dnl explicitly disabled
8530 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8531 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8532 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8533 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8534 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8535 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8537 if test -n "$PKGFORMAT"; then
8538 for i in $PKGFORMAT; do
8541 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8542 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8551 AC_SUBST(UCRT_REDISTDIR)
8552 AC_SUBST(MSVC_DLL_PATH)
8557 dnl ===================================================================
8559 dnl ===================================================================
8560 if test "$ENABLE_JAVA" != ""; then
8562 # Windows-specific tests
8563 if test "$build_os" = "cygwin"; then
8564 if test -z "$with_jdk_home"; then
8565 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8566 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8567 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8568 if test -n "$regvalue"; then
8570 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8571 with_jdk_home=$regvalue
8573 howfound="found automatically"
8575 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8576 howfound="you passed"
8579 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8580 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8584 # 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.
8585 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8586 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8587 with_jdk_home=`/usr/libexec/java_home`
8590 JAVA_HOME=; export JAVA_HOME
8591 if test -z "$with_jdk_home"; then
8592 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8594 _java_path="$with_jdk_home/bin/$with_java"
8595 dnl Check if there is a Java interpreter at all.
8596 if test -x "$_java_path"; then
8597 JAVAINTERPRETER=$_java_path
8599 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8603 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8604 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8605 dnl loaded by java to run JunitTests:
8606 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8607 shortjdkhome=`cygpath -d "$with_jdk_home"`
8608 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
8609 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8610 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8611 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
8612 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8613 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8616 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8617 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8619 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8620 elif test "$cross_compiling" != "yes"; then
8622 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8623 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8624 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8625 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8628 *) # assumption: everything else 32-bit
8629 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8630 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8631 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8638 dnl ===================================================================
8640 dnl ===================================================================
8642 # Whether all the complexity here actually is needed any more or not, no idea.
8644 JDK_SECURITYMANAGER_DISALLOWED=
8645 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8647 AC_MSG_CHECKING([the installed JDK])
8648 if test -n "$JAVAINTERPRETER"; then
8649 dnl java -version sends output to stderr!
8650 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8651 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8652 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8653 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8654 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8655 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8656 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8657 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8661 dnl Sun JDK specific tests
8662 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8663 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8665 if test "$_jdk_ver" -lt 90000; then
8666 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 90000)])
8668 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8669 dnl completely removed in some Java version > 18 (see
8670 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8671 if test "$_jdk_ver" -ge 180000; then
8672 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8675 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8676 if test "$_os" = "WINNT"; then
8677 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8679 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8681 # set to limit VM usage for JunitTests
8683 # set to limit VM usage for javac
8684 JAVACFLAGS=-J-Xmx128M
8687 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8690 if test -z "$ENABLE_JAVA"; then
8694 elif test "$cross_compiling" = "yes"; then
8695 # Just assume compatibility of build and host JDK
8697 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8701 dnl ===================================================================
8702 dnl Checks for javac
8703 dnl ===================================================================
8704 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8705 javacompiler="javac"
8706 : ${JAVA_SOURCE_VER=8}
8707 : ${JAVA_TARGET_VER=8}
8708 if test -z "$with_jdk_home"; then
8709 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8711 _javac_path="$with_jdk_home/bin/$javacompiler"
8712 dnl Check if there is a Java compiler at all.
8713 if test -x "$_javac_path"; then
8714 JAVACOMPILER=$_javac_path
8717 if test -z "$JAVACOMPILER"; then
8718 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8720 if test "$build_os" = "cygwin"; then
8721 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8722 JAVACOMPILER="${JAVACOMPILER}.exe"
8724 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8728 dnl ===================================================================
8729 dnl Checks for javadoc
8730 dnl ===================================================================
8731 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8732 if test -z "$with_jdk_home"; then
8733 AC_PATH_PROG(JAVADOC, javadoc)
8735 _javadoc_path="$with_jdk_home/bin/javadoc"
8736 dnl Check if there is a javadoc at all.
8737 if test -x "$_javadoc_path"; then
8738 JAVADOC=$_javadoc_path
8740 AC_PATH_PROG(JAVADOC, javadoc)
8743 if test -z "$JAVADOC"; then
8744 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8746 if test "$build_os" = "cygwin"; then
8747 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8748 JAVADOC="${JAVADOC}.exe"
8750 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8753 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8754 JAVADOCISGJDOC="yes"
8758 AC_SUBST(JAVADOCISGJDOC)
8760 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8761 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8762 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8763 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8764 # try to recover first by looking whether we have an alternative
8765 # system as in Debian or newer SuSEs where following /usr/bin/javac
8766 # over /etc/alternatives/javac leads to the right bindir where we
8767 # just need to strip a bit away to get a valid JAVA_HOME
8768 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8769 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8770 # maybe only one level of symlink (e.g. on Mac)
8771 JAVA_HOME=$(readlink $JAVACOMPILER)
8772 if test "$(dirname $JAVA_HOME)" = "."; then
8773 # we've got no path to trim back
8778 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8779 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8780 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8781 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8783 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8784 if test "$JAVA_HOME" != "/usr"; then
8785 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8786 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8787 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8788 dnl Tiger already returns a JDK path...
8789 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8791 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8792 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8793 dnl that checks which version to run
8794 if test -f "$JAVA_HOME"; then
8795 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8800 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8802 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8803 if test -z "$JAVA_HOME"; then
8804 if test "x$with_jdk_home" = "x"; then
8805 cat > findhome.java <<_ACEOF
8806 [import java.io.File;
8810 public static void main(String args[])
8812 String jrelocation = System.getProperty("java.home");
8813 File jre = new File(jrelocation);
8814 System.out.println(jre.getParent());
8818 AC_MSG_CHECKING([if javac works])
8819 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8820 AC_TRY_EVAL(javac_cmd)
8821 if test $? = 0 -a -f ./findhome.class; then
8822 AC_MSG_RESULT([javac works])
8824 echo "configure: javac test failed" >&5
8825 cat findhome.java >&5
8826 AC_MSG_ERROR([javac does not work - java projects will not build!])
8828 AC_MSG_CHECKING([if gij knows its java.home])
8829 JAVA_HOME=`$JAVAINTERPRETER findhome`
8830 if test $? = 0 -a "$JAVA_HOME" != ""; then
8831 AC_MSG_RESULT([$JAVA_HOME])
8833 echo "configure: java test failed" >&5
8834 cat findhome.java >&5
8835 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8837 # clean-up after ourselves
8838 rm -f ./findhome.java ./findhome.class
8840 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8844 # now check if $JAVA_HOME is really valid
8845 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8846 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8847 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8848 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8849 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8850 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8851 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8852 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8855 PathFormat "$JAVA_HOME"
8856 JAVA_HOME="$formatted_path"
8859 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8862 AC_MSG_CHECKING([for JAWT lib])
8863 if test "$_os" = WINNT; then
8864 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8869 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8870 JAVA_ARCH=$my_java_arch
8885 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8886 JAVA_ARCH=$my_java_arch
8889 my_java_arch=sparcv9
8895 my_java_arch=$host_cpu
8898 # This is where JDK9 puts the library
8899 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8900 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8902 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8904 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8906 AC_MSG_RESULT([$JAWTLIB])
8910 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8914 JAVAINC="-I$JAVA_HOME/include/win32"
8915 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8919 if test -d "$JAVA_HOME/include/darwin"; then
8920 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8922 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8927 JAVAINC="-I$JAVA_HOME/include"
8928 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8932 JAVAINC="-I$JAVA_HOME/include"
8933 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8934 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8935 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8936 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8940 JAVAINC="-I$JAVA_HOME/include"
8941 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8942 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8946 JAVAINC="-I$JAVA_HOME/include"
8947 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8948 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8952 JAVAINC="-I$JAVA_HOME/include"
8953 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8954 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8958 JAVAINC="-I$JAVA_HOME/include"
8959 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8960 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8964 JAVAINC="-I$JAVA_HOME/include"
8965 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8966 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8970 SOLARINC="$SOLARINC $JAVAINC"
8972 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8973 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8974 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8976 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8979 AC_SUBST(JAVACFLAGS)
8980 AC_SUBST(JAVACOMPILER)
8981 AC_SUBST(JAVAINTERPRETER)
8982 AC_SUBST(JAVAIFLAGS)
8983 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8985 AC_SUBST(JAVA_HOME_FOR_BUILD)
8987 AC_SUBST(JDK_FOR_BUILD)
8988 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8989 AC_SUBST(JAVA_SOURCE_VER)
8990 AC_SUBST(JAVA_TARGET_VER)
8993 dnl ===================================================================
8994 dnl Export file validation
8995 dnl ===================================================================
8996 AC_MSG_CHECKING([whether to enable export file validation])
8997 if test "$with_export_validation" != "no"; then
8998 if test -z "$ENABLE_JAVA"; then
8999 if test "$with_export_validation" = "yes"; then
9000 AC_MSG_ERROR([requested, but Java is disabled])
9002 AC_MSG_RESULT([no, as Java is disabled])
9004 elif ! test -d "${SRC_ROOT}/schema"; then
9005 if test "$with_export_validation" = "yes"; then
9006 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9008 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9011 AC_MSG_RESULT([yes])
9012 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9014 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9015 if test -z "$ODFVALIDATOR"; then
9016 # remember to download the ODF toolkit with validator later
9017 AC_MSG_NOTICE([no odfvalidator found, will download it])
9018 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9019 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9021 # and fetch name of odfvalidator jar name from download.lst
9022 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9023 AC_SUBST(ODFVALIDATOR_JAR)
9025 if test -z "$ODFVALIDATOR_JAR"; then
9026 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9029 if test "$build_os" = "cygwin"; then
9030 # In case of Cygwin it will be executed from Windows,
9031 # so we need to run bash and absolute path to validator
9032 # so instead of "odfvalidator" it will be
9033 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9034 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9036 ODFVALIDATOR="sh $ODFVALIDATOR"
9038 AC_SUBST(ODFVALIDATOR)
9041 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9042 if test -z "$OFFICEOTRON"; then
9043 # remember to download the officeotron with validator later
9044 AC_MSG_NOTICE([no officeotron found, will download it])
9045 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9046 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9048 # and fetch name of officeotron jar name from download.lst
9049 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9050 AC_SUBST(OFFICEOTRON_JAR)
9052 if test -z "$OFFICEOTRON_JAR"; then
9053 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9056 # check version of existing officeotron
9057 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9058 if test 0"$OFFICEOTRON_VER" -lt 704; then
9059 AC_MSG_ERROR([officeotron too old])
9062 if test "$build_os" = "cygwin"; then
9063 # In case of Cygwin it will be executed from Windows,
9064 # so we need to run bash and absolute path to validator
9065 # so instead of "odfvalidator" it will be
9066 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9067 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9069 OFFICEOTRON="sh $OFFICEOTRON"
9072 AC_SUBST(OFFICEOTRON)
9077 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9078 if test "$with_bffvalidator" != "no"; then
9079 AC_DEFINE(HAVE_BFFVALIDATOR)
9081 if test "$with_export_validation" = "no"; then
9082 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9085 if test "$with_bffvalidator" = "yes"; then
9086 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9088 BFFVALIDATOR="$with_bffvalidator"
9091 if test "$build_os" = "cygwin"; then
9092 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9093 AC_MSG_RESULT($BFFVALIDATOR)
9095 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9097 elif test -n "$BFFVALIDATOR"; then
9098 # We are not in Cygwin but need to run Windows binary with wine
9099 AC_PATH_PROGS(WINE, wine)
9101 # so swap in a shell wrapper that converts paths transparently
9102 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9103 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9104 AC_SUBST(BFFVALIDATOR_EXE)
9105 AC_MSG_RESULT($BFFVALIDATOR)
9107 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9109 AC_SUBST(BFFVALIDATOR)
9114 dnl ===================================================================
9115 dnl Check for epm (not needed for Windows)
9116 dnl ===================================================================
9117 AC_MSG_CHECKING([whether to enable EPM for packing])
9118 if test "$enable_epm" = "yes"; then
9119 AC_MSG_RESULT([yes])
9120 if test "$_os" != "WINNT"; then
9121 if test $_os = Darwin; then
9123 elif test -n "$with_epm"; then
9126 AC_PATH_PROG(EPM, epm, no)
9128 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9129 AC_MSG_NOTICE([EPM will be built.])
9130 BUILD_TYPE="$BUILD_TYPE EPM"
9131 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9133 # Gentoo has some epm which is something different...
9134 AC_MSG_CHECKING([whether the found epm is the right epm])
9135 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9136 AC_MSG_RESULT([yes])
9138 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9140 AC_MSG_CHECKING([epm version])
9141 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9142 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9143 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9144 AC_MSG_RESULT([OK, >= 3.7])
9146 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9147 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9152 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9153 AC_MSG_CHECKING([for rpm])
9154 for a in "$RPM" rpmbuild rpm; do
9155 $a --usage >/dev/null 2> /dev/null
9156 if test $? -eq 0; then
9160 $a --version >/dev/null 2> /dev/null
9161 if test $? -eq 0; then
9167 if test -z "$RPM"; then
9168 AC_MSG_ERROR([not found])
9169 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9170 RPM_PATH=`which $RPM`
9171 AC_MSG_RESULT([$RPM_PATH])
9172 SCPDEFS="$SCPDEFS -DWITH_RPM"
9174 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9177 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9178 AC_PATH_PROG(DPKG, dpkg, no)
9179 if test "$DPKG" = "no"; then
9180 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9183 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9184 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9185 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9186 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9187 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9188 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9189 AC_MSG_RESULT([yes])
9192 if echo "$PKGFORMAT" | $GREP -q rpm; then
9194 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9195 add_warning "the rpms will need to be installed with --nodeps"
9199 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9200 add_warning "the ${_pt}s will not be relocatable"
9201 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9202 relocation will work, you need to patch your epm with the
9203 patch in epm/epm-3.7.patch or build with
9204 --with-epm=internal which will build a suitable epm])
9209 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9210 AC_PATH_PROG(PKGMK, pkgmk, no)
9211 if test "$PKGMK" = "no"; then
9212 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9219 for i in $PKGFORMAT; do
9221 bsd | deb | pkg | rpm | native | portable)
9223 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9233 if test "$enable_lotuswordpro" = "yes"; then
9236 AC_SUBST(ENABLE_LWP)
9238 dnl ===================================================================
9239 dnl Check for building ODK
9240 dnl ===================================================================
9241 AC_MSG_CHECKING([whether to build the ODK])
9242 if test "$enable_odk" = yes; then
9243 if test "$DISABLE_DYNLOADING" = TRUE; then
9244 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9246 AC_MSG_RESULT([yes])
9247 BUILD_TYPE="$BUILD_TYPE ODK"
9252 if test "$enable_odk" != yes; then
9255 if test "$with_doxygen" = no; then
9256 AC_MSG_CHECKING([for doxygen])
9260 if test "$with_doxygen" = yes; then
9261 AC_PATH_PROG([DOXYGEN], [doxygen])
9262 if test -z "$DOXYGEN"; then
9263 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9265 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9266 if ! dot -V 2>/dev/null; then
9267 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9271 AC_MSG_CHECKING([for doxygen])
9272 DOXYGEN=$with_doxygen
9273 AC_MSG_RESULT([$DOXYGEN])
9275 if test -n "$DOXYGEN"; then
9276 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9277 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9278 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9279 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9286 dnl ==================================================================
9288 dnl ==================================================================
9289 AC_MSG_CHECKING([whether to enable fuzzers])
9290 if test "$enable_fuzzers" != yes; then
9293 if test -z $LIB_FUZZING_ENGINE; then
9294 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9296 AC_MSG_RESULT([yes])
9297 ENABLE_FUZZERS="TRUE"
9298 AC_DEFINE([ENABLE_FUZZERS],1)
9299 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9301 AC_SUBST(LIB_FUZZING_ENGINE)
9303 dnl ===================================================================
9304 dnl Check for system zlib
9305 dnl ===================================================================
9306 if test "$with_system_zlib" = "auto"; then
9309 with_system_zlib="$with_system_libs"
9312 if test "$enable_fuzzers" != "yes"; then
9313 with_system_zlib=yes
9321 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9322 dnl and has no pkg-config for it at least on some tinderboxes,
9323 dnl so leaving that out for now
9324 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9325 AC_MSG_CHECKING([which zlib to use])
9326 if test "$with_system_zlib" = "yes"; then
9327 AC_MSG_RESULT([external])
9329 AC_CHECK_HEADER(zlib.h, [],
9330 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9331 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9332 [AC_MSG_ERROR(zlib not found or functional)], [])
9334 AC_MSG_RESULT([internal])
9336 BUILD_TYPE="$BUILD_TYPE ZLIB"
9337 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9338 if test "$COM" = "MSC"; then
9339 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9341 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9344 AC_SUBST(ZLIB_CFLAGS)
9346 AC_SUBST(SYSTEM_ZLIB)
9348 dnl ===================================================================
9349 dnl Check for system jpeg
9350 dnl ===================================================================
9351 AC_MSG_CHECKING([which libjpeg to use])
9352 if test "$with_system_jpeg" = "yes"; then
9353 AC_MSG_RESULT([external])
9355 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9356 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9357 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9358 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9361 AC_MSG_RESULT([internal, libjpeg-turbo])
9362 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9365 x86_64 | amd64 | i*86 | x86 | ia32)
9366 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9367 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9368 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9369 NASM="$LODE_HOME/opt/bin/nasm"
9370 elif test -x "/opt/lo/bin/nasm"; then
9371 NASM="/opt/lo/bin/nasm"
9375 if test -n "$NASM"; then
9376 AC_MSG_CHECKING([for object file format of host system])
9378 cygwin* | mingw* | pw32* | wsl*)
9388 msdosdjgpp* | go32*)
9391 os2-emx*) # not tested
9392 objfmt='MSOMF' # obj
9394 linux*coff* | linux*oldld*)
9410 kfreebsd* | freebsd* | netbsd* | openbsd*)
9411 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9424 solaris* | sunos* | sysv* | sco*)
9434 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9449 AC_MSG_RESULT([$objfmt])
9450 if test "$objfmt" = 'ELF ?'; then
9452 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9455 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9457 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9458 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9459 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9460 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9461 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9462 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9463 ELF) NAFLAGS='-felf -DELF -DPIC';;
9464 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9465 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9466 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9467 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9469 AC_MSG_RESULT([$NAFLAGS])
9471 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9472 cat > conftest.asm << EOF
9473 [%line __oline__ "configure"
9481 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9482 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9485 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9486 cat conftest.asm >&AS_MESSAGE_LOG_FD
9489 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9495 if test -z "$NASM"; then
9497 ****************************************************************************
9498 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9502 if test "$build_os" = "cygwin"; then
9504 install a pre-compiled binary for Win32
9506 mkdir -p /opt/lo/bin
9508 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9511 or get and install one from https://www.nasm.us/
9513 Then re-run autogen.sh
9515 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9516 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9521 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9525 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9526 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9534 AC_SUBST(LIBJPEG_CFLAGS)
9535 AC_SUBST(LIBJPEG_LIBS)
9536 AC_SUBST(SYSTEM_LIBJPEG)
9538 dnl ===================================================================
9539 dnl Check for system clucene
9540 dnl ===================================================================
9541 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9542 if test "$SYSTEM_CLUCENE" = TRUE; then
9544 save_CXXFLAGS=$CXXFLAGS
9545 save_CPPFLAGS=$CPPFLAGS
9546 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9547 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9548 dnl https://sourceforge.net/p/clucene/bugs/200/
9549 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9550 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9551 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9552 CXXFLAGS=$save_CXXFLAGS
9553 CPPFLAGS=$save_CPPFLAGS
9555 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9558 dnl ===================================================================
9559 dnl Check for system expat
9560 dnl ===================================================================
9561 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9563 dnl ===================================================================
9564 dnl Check for system xmlsec
9565 dnl ===================================================================
9566 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9568 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9569 if test "$enable_eot" = "yes"; then
9571 AC_DEFINE([ENABLE_EOT])
9572 AC_MSG_RESULT([yes])
9574 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9579 AC_SUBST([ENABLE_EOT])
9581 dnl ===================================================================
9582 dnl Check for DLP libs
9583 dnl ===================================================================
9584 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9585 AS_IF([test "$COM" = "MSC"],
9586 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9587 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9589 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9590 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9592 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9594 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9596 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9597 AS_IF([test "$COM" = "MSC"],
9598 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9599 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9601 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9602 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9604 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9606 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9607 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9609 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9611 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9613 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9615 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9616 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9618 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9619 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9621 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9623 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9624 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9626 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9628 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9630 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9632 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9634 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9635 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9637 dnl ===================================================================
9638 dnl Check for system lcms2
9639 dnl ===================================================================
9640 if test "$with_system_lcms2" != "yes"; then
9643 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9644 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9645 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9646 if test "$GCC" = "yes"; then
9647 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9649 if test "$COM" = "MSC"; then # override the above
9650 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9653 dnl ===================================================================
9654 dnl Check for system cppunit
9655 dnl ===================================================================
9656 if test "$_os" != "Android" ; then
9657 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9660 dnl ===================================================================
9661 dnl Check whether freetype is available
9663 dnl FreeType has 3 different kinds of versions
9664 dnl * release, like 2.4.10
9665 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9667 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9670 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9671 dnl ===================================================================
9672 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9673 if test "x$ac_config_site_64bit_host" = xYES; then
9674 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9676 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9678 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9680 # ===================================================================
9681 # Check for system libxslt
9682 # to prevent incompatibilities between internal libxml2 and external libxslt,
9683 # or vice versa, use with_system_libxml here
9684 # ===================================================================
9685 if test "$with_system_libxml" = "auto"; then
9688 with_system_libxml="$with_system_libs"
9691 with_system_libxml=no
9694 if test "$enable_fuzzers" != "yes"; then
9695 with_system_libxml=yes
9697 with_system_libxml=no
9703 AC_MSG_CHECKING([which libxslt to use])
9704 if test "$with_system_libxml" = "yes"; then
9705 AC_MSG_RESULT([external])
9707 if test "$_os" = "Darwin"; then
9708 dnl make sure to use SDK path
9709 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9710 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9712 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9713 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9715 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9716 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9717 FilterLibs "${LIBXSLT_LIBS}"
9718 LIBXSLT_LIBS="${filteredlibs}"
9719 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9720 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9721 FilterLibs "${LIBEXSLT_LIBS}"
9722 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9725 dnl Check for xsltproc
9726 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9727 if test "$XSLTPROC" = "no"; then
9728 AC_MSG_ERROR([xsltproc is required])
9731 AC_MSG_RESULT([internal])
9733 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9735 AC_SUBST(SYSTEM_LIBXSLT)
9736 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9737 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9739 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9741 AC_SUBST(LIBEXSLT_CFLAGS)
9742 AC_SUBST(LIBEXSLT_LIBS)
9743 AC_SUBST(LIBXSLT_CFLAGS)
9744 AC_SUBST(LIBXSLT_LIBS)
9747 # ===================================================================
9748 # Check for system libxml
9749 # ===================================================================
9750 AC_MSG_CHECKING([which libxml to use])
9751 if test "$with_system_libxml" = "yes"; then
9752 AC_MSG_RESULT([external])
9754 if test "$_os" = "Darwin"; then
9755 dnl make sure to use SDK path
9756 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9758 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9759 elif test $_os = iOS; then
9760 dnl make sure to use SDK path
9761 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9762 LIBXML_CFLAGS="-I$usr/include/libxml2"
9763 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9765 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9766 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9767 FilterLibs "${LIBXML_LIBS}"
9768 LIBXML_LIBS="${filteredlibs}"
9771 dnl Check for xmllint
9772 AC_PATH_PROG(XMLLINT, xmllint, no)
9773 if test "$XMLLINT" = "no"; then
9774 AC_MSG_ERROR([xmllint is required])
9777 AC_MSG_RESULT([internal])
9779 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9780 if test "$COM" = "MSC"; then
9781 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9783 if test "$COM" = "MSC"; then
9784 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9786 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9787 if test "$DISABLE_DYNLOADING" = TRUE; then
9788 LIBXML_LIBS="$LIBXML_LIBS -lm"
9791 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9793 AC_SUBST(SYSTEM_LIBXML)
9794 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9795 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9797 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9798 AC_SUBST(LIBXML_CFLAGS)
9799 AC_SUBST(LIBXML_LIBS)
9802 # =====================================================================
9803 # Checking for a Python interpreter with version >= 3.3.
9804 # Optionally user can pass an option to configure, i. e.
9805 # ./configure PYTHON=/usr/bin/python
9806 # =====================================================================
9807 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9808 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9809 # unless PYTHON is defined as above which allows 'system'
9810 enable_python=internal
9812 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9813 if test -n "$PYTHON"; then
9814 PYTHON_FOR_BUILD=$PYTHON
9816 # This allows a lack of system python with no error, we use internal one in that case.
9817 AM_PATH_PYTHON([3.3],, [:])
9818 # Clean PYTHON_VERSION checked below if cross-compiling
9820 if test "$PYTHON" != ":"; then
9821 PYTHON_FOR_BUILD=$PYTHON
9826 # Checks for Python to use for Pyuno
9827 AC_MSG_CHECKING([which Python to use for Pyuno])
9828 case "$enable_python" in
9830 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9831 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9832 # requirement from the choice whether to include Python stuff in the installer, but why
9834 AC_MSG_ERROR([Python is required at build time.])
9837 AC_MSG_RESULT([none])
9840 if test "$DISABLE_SCRIPTING" = TRUE; then
9841 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9842 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9844 AC_MSG_RESULT([none, overridden by --disable-scripting])
9846 elif test $build_os = cygwin -o $build_os = wsl; then
9847 dnl When building on Windows we don't attempt to use any installed
9848 dnl "system" Python.
9849 AC_MSG_RESULT([fully internal])
9850 enable_python=internal
9851 elif test "$cross_compiling" = yes; then
9852 AC_MSG_RESULT([system])
9853 enable_python=system
9855 # Unset variables set by the above AM_PATH_PYTHON so that
9856 # we actually do check anew.
9858 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
9859 AM_PATH_PYTHON([3.3],, [:])
9860 AC_MSG_CHECKING([which Python to use for Pyuno])
9861 if test "$PYTHON" = ":"; then
9862 if test -z "$PYTHON_FOR_BUILD"; then
9863 AC_MSG_RESULT([fully internal])
9865 AC_MSG_RESULT([internal])
9867 enable_python=internal
9869 AC_MSG_RESULT([system])
9870 enable_python=system
9875 AC_MSG_RESULT([internal])
9878 AC_MSG_RESULT([fully internal])
9879 enable_python=internal
9882 AC_MSG_RESULT([system])
9883 if test "$_os" = Darwin -a -z "$PYTHON"; then
9884 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9888 AC_MSG_ERROR([Incorrect --enable-python option])
9892 if test $enable_python != no; then
9893 BUILD_TYPE="$BUILD_TYPE PYUNO"
9896 if test $enable_python = system; then
9897 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9898 # Fallback: Accept these in the environment, or as set above
9901 elif test "$cross_compiling" != yes; then
9902 # Unset variables set by the above AM_PATH_PYTHON so that
9903 # we actually do check anew.
9904 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
9905 # This causes an error if no python command is found
9906 AM_PATH_PYTHON([3.3])
9907 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9908 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9909 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9910 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9911 if test -z "$PKG_CONFIG"; then
9912 PYTHON_CFLAGS="-I$python_include"
9913 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9914 elif $PKG_CONFIG --exists python-$python_version-embed; then
9915 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9916 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9917 elif $PKG_CONFIG --exists python-$python_version; then
9918 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9919 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9921 PYTHON_CFLAGS="-I$python_include"
9922 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9924 FilterLibs "${PYTHON_LIBS}"
9925 PYTHON_LIBS="${filteredlibs}"
9927 dnl How to find out the cross-compilation Python installation path?
9928 AC_MSG_CHECKING([for python version])
9929 AS_IF([test -n "$PYTHON_VERSION"],
9930 [AC_MSG_RESULT([$PYTHON_VERSION])],
9931 [AC_MSG_RESULT([not found])
9932 AC_MSG_ERROR([no usable python found])])
9933 test -n "$PYTHON_CFLAGS" && break
9936 dnl Check if the headers really work
9937 save_CPPFLAGS="$CPPFLAGS"
9938 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9939 AC_CHECK_HEADER(Python.h)
9940 CPPFLAGS="$save_CPPFLAGS"
9942 # let the PYTHON_FOR_BUILD match the same python installation that
9943 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9944 # better for PythonTests.
9945 PYTHON_FOR_BUILD=$PYTHON
9948 if test "$with_lxml" != no; then
9949 if test -z "$PYTHON_FOR_BUILD"; then
9952 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9955 if test "$cross_compiling" != yes ; then
9956 BUILD_TYPE="$BUILD_TYPE LXML"
9961 AC_MSG_CHECKING([for python lxml])
9962 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9963 AC_MSG_RESULT([yes])
9967 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9970 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9971 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9972 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9974 BUILD_TYPE="$BUILD_TYPE LXML"
9975 AC_MSG_RESULT([no, using internal lxml])
9978 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9986 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9988 PYTHON_VERSION_MAJOR=3
9989 PYTHON_VERSION_MINOR=8
9990 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
9991 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9992 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9994 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9996 # Embedded Python dies without Home set
9997 if test "$HOME" = ""; then
10002 dnl By now enable_python should be "system", "internal" or "no"
10003 case $enable_python in
10007 if test "x$ac_cv_header_Python_h" != "xyes"; then
10008 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10012 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10013 AC_MSG_CHECKING([for correct python library version])
10014 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10015 #include <Python.h>
10017 int main(int argc, char **argv) {
10018 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10021 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10024 dnl FIXME Check if the Python library can be linked with, too?
10028 BUILD_TYPE="$BUILD_TYPE PYTHON"
10029 if test "$OS" = LINUX -o "$OS" = WNT ; then
10030 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10034 DISABLE_PYTHON=TRUE
10038 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10042 AC_SUBST(DISABLE_PYTHON)
10043 AC_SUBST(SYSTEM_PYTHON)
10044 AC_SUBST(PYTHON_CFLAGS)
10045 AC_SUBST(PYTHON_FOR_BUILD)
10046 AC_SUBST(PYTHON_LIBS)
10047 AC_SUBST(PYTHON_VERSION)
10048 AC_SUBST(PYTHON_VERSION_MAJOR)
10049 AC_SUBST(PYTHON_VERSION_MINOR)
10051 AC_MSG_CHECKING([whether to build LibreLogo])
10052 case "$enable_python" in
10054 AC_MSG_RESULT([no; Python disabled])
10057 if test "${enable_librelogo}" = "no"; then
10058 AC_MSG_RESULT([no])
10060 AC_MSG_RESULT([yes])
10061 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10062 AC_DEFINE([ENABLE_LIBRELOGO],1)
10066 AC_SUBST(ENABLE_LIBRELOGO)
10072 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10073 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10074 ENABLE_MARIADBC=TRUE
10075 AC_MSG_RESULT([yes])
10076 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10078 AC_MSG_RESULT([no])
10080 AC_SUBST(ENABLE_MARIADBC)
10081 AC_SUBST(MARIADBC_MAJOR)
10082 AC_SUBST(MARIADBC_MINOR)
10083 AC_SUBST(MARIADBC_MICRO)
10085 if test "$ENABLE_MARIADBC" = "TRUE"; then
10086 dnl ===================================================================
10087 dnl Check for system MariaDB
10088 dnl ===================================================================
10089 AC_MSG_CHECKING([which MariaDB to use])
10090 if test "$with_system_mariadb" = "yes"; then
10091 AC_MSG_RESULT([external])
10092 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10093 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10094 if test -z "$MARIADBCONFIG"; then
10095 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10096 if test -z "$MARIADBCONFIG"; then
10097 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10098 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10101 AC_MSG_CHECKING([MariaDB version])
10102 MARIADB_VERSION=`$MARIADBCONFIG --version`
10103 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10104 if test "$MARIADB_MAJOR" -ge "5"; then
10105 AC_MSG_RESULT([OK])
10107 AC_MSG_ERROR([too old, use 5.0.x or later])
10109 AC_MSG_CHECKING([for MariaDB Client library])
10110 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10111 if test "$COM_IS_CLANG" = TRUE; then
10112 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10114 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10115 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10116 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10118 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10119 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10120 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10121 | sed -e 's|/lib64/|/lib/|')
10123 FilterLibs "${MARIADB_LIBS}"
10124 MARIADB_LIBS="${filteredlibs}"
10125 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10126 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10127 if test "$enable_bundle_mariadb" = "yes"; then
10128 AC_MSG_RESULT([yes])
10129 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10130 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10132 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10134 /g' | grep -E '(mysqlclient|mariadb)')
10135 if test "$_os" = "Darwin"; then
10136 LIBMARIADB=${LIBMARIADB}.dylib
10137 elif test "$_os" = "WINNT"; then
10138 LIBMARIADB=${LIBMARIADB}.dll
10140 LIBMARIADB=${LIBMARIADB}.so
10142 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10143 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10144 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10145 AC_MSG_RESULT([found.])
10146 PathFormat "$LIBMARIADB_PATH"
10147 LIBMARIADB_PATH="$formatted_path"
10149 AC_MSG_ERROR([not found.])
10152 AC_MSG_RESULT([no])
10153 BUNDLE_MARIADB_CONNECTOR_C=
10156 AC_MSG_RESULT([internal])
10157 SYSTEM_MARIADB_CONNECTOR_C=
10158 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10159 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10160 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10163 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10164 AC_SUBST(MARIADB_CFLAGS)
10165 AC_SUBST(MARIADB_LIBS)
10166 AC_SUBST(LIBMARIADB)
10167 AC_SUBST(LIBMARIADB_PATH)
10168 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10171 dnl ===================================================================
10172 dnl Check for system hsqldb
10173 dnl ===================================================================
10174 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10175 AC_MSG_CHECKING([which hsqldb to use])
10176 if test "$with_system_hsqldb" = "yes"; then
10177 AC_MSG_RESULT([external])
10179 if test -z $HSQLDB_JAR; then
10180 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10182 if ! test -f $HSQLDB_JAR; then
10183 AC_MSG_ERROR(hsqldb.jar not found.)
10185 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10189 my $file = "$ENV{'HSQLDB_JAR'}";
10190 my $zip = Archive::Zip->new( $file );
10191 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10192 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10194 push @l, split(/\n/, $mf);
10195 foreach my $line (@l)
10197 if ($line =~ m/Specification-Version:/)
10199 ($t, $version) = split (/:/,$line);
10200 $version =~ s/^\s//;
10201 ($a, $b, $c, $d) = split (/\./,$version);
10202 if ($c == "0" && $d > "8")
10217 AC_MSG_RESULT([yes])
10219 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10222 AC_MSG_RESULT([internal])
10224 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10228 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10229 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10232 AC_SUBST(SYSTEM_HSQLDB)
10233 AC_SUBST(HSQLDB_JAR)
10235 dnl ===================================================================
10236 dnl Check for PostgreSQL stuff
10237 dnl ===================================================================
10238 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10239 if test "x$enable_postgresql_sdbc" != "xno"; then
10240 AC_MSG_RESULT([yes])
10241 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10243 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10244 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10246 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10247 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10250 postgres_interface=""
10251 if test "$with_system_postgresql" = "yes"; then
10252 postgres_interface="external PostgreSQL"
10253 SYSTEM_POSTGRESQL=TRUE
10254 if test "$_os" = Darwin; then
10256 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10257 pg_supp_path="$P_SEP$d$pg_supp_path"
10260 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10261 if test -n "$PGCONFIG"; then
10262 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10263 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10265 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10266 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10267 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10269 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10272 FilterLibs "${POSTGRESQL_LIB}"
10273 POSTGRESQL_LIB="${filteredlibs}"
10275 # if/when anything else than PostgreSQL uses Kerberos,
10276 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10281 # macOS has system MIT Kerberos 5 since 10.4
10282 if test "$with_krb5" != "no"; then
10285 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10286 # that the libraries where these functions are located on macOS will change, is it?
10287 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10288 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10291 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10292 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10293 KRB5_LIBS="$KRB5_LIBS $LIBS"
10296 if test "$with_gssapi" != "no"; then
10299 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10300 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10306 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10307 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10310 Linux|GNU|*BSD|DragonFly)
10311 if test "$with_krb5" != "no"; then
10314 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10315 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10318 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10319 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10320 KRB5_LIBS="$KRB5_LIBS $LIBS"
10323 if test "$with_gssapi" != "no"; then
10326 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10327 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10333 if test "$with_krb5" = "yes"; then
10336 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10337 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10340 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10341 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10342 KRB5_LIBS="$KRB5_LIBS $LIBS"
10345 if test "$with_gssapi" = "yes"; then
10348 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10349 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10355 if test -n "$with_libpq_path"; then
10356 SYSTEM_POSTGRESQL=TRUE
10357 postgres_interface="external libpq"
10358 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10359 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10362 postgres_interface="internal"
10364 POSTGRESQL_INC="%OVERRIDE_ME%"
10365 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10369 AC_MSG_CHECKING([PostgreSQL C interface])
10370 AC_MSG_RESULT([$postgres_interface])
10372 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10373 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10374 save_CFLAGS=$CFLAGS
10375 save_CPPFLAGS=$CPPFLAGS
10377 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10378 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10379 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10380 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10381 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10382 CFLAGS=$save_CFLAGS
10383 CPPFLAGS=$save_CPPFLAGS
10386 BUILD_POSTGRESQL_SDBC=TRUE
10388 AC_MSG_RESULT([no])
10390 AC_SUBST(WITH_KRB5)
10391 AC_SUBST(WITH_GSSAPI)
10392 AC_SUBST(GSSAPI_LIBS)
10393 AC_SUBST(KRB5_LIBS)
10394 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10395 AC_SUBST(SYSTEM_POSTGRESQL)
10396 AC_SUBST(POSTGRESQL_INC)
10397 AC_SUBST(POSTGRESQL_LIB)
10399 dnl ===================================================================
10400 dnl Check for Firebird stuff
10401 dnl ===================================================================
10402 ENABLE_FIREBIRD_SDBC=
10403 if test "$enable_firebird_sdbc" = "yes" ; then
10404 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10406 dnl ===================================================================
10407 dnl Check for system Firebird
10408 dnl ===================================================================
10409 AC_MSG_CHECKING([which Firebird to use])
10410 if test "$with_system_firebird" = "yes"; then
10411 AC_MSG_RESULT([external])
10412 SYSTEM_FIREBIRD=TRUE
10413 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10414 if test -z "$FIREBIRDCONFIG"; then
10415 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10416 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10417 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10419 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10421 AC_MSG_NOTICE([fb_config found])
10422 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10423 AC_MSG_CHECKING([for Firebird Client library])
10424 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10425 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10426 FilterLibs "${FIREBIRD_LIBS}"
10427 FIREBIRD_LIBS="${filteredlibs}"
10429 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10430 AC_MSG_CHECKING([Firebird version])
10431 if test -n "${FIREBIRD_VERSION}"; then
10432 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10433 if test "$FIREBIRD_MAJOR" -ge "3"; then
10434 AC_MSG_RESULT([OK])
10436 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10439 save_CFLAGS="${CFLAGS}"
10440 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10441 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10442 #if defined(FB_API_VER) && FB_API_VER == 30
10443 int fb_api_is_30(void) { return 0; }
10445 #error "Wrong Firebird API version"
10446 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10447 CFLAGS="$save_CFLAGS"
10449 ENABLE_FIREBIRD_SDBC=TRUE
10450 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10451 elif test "$enable_database_connectivity" = no; then
10452 AC_MSG_RESULT([none])
10453 elif test "$cross_compiling" = "yes"; then
10454 AC_MSG_RESULT([none])
10456 dnl Embedded Firebird has version 3.0
10457 dnl We need libatomic_ops for any non X86/X64 system
10458 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10459 dnl ===================================================================
10460 dnl Check for system libatomic_ops
10461 dnl ===================================================================
10462 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10463 if test "$with_system_libatomic_ops" = "yes"; then
10464 SYSTEM_LIBATOMIC_OPS=TRUE
10465 AC_CHECK_HEADERS(atomic_ops.h, [],
10466 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10468 SYSTEM_LIBATOMIC_OPS=
10469 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10470 LIBATOMIC_OPS_LIBS="-latomic_ops"
10471 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10475 AC_MSG_RESULT([internal])
10477 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10478 FIREBIRD_LIBS="-lfbclient"
10480 if test "$with_system_libtommath" = "yes"; then
10481 SYSTEM_LIBTOMMATH=TRUE
10482 dnl check for tommath presence
10484 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10485 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10489 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10490 LIBTOMMATH_LIBS="-ltommath"
10491 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10494 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10495 ENABLE_FIREBIRD_SDBC=TRUE
10496 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10499 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10500 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10501 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10502 AC_SUBST(LIBATOMIC_OPS_LIBS)
10503 AC_SUBST(SYSTEM_FIREBIRD)
10504 AC_SUBST(FIREBIRD_CFLAGS)
10505 AC_SUBST(FIREBIRD_LIBS)
10506 AC_SUBST(SYSTEM_LIBTOMMATH)
10507 AC_SUBST(LIBTOMMATH_CFLAGS)
10508 AC_SUBST(LIBTOMMATH_LIBS)
10510 dnl ===================================================================
10511 dnl Check for system curl
10512 dnl ===================================================================
10513 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10515 dnl ===================================================================
10516 dnl Check for system boost
10517 dnl ===================================================================
10518 AC_MSG_CHECKING([which boost to use])
10519 if test "$with_system_boost" = "yes"; then
10520 AC_MSG_RESULT([external])
10522 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10524 AX_BOOST_FILESYSTEM
10527 AC_LANG_PUSH([C++])
10528 save_CXXFLAGS=$CXXFLAGS
10529 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10530 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10531 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10532 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10533 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10534 CXXFLAGS=$save_CXXFLAGS
10536 # this is in m4/ax_boost_base.m4
10537 FilterLibs "${BOOST_LDFLAGS}"
10538 BOOST_LDFLAGS="${filteredlibs}"
10540 AC_MSG_RESULT([internal])
10541 BUILD_TYPE="$BUILD_TYPE BOOST"
10543 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10544 # use warning-suppressing wrapper headers
10545 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10547 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10550 AC_SUBST(SYSTEM_BOOST)
10552 dnl ===================================================================
10553 dnl Check for system mdds
10554 dnl ===================================================================
10555 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10556 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10558 dnl ===================================================================
10559 dnl Check for system dragonbox
10560 dnl ===================================================================
10561 AC_MSG_CHECKING([which dragonbox to use])
10562 if test "$with_system_dragonbox" = "yes"; then
10563 AC_MSG_RESULT([external])
10564 SYSTEM_DRAGONBOX=TRUE
10565 AC_LANG_PUSH([C++])
10566 save_CPPFLAGS=$CPPFLAGS
10567 # This is where upstream installs to, unfortunately no .pc or so...
10568 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10569 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10570 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10571 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10573 CPPFLAGS=$save_CPPFLAGS
10575 AC_MSG_RESULT([internal])
10576 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10579 AC_SUBST([SYSTEM_DRAGONBOX])
10580 AC_SUBST([DRAGONBOX_CFLAGS])
10582 dnl ===================================================================
10583 dnl Check for system frozen
10584 dnl ===================================================================
10585 AC_MSG_CHECKING([which frozen to use])
10586 if test "$with_system_frozen" = "yes"; then
10587 AC_MSG_RESULT([external])
10589 AC_LANG_PUSH([C++])
10590 save_CPPFLAGS=$CPPFLAGS
10591 AC_CHECK_HEADER([frozen/unordered_map.h], [],
10592 [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10594 CPPFLAGS=$save_CPPFLAGS
10596 AC_MSG_RESULT([internal])
10597 BUILD_TYPE="$BUILD_TYPE FROZEN"
10600 AC_SUBST([SYSTEM_FROZEN])
10601 AC_SUBST([FROZEN_CFLAGS])
10603 dnl ===================================================================
10604 dnl Check for system libfixmath
10605 dnl ===================================================================
10606 AC_MSG_CHECKING([which libfixmath to use])
10607 if test "$with_system_libfixmath" = "yes"; then
10608 AC_MSG_RESULT([external])
10609 SYSTEM_LIBFIXMATH=TRUE
10610 AC_LANG_PUSH([C++])
10611 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10612 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10613 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10616 AC_MSG_RESULT([internal])
10619 AC_SUBST([SYSTEM_LIBFIXMATH])
10621 dnl ===================================================================
10622 dnl Check for system glm
10623 dnl ===================================================================
10624 AC_MSG_CHECKING([which glm to use])
10625 if test "$with_system_glm" = "yes"; then
10626 AC_MSG_RESULT([external])
10628 AC_LANG_PUSH([C++])
10629 AC_CHECK_HEADER([glm/glm.hpp], [],
10630 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10633 AC_MSG_RESULT([internal])
10634 BUILD_TYPE="$BUILD_TYPE GLM"
10636 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10638 AC_SUBST([GLM_CFLAGS])
10639 AC_SUBST([SYSTEM_GLM])
10641 dnl ===================================================================
10642 dnl Check for system odbc
10643 dnl ===================================================================
10644 AC_MSG_CHECKING([which odbc headers to use])
10645 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
10646 AC_MSG_RESULT([external])
10647 SYSTEM_ODBC_HEADERS=TRUE
10649 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10650 save_CPPFLAGS=$CPPFLAGS
10652 PathFormat "$winsdktest"
10653 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"
10654 AC_CHECK_HEADER(sqlext.h, [],
10655 [AC_MSG_ERROR(odbc not found. install odbc)],
10656 [#include <windows.h>])
10657 CPPFLAGS=$save_CPPFLAGS
10659 AC_CHECK_HEADER(sqlext.h, [],
10660 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10662 elif test "$enable_database_connectivity" = no; then
10663 AC_MSG_RESULT([none])
10665 AC_MSG_RESULT([internal])
10666 SYSTEM_ODBC_HEADERS=
10668 AC_SUBST(SYSTEM_ODBC_HEADERS)
10670 dnl ===================================================================
10671 dnl Check for system NSS
10672 dnl ===================================================================
10673 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10674 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10675 AC_DEFINE(HAVE_FEATURE_NSS)
10677 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10680 AC_SUBST(ENABLE_NSS)
10682 dnl ===================================================================
10683 dnl Enable LDAP support
10684 dnl ===================================================================
10686 if test "$test_openldap" = yes; then
10687 AC_MSG_CHECKING([whether to enable LDAP support])
10688 if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10689 AC_MSG_RESULT([yes])
10692 if test "$enable_ldap" != "yes"; then
10693 AC_MSG_RESULT([no])
10695 AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10699 dnl ===================================================================
10700 dnl Check for system openldap
10701 dnl ===================================================================
10703 if test "$ENABLE_LDAP" = TRUE; then
10704 AC_MSG_CHECKING([which openldap library to use])
10705 if test "$with_system_openldap" = yes; then
10706 AC_MSG_RESULT([external])
10707 SYSTEM_OPENLDAP=TRUE
10708 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10709 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10710 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10712 AC_MSG_RESULT([internal])
10713 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10718 AC_SUBST(ENABLE_LDAP)
10719 AC_SUBST(SYSTEM_OPENLDAP)
10721 dnl ===================================================================
10722 dnl Check for TLS/SSL and cryptographic implementation to use
10723 dnl ===================================================================
10724 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10725 if test -n "$with_tls"; then
10728 AC_DEFINE(USE_TLS_OPENSSL)
10730 AC_MSG_RESULT([$TLS])
10732 if test "$enable_openssl" != "yes"; then
10733 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10736 # warn that OpenSSL has been selected but not all TLS code has this option
10737 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10738 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10741 AC_DEFINE(USE_TLS_NSS)
10743 AC_MSG_RESULT([$TLS])
10746 AC_MSG_RESULT([none])
10747 AC_MSG_WARN([Skipping TLS/SSL])
10751 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10753 nss - Mozilla's Network Security Services (NSS)
10758 # default to using NSS, it results in smaller oox lib
10759 AC_DEFINE(USE_TLS_NSS)
10761 AC_MSG_RESULT([$TLS])
10765 dnl ===================================================================
10766 dnl Check for system sane
10767 dnl ===================================================================
10768 AC_MSG_CHECKING([which sane header to use])
10769 if test "$with_system_sane" = "yes"; then
10770 AC_MSG_RESULT([external])
10771 AC_CHECK_HEADER(sane/sane.h, [],
10772 [AC_MSG_ERROR(sane not found. install sane)], [])
10774 AC_MSG_RESULT([internal])
10775 BUILD_TYPE="$BUILD_TYPE SANE"
10778 dnl ===================================================================
10779 dnl Check for system icu
10780 dnl ===================================================================
10783 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10784 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10785 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10786 if test "$SYSTEM_ICU" = TRUE; then
10787 AC_LANG_PUSH([C++])
10788 AC_MSG_CHECKING([for unicode/rbbi.h])
10789 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10792 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10793 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10794 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10796 if test "$CROSS_COMPILING" != TRUE; then
10797 # using the system icu tools can lead to version confusion, use the
10798 # ones from the build environment when cross-compiling
10799 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10800 if test -z "$SYSTEM_GENBRK"; then
10801 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10803 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10804 if test -z "$SYSTEM_GENCCODE"; then
10805 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10807 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10808 if test -z "$SYSTEM_GENCMN"; then
10809 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10814 AC_SUBST(SYSTEM_GENBRK)
10815 AC_SUBST(SYSTEM_GENCCODE)
10816 AC_SUBST(SYSTEM_GENCMN)
10817 AC_SUBST(ICU_MAJOR)
10818 AC_SUBST(ICU_MINOR)
10820 dnl ==================================================================
10822 dnl ==================================================================
10823 if test "$enable_curl" == "yes"; then
10824 AC_DEFINE([HAVE_FEATURE_CURL])
10827 dnl ==================================================================
10829 dnl ==================================================================
10830 DEFAULT_CRASHDUMP_VALUE="true"
10831 AC_MSG_CHECKING([whether to enable breakpad])
10832 if test "$enable_breakpad" != yes; then
10833 AC_MSG_RESULT([no])
10835 if test "$enable_curl" != "yes"; then
10836 AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10838 AC_MSG_RESULT([yes])
10839 ENABLE_BREAKPAD="TRUE"
10840 AC_DEFINE(ENABLE_BREAKPAD)
10841 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10842 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10844 AC_MSG_CHECKING([for disable crash dump])
10845 if test "$enable_crashdump" = no; then
10846 DEFAULT_CRASHDUMP_VALUE="false"
10847 AC_MSG_RESULT([yes])
10849 AC_MSG_RESULT([no])
10852 AC_MSG_CHECKING([for crashreport config])
10853 if test "$with_symbol_config" = "no"; then
10854 BREAKPAD_SYMBOL_CONFIG="invalid"
10855 AC_MSG_RESULT([no])
10857 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10858 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10859 AC_MSG_RESULT([yes])
10861 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10863 AC_SUBST(ENABLE_BREAKPAD)
10864 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10866 dnl ==================================================================
10868 dnl ==================================================================
10869 if test "$enable_libcmis" == "yes"; then
10870 if test "$enable_curl" != "yes"; then
10871 AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10875 dnl ===================================================================
10877 dnl ===================================================================
10878 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.18.0])
10879 if test "$with_system_orcus" != "yes"; then
10880 if test "$SYSTEM_BOOST" = "TRUE"; then
10881 dnl Link with Boost.System
10882 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10883 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10884 dnl in documentation has no effect.
10888 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10889 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10890 AC_SUBST([BOOST_SYSTEM_LIB])
10891 AC_SUBST(SYSTEM_LIBORCUS)
10893 dnl ===================================================================
10895 dnl ===================================================================
10896 harfbuzz_required_version=5.1.0
10898 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10899 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10902 GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10903 HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10906 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10907 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10910 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10911 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10913 if test "$COM" = "MSC"; then # override the above
10914 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10915 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10918 if test "$with_system_harfbuzz" = "yes"; then
10919 if test "$with_system_graphite" = "no"; then
10920 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10922 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10924 save_CFLAGS="$CFLAGS"
10925 LIBS="$LIBS $HARFBUZZ_LIBS"
10926 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10927 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10929 CFLAGS="$save_CFLAGS"
10931 if test "$with_system_graphite" = "yes"; then
10932 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10936 if test "$USING_X11" = TRUE; then
10939 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10941 if test -z "$x_includes"; then
10942 x_includes="default_x_includes"
10944 if test -z "$x_libraries"; then
10945 x_libraries="default_x_libraries"
10947 CFLAGS="$CFLAGS $X_CFLAGS"
10948 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10949 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10951 x_includes="no_x_includes"
10952 x_libraries="no_x_libraries"
10955 if test "$USING_X11" = TRUE; then
10956 dnl ===================================================================
10957 dnl Check for extension headers
10958 dnl ===================================================================
10959 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10960 [#include <X11/extensions/shape.h>])
10962 # vcl needs ICE and SM
10963 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10964 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10965 [AC_MSG_ERROR(ICE library not found)])
10966 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10967 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10968 [AC_MSG_ERROR(SM library not found)])
10971 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10972 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10973 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10976 dnl ===================================================================
10977 dnl Check for system Xrender
10978 dnl ===================================================================
10979 AC_MSG_CHECKING([whether to use Xrender])
10980 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10981 AC_MSG_RESULT([yes])
10982 PKG_CHECK_MODULES(XRENDER, xrender)
10983 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10984 FilterLibs "${XRENDER_LIBS}"
10985 XRENDER_LIBS="${filteredlibs}"
10986 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10987 [AC_MSG_ERROR(libXrender not found or functional)], [])
10988 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10989 [AC_MSG_ERROR(Xrender not found. install X)], [])
10991 AC_MSG_RESULT([no])
10993 AC_SUBST(XRENDER_CFLAGS)
10994 AC_SUBST(XRENDER_LIBS)
10996 dnl ===================================================================
10997 dnl Check for XRandr
10998 dnl ===================================================================
10999 AC_MSG_CHECKING([whether to enable RandR support])
11000 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11001 AC_MSG_RESULT([yes])
11002 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11003 if test "$ENABLE_RANDR" != "TRUE"; then
11004 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11005 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11007 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11008 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11009 XRANDR_LIBS="-lXrandr "
11010 ENABLE_RANDR="TRUE"
11012 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11013 FilterLibs "${XRANDR_LIBS}"
11014 XRANDR_LIBS="${filteredlibs}"
11017 AC_MSG_RESULT([no])
11019 AC_SUBST(XRANDR_CFLAGS)
11020 AC_SUBST(XRANDR_LIBS)
11021 AC_SUBST(ENABLE_RANDR)
11023 if test -z "$with_webdav"; then
11024 with_webdav=$test_webdav
11027 AC_MSG_CHECKING([for WebDAV support])
11028 case "$with_webdav" in
11030 AC_MSG_RESULT([no])
11034 AC_MSG_RESULT([yes])
11035 # curl is already mandatory (almost) and checked elsewhere
11036 if test "$enable_curl" = "no"; then
11037 AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11042 AC_SUBST(WITH_WEBDAV)
11044 dnl ===================================================================
11045 dnl Check for disabling cve_tests
11046 dnl ===================================================================
11047 AC_MSG_CHECKING([whether to execute CVE tests])
11048 # If not explicitly enabled or disabled, default
11049 if test -z "$enable_cve_tests"; then
11052 # Default cves off for Windows with its wild and wonderful
11053 # variety of AV software kicking in and panicking
11054 enable_cve_tests=no
11058 enable_cve_tests=yes
11062 if test "$enable_cve_tests" = "no"; then
11063 AC_MSG_RESULT([no])
11064 DISABLE_CVE_TESTS=TRUE
11065 AC_SUBST(DISABLE_CVE_TESTS)
11067 AC_MSG_RESULT([yes])
11070 dnl ===================================================================
11071 dnl Check for system openssl
11072 dnl ===================================================================
11074 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11075 if test "$enable_openssl" = "yes"; then
11076 AC_MSG_RESULT([no])
11077 ENABLE_OPENSSL=TRUE
11078 if test "$_os" = Darwin ; then
11079 # OpenSSL is deprecated when building for 10.7 or later.
11081 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11082 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11084 with_system_openssl=no
11085 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11086 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11087 && test "$with_system_openssl" != "no"; then
11088 with_system_openssl=yes
11089 SYSTEM_OPENSSL=TRUE
11091 OPENSSL_LIBS="-lssl -lcrypto"
11093 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11095 if test "$with_system_openssl" = "yes"; then
11096 AC_MSG_CHECKING([whether openssl supports SHA512])
11098 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11099 SHA512_CTX context;
11100 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11104 AC_MSG_RESULT([yes])
11106 # warn that although OpenSSL is disabled, system libraries may depend on it
11107 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11108 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11111 AC_SUBST([ENABLE_OPENSSL])
11113 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11114 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11115 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11116 enable_cipher_openssl_backend=no
11118 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11121 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11122 ENABLE_CIPHER_OPENSSL_BACKEND=
11123 if test "$enable_cipher_openssl_backend" = yes; then
11124 AC_MSG_RESULT([yes])
11125 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11127 AC_MSG_RESULT([no])
11129 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11131 dnl ===================================================================
11132 dnl Select the crypto backends used by LO
11133 dnl ===================================================================
11135 if test "$build_crypto" = yes; then
11136 if test "$OS" = WNT; then
11137 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11138 AC_DEFINE([USE_CRYPTO_MSCAPI])
11139 elif test "$ENABLE_NSS" = TRUE; then
11140 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11141 AC_DEFINE([USE_CRYPTO_NSS])
11145 dnl ===================================================================
11146 dnl Check for system redland
11147 dnl ===================================================================
11148 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11149 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11150 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11151 if test "$with_system_redland" = "yes"; then
11152 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11153 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11159 AC_SUBST(RAPTOR_MAJOR)
11160 AC_SUBST(RASQAL_MAJOR)
11161 AC_SUBST(REDLAND_MAJOR)
11163 dnl ===================================================================
11164 dnl Check for system hunspell
11165 dnl ===================================================================
11166 AC_MSG_CHECKING([which libhunspell to use])
11167 if test "$with_system_hunspell" = "yes"; then
11168 AC_MSG_RESULT([external])
11169 SYSTEM_HUNSPELL=TRUE
11170 AC_LANG_PUSH([C++])
11171 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11172 if test "$HUNSPELL_PC" != "TRUE"; then
11173 AC_CHECK_HEADER(hunspell.hxx, [],
11175 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11176 [AC_MSG_ERROR(hunspell headers not found.)], [])
11178 AC_CHECK_LIB([hunspell], [main], [:],
11179 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11180 HUNSPELL_LIBS=-lhunspell
11183 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11184 FilterLibs "${HUNSPELL_LIBS}"
11185 HUNSPELL_LIBS="${filteredlibs}"
11187 AC_MSG_RESULT([internal])
11189 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11190 if test "$COM" = "MSC"; then
11191 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11193 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11195 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11197 AC_SUBST(SYSTEM_HUNSPELL)
11198 AC_SUBST(HUNSPELL_CFLAGS)
11199 AC_SUBST(HUNSPELL_LIBS)
11201 dnl ===================================================================
11202 dnl Check for system zxing
11203 dnl ===================================================================
11204 AC_MSG_CHECKING([whether to use zxing])
11205 if test "$enable_zxing" = "no"; then
11206 AC_MSG_RESULT([no])
11210 AC_MSG_RESULT([yes])
11212 AC_MSG_CHECKING([which libzxing to use])
11213 if test "$with_system_zxing" = "yes"; then
11214 AC_MSG_RESULT([external])
11217 AC_LANG_PUSH([C++])
11218 save_CXXFLAGS=$CXXFLAGS
11221 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11222 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11223 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11224 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11225 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11226 dnl unsetting IFS."):
11228 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11229 dnl ignore them here:
11230 if test -z "$i"; then
11233 dnl TODO: White space in $i would cause problems:
11234 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11235 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11236 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11238 CXXFLAGS=$save_CXXFLAGS
11239 if test -z "$ZXING_CFLAGS"; then
11240 AC_MSG_ERROR(zxing headers not found.)
11242 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11243 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11244 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11246 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11247 FilterLibs "${ZXING_LIBS}"
11248 ZXING_LIBS="${filteredlibs}"
11250 AC_MSG_RESULT([internal])
11252 BUILD_TYPE="$BUILD_TYPE ZXING"
11253 ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11255 if test "$ENABLE_ZXING" = TRUE; then
11256 AC_DEFINE(ENABLE_ZXING)
11258 AC_MSG_CHECKING([whether zxing::tosvg function is available])
11259 AC_LANG_PUSH([C++])
11260 save_CXXFLAGS=$CXXFLAGS
11261 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11262 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11263 #include <BitMatrix.h>
11264 #include <BitMatrixIO.h>
11266 ZXing::BitMatrix matrix(1, 1);
11267 matrix.set(0, 0, true);
11268 ZXing::ToSVG(matrix);
11272 AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11273 AC_MSG_RESULT([yes])
11274 ], [AC_MSG_RESULT([no])])
11275 CXXFLAGS=$save_CXXFLAGS
11277 AC_SUBST(HAVE_ZXING_TOSVG)
11279 AC_SUBST(SYSTEM_ZXING)
11280 AC_SUBST(ENABLE_ZXING)
11281 AC_SUBST(ZXING_CFLAGS)
11282 AC_SUBST(ZXING_LIBS)
11284 dnl ===================================================================
11285 dnl Check for system box2d
11286 dnl ===================================================================
11287 AC_MSG_CHECKING([which box2d to use])
11288 if test "$with_system_box2d" = "yes"; then
11289 AC_MSG_RESULT([external])
11291 AC_LANG_PUSH([C++])
11292 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11293 [BOX2D_H_FOUND='FALSE'])
11294 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11296 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11298 # fail this. there's no other alternative to check when we are here.
11299 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11300 [AC_MSG_ERROR(box2d headers not found.)])
11302 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11304 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11305 [ AC_MSG_ERROR(box2d library not found.) ], [])
11306 BOX2D_LIBS=-l$_BOX2D_LIB
11308 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11309 FilterLibs "${BOX2D_LIBS}"
11310 BOX2D_LIBS="${filteredlibs}"
11312 AC_MSG_RESULT([internal])
11314 BUILD_TYPE="$BUILD_TYPE BOX2D"
11316 AC_SUBST(SYSTEM_BOX2D)
11317 AC_SUBST(BOX2D_CFLAGS)
11318 AC_SUBST(BOX2D_LIBS)
11320 dnl ===================================================================
11321 dnl Checking for altlinuxhyph
11322 dnl ===================================================================
11323 AC_MSG_CHECKING([which altlinuxhyph to use])
11324 if test "$with_system_altlinuxhyph" = "yes"; then
11325 AC_MSG_RESULT([external])
11327 AC_CHECK_HEADER(hyphen.h, [],
11328 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11329 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11330 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11331 [#include <hyphen.h>])
11332 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11333 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11334 if test -z "$HYPHEN_LIB"; then
11335 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11336 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11338 if test -z "$HYPHEN_LIB"; then
11339 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11340 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11343 AC_MSG_RESULT([internal])
11345 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11346 if test "$COM" = "MSC"; then
11347 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11349 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11352 AC_SUBST(SYSTEM_HYPH)
11353 AC_SUBST(HYPHEN_LIB)
11355 dnl ===================================================================
11356 dnl Checking for mythes
11357 dnl ===================================================================
11358 AC_MSG_CHECKING([which mythes to use])
11359 if test "$with_system_mythes" = "yes"; then
11360 AC_MSG_RESULT([external])
11362 AC_LANG_PUSH([C++])
11363 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11364 if test "$MYTHES_PKGCONFIG" = "no"; then
11365 AC_CHECK_HEADER(mythes.hxx, [],
11366 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11367 AC_CHECK_LIB([mythes-1.2], [main], [:],
11368 [ MYTHES_FOUND=no], [])
11369 if test "$MYTHES_FOUND" = "no"; then
11370 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11371 [ MYTHES_FOUND=no], [])
11373 if test "$MYTHES_FOUND" = "no"; then
11374 AC_MSG_ERROR([mythes library not found!.])
11378 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11379 FilterLibs "${MYTHES_LIBS}"
11380 MYTHES_LIBS="${filteredlibs}"
11382 AC_MSG_RESULT([internal])
11384 BUILD_TYPE="$BUILD_TYPE MYTHES"
11385 if test "$COM" = "MSC"; then
11386 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11388 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11391 AC_SUBST(SYSTEM_MYTHES)
11392 AC_SUBST(MYTHES_CFLAGS)
11393 AC_SUBST(MYTHES_LIBS)
11395 dnl ===================================================================
11396 dnl How should we build the linear programming solver ?
11397 dnl ===================================================================
11400 AC_MSG_CHECKING([whether to build with CoinMP])
11401 if test "$enable_coinmp" != "no"; then
11403 AC_MSG_RESULT([yes])
11404 if test "$with_system_coinmp" = "yes"; then
11406 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11407 FilterLibs "${COINMP_LIBS}"
11408 COINMP_LIBS="${filteredlibs}"
11410 BUILD_TYPE="$BUILD_TYPE COINMP"
11413 AC_MSG_RESULT([no])
11415 AC_SUBST(ENABLE_COINMP)
11416 AC_SUBST(SYSTEM_COINMP)
11417 AC_SUBST(COINMP_CFLAGS)
11418 AC_SUBST(COINMP_LIBS)
11421 AC_MSG_CHECKING([whether to build with lpsolve])
11422 if test "$enable_lpsolve" != "no"; then
11423 ENABLE_LPSOLVE=TRUE
11424 AC_MSG_RESULT([yes])
11426 AC_MSG_RESULT([no])
11428 AC_SUBST(ENABLE_LPSOLVE)
11430 if test "$ENABLE_LPSOLVE" = TRUE; then
11431 AC_MSG_CHECKING([which lpsolve to use])
11432 if test "$with_system_lpsolve" = "yes"; then
11433 AC_MSG_RESULT([external])
11434 SYSTEM_LPSOLVE=TRUE
11435 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11436 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11438 # some systems need this. Like Ubuntu...
11439 AC_CHECK_LIB(m, floor)
11440 AC_CHECK_LIB(dl, dlopen)
11441 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11442 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11445 AC_MSG_RESULT([internal])
11447 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11450 AC_SUBST(SYSTEM_LPSOLVE)
11452 dnl ===================================================================
11453 dnl Checking for libexttextcat
11454 dnl ===================================================================
11455 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11456 if test "$with_system_libexttextcat" = "yes"; then
11457 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11459 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11461 dnl ===================================================================
11462 dnl Checking for libnumbertext
11463 dnl ===================================================================
11464 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11465 if test "$with_system_libnumbertext" = "yes"; then
11466 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11467 SYSTEM_LIBNUMBERTEXT=YES
11469 SYSTEM_LIBNUMBERTEXT=
11471 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11472 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11474 dnl ***************************************
11475 dnl testing libc version for Linux...
11476 dnl ***************************************
11477 if test "$_os" = "Linux"; then
11478 AC_MSG_CHECKING([whether the libc is recent enough])
11479 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11480 #include <features.h>
11481 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11482 #error glibc >= 2.1 is required
11484 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11487 dnl =========================================
11488 dnl Check for uuidgen
11489 dnl =========================================
11490 if test "$_os" = "WINNT"; then
11491 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11492 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11493 UUIDGEN=uuidgen.exe
11496 AC_PATH_PROG([UUIDGEN], [uuidgen])
11497 if test -z "$UUIDGEN"; then
11498 AC_MSG_WARN([uuid is needed for building installation sets])
11502 dnl ***************************************
11503 dnl Checking for bison and flex
11504 dnl ***************************************
11505 AC_PATH_PROG(BISON, bison)
11506 if test -z "$BISON"; then
11507 AC_MSG_ERROR([no bison found in \$PATH, install it])
11509 AC_MSG_CHECKING([the bison version])
11510 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11511 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11512 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11515 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]
11516 dnl typedef union YYSTYPE
11519 dnl while at least 3.4.1 is know to be good:
11520 if test "$COMPILER_PLUGINS" = TRUE; then
11521 if test "$_bison_longver" -lt 2004; then
11522 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11525 if test "$_bison_longver" -lt 2000; then
11526 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11532 AC_PATH_PROG(FLEX, flex)
11533 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11534 FLEX=`cygpath -m $FLEX`
11536 if test -z "$FLEX"; then
11537 AC_MSG_ERROR([no flex found in \$PATH, install it])
11539 AC_MSG_CHECKING([the flex version])
11540 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11541 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11542 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11547 AC_PATH_PROG(DIFF, diff)
11548 if test -z "$DIFF"; then
11549 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11553 AC_PATH_PROG(UNIQ, uniq)
11554 if test -z "$UNIQ"; then
11555 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11559 dnl ***************************************
11560 dnl Checking for patch
11561 dnl ***************************************
11562 AC_PATH_PROG(PATCH, patch)
11563 if test -z "$PATCH"; then
11564 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11567 dnl On Solaris or macOS, check if --with-gnu-patch was used
11568 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11569 if test -z "$with_gnu_patch"; then
11572 if test -x "$with_gnu_patch"; then
11573 GNUPATCH=$with_gnu_patch
11575 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11579 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11580 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11581 AC_MSG_RESULT([yes])
11583 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11584 AC_MSG_RESULT([no, but accepted (Apple patch)])
11585 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11587 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11594 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11595 GNUPATCH=`cygpath -m $GNUPATCH`
11598 dnl We also need to check for --with-gnu-cp
11600 if test -z "$with_gnu_cp"; then
11601 # check the place where the good stuff is hidden on Solaris...
11602 if test -x /usr/gnu/bin/cp; then
11603 GNUCP=/usr/gnu/bin/cp
11605 AC_PATH_PROGS(GNUCP, gnucp cp)
11607 if test -z $GNUCP; then
11608 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11611 if test -x "$with_gnu_cp"; then
11614 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11618 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11619 GNUCP=`cygpath -m $GNUCP`
11622 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11623 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11624 AC_MSG_RESULT([yes])
11625 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11626 AC_MSG_RESULT([yes])
11628 case "$build_os" in
11629 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11632 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11635 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11644 dnl ***************************************
11645 dnl testing assembler path
11646 dnl ***************************************
11648 if test "$_os" = "WINNT"; then
11649 case "$WIN_HOST_ARCH" in
11650 x86) assembler=ml.exe ;;
11651 x64) assembler=ml64.exe ;;
11652 arm64) assembler=armasm64.exe ;;
11655 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11656 if test -f "$MSVC_HOST_PATH/$assembler"; then
11657 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11658 AC_MSG_RESULT([$ML_EXE])
11660 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11666 dnl ===================================================================
11667 dnl We need zip and unzip
11668 dnl ===================================================================
11669 AC_PATH_PROG(ZIP, zip)
11670 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11671 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11672 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],,)
11675 AC_PATH_PROG(UNZIP, unzip)
11676 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11678 dnl ===================================================================
11679 dnl Zip must be a specific type for different build types.
11680 dnl ===================================================================
11681 if test $build_os = cygwin; then
11682 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11683 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11687 dnl ===================================================================
11688 dnl We need touch with -h option support.
11689 dnl ===================================================================
11690 AC_PATH_PROG(TOUCH, touch)
11691 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11692 touch "$WARNINGS_FILE"
11693 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11694 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],,)
11697 dnl ===================================================================
11698 dnl Check for system epoxy
11699 dnl ===================================================================
11700 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11701 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11703 dnl ===================================================================
11704 dnl Show which vclplugs will be built.
11705 dnl ===================================================================
11708 libo_ENABLE_VCLPLUG([gen])
11709 libo_ENABLE_VCLPLUG([gtk3])
11710 libo_ENABLE_VCLPLUG([gtk3_kde5])
11711 libo_ENABLE_VCLPLUG([gtk4])
11712 libo_ENABLE_VCLPLUG([kf5])
11713 libo_ENABLE_VCLPLUG([kf6])
11714 libo_ENABLE_VCLPLUG([qt5])
11715 libo_ENABLE_VCLPLUG([qt6])
11717 if test "$_os" = "WINNT"; then
11719 elif test "$_os" = "Darwin"; then
11721 elif test "$_os" = "iOS"; then
11723 elif test "$_os" = Android; then
11727 build_vcl_plugins="$R"
11728 if test -z "$build_vcl_plugins"; then
11729 build_vcl_plugins=" none"
11731 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11733 AC_SUBST([VCL_PLUGIN_INFO])
11735 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11736 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11739 dnl ===================================================================
11740 dnl Check for GTK libraries
11741 dnl ===================================================================
11745 ENABLE_GTKTILEDVIEWER=""
11746 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11747 if test "$with_system_cairo" = no; then
11748 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.'
11750 : ${with_system_cairo:=yes}
11751 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)
11752 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11753 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11754 FilterLibs "${GTK3_LIBS}"
11755 GTK3_LIBS="${filteredlibs}"
11757 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11758 if test "$with_system_epoxy" != "yes"; then
11759 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11760 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11761 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11763 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11764 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11765 if test "$build_os" = "cygwin"; then
11766 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11767 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11770 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11771 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11772 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11773 FilterLibs "${GTK3_LIBS}"
11774 GTK3_LIBS="${filteredlibs}"
11775 ENABLE_GTKTILEDVIEWER="yes"
11777 AC_SUBST(GTK3_LIBS)
11778 AC_SUBST(GTK3_CFLAGS)
11779 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11783 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11784 if test "$with_system_cairo" = no; then
11785 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11787 : ${with_system_cairo:=yes}
11788 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11789 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11790 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11791 FilterLibs "${GTK4_LIBS}"
11792 GTK4_LIBS="${filteredlibs}"
11794 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11795 if test "$with_system_epoxy" != "yes"; then
11796 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11797 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11798 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11801 AC_SUBST(GTK4_LIBS)
11802 AC_SUBST(GTK4_CFLAGS)
11804 if test "$enable_introspection" = yes; then
11805 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11806 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11808 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11812 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11813 if ! test "$ENABLE_GTK3" = TRUE; then
11814 if test "$enable_atspi_tests" = yes; then
11815 AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11817 enable_atspi_tests=no
11819 if ! test "$enable_atspi_tests" = no; then
11820 AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11821 if ! test "$XVFB_RUN" = no; then
11822 dnl make sure the found xvfb-run actually works
11823 AC_MSG_CHECKING([whether $XVFB_RUN works...])
11824 if $XVFB_RUN true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11825 AC_MSG_RESULT([yes])
11827 AC_MSG_RESULT([no])
11831 if test "$XVFB_RUN" = no; then
11832 if test "$enable_atspi_tests" = yes; then
11833 AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11835 enable_atspi_tests=no
11838 if ! test "$enable_atspi_tests" = no; then
11839 AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11840 if test "$DBUS_LAUNCH" = no; then
11841 if test "$enable_atspi_tests" = yes; then
11842 AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11844 enable_atspi_tests=no
11847 if ! test "$enable_atspi_tests" = no; then
11848 PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11849 [if test "$enable_atspi_tests" = yes; then
11850 AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11852 enable_atspi_tests=no
11855 if ! test "x$enable_atspi_tests" = xno; then
11856 PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11857 [have_atspi_scroll_to=1],
11858 [have_atspi_scroll_to=0])
11859 AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11860 [Whether AT-SPI2 has the scrollTo API])
11862 ENABLE_ATSPI_TESTS=
11863 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11864 AC_SUBST([ENABLE_ATSPI_TESTS])
11866 dnl ===================================================================
11867 dnl check for dbus support
11868 dnl ===================================================================
11872 DBUS_GLIB_CFLAGS=""
11876 if test "$enable_dbus" = "no"; then
11880 AC_MSG_CHECKING([whether to enable DBUS support])
11881 if test "$test_dbus" = "yes"; then
11883 AC_MSG_RESULT([yes])
11884 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11885 AC_DEFINE(ENABLE_DBUS)
11886 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11887 FilterLibs "${DBUS_LIBS}"
11888 DBUS_LIBS="${filteredlibs}"
11890 # Glib is needed for BluetoothServer
11891 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11892 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11894 DBUS_HAVE_GLIB="TRUE"
11895 AC_DEFINE(DBUS_HAVE_GLIB,1)
11897 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11900 AC_MSG_RESULT([no])
11903 AC_SUBST(ENABLE_DBUS)
11904 AC_SUBST(DBUS_CFLAGS)
11905 AC_SUBST(DBUS_LIBS)
11906 AC_SUBST(DBUS_GLIB_CFLAGS)
11907 AC_SUBST(DBUS_GLIB_LIBS)
11908 AC_SUBST(DBUS_HAVE_GLIB)
11910 AC_MSG_CHECKING([whether to enable Impress remote control])
11911 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11912 AC_MSG_RESULT([yes])
11913 ENABLE_SDREMOTE=TRUE
11914 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11916 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11918 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11919 # The Bluetooth code doesn't compile with macOS SDK 10.15
11920 if test "$enable_sdremote_bluetooth" = yes; then
11921 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11923 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11924 enable_sdremote_bluetooth=no
11926 # If not explicitly enabled or disabled, default
11927 if test -z "$enable_sdremote_bluetooth"; then
11930 # Default to yes for these
11931 enable_sdremote_bluetooth=yes
11935 enable_sdremote_bluetooth=no
11939 # $enable_sdremote_bluetooth is guaranteed non-empty now
11941 if test "$enable_sdremote_bluetooth" != "no"; then
11942 if test "$OS" = "LINUX"; then
11943 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11944 AC_MSG_RESULT([yes])
11945 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11946 dnl ===================================================================
11947 dnl Check for system bluez
11948 dnl ===================================================================
11949 AC_MSG_CHECKING([which Bluetooth header to use])
11950 if test "$with_system_bluez" = "yes"; then
11951 AC_MSG_RESULT([external])
11952 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11953 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11956 AC_MSG_RESULT([internal])
11960 AC_MSG_RESULT([no, dbus disabled])
11961 ENABLE_SDREMOTE_BLUETOOTH=
11965 AC_MSG_RESULT([yes])
11966 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11968 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11969 <key>com.apple.security.device.bluetooth</key>
11973 AC_MSG_RESULT([no])
11974 ENABLE_SDREMOTE_BLUETOOTH=
11980 AC_MSG_RESULT([no])
11982 AC_SUBST(ENABLE_SDREMOTE)
11983 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11984 AC_SUBST(SDREMOTE_ENTITLEMENT)
11985 AC_SUBST(SYSTEM_BLUEZ)
11987 dnl ===================================================================
11988 dnl Check whether to enable GIO support
11989 dnl ===================================================================
11990 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11991 AC_MSG_CHECKING([whether to enable GIO support])
11992 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11993 dnl Need at least 2.26 for the dbus support.
11994 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11995 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11996 if test "$ENABLE_GIO" = "TRUE"; then
11997 AC_DEFINE(ENABLE_GIO)
11998 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11999 FilterLibs "${GIO_LIBS}"
12000 GIO_LIBS="${filteredlibs}"
12003 AC_MSG_RESULT([no])
12006 AC_SUBST(ENABLE_GIO)
12007 AC_SUBST(GIO_CFLAGS)
12011 dnl ===================================================================
12013 SPLIT_APP_MODULES=""
12014 if test "$enable_split_app_modules" = "yes"; then
12015 SPLIT_APP_MODULES="TRUE"
12017 AC_SUBST(SPLIT_APP_MODULES)
12019 SPLIT_OPT_FEATURES=""
12020 if test "$enable_split_opt_features" = "yes"; then
12021 SPLIT_OPT_FEATURES="TRUE"
12023 AC_SUBST(SPLIT_OPT_FEATURES)
12025 dnl ===================================================================
12026 dnl Check whether the GStreamer libraries are available.
12027 dnl ===================================================================
12029 ENABLE_GSTREAMER_1_0=""
12031 if test "$test_gstreamer_1_0" = yes; then
12033 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12034 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12035 ENABLE_GSTREAMER_1_0="TRUE"
12036 AC_MSG_RESULT([yes])
12037 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12038 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12039 FilterLibs "${GSTREAMER_1_0_LIBS}"
12040 GSTREAMER_1_0_LIBS="${filteredlibs}"
12041 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12043 AC_MSG_RESULT([no])
12046 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12047 AC_SUBST(GSTREAMER_1_0_LIBS)
12048 AC_SUBST(ENABLE_GSTREAMER_1_0)
12050 ENABLE_OPENGL_TRANSITIONS=
12051 ENABLE_OPENGL_CANVAS=
12052 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12054 elif test "$_os" = "Darwin"; then
12055 # We use frameworks on macOS, no need for detail checks
12056 ENABLE_OPENGL_TRANSITIONS=TRUE
12057 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12058 ENABLE_OPENGL_CANVAS=TRUE
12059 elif test $_os = WINNT; then
12060 ENABLE_OPENGL_TRANSITIONS=TRUE
12061 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12062 ENABLE_OPENGL_CANVAS=TRUE
12064 if test "$USING_X11" = TRUE; then
12065 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12066 ENABLE_OPENGL_TRANSITIONS=TRUE
12067 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12068 ENABLE_OPENGL_CANVAS=TRUE
12072 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12073 AC_SUBST(ENABLE_OPENGL_CANVAS)
12075 dnl =================================================
12076 dnl Check whether to build with OpenCL support.
12077 dnl =================================================
12079 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12080 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12081 # platform (optional at run-time, used through clew).
12082 BUILD_TYPE="$BUILD_TYPE OPENCL"
12083 AC_DEFINE(HAVE_FEATURE_OPENCL)
12086 dnl =================================================
12087 dnl Check whether to build with dconf support.
12088 dnl =================================================
12090 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12091 PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12092 if test "$enable_dconf" = yes; then
12093 AC_MSG_ERROR([dconf not found])
12098 AC_MSG_CHECKING([whether to enable dconf])
12099 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12103 AC_MSG_RESULT([no])
12106 AC_DEFINE(ENABLE_DCONF)
12107 AC_MSG_RESULT([yes])
12109 AC_SUBST([DCONF_CFLAGS])
12110 AC_SUBST([DCONF_LIBS])
12111 AC_SUBST([ENABLE_DCONF])
12114 AC_MSG_CHECKING([whether to build the PDF import feature])
12116 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12117 AC_MSG_RESULT([yes])
12118 ENABLE_PDFIMPORT=TRUE
12119 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12121 AC_MSG_RESULT([no])
12125 AC_MSG_CHECKING([whether to build PDFium])
12127 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12128 AC_MSG_RESULT([yes])
12130 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12132 AC_MSG_RESULT([no])
12134 AC_SUBST(ENABLE_PDFIUM)
12136 if test "$ENABLE_PDFIUM" = "TRUE"; then
12137 AC_MSG_CHECKING([which OpenJPEG library to use])
12138 if test "$with_system_openjpeg" = "yes"; then
12139 SYSTEM_OPENJPEG2=TRUE
12140 AC_MSG_RESULT([external])
12141 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12142 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12143 FilterLibs "${OPENJPEG2_LIBS}"
12144 OPENJPEG2_LIBS="${filteredlibs}"
12146 SYSTEM_OPENJPEG2=FALSE
12147 AC_MSG_RESULT([internal])
12150 AC_MSG_CHECKING([which Abseil library to use])
12151 if test "$with_system_abseil" = "yes"; then
12152 AC_MSG_RESULT([external])
12154 AC_LANG_PUSH([C++])
12155 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12156 [AC_MSG_ERROR(abseil headers not found.)], [])
12157 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12158 [AC_MSG_ERROR(abseil headers not found.)], [])
12159 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12160 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12161 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12162 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12163 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12165 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12166 FilterLibs "${ABSEIL_LIBS}"
12167 ABSEIL_LIBS="${filteredlibs}"
12169 AC_MSG_RESULT([internal])
12172 AC_SUBST(SYSTEM_OPENJPEG2)
12173 AC_SUBST(SYSTEM_ABSEIL)
12174 AC_SUBST(ABSEIL_CFLAGS)
12175 AC_SUBST(ABSEIL_LIBS)
12177 dnl ===================================================================
12178 dnl Check for poppler
12179 dnl ===================================================================
12181 AC_MSG_CHECKING([whether to build Poppler])
12182 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12183 AC_MSG_RESULT([yes])
12184 ENABLE_POPPLER=TRUE
12185 AC_DEFINE(HAVE_FEATURE_POPPLER)
12187 AC_MSG_RESULT([no])
12189 AC_SUBST(ENABLE_POPPLER)
12191 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12192 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12195 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12196 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12199 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12200 dnl ===================================================================
12201 dnl Check for system poppler
12202 dnl ===================================================================
12203 AC_MSG_CHECKING([which PDF import poppler to use])
12204 if test "$with_system_poppler" = "yes"; then
12205 AC_MSG_RESULT([external])
12206 SYSTEM_POPPLER=TRUE
12207 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12208 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12209 FilterLibs "${POPPLER_LIBS}"
12210 POPPLER_LIBS="${filteredlibs}"
12212 AC_MSG_RESULT([internal])
12214 BUILD_TYPE="$BUILD_TYPE POPPLER"
12216 AC_DEFINE([ENABLE_PDFIMPORT],1)
12218 AC_SUBST(ENABLE_PDFIMPORT)
12219 AC_SUBST(SYSTEM_POPPLER)
12220 AC_SUBST(POPPLER_CFLAGS)
12221 AC_SUBST(POPPLER_LIBS)
12225 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12226 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12227 if test "$SYSTEM_FREETYPE" = TRUE; then
12228 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12229 [skia_freetype_ok=yes],
12230 [skia_freetype_ok=no])
12231 else # internal is ok
12232 skia_freetype_ok=yes
12234 AC_MSG_CHECKING([whether to build Skia])
12235 if test "$skia_freetype_ok" = "yes"; then
12236 if test "$enable_skia" = "debug"; then
12237 AC_MSG_RESULT([yes (debug)])
12238 ENABLE_SKIA_DEBUG=TRUE
12240 AC_MSG_RESULT([yes])
12244 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12245 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12248 AC_DEFINE(HAVE_FEATURE_SKIA)
12249 BUILD_TYPE="$BUILD_TYPE SKIA"
12251 if test "$OS" = "MACOSX"; then
12252 AC_DEFINE(SK_GANESH,1)
12253 AC_DEFINE(SK_METAL,1)
12257 AC_DEFINE(SK_GANESH,1)
12258 AC_DEFINE(SK_VULKAN,1)
12263 AC_MSG_RESULT([no (freetype too old)])
12264 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12268 AC_MSG_CHECKING([whether to build Skia])
12269 AC_MSG_RESULT([no])
12271 AC_SUBST(ENABLE_SKIA)
12272 AC_SUBST(ENABLE_SKIA_DEBUG)
12274 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12275 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12276 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12277 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12278 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12279 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12280 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12281 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12282 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12283 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12285 HAVE_LO_CLANG_DLLEXPORTINLINES=
12287 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12288 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12289 AC_MSG_CHECKING([for Clang])
12290 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12292 if test "$_os" = "WINNT"; then
12293 AC_MSG_CHECKING([for clang-cl])
12294 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12295 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12296 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12297 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12298 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12299 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12301 if test -n "$LO_CLANG_CC"; then
12302 dnl explicitly set -m32/-m64
12303 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12304 LO_CLANG_CXX="$LO_CLANG_CC"
12305 AC_MSG_RESULT([$LO_CLANG_CC])
12307 AC_MSG_RESULT([no])
12310 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12311 echo "#include <stdlib.h>" > conftest.c
12312 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12313 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12314 rm -f conftest.c conftest.obj
12315 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12316 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12318 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12321 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12322 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12325 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12326 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12327 LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12328 if test "$LO_CLANG_VERSION" -lt 50002; then
12329 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12334 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12336 CXX="$LO_CLANG_CXX"
12337 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12338 AC_LANG_PUSH([C++])
12339 save_CXXFLAGS=$CXXFLAGS
12340 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12341 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12342 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12343 AC_MSG_RESULT([yes])
12344 ], [AC_MSG_RESULT([no])])
12345 CXXFLAGS=$save_CXXFLAGS
12348 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12349 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.])
12352 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12353 # Skia is the default on Windows and Mac, so hard-require Clang.
12354 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12355 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12356 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12358 AC_MSG_WARN([Clang compiler not found.])
12363 CXX="$LO_CLANG_CXX"
12364 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12367 flag_sse41=-msse4.1
12368 flag_sse42=-msse4.2
12371 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12372 flag_avx512f=-mavx512f
12376 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12377 AC_LANG_PUSH([C++])
12378 save_CXXFLAGS=$CXXFLAGS
12379 CXXFLAGS="$CXXFLAGS $flag_sse2"
12380 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12381 #include <emmintrin.h>
12383 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12384 c = _mm_xor_si128 (a, b);
12388 [can_compile_sse2=yes],
12389 [can_compile_sse2=no])
12391 CXXFLAGS=$save_CXXFLAGS
12392 AC_MSG_RESULT([${can_compile_sse2}])
12393 if test "${can_compile_sse2}" = "yes" ; then
12394 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12397 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12398 AC_LANG_PUSH([C++])
12399 save_CXXFLAGS=$CXXFLAGS
12400 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12401 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12402 #include <tmmintrin.h>
12404 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12405 c = _mm_maddubs_epi16 (a, b);
12409 [can_compile_ssse3=yes],
12410 [can_compile_ssse3=no])
12412 CXXFLAGS=$save_CXXFLAGS
12413 AC_MSG_RESULT([${can_compile_ssse3}])
12414 if test "${can_compile_ssse3}" = "yes" ; then
12415 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12418 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12419 AC_LANG_PUSH([C++])
12420 save_CXXFLAGS=$CXXFLAGS
12421 CXXFLAGS="$CXXFLAGS $flag_sse41"
12422 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12423 #include <smmintrin.h>
12425 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12426 c = _mm_cmpeq_epi64 (a, b);
12430 [can_compile_sse41=yes],
12431 [can_compile_sse41=no])
12433 CXXFLAGS=$save_CXXFLAGS
12434 AC_MSG_RESULT([${can_compile_sse41}])
12435 if test "${can_compile_sse41}" = "yes" ; then
12436 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12439 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12440 AC_LANG_PUSH([C++])
12441 save_CXXFLAGS=$CXXFLAGS
12442 CXXFLAGS="$CXXFLAGS $flag_sse42"
12443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12444 #include <nmmintrin.h>
12446 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12447 c = _mm_cmpgt_epi64 (a, b);
12451 [can_compile_sse42=yes],
12452 [can_compile_sse42=no])
12454 CXXFLAGS=$save_CXXFLAGS
12455 AC_MSG_RESULT([${can_compile_sse42}])
12456 if test "${can_compile_sse42}" = "yes" ; then
12457 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12460 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12461 AC_LANG_PUSH([C++])
12462 save_CXXFLAGS=$CXXFLAGS
12463 CXXFLAGS="$CXXFLAGS $flag_avx"
12464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12465 #include <immintrin.h>
12467 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12468 c = _mm256_xor_ps(a, b);
12472 [can_compile_avx=yes],
12473 [can_compile_avx=no])
12475 CXXFLAGS=$save_CXXFLAGS
12476 AC_MSG_RESULT([${can_compile_avx}])
12477 if test "${can_compile_avx}" = "yes" ; then
12478 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12481 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12482 AC_LANG_PUSH([C++])
12483 save_CXXFLAGS=$CXXFLAGS
12484 CXXFLAGS="$CXXFLAGS $flag_avx2"
12485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12486 #include <immintrin.h>
12488 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12489 c = _mm256_maddubs_epi16(a, b);
12493 [can_compile_avx2=yes],
12494 [can_compile_avx2=no])
12496 CXXFLAGS=$save_CXXFLAGS
12497 AC_MSG_RESULT([${can_compile_avx2}])
12498 if test "${can_compile_avx2}" = "yes" ; then
12499 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12502 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12503 AC_LANG_PUSH([C++])
12504 save_CXXFLAGS=$CXXFLAGS
12505 CXXFLAGS="$CXXFLAGS $flag_avx512"
12506 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12507 #include <immintrin.h>
12509 __m512i a = _mm512_loadu_si512(0);
12510 __m512d v1 = _mm512_load_pd(0);
12511 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12512 __m512d v2 = _mm512_abs_pd(v1);
12516 [can_compile_avx512=yes],
12517 [can_compile_avx512=no])
12519 CXXFLAGS=$save_CXXFLAGS
12520 AC_MSG_RESULT([${can_compile_avx512}])
12521 if test "${can_compile_avx512}" = "yes" ; then
12522 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12523 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12526 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12527 AC_LANG_PUSH([C++])
12528 save_CXXFLAGS=$CXXFLAGS
12529 CXXFLAGS="$CXXFLAGS $flag_f16c"
12530 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12531 #include <immintrin.h>
12533 __m128i a = _mm_set1_epi32 (0);
12535 c = _mm_cvtph_ps(a);
12539 [can_compile_f16c=yes],
12540 [can_compile_f16c=no])
12542 CXXFLAGS=$save_CXXFLAGS
12543 AC_MSG_RESULT([${can_compile_f16c}])
12544 if test "${can_compile_f16c}" = "yes" ; then
12545 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12548 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12549 AC_LANG_PUSH([C++])
12550 save_CXXFLAGS=$CXXFLAGS
12551 CXXFLAGS="$CXXFLAGS $flag_fma"
12552 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12553 #include <immintrin.h>
12555 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12556 d = _mm256_fmadd_ps(a, b, c);
12560 [can_compile_fma=yes],
12561 [can_compile_fma=no])
12563 CXXFLAGS=$save_CXXFLAGS
12564 AC_MSG_RESULT([${can_compile_fma}])
12565 if test "${can_compile_fma}" = "yes" ; then
12566 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12573 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12575 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12576 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12580 save_CFLAGS=$CFLAGS
12581 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12582 dnl an empty program will do, we're checking the compiler flags
12583 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12584 [use_ccache=yes], [use_ccache=no])
12585 CFLAGS=$save_CFLAGS
12587 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12588 AC_MSG_RESULT([yes])
12590 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12591 AC_MSG_RESULT([no])
12595 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12596 AC_LANG_PUSH([C++])
12598 CXX="$LO_CLANG_CXX"
12599 save_CXXFLAGS=$CXXFLAGS
12600 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12601 dnl an empty program will do, we're checking the compiler flags
12602 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12603 [use_ccache=yes], [use_ccache=no])
12604 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12605 AC_MSG_RESULT([yes])
12607 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12608 AC_MSG_RESULT([no])
12610 CXXFLAGS=$save_CXXFLAGS
12615 AC_SUBST(LO_CLANG_CC)
12616 AC_SUBST(LO_CLANG_CXX)
12617 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12618 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12619 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12620 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12621 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12622 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12623 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12624 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12625 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12626 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12627 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12628 AC_SUBST(LO_CLANG_VERSION)
12629 AC_SUBST(CLANG_USE_LD)
12630 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12634 AC_MSG_CHECKING([whether to enable gpgmepp])
12635 if test "$enable_gpgmepp" = no; then
12636 AC_MSG_RESULT([no])
12637 elif test "$enable_mpl_subset" = "yes"; then
12638 AC_MSG_RESULT([no (MPL only])
12639 elif test "$enable_fuzzers" = "yes"; then
12640 AC_MSG_RESULT([no (oss-fuzz)])
12641 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12642 AC_MSG_RESULT([yes])
12643 dnl ===================================================================
12644 dnl Check for system gpgme
12645 dnl ===================================================================
12646 AC_MSG_CHECKING([which gpgmepp to use])
12647 if test "$with_system_gpgmepp" = "yes"; then
12648 AC_MSG_RESULT([external])
12649 SYSTEM_GPGMEPP=TRUE
12651 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12652 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12653 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12654 AC_CHECK_HEADER(gpgme.h, [],
12655 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12656 AC_CHECK_LIB(gpgmepp, main, [],
12657 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12658 GPGMEPP_LIBS=-lgpgmepp
12660 AC_MSG_RESULT([internal])
12661 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12663 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12664 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12665 if test "$_os" != "WINNT"; then
12666 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12667 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12670 ENABLE_GPGMEPP=TRUE
12671 AC_DEFINE([HAVE_FEATURE_GPGME])
12672 AC_PATH_PROG(GPG, gpg)
12673 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12674 # so let's exclude that manually for the moment
12675 if test -n "$GPG" -a "$_os" != "WINNT"; then
12676 # make sure we not only have a working gpgme, but a full working
12677 # gpg installation to run OpenPGP signature verification
12678 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12680 if test "$_os" = "Linux"; then
12682 AC_MSG_CHECKING([for /run/user/$uid])
12683 if test -d /run/user/$uid; then
12684 AC_MSG_RESULT([yes])
12685 AC_PATH_PROG(GPGCONF, gpgconf)
12687 # Older versions of gpgconf are not working as expected, since
12688 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12689 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12690 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12691 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12692 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12693 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12694 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12695 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12696 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12697 if $GPGCONF --dump-options > /dev/null ; then
12698 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12699 AC_MSG_RESULT([yes])
12700 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12701 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12703 AC_MSG_RESULT([no])
12706 AC_MSG_RESULT([no. missing or broken gpgconf?])
12709 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12712 AC_MSG_RESULT([no])
12716 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12718 AC_SUBST(ENABLE_GPGMEPP)
12719 AC_SUBST(SYSTEM_GPGMEPP)
12720 AC_SUBST(GPG_ERROR_CFLAGS)
12721 AC_SUBST(GPG_ERROR_LIBS)
12722 AC_SUBST(LIBASSUAN_CFLAGS)
12723 AC_SUBST(LIBASSUAN_LIBS)
12724 AC_SUBST(GPGMEPP_CFLAGS)
12725 AC_SUBST(GPGMEPP_LIBS)
12727 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12728 if test "$with_java" != "no"; then
12729 AC_MSG_RESULT([yes])
12730 ENABLE_JAVA_WEBSOCKET=TRUE
12731 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12734 AC_MSG_RESULT([no])
12735 ENABLE_JAVA_WEBSOCKET=
12737 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12739 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12740 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12741 AC_MSG_RESULT([yes])
12742 ENABLE_MEDIAWIKI=TRUE
12743 BUILD_TYPE="$BUILD_TYPE XSLTML"
12744 if test "x$with_java" = "xno"; then
12745 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12748 AC_MSG_RESULT([no])
12750 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12752 AC_SUBST(ENABLE_MEDIAWIKI)
12754 AC_MSG_CHECKING([whether to build the Report Builder])
12755 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12756 AC_MSG_RESULT([yes])
12757 ENABLE_REPORTBUILDER=TRUE
12758 AC_MSG_CHECKING([which jfreereport libs to use])
12759 if test "$with_system_jfreereport" = "yes"; then
12760 SYSTEM_JFREEREPORT=TRUE
12761 AC_MSG_RESULT([external])
12762 if test -z $SAC_JAR; then
12763 SAC_JAR=/usr/share/java/sac.jar
12765 if ! test -f $SAC_JAR; then
12766 AC_MSG_ERROR(sac.jar not found.)
12769 if test -z $LIBXML_JAR; then
12770 if test -f /usr/share/java/libxml-1.0.0.jar; then
12771 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12772 elif test -f /usr/share/java/libxml.jar; then
12773 LIBXML_JAR=/usr/share/java/libxml.jar
12775 AC_MSG_ERROR(libxml.jar replacement not found.)
12777 elif ! test -f $LIBXML_JAR; then
12778 AC_MSG_ERROR(libxml.jar not found.)
12781 if test -z $FLUTE_JAR; then
12782 if test -f /usr/share/java/flute-1.3.0.jar; then
12783 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12784 elif test -f /usr/share/java/flute.jar; then
12785 FLUTE_JAR=/usr/share/java/flute.jar
12787 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12789 elif ! test -f $FLUTE_JAR; then
12790 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12793 if test -z $JFREEREPORT_JAR; then
12794 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12795 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12796 elif test -f /usr/share/java/flow-engine.jar; then
12797 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12799 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12801 elif ! test -f $JFREEREPORT_JAR; then
12802 AC_MSG_ERROR(jfreereport.jar not found.)
12805 if test -z $LIBLAYOUT_JAR; then
12806 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12807 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12808 elif test -f /usr/share/java/liblayout.jar; then
12809 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12811 AC_MSG_ERROR(liblayout.jar replacement not found.)
12813 elif ! test -f $LIBLAYOUT_JAR; then
12814 AC_MSG_ERROR(liblayout.jar not found.)
12817 if test -z $LIBLOADER_JAR; then
12818 if test -f /usr/share/java/libloader-1.0.0.jar; then
12819 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12820 elif test -f /usr/share/java/libloader.jar; then
12821 LIBLOADER_JAR=/usr/share/java/libloader.jar
12823 AC_MSG_ERROR(libloader.jar replacement not found.)
12825 elif ! test -f $LIBLOADER_JAR; then
12826 AC_MSG_ERROR(libloader.jar not found.)
12829 if test -z $LIBFORMULA_JAR; then
12830 if test -f /usr/share/java/libformula-0.2.0.jar; then
12831 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12832 elif test -f /usr/share/java/libformula.jar; then
12833 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12835 AC_MSG_ERROR(libformula.jar replacement not found.)
12837 elif ! test -f $LIBFORMULA_JAR; then
12838 AC_MSG_ERROR(libformula.jar not found.)
12841 if test -z $LIBREPOSITORY_JAR; then
12842 if test -f /usr/share/java/librepository-1.0.0.jar; then
12843 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12844 elif test -f /usr/share/java/librepository.jar; then
12845 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12847 AC_MSG_ERROR(librepository.jar replacement not found.)
12849 elif ! test -f $LIBREPOSITORY_JAR; then
12850 AC_MSG_ERROR(librepository.jar not found.)
12853 if test -z $LIBFONTS_JAR; then
12854 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12855 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12856 elif test -f /usr/share/java/libfonts.jar; then
12857 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12859 AC_MSG_ERROR(libfonts.jar replacement not found.)
12861 elif ! test -f $LIBFONTS_JAR; then
12862 AC_MSG_ERROR(libfonts.jar not found.)
12865 if test -z $LIBSERIALIZER_JAR; then
12866 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12867 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12868 elif test -f /usr/share/java/libserializer.jar; then
12869 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12871 AC_MSG_ERROR(libserializer.jar replacement not found.)
12873 elif ! test -f $LIBSERIALIZER_JAR; then
12874 AC_MSG_ERROR(libserializer.jar not found.)
12877 if test -z $LIBBASE_JAR; then
12878 if test -f /usr/share/java/libbase-1.0.0.jar; then
12879 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12880 elif test -f /usr/share/java/libbase.jar; then
12881 LIBBASE_JAR=/usr/share/java/libbase.jar
12883 AC_MSG_ERROR(libbase.jar replacement not found.)
12885 elif ! test -f $LIBBASE_JAR; then
12886 AC_MSG_ERROR(libbase.jar not found.)
12890 AC_MSG_RESULT([internal])
12891 SYSTEM_JFREEREPORT=
12892 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12896 AC_MSG_RESULT([no])
12897 ENABLE_REPORTBUILDER=
12898 SYSTEM_JFREEREPORT=
12900 AC_SUBST(ENABLE_REPORTBUILDER)
12901 AC_SUBST(SYSTEM_JFREEREPORT)
12903 AC_SUBST(LIBXML_JAR)
12904 AC_SUBST(FLUTE_JAR)
12905 AC_SUBST(JFREEREPORT_JAR)
12906 AC_SUBST(LIBBASE_JAR)
12907 AC_SUBST(LIBLAYOUT_JAR)
12908 AC_SUBST(LIBLOADER_JAR)
12909 AC_SUBST(LIBFORMULA_JAR)
12910 AC_SUBST(LIBREPOSITORY_JAR)
12911 AC_SUBST(LIBFONTS_JAR)
12912 AC_SUBST(LIBSERIALIZER_JAR)
12914 # scripting provider for BeanShell?
12915 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12916 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12917 AC_MSG_RESULT([yes])
12918 ENABLE_SCRIPTING_BEANSHELL=TRUE
12920 dnl ===================================================================
12921 dnl Check for system beanshell
12922 dnl ===================================================================
12923 AC_MSG_CHECKING([which beanshell to use])
12924 if test "$with_system_beanshell" = "yes"; then
12925 AC_MSG_RESULT([external])
12927 if test -z $BSH_JAR; then
12928 BSH_JAR=/usr/share/java/bsh.jar
12930 if ! test -f $BSH_JAR; then
12931 AC_MSG_ERROR(bsh.jar not found.)
12934 AC_MSG_RESULT([internal])
12936 BUILD_TYPE="$BUILD_TYPE BSH"
12939 AC_MSG_RESULT([no])
12940 ENABLE_SCRIPTING_BEANSHELL=
12941 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12943 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12944 AC_SUBST(SYSTEM_BSH)
12947 # scripting provider for JavaScript?
12948 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12949 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12950 AC_MSG_RESULT([yes])
12951 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12953 dnl ===================================================================
12954 dnl Check for system rhino
12955 dnl ===================================================================
12956 AC_MSG_CHECKING([which rhino to use])
12957 if test "$with_system_rhino" = "yes"; then
12958 AC_MSG_RESULT([external])
12960 if test -z $RHINO_JAR; then
12961 RHINO_JAR=/usr/share/java/js.jar
12963 if ! test -f $RHINO_JAR; then
12964 AC_MSG_ERROR(js.jar not found.)
12967 AC_MSG_RESULT([internal])
12969 BUILD_TYPE="$BUILD_TYPE RHINO"
12973 AC_MSG_RESULT([no])
12974 ENABLE_SCRIPTING_JAVASCRIPT=
12975 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12977 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12978 AC_SUBST(SYSTEM_RHINO)
12979 AC_SUBST(RHINO_JAR)
12981 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
12982 # paths should be added to library search path. So lets put all 64-bit
12985 case "$host_cpu" in
12986 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12987 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12988 supports_multilib="yes"
12995 dnl ===================================================================
12996 dnl QT5 Integration
12997 dnl ===================================================================
13003 QT5_GOBJECT_CFLAGS=""
13004 QT5_GOBJECT_LIBS=""
13005 QT5_HAVE_GOBJECT=""
13006 QT5_PLATFORMS_SRCDIR=""
13007 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13008 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13009 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13011 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13012 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13014 if test -n "$supports_multilib"; then
13015 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13018 qt5_test_include="QtWidgets/qapplication.h"
13019 if test "$_os" = "Emscripten"; then
13020 qt5_test_library="libQt5Widgets.a"
13022 qt5_test_library="libQt5Widgets.so"
13025 dnl Check for qmake5
13026 if test -n "$QT5DIR"; then
13027 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13029 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13031 if test "$QMAKE5" = "no"; then
13032 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13034 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13035 if test -z "$qmake5_test_ver"; then
13036 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13038 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13039 qt5_minimal_minor="6"
13040 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13041 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13043 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13047 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13048 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13049 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13050 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13052 AC_MSG_CHECKING([for Qt5 headers])
13054 for inc_dir in $qt5_incdirs; do
13055 if test -r "$inc_dir/$qt5_test_include"; then
13056 qt5_incdir="$inc_dir"
13060 AC_MSG_RESULT([$qt5_incdir])
13061 if test "x$qt5_incdir" = "xno"; then
13062 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13064 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13065 AC_LANG_PUSH([C++])
13066 save_CPPFLAGS=$CPPFLAGS
13067 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13068 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13069 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13070 CPPFLAGS=$save_CPPFLAGS
13073 AC_MSG_CHECKING([for Qt5 libraries])
13075 for lib_dir in $qt5_libdirs; do
13076 if test -r "$lib_dir/$qt5_test_library"; then
13077 qt5_libdir="$lib_dir"
13081 AC_MSG_RESULT([$qt5_libdir])
13082 if test "x$qt5_libdir" = "xno"; then
13083 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13086 if test "$_os" = "Emscripten"; then
13087 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13088 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13090 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13091 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13094 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13095 if ! test -x "$EMSDK_LLVM_NM"; then
13096 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13098 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13099 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13101 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13102 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13103 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13105 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13106 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13110 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13111 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13112 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13113 if test "$_os" = "Emscripten"; then
13114 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13117 if test "$USING_X11" = TRUE; then
13118 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13119 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13120 QT5_HAVE_XCB_ICCCM=1
13121 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13123 AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
13124 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13126 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13127 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13129 AC_DEFINE(QT5_USING_X11)
13132 dnl Check for Meta Object Compiler
13134 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13135 if test "$MOC5" = "no"; then
13136 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13137 the root of your Qt installation by exporting QT5DIR before running "configure".])
13140 if test "$test_gstreamer_1_0" = yes; then
13141 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13143 AC_DEFINE(QT5_HAVE_GOBJECT)
13145 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13149 AC_SUBST(QT5_CFLAGS)
13152 AC_SUBST(QT5_GOBJECT_CFLAGS)
13153 AC_SUBST(QT5_GOBJECT_LIBS)
13154 AC_SUBST(QT5_HAVE_GOBJECT)
13155 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13157 dnl ===================================================================
13158 dnl QT6 Integration
13159 dnl ===================================================================
13165 QT6_PLATFORMS_SRCDIR=""
13166 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13167 \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13169 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13170 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13172 if test -n "$supports_multilib"; then
13173 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13176 qt6_test_include="QtWidgets/qapplication.h"
13177 if test "$_os" = "Emscripten"; then
13178 qt6_test_library="libQt6Widgets.a"
13180 qt6_test_library="libQt6Widgets.so"
13183 dnl Check for qmake6
13184 if test -n "$QT6DIR"; then
13185 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13187 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13189 if test "$QMAKE6" = "no"; then
13190 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13192 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13193 if test -z "$qmake6_test_ver"; then
13194 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13196 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13199 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13200 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13201 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13202 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13204 AC_MSG_CHECKING([for Qt6 headers])
13206 for inc_dir in $qt6_incdirs; do
13207 if test -r "$inc_dir/$qt6_test_include"; then
13208 qt6_incdir="$inc_dir"
13212 AC_MSG_RESULT([$qt6_incdir])
13213 if test "x$qt6_incdir" = "xno"; then
13214 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13216 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13217 AC_LANG_PUSH([C++])
13218 save_CPPFLAGS=$CPPFLAGS
13219 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13220 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13221 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13222 CPPFLAGS=$save_CPPFLAGS
13225 AC_MSG_CHECKING([for Qt6 libraries])
13227 for lib_dir in $qt6_libdirs; do
13228 if test -r "$lib_dir/$qt6_test_library"; then
13229 qt6_libdir="$lib_dir"
13233 AC_MSG_RESULT([$qt6_libdir])
13234 if test "x$qt6_libdir" = "xno"; then
13235 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13238 if test "$_os" = "Emscripten"; then
13239 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13240 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13242 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13243 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13247 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13248 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13249 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13250 if test "$_os" = "Emscripten"; then
13251 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13254 if test "$USING_X11" = TRUE; then
13255 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13256 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13257 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13259 AC_DEFINE(QT6_USING_X11)
13262 dnl Check for Meta Object Compiler
13264 for lib_dir in $qt6_libdirs; do
13265 if test -z "$qt6_libexec_dirs"; then
13266 qt6_libexec_dirs="$lib_dir/libexec"
13268 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13271 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])
13272 if test "$MOC6" = "no"; then
13273 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13274 the root of your Qt installation by exporting QT6DIR before running "configure".])
13276 moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13277 if test -z "$moc6_test_ver"; then
13278 AC_MSG_ERROR([Wrong moc for Qt6 found.])
13280 AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13283 AC_SUBST(QT6_CFLAGS)
13286 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13288 dnl ===================================================================
13289 dnl KF5 Integration
13290 dnl ===================================================================
13294 KF5_CONFIG="kf5-config"
13295 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13296 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13298 if test "$OS" = "HAIKU"; then
13299 haiku_arch="`echo $RTL_ARCH | tr X x`"
13300 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13301 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13304 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13305 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13306 if test -n "$supports_multilib"; then
13307 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13310 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13311 kf5_test_library="libKF5KIOFileWidgets.so"
13312 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13314 dnl kf5 KDE4 support compatibility installed
13315 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13316 if test "$KF5_CONFIG" != "no"; then
13317 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13318 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13321 dnl Check for KF5 headers
13322 AC_MSG_CHECKING([for KF5 headers])
13324 for kf5_check in $kf5_incdirs; do
13325 if test -r "$kf5_check/$kf5_test_include"; then
13326 kf5_incdir="$kf5_check/KF5"
13330 AC_MSG_RESULT([$kf5_incdir])
13331 if test "x$kf5_incdir" = "xno"; then
13332 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13335 dnl Check for KF5 libraries
13336 AC_MSG_CHECKING([for KF5 libraries])
13338 for kf5_check in $kf5_libdirs; do
13339 if test -r "$kf5_check/$kf5_test_library"; then
13340 kf5_libdir="$kf5_check"
13345 AC_MSG_RESULT([$kf5_libdir])
13346 if test "x$kf5_libdir" = "xno"; then
13347 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13350 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"
13351 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13352 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13354 if test "$USING_X11" = TRUE; then
13355 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13358 AC_LANG_PUSH([C++])
13359 save_CXXFLAGS=$CXXFLAGS
13360 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13361 AC_MSG_CHECKING([whether KDE is >= 5.0])
13362 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13363 #include <kcoreaddons_version.h>
13365 int main(int argc, char **argv) {
13366 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13369 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13370 CXXFLAGS=$save_CXXFLAGS
13373 AC_SUBST(KF5_CFLAGS)
13376 dnl ===================================================================
13377 dnl KF6 Integration
13378 dnl ===================================================================
13382 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13384 if test "$OS" = "HAIKU"; then
13385 haiku_arch="`echo $RTL_ARCH | tr X x`"
13386 kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13387 kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13390 kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13391 kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13392 if test -n "$supports_multilib"; then
13393 kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13396 kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13397 kf6_test_library="libKF6KIOFileWidgets.so"
13398 kf6_libdirs="$qt6_libdir $kf6_libdirs"
13400 dnl Check for KF6 headers
13401 AC_MSG_CHECKING([for KF6 headers])
13403 for kf6_check in $kf6_incdirs; do
13404 if test -r "$kf6_check/$kf6_test_include"; then
13405 kf6_incdir="$kf6_check/KF6"
13409 AC_MSG_RESULT([$kf6_incdir])
13410 if test "x$kf6_incdir" = "xno"; then
13411 AC_MSG_ERROR([KF6 headers not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13414 dnl Check for KF6 libraries
13415 AC_MSG_CHECKING([for KF6 libraries])
13417 for kf6_check in $kf6_libdirs; do
13418 if test -r "$kf6_check/$kf6_test_library"; then
13419 kf6_libdir="$kf6_check"
13424 AC_MSG_RESULT([$kf6_libdir])
13425 if test "x$kf6_libdir" = "xno"; then
13426 AC_MSG_ERROR([KF6 libraries not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13429 KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13430 KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13431 KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13433 AC_LANG_PUSH([C++])
13434 save_CXXFLAGS=$CXXFLAGS
13435 CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13436 dnl KF6 development version as of 2023-06 uses version number 5.240
13437 AC_MSG_CHECKING([whether KDE is >= 5.240])
13438 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13439 #include <kcoreaddons_version.h>
13441 int main(int argc, char **argv) {
13442 if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13445 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13446 CXXFLAGS=$save_CXXFLAGS
13449 AC_SUBST(KF6_CFLAGS)
13452 dnl ===================================================================
13453 dnl Test whether to include Evolution 2 support
13454 dnl ===================================================================
13455 AC_MSG_CHECKING([whether to enable evolution 2 support])
13456 if test "$enable_evolution2" = yes; then
13457 AC_MSG_RESULT([yes])
13458 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13459 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13460 FilterLibs "${GOBJECT_LIBS}"
13461 GOBJECT_LIBS="${filteredlibs}"
13462 ENABLE_EVOAB2="TRUE"
13464 AC_MSG_RESULT([no])
13466 AC_SUBST(ENABLE_EVOAB2)
13467 AC_SUBST(GOBJECT_CFLAGS)
13468 AC_SUBST(GOBJECT_LIBS)
13470 dnl ===================================================================
13471 dnl Test which themes to include
13472 dnl ===================================================================
13473 AC_MSG_CHECKING([which themes to include])
13474 # if none given use default subset of available themes
13475 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13476 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"
13480 if test "x$with_theme" != "xno"; then
13481 for theme in $with_theme; do
13483 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) real_theme="$theme" ;;
13484 default) real_theme=colibre ;;
13485 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13487 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13490 AC_MSG_RESULT([$WITH_THEMES])
13491 AC_SUBST([WITH_THEMES])
13492 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13493 for theme in $with_theme; do
13495 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13500 ###############################################################################
13501 # Extensions checking
13502 ###############################################################################
13503 AC_MSG_CHECKING([for extensions integration])
13504 if test "x$enable_extension_integration" != "xno"; then
13505 WITH_EXTENSION_INTEGRATION=TRUE
13506 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13507 AC_MSG_RESULT([yes, use integration])
13509 WITH_EXTENSION_INTEGRATION=
13510 AC_MSG_RESULT([no, do not integrate])
13512 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13514 dnl Should any extra extensions be included?
13515 dnl There are standalone tests for each of these below.
13516 WITH_EXTRA_EXTENSIONS=
13517 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13519 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13520 if test "x$with_java" != "xno"; then
13521 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13524 AC_MSG_CHECKING([whether to build opens___.ttf])
13525 if test "$enable_build_opensymbol" = "yes"; then
13526 AC_MSG_RESULT([yes])
13527 AC_PATH_PROG(FONTFORGE, fontforge)
13528 if test -z "$FONTFORGE"; then
13529 AC_MSG_ERROR([fontforge not installed])
13532 AC_MSG_RESULT([no])
13533 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13535 AC_SUBST(FONTFORGE)
13537 dnl ===================================================================
13538 dnl Test whether to include fonts
13539 dnl ===================================================================
13540 AC_MSG_CHECKING([whether to include third-party fonts])
13541 if test "$with_fonts" != "no"; then
13542 AC_MSG_RESULT([yes])
13544 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13545 AC_DEFINE(HAVE_MORE_FONTS)
13547 AC_MSG_RESULT([no])
13549 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13551 AC_SUBST(WITH_FONTS)
13554 dnl ===================================================================
13555 dnl Test whether to enable online update service
13556 dnl ===================================================================
13557 AC_MSG_CHECKING([whether to enable online update])
13558 ENABLE_ONLINE_UPDATE=
13559 ENABLE_ONLINE_UPDATE_MAR=
13561 if test "$enable_online_update" = ""; then
13562 AC_MSG_RESULT([no])
13564 if test "$enable_online_update" = "mar"; then
13565 AC_MSG_RESULT([yes - MAR-based online update])
13566 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13567 if test "$with_update_config" = ""; then
13568 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13570 UPDATE_CONFIG="$with_update_config"
13571 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13572 elif test "$enable_online_update" = "yes"; then
13573 AC_MSG_RESULT([yes])
13574 ENABLE_ONLINE_UPDATE="TRUE"
13576 AC_MSG_RESULT([no])
13579 AC_SUBST(ENABLE_ONLINE_UPDATE)
13580 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13581 AC_SUBST(UPDATE_CONFIG)
13584 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13585 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13586 if test "x$with_privacy_policy_url" = "xundefined"; then
13587 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13590 AC_SUBST(PRIVACY_POLICY_URL)
13591 dnl ===================================================================
13592 dnl Test whether we need bzip2
13593 dnl ===================================================================
13595 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13596 AC_MSG_CHECKING([whether to use system bzip2])
13597 if test "$with_system_bzip2" = yes; then
13599 AC_MSG_RESULT([yes])
13600 PKG_CHECK_MODULES(BZIP2, bzip2)
13601 FilterLibs "${BZIP2_LIBS}"
13602 BZIP2_LIBS="${filteredlibs}"
13604 AC_MSG_RESULT([no])
13605 BUILD_TYPE="$BUILD_TYPE BZIP2"
13608 AC_SUBST(SYSTEM_BZIP2)
13609 AC_SUBST(BZIP2_CFLAGS)
13610 AC_SUBST(BZIP2_LIBS)
13612 dnl ===================================================================
13613 dnl Test whether to enable extension update
13614 dnl ===================================================================
13615 AC_MSG_CHECKING([whether to enable extension update])
13616 ENABLE_EXTENSION_UPDATE=
13617 if test "x$enable_extension_update" = "xno"; then
13618 AC_MSG_RESULT([no])
13620 AC_MSG_RESULT([yes])
13621 ENABLE_EXTENSION_UPDATE="TRUE"
13622 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13623 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13625 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13628 dnl ===================================================================
13629 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13630 dnl ===================================================================
13631 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13632 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13633 AC_MSG_RESULT([no])
13636 AC_MSG_RESULT([yes])
13637 ENABLE_SILENT_MSI=TRUE
13638 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13640 AC_SUBST(ENABLE_SILENT_MSI)
13642 dnl ===================================================================
13643 dnl Check for WiX tools.
13644 dnl ===================================================================
13645 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13646 AC_MSG_RESULT([no])
13649 AC_MSG_RESULT([yes])
13650 if ! which candle >/dev/null 2>&1; then
13651 AC_MSG_ERROR([WiX requested but WiX toolset not found.])
13655 AC_SUBST(ENABLE_SILENT_MSI)
13657 AC_MSG_CHECKING([whether and how to use Xinerama])
13658 if test "$USING_X11" = TRUE; then
13659 if test "$x_libraries" = "default_x_libraries"; then
13660 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13661 if test "x$XINERAMALIB" = x; then
13662 XINERAMALIB="/usr/lib"
13665 XINERAMALIB="$x_libraries"
13667 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13668 # we have both versions, let the user decide but use the dynamic one
13671 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13672 XINERAMA_LINK=dynamic
13674 XINERAMA_LINK=static
13676 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13677 # we have only the dynamic version
13679 XINERAMA_LINK=dynamic
13680 elif test -e "$XINERAMALIB/libXinerama.a"; then
13682 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13684 XINERAMA_LINK=static
13694 if test "$USE_XINERAMA" = "TRUE"; then
13695 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13696 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13697 [AC_MSG_ERROR(Xinerama header not found.)], [])
13698 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13699 if test "x$XEXTLIB" = x; then
13700 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13702 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13703 if test "$_os" = "FreeBSD"; then
13704 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13706 if test "$_os" = "Linux"; then
13707 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13709 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13710 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13712 AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13717 AC_MSG_RESULT([no])
13719 AC_SUBST(XINERAMA_LINK)
13721 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13722 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13723 enable_cairo_rgba=yes
13725 if test "$enable_cairo_rgba" = yes; then
13726 AC_DEFINE(ENABLE_CAIRO_RGBA)
13727 ENABLE_CAIRO_RGBA=TRUE
13728 AC_MSG_RESULT([yes])
13731 AC_MSG_RESULT([no])
13733 AC_SUBST(ENABLE_CAIRO_RGBA)
13735 dnl ===================================================================
13736 dnl Test whether to build cairo or rely on the system version
13737 dnl ===================================================================
13739 if test "$test_cairo" = "yes"; then
13740 AC_MSG_CHECKING([whether to use the system cairo])
13742 : ${with_system_cairo:=$with_system_libs}
13743 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13745 AC_MSG_RESULT([yes])
13747 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13748 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13749 FilterLibs "${CAIRO_LIBS}"
13750 CAIRO_LIBS="${filteredlibs}"
13752 if test "$test_xrender" = "yes"; then
13753 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13755 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13756 #ifdef PictStandardA8
13760 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13765 AC_MSG_RESULT([no])
13766 BUILD_TYPE="$BUILD_TYPE CAIRO"
13769 if test "$enable_cairo_canvas" != no; then
13770 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13771 ENABLE_CAIRO_CANVAS=TRUE
13775 AC_SUBST(CAIRO_CFLAGS)
13776 AC_SUBST(CAIRO_LIBS)
13777 AC_SUBST(ENABLE_CAIRO_CANVAS)
13778 AC_SUBST(SYSTEM_CAIRO)
13780 dnl ===================================================================
13781 dnl Test whether to use avahi
13782 dnl ===================================================================
13783 if test "$_os" = "WINNT"; then
13784 # Windows uses bundled mDNSResponder
13785 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13786 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13787 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13788 [ENABLE_AVAHI="TRUE"])
13789 AC_DEFINE(HAVE_FEATURE_AVAHI)
13790 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13791 FilterLibs "${AVAHI_LIBS}"
13792 AVAHI_LIBS="${filteredlibs}"
13795 AC_SUBST(ENABLE_AVAHI)
13796 AC_SUBST(AVAHI_CFLAGS)
13797 AC_SUBST(AVAHI_LIBS)
13799 dnl ===================================================================
13800 dnl Test whether to use liblangtag
13801 dnl ===================================================================
13803 AC_MSG_CHECKING([whether to use system liblangtag])
13804 if test "$with_system_liblangtag" = yes; then
13805 SYSTEM_LIBLANGTAG=TRUE
13806 AC_MSG_RESULT([yes])
13807 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13808 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13809 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13810 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13811 FilterLibs "${LIBLANGTAG_LIBS}"
13812 LIBLANGTAG_LIBS="${filteredlibs}"
13815 AC_MSG_RESULT([no])
13816 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13817 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13818 if test "$COM" = "MSC"; then
13819 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13821 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13824 AC_SUBST(SYSTEM_LIBLANGTAG)
13825 AC_SUBST(LIBLANGTAG_CFLAGS)
13826 AC_SUBST(LIBLANGTAG_LIBS)
13828 dnl ===================================================================
13829 dnl Test whether to build libpng or rely on the system version
13830 dnl ===================================================================
13832 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13833 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13834 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13836 dnl ===================================================================
13837 dnl Test whether to build libtiff or rely on the system version
13838 dnl ===================================================================
13840 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13842 dnl ===================================================================
13843 dnl Test whether to build libwebp or rely on the system version
13844 dnl ===================================================================
13846 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13848 dnl ===================================================================
13849 dnl Check for runtime JVM search path
13850 dnl ===================================================================
13851 if test "$ENABLE_JAVA" != ""; then
13852 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13853 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13854 AC_MSG_RESULT([yes])
13855 if ! test -d "$with_jvm_path"; then
13856 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13858 if ! test -d "$with_jvm_path"jvm; then
13859 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13861 JVM_ONE_PATH_CHECK="$with_jvm_path"
13862 AC_SUBST(JVM_ONE_PATH_CHECK)
13864 AC_MSG_RESULT([no])
13868 dnl ===================================================================
13869 dnl Test for the presence of Ant and that it works
13870 dnl ===================================================================
13872 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13873 # breaks filename decoding, so for the ant section, set it to LANG
13875 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13876 ANT_HOME=; export ANT_HOME
13877 WITH_ANT_HOME=; export WITH_ANT_HOME
13878 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13879 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13880 if test "$_os" = "WINNT"; then
13881 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13883 with_ant_home="$LODE_HOME/opt/ant"
13885 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13886 with_ant_home="$LODE_HOME/opt/ant"
13889 if test -z "$with_ant_home"; then
13890 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13892 if test "$_os" = "WINNT"; then
13893 # AC_PATH_PROGS needs unix path
13894 with_ant_home=`cygpath -u "$with_ant_home"`
13896 AbsolutePath "$with_ant_home"
13897 with_ant_home=$absolute_path
13898 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13899 WITH_ANT_HOME=$with_ant_home
13900 ANT_HOME=$with_ant_home
13903 if test -z "$ANT"; then
13904 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13906 # resolve relative or absolute symlink
13907 while test -h "$ANT"; do
13909 a_basename=`basename "$ANT"`
13910 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13911 cd "`dirname "$ANT"`"
13912 cd "`dirname "$a_script"`"
13913 ANT="`pwd`"/"`basename "$a_script"`"
13917 AC_MSG_CHECKING([if $ANT works])
13918 mkdir -p conftest.dir
13921 cat > conftest.java << EOF
13922 public class conftest {
13923 int testmethod(int a, int b) {
13929 cat > conftest.xml << EOF
13930 <project name="conftest" default="conftest">
13931 <target name="conftest">
13932 <javac srcdir="." includes="conftest.java">
13938 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13939 if test $? = 0 -a -f ./conftest.class; then
13940 AC_MSG_RESULT([Ant works])
13941 if test -z "$WITH_ANT_HOME"; then
13942 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13943 if test -z "$ANT_HOME"; then
13944 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13947 ANT_HOME="$WITH_ANT_HOME"
13950 echo "configure: Ant test failed" >&5
13951 cat conftest.java >&5
13952 cat conftest.xml >&5
13953 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13956 rm -fr conftest.dir
13958 if test -z "$ANT_HOME"; then
13959 ANT_HOME="NO_ANT_HOME"
13961 PathFormat "$ANT_HOME"
13962 ANT_HOME="$formatted_path"
13964 ANT="$formatted_path"
13967 dnl Checking for ant.jar
13968 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13969 AC_MSG_CHECKING([Ant lib directory])
13970 if test -f $ANT_HOME/lib/ant.jar; then
13971 ANT_LIB="$ANT_HOME/lib"
13973 if test -f $ANT_HOME/ant.jar; then
13974 ANT_LIB="$ANT_HOME"
13976 if test -f /usr/share/java/ant.jar; then
13977 ANT_LIB=/usr/share/java
13979 if test -f /usr/share/ant-core/lib/ant.jar; then
13980 ANT_LIB=/usr/share/ant-core/lib
13982 if test -f $ANT_HOME/lib/ant/ant.jar; then
13983 ANT_LIB="$ANT_HOME/lib/ant"
13985 if test -f /usr/share/lib/ant/ant.jar; then
13986 ANT_LIB=/usr/share/lib/ant
13988 AC_MSG_ERROR([Ant libraries not found!])
13995 PathFormat "$ANT_LIB"
13996 ANT_LIB="$formatted_path"
13997 AC_MSG_RESULT([Ant lib directory found.])
14001 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14003 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14004 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14005 ant_version_major=`echo $ant_version | cut -d. -f1`
14006 ant_version_minor=`echo $ant_version | cut -d. -f2`
14007 echo "configure: ant_version $ant_version " >&5
14008 echo "configure: ant_version_major $ant_version_major " >&5
14009 echo "configure: ant_version_minor $ant_version_minor " >&5
14010 if test "$ant_version_major" -ge "2"; then
14011 AC_MSG_RESULT([yes, $ant_version])
14012 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14013 AC_MSG_RESULT([yes, $ant_version])
14015 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14018 rm -f conftest* core core.* *.core
14026 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14027 AC_MSG_CHECKING([for JUnit 4])
14028 if test "$with_junit" = "yes"; then
14029 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14030 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14031 elif test -e /usr/share/java/junit4.jar; then
14032 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14034 if test -e /usr/share/lib/java/junit.jar; then
14035 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14037 OOO_JUNIT_JAR=/usr/share/java/junit.jar
14041 OOO_JUNIT_JAR=$with_junit
14043 if test "$_os" = "WINNT"; then
14044 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14046 printf 'import org.junit.Before;' > conftest.java
14047 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14048 AC_MSG_RESULT([$OOO_JUNIT_JAR])
14051 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14052 specify its pathname via --with-junit=..., or disable it via --without-junit])
14054 rm -f conftest.class conftest.java
14055 if test $OOO_JUNIT_JAR != ""; then
14056 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14059 AC_MSG_CHECKING([for included Hamcrest])
14060 printf 'import org.hamcrest.BaseDescription;' > conftest.java
14061 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14062 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14064 AC_MSG_RESULT([Not included])
14065 AC_MSG_CHECKING([for standalone hamcrest jar.])
14066 if test "$with_hamcrest" = "yes"; then
14067 if test -e /usr/share/lib/java/hamcrest.jar; then
14068 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14069 elif test -e /usr/share/java/hamcrest/core.jar; then
14070 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14071 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14072 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14074 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14077 HAMCREST_JAR=$with_hamcrest
14079 if test "$_os" = "WINNT"; then
14080 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14082 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14083 AC_MSG_RESULT([$HAMCREST_JAR])
14085 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),
14086 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14089 rm -f conftest.class conftest.java
14091 AC_SUBST(OOO_JUNIT_JAR)
14092 AC_SUBST(HAMCREST_JAR)
14093 # set back LC_ALL to C after the java related tests...
14099 # check for wget and curl
14104 if test "$enable_fetch_external" != "no"; then
14106 CURL=`which curl 2>/dev/null`
14108 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14110 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14111 if test $? -eq 0; then
14117 if test -z "$WGET" -a -z "$CURL"; then
14118 AC_MSG_ERROR([neither wget nor curl found!])
14127 # check for sha256sum
14131 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14132 eval "$i -a 256 --version" > /dev/null 2>&1
14134 if test $ret -eq 0; then
14135 SHA256SUM="$i -a 256"
14140 if test -z "$SHA256SUM"; then
14141 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14142 eval "$i --version" > /dev/null 2>&1
14144 if test $ret -eq 0; then
14151 if test -z "$SHA256SUM"; then
14152 AC_MSG_ERROR([no sha256sum found!])
14155 AC_SUBST(SHA256SUM)
14157 dnl ===================================================================
14158 dnl Dealing with l10n options
14159 dnl ===================================================================
14160 AC_MSG_CHECKING([which languages to be built])
14161 # get list of all languages
14162 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14163 # the sed command does the following:
14164 # + if a line ends with a backslash, append the next line to it
14165 # + adds " on the beginning of the value (after =)
14166 # + adds " at the end of the value
14167 # + removes en-US; we want to put it on the beginning
14168 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14169 [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)]
14170 ALL_LANGS="en-US $completelangiso"
14171 # check the configured localizations
14172 WITH_LANG="$with_lang"
14174 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14175 # (Norwegian is "nb" and "nn".)
14176 if test "$WITH_LANG" = "no"; then
14180 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14181 AC_MSG_RESULT([en-US])
14183 AC_MSG_RESULT([$WITH_LANG])
14184 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14185 if test -z "$MSGFMT"; then
14186 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14187 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14188 elif test -x "/opt/lo/bin/msgfmt"; then
14189 MSGFMT="/opt/lo/bin/msgfmt"
14191 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14192 if test -z "$MSGFMT"; then
14193 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14197 if test -z "$MSGUNIQ"; then
14198 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14199 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14200 elif test -x "/opt/lo/bin/msguniq"; then
14201 MSGUNIQ="/opt/lo/bin/msguniq"
14203 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14204 if test -z "$MSGUNIQ"; then
14205 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14212 # check that the list is valid
14213 for lang in $WITH_LANG; do
14214 test "$lang" = "ALL" && continue
14215 # need to check for the exact string, so add space before and after the list of all languages
14216 for vl in $ALL_LANGS; do
14217 if test "$vl" = "$lang"; then
14221 if test "$vl" != "$lang"; then
14222 # if you're reading this - you prolly quoted your languages remove the quotes ...
14223 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14226 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14227 echo $WITH_LANG | grep -q en-US
14228 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14230 # list with substituted ALL
14231 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14232 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14233 test "$WITH_LANG" = "en-US" && WITH_LANG=
14234 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14235 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14236 ALL_LANGS=`echo $ALL_LANGS qtz`
14238 AC_SUBST(ALL_LANGS)
14239 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14240 AC_SUBST(WITH_LANG)
14241 AC_SUBST(WITH_LANG_LIST)
14242 AC_SUBST(GIT_NEEDED_SUBMODULES)
14244 WITH_POOR_HELP_LOCALIZATIONS=
14245 if test -d "$SRC_ROOT/translations/source"; then
14246 for l in `ls -1 $SRC_ROOT/translations/source`; do
14247 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14248 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14252 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14254 if test -n "$with_locales" -a "$with_locales" != ALL; then
14255 WITH_LOCALES="$with_locales"
14257 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14258 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14259 # config_host/config_locales.h.in
14260 for locale in $WITH_LOCALES; do
14263 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14267 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14270 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14275 AC_DEFINE(WITH_LOCALE_ALL)
14277 AC_SUBST(WITH_LOCALES)
14279 dnl git submodule update --reference
14280 dnl ===================================================================
14281 if test -n "${GIT_REFERENCE_SRC}"; then
14282 for repo in ${GIT_NEEDED_SUBMODULES}; do
14283 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14284 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14288 AC_SUBST(GIT_REFERENCE_SRC)
14290 dnl git submodules linked dirs
14291 dnl ===================================================================
14292 if test -n "${GIT_LINK_SRC}"; then
14293 for repo in ${GIT_NEEDED_SUBMODULES}; do
14294 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14295 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14299 AC_SUBST(GIT_LINK_SRC)
14302 dnl ===================================================================
14303 AC_MSG_CHECKING([for alternative branding images directory])
14304 # initialize mapped arrays
14305 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14306 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14308 if test -z "$with_branding" -o "$with_branding" = "no"; then
14309 AC_MSG_RESULT([none])
14310 DEFAULT_BRAND_IMAGES="$brand_files"
14312 if ! test -d $with_branding ; then
14313 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14315 AC_MSG_RESULT([$with_branding])
14316 CUSTOM_BRAND_DIR="$with_branding"
14317 for lfile in $brand_files
14319 if ! test -f $with_branding/$lfile ; then
14320 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14321 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14323 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14326 check_for_progress="yes"
14329 AC_SUBST([BRAND_INTRO_IMAGES])
14330 AC_SUBST([CUSTOM_BRAND_DIR])
14331 AC_SUBST([CUSTOM_BRAND_IMAGES])
14332 AC_SUBST([DEFAULT_BRAND_IMAGES])
14335 AC_MSG_CHECKING([for 'intro' progress settings])
14339 PROGRESSFRAMECOLOR=
14341 PROGRESSTEXTBASELINE=
14343 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14344 source "$with_branding/progress.conf"
14345 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14347 AC_MSG_RESULT([none])
14350 AC_SUBST(PROGRESSBARCOLOR)
14351 AC_SUBST(PROGRESSSIZE)
14352 AC_SUBST(PROGRESSPOSITION)
14353 AC_SUBST(PROGRESSFRAMECOLOR)
14354 AC_SUBST(PROGRESSTEXTCOLOR)
14355 AC_SUBST(PROGRESSTEXTBASELINE)
14358 dnl ===================================================================
14359 dnl Custom build version
14360 dnl ===================================================================
14361 AC_MSG_CHECKING([for extra build ID])
14362 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14363 EXTRA_BUILDID="$with_extra_buildid"
14365 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14366 if test -n "$EXTRA_BUILDID" ; then
14367 AC_MSG_RESULT([$EXTRA_BUILDID])
14369 AC_MSG_RESULT([not set])
14371 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14374 AC_MSG_CHECKING([for vendor])
14375 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14376 OOO_VENDOR="$USERNAME"
14378 if test -z "$OOO_VENDOR"; then
14382 if test -z "$OOO_VENDOR"; then
14383 OOO_VENDOR="`id -u -n`"
14386 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14388 OOO_VENDOR="$with_vendor"
14389 AC_MSG_RESULT([$OOO_VENDOR])
14391 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14392 AC_SUBST(OOO_VENDOR)
14394 if test "$_os" = "Android" ; then
14395 ANDROID_PACKAGE_NAME=
14396 AC_MSG_CHECKING([for Android package name])
14397 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14398 if test -n "$ENABLE_DEBUG"; then
14399 # Default to the package name that makes ndk-gdb happy.
14400 ANDROID_PACKAGE_NAME="org.libreoffice"
14402 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14405 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14407 ANDROID_PACKAGE_NAME="$with_android_package_name"
14408 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14410 AC_SUBST(ANDROID_PACKAGE_NAME)
14413 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14414 if test "$with_compat_oowrappers" = "yes"; then
14415 WITH_COMPAT_OOWRAPPERS=TRUE
14418 WITH_COMPAT_OOWRAPPERS=
14421 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14423 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14424 AC_MSG_CHECKING([for install dirname])
14425 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14426 INSTALLDIRNAME="$with_install_dirname"
14428 AC_MSG_RESULT([$INSTALLDIRNAME])
14429 AC_SUBST(INSTALLDIRNAME)
14431 AC_MSG_CHECKING([for prefix])
14432 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14433 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14434 PREFIXDIR="$prefix"
14435 AC_MSG_RESULT([$PREFIXDIR])
14436 AC_SUBST(PREFIXDIR)
14438 LIBDIR=[$(eval echo $(eval echo $libdir))]
14441 DATADIR=[$(eval echo $(eval echo $datadir))]
14444 MANDIR=[$(eval echo $(eval echo $mandir))]
14447 DOCDIR=[$(eval echo $(eval echo $docdir))]
14450 BINDIR=[$(eval echo $(eval echo $bindir))]
14453 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14454 AC_SUBST(INSTALLDIR)
14456 TESTINSTALLDIR="${BUILDDIR}/test-install"
14457 AC_SUBST(TESTINSTALLDIR)
14460 # ===================================================================
14461 # OAuth2 id and secrets
14462 # ===================================================================
14464 AC_MSG_CHECKING([for Google Drive client id and secret])
14465 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14466 AC_MSG_RESULT([not set])
14467 GDRIVE_CLIENT_ID="\"\""
14468 GDRIVE_CLIENT_SECRET="\"\""
14470 AC_MSG_RESULT([set])
14471 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14472 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14474 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14475 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14477 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14478 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14479 AC_MSG_RESULT([not set])
14480 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14481 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14483 AC_MSG_RESULT([set])
14484 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14485 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14487 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14488 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14490 AC_MSG_CHECKING([for OneDrive client id and secret])
14491 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14492 AC_MSG_RESULT([not set])
14493 ONEDRIVE_CLIENT_ID="\"\""
14494 ONEDRIVE_CLIENT_SECRET="\"\""
14496 AC_MSG_RESULT([set])
14497 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14498 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14500 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14501 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14504 dnl ===================================================================
14505 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14506 dnl --enable-dependency-tracking configure option
14507 dnl ===================================================================
14508 AC_MSG_CHECKING([whether to enable dependency tracking])
14509 if test "$enable_dependency_tracking" = "no"; then
14511 AC_MSG_RESULT([no])
14513 AC_MSG_RESULT([yes])
14517 dnl ===================================================================
14518 dnl Number of CPUs to use during the build
14519 dnl ===================================================================
14520 AC_MSG_CHECKING([for number of processors to use])
14521 # plain --with-parallelism is just the default
14522 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14523 if test "$with_parallelism" = "no"; then
14526 PARALLELISM=$with_parallelism
14529 if test "$enable_icecream" = "yes"; then
14534 Darwin|FreeBSD|NetBSD|OpenBSD)
14535 PARALLELISM=`sysctl -n hw.ncpu`
14539 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14541 # what else than above does profit here *and* has /proc?
14543 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14547 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14548 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14552 if test $PARALLELISM -eq 0; then
14553 AC_MSG_RESULT([explicit make -j option needed])
14555 AC_MSG_RESULT([$PARALLELISM])
14557 AC_SUBST(PARALLELISM)
14560 # Set up ILIB for MSVC build
14563 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14565 if test -n "$JAVA_HOME"; then
14566 ILIB="$ILIB;$JAVA_HOME/lib"
14569 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14570 ILIB="$ILIB;$formatted_path"
14571 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14572 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14573 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14574 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14575 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14576 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14578 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14579 ucrtlibpath_formatted=$formatted_path
14580 ILIB="$ILIB;$ucrtlibpath_formatted"
14581 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14582 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14583 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14584 ILIB="$ILIB;$formatted_path"
14586 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14587 ILIB="$ILIB;$formatted_path"
14590 if test "$cross_compiling" != "yes"; then
14591 ILIB_FOR_BUILD="$ILIB"
14595 AC_SUBST(ILIB_FOR_BUILD)
14597 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14598 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14599 dnl from consteval constructor initializing const variable",
14600 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14601 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14602 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14603 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14604 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14605 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14606 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14607 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14608 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14609 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14610 AC_LANG_PUSH([C++])
14612 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14613 CXX="env LIB=$ILIB $CXX"
14615 save_CXXFLAGS=$CXXFLAGS
14616 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14617 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14619 consteval S() { i = 1; }
14624 struct S1 { consteval S1(int) {} };
14639 struct S4 { consteval S4() = default; };
14640 void f4(bool b) { b ? S4() : S4(); }
14643 consteval S5() { c = 0; }
14644 char * f() { return &c; }
14650 auto s5 = S5().f();
14652 return (s.i == 1) ? 0 : 1;
14654 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14655 AC_MSG_RESULT([yes])
14656 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14658 CXXFLAGS=$save_CXXFLAGS
14661 # ===================================================================
14662 # Creating bigger shared library to link against
14663 # ===================================================================
14664 AC_MSG_CHECKING([whether to create huge library])
14667 if test $_os = iOS -o $_os = Android; then
14668 # Never any point in mergelibs for these as we build just static
14669 # libraries anyway...
14670 enable_mergelibs=no
14673 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14674 if test $_os != Linux -a $_os != WINNT; then
14675 add_warning "--enable-mergelibs is not tested for this platform"
14678 AC_MSG_RESULT([yes])
14679 AC_DEFINE(ENABLE_MERGELIBS)
14681 AC_MSG_RESULT([no])
14683 AC_SUBST([MERGELIBS])
14685 dnl ===================================================================
14686 dnl icerun is a wrapper that stops us spawning tens of processes
14687 dnl locally - for tools that can't be executed on the compile cluster
14688 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14689 dnl ===================================================================
14690 AC_MSG_CHECKING([whether to use icerun wrapper])
14692 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14693 ICECREAM_RUN=icerun
14694 AC_MSG_RESULT([yes])
14696 AC_MSG_RESULT([no])
14698 AC_SUBST(ICECREAM_RUN)
14700 dnl ===================================================================
14701 dnl Setup the ICECC_VERSION for the build the same way it was set for
14702 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14703 dnl ===================================================================
14704 x_ICECC_VERSION=[\#]
14705 if test -n "$ICECC_VERSION" ; then
14708 AC_SUBST(x_ICECC_VERSION)
14709 AC_SUBST(ICECC_VERSION)
14711 dnl ===================================================================
14713 AC_MSG_CHECKING([MPL subset])
14716 if test "$enable_mpl_subset" = "yes"; then
14720 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14722 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14725 if test "$warn_report" = "true"; then
14726 mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14728 if test "x$enable_postgresql_sdbc" != "xno"; then
14729 mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14731 if test "$enable_lotuswordpro" = "yes"; then
14732 mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14734 if test -n "$ENABLE_POPPLER"; then
14735 if test "x$SYSTEM_POPPLER" = "x"; then
14736 mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler or use system library."
14739 # cf. m4/libo_check_extension.m4
14740 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14741 mpl_error_string="$mpl_error_string$newline Need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'."
14744 for theme in $WITH_THEMES; do
14746 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14747 denied_themes="$denied_themes $theme" ;;
14751 if test "x$denied_themes" != "x"; then
14752 mpl_error_string="$mpl_error_string$newline Need to disable icon themes from '$WITH_THEMES': $denied_themes present, use --with-theme=colibre."
14755 ENABLE_OPENGL_TRANSITIONS=
14757 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14758 mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14761 if test "x$mpl_error_string" != "x"; then
14762 AC_MSG_ERROR([$mpl_error_string])
14766 AC_DEFINE(MPL_HAVE_SUBSET)
14767 AC_MSG_RESULT([only])
14769 AC_MSG_RESULT([no restrictions])
14771 AC_SUBST(MPL_SUBSET)
14773 dnl ===================================================================
14775 AC_MSG_CHECKING([formula logger])
14776 ENABLE_FORMULA_LOGGER=
14778 if test "x$enable_formula_logger" = "xyes"; then
14779 AC_MSG_RESULT([yes])
14780 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14781 ENABLE_FORMULA_LOGGER=TRUE
14782 elif test -n "$ENABLE_DBGUTIL" ; then
14783 AC_MSG_RESULT([yes])
14784 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14785 ENABLE_FORMULA_LOGGER=TRUE
14787 AC_MSG_RESULT([no])
14790 AC_SUBST(ENABLE_FORMULA_LOGGER)
14792 dnl ===================================================================
14793 dnl Checking for active Antivirus software.
14794 dnl ===================================================================
14796 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14797 AC_MSG_CHECKING([for active Antivirus software])
14798 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14799 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14800 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14801 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14802 AC_MSG_RESULT([found])
14803 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14804 echo $EICAR_STRING > $SRC_ROOT/eicar
14805 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14807 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14808 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14810 echo $EICAR_STRING > $BUILDDIR/eicar
14811 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14813 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14814 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14816 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"
14818 AC_MSG_RESULT([not found])
14821 AC_MSG_RESULT([n/a])
14825 dnl ===================================================================
14827 AC_MSG_CHECKING([for coredumpctl support])
14828 if test -z "$with_coredumpctl" && test $_os != Linux; then
14829 with_coredumpctl=no
14831 if test "$with_coredumpctl" = no; then
14834 AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14835 AC_PATH_PROG(JQ, jq)
14836 AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14837 AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14838 if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14839 || test -z "$SYSTEMD_RUN"
14841 if test -z "$with_coredumpctl"; then
14844 if test -z "$COREDUMPCTL"; then
14845 AC_MSG_ERROR([coredumpctl not found])
14847 if test -z "$JQ"; then
14848 AC_MSG_ERROR([jq not found])
14850 if test -z "$SYSTEMD_ESCAPE"; then
14851 AC_MSG_ERROR([systemd-escape not found])
14853 if test -z "$SYSTEMD_RUN"; then
14854 AC_MSG_ERROR([systemd-run not found])
14858 WITH_COREDUMPCTL=TRUE
14861 if test -z "$WITH_COREDUMPCTL"; then
14862 AC_MSG_RESULT([no])
14864 AC_MSG_RESULT([yes])
14866 AC_SUBST(COREDUMPCTL)
14868 AC_SUBST(SYSTEMD_ESCAPE)
14869 AC_SUBST(SYSTEMD_RUN)
14870 AC_SUBST(WITH_COREDUMPCTL)
14872 dnl ===================================================================
14873 dnl Setting up the environment.
14874 dnl ===================================================================
14875 AC_MSG_NOTICE([setting up the build environment variables...])
14879 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14880 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14881 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14882 ATL_INCLUDE="$COMPATH/atlmfc/include"
14883 elif test -d "$COMPATH/atlmfc/lib"; then
14884 ATL_LIB="$COMPATH/atlmfc/lib"
14885 ATL_INCLUDE="$COMPATH/atlmfc/include"
14887 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14888 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14890 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14891 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14892 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14895 if test "$build_os" = "cygwin"; then
14896 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14897 PathFormat "/usr/bin/find.exe"
14898 FIND="$formatted_path"
14899 PathFormat "/usr/bin/sort.exe"
14900 SORT="$formatted_path"
14901 PathFormat "/usr/bin/grep.exe"
14902 WIN_GREP="$formatted_path"
14903 PathFormat "/usr/bin/ls.exe"
14904 WIN_LS="$formatted_path"
14905 PathFormat "/usr/bin/touch.exe"
14906 WIN_TOUCH="$formatted_path"
14912 AC_SUBST(ATL_INCLUDE)
14918 AC_SUBST(WIN_TOUCH)
14920 AC_SUBST(BUILD_TYPE)
14925 PERL="$formatted_path"
14928 if test -n "$TMPDIR"; then
14929 TEMP_DIRECTORY="$TMPDIR"
14931 TEMP_DIRECTORY="/tmp"
14933 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
14934 if test "$build_os" = "cygwin"; then
14935 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14936 CYGWIN_BASH=`cygpath -m /usr/bin/bash`
14938 AC_SUBST(TEMP_DIRECTORY)
14939 AC_SUBST(CYGWIN_BASH)
14941 # setup the PATH for the environment
14942 if test -n "$LO_PATH_FOR_BUILD"; then
14943 LO_PATH="$LO_PATH_FOR_BUILD"
14946 pathmunge "$MSVC_HOST_PATH" "before"
14954 dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14955 if test "$ENABLE_JAVA" != ""; then
14956 pathmunge "$JAVA_HOME/bin" "after"
14961 # Win32 make needs native paths
14962 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14963 LO_PATH=`cygpath -p -m "$PATH"`
14965 if test "$WIN_BUILD_ARCH" = "x64"; then
14966 # needed for msi packaging
14967 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14969 if test "$WIN_BUILD_ARCH" = "arm64"; then
14970 # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
14971 # the x86 ones probably would work just as well...
14972 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
14974 # .NET 4.6 and higher don't have bin directory
14975 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14976 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14978 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14979 pathmunge "$CSC_PATH" "before"
14980 pathmunge "$MIDL_PATH" "before"
14981 pathmunge "$AL_PATH" "before"
14982 pathmunge "$MSVC_MULTI_PATH" "before"
14983 pathmunge "$MSVC_BUILD_PATH" "before"
14984 if test -n "$MSBUILD_PATH" ; then
14985 pathmunge "$MSBUILD_PATH" "before"
14987 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14988 if test "$ENABLE_JAVA" != ""; then
14989 if test -d "$JAVA_HOME/jre/bin/client"; then
14990 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14992 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14993 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14995 pathmunge "$JAVA_HOME/bin" "before"
14997 pathmunge "$MSVC_HOST_PATH" "before"
15001 pathmunge "/usr/css/bin" "before"
15002 if test "$ENABLE_JAVA" != ""; then
15003 pathmunge "$JAVA_HOME/bin" "after"
15011 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15012 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15013 x_LO_ELFCHECK_ALLOWLIST=
15015 x_LO_ELFCHECK_ALLOWLIST=[\#]
15017 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15018 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15022 # Generate a configuration sha256 we can use for deps
15023 if test -f config_host.mk; then
15024 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15026 if test -f config_host_lang.mk; then
15027 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15030 CFLAGS=$my_original_CFLAGS
15031 CXXFLAGS=$my_original_CXXFLAGS
15032 CPPFLAGS=$my_original_CPPFLAGS
15034 AC_CONFIG_LINKS([include:include])
15036 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15037 # BUILD platform configuration] - otherwise breaks cross building
15038 AC_CONFIG_FILES([config_host.mk
15039 config_host_lang.mk
15042 bin/bffvalidator.sh
15043 bin/odfvalidator.sh
15045 hardened_runtime.xcent
15046 instsetoo_native/util/openoffice.lst
15047 sysui/desktop/macosx/Info.plist
15048 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15050 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15051 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15052 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15053 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15054 AC_CONFIG_HEADERS([config_host/config_clang.h])
15055 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15056 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15057 AC_CONFIG_HEADERS([config_host/config_eot.h])
15058 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15059 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15060 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15061 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15062 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15063 AC_CONFIG_HEADERS([config_host/config_features.h])
15064 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15065 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15066 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15067 AC_CONFIG_HEADERS([config_host/config_folders.h])
15068 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15069 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15070 AC_CONFIG_HEADERS([config_host/config_gio.h])
15071 AC_CONFIG_HEADERS([config_host/config_global.h])
15072 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15073 AC_CONFIG_HEADERS([config_host/config_java.h])
15074 AC_CONFIG_HEADERS([config_host/config_langs.h])
15075 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15076 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15077 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15078 AC_CONFIG_HEADERS([config_host/config_locales.h])
15079 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15080 AC_CONFIG_HEADERS([config_host/config_oox.h])
15081 AC_CONFIG_HEADERS([config_host/config_options.h])
15082 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15083 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15084 AC_CONFIG_HEADERS([config_host/config_skia.h])
15085 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15086 AC_CONFIG_HEADERS([config_host/config_validation.h])
15087 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15088 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15089 AC_CONFIG_HEADERS([config_host/config_version.h])
15090 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15091 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15092 AC_CONFIG_HEADERS([config_host/config_python.h])
15093 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15094 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15095 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15098 if test "$CROSS_COMPILING" = TRUE; then
15099 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15102 # touch the config timestamp file
15103 if test ! -f config_host.mk.stamp; then
15104 echo > config_host.mk.stamp
15105 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15106 echo "Host Configuration unchanged - avoiding scp2 stamp update"
15108 echo > config_host.mk.stamp
15111 # touch the config lang timestamp file
15112 if test ! -f config_host_lang.mk.stamp; then
15113 echo > config_host_lang.mk.stamp
15114 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15115 echo "Language Configuration unchanged - avoiding scp2 stamp update"
15117 echo > config_host_lang.mk.stamp
15121 if test \( "$STALE_MAKE" = "TRUE" \) \
15122 -a "$build_os" = "cygwin"; then
15125 ****************************************************************************
15127 Your make version is known to be horribly slow, and hard to debug
15128 problems with. To get a reasonably functional make please do:
15130 to install a pre-compiled binary make for Win32
15132 mkdir -p /opt/lo/bin
15134 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15135 cp make-4.2.1-msvc.exe make
15138 to install from source:
15139 place yourself in a working directory of you choice.
15141 git clone git://git.savannah.gnu.org/make.git
15143 [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"]
15144 set PATH=%PATH%;C:\Cygwin\bin
15145 [or Cygwin64, if that is what you have]
15146 cd path-to-make-repo-you-cloned-above
15147 build_w32.bat --without-guile
15149 should result in a WinRel/gnumake.exe.
15150 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15152 Then re-run autogen.sh
15154 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15155 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15162 ****************************************************************************
15164 To show information on various make targets and make flags, run:
15167 To just build, run:
15172 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15174 After the build has finished successfully, you can immediately run what you built using the command:
15177 if test $_os = Darwin; then
15178 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15180 echo instdir/program/soffice
15184 If you want to run the unit tests, run:
15190 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15191 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15192 cat "$WARNINGS_FILE_FOR_BUILD"
15196 if test -s "$WARNINGS_FILE"; then
15197 echo "HOST config ($WARNINGS_FILE)"
15198 cat "$WARNINGS_FILE"
15201 # Remove unneeded emconfigure artifacts
15202 rm -f a.out a.wasm a.out.js a.out.wasm
15204 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: