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([Collabora Office],[24.04.3.3],[],[],[https://collaboraoffice.com/])
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"
456 PRODUCTNAME=AC_PACKAGE_NAME
458 AC_MSG_RESULT([$PRODUCTNAME])
459 AC_SUBST(PRODUCTNAME)
460 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
461 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
463 dnl ===================================================================
464 dnl Our version is defined by the AC_INIT() at the top of this script.
465 dnl ===================================================================
467 AC_MSG_CHECKING([for package version])
468 if test -n "$with_package_version" -a "$with_package_version" != no; then
469 PACKAGE_VERSION="$with_package_version"
471 AC_MSG_RESULT([$PACKAGE_VERSION])
473 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
475 LIBO_VERSION_MAJOR=$1
476 LIBO_VERSION_MINOR=$2
477 LIBO_VERSION_MICRO=$3
478 LIBO_VERSION_PATCH=$4
480 LIBO_VERSION_SUFFIX=$5
482 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
483 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
484 # they get undoubled before actually passed to sed.
485 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
486 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
487 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
488 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
490 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
491 # three non-negative integers. Please find more information about CFBundleVersion at
492 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
494 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
495 # of at most three non-negative integers. Please find more information about
496 # CFBundleShortVersionString at
497 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
499 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
500 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
502 AC_SUBST(LIBO_VERSION_MAJOR)
503 AC_SUBST(LIBO_VERSION_MINOR)
504 AC_SUBST(LIBO_VERSION_MICRO)
505 AC_SUBST(LIBO_VERSION_PATCH)
506 AC_SUBST(LIBO_VERSION_SUFFIX)
507 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
508 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
509 AC_SUBST(MACOSX_BUNDLE_VERSION)
511 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
512 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
513 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
514 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
516 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>/dev/null`
517 LIBO_THIS_YEAR=${git_date:-2024}
518 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
520 dnl ===================================================================
522 dnl ===================================================================
523 AC_MSG_CHECKING([for product version])
524 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
525 AC_MSG_RESULT([$PRODUCTVERSION])
526 AC_SUBST(PRODUCTVERSION)
529 # AC_PROG_EGREP doesn't set GREP on all systems as well
530 AC_PATH_PROG(GREP, grep)
538 dnl ======================================
539 dnl Required GObject introspection version
540 dnl ======================================
541 INTROSPECTION_REQUIRED_VERSION=1.32.0
543 dnl ===================================================================
544 dnl Search all the common names for GNU Make
545 dnl ===================================================================
546 AC_MSG_CHECKING([for GNU Make])
548 # try to use our own make if it is available and GNUMAKE was not already defined
549 if test -z "$GNUMAKE"; then
550 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
551 GNUMAKE="$LODE_HOME/opt/bin/make"
552 elif test -x "/opt/lo/bin/make"; then
553 GNUMAKE="/opt/lo/bin/make"
558 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
559 if test -n "$a"; then
560 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
561 if test $? -eq 0; then
562 if test "$build_os" = "cygwin"; then
563 if test -n "$($a -v | grep 'Built for Windows')" ; then
564 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
565 GNUMAKE_WIN_NATIVE="TRUE"
576 AC_MSG_RESULT($GNUMAKE)
577 if test -z "$GNUMAKE"; then
578 AC_MSG_ERROR([not found. install GNU Make.])
580 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
581 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
585 win_short_path_for_make()
587 local short_path="$1"
588 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
589 cygpath -sm "$short_path"
591 cygpath -u "$(cygpath -d "$short_path")"
596 if test "$build_os" = "cygwin"; then
597 PathFormat "$SRC_ROOT"
598 SRC_ROOT="$formatted_path"
599 PathFormat "$BUILDDIR"
600 BUILDDIR="$formatted_path"
602 AC_MSG_CHECKING(for explicit COMSPEC)
603 if test -z "$COMSPEC"; then
604 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
606 AC_MSG_RESULT([found: $COMSPEC])
613 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
614 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
615 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
617 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
618 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
621 # need sed in os checks...
622 AC_PATH_PROGS(SED, sed)
623 if test -z "$SED"; then
624 AC_MSG_ERROR([install sed to run this script])
627 # Set the ENABLE_LTO variable
628 # ===================================================================
629 AC_MSG_CHECKING([whether to use link-time optimization])
630 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
639 AC_ARG_ENABLE(fuzz-options,
640 AS_HELP_STRING([--enable-fuzz-options],
641 [Randomly enable or disable each of those configurable options
642 that are supposed to be freely selectable without interdependencies,
643 or where bad interaction from interdependencies is automatically avoided.])
646 dnl ===================================================================
647 dnl When building for Android, --with-android-ndk,
648 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
650 dnl ===================================================================
652 AC_ARG_WITH(android-ndk,
653 AS_HELP_STRING([--with-android-ndk],
654 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
657 AC_ARG_WITH(android-ndk-toolchain-version,
658 AS_HELP_STRING([--with-android-ndk-toolchain-version],
659 [Specify which toolchain version to use, of those present in the
660 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
661 with_android_ndk_toolchain_version=clang5.0)
663 AC_ARG_WITH(android-sdk,
664 AS_HELP_STRING([--with-android-sdk],
665 [Specify location of the Android SDK. Mandatory when building for Android.]),
668 AC_ARG_WITH(android-api-level,
669 AS_HELP_STRING([--with-android-api-level],
670 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
674 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
675 with_android_ndk="$SRC_ROOT/external/android-ndk"
677 if test -n "$with_android_ndk"; then
678 eval ANDROID_NDK_DIR=$with_android_ndk
681 if test -n "$with_android_api_level" ; then
682 ANDROID_API_LEVEL="$with_android_api_level"
685 if test $host_cpu = arm; then
686 LLVM_TRIPLE=armv7a-linux-androideabi
687 ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
688 ANDROID_APP_ABI=armeabi-v7a
689 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
690 elif test $host_cpu = aarch64; then
691 LLVM_TRIPLE=aarch64-linux-android
692 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
693 ANDROID_APP_ABI=arm64-v8a
694 elif test $host_cpu = x86_64; then
695 LLVM_TRIPLE=x86_64-linux-android
696 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
697 ANDROID_APP_ABI=x86_64
699 # host_cpu is something like "i386" or "i686" I guess, NDK uses
700 # "x86" in some contexts
701 LLVM_TRIPLE=i686-linux-android
702 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
706 # Set up a lot of pre-canned defaults
708 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
709 if test ! -f $ANDROID_NDK_DIR/source.properties; then
710 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
712 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
714 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
716 if test -z "$ANDROID_NDK_VERSION"; then
717 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
719 case $ANDROID_NDK_VERSION in
721 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
723 11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
724 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
729 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
730 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
734 case "$with_android_ndk_toolchain_version" in
736 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
739 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
742 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
744 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
745 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
746 # manage to link the (app-specific) single huge .so that is built for the app in
747 # android/source/ if there is debug information in a significant part of the object files.
748 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
749 # all objects have been built with debug information.)
752 android_HOST_TAG=linux-x86_64
755 android_HOST_TAG=darwin-x86_64
758 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
759 # ndk would also support windows and windows-x86_64
762 ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
763 ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
765 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
766 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
767 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
768 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
769 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
771 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
772 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
773 if test "$ENABLE_LTO" = TRUE; then
774 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
775 # $CC and $CXX when building external libraries
776 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
779 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
781 if test -z "$CC"; then
782 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
785 if test -z "$CXX"; then
786 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
790 AC_SUBST(ANDROID_NDK_DIR)
791 AC_SUBST(ANDROID_API_LEVEL)
792 AC_SUBST(ANDROID_APP_ABI)
793 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
794 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
795 AC_SUBST(ANDROID_TOOLCHAIN)
797 dnl ===================================================================
798 dnl --with-android-sdk
799 dnl ===================================================================
801 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
802 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
804 if test -n "$with_android_sdk"; then
805 eval ANDROID_SDK_DIR=$with_android_sdk
806 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
808 AC_SUBST(ANDROID_SDK_DIR)
810 AC_ARG_ENABLE([android-lok],
811 AS_HELP_STRING([--enable-android-lok],
812 [The Android app from the android/ subdir needs several tweaks all
813 over the place that break the LOK when used in the Online-based
814 Android app. This switch indicates that the intent of this build is
815 actually the Online-based, non-modified LOK.])
818 if test -n "$ANDROID_NDK_DIR" ; then
819 if test "$enable_android_lok" = yes; then
820 ENABLE_ANDROID_LOK=TRUE
821 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
822 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
824 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
827 AC_SUBST([ENABLE_ANDROID_LOK])
829 libo_FUZZ_ARG_ENABLE([android-editing],
830 AS_HELP_STRING([--enable-android-editing],
831 [Enable the experimental editing feature on Android.])
833 ENABLE_ANDROID_EDITING=
834 if test "$enable_android_editing" = yes; then
835 ENABLE_ANDROID_EDITING=TRUE
837 AC_SUBST([ENABLE_ANDROID_EDITING])
839 disable_database_connectivity_dependencies()
842 enable_firebird_sdbc=no
843 enable_mariadb_sdbc=no
844 enable_postgresql_sdbc=no
845 enable_report_builder=no
848 # ===================================================================
850 # Start initial platform setup
852 # The using_* variables reflect platform support and should not be
853 # changed after the "End initial platform setup" block.
854 # This is also true for most test_* variables.
855 # ===================================================================
864 # There is currently just iOS not using salplug, so this explicitly enables it.
865 # must: using_freetype_fontconfig
866 # may: using_headless_plugin defaults to $using_freetype_fontconfig
869 # Default values, as such probably valid just for Linux, set
870 # differently below just for Mac OSX, but at least better than
871 # hardcoding these as we used to do. Much of this is duplicated also
872 # in solenv for old build system and for gbuild, ideally we should
873 # perhaps define stuff like this only here in configure.ac?
875 LINKFLAGSSHL="-shared"
879 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
882 INSTROOTCONTENTSUFFIX=
885 HOST_PLATFORM="$host"
887 host_cpu_for_clang="$host_cpu"
892 using_freetype_fontconfig=yes
897 dnl ===========================================================
898 dnl Check whether we're using Solaris 10 - SPARC or Intel.
899 dnl ===========================================================
900 AC_MSG_CHECKING([the Solaris operating system release])
901 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
902 if test "$_os_release" -lt "10"; then
903 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
905 AC_MSG_RESULT([ok ($_os_release)])
908 dnl Check whether we're using a SPARC or i386 processor
909 AC_MSG_CHECKING([the processor type])
910 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
911 AC_MSG_RESULT([ok ($host_cpu)])
913 AC_MSG_ERROR([only SPARC and i386 processors are supported])
917 linux-gnu*|k*bsd*-gnu*|linux-musl*)
918 using_freetype_fontconfig=yes
923 if test "$enable_fuzzers" = yes; then
924 test_system_freetype=no
930 using_freetype_fontconfig=yes
936 # When building on Windows normally with MSVC under Cygwin,
937 # configure thinks that the host platform (the platform the
938 # built code will run on) is Cygwin, even if it obviously is
939 # Windows, which in Autoconf terminology is called
940 # "mingw32". (Which is misleading as MinGW is the name of the
941 # tool-chain, not an operating system.)
943 # Somewhat confusing, yes. But this configure script doesn't
944 # look at $host etc that much, it mostly uses its own $_os
945 # variable, set here in this case statement.
947 using_freetype_fontconfig=no
958 if test "$host_cpu" = "aarch64"; then
962 enable_firebird_sdbc=no
967 using_freetype_fontconfig=no
971 if test -n "$LODE_HOME" ; then
973 AC_MSG_NOTICE([sanitized the PATH to $PATH])
976 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
977 INSTROOTCONTENTSUFFIX=/Contents
978 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
979 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
980 LINKFLAGSSHL="-dynamiclib"
987 # -undefined error is the default
991 # Apple's Clang uses "arm64"
992 host_cpu_for_clang=arm64
997 using_freetype_fontconfig=no
1003 if test -n "$LODE_HOME" ; then
1005 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1009 enable_mpl_subset=yes
1010 enable_lotuswordpro=no
1011 disable_database_connectivity_dependencies
1014 enable_extension_integration=no
1017 if test "$enable_ios_simulator" = "yes"; then
1018 host=x86_64-apple-darwin
1020 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1021 LINKFLAGSSHL="-dynamiclib"
1028 # -undefined error is the default
1029 LINKFLAGSNOUNDEFS=""
1031 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1032 # part, so use aarch64-apple-darwin for now.
1033 HOST_PLATFORM=aarch64-apple-darwin
1035 # Apple's Clang uses "arm64"
1036 host_cpu_for_clang=arm64
1040 using_freetype_fontconfig=yes
1043 AC_MSG_CHECKING([the FreeBSD operating system release])
1044 if test -n "$with_os_version"; then
1045 OSVERSION="$with_os_version"
1047 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1049 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1050 AC_MSG_CHECKING([which thread library to use])
1051 if test "$OSVERSION" -lt "500016"; then
1052 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1053 PTHREAD_LIBS="-pthread"
1054 elif test "$OSVERSION" -lt "502102"; then
1055 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1056 PTHREAD_LIBS="-lc_r"
1059 PTHREAD_LIBS="-pthread"
1061 AC_MSG_RESULT([$PTHREAD_LIBS])
1066 using_freetype_fontconfig=yes
1070 PTHREAD_LIBS="-pthread -lpthread"
1075 using_freetype_fontconfig=yes
1077 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078 PTHREAD_LIBS="-pthread"
1083 using_freetype_fontconfig=yes
1086 PTHREAD_LIBS="-pthread"
1091 # API exists, but seems not really usable since Android 7 AFAIK
1093 using_freetype_fontconfig=yes
1094 using_headless_plugin=no
1098 test_system_freetype=no
1100 disable_database_connectivity_dependencies
1101 enable_lotuswordpro=no
1102 enable_mpl_subset=yes
1103 enable_cairo_canvas=no
1113 using_freetype_fontconfig=yes
1123 enable_postgresql_sdbc=no
1124 enable_firebird_sdbc=no
1129 # API currently just exists in headers, not code
1131 using_freetype_fontconfig=yes
1135 test_split_debug=yes
1136 test_system_freetype=no
1137 enable_compiler_plugins=no
1138 enable_customtarget_components=yes
1139 enable_split_debug=yes
1140 enable_wasm_strip=yes
1142 with_theme="colibre"
1147 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1151 AC_SUBST(HOST_PLATFORM)
1153 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1154 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1157 # Set defaults, if not set by platform
1158 test "${test_cups+set}" = set || test_cups="$using_x11"
1159 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1160 test "${test_gen+set}" = set || test_gen="$using_x11"
1161 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1162 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1163 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1164 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1165 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1166 # don't handle test_qt5, so it can disable test_kf5 later
1167 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1168 test "${test_randr+set}" = set || test_randr="$using_x11"
1169 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1170 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1172 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1173 # Make sure fontconfig and freetype test both either system or not
1174 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1175 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1177 # convenience / platform overriding "fixes"
1179 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1180 test "$test_kf5" = yes && test_qt5=yes
1181 test "$test_gtk3" != yes && enable_gtk3=no
1182 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1183 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1184 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1186 # Keep in sync with the above $using_x11 depending test default list
1192 test_gstreamer_1_0=no
1204 test "$using_x11" = yes && USING_X11=TRUE
1206 if test "$using_freetype_fontconfig" = yes; then
1207 AC_DEFINE(USE_HEADLESS_CODE)
1208 USE_HEADLESS_CODE=TRUE
1209 if test "$using_headless_plugin" = yes; then
1210 AC_DEFINE(ENABLE_HEADLESS)
1211 ENABLE_HEADLESS=TRUE
1218 AC_SUBST(ENABLE_HEADLESS)
1219 AC_SUBST(USE_HEADLESS_CODE)
1221 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1222 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1223 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1224 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1226 # ===================================================================
1228 # End initial platform setup
1230 # ===================================================================
1232 if test "$_os" = "Android" ; then
1233 # Verify that the NDK and SDK options are proper
1234 if test -z "$with_android_ndk"; then
1235 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1236 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1237 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1240 if test -z "$ANDROID_SDK_DIR"; then
1241 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1242 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1243 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1247 AC_SUBST(SDKDIRNAME)
1249 AC_SUBST(PTHREAD_CFLAGS)
1250 AC_SUBST(PTHREAD_LIBS)
1252 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1253 # By default use the ones specified by our build system,
1254 # but explicit override is possible.
1255 AC_MSG_CHECKING(for explicit AFLAGS)
1256 if test -n "$AFLAGS"; then
1257 AC_MSG_RESULT([$AFLAGS])
1263 AC_MSG_CHECKING(for explicit CFLAGS)
1264 if test -n "$CFLAGS"; then
1265 AC_MSG_RESULT([$CFLAGS])
1271 AC_MSG_CHECKING(for explicit CXXFLAGS)
1272 if test -n "$CXXFLAGS"; then
1273 AC_MSG_RESULT([$CXXFLAGS])
1279 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1280 if test -n "$OBJCFLAGS"; then
1281 AC_MSG_RESULT([$OBJCFLAGS])
1287 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1288 if test -n "$OBJCXXFLAGS"; then
1289 AC_MSG_RESULT([$OBJCXXFLAGS])
1295 AC_MSG_CHECKING(for explicit LDFLAGS)
1296 if test -n "$LDFLAGS"; then
1297 AC_MSG_RESULT([$LDFLAGS])
1307 AC_SUBST(OBJCXXFLAGS)
1311 AC_SUBST(x_CXXFLAGS)
1312 AC_SUBST(x_OBJCFLAGS)
1313 AC_SUBST(x_OBJCXXFLAGS)
1316 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1317 my_original_CFLAGS=$CFLAGS
1318 my_original_CXXFLAGS=$CXXFLAGS
1319 my_original_CPPFLAGS=$CPPFLAGS
1321 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1322 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1323 dnl AC_PROG_CC internally.
1324 if test "$_os" != "WINNT"; then
1325 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1329 if test -z "$CC_BASE"; then
1330 CC_BASE=`first_arg_basename "$CC"`
1334 if test "$_os" != "WINNT"; then
1335 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1339 AC_SUBST(ENDIANNESS)
1341 if test "$usable_dlapi" != no; then
1342 AC_DEFINE([HAVE_DLAPI])
1343 if test "$test_unix_dlapi" != no; then
1345 AC_SEARCH_LIBS([dlsym], [dl],
1346 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1347 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1349 AC_DEFINE([HAVE_UNIX_DLAPI])
1352 AC_SUBST(UNIX_DLAPI_LIBS)
1354 # Check for a (GNU) backtrace implementation
1355 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1356 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1357 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1359 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1360 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1361 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1364 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1365 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1368 dnl ===================================================================
1369 dnl Sanity checks for Emscripten SDK setup
1370 dnl ===================================================================
1372 EMSCRIPTEN_MIN_MAJOR=2
1373 EMSCRIPTEN_MIN_MINOR=0
1374 EMSCRIPTEN_MIN_TINY=31
1375 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1377 if test "$_os" = "Emscripten"; then
1378 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1379 AS_IF([test -z "$EMSDK"],
1380 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1381 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1382 if test -f "$EMSCRIPTEN_VERSION_H"; then
1383 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1384 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1385 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1387 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1388 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1389 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1390 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1393 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1395 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1396 if test $? -eq 0; then
1397 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1399 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1403 if ! which emconfigure >/dev/null 2>&1; then
1404 AC_MSG_WARN([emconfigure must be in your \$PATH])
1407 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1408 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1411 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1412 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1413 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1416 if test $EMSCRIPTEN_ERROR -ne 0; then
1417 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1420 AC_SUBST(EMSDK_FILE_PACKAGER)
1422 ###############################################################################
1423 # Extensions switches --enable/--disable
1424 ###############################################################################
1425 # By default these should be enabled unless having extra dependencies.
1426 # If there is extra dependency over configure options then the enable should
1427 # be automagic based on whether the requiring feature is enabled or not.
1428 # All this options change anything only with --enable-extension-integration.
1430 # The name of this option and its help string makes it sound as if
1431 # extensions are built anyway, just not integrated in the installer,
1432 # if you use --disable-extension-integration. Is that really the
1435 AC_ARG_ENABLE(ios-simulator,
1436 AS_HELP_STRING([--enable-ios-simulator],
1437 [build for iOS simulator])
1440 libo_FUZZ_ARG_ENABLE(extension-integration,
1441 AS_HELP_STRING([--disable-extension-integration],
1442 [Disable integration of the built extensions in the installer of the
1443 product. Use this switch to disable the integration.])
1446 AC_ARG_ENABLE(avmedia,
1447 AS_HELP_STRING([--disable-avmedia],
1448 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1449 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1451 AC_ARG_ENABLE(database-connectivity,
1452 AS_HELP_STRING([--disable-database-connectivity],
1453 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1456 # This doesn't mean not building (or "integrating") extensions
1457 # (although it probably should; i.e. it should imply
1458 # --disable-extension-integration I guess), it means not supporting
1459 # any extension mechanism at all
1460 libo_FUZZ_ARG_ENABLE(extensions,
1461 AS_HELP_STRING([--disable-extensions],
1462 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1465 AC_ARG_ENABLE(scripting,
1466 AS_HELP_STRING([--disable-scripting],
1467 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1468 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1470 # This is mainly for Android and iOS, but could potentially be used in some
1471 # special case otherwise, too, so factored out as a separate setting
1473 AC_ARG_ENABLE(dynamic-loading,
1474 AS_HELP_STRING([--disable-dynamic-loading],
1475 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1478 libo_FUZZ_ARG_ENABLE(report-builder,
1479 AS_HELP_STRING([--disable-report-builder],
1480 [Disable the Report Builder.])
1483 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1484 AS_HELP_STRING([--enable-ext-wiki-publisher],
1485 [Enable the Wiki Publisher extension.])
1488 libo_FUZZ_ARG_ENABLE(lpsolve,
1489 AS_HELP_STRING([--disable-lpsolve],
1490 [Disable compilation of the lp solve solver ])
1492 libo_FUZZ_ARG_ENABLE(coinmp,
1493 AS_HELP_STRING([--disable-coinmp],
1494 [Disable compilation of the CoinMP solver ])
1497 libo_FUZZ_ARG_ENABLE(pdfimport,
1498 AS_HELP_STRING([--disable-pdfimport],
1499 [Disable building the PDF import feature.])
1502 libo_FUZZ_ARG_ENABLE(pdfium,
1503 AS_HELP_STRING([--disable-pdfium],
1504 [Disable building PDFium. Results in unsecure PDF signature verification.])
1507 libo_FUZZ_ARG_ENABLE(skia,
1508 AS_HELP_STRING([--disable-skia],
1509 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1512 ###############################################################################
1514 dnl ---------- *** ----------
1516 libo_FUZZ_ARG_ENABLE(mergelibs,
1517 AS_HELP_STRING([--enable-mergelibs=yes/no/more],
1518 [Merge several of the smaller libraries into one big "merged" library.
1519 The "more" option will link even more of the smaller libraries.
1520 "more" not appropriate for distros which split up LibreOffice into multiple packages.
1521 It is only appropriate for situations where all of LO is delivered in a single install/package. ])
1524 libo_FUZZ_ARG_ENABLE(breakpad,
1525 AS_HELP_STRING([--enable-breakpad],
1526 [Enables breakpad for crash reporting.])
1529 libo_FUZZ_ARG_ENABLE(crashdump,
1530 AS_HELP_STRING([--disable-crashdump],
1531 [Disable dump.ini and dump-file, when --enable-breakpad])
1534 AC_ARG_ENABLE(fetch-external,
1535 AS_HELP_STRING([--disable-fetch-external],
1536 [Disables fetching external tarballs from web sources.])
1539 AC_ARG_ENABLE(fuzzers,
1540 AS_HELP_STRING([--enable-fuzzers],
1541 [Enables building libfuzzer targets for fuzz testing.])
1544 libo_FUZZ_ARG_ENABLE(pch,
1545 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1546 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1547 Using 'system' will include only external headers, 'base' will add also headers
1548 from base modules, 'normal' will also add all headers except from the module built,
1549 'full' will use all suitable headers even from a module itself.])
1552 libo_FUZZ_ARG_ENABLE(epm,
1553 AS_HELP_STRING([--enable-epm],
1554 [LibreOffice includes self-packaging code, that requires epm, however epm is
1555 useless for large scale package building.])
1558 libo_FUZZ_ARG_ENABLE(odk,
1559 AS_HELP_STRING([--enable-odk],
1560 [Enable building the Office Development Kit, the part that extensions need to build against])
1563 AC_ARG_ENABLE(mpl-subset,
1564 AS_HELP_STRING([--enable-mpl-subset],
1565 [Don't compile any pieces which are not MPL or more liberally licensed])
1568 libo_FUZZ_ARG_ENABLE(evolution2,
1569 AS_HELP_STRING([--enable-evolution2],
1570 [Allows the built-in evolution 2 addressbook connectivity build to be
1574 AC_ARG_ENABLE(avahi,
1575 AS_HELP_STRING([--enable-avahi],
1576 [Determines whether to use Avahi to advertise Impress to remote controls.])
1579 libo_FUZZ_ARG_ENABLE(werror,
1580 AS_HELP_STRING([--enable-werror],
1581 [Turn warnings to errors. (Has no effect in modules where the treating
1582 of warnings as errors is disabled explicitly.)]),
1585 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1586 AS_HELP_STRING([--enable-assert-always-abort],
1587 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1590 libo_FUZZ_ARG_ENABLE(dbgutil,
1591 AS_HELP_STRING([--enable-dbgutil],
1592 [Provide debugging support from --enable-debug and include additional debugging
1593 utilities such as object counting or more expensive checks.
1594 This is the recommended option for developers.
1595 Note that this makes the build ABI incompatible, it is not possible to mix object
1596 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1598 libo_FUZZ_ARG_ENABLE(debug,
1599 AS_HELP_STRING([--enable-debug],
1600 [Include debugging information, disable compiler optimization and inlining plus
1601 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1603 libo_FUZZ_ARG_ENABLE(split-debug,
1604 AS_HELP_STRING([--disable-split-debug],
1605 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1606 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1608 libo_FUZZ_ARG_ENABLE(gdb-index,
1609 AS_HELP_STRING([--disable-gdb-index],
1610 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1611 The feature requires a linker that supports the --gdb-index option.]))
1613 libo_FUZZ_ARG_ENABLE(sal-log,
1614 AS_HELP_STRING([--enable-sal-log],
1615 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1617 libo_FUZZ_ARG_ENABLE(symbols,
1618 AS_HELP_STRING([--enable-symbols],
1619 [Generate debug information.
1620 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1621 otherwise. It is possible to explicitly specify gbuild build targets
1622 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1623 everything in the directory; there is no ordering, more specific overrides
1624 more general, and disabling takes precedence).
1625 Example: --enable-symbols="all -sw/ -Library_sc".]))
1627 libo_FUZZ_ARG_ENABLE(optimized,
1628 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1629 [Whether to compile with optimization flags.
1630 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1631 otherwise. Using 'debug' will try to use only optimizations that should
1632 not interfere with debugging. For Emscripten we default to optimized (-O1)
1633 debug build, as otherwise binaries become too large.]))
1635 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1636 AS_HELP_STRING([--disable-runtime-optimizations],
1637 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1638 JVM JIT) that are known to interact badly with certain dynamic analysis
1639 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1640 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1641 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1643 AC_ARG_WITH(valgrind,
1644 AS_HELP_STRING([--with-valgrind],
1645 [Make availability of Valgrind headers a hard requirement.]))
1647 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1648 AS_HELP_STRING([--enable-compiler-plugins],
1649 [Enable compiler plugins that will perform additional checks during
1650 building. Enabled automatically by --enable-dbgutil.
1651 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1652 COMPILER_PLUGINS_DEBUG=
1653 if test "$enable_compiler_plugins" = debug; then
1654 enable_compiler_plugins=yes
1655 COMPILER_PLUGINS_DEBUG=TRUE
1658 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1659 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1660 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1661 relevant in the --disable-compiler-plugins case.]))
1663 libo_FUZZ_ARG_ENABLE(ooenv,
1664 AS_HELP_STRING([--enable-ooenv],
1665 [Enable ooenv for the instdir installation.]))
1668 AS_HELP_STRING([--enable-lto],
1669 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1670 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1673 AC_ARG_ENABLE(python,
1674 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1675 [Enables or disables Python support at run-time.
1676 Also specifies what Python to use at build-time.
1677 'fully-internal' even forces the internal version for uses of Python
1679 On macOS the only choices are
1680 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1683 libo_FUZZ_ARG_ENABLE(gtk3,
1684 AS_HELP_STRING([--disable-gtk3],
1685 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1686 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1689 AS_HELP_STRING([--enable-gtk4],
1690 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1692 AC_ARG_ENABLE(atspi-tests,
1693 AS_HELP_STRING([--disable-atspi-tests],
1694 [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1696 AC_ARG_ENABLE(introspection,
1697 AS_HELP_STRING([--enable-introspection],
1698 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1699 Linux distributions.)]))
1701 AC_ARG_ENABLE(split-app-modules,
1702 AS_HELP_STRING([--enable-split-app-modules],
1703 [Split file lists for app modules, e.g. base, calc.
1704 Has effect only with make distro-pack-install]),
1707 AC_ARG_ENABLE(split-opt-features,
1708 AS_HELP_STRING([--enable-split-opt-features],
1709 [Split file lists for some optional features, e.g. pyuno, testtool.
1710 Has effect only with make distro-pack-install]),
1713 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1714 AS_HELP_STRING([--disable-cairo-canvas],
1715 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1718 libo_FUZZ_ARG_ENABLE(dbus,
1719 AS_HELP_STRING([--disable-dbus],
1720 [Determines whether to enable features that depend on dbus.
1721 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1722 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1724 libo_FUZZ_ARG_ENABLE(sdremote,
1725 AS_HELP_STRING([--disable-sdremote],
1726 [Determines whether to enable Impress remote control (i.e. the server component).]),
1727 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1729 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1730 AS_HELP_STRING([--disable-sdremote-bluetooth],
1731 [Determines whether to build sdremote with bluetooth support.
1732 Requires dbus on Linux.]))
1734 libo_FUZZ_ARG_ENABLE(gio,
1735 AS_HELP_STRING([--disable-gio],
1736 [Determines whether to use the GIO support.]),
1737 ,test "${enable_gio+set}" = set || enable_gio=yes)
1740 AS_HELP_STRING([--enable-qt5],
1741 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1746 AS_HELP_STRING([--enable-qt6],
1747 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1752 AS_HELP_STRING([--enable-kf5],
1753 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1754 KF5 are available.]),
1758 AS_HELP_STRING([--enable-kf6],
1759 [Determines whether to use KF6 vclplug on platforms where Qt6 and
1760 KF6 are available.]),
1764 AC_ARG_ENABLE(gtk3_kde5,
1765 AS_HELP_STRING([--enable-gtk3-kde5],
1766 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1767 platforms where Gtk3, Qt5 and Plasma is available.]),
1771 AS_HELP_STRING([--enable-gen],
1772 [To select the gen backend in case of --disable-dynamic-loading.
1773 Per default auto-enabled when X11 is used.]),
1774 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1777 AS_HELP_STRING([--disable-gui],
1778 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1781 libo_FUZZ_ARG_ENABLE(randr,
1782 AS_HELP_STRING([--disable-randr],
1783 [Disable RandR support in the vcl project.]),
1784 ,test "${enable_randr+set}" = set || enable_randr=yes)
1786 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1787 AS_HELP_STRING([--disable-gstreamer-1-0],
1788 [Disable building with the gstreamer 1.0 avmedia backend.]),
1789 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1791 libo_FUZZ_ARG_ENABLE([eot],
1792 [AS_HELP_STRING([--enable-eot],
1793 [Enable support for Embedded OpenType fonts.])],
1794 ,test "${enable_eot+set}" = set || enable_eot=no)
1796 libo_FUZZ_ARG_ENABLE(cve-tests,
1797 AS_HELP_STRING([--disable-cve-tests],
1798 [Prevent CVE tests to be executed]),
1801 AC_ARG_ENABLE(build-opensymbol,
1802 AS_HELP_STRING([--enable-build-opensymbol],
1803 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1804 fontforge installed.]),
1807 AC_ARG_ENABLE(dependency-tracking,
1808 AS_HELP_STRING([--enable-dependency-tracking],
1809 [Do not reject slow dependency extractors.])[
1810 --disable-dependency-tracking
1811 Disables generation of dependency information.
1812 Speed up one-time builds.],
1815 AC_ARG_ENABLE(icecream,
1816 AS_HELP_STRING([--enable-icecream],
1817 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1818 It defaults to /opt/icecream for the location of the icecream gcc/g++
1819 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1823 AS_HELP_STRING([--enable-ld=<linker>],
1824 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1825 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1826 If <linker> contains any ':', the part before the first ':' is used as the value of
1827 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1828 needed for Clang 12).]),
1831 libo_FUZZ_ARG_ENABLE(cups,
1832 AS_HELP_STRING([--disable-cups],
1833 [Do not build cups support.])
1836 AC_ARG_ENABLE(ccache,
1837 AS_HELP_STRING([--disable-ccache],
1838 [Do not try to use ccache automatically.
1839 By default we will try to detect if ccache is available; in that case if
1840 CC/CXX are not yet set, and --enable-icecream is not given, we
1841 attempt to use ccache. --disable-ccache disables ccache completely.
1842 Additionally ccache's depend mode is enabled if possible,
1843 use --enable-ccache=nodepend to enable ccache without depend mode.
1847 AC_ARG_ENABLE(z7-debug,
1848 AS_HELP_STRING([--enable-z7-debug],
1849 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1850 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1851 Enabled by default if ccache is detected.]))
1853 libo_FUZZ_ARG_ENABLE(online-update,
1854 AS_HELP_STRING([--enable-online-update],
1855 [Enable the online update service that will check for new versions of
1856 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1859 libo_FUZZ_ARG_ENABLE(online-update-mar,
1860 AS_HELP_STRING([--enable-online-update-mar],
1861 [Enable the experimental Mozilla-like online update service that will
1862 check for new versions of LibreOffice. Disabled by default.]),
1865 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1866 AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1867 [Set the base URL value for --enable-online-update-mar.
1868 (Can be left off for debug purposes, even if that may render the feature
1872 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1873 AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1874 [Set the certificate DER value for --enable-online-update-mar.
1875 (Can be left off for debug purposes, even if that may render the feature
1879 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1880 AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1881 [Set the certificate name value for --enable-online-update-mar.
1882 (Can be left off for debug purposes, even if that may render the feature
1886 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1887 AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1888 [Set the certificate path value for --enable-online-update-mar.
1889 (Can be left off for debug purposes, even if that may render the feature
1893 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1894 AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1895 [Set the upload URL value for --enable-online-update-mar.
1896 (Can be left off for debug purposes, even if that may render the feature
1900 libo_FUZZ_ARG_ENABLE(extension-update,
1901 AS_HELP_STRING([--disable-extension-update],
1902 [Disable possibility to update installed extensions.]),
1905 libo_FUZZ_ARG_ENABLE(release-build,
1906 AS_HELP_STRING([--enable-release-build],
1907 [Enable release build. Note that the "release build" choice is orthogonal to
1908 whether symbols are present, debug info is generated, or optimization
1910 See https://wiki.documentfoundation.org/Development/DevBuild]),
1913 libo_FUZZ_ARG_ENABLE(hardening-flags,
1914 AS_HELP_STRING([--enable-hardening-flags],
1915 [Enable automatically using hardening compiler flags. Distros should typically
1916 use their default configuration via CXXFLAGS, etc. But this provides a
1917 convenient default set of hardening flags]),
1920 AC_ARG_ENABLE(windows-build-signing,
1921 AS_HELP_STRING([--enable-windows-build-signing],
1922 [Enable signing of windows binaries (*.exe, *.dll)]),
1925 AC_ARG_ENABLE(silent-msi,
1926 AS_HELP_STRING([--enable-silent-msi],
1927 [Enable MSI with LIMITUI=1 (silent install).]),
1931 AS_HELP_STRING([--enable-wix],
1932 [Build Windows installer using WiX.]),
1935 AC_ARG_ENABLE(macosx-code-signing,
1936 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1937 [Sign executables, dylibs, frameworks and the app bundle. If you
1938 don't provide an identity the first suitable certificate
1939 in your keychain is used.]),
1942 AC_ARG_ENABLE(macosx-package-signing,
1943 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1944 [Create a .pkg suitable for uploading to the Mac App Store and sign
1945 it. If you don't provide an identity the first suitable certificate
1946 in your keychain is used.]),
1949 AC_ARG_ENABLE(macosx-sandbox,
1950 AS_HELP_STRING([--enable-macosx-sandbox],
1951 [Make the app bundle run in a sandbox. Requires code signing.
1952 Is required by apps distributed in the Mac App Store, and implies
1953 adherence to App Store rules.]),
1956 AC_ARG_WITH(macosx-bundle-identifier,
1957 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1958 [Define the macOS bundle identifier. Default is the somewhat weird
1959 org.libreoffice.script ("script", huh?).]),
1960 ,with_macosx_bundle_identifier=org.libreoffice.script)
1962 AC_ARG_WITH(macosx-provisioning-profile,
1963 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1964 [Specify the path to a provisioning profile to use]),
1967 AC_ARG_WITH(product-name,
1968 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1969 [Define the product name. Default is AC_PACKAGE_NAME.]),
1970 ,with_product_name=$PRODUCTNAME)
1972 libo_FUZZ_ARG_ENABLE(community-flavor,
1973 AS_HELP_STRING([--disable-community-flavor],
1974 [Disable the Community branding.]),
1977 AC_ARG_WITH(package-version,
1978 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1979 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1982 libo_FUZZ_ARG_ENABLE(readonly-installset,
1983 AS_HELP_STRING([--enable-readonly-installset],
1984 [Prevents any attempts by LibreOffice to write into its installation. That means
1985 at least that no "system-wide" extensions can be added. Partly experimental work in
1986 progress, probably not fully implemented. Always enabled for macOS.]),
1989 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1990 AS_HELP_STRING([--disable-mariadb-sdbc],
1991 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1994 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1995 AS_HELP_STRING([--disable-postgresql-sdbc],
1996 [Disable the build of the PostgreSQL-SDBC driver.])
1999 libo_FUZZ_ARG_ENABLE(lotuswordpro,
2000 AS_HELP_STRING([--disable-lotuswordpro],
2001 [Disable the build of the Lotus Word Pro filter.]),
2002 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2004 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2005 AS_HELP_STRING([--disable-firebird-sdbc],
2006 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2007 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2009 AC_ARG_ENABLE(bogus-pkg-config,
2010 AS_HELP_STRING([--enable-bogus-pkg-config],
2011 [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.]),
2014 AC_ARG_ENABLE(openssl,
2015 AS_HELP_STRING([--disable-openssl],
2016 [Disable using libssl/libcrypto from OpenSSL. If disabled,
2017 components will use NSS. Work in progress,
2018 use only if you are hacking on it.]),
2019 ,enable_openssl=yes)
2021 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2022 AS_HELP_STRING([--enable-cipher-openssl-backend],
2023 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2024 Requires --enable-openssl.]))
2027 AS_HELP_STRING([--disable-nss],
2028 [Disable using NSS. If disabled,
2029 components will use openssl. Work in progress,
2030 use only if you are hacking on it.]),
2033 AC_ARG_ENABLE(library-bin-tar,
2034 AS_HELP_STRING([--enable-library-bin-tar],
2035 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2036 Some libraries can save their build result in a tarball
2037 stored in TARFILE_LOCATION. That binary tarball is
2038 uniquely identified by the source tarball,
2039 the content of the config_host.mk file and the content
2040 of the top-level directory in core for that library
2041 If this option is enabled, then if such a tarfile exist, it will be untarred
2042 instead of the source tarfile, and the build step will be skipped for that
2044 If a proper tarfile does not exist, then the normal source-based
2045 build is done for that library and a proper binary tarfile is created
2046 for the next time.]),
2049 AC_ARG_ENABLE(dconf,
2050 AS_HELP_STRING([--disable-dconf],
2051 [Disable the dconf configuration backend (enabled by default where
2054 libo_FUZZ_ARG_ENABLE(formula-logger,
2056 [--enable-formula-logger],
2057 [Enable formula logger for logging formula calculation flow in Calc.]
2062 AS_HELP_STRING([--disable-ldap],
2063 [Disable LDAP support.]),
2066 AC_ARG_ENABLE(opencl,
2067 AS_HELP_STRING([--disable-opencl],
2068 [Disable OpenCL support.]),
2071 libo_FUZZ_ARG_ENABLE(librelogo,
2072 AS_HELP_STRING([--disable-librelogo],
2073 [Do not build LibreLogo.]),
2074 ,enable_librelogo=yes)
2076 AC_ARG_ENABLE(wasm-strip,
2077 AS_HELP_STRING([--enable-wasm-strip],
2078 [Strip the static build like for WASM/emscripten platform.]),
2081 AC_ARG_WITH(main-module,
2082 AS_HELP_STRING([--with-main-module=<writer/calc>],
2083 [Specify which main module to build for wasm.
2084 Default value is 'writer'.]),
2087 AC_ARG_ENABLE(wasm-exceptions,
2088 AS_HELP_STRING([--enable-wasm-exceptions],
2089 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2090 matter of fact, this is currently not finished by any implementation)
2091 (see https://webassembly.org/roadmap/ for the current state]),
2094 AC_ARG_ENABLE(xmlhelp,
2095 AS_HELP_STRING([--disable-xmlhelp],
2096 [Disable XML help support]),
2097 ,enable_xmlhelp=yes)
2099 AC_ARG_ENABLE(customtarget-components,
2100 AS_HELP_STRING([--enable-customtarget-components],
2101 [Generates the static UNO object constructor mapping from the build.]))
2103 dnl ===================================================================
2104 dnl Optional Packages (--with/without-)
2105 dnl ===================================================================
2107 AC_ARG_WITH(gcc-home,
2108 AS_HELP_STRING([--with-gcc-home],
2109 [Specify the location of gcc/g++ manually. This can be used in conjunction
2110 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2111 non-default path.]),
2114 AC_ARG_WITH(gnu-patch,
2115 AS_HELP_STRING([--with-gnu-patch],
2116 [Specify location of GNU patch on Solaris or FreeBSD.]),
2119 AC_ARG_WITH(build-platform-configure-options,
2120 AS_HELP_STRING([--with-build-platform-configure-options],
2121 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2125 AS_HELP_STRING([--with-gnu-cp],
2126 [Specify location of GNU cp on Solaris or FreeBSD.]),
2129 AC_ARG_WITH(external-tar,
2130 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2131 [Specify an absolute path of where to find (and store) tarfiles.]),
2132 TARFILE_LOCATION=$withval ,
2135 AC_ARG_WITH(referenced-git,
2136 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2137 [Specify another checkout directory to reference. This makes use of
2138 git submodule update --reference, and saves a lot of diskspace
2139 when having multiple trees side-by-side.]),
2140 GIT_REFERENCE_SRC=$withval ,
2143 AC_ARG_WITH(linked-git,
2144 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2145 [Specify a directory where the repositories of submodules are located.
2146 This uses a method similar to git-new-workdir to get submodules.]),
2147 GIT_LINK_SRC=$withval ,
2150 AC_ARG_WITH(galleries,
2151 AS_HELP_STRING([--with-galleries],
2152 [Specify how galleries should be built. It is possible either to
2153 build these internally from source ("build"),
2154 or to disable them ("no")]),
2157 AC_ARG_WITH(templates,
2158 AS_HELP_STRING([--with-templates],
2159 [Specify we build with or without template files. It is possible either to
2160 build with templates ("yes"),
2161 or to disable them ("no")]),
2165 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2166 [Choose which themes to include. By default those themes with an '*' are included.
2167 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2168 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2169 *elementary, *elementary_svg,
2170 *karasa_jaga, *karasa_jaga_svg,
2171 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2172 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2175 libo_FUZZ_ARG_WITH(helppack-integration,
2176 AS_HELP_STRING([--without-helppack-integration],
2177 [It will not integrate the helppacks to the installer
2178 of the product. Please use this switch to use the online help
2179 or separate help packages.]),
2182 libo_FUZZ_ARG_WITH(fonts,
2183 AS_HELP_STRING([--without-fonts],
2184 [LibreOffice includes some third-party fonts to provide a reliable basis for
2185 help content, templates, samples, etc. When these fonts are already
2186 known to be available on the system then you should use this option.]),
2189 AC_ARG_ENABLE(noto-font,
2190 AS_HELP_STRING([--enable-noto-font],
2191 [Add more Google Noto fonts.]),
2195 AS_HELP_STRING([--with-epm],
2196 [Decides which epm to use. Default is to use the one from the system if
2197 one is built. When either this is not there or you say =internal epm
2201 AC_ARG_WITH(package-format,
2202 AS_HELP_STRING([--with-package-format],
2203 [Specify package format(s) for LibreOffice installation sets. The
2204 implicit --without-package-format leads to no installation sets being
2205 generated. Possible values: archive, bsd, deb, dmg,
2206 installed, msi, pkg, and rpm.
2207 Example: --with-package-format='deb rpm']),
2211 AS_HELP_STRING([--with-tls],
2212 [Decides which TLS/SSL and cryptographic implementations to use for
2213 LibreOffice's code. Default is to use NSS although OpenSSL is also
2214 possible. Notice that selecting NSS restricts the usage of OpenSSL
2215 in LO's code but selecting OpenSSL doesn't restrict by now the
2216 usage of NSS in LO's code. Possible values: openssl, nss.
2217 Example: --with-tls="nss"]),
2220 AC_ARG_WITH(system-libs,
2221 AS_HELP_STRING([--with-system-libs],
2222 [Use libraries already on system -- enables all --with-system-* flags.]),
2225 AC_ARG_WITH(system-bzip2,
2226 AS_HELP_STRING([--with-system-bzip2],
2227 [Use bzip2 already on system. Used when --enable-online-update-mar
2228 or --enable-python=internal]),,
2229 [with_system_bzip2="$with_system_libs"])
2231 AC_ARG_WITH(system-headers,
2232 AS_HELP_STRING([--with-system-headers],
2233 [Use headers already on system -- enables all --with-system-* flags for
2234 external packages whose headers are the only entities used i.e.
2235 boost/odbc/sane-header(s).]),,
2236 [with_system_headers="$with_system_libs"])
2238 AC_ARG_WITH(system-jars,
2239 AS_HELP_STRING([--without-system-jars],
2240 [When building with --with-system-libs, also the needed jars are expected
2241 on the system. Use this to disable that]),,
2242 [with_system_jars="$with_system_libs"])
2244 AC_ARG_WITH(system-cairo,
2245 AS_HELP_STRING([--with-system-cairo],
2246 [Use cairo libraries already on system. Happens automatically for
2247 (implicit) --enable-gtk3.]))
2249 AC_ARG_WITH(system-epoxy,
2250 AS_HELP_STRING([--with-system-epoxy],
2251 [Use epoxy libraries already on system. Happens automatically for
2252 (implicit) --enable-gtk3.]),,
2253 [with_system_epoxy="$with_system_libs"])
2255 AC_ARG_WITH(myspell-dicts,
2256 AS_HELP_STRING([--with-myspell-dicts],
2257 [Adds myspell dictionaries to the LibreOffice installation set]),
2260 AC_ARG_WITH(system-dicts,
2261 AS_HELP_STRING([--without-system-dicts],
2262 [Do not use dictionaries from system paths.]),
2265 AC_ARG_WITH(external-dict-dir,
2266 AS_HELP_STRING([--with-external-dict-dir],
2267 [Specify external dictionary dir.]),
2270 AC_ARG_WITH(external-hyph-dir,
2271 AS_HELP_STRING([--with-external-hyph-dir],
2272 [Specify external hyphenation pattern dir.]),
2275 AC_ARG_WITH(external-thes-dir,
2276 AS_HELP_STRING([--with-external-thes-dir],
2277 [Specify external thesaurus dir.]),
2280 AC_ARG_WITH(system-zlib,
2281 AS_HELP_STRING([--with-system-zlib],
2282 [Use zlib already on system.]),,
2283 [with_system_zlib=auto])
2285 AC_ARG_WITH(system-jpeg,
2286 AS_HELP_STRING([--with-system-jpeg],
2287 [Use jpeg already on system.]),,
2288 [with_system_jpeg="$with_system_libs"])
2290 AC_ARG_WITH(system-expat,
2291 AS_HELP_STRING([--with-system-expat],
2292 [Use expat already on system.]),,
2293 [with_system_expat="$with_system_libs"])
2295 AC_ARG_WITH(system-libxml,
2296 AS_HELP_STRING([--with-system-libxml],
2297 [Use libxml/libxslt already on system.]),,
2298 [with_system_libxml=auto])
2300 AC_ARG_WITH(system-openldap,
2301 AS_HELP_STRING([--with-system-openldap],
2302 [Use the OpenLDAP LDAP SDK already on system.]),,
2303 [with_system_openldap="$with_system_libs"])
2305 libo_FUZZ_ARG_ENABLE(poppler,
2306 AS_HELP_STRING([--disable-poppler],
2307 [Disable building Poppler.])
2310 AC_ARG_WITH(system-poppler,
2311 AS_HELP_STRING([--with-system-poppler],
2312 [Use system poppler (only needed for PDF import).]),,
2313 [with_system_poppler="$with_system_libs"])
2315 AC_ARG_WITH(system-abseil,
2316 AS_HELP_STRING([--with-system-abseil],
2317 [Use the abseil libraries already on system.]),,
2318 [with_system_abseil="$with_system_libs"])
2320 AC_ARG_WITH(system-openjpeg,
2321 AS_HELP_STRING([--with-system-openjpeg],
2322 [Use the OpenJPEG library already on system.]),,
2323 [with_system_openjpeg="$with_system_libs"])
2325 libo_FUZZ_ARG_ENABLE(gpgmepp,
2326 AS_HELP_STRING([--disable-gpgmepp],
2327 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2330 AC_ARG_WITH(system-gpgmepp,
2331 AS_HELP_STRING([--with-system-gpgmepp],
2332 [Use gpgmepp already on system]),,
2333 [with_system_gpgmepp="$with_system_libs"])
2335 AC_ARG_WITH(system-mariadb,
2336 AS_HELP_STRING([--with-system-mariadb],
2337 [Use MariaDB/MySQL libraries already on system.]),,
2338 [with_system_mariadb="$with_system_libs"])
2340 AC_ARG_ENABLE(bundle-mariadb,
2341 AS_HELP_STRING([--enable-bundle-mariadb],
2342 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2345 AC_ARG_WITH(system-postgresql,
2346 AS_HELP_STRING([--with-system-postgresql],
2347 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2348 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2349 [with_system_postgresql="$with_system_libs"])
2351 AC_ARG_WITH(libpq-path,
2352 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2353 [Use this PostgreSQL C interface (libpq) installation for building
2354 the PostgreSQL-SDBC extension.]),
2357 AC_ARG_WITH(system-firebird,
2358 AS_HELP_STRING([--with-system-firebird],
2359 [Use Firebird libraries already on system, for building the Firebird-SDBC
2360 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2361 [with_system_firebird="$with_system_libs"])
2363 AC_ARG_WITH(system-libtommath,
2364 AS_HELP_STRING([--with-system-libtommath],
2365 [Use libtommath already on system]),,
2366 [with_system_libtommath="$with_system_libs"])
2368 AC_ARG_WITH(system-hsqldb,
2369 AS_HELP_STRING([--with-system-hsqldb],
2370 [Use hsqldb already on system.]))
2372 AC_ARG_WITH(hsqldb-jar,
2373 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2374 [Specify path to jarfile manually.]),
2375 HSQLDB_JAR=$withval)
2377 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2378 AS_HELP_STRING([--disable-scripting-beanshell],
2379 [Disable support for scripts in BeanShell.]),
2383 AC_ARG_WITH(system-beanshell,
2384 AS_HELP_STRING([--with-system-beanshell],
2385 [Use beanshell already on system.]),,
2386 [with_system_beanshell="$with_system_jars"])
2388 AC_ARG_WITH(beanshell-jar,
2389 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2390 [Specify path to jarfile manually.]),
2393 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2394 AS_HELP_STRING([--disable-scripting-javascript],
2395 [Disable support for scripts in JavaScript.]),
2399 AC_ARG_WITH(system-rhino,
2400 AS_HELP_STRING([--with-system-rhino],
2401 [Use rhino already on system.]),,)
2402 # [with_system_rhino="$with_system_jars"])
2403 # Above is not used as we have different debug interface
2404 # patched into internal rhino. This code needs to be fixed
2405 # before we can enable it by default.
2407 AC_ARG_WITH(rhino-jar,
2408 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2409 [Specify path to jarfile manually.]),
2412 AC_ARG_WITH(system-jfreereport,
2413 AS_HELP_STRING([--with-system-jfreereport],
2414 [Use JFreeReport already on system.]),,
2415 [with_system_jfreereport="$with_system_jars"])
2417 AC_ARG_WITH(sac-jar,
2418 AS_HELP_STRING([--with-sac-jar=JARFILE],
2419 [Specify path to jarfile manually.]),
2422 AC_ARG_WITH(libxml-jar,
2423 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2424 [Specify path to jarfile manually.]),
2425 LIBXML_JAR=$withval)
2427 AC_ARG_WITH(flute-jar,
2428 AS_HELP_STRING([--with-flute-jar=JARFILE],
2429 [Specify path to jarfile manually.]),
2432 AC_ARG_WITH(jfreereport-jar,
2433 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2434 [Specify path to jarfile manually.]),
2435 JFREEREPORT_JAR=$withval)
2437 AC_ARG_WITH(liblayout-jar,
2438 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2439 [Specify path to jarfile manually.]),
2440 LIBLAYOUT_JAR=$withval)
2442 AC_ARG_WITH(libloader-jar,
2443 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2444 [Specify path to jarfile manually.]),
2445 LIBLOADER_JAR=$withval)
2447 AC_ARG_WITH(libformula-jar,
2448 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2449 [Specify path to jarfile manually.]),
2450 LIBFORMULA_JAR=$withval)
2452 AC_ARG_WITH(librepository-jar,
2453 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2454 [Specify path to jarfile manually.]),
2455 LIBREPOSITORY_JAR=$withval)
2457 AC_ARG_WITH(libfonts-jar,
2458 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2459 [Specify path to jarfile manually.]),
2460 LIBFONTS_JAR=$withval)
2462 AC_ARG_WITH(libserializer-jar,
2463 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2464 [Specify path to jarfile manually.]),
2465 LIBSERIALIZER_JAR=$withval)
2467 AC_ARG_WITH(libbase-jar,
2468 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2469 [Specify path to jarfile manually.]),
2470 LIBBASE_JAR=$withval)
2472 AC_ARG_WITH(system-odbc,
2473 AS_HELP_STRING([--with-system-odbc],
2474 [Use the odbc headers already on system.]),,
2475 [with_system_odbc="auto"])
2477 AC_ARG_WITH(system-sane,
2478 AS_HELP_STRING([--with-system-sane],
2479 [Use sane.h already on system.]),,
2480 [with_system_sane="$with_system_headers"])
2482 AC_ARG_WITH(system-bluez,
2483 AS_HELP_STRING([--with-system-bluez],
2484 [Use bluetooth.h already on system.]),,
2485 [with_system_bluez="$with_system_headers"])
2487 AC_ARG_WITH(system-boost,
2488 AS_HELP_STRING([--with-system-boost],
2489 [Use boost already on system.]),,
2490 [with_system_boost="$with_system_headers"])
2492 AC_ARG_WITH(system-dragonbox,
2493 AS_HELP_STRING([--with-system-dragonbox],
2494 [Use dragonbox already on system.]),,
2495 [with_system_dragonbox="$with_system_headers"])
2497 AC_ARG_WITH(system-frozen,
2498 AS_HELP_STRING([--with-system-frozen],
2499 [Use frozen already on system.]),,
2500 [with_system_frozen="$with_system_headers"])
2502 AC_ARG_WITH(system-libfixmath,
2503 AS_HELP_STRING([--with-system-libfixmath],
2504 [Use libfixmath already on system.]),,
2505 [with_system_libfixmath="$with_system_libs"])
2507 AC_ARG_WITH(system-glm,
2508 AS_HELP_STRING([--with-system-glm],
2509 [Use glm already on system.]),,
2510 [with_system_glm="$with_system_headers"])
2512 AC_ARG_WITH(system-hunspell,
2513 AS_HELP_STRING([--with-system-hunspell],
2514 [Use libhunspell already on system.]),,
2515 [with_system_hunspell="$with_system_libs"])
2517 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2518 AS_HELP_STRING([--enable-cairo-rgba],
2519 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2521 libo_FUZZ_ARG_ENABLE(zxing,
2522 AS_HELP_STRING([--disable-zxing],
2523 [Disable use of zxing external library.]))
2525 AC_ARG_WITH(system-zxing,
2526 AS_HELP_STRING([--with-system-zxing],
2527 [Use libzxing already on system.]),,
2528 [with_system_zxing="$with_system_libs"])
2530 AC_ARG_WITH(system-zxcvbn,
2531 AS_HELP_STRING([--with-system-zxcvbn],
2532 [Use libzxcvbn already on system.]),,
2533 [with_system_zxcvbn="$with_system_libs"])
2535 AC_ARG_WITH(system-box2d,
2536 AS_HELP_STRING([--with-system-box2d],
2537 [Use box2d already on system.]),,
2538 [with_system_box2d="$with_system_libs"])
2540 AC_ARG_WITH(system-mythes,
2541 AS_HELP_STRING([--with-system-mythes],
2542 [Use mythes already on system.]),,
2543 [with_system_mythes="$with_system_libs"])
2545 AC_ARG_WITH(system-altlinuxhyph,
2546 AS_HELP_STRING([--with-system-altlinuxhyph],
2547 [Use ALTLinuxhyph already on system.]),,
2548 [with_system_altlinuxhyph="$with_system_libs"])
2550 AC_ARG_WITH(system-lpsolve,
2551 AS_HELP_STRING([--with-system-lpsolve],
2552 [Use lpsolve already on system.]),,
2553 [with_system_lpsolve="$with_system_libs"])
2555 AC_ARG_WITH(system-coinmp,
2556 AS_HELP_STRING([--with-system-coinmp],
2557 [Use CoinMP already on system.]),,
2558 [with_system_coinmp="$with_system_libs"])
2560 AC_ARG_WITH(system-liblangtag,
2561 AS_HELP_STRING([--with-system-liblangtag],
2562 [Use liblangtag library already on system.]),,
2563 [with_system_liblangtag="$with_system_libs"])
2565 AC_ARG_WITH(system-lockfile,
2566 AS_HELP_STRING([--with-system-lockfile[=file]],
2567 [Detect a system lockfile program or use the \$file argument.]))
2570 AS_HELP_STRING([--without-webdav],
2571 [Disable WebDAV support in the UCB.]))
2573 AC_ARG_WITH(linker-hash-style,
2574 AS_HELP_STRING([--with-linker-hash-style],
2575 [Use linker with --hash-style=<style> when linking shared objects.
2576 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2577 if supported on the build system, and "sysv" otherwise.]))
2579 AC_ARG_WITH(jdk-home,
2580 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2581 [If you have installed JDK 8 or later on your system please supply the
2582 path here. Note that this is not the location of the java command but the
2583 location of the entire distribution. In case of cross-compiling, this
2584 is the JDK of the host os. Use --with-build-platform-configure-options
2585 to point to a different build platform JDK.]),
2589 AS_HELP_STRING([--with-help],
2590 [Enable the build of help. There is a special parameter "common" that
2591 can be used to bundle only the common part, .e.g help-specific icons.
2592 This is useful when you build the helpcontent separately.])
2594 Usage: --with-help build the old local help
2595 --without-help no local help (default)
2596 --with-help=html build the new HTML local help
2597 --with-help=online build the new HTML online help
2601 AC_ARG_WITH(omindex,
2602 AS_HELP_STRING([--with-omindex],
2603 [Enable the support of xapian-omega index for online help.])
2605 Usage: --with-omindex=server prepare the pages for omindex
2606 but let xapian-omega be built in server.
2607 --with-omindex=noxap do not prepare online pages
2612 libo_FUZZ_ARG_WITH(java,
2613 AS_HELP_STRING([--with-java=<java command>],
2614 [Specify the name of the Java interpreter command. Typically "java"
2615 which is the default.
2617 To build without support for Java components, applets, accessibility
2618 or the XML filters written in Java, use --without-java or --with-java=no.]),
2619 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2620 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2623 AC_ARG_WITH(jvm-path,
2624 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2625 [Use a specific JVM search path at runtime.
2626 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2629 AC_ARG_WITH(ant-home,
2630 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2631 [If you have installed Apache Ant on your system, please supply the path here.
2632 Note that this is not the location of the Ant binary but the location
2633 of the entire distribution.]),
2636 AC_ARG_WITH(symbol-config,
2637 AS_HELP_STRING([--with-symbol-config],
2638 [Configuration for the crashreport symbol upload]),
2640 [with_symbol_config=no])
2642 AC_ARG_WITH(export-validation,
2643 AS_HELP_STRING([--without-export-validation],
2644 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2645 ,with_export_validation=auto)
2647 AC_ARG_WITH(bffvalidator,
2648 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2649 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2650 Requires installed Microsoft Office Binary File Format Validator.
2651 Note: export-validation (--with-export-validation) is required to be turned on.
2652 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2653 ,with_bffvalidator=no)
2655 libo_FUZZ_ARG_WITH(junit,
2656 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2657 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2658 --without-junit disables those tests. Not relevant in the --without-java case.]),
2661 AC_ARG_WITH(hamcrest,
2662 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2663 [Specifies the hamcrest jar file to use for JUnit-based tests.
2664 --without-junit disables those tests. Not relevant in the --without-java case.]),
2667 AC_ARG_WITH(perl-home,
2668 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2669 [If you have installed Perl 5 Distribution, on your system, please
2670 supply the path here. Note that this is not the location of the Perl
2671 binary but the location of the entire distribution.]),
2674 libo_FUZZ_ARG_WITH(doxygen,
2676 [--with-doxygen=<absolute path to doxygen executable>],
2677 [Specifies the doxygen executable to use when generating ODK C/C++
2678 documentation. --without-doxygen disables generation of ODK C/C++
2679 documentation. Not relevant in the --disable-odk case.]),
2682 AC_ARG_WITH(visual-studio,
2683 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2684 [Specify which Visual Studio version to use in case several are
2685 installed. Currently 2019 (default) and 2022 are supported.]),
2688 AC_ARG_WITH(windows-sdk,
2689 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2690 [Specify which Windows SDK, or "Windows Kit", version to use
2691 in case the one that came with the selected Visual Studio
2692 is not what you want for some reason. Note that not all compiler/SDK
2693 combinations are supported. The intent is that this option should not
2698 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2699 [Use this option to build LibreOffice with additional UI language support.
2700 English (US) is always included by default.
2701 Separate multiple languages with space.
2702 For all languages, use --with-lang=ALL.]),
2705 AC_ARG_WITH(locales,
2706 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2707 [Use this option to limit the locale information built in.
2708 Separate multiple locales with space.
2709 Very experimental and might well break stuff.
2710 Just a desperate measure to shrink code and data size.
2711 By default all the locales available is included.
2712 Just works with --disable-dynloading. Defaults to "ALL".
2713 This option is completely unrelated to --with-lang.])
2715 Affects also our character encoding conversion
2716 tables for encodings mainly targeted for a
2717 particular locale, like EUC-CN and EUC-TW for
2718 zh, ISO-2022-JP for ja.
2720 Affects also our add-on break iterator data for
2723 For the default, all locales, don't use this switch at all.
2724 Specifying just the language part of a locale means all matching
2725 locales will be included.
2729 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2730 libo_FUZZ_ARG_WITH(krb5,
2731 AS_HELP_STRING([--with-krb5],
2732 [Enable MIT Kerberos 5 support in modules that support it.
2733 By default automatically enabled on platforms
2734 where a good system Kerberos 5 is available.]),
2737 libo_FUZZ_ARG_WITH(gssapi,
2738 AS_HELP_STRING([--with-gssapi],
2739 [Enable GSSAPI support in modules that support it.
2740 By default automatically enabled on platforms
2741 where a good system GSSAPI is available.]),
2744 libo_FUZZ_ARG_WITH(lxml,
2745 AS_HELP_STRING([--without-lxml],
2746 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2747 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2748 report widget classes and ids.]),
2751 libo_FUZZ_ARG_WITH(latest-c++,
2752 AS_HELP_STRING([--with-latest-c++],
2753 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2754 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2755 [with_latest_c__=no])
2757 AC_ARG_WITH(gtk3-build,
2758 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2759 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2760 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2762 dnl ===================================================================
2764 dnl ===================================================================
2766 AC_ARG_WITH(branding,
2767 AS_HELP_STRING([--with-branding=/path/to/images],
2768 [Use given path to retrieve branding images set.])
2770 Search for intro.png about.svg and logo.svg.
2771 If any is missing, default ones will be used instead.
2773 Search also progress.conf for progress
2774 settings on intro screen :
2776 PROGRESSBARCOLOR="255,255,255" Set color of
2777 progress bar. Comma separated RGB decimal values.
2778 PROGRESSSIZE="407,6" Set size of progress bar.
2779 Comma separated decimal values (width, height).
2780 PROGRESSPOSITION="61,317" Set position of progress
2781 bar from left,top. Comma separated decimal values.
2782 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2783 bar frame. Comma separated RGB decimal values.
2784 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2785 bar text. Comma separated RGB decimal values.
2786 PROGRESSTEXTBASELINE="287" Set vertical position of
2787 progress bar text from top. Decimal value.
2789 Default values will be used if not found.
2794 AC_ARG_WITH(extra-buildid,
2795 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2796 [Show addition build identification in about dialog.]),
2801 AS_HELP_STRING([--with-vendor="John the Builder"],
2802 [Set vendor of the build.]),
2805 AC_ARG_WITH(privacy-policy-url,
2806 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2807 [The URL to your privacy policy (needed when
2808 enabling online-update or crashreporting via breakpad)]),
2809 [if test "x$with_privacy_policy_url" = "xyes"; then
2810 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2811 elif test "x$with_privacy_policy_url" = "xno"; then
2812 with_privacy_policy_url="undefined"
2814 ,[with_privacy_policy_url="undefined"])
2816 AC_ARG_WITH(android-package-name,
2817 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2818 [Set Android package name of the build.]),
2821 AC_ARG_WITH(compat-oowrappers,
2822 AS_HELP_STRING([--with-compat-oowrappers],
2823 [Install oo* wrappers in parallel with
2824 lo* ones to keep backward compatibility.
2825 Has effect only with make distro-pack-install]),
2828 AC_ARG_WITH(os-version,
2829 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2830 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2833 AC_ARG_WITH(parallelism,
2834 AS_HELP_STRING([--with-parallelism],
2835 [Number of jobs to run simultaneously during build. Parallel builds can
2836 save a lot of time on multi-cpu machines. Defaults to the number of
2837 CPUs on the machine, unless you configure --enable-icecream - then to
2841 AC_ARG_WITH(all-tarballs,
2842 AS_HELP_STRING([--with-all-tarballs],
2843 [Download all external tarballs unconditionally]))
2845 AC_ARG_WITH(gdrive-client-id,
2846 AS_HELP_STRING([--with-gdrive-client-id],
2847 [Provides the client id of the application for OAuth2 authentication
2848 on Google Drive. If either this or --with-gdrive-client-secret is
2849 empty, the feature will be disabled]),
2852 AC_ARG_WITH(gdrive-client-secret,
2853 AS_HELP_STRING([--with-gdrive-client-secret],
2854 [Provides the client secret of the application for OAuth2
2855 authentication on Google Drive. If either this or
2856 --with-gdrive-client-id is empty, the feature will be disabled]),
2859 AC_ARG_WITH(alfresco-cloud-client-id,
2860 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2861 [Provides the client id of the application for OAuth2 authentication
2862 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2863 empty, the feature will be disabled]),
2866 AC_ARG_WITH(alfresco-cloud-client-secret,
2867 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2868 [Provides the client secret of the application for OAuth2
2869 authentication on Alfresco Cloud. If either this or
2870 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2873 AC_ARG_WITH(onedrive-client-id,
2874 AS_HELP_STRING([--with-onedrive-client-id],
2875 [Provides the client id of the application for OAuth2 authentication
2876 on OneDrive. If either this or --with-onedrive-client-secret is
2877 empty, the feature will be disabled]),
2880 AC_ARG_WITH(onedrive-client-secret,
2881 AS_HELP_STRING([--with-onedrive-client-secret],
2882 [Provides the client secret of the application for OAuth2
2883 authentication on OneDrive. If either this or
2884 --with-onedrive-client-id is empty, the feature will be disabled]),
2887 dnl Check for coredumpctl support to present information about crashing test processes:
2888 AC_ARG_WITH(coredumpctl,
2889 AS_HELP_STRING([--with-coredumpctl],
2890 [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2893 AC_ARG_WITH(buildconfig-recorded,
2894 AS_HELP_STRING([--with-buildconfig-recorded],
2895 [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2898 AC_MSG_CHECKING([whether to record build config])
2899 if test -z "$with_buildconfig_recorded"; then
2900 with_buildconfig_recorded=no
2902 if test "$with_buildconfig_recorded" = no; then
2905 AC_MSG_RESULT([yes])
2906 # replace backslashes, to get a valid c++ string
2907 config_args=$(echo $ac_configure_args | tr '\\' '/')
2908 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2909 AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2912 dnl ===================================================================
2913 dnl Do we want to use pre-build binary tarball for recompile
2914 dnl ===================================================================
2916 if test "$enable_library_bin_tar" = "yes" ; then
2917 USE_LIBRARY_BIN_TAR=TRUE
2919 USE_LIBRARY_BIN_TAR=
2921 AC_SUBST(USE_LIBRARY_BIN_TAR)
2923 dnl ===================================================================
2924 dnl Test whether build target is Release Build
2925 dnl ===================================================================
2926 AC_MSG_CHECKING([whether build target is Release Build])
2927 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2929 ENABLE_RELEASE_BUILD=
2930 dnl Pu the value on one line as make (at least on macOS) seems to ignore
2931 dnl the newlines and then complains about spaces.
2932 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/>'
2934 AC_MSG_RESULT([yes])
2935 ENABLE_RELEASE_BUILD=TRUE
2936 GET_TASK_ALLOW_ENTITLEMENT=
2938 AC_SUBST(ENABLE_RELEASE_BUILD)
2939 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2941 dnl ===================================================================
2942 dnl Test whether build should auto use hardening compiler flags
2943 dnl ===================================================================
2944 AC_MSG_CHECKING([whether build should auto use hardening compiler flags])
2945 if test "$enable_hardening_flags" = "" -o "$enable_hardening_flags" = "no"; then
2947 ENABLE_HARDENING_FLAGS=
2949 AC_MSG_RESULT([yes])
2950 ENABLE_HARDENING_FLAGS=TRUE
2952 AC_SUBST(ENABLE_HARDENING_FLAGS)
2954 AC_MSG_CHECKING([whether to build a Community flavor])
2955 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2956 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2957 AC_MSG_RESULT([yes])
2962 dnl ===================================================================
2963 dnl Test whether to sign Windows Build
2964 dnl ===================================================================
2965 AC_MSG_CHECKING([whether to sign windows build])
2966 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2967 AC_MSG_RESULT([yes])
2968 WINDOWS_BUILD_SIGNING="TRUE"
2971 WINDOWS_BUILD_SIGNING="FALSE"
2973 AC_SUBST(WINDOWS_BUILD_SIGNING)
2975 dnl ===================================================================
2976 dnl MacOSX build and runtime environment options
2977 dnl ===================================================================
2979 AC_ARG_WITH(macosx-version-min-required,
2980 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2981 [set the minimum OS version needed to run the built LibreOffice])
2983 e. g.: --with-macosx-version-min-required=10.15
2987 dnl ===================================================================
2988 dnl Check for incompatible options set by fuzzing, and reset those
2989 dnl automatically to working combinations
2990 dnl ===================================================================
2992 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2993 "$enable_dbus" != "$enable_avahi"; then
2994 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2995 enable_avahi=$enable_dbus
3000 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
3001 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
3005 add_lopath_before ()
3010 for dir in $LO_PATH ; do
3011 if test "$dir" != "$1" ; then
3012 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
3015 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3018 dnl ===================================================================
3019 dnl check for required programs (grep, awk, sed, bash)
3020 dnl ===================================================================
3025 if test -n "$1"; then
3026 if test "$build_os" = "cygwin"; then
3027 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3029 new_path=`cygpath -sm "$formatted_path"`
3032 new_path=`cygpath -u "$formatted_path"`
3037 if test "$2" = "after"; then
3038 add_lopath_after "$new_path"
3040 add_lopath_before "$new_path"
3046 AC_PATH_PROG( AWK, $AWK)
3047 if test -z "$AWK"; then
3048 AC_MSG_ERROR([install awk to run this script])
3051 AC_PATH_PROG(BASH, bash)
3052 if test -z "$BASH"; then
3053 AC_MSG_ERROR([bash not found in \$PATH])
3057 # prefer parallel compression tools, if available
3058 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3059 if test -z "$COMPRESSIONTOOL"; then
3060 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3061 if test -z "$COMPRESSIONTOOL"; then
3062 AC_MSG_ERROR([gzip not found in \$PATH])
3065 AC_SUBST(COMPRESSIONTOOL)
3067 AC_MSG_CHECKING([for GNU or BSD tar])
3068 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3069 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
3070 if test $? -eq 0; then
3075 AC_MSG_RESULT($GNUTAR)
3076 if test -z "$GNUTAR"; then
3077 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3081 AC_MSG_CHECKING([for tar's option to strip components])
3082 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3083 if test $? -eq 0; then
3084 STRIP_COMPONENTS="--strip-components"
3086 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3087 if test $? -eq 0; then
3088 STRIP_COMPONENTS="--strip-path"
3090 STRIP_COMPONENTS="unsupported"
3093 AC_MSG_RESULT($STRIP_COMPONENTS)
3094 if test x$STRIP_COMPONENTS = xunsupported; then
3095 AC_MSG_ERROR([you need a tar that is able to strip components.])
3097 AC_SUBST(STRIP_COMPONENTS)
3099 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3100 dnl desktop OSes from "mobile" ones.
3102 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3103 dnl In other words, that when building for an OS that is not a
3104 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3106 dnl Note the direction of the implication; there is no assumption that
3107 dnl cross-compiling would imply a non-desktop OS.
3109 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3110 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3111 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3112 if test "$_os" != Emscripten; then
3113 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3117 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3118 # also work with the default gtk3 plugin.
3119 if test "$enable_wasm_strip" = "yes"; then
3124 test "$_os" = Emscripten && enable_curl=no
3125 enable_database_connectivity=no
3128 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3129 enable_extension_integration=no
3130 enable_extensions=no
3131 enable_extension_update=no
3135 enable_lotuswordpro=no
3139 enable_online_update=no
3143 enable_report_builder=no
3145 enable_sdremote_bluetooth=no
3155 test_libpagemaker=no
3165 test "${with_fonts+set}" = set || with_fonts=yes
3166 test "${with_locales+set}" = set || with_locales=en
3168 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3169 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3170 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3171 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3172 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3173 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3174 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3175 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3176 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3177 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3178 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3179 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3180 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3181 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3182 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3183 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3184 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3185 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3188 EMSCRIPTEN_NEH_MAJOR=3
3189 EMSCRIPTEN_NEH_MINOR=1
3190 EMSCRIPTEN_NEH_TINY=3
3191 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3193 if test "$enable_wasm_exceptions" = yes; then
3194 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3195 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3196 if test $? -ne 0; then
3197 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3199 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3201 ENABLE_WASM_EXCEPTIONS=TRUE
3203 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3205 # Whether to build "avmedia" functionality or not.
3207 if test "$enable_avmedia" = yes; then
3208 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3209 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3211 test_gstreamer_1_0=no
3214 # Decide whether to build database connectivity stuff (including Base) or not.
3215 if test "$enable_database_connectivity" != no; then
3216 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3217 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3219 if test "$_os" = iOS; then
3220 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3222 disable_database_connectivity_dependencies
3225 if test -z "$enable_extensions"; then
3226 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3227 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3228 enable_extensions=yes
3232 DISABLE_SCRIPTING=''
3233 if test "$enable_scripting" = yes; then
3234 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3235 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3237 DISABLE_SCRIPTING='TRUE'
3238 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3241 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3242 # Disable dynamic_loading always for iOS and Android
3243 enable_dynamic_loading=no
3244 elif test -z "$enable_dynamic_loading"; then
3245 # Otherwise enable it unless specifically disabled
3246 enable_dynamic_loading=yes
3249 DISABLE_DYNLOADING=''
3250 if test "$enable_dynamic_loading" = yes; then
3251 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3253 DISABLE_DYNLOADING='TRUE'
3254 if test $_os != iOS -a $_os != Android; then
3255 enable_database_connectivity=no
3263 AC_SUBST(DISABLE_DYNLOADING)
3265 ENABLE_CUSTOMTARGET_COMPONENTS=
3266 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3267 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3268 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3269 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3272 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3274 if test "$enable_extensions" = yes; then
3275 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3276 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3278 enable_extension_integration=no
3279 enable_extension_update=no
3282 # remember SYSBASE value
3285 dnl ===================================================================
3286 dnl Sort out various gallery compilation options
3287 dnl ===================================================================
3288 WITH_GALLERY_BUILD=TRUE
3289 AC_MSG_CHECKING([how to build and package galleries])
3290 if test -n "${with_galleries}"; then
3291 if test "$with_galleries" = "build"; then
3292 if test "$enable_database_connectivity" = no; then
3293 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3295 AC_MSG_RESULT([build from source images internally])
3296 elif test "$with_galleries" = "no"; then
3298 AC_MSG_RESULT([disable non-internal gallery build])
3300 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3303 if test $_os != iOS -a $_os != Android; then
3304 AC_MSG_RESULT([internal src images for desktop])
3307 AC_MSG_RESULT([disable src image build])
3310 AC_SUBST(WITH_GALLERY_BUILD)
3312 dnl ===================================================================
3313 dnl Sort out various templates compilation options
3314 dnl ===================================================================
3316 AC_MSG_CHECKING([build with or without template files])
3317 if test -n "${with_templates}"; then
3318 if test "$with_templates" = "yes"; then
3319 AC_MSG_RESULT([enable all templates])
3320 elif test "$with_templates" = "no"; then
3322 AC_MSG_RESULT([disable non-internal templates])
3324 AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3327 if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3328 AC_MSG_RESULT([enable all templates])
3331 AC_MSG_RESULT([disable non-internal templates])
3334 AC_SUBST(WITH_TEMPLATES)
3336 dnl ===================================================================
3337 dnl Checks if ccache is available
3338 dnl ===================================================================
3340 if test "$enable_ccache" = "no"; then
3342 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3343 case "%$CC%$CXX%" in
3344 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3345 # assume that's good then
3346 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3347 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3348 CCACHE_DEPEND_MODE=1
3351 # try to use our own ccache if it is available and CCACHE was not already defined
3352 if test -z "$CCACHE"; then
3353 if test "$_os" = "WINNT"; then
3354 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3356 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3357 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3358 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3359 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3362 AC_PATH_PROG([CCACHE],[ccache],[not found])
3363 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3364 CCACHE=`win_short_path_for_make "$CCACHE"`
3365 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3367 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3368 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3369 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3377 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3378 # on windows/VC perhaps sccache is around?
3379 case "%$CC%$CXX%" in
3380 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3381 # assume that's good then
3382 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3383 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3384 CCACHE_DEPEND_MODE=1
3388 # for sharing code below, reuse CCACHE env var
3389 AC_PATH_PROG([CCACHE],[sccache],[not found])
3390 if test "$CCACHE" != "not found"; then
3391 CCACHE=`win_short_path_for_make "$CCACHE"`
3393 CCACHE_DEPEND_MODE=1
3398 if test "$CCACHE" = "not found"; then
3401 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3402 CCACHE_DEPEND_MODE=1
3403 # Need to check for ccache version: otherwise prevents
3404 # caching of the results (like "-x objective-c++" for Mac)
3405 if test $_os = Darwin -o $_os = iOS; then
3406 # Check ccache version
3407 AC_MSG_CHECKING([whether version of ccache is suitable])
3408 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3409 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3410 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3411 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3413 AC_MSG_RESULT([no, $CCACHE_VERSION])
3424 if test "$enable_ccache" = "nodepend"; then
3425 CCACHE_DEPEND_MODE=""
3427 AC_SUBST(CCACHE_DEPEND_MODE)
3429 # sccache defaults are good enough
3430 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3431 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3432 # or (...) max_size = 20.0 G
3433 # -p works with both 4.2 and 4.4
3434 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3435 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3436 if test "$ccache_size" = ""; then
3437 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3438 if test "$ccache_size" = ""; then
3441 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3442 if test $ccache_size -lt 1024; then
3444 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3445 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3447 # warn that ccache may be too small for debug build
3448 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3449 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3452 if test $ccache_size -lt 5; then
3453 #warn that ccache may be too small for debug build
3454 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3455 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3461 if test "$enable_z7_debug" != no; then
3462 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3463 ENABLE_Z7_DEBUG=TRUE
3466 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3467 add_warning "ccache will not work with --disable-z7-debug"
3469 AC_SUBST(ENABLE_Z7_DEBUG)
3471 dnl ===================================================================
3472 dnl Checks for C compiler,
3473 dnl The check for the C++ compiler is later on.
3474 dnl ===================================================================
3475 if test "$_os" != "WINNT"; then
3477 AC_MSG_CHECKING([gcc home])
3478 if test -z "$with_gcc_home"; then
3479 if test "$enable_icecream" = "yes"; then
3480 if test -d "/usr/lib/icecc/bin"; then
3481 GCC_HOME="/usr/lib/icecc/"
3482 elif test -d "/usr/libexec/icecc/bin"; then
3483 GCC_HOME="/usr/libexec/icecc/"
3484 elif test -d "/opt/icecream/bin"; then
3485 GCC_HOME="/opt/icecream/"
3487 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3491 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3492 GCC_HOME_SET="false"
3495 GCC_HOME="$with_gcc_home"
3497 AC_MSG_RESULT($GCC_HOME)
3500 if test "$GCC_HOME_SET" = "true"; then
3501 if test -z "$CC"; then
3502 CC="$GCC_HOME/bin/gcc"
3505 if test -z "$CXX"; then
3506 CXX="$GCC_HOME/bin/g++"
3512 COMPATH=`dirname "$CC"`
3513 if test "$COMPATH" = "."; then
3514 AC_PATH_PROGS(COMPATH, $CC)
3515 dnl double square bracket to get single because of M4 quote...
3516 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3518 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3520 dnl ===================================================================
3522 dnl ===================================================================
3523 AC_MSG_CHECKING([whether to build with Java support])
3524 if test "$with_java" != "no"; then
3525 if test "$DISABLE_SCRIPTING" = TRUE; then
3526 AC_MSG_RESULT([no, overridden by --disable-scripting])
3530 AC_MSG_RESULT([yes])
3532 AC_DEFINE(HAVE_FEATURE_JAVA)
3539 AC_SUBST(ENABLE_JAVA)
3541 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3543 dnl ENABLE_JAVA="" indicate no Java support at all
3545 dnl ===================================================================
3546 dnl Check macOS SDK and compiler
3547 dnl ===================================================================
3549 if test $_os = Darwin; then
3551 # The SDK in the currently selected Xcode should be found.
3553 AC_MSG_CHECKING([what macOS SDK to use])
3554 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3555 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3556 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3557 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3558 # problems that existed in the PPC days with target versions not being respected or random
3559 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3560 # SDK version is enough, no need to do both...
3561 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3562 if test ! -d "$MACOSX_SDK_PATH"; then
3563 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3565 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3566 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3567 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3568 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3570 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3571 # correct version in case such an old SDK is specified, it will be rejected later anyway
3572 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3573 if test $MACOSX_SDK_VERSION -lt 101500; then
3574 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3576 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3577 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3579 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3581 AC_MSG_CHECKING([what minimum version of macOS to require])
3582 if test "$with_macosx_version_min_required" = "" ; then
3583 if test "$host_cpu" = x86_64; then
3584 with_macosx_version_min_required="10.15";
3586 with_macosx_version_min_required="11.0";
3589 # see same notes about MACOSX_SDK_VERSION above
3590 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3591 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3592 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3594 AC_MSG_RESULT([$with_macosx_version_min_required])
3596 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3597 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3598 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3600 AC_MSG_RESULT([yes])
3603 # export this so that "xcrun" invocations later return matching values
3604 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3605 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3606 export DEVELOPER_DIR
3607 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3608 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3610 AC_MSG_CHECKING([whether Xcode is new enough])
3611 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3612 my_xcode_ver2=${my_xcode_ver1#Xcode }
3613 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3614 if test "$my_xcode_ver3" -ge 1205; then
3615 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3616 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3617 if test "$my_xcode_ver3" -ge 1600; then
3618 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3619 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3620 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3622 if test "$my_xcode_ver3" -ge 1500; then
3623 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3624 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3625 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3626 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3627 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3632 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3635 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3636 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3638 LIBTOOL=/usr/bin/libtool
3639 INSTALL_NAME_TOOL=install_name_tool
3640 if test -z "$save_CC"; then
3641 stdlib=-stdlib=libc++
3643 AC_MSG_CHECKING([what C compiler to use])
3644 CC="`xcrun -find clang`"
3645 CC_BASE=`first_arg_basename "$CC"`
3646 if test "$host_cpu" = x86_64; then
3647 CC+=" -target x86_64-apple-macos"
3649 CC+=" -target arm64-apple-macos"
3651 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3652 AC_MSG_RESULT([$CC])
3654 AC_MSG_CHECKING([what C++ compiler to use])
3655 CXX="`xcrun -find clang++`"
3656 CXX_BASE=`first_arg_basename "$CXX"`
3657 if test "$host_cpu" = x86_64; then
3658 CXX+=" -target x86_64-apple-macos"
3660 CXX+=" -target arm64-apple-macos"
3662 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3663 AC_MSG_RESULT([$CXX])
3665 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3668 STRIP=`xcrun -find strip`
3669 LIBTOOL=`xcrun -find libtool`
3670 RANLIB=`xcrun -find ranlib`
3673 AC_MSG_CHECKING([whether to do code signing])
3675 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3678 if test "$enable_macosx_code_signing" = yes; then
3679 # By default use the first suitable certificate (?).
3681 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3682 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3683 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3684 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3685 # "Developer ID Application" one.
3686 identity="Developer ID Application:"
3688 identity=$enable_macosx_code_signing
3690 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3691 if test -n "$identity"; then
3692 MACOSX_CODESIGNING_IDENTITY=$identity
3693 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3694 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3696 AC_MSG_ERROR([cannot determine identity to use])
3700 AC_MSG_CHECKING([whether to create a Mac App Store package])
3702 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3704 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3705 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3707 if test "$enable_macosx_package_signing" = yes; then
3708 # By default use the first suitable certificate.
3709 # It should be a "3rd Party Mac Developer Installer" one
3710 identity="3rd Party Mac Developer Installer:"
3712 identity=$enable_macosx_package_signing
3714 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3715 if test -n "$identity"; then
3716 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3717 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3718 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3720 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3724 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3725 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3728 AC_MSG_CHECKING([whether to sandbox the application])
3730 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3731 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3732 elif test "$enable_macosx_sandbox" = yes; then
3733 ENABLE_MACOSX_SANDBOX=TRUE
3734 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3735 AC_MSG_RESULT([yes])
3740 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3741 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3742 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3744 if test -n "$with_macosx_provisioning_profile" ; then
3745 if test ! -f "$with_macosx_provisioning_profile"; then
3746 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3748 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3749 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3750 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3751 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3752 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3756 AC_SUBST(MACOSX_SDK_PATH)
3757 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3758 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3759 AC_SUBST(INSTALL_NAME_TOOL)
3760 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3761 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3762 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3763 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3764 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3765 AC_SUBST(MACOSX_PROVISIONING_INFO)
3766 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3767 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3768 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3770 dnl ===================================================================
3771 dnl Check iOS SDK and compiler
3772 dnl ===================================================================
3774 if test $_os = iOS; then
3775 AC_MSG_CHECKING([what iOS SDK to use])
3777 if test "$enable_ios_simulator" = "yes"; then
3778 platformlc=iphonesimulator
3779 versionmin=-mios-simulator-version-min=14.5
3782 versionmin=-miphoneos-version-min=14.5
3785 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3787 if ! test -d "$sysroot"; then
3788 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3791 AC_MSG_RESULT($sysroot)
3793 stdlib="-stdlib=libc++"
3795 AC_MSG_CHECKING([what C compiler to use])
3796 CC="`xcrun -find clang`"
3797 CC_BASE=`first_arg_basename "$CC"`
3798 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3799 AC_MSG_RESULT([$CC])
3801 AC_MSG_CHECKING([what C++ compiler to use])
3802 CXX="`xcrun -find clang++`"
3803 CXX_BASE=`first_arg_basename "$CXX"`
3804 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3805 AC_MSG_RESULT([$CXX])
3807 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3810 STRIP=`xcrun -find strip`
3811 LIBTOOL=`xcrun -find libtool`
3812 RANLIB=`xcrun -find ranlib`
3815 AC_MSG_CHECKING([whether to treat the installation as read-only])
3817 if test $_os = Darwin; then
3818 enable_readonly_installset=yes
3819 elif test "$enable_extensions" != yes; then
3820 enable_readonly_installset=yes
3822 if test "$enable_readonly_installset" = yes; then
3823 AC_MSG_RESULT([yes])
3824 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3829 dnl ===================================================================
3830 dnl Structure of install set
3831 dnl ===================================================================
3833 if test $_os = Darwin; then
3834 LIBO_BIN_FOLDER=MacOS
3835 LIBO_ETC_FOLDER=Resources
3836 LIBO_LIBEXEC_FOLDER=MacOS
3837 LIBO_LIB_FOLDER=Frameworks
3838 LIBO_LIB_PYUNO_FOLDER=Resources
3839 LIBO_SHARE_FOLDER=Resources
3840 LIBO_SHARE_HELP_FOLDER=Resources/help
3841 LIBO_SHARE_JAVA_FOLDER=Resources/java
3842 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3843 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3844 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3845 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3846 LIBO_URE_BIN_FOLDER=MacOS
3847 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3848 LIBO_URE_LIB_FOLDER=Frameworks
3849 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3850 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3851 elif test $_os = WINNT; then
3852 LIBO_BIN_FOLDER=program
3853 LIBO_ETC_FOLDER=program
3854 LIBO_LIBEXEC_FOLDER=program
3855 LIBO_LIB_FOLDER=program
3856 LIBO_LIB_PYUNO_FOLDER=program
3857 LIBO_SHARE_FOLDER=share
3858 LIBO_SHARE_HELP_FOLDER=help
3859 LIBO_SHARE_JAVA_FOLDER=program/classes
3860 LIBO_SHARE_PRESETS_FOLDER=presets
3861 LIBO_SHARE_READMES_FOLDER=readmes
3862 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3863 LIBO_SHARE_SHELL_FOLDER=program/shell
3864 LIBO_URE_BIN_FOLDER=program
3865 LIBO_URE_ETC_FOLDER=program
3866 LIBO_URE_LIB_FOLDER=program
3867 LIBO_URE_MISC_FOLDER=program
3868 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3870 LIBO_BIN_FOLDER=program
3871 LIBO_ETC_FOLDER=program
3872 LIBO_LIBEXEC_FOLDER=program
3873 LIBO_LIB_FOLDER=program
3874 LIBO_LIB_PYUNO_FOLDER=program
3875 LIBO_SHARE_FOLDER=share
3876 LIBO_SHARE_HELP_FOLDER=help
3877 LIBO_SHARE_JAVA_FOLDER=program/classes
3878 LIBO_SHARE_PRESETS_FOLDER=presets
3879 LIBO_SHARE_READMES_FOLDER=readmes
3880 if test "$enable_fuzzers" != yes; then
3881 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3883 LIBO_SHARE_RESOURCE_FOLDER=resource
3885 LIBO_SHARE_SHELL_FOLDER=program/shell
3886 LIBO_URE_BIN_FOLDER=program
3887 LIBO_URE_ETC_FOLDER=program
3888 LIBO_URE_LIB_FOLDER=program
3889 LIBO_URE_MISC_FOLDER=program
3890 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3892 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3893 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3894 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3895 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3896 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3897 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3898 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3899 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3900 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3901 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3902 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3903 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3904 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3905 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3906 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3907 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3909 # Not all of them needed in config_host.mk, add more if need arises
3910 AC_SUBST(LIBO_BIN_FOLDER)
3911 AC_SUBST(LIBO_ETC_FOLDER)
3912 AC_SUBST(LIBO_LIB_FOLDER)
3913 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3914 AC_SUBST(LIBO_SHARE_FOLDER)
3915 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3916 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3917 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3918 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3919 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3920 AC_SUBST(LIBO_URE_BIN_FOLDER)
3921 AC_SUBST(LIBO_URE_ETC_FOLDER)
3922 AC_SUBST(LIBO_URE_LIB_FOLDER)
3923 AC_SUBST(LIBO_URE_MISC_FOLDER)
3924 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3926 dnl ===================================================================
3927 dnl Windows specific tests and stuff
3928 dnl ===================================================================
3932 # Return value: $regvalue
3935 if test "$build_os" = "wsl"; then
3936 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3940 local _regentry="/proc/registry${1}/${2}"
3941 if test -f "$_regentry"; then
3942 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3943 # Registry keys read via /proc/registry* are always \0 terminated!
3944 local _regvalue=$(tr -d '\0' < "$_regentry")
3945 if test $? -eq 0; then
3951 # Get a value from the 32-bit side of the Registry
3954 reg_get_value "32" "$1"
3957 # Get a value from the 64-bit side of the Registry
3960 reg_get_value "64" "$1"
3965 # Return value: $reglist
3968 if test "$build_os" = "wsl"; then
3969 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3973 reglist=$(ls "/proc/registry${1}/${2}")
3976 # List values from the 32-bit side of the Registry
3977 reg_list_values_32()
3979 reg_list_values "32" "$1"
3982 # List values from the 64-bit side of the Registry
3983 reg_list_values_64()
3985 reg_list_values "64" "$1"
3993 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
4002 PLATFORMID=windows_x86_64
4004 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4006 WIN_MULTI_ARCH="x86"
4012 PLATFORMID=windows_x86
4015 WIN_OTHER_ARCH="x64"
4020 PLATFORMID=windows_aarch64
4022 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4023 WIN_HOST_ARCH="arm64"
4028 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4032 case "$build_cpu" in
4033 x86_64) WIN_BUILD_ARCH="x64" ;;
4034 i*86) WIN_BUILD_ARCH="x86" ;;
4035 aarch64) WIN_BUILD_ARCH="arm64" ;;
4037 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4041 SCPDEFS="$SCPDEFS -D_MSC_VER"
4045 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4046 # other-arch won't, but wouldn't break the build (x64 on x86).
4047 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4048 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4052 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4053 # To allow building Windows multi-arch releases without cross-tooling
4054 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4055 cross_compiling="yes"
4059 if test "$cross_compiling" = "yes"; then
4060 export CROSS_COMPILING=TRUE
4061 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4062 ENABLE_WASM_STRIP=TRUE
4064 if test "$_os" = "Emscripten"; then
4065 if test "$with_main_module" = "calc"; then
4066 ENABLE_WASM_STRIP_WRITER=TRUE
4067 elif test "$with_main_module" = "writer"; then
4068 ENABLE_WASM_STRIP_CALC=TRUE
4073 BUILD_TYPE="$BUILD_TYPE NATIVE"
4075 AC_SUBST(CROSS_COMPILING)
4076 AC_SUBST(ENABLE_WASM_STRIP)
4077 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4078 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4080 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4081 # NOTE: must _not_ be used for bundled external libraries!
4083 if test "$GCC" = "yes"; then
4084 AC_MSG_CHECKING( for -isystem )
4086 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4087 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4089 if test -n "$ISYSTEM"; then
4095 if test -z "$ISYSTEM"; then
4096 # fall back to using -I
4101 dnl ===================================================================
4102 dnl Check which Visual Studio compiler is used
4103 dnl ===================================================================
4105 map_vs_year_to_version()
4107 # Return value: $vsversion
4119 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4123 vs_versions_to_check()
4125 # Args: $1 (optional) : versions to check, in the order of preference
4126 # Return value: $vsversions
4130 if test -n "$1"; then
4131 map_vs_year_to_version "$1"
4132 vsversions=$vsversion
4134 # Default version is 2019
4139 win_get_env_from_vsdevcmdbat()
4141 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4142 printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4143 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4144 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4145 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4147 if test "$build_os" = "wsl"; then
4148 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4150 chmod +x $WRAPPERBATCHFILEPATH
4151 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4153 rm -f $WRAPPERBATCHFILEPATH
4154 printf '%s' "$result"
4159 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4160 if test -n "$regvalue"; then
4161 PathFormat "$regvalue"
4162 UCRTSDKDIR=$formatted_path_unix
4163 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4164 UCRTVERSION=$regvalue
4166 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4170 if test -z "$UCRTSDKDIR"; then
4171 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4172 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4173 if test -f "$ide_env_file"; then
4174 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4175 UCRTSDKDIR=$formatted_path
4176 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4177 dnl Hack needed at least by tml:
4178 if test "$UCRTVERSION" = 10.0.15063.0 \
4179 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4180 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4182 UCRTVERSION=10.0.14393.0
4185 AC_MSG_ERROR([No UCRT found])
4193 # Args: $1 (optional) : The VS version year
4194 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4196 unset vctest vctoolset vcnumwithdot vcbuildnumber
4198 vs_versions_to_check "$1"
4199 if test "$build_os" = wsl; then
4200 vswhere="$PROGRAMFILESX86"
4201 if test -z "$vswhere"; then
4202 vswhere="c:\\Program Files (x86)"
4205 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4207 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4208 PathFormat "$vswhere"
4209 vswhere=$formatted_path_unix
4210 for ver in $vsversions; do
4211 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4212 if test -z "$vswhereoutput"; then
4213 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4215 # Fall back to all MS products (this includes VC++ Build Tools)
4216 if ! test -n "$vswhereoutput"; then
4217 AC_MSG_CHECKING([VC++ Build Tools and similar])
4218 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4220 if test -n "$vswhereoutput"; then
4221 PathFormat "$vswhereoutput"
4222 vctest=$formatted_path_unix
4227 if test -n "$vctest"; then
4229 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4230 vcnumwithdot=$vcnumwithdot.0
4232 case "$vcnumwithdot" in
4242 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4249 AC_MSG_CHECKING([$1 compiler])
4251 CL_EXE_PATH="$2/cl.exe"
4253 if test ! -f "$CL_EXE_PATH"; then
4254 if test "$1" = "multi-arch"; then
4255 AC_MSG_WARN([no compiler (cl.exe) in $2])
4258 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4262 dnl ===========================================================
4263 dnl Check for the corresponding mspdb*.dll
4264 dnl ===========================================================
4266 # MSVC 15.0 has libraries from 14.0?
4269 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4270 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4273 # The compiles has to find its shared libraries
4275 TEMP_PATH=`cygpath -d "$2"`
4276 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4278 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4279 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4284 AC_MSG_RESULT([$CL_EXE_PATH])
4290 if test "$_os" = "WINNT"; then
4291 AC_MSG_CHECKING([Visual C++])
4292 find_msvc "$with_visual_studio"
4293 if test -z "$vctest"; then
4294 if test -n "$with_visual_studio"; then
4295 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4297 AC_MSG_ERROR([no Visual Studio installation found])
4302 VC_PRODUCT_DIR="$vctest/VC"
4303 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4305 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4306 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4307 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4308 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4309 if test $? -ne 0; then
4315 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4316 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4317 test_cl_exe "build" "$MSVC_BUILD_PATH"
4320 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4321 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4322 test_cl_exe "host" "$MSVC_HOST_PATH"
4324 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4327 AC_MSG_CHECKING([for short pathname of VC product directory])
4328 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4329 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4334 AC_MSG_CHECKING([for UCRT location])
4336 # find_ucrt errors out if it doesn't find it
4337 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4338 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4339 ucrtincpath_formatted=$formatted_path
4340 # SOLARINC is used for external modules and must be set too.
4341 # And no, it's not sufficient to set SOLARINC only, as configure
4342 # itself doesn't honour it.
4343 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4344 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4345 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4346 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4348 AC_SUBST(UCRTSDKDIR)
4349 AC_SUBST(UCRTVERSION)
4351 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4352 # Find the proper version of MSBuild.exe to use based on the VS version
4353 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4354 if test -z "$regvalue" ; then
4355 if test "$WIN_BUILD_ARCH" != "x64"; then
4356 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4358 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4361 if test -d "$regvalue" ; then
4362 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4363 AC_MSG_RESULT([$regvalue])
4365 AC_MSG_ERROR([MSBuild.exe location not found])
4368 # Find the version of devenv.exe
4369 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4370 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4371 DEVENV_unix=$(cygpath -u "$DEVENV")
4372 if test ! -e "$DEVENV_unix"; then
4373 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4376 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4377 dnl needed when building CLR code:
4378 if test -z "$MSVC_CXX"; then
4379 # This gives us a posix path with 8.3 filename restrictions
4380 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4383 if test -z "$CC"; then
4385 CC_BASE=`first_arg_basename "$CC"`
4387 if test -z "$CXX"; then
4389 CXX_BASE=`first_arg_basename "$CXX"`
4392 if test -n "$CC"; then
4393 # Remove /cl.exe from CC case insensitive
4394 AC_MSG_NOTICE([found Visual C++ $vcyear])
4396 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4397 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4399 PathFormat "$COMPATH"
4400 COMPATH=`win_short_path_for_make "$formatted_path"`
4403 VCTOOLSET=$vctoolset
4405 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4406 # are always "better", we list them in reverse chronological order.
4408 case "$vcnumwithdot" in
4410 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4414 # The expectation is that --with-windows-sdk should not need to be used
4415 if test -n "$with_windows_sdk"; then
4416 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4417 *" "$with_windows_sdk" "*)
4418 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4421 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4426 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4431 AC_MSG_ERROR([Visual C++ not found after all, huh])
4434 # ERROR if VS version < 16.5
4435 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4436 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4437 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4438 // between Visual Studio versions and _MSC_VER:
4442 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4444 # WARN if VS version < 16.10
4445 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4446 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4450 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4452 if test $vs2019_recommended_version = yes; then
4453 AC_MSG_RESULT([yes])
4456 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."
4459 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4460 # version of the Explorer extension (and maybe other small
4461 # bits, too) needed when installing a 32-bit LibreOffice on a
4462 # 64-bit OS. The 64-bit Explorer extension is a feature that
4463 # has been present since long in OOo. Don't confuse it with
4464 # building LibreOffice itself as 64-bit code.
4469 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4470 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4471 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4472 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4475 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4476 AC_MSG_RESULT([found])
4478 AC_MSG_RESULT([not found])
4479 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4481 elif test "$WIN_HOST_ARCH" = "x64"; then
4486 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4487 AC_SUBST(CXX_X64_BINARY)
4489 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4490 # needed to support TWAIN scan on both 32- and 64-bit systems
4492 case "$WIN_HOST_ARCH" in
4494 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4495 if test -n "$CXX_X86_BINARY"; then
4497 AC_MSG_RESULT([preset])
4498 elif test -n "$WIN_MULTI_ARCH"; then
4500 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4501 AC_MSG_RESULT([found])
4503 AC_MSG_RESULT([not found])
4504 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4509 CXX_X86_BINARY=$MSVC_CXX
4513 AC_SUBST(CXX_X86_BINARY)
4521 AC_MSG_CHECKING([whether the compiler is actually Clang])
4522 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4528 [AC_MSG_RESULT([yes])
4530 [AC_MSG_RESULT([no])])
4531 AC_SUBST(COM_IS_CLANG)
4534 if test "$COM_IS_CLANG" = TRUE; then
4535 AC_MSG_CHECKING([whether Clang is new enough])
4536 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4537 #if !defined __apple_build_version__
4541 [my_apple_clang=yes],[my_apple_clang=])
4542 if test "$my_apple_clang" = yes; then
4543 AC_MSG_RESULT([assumed yes (Apple Clang)])
4544 elif test "$_os" = Emscripten; then
4545 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4547 if test "$_os" = WINNT; then
4548 dnl In which case, assume clang-cl:
4553 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4554 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4555 CLANGVER=`echo $clang_version \
4556 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4557 if test "$CLANGVER" -ge 120000; then
4558 AC_MSG_RESULT([yes ($clang_version)])
4560 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4562 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4563 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4567 SHOWINCLUDES_PREFIX=
4568 if test "$_os" = WINNT; then
4569 dnl We need to guess the prefix of the -showIncludes output, it can be
4571 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4572 echo "#include <stdlib.h>" > conftest.c
4573 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4574 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4575 rm -f conftest.c conftest.obj
4576 if test -z "$SHOWINCLUDES_PREFIX"; then
4577 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4579 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4582 AC_SUBST(SHOWINCLUDES_PREFIX)
4585 # prefix C with ccache if needed
4587 if test "$CCACHE" != ""; then
4588 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4592 CFLAGS="$CFLAGS --ccache-skip -O2"
4593 # msvc does not fail on unknown options, check stdout
4594 if test "$COM" = MSC; then
4595 CFLAGS="$CFLAGS -nologo"
4597 save_ac_c_werror_flag=$ac_c_werror_flag
4598 ac_c_werror_flag=yes
4599 dnl an empty program will do, we're checking the compiler flags
4600 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4601 [use_ccache=yes], [use_ccache=no])
4603 ac_c_werror_flag=$save_ac_c_werror_flag
4604 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4605 AC_MSG_RESULT([yes])
4608 CC_BASE="ccache $CC_BASE"
4614 # ===================================================================
4615 # check various GCC options that Clang does not support now but maybe
4616 # will somewhen in the future, check them even for GCC, so that the
4618 # ===================================================================
4621 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4622 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4624 CFLAGS="$CFLAGS -Werror -ggdb2"
4625 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4627 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4628 AC_MSG_RESULT([yes])
4633 if test "$host_cpu" = "m68k"; then
4634 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4636 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4637 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4639 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4640 AC_MSG_RESULT([yes])
4646 AC_SUBST(HAVE_GCC_GGDB2)
4648 dnl ===================================================================
4649 dnl Test the gcc version
4650 dnl ===================================================================
4651 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4652 AC_MSG_CHECKING([the GCC version])
4653 _gcc_version=`$CC -dumpfullversion`
4654 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4655 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4656 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4658 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4660 if test "$gcc_full_version" -lt 120000; then
4661 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4664 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4665 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4666 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4667 # (which reports itself as GCC 4.2.1).
4670 AC_SUBST(GCC_VERSION)
4672 dnl Set the ENABLE_DBGUTIL variable
4673 dnl ===================================================================
4674 AC_MSG_CHECKING([whether to build with additional debug utilities])
4675 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4676 ENABLE_DBGUTIL="TRUE"
4677 # this is an extra var so it can have different default on different MSVC
4678 # versions (in case there are version specific problems with it)
4679 MSVC_USE_DEBUG_RUNTIME="TRUE"
4681 AC_MSG_RESULT([yes])
4682 # cppunit and graphite expose STL in public headers
4683 if test "$with_system_cppunit" = "yes"; then
4684 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4686 with_system_cppunit=no
4688 if test "$with_system_graphite" = "yes"; then
4689 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4691 with_system_graphite=no
4693 if test "$with_system_orcus" = "yes"; then
4694 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4696 with_system_orcus=no
4698 if test "$with_system_libcmis" = "yes"; then
4699 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4701 with_system_libcmis=no
4703 if test "$with_system_hunspell" = "yes"; then
4704 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4706 with_system_hunspell=no
4708 if test "$with_system_gpgmepp" = "yes"; then
4709 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4711 with_system_gpgmepp=no
4713 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4714 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4715 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4716 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4717 # of those two is using the system variant:
4718 if test "$with_system_libnumbertext" = "yes"; then
4719 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4721 with_system_libnumbertext=no
4723 if test "$with_system_libwps" = "yes"; then
4724 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4726 with_system_libwps=no
4730 MSVC_USE_DEBUG_RUNTIME=""
4733 AC_SUBST(ENABLE_DBGUTIL)
4734 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4736 dnl Set the ENABLE_DEBUG variable.
4737 dnl ===================================================================
4738 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4739 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4741 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4742 if test -z "$libo_fuzzed_enable_debug"; then
4743 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4745 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4750 AC_MSG_CHECKING([whether to do a debug build])
4751 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4753 if test -n "$ENABLE_DBGUTIL" ; then
4754 AC_MSG_RESULT([yes (dbgutil)])
4756 AC_MSG_RESULT([yes])
4762 AC_SUBST(ENABLE_DEBUG)
4764 dnl ===================================================================
4765 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4766 dnl This is done only after compiler checks (need to know if Clang is
4767 dnl used, for different defaults) and after checking if a debug build
4768 dnl is wanted (non-debug builds get the default linker if not explicitly
4769 dnl specified otherwise).
4770 dnl All checks for linker features/options should come after this.
4771 dnl ===================================================================
4774 use_ld=-fuse-ld=${1%%:*}
4776 if test "$use_ld_path" != "$1"; then
4777 if test "$COM_IS_CLANG" = TRUE; then
4778 if test "$CLANGVER" -ge 120000; then
4779 use_ld="${use_ld} --ld-path=${use_ld_path}"
4781 use_ld="-fuse-ld=${use_ld_path}"
4784 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4785 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4786 # pickup the alternative linker, when called by libtool for linking.
4787 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4788 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4791 use_ld_fail_if_error=$2
4793 AC_MSG_CHECKING([for $use_ld linker support])
4794 use_ld_ldflags_save="$LDFLAGS"
4795 LDFLAGS="$LDFLAGS $use_ld"
4796 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4799 printf ("hello world\n");
4800 ])], USE_LD=$use_ld, [])
4801 if test -n "$USE_LD"; then
4802 AC_MSG_RESULT( yes )
4805 if test -n "$use_ld_fail_if_error"; then
4811 if test -n "$use_ld_ok"; then
4812 dnl keep the value of LDFLAGS
4815 LDFLAGS="$use_ld_ldflags_save"
4819 if test "$enable_ld" != "no"; then
4820 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4821 if test -n "$enable_ld"; then
4822 check_use_ld "$enable_ld" fail_if_error
4823 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4824 dnl non-debug builds default to the default linker
4826 elif test -n "$COM_IS_CLANG"; then
4828 if test $? -ne 0; then
4830 if test $? -ne 0; then
4835 # For gcc first try gold, new versions also support lld/mold.
4837 if test $? -ne 0; then
4839 if test $? -ne 0; then
4844 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4846 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4847 if test -z "$ld_used"; then
4850 AC_MSG_CHECKING([for linker that is used])
4851 AC_MSG_RESULT([$ld_used])
4852 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4853 if echo "$ld_used" | grep -q "^GNU ld"; then
4854 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4855 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4859 if test "$enable_ld" = "yes"; then
4860 AC_MSG_ERROR([--enable-ld not supported])
4867 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4868 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4869 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4870 bsymbolic_functions_ldflags_save=$LDFLAGS
4871 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4872 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4875 printf ("hello world\n");
4876 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4877 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4878 AC_MSG_RESULT( found )
4880 AC_MSG_RESULT( not found )
4882 LDFLAGS=$bsymbolic_functions_ldflags_save
4884 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4887 if test "$GCC" = "yes"; then
4888 for flag in "--gc-sections" "-dead_strip"; do
4889 AC_MSG_CHECKING([for $flag linker support])
4890 ldflags_save=$LDFLAGS
4891 LDFLAGS="$LDFLAGS -Wl,$flag"
4892 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4895 printf ("hello world\n");
4897 LD_GC_SECTIONS="-Wl,$flag"
4898 AC_MSG_RESULT( found )
4900 AC_MSG_RESULT( not found )
4902 LDFLAGS=$ldflags_save
4903 if test -n "$LD_GC_SECTIONS"; then
4908 AC_SUBST(LD_GC_SECTIONS)
4910 HAVE_EXTERNAL_DWARF=
4911 if test "$enable_split_debug" != no; then
4913 if test -n "$ENABLE_LTO"; then
4914 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4915 elif test "$enable_split_debug" = yes; then
4917 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4918 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4921 if test -n "$use_split_debug"; then
4922 if test "$_os" = "Emscripten"; then
4923 TEST_CC_FLAG=-gseparate-dwarf
4925 TEST_CC_FLAG=-gsplit-dwarf
4927 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4929 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4930 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4932 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4933 AC_MSG_RESULT([yes])
4935 if test "$enable_split_debug" = yes; then
4942 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4943 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4944 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4947 AC_SUBST(HAVE_EXTERNAL_DWARF)
4949 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4950 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4952 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4953 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4955 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4956 AC_MSG_RESULT([yes])
4960 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4963 if test "$enable_gdb_index" != "no"; then
4964 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4965 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4966 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4968 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4970 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4971 if test "$have_ggnu_pubnames" != "TRUE"; then
4972 if test "$enable_gdb_index" = "yes"; then
4973 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4978 AC_MSG_RESULT( yes )
4979 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4980 ldflags_save=$LDFLAGS
4981 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4982 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4985 printf ("hello world\n");
4986 ])], ENABLE_GDB_INDEX=TRUE, [])
4987 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4988 AC_MSG_RESULT( yes )
4990 if test "$enable_gdb_index" = "yes"; then
4996 LDFLAGS=$ldflags_save
5000 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5001 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
5002 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
5005 AC_SUBST(ENABLE_GDB_INDEX)
5007 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5010 if test "$enable_sal_log" = yes; then
5013 AC_SUBST(ENABLE_SAL_LOG)
5015 dnl Check for enable symbols option
5016 dnl ===================================================================
5017 AC_MSG_CHECKING([whether to generate debug information])
5018 if test -z "$enable_symbols"; then
5019 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5025 if test "$enable_symbols" = yes; then
5026 ENABLE_SYMBOLS_FOR=all
5027 AC_MSG_RESULT([yes])
5028 elif test "$enable_symbols" = no; then
5032 # Selective debuginfo.
5033 ENABLE_SYMBOLS_FOR="$enable_symbols"
5034 AC_MSG_RESULT([for "$enable_symbols"])
5036 AC_SUBST(ENABLE_SYMBOLS_FOR)
5037 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5038 # Building on Android with full symbols: without enough memory the linker never finishes currently.
5039 AC_MSG_CHECKING([whether enough memory is available for linking])
5040 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5041 # Check for 15GB, as Linux reports a bit less than the physical memory size.
5042 if test -n "$mem_size" -a $mem_size -lt 15728640; then
5043 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5045 AC_MSG_RESULT([yes])
5050 ENABLE_OPTIMIZED_DEBUG=
5051 AC_MSG_CHECKING([whether to compile with optimization flags])
5052 if test -z "$enable_optimized"; then
5053 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5056 enable_optimized=yes
5059 if test "$enable_optimized" = yes; then
5060 ENABLE_OPTIMIZED=TRUE
5061 AC_MSG_RESULT([yes])
5062 elif test "$enable_optimized" = debug; then
5063 ENABLE_OPTIMIZED_DEBUG=TRUE
5064 AC_MSG_RESULT([yes (debug)])
5066 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5067 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5069 CFLAGS="$CFLAGS -Werror -Og"
5070 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5072 if test "$HAVE_GCC_OG" = "TRUE"; then
5073 AC_MSG_RESULT([yes])
5078 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5079 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5084 AC_SUBST(ENABLE_OPTIMIZED)
5085 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5088 # determine CPUNAME, OS, ...
5104 if test "$enable_ios_simulator" = "yes"; then
5109 PLATFORMID=macosx_aarch64
5113 if test "$enable_ios_simulator" = "yes"; then
5118 PLATFORMID=macosx_x86_64
5121 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5134 if test "$enable_ios_simulator" = "yes"; then
5135 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5139 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5144 PLATFORMID=ios_arm64
5157 PLATFORMID=dragonfly_x86
5162 PLATFORMID=dragonfly_x86_64
5165 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5179 PLATFORMID=freebsd_aarch64
5185 PLATFORMID=freebsd_x86
5190 PLATFORMID=freebsd_x86_64
5195 PLATFORMID=freebsd_powerpc64
5200 PLATFORMID=freebsd_powerpc
5203 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5219 PLATFORMID=haiku_x86
5224 PLATFORMID=haiku_x86_64
5227 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5243 PLATFORMID=kfreebsd_x86
5248 PLATFORMID=kfreebsd_x86_64
5251 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5256 linux-gnu*|linux-musl*)
5266 PLATFORMID=linux_aarch64
5268 EPM_FLAGS="-a arm64"
5273 PLATFORMID=linux_alpha
5279 PLATFORMID=linux_arm_eabi
5283 PLATFORMID=linux_arm_oabi
5291 PLATFORMID=linux_hppa
5296 PLATFORMID=linux_x86
5301 PLATFORMID=linux_ia64
5307 PLATFORMID=linux_mips_eb
5312 EPM_FLAGS="-a mips64"
5313 PLATFORMID=linux_mips64_eb
5318 EPM_FLAGS="-a mips64el"
5319 PLATFORMID=linux_mips64_el
5324 EPM_FLAGS="-a mipsel"
5325 PLATFORMID=linux_mips_el
5330 EPM_FLAGS="-a riscv64"
5331 PLATFORMID=linux_riscv64
5336 PLATFORMID=linux_m68k
5341 PLATFORMID=linux_powerpc
5346 PLATFORMID=linux_powerpc64
5350 RTL_ARCH=PowerPC_64_LE
5351 PLATFORMID=linux_powerpc64_le
5356 PLATFORMID=linux_sparc
5361 PLATFORMID=linux_sparc64
5366 PLATFORMID=linux_s390x
5371 PLATFORMID=linux_x86_64
5375 RTL_ARCH=LOONGARCH64
5376 PLATFORMID=linux_loongarch64
5379 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5395 PLATFORMID=android_arm_eabi
5400 PLATFORMID=android_aarch64
5405 PLATFORMID=android_x86
5410 PLATFORMID=android_x86_64
5413 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5428 PLATFORMID=netbsd_x86
5433 PLATFORMID=netbsd_powerpc
5438 PLATFORMID=netbsd_sparc
5443 PLATFORMID=netbsd_x86_64
5446 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5461 PLATFORMID=openbsd_x86
5466 PLATFORMID=openbsd_x86_64
5469 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5472 SOLARINC="$SOLARINC -I/usr/local/include"
5485 PLATFORMID=solaris_x86
5490 PLATFORMID=solaris_sparc
5495 PLATFORMID=solaris_sparc64
5498 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5501 SOLARINC="$SOLARINC -I/usr/local/include"
5514 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5519 PLATFORMID=linux_x86
5523 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5528 if test "$enable_gui" = "no"; then
5529 if test "$using_x11" != yes; then
5530 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5536 AC_DEFINE(HAVE_FEATURE_UI)
5538 AC_SUBST(DISABLE_GUI)
5540 if test "$with_x" = "no"; then
5544 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5545 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5548 if test "$using_x11" = yes; then
5549 if test "$USING_X11" = TRUE; then
5550 AC_DEFINE(USING_X11)
5553 if test "$DISABLE_DYNLOADING" = TRUE; then
5558 if test "$USING_X11" = TRUE; then
5559 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5563 WORKDIR="${BUILDDIR}/workdir"
5564 INSTDIR="${BUILDDIR}/instdir"
5565 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5566 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5574 AC_SUBST([INSTROOT])
5575 AC_SUBST([INSTROOTBASE])
5579 AC_SUBST(PLATFORMID)
5580 AC_SUBST(WINDOWS_X64)
5581 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5582 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5584 if test "$OS" = WNT -a "$COM" = MSC; then
5586 INTEL) CPPU_ENV=msci ;;
5587 X86_64) CPPU_ENV=mscx ;;
5588 AARCH64) CPPU_ENV=msca ;;
5590 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5598 dnl ===================================================================
5599 dnl Test which package format to use
5600 dnl ===================================================================
5601 AC_MSG_CHECKING([which package format to use])
5602 if test -n "$with_package_format" -a "$with_package_format" != no; then
5603 for i in $with_package_format; do
5605 bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5608 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5609 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5610 deb - Debian software distribution
5611 pkg - Solaris software distribution
5612 rpm - RedHat software distribution
5614 LibreOffice additionally supports:
5615 archive - .tar.gz or .zip
5617 installed - installation tree
5623 # fakeroot is needed to ensure correct file ownerships/permissions
5624 # inside deb packages and tar archives created on Linux and Solaris.
5625 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5626 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5627 if test "$FAKEROOT" = "no"; then
5629 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5632 PKGFORMAT="$with_package_format"
5633 AC_MSG_RESULT([$PKGFORMAT])
5636 AC_MSG_RESULT([none])
5640 dnl ===================================================================
5641 dnl handle help related options
5643 dnl If you change help related options, please update README.help
5644 dnl ===================================================================
5651 AC_MSG_CHECKING([which help to build])
5652 if test -n "$with_help" -a "$with_help" != "no"; then
5653 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5654 BUILD_TYPE="$BUILD_TYPE HELP"
5655 case "$with_help" in
5657 ENABLE_HTMLHELP=TRUE
5659 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5660 AC_MSG_RESULT([HTML (local)])
5663 ENABLE_HTMLHELP=TRUE
5665 AC_MSG_RESULT([HTML (online)])
5669 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5670 AC_MSG_RESULT([XML (local)])
5673 AC_MSG_ERROR([Unknown --with-help=$with_help])
5680 AC_MSG_CHECKING([if we need to build the help index tooling])
5681 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5682 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5684 AC_MSG_RESULT([yes])
5689 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5690 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5691 if test "$HELP_ONLINE" != TRUE; then
5692 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5694 case "$with_omindex" in
5696 HELP_OMINDEX_PAGE=TRUE
5697 AC_MSG_RESULT([SERVER])
5700 AC_MSG_RESULT([NOXAP])
5703 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5710 AC_MSG_CHECKING([whether to include the XML-help support])
5711 if test "$enable_xmlhelp" = yes; then
5712 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5714 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5715 AC_MSG_RESULT([yes])
5717 if test "$with_help" = yes; then
5718 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5723 dnl Test whether to integrate helppacks into the product's installer
5724 AC_MSG_CHECKING([for helppack integration])
5725 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5726 AC_MSG_RESULT([no integration])
5728 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5729 AC_MSG_RESULT([integration])
5732 AC_SUBST([ENABLE_HTMLHELP])
5733 AC_SUBST([HELP_OMINDEX_PAGE])
5734 AC_SUBST([HELP_ONLINE])
5735 # WITH_HELPPACKS is used only in configure
5737 dnl ===================================================================
5738 dnl Set up a different compiler to produce tools to run on the build
5739 dnl machine when doing cross-compilation
5740 dnl ===================================================================
5742 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5743 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5744 if test "$cross_compiling" = "yes"; then
5745 AC_MSG_CHECKING([for BUILD platform configuration])
5747 rm -rf CONF-FOR-BUILD config_build.mk
5748 mkdir CONF-FOR-BUILD
5749 # Here must be listed all files needed when running the configure script. In particular, also
5750 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5751 # keep them in the same order as there.
5752 (cd $SRC_ROOT && tar cf - \
5754 bin/get_config_variables \
5755 solenv/bin/getcompver.awk \
5756 solenv/inc/langlist.mk \
5759 config_host_lang.mk.in \
5761 bin/bffvalidator.sh.in \
5762 bin/odfvalidator.sh.in \
5763 bin/officeotron.sh.in \
5764 instsetoo_native/util/openoffice.lst.in \
5766 sysui/desktop/macosx/Info.plist.in \
5767 sysui/desktop/macosx/hardened_runtime.xcent.in \
5768 sysui/desktop/macosx/lo.xcent.in \
5769 .vscode/vs-code-template.code-workspace.in \
5770 solenv/lockfile/autoconf.h.in \
5772 | (cd CONF-FOR-BUILD && tar xf -)
5773 cp configure CONF-FOR-BUILD
5774 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5776 unset COM USING_X11 OS CPUNAME
5777 unset CC CXX SYSBASE CFLAGS
5778 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5779 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5780 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5781 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5782 if test -n "$CC_FOR_BUILD"; then
5783 export CC="$CC_FOR_BUILD"
5784 CC_BASE=`first_arg_basename "$CC"`
5786 if test -n "$CXX_FOR_BUILD"; then
5787 export CXX="$CXX_FOR_BUILD"
5788 CXX_BASE=`first_arg_basename "$CXX"`
5790 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5793 # Handle host configuration, which affects the cross-toolset too
5795 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5796 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5797 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5798 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5799 if test -n "$ENABLE_JAVA"; then
5802 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5803 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5806 if test -z "$with_jdk_home"; then
5807 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.])
5812 sub_conf_opts="$sub_conf_opts --without-java"
5814 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5815 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5816 test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5817 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5818 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5819 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5820 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5821 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5822 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5823 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5824 if test "$_os" = "Emscripten"; then
5825 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5826 if test "${with_main_module+set}" = set; then
5827 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5829 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5832 # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5833 # when cross-compiling for aarch64, overriding the defaults below
5834 test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5836 # Don't bother having configure look for stuff not needed for the build platform anyway
5837 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5838 sub_conf_defaults=" \
5839 --build="$build_alias" \
5840 --disable-cairo-canvas \
5842 --disable-customtarget-components \
5843 --disable-firebird-sdbc \
5845 --disable-gstreamer-1-0 \
5849 --disable-mariadb-sdbc \
5851 --disable-online-update \
5854 --disable-pdfimport \
5855 --disable-postgresql-sdbc \
5858 --enable-dynamic-loading \
5859 --enable-icecream="$enable_icecream" \
5865 # single quotes added for better readability in case of spaces
5866 echo " Running CONF-FOR-BUILD/configure" \
5867 $sub_conf_defaults \
5868 --with-parallelism="'$with_parallelism'" \
5869 --with-theme="'$with_theme'" \
5870 --with-vendor="'$with_vendor'" \
5872 $with_build_platform_configure_options \
5876 $sub_conf_defaults \
5877 --with-parallelism="$with_parallelism" \
5878 --with-theme="$with_theme" \
5879 "--with-vendor=$with_vendor" \
5881 $with_build_platform_configure_options \
5883 2>&1 | sed -e 's/^/ /'
5884 if test [${PIPESTATUS[0]}] -ne 0; then
5885 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5888 # filter permitted build targets
5889 PERMITTED_BUILD_TARGETS="
5928 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5929 # newlined lists, to use grep as a filter
5930 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5931 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5932 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5933 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5935 cp config_host.mk ../config_build.mk
5936 cp config_host_lang.mk ../config_build_lang.mk
5937 mv config.log ../config.Build.log
5938 mkdir -p ../config_build
5939 mv config_host/*.h ../config_build
5940 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5942 # all these will get a _FOR_BUILD postfix
5943 DIRECT_FOR_BUILD_SETTINGS="
5951 JDK_SECURITYMANAGER_DISALLOWED
5955 LIBO_URE_MISC_FOLDER
5961 # these overwrite host config with build config
5962 OVERWRITING_SETTINGS="
5977 # these need some special handling
5978 EXTRA_HANDLED_SETTINGS="
5985 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5989 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5990 echo "$line" >>build-config
5992 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5994 VV=`eval "echo $VV"`
5995 if test -n "$VV"; then
5996 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5997 echo "$line" >>build-config
6001 for V in $OVERWRITING_SETTINGS; do
6003 VV=`eval "echo $VV"`
6004 if test -n "$VV"; then
6005 line=${V}='${'${V}:-$VV'}'
6006 echo "$line" >>build-config
6010 for V in INSTDIR INSTROOT WORKDIR; do
6012 VV=`eval "echo $VV"`
6013 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6014 if test -n "$VV"; then
6015 line="${V}_FOR_BUILD='$VV'"
6016 echo "$line" >>build-config
6021 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6022 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])
6023 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6024 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6026 eval `cat CONF-FOR-BUILD/build-config`
6028 AC_MSG_RESULT([checking for BUILD platform configuration... done])
6030 rm -rf CONF-FOR-BUILD
6034 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6035 CXX_FOR_BUILD="$CXX"
6036 INSTDIR_FOR_BUILD="$INSTDIR"
6037 INSTROOT_FOR_BUILD="$INSTROOT"
6038 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6039 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6040 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6041 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6042 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6043 WORKDIR_FOR_BUILD="$WORKDIR"
6045 AC_SUBST(OS_FOR_BUILD)
6046 AC_SUBST(INSTDIR_FOR_BUILD)
6047 AC_SUBST(INSTROOT_FOR_BUILD)
6048 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6049 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6050 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6051 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6052 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6053 AC_SUBST(WORKDIR_FOR_BUILD)
6054 AC_SUBST(CC_FOR_BUILD)
6055 AC_SUBST(CXX_FOR_BUILD)
6056 AC_SUBST(CPPU_ENV_FOR_BUILD)
6058 dnl ===================================================================
6059 dnl Check for lockfile deps
6060 dnl ===================================================================
6061 if test -z "$CROSS_COMPILING"; then
6062 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6063 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6064 AC_MSG_CHECKING([which lockfile binary to use])
6065 case "$with_system_lockfile" in
6067 AC_MSG_RESULT([external])
6068 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6071 AC_MSG_RESULT([internal])
6074 if test -x "$with_system_lockfile"; then
6075 LOCKFILE="$with_system_lockfile"
6077 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6079 AC_MSG_RESULT([$with_system_lockfile])
6084 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6085 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6088 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6089 AC_CHECK_FUNCS([utime utimes])
6092 dnl ===================================================================
6093 dnl Check for syslog header
6094 dnl ===================================================================
6095 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6097 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6098 dnl ===================================================================
6099 AC_MSG_CHECKING([whether to turn warnings to errors])
6100 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6101 ENABLE_WERROR="TRUE"
6102 PYTHONWARNINGS="error"
6103 AC_MSG_RESULT([yes])
6105 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6106 ENABLE_WERROR="TRUE"
6107 PYTHONWARNINGS="error"
6108 AC_MSG_RESULT([yes])
6113 AC_SUBST(ENABLE_WERROR)
6114 AC_SUBST(PYTHONWARNINGS)
6116 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6117 dnl ===================================================================
6118 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6119 if test -z "$enable_assert_always_abort"; then
6120 if test "$ENABLE_DEBUG" = TRUE; then
6121 enable_assert_always_abort=yes
6123 enable_assert_always_abort=no
6126 if test "$enable_assert_always_abort" = "yes"; then
6127 ASSERT_ALWAYS_ABORT="TRUE"
6128 AC_MSG_RESULT([yes])
6130 ASSERT_ALWAYS_ABORT="FALSE"
6133 AC_SUBST(ASSERT_ALWAYS_ABORT)
6135 # Determine whether to use ooenv for the instdir installation
6136 # ===================================================================
6137 if test $_os != "WINNT" -a $_os != "Darwin"; then
6138 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6139 if test -z "$enable_ooenv"; then
6140 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6146 if test "$enable_ooenv" = "no"; then
6150 AC_MSG_RESULT([yes])
6153 AC_SUBST(ENABLE_OOENV)
6155 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6156 if test "$enable_qt5" = "no"; then
6157 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6163 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6164 if test "$enable_qt6" = "no"; then
6165 AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6172 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6173 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6174 AC_MSG_RESULT([yes])
6176 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6180 AC_SUBST(ENABLE_PAGEIN)
6182 dnl ===================================================================
6183 dnl check for cups support
6184 dnl ===================================================================
6186 AC_MSG_CHECKING([whether to enable CUPS support])
6187 if test "$test_cups" = yes -a "$enable_cups" != no; then
6189 AC_MSG_RESULT([yes])
6191 AC_MSG_CHECKING([whether cups support is present])
6192 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6193 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6194 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6195 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6201 AC_SUBST(ENABLE_CUPS)
6203 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6205 dnl whether to find & fetch external tarballs?
6206 dnl ===================================================================
6207 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6208 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6209 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6211 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6214 if test -z "$TARFILE_LOCATION"; then
6215 if test -d "$SRC_ROOT/src" ; then
6216 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6217 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6219 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6221 AbsolutePath "$TARFILE_LOCATION"
6222 PathFormat "${absolute_path}"
6223 TARFILE_LOCATION="${formatted_path_unix}"
6225 AC_SUBST(TARFILE_LOCATION)
6227 AC_MSG_CHECKING([whether we want to fetch tarballs])
6228 if test "$enable_fetch_external" != "no"; then
6229 if test "$with_all_tarballs" = "yes"; then
6230 AC_MSG_RESULT([yes, all of them])
6231 DO_FETCH_TARBALLS="ALL"
6233 AC_MSG_RESULT([yes, if we use them])
6234 DO_FETCH_TARBALLS="TRUE"
6240 AC_SUBST(DO_FETCH_TARBALLS)
6242 dnl Test whether to include MySpell dictionaries
6243 dnl ===================================================================
6244 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6245 if test "$with_myspell_dicts" = "yes"; then
6246 AC_MSG_RESULT([yes])
6247 WITH_MYSPELL_DICTS=TRUE
6248 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6249 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6254 AC_SUBST(WITH_MYSPELL_DICTS)
6256 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6257 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6258 if test "$with_system_dicts" = yes; then
6259 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6261 with_system_dicts=no
6264 AC_MSG_CHECKING([whether to use dicts from external paths])
6265 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6266 AC_MSG_RESULT([yes])
6268 AC_MSG_CHECKING([for spelling dictionary directory])
6269 if test -n "$with_external_dict_dir"; then
6270 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6272 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6273 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6274 DICT_SYSTEM_DIR=file:///usr/share/myspell
6277 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6278 AC_MSG_CHECKING([for hyphenation patterns directory])
6279 if test -n "$with_external_hyph_dir"; then
6280 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6282 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6284 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6285 AC_MSG_CHECKING([for thesaurus directory])
6286 if test -n "$with_external_thes_dir"; then
6287 THES_SYSTEM_DIR=file://$with_external_thes_dir
6289 THES_SYSTEM_DIR=file:///usr/share/mythes
6291 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6296 AC_SUBST(SYSTEM_DICTS)
6297 AC_SUBST(DICT_SYSTEM_DIR)
6298 AC_SUBST(HYPH_SYSTEM_DIR)
6299 AC_SUBST(THES_SYSTEM_DIR)
6301 dnl ===================================================================
6302 dnl Precompiled headers.
6304 AC_MSG_CHECKING([whether to enable pch feature])
6305 if test -z "$enable_pch"; then
6306 if test "$_os" = "WINNT"; then
6307 # Enabled by default on Windows.
6309 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6310 if test -z "$enable_ccache" -a "$SCCACHE"; then
6317 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6318 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6320 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6321 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6323 if test "$enable_pch" = "system"; then
6325 AC_MSG_RESULT([yes (system headers)])
6326 elif test "$enable_pch" = "base"; then
6328 AC_MSG_RESULT([yes (system and base headers)])
6329 elif test "$enable_pch" = "normal"; then
6331 AC_MSG_RESULT([yes (normal)])
6332 elif test "$enable_pch" = "full"; then
6334 AC_MSG_RESULT([yes (full)])
6335 elif test "$enable_pch" = "yes"; then
6336 # Pick a suitable default.
6337 if test "$GCC" = "yes"; then
6338 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6339 # while making the PCHs larger and rebuilds more likely.
6341 AC_MSG_RESULT([yes (system and base headers)])
6343 # With MSVC the highest level makes a significant difference,
6344 # and it was the default when there used to be no PCH levels.
6346 AC_MSG_RESULT([yes (full)])
6348 elif test "$enable_pch" = "no"; then
6351 AC_MSG_ERROR([Unknown value for --enable-pch])
6353 AC_SUBST(ENABLE_PCH)
6354 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6355 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6356 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6357 if test "$CCACHE_BIN" != "not found"; then
6358 AC_MSG_CHECKING([ccache version])
6359 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6360 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6361 AC_MSG_RESULT([$CCACHE_VERSION])
6362 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6363 if test "$CCACHE_NUMVER" -gt "030701"; then
6364 AC_MSG_RESULT([yes])
6366 AC_MSG_RESULT([no (not newer than 3.7.1)])
6372 PCH_INSTANTIATE_TEMPLATES=
6373 if test -n "$ENABLE_PCH"; then
6374 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6376 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6377 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6379 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6385 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6387 BUILDING_PCH_WITH_OBJ=
6388 if test -n "$ENABLE_PCH"; then
6389 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6391 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6392 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6394 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6400 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6405 if test "$COM" = MSC; then
6406 fpch_prefix="-Xclang "
6408 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6409 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6411 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6412 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6413 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6415 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6416 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6417 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6419 if test -n "$PCH_CODEGEN"; then
6425 AC_SUBST(PCH_CODEGEN)
6426 AC_SUBST(PCH_NO_CODEGEN)
6428 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6429 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6431 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6432 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6434 if test -n "$PCH_DEBUGINFO"; then
6440 AC_SUBST(PCH_DEBUGINFO)
6444 AC_MSG_CHECKING([the GNU Make version])
6445 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6446 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6447 if test "$_make_longver" -ge "040000"; then
6448 AC_MSG_RESULT([$GNUMAKE $_make_version])
6450 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6453 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6455 if test "$_make_ver_check" = ""; then
6459 HAVE_LD_HASH_STYLE=FALSE
6460 WITH_LINKER_HASH_STYLE=
6461 AC_MSG_CHECKING([for --hash-style gcc linker support])
6462 if test "$GCC" = "yes"; then
6463 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6464 hash_styles="gnu sysv"
6465 elif test "$with_linker_hash_style" = "no"; then
6468 hash_styles="$with_linker_hash_style"
6471 for hash_style in $hash_styles; do
6472 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6473 hash_style_ldflags_save=$LDFLAGS
6474 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6476 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6483 HAVE_LD_HASH_STYLE=TRUE
6484 WITH_LINKER_HASH_STYLE=$hash_style
6486 [HAVE_LD_HASH_STYLE=FALSE],
6487 [HAVE_LD_HASH_STYLE=FALSE])
6488 LDFLAGS=$hash_style_ldflags_save
6491 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6492 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6496 LDFLAGS=$hash_style_ldflags_save
6500 AC_SUBST(HAVE_LD_HASH_STYLE)
6501 AC_SUBST(WITH_LINKER_HASH_STYLE)
6503 dnl ===================================================================
6504 dnl Check whether there's a Perl version available.
6505 dnl ===================================================================
6506 if test -z "$with_perl_home"; then
6507 AC_PATH_PROG(PERL, perl)
6509 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6510 _perl_path="$with_perl_home/bin/perl"
6511 if test -x "$_perl_path"; then
6514 AC_MSG_ERROR([$_perl_path not found])
6518 dnl ===================================================================
6519 dnl Testing for Perl version 5 or greater.
6520 dnl $] is the Perl version variable, it is returned as an integer
6521 dnl ===================================================================
6522 if test "$PERL"; then
6523 AC_MSG_CHECKING([the Perl version])
6524 ${PERL} -e "exit($]);"
6526 if test "$_perl_version" -lt 5; then
6527 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6529 AC_MSG_RESULT([Perl $_perl_version])
6531 AC_MSG_ERROR([Perl not found, install Perl 5])
6534 dnl ===================================================================
6535 dnl Testing for required Perl modules
6536 dnl ===================================================================
6538 AC_MSG_CHECKING([for required Perl modules])
6539 perl_use_string="use Cwd ; use Digest::MD5"
6540 if test "$_os" = "WINNT"; then
6541 if test -n "$PKGFORMAT"; then
6542 for i in $PKGFORMAT; do
6545 # for getting fonts versions to use in MSI
6546 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6552 if test "$with_system_hsqldb" = "yes"; then
6553 perl_use_string="$perl_use_string ; use Archive::Zip"
6555 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6556 # OpenSSL needs that to build
6557 perl_use_string="$perl_use_string ; use FindBin"
6559 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6560 AC_MSG_RESULT([all modules found])
6562 AC_MSG_RESULT([failed to find some modules])
6563 # Find out which modules are missing.
6564 for i in $perl_use_string; do
6565 if test "$i" != "use" -a "$i" != ";"; then
6566 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6567 missing_perl_modules="$missing_perl_modules $i"
6572 The missing Perl modules are: $missing_perl_modules
6573 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6576 dnl ===================================================================
6577 dnl Check for pkg-config
6578 dnl ===================================================================
6579 if test "$_os" != "WINNT"; then
6582 AC_SUBST(PKG_CONFIG)
6583 AC_SUBST(PKG_CONFIG_PATH)
6584 AC_SUBST(PKG_CONFIG_LIBDIR)
6586 if test "$_os" != "WINNT"; then
6588 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6589 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6590 # explicitly. Or put /path/to/compiler in PATH yourself.
6593 if test "$COM_IS_CLANG" = "TRUE"; then
6596 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6597 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6598 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6599 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6600 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6601 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6610 dnl ===================================================================
6611 dnl pkg-config checks on macOS
6612 dnl ===================================================================
6614 if test $_os = Darwin; then
6615 AC_MSG_CHECKING([for bogus pkg-config])
6616 if test -n "$PKG_CONFIG"; then
6617 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6618 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6620 if test "$enable_bogus_pkg_config" = "yes"; then
6621 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6623 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.])
6627 AC_MSG_RESULT([no, good])
6633 # Return value: $csctest
6637 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6638 if test -n "$regvalue"; then
6646 # Return value: $altest
6650 # We need this check to detect 4.6.1 or above.
6651 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6652 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6653 PathFormat "$regvalue"
6654 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6660 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6661 for x in $reglist; do
6662 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6663 PathFormat "$regvalue"
6664 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6675 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
6676 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6677 if test -n "$regvalue"; then
6682 AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6685 find_winsdk_version()
6687 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6688 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6690 unset winsdktest winsdkbinsubdir winsdklibsubdir
6694 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6695 if test -n "$regvalue"; then
6696 winsdktest=$regvalue
6697 winsdklibsubdir=win8
6702 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6703 if test -n "$regvalue"; then
6704 winsdktest=$regvalue
6705 winsdklibsubdir=winv6.3
6710 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6711 if test -n "$regvalue"; then
6712 winsdktest=$regvalue
6713 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6714 if test -n "$regvalue"; then
6715 winsdkbinsubdir="$regvalue".0
6716 winsdklibsubdir=$winsdkbinsubdir
6717 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6718 local tmppath_unix=$(cygpath -u "$tmppath")
6719 # test exist the SDK path
6720 if test -d "$tmppath_unix"; then
6721 # when path is convertible to a short path then path is okay
6722 cygpath -d "$tmppath" >/dev/null 2>&1
6723 if test $? -ne 0; then
6724 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6727 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6738 # Return value: From find_winsdk_version
6742 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6743 find_winsdk_version $ver
6744 if test -n "$winsdktest"; then
6752 # Return value: $msmdir
6755 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6756 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6759 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6764 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6765 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6766 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6767 if test -e "$my_msm_dir${my_msm_file}"; then
6774 if test -n "$msmdir"; then
6775 msmdir=`cygpath -m "$msmdir"`
6776 AC_MSG_RESULT([$msmdir])
6778 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6779 AC_MSG_FAILURE([not found])
6781 AC_MSG_WARN([not found (check config.log)])
6782 add_warning "MSM ${my_msm_file} not found"
6787 find_msvc_x64_dlls()
6789 # Return value: $msvcdllpath, $msvcdlls
6791 AC_MSG_CHECKING([for MSVC x64 DLL path])
6793 dnl Order crtver in increasing order. Then check the directories returned by
6794 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6795 dnl the result will be the highest CRT version found in the highest directory.
6797 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6800 for crtver in 141 142 143; do
6801 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6802 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6803 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6804 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6810 AC_MSG_RESULT([$msvcdllpath])
6811 AC_MSG_CHECKING([for MSVC x64 DLLs])
6812 msvcdlls="msvcp140.dll vcruntime140.dll"
6813 for dll in $msvcdlls; do
6814 if ! test -f "$msvcdllpath/$dll"; then
6815 AC_MSG_FAILURE([missing $dll])
6818 AC_MSG_RESULT([found all ($msvcdlls)])
6821 dnl =========================================
6822 dnl Check for the Windows SDK.
6823 dnl =========================================
6824 if test "$_os" = "WINNT"; then
6825 AC_MSG_CHECKING([for Windows SDK])
6826 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6828 WINDOWS_SDK_HOME=$winsdktest
6830 # normalize if found
6831 if test -n "$WINDOWS_SDK_HOME"; then
6832 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6833 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6836 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6839 if test -n "$WINDOWS_SDK_HOME"; then
6840 # Remove a possible trailing backslash
6841 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6843 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6844 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6845 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6846 have_windows_sdk_headers=yes
6847 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6848 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6849 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6850 have_windows_sdk_headers=yes
6851 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6852 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6853 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6854 have_windows_sdk_headers=yes
6856 have_windows_sdk_headers=no
6859 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6860 have_windows_sdk_libs=yes
6861 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6862 have_windows_sdk_libs=yes
6864 have_windows_sdk_libs=no
6867 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6868 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6869 the Windows SDK are installed.])
6873 if test -z "$WINDOWS_SDK_HOME"; then
6874 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6875 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6876 WINDOWS_SDK_VERSION=80
6877 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6878 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6879 WINDOWS_SDK_VERSION=81
6880 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6881 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6882 WINDOWS_SDK_VERSION=10
6883 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6885 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6887 PathFormat "$WINDOWS_SDK_HOME"
6888 WINDOWS_SDK_HOME="$formatted_path"
6889 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6890 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6891 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6892 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6893 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6894 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6895 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6899 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6900 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6901 dnl but not in v8.0), so allow this to be overridden with a
6902 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6903 dnl and configuration error if no WiLangId.vbs is found would arguably be
6904 dnl better, but I do not know under which conditions exactly it is needed by
6906 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6907 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6908 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6909 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6910 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6911 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6913 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6914 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6915 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6917 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6918 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6919 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6922 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6923 if test -n "$with_package_format" -a "$with_package_format" != no; then
6924 for i in "$with_package_format"; do
6925 if test "$i" = "msi"; then
6926 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6927 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6934 AC_SUBST(WINDOWS_SDK_HOME)
6935 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6936 AC_SUBST(WINDOWS_SDK_VERSION)
6937 AC_SUBST(WINDOWS_SDK_WILANGID)
6939 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6940 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6941 dnl dir, it also determines that dir's path w/o an arch segment if any,
6942 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6943 AC_MSG_CHECKING([for midl.exe])
6946 PathFormat "$winsdktest"
6947 winsdktest_unix="$formatted_path_unix"
6949 if test -n "$winsdkbinsubdir" \
6950 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6952 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6953 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6954 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6955 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6956 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6957 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6958 MIDL_PATH=$winsdktest/Bin
6959 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6961 PathFormat "$MIDL_PATH"
6962 if test ! -f "$formatted_path_unix/midl.exe"; then
6963 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6965 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6968 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6969 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6971 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6972 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6973 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6974 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6975 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6976 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6977 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6978 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6979 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6980 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6981 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6982 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6984 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6988 AC_MSG_CHECKING([for csc.exe])
6990 PathFormat "$csctest"
6991 csctest_unix="$formatted_path_unix"
6992 if test -f "$csctest_unix/csc.exe"; then
6995 if test ! -f "$csctest_unix/csc.exe"; then
6996 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6998 AC_MSG_RESULT([$CSC_PATH/csc.exe])
7001 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
7004 AC_MSG_CHECKING([for al.exe])
7005 if test -n "$winsdkbinsubdir" \
7006 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7008 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7009 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7010 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7011 elif test -f "$winsdktest_unix/Bin/al.exe"; then
7012 AL_PATH="$winsdktest/Bin"
7015 if test -z "$AL_PATH"; then
7017 PathFormat "$altest"
7018 altest_unix="$formatted_path_unix"
7019 if test -f "$altest_unix/bin/al.exe"; then
7020 AL_PATH="$altest/bin"
7021 elif test -f "$altest_unix/al.exe"; then
7025 PathFormat "$AL_PATH"
7026 if test ! -f "$formatted_path_unix/al.exe"; then
7027 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7029 AC_MSG_RESULT([$AL_PATH/al.exe])
7032 AL_PATH=`win_short_path_for_make "$AL_PATH"`
7034 dnl Check mscoree.lib / .NET Framework dir
7035 AC_MSG_CHECKING(.NET Framework)
7037 PathFormat "$frametest"
7038 frametest="$formatted_path_unix"
7039 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7040 DOTNET_FRAMEWORK_HOME="$frametest"
7042 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7043 DOTNET_FRAMEWORK_HOME="$winsdktest"
7046 PathFormat "$DOTNET_FRAMEWORK_HOME"
7047 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
7048 AC_MSG_ERROR([mscoree.lib not found])
7050 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7052 PathFormat "$MIDL_PATH"
7053 MIDL_PATH="$formatted_path"
7055 PathFormat "$AL_PATH"
7056 AL_PATH="$formatted_path"
7058 PathFormat "$DOTNET_FRAMEWORK_HOME"
7059 DOTNET_FRAMEWORK_HOME="$formatted_path"
7061 PathFormat "$CSC_PATH"
7062 CSC_PATH="$formatted_path"
7065 dnl ===================================================================
7066 dnl Testing for C++ compiler and version...
7067 dnl ===================================================================
7069 if test "$_os" != "WINNT"; then
7070 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7071 save_CXXFLAGS=$CXXFLAGS
7073 CXXFLAGS=$save_CXXFLAGS
7074 if test -z "$CXX_BASE"; then
7075 CXX_BASE=`first_arg_basename "$CXX"`
7079 dnl check for GNU C++ compiler version
7080 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7081 AC_MSG_CHECKING([the GNU C++ compiler version])
7083 _gpp_version=`$CXX -dumpversion`
7084 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7086 if test "$_gpp_majmin" -lt "700"; then
7087 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7089 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7092 dnl see https://issuetracker.google.com/issues/36962819
7096 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7097 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7098 #include <bits/c++config.h>]],[[
7099 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7100 && !defined(_GLIBCXX__PTHREADS) \
7101 && !defined(_GLIBCXX_HAS_GTHREADS)
7104 ]])],[AC_MSG_RESULT([yes])
7105 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7107 if test $glibcxx_threads = yes; then
7108 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7111 AC_SUBST(BOOST_CXXFLAGS)
7114 # prefx CXX with ccache if needed
7116 if test "$CCACHE" != ""; then
7117 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7119 save_CXXFLAGS=$CXXFLAGS
7120 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7121 # msvc does not fail on unknown options, check stdout
7122 if test "$COM" = MSC; then
7123 CXXFLAGS="$CXXFLAGS -nologo"
7125 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7126 ac_cxx_werror_flag=yes
7127 dnl an empty program will do, we're checking the compiler flags
7128 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7129 [use_ccache=yes], [use_ccache=no])
7130 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7131 AC_MSG_RESULT([yes])
7134 CXX_BASE="ccache $CXX_BASE"
7137 CXXFLAGS=$save_CXXFLAGS
7138 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7142 dnl ===================================================================
7143 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7144 dnl ===================================================================
7146 if test "$_os" != "WINNT"; then
7149 dnl Check whether there's a C pre-processor.
7154 dnl ===================================================================
7155 dnl Find integral type sizes and alignments
7156 dnl ===================================================================
7158 if test "$_os" != "WINNT"; then
7160 AC_CHECK_SIZEOF(long)
7161 AC_CHECK_SIZEOF(short)
7162 AC_CHECK_SIZEOF(int)
7163 AC_CHECK_SIZEOF(long long)
7164 AC_CHECK_SIZEOF(double)
7165 AC_CHECK_SIZEOF(void*)
7166 AC_CHECK_SIZEOF(size_t)
7168 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7169 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7170 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7171 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7172 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7173 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7175 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7176 m4_pattern_allow([AC_CHECK_ALIGNOF])
7177 m4_ifdef([AC_CHECK_ALIGNOF],
7179 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7180 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7181 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7182 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7185 case "$_os-$host_cpu" in
7187 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7188 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7189 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7190 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7193 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7194 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7195 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7196 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7199 if test -z "$ac_cv_alignof_short" -o \
7200 -z "$ac_cv_alignof_int" -o \
7201 -z "$ac_cv_alignof_long" -o \
7202 -z "$ac_cv_alignof_double"; then
7203 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.])
7209 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7210 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7211 if test $ac_cv_sizeof_long -eq 8; then
7212 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7213 elif test $ac_cv_sizeof_double -eq 8; then
7214 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7216 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7219 dnl Check for large file support
7221 if test -n "$ac_cv_sys_largefile_opts" -a "$ac_cv_sys_largefile_opts" != "none needed" -a "$ac_cv_sys_largefile_opts" != "support not detected"; then
7222 LFS_CFLAGS="$ac_cv_sys_largefile_opts"
7223 elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7224 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7226 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7227 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7231 SAL_TYPES_SIZEOFSHORT=2
7232 SAL_TYPES_SIZEOFINT=4
7233 SAL_TYPES_SIZEOFLONG=4
7234 SAL_TYPES_SIZEOFLONGLONG=8
7235 if test $WIN_HOST_BITS -eq 32; then
7236 SAL_TYPES_SIZEOFPOINTER=4
7239 SAL_TYPES_SIZEOFPOINTER=8
7242 SAL_TYPES_ALIGNMENT2=2
7243 SAL_TYPES_ALIGNMENT4=4
7244 SAL_TYPES_ALIGNMENT8=8
7247 AC_SUBST(LFS_CFLAGS)
7248 AC_SUBST(SIZEOF_SIZE_T)
7250 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7251 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7252 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7253 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7254 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7255 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7256 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7257 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7259 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7260 AC_MSG_CHECKING([whether jumbo sheets are supported])
7261 if test "$_os" != "WINNT"; then
7262 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7263 AC_MSG_RESULT([yes])
7264 ENABLE_JUMBO_SHEETS=TRUE
7265 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7270 if test $WIN_HOST_BITS -gt 32; then
7271 # 64bit windows is special-cased for tools::Long because long is 32bit
7272 AC_MSG_RESULT([yes])
7273 ENABLE_JUMBO_SHEETS=TRUE
7274 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7279 AC_SUBST(ENABLE_JUMBO_SHEETS)
7281 dnl ===================================================================
7282 dnl Check whether to enable runtime optimizations
7283 dnl ===================================================================
7284 ENABLE_RUNTIME_OPTIMIZATIONS=
7285 AC_MSG_CHECKING([whether to enable runtime optimizations])
7286 if test -z "$enable_runtime_optimizations"; then
7290 enable_runtime_optimizations=no
7296 if test "$enable_runtime_optimizations" != no; then
7297 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7298 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7299 AC_MSG_RESULT([yes])
7303 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7305 dnl ===================================================================
7306 dnl Check if valgrind headers are available
7307 dnl ===================================================================
7309 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7310 prev_cppflags=$CPPFLAGS
7311 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7312 # or where does it come from?
7313 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7314 AC_CHECK_HEADER([valgrind/valgrind.h],
7315 [ENABLE_VALGRIND=TRUE])
7316 CPPFLAGS=$prev_cppflags
7318 AC_SUBST([ENABLE_VALGRIND])
7319 if test -z "$ENABLE_VALGRIND"; then
7320 if test "$with_valgrind" = yes; then
7321 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7325 AC_SUBST([VALGRIND_CFLAGS])
7328 dnl ===================================================================
7329 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7330 dnl ===================================================================
7332 # We need at least the sys/sdt.h include header.
7333 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7334 if test "$SDT_H_FOUND" = "TRUE"; then
7335 # Found sys/sdt.h header, now make sure the c++ compiler works.
7336 # Old g++ versions had problems with probes in constructors/destructors.
7337 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7339 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7340 #include <sys/sdt.h>
7348 ProbeClass(int& v, const char *n) : ref(v), name(n)
7350 DTRACE_PROBE2(_test_, cons, name, ref);
7353 void method(int min)
7355 DTRACE_PROBE3(_test_, meth, name, ref, min);
7361 DTRACE_PROBE2(_test_, dest, name, ref);
7366 DTRACE_PROBE1(_test_, call, i);
7367 ProbeClass inst = ProbeClass(i, "call");
7369 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7370 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7373 AC_CONFIG_HEADERS([config_host/config_probes.h])
7375 dnl ===================================================================
7377 dnl ===================================================================
7378 HAVE_GCC_STACK_CLASH_PROTECTION=
7380 HARDENING_OPT_CFLAGS=
7381 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7382 AC_MSG_CHECKING([whether $CC_BASE supports -grecord-gcc-switches])
7384 CFLAGS="$CFLAGS -Werror -grecord-gcc-switches"
7386 [AC_LANG_PROGRAM(, [[return 0;]])],
7387 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -grecord-gcc-switches"],
7388 [AC_MSG_RESULT([no])])
7391 AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
7393 CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
7394 if test "$ENABLE_OPTIMIZED" = TRUE; then
7395 CFLAGS="$CFLAGS -O2"
7398 [AC_LANG_PROGRAM([[#include <string.h>]], [[return 0;]])],
7399 [AC_MSG_RESULT([yes]); HARDENING_OPT_CFLAGS="$HARDENING_OPT_CFLAGS -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"],
7400 [AC_MSG_RESULT([no])])
7403 AC_MSG_CHECKING([whether $CC_BASE supports -D_GLIBCXX_ASSERTIONS])
7405 CFLAGS="$CFLAGS -Werror -Wp,-D_GLIBCXX_ASSERTIONS"
7407 [AC_LANG_PROGRAM(, [[return 0;]])],
7408 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"],
7409 [AC_MSG_RESULT([no])])
7412 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7414 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7416 [AC_LANG_PROGRAM(, [[return 0;]])],
7417 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE; HARDENING_CFLAGS="$HARDENING_CFLAGS -fstack-clash-protection"],
7418 [AC_MSG_RESULT([no])])
7421 AC_MSG_CHECKING([whether $CC_BASE supports -fcf-protection])
7423 CFLAGS="$CFLAGS -Werror -fcf-protection"
7425 [AC_LANG_PROGRAM(, [[return 0;]])],
7426 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -fcf-protection"],
7427 [AC_MSG_RESULT([no])])
7430 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7432 CFLAGS="$CFLAGS -Werror -mno-avx"
7433 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7435 if test "$HAVE_GCC_AVX" = "TRUE"; then
7436 AC_MSG_RESULT([yes])
7441 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7442 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7444 if (__sync_add_and_fetch(&v, 1) != 1 ||
7445 __sync_sub_and_fetch(&v, 1) != 0)
7447 __sync_synchronize();
7448 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7452 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7453 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7454 AC_MSG_RESULT([yes])
7455 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7460 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7462 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7467 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7468 AC_MSG_RESULT([yes])
7469 ], [AC_MSG_RESULT([no])])
7472 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7474 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7479 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7480 AC_MSG_RESULT([yes])
7481 ], [AC_MSG_RESULT([no])])
7484 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7486 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7488 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7490 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7491 AC_MSG_RESULT([yes])
7492 ], [AC_MSG_RESULT([no])])
7495 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7497 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7500 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7502 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7503 AC_MSG_RESULT([yes])
7504 ], [AC_MSG_RESULT([no])])
7507 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7509 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7512 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7514 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7515 AC_MSG_RESULT([yes])
7516 ], [AC_MSG_RESULT([no])])
7519 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7521 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7523 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7525 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7526 AC_MSG_RESULT([yes])
7527 ], [AC_MSG_RESULT([no])])
7530 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7532 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7534 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7536 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7537 AC_MSG_RESULT([yes])
7538 ], [AC_MSG_RESULT([no])])
7541 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7543 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7545 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7547 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7548 AC_MSG_RESULT([yes])
7549 ], [AC_MSG_RESULT([no])])
7552 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7554 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7557 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7559 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7560 AC_MSG_RESULT([yes])
7561 ], [AC_MSG_RESULT([no])])
7564 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7566 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7569 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7571 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7572 AC_MSG_RESULT([yes])
7573 ], [AC_MSG_RESULT([no])])
7577 AC_SUBST(HAVE_GCC_AVX)
7578 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7579 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7580 AC_SUBST(HARDENING_CFLAGS)
7581 AC_SUBST(HARDENING_OPT_CFLAGS)
7583 dnl ===================================================================
7584 dnl Identify the C++ library
7585 dnl ===================================================================
7587 AC_MSG_CHECKING([what the C++ library is])
7591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7597 [CPP_LIBRARY=GLIBCXX
7598 cpp_library_name="GNU libstdc++"
7601 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7603 #ifndef _LIBCPP_VERSION
7608 cpp_library_name="LLVM libc++"
7609 AC_DEFINE([HAVE_LIBCPP])
7612 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7619 cpp_library_name="Microsoft"
7621 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7622 AC_MSG_RESULT([$cpp_library_name])
7624 AC_SUBST([HAVE_LIBSTDCPP])
7625 AC_SUBST([HAVE_LIBCPP])
7627 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7629 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7630 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7631 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7632 # although there will be backwards compatibility).
7633 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7634 # and there would be undefined references to debug functions.
7635 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7636 # So check if debug mode can be used and disable or downgrade it to assertions
7638 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7641 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7642 #define _LIBCPP_DEBUG 0 // only assertions
7650 ]])], [libcpp_debug_links=1])
7651 if test -n "$libcpp_debug_links"; then
7652 # we can use at least assertions, check if debug mode works
7653 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7654 #define _LIBCPP_DEBUG 1 // debug mode
7657 int foo(const std::vector<int>& v) { return *v.begin(); }
7662 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7663 return (foo(v) + s.size()) != 0 ? 0 : 1;
7667 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7669 [AC_MSG_RESULT(no, using only assertions)
7670 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7678 AC_SUBST([LIBCPP_DEBUG])
7680 dnl ===================================================================
7682 dnl ===================================================================
7683 AC_PATH_PROG(GPERF, gperf)
7684 if test -z "$GPERF"; then
7685 AC_MSG_ERROR([gperf not found but needed. Install it.])
7687 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7688 GPERF=`cygpath -m $GPERF`
7690 AC_MSG_CHECKING([whether gperf is new enough])
7691 my_gperf_ver1=$($GPERF --version | head -n 1)
7692 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7693 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7694 if test "$my_gperf_ver3" -ge 301; then
7695 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7697 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7701 dnl ===================================================================
7702 dnl Check for system libcmis
7703 dnl ===================================================================
7704 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7706 dnl ===================================================================
7708 dnl ===================================================================
7710 if test -z "${CXXFLAGS_CXX11+x}"; then
7711 AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7712 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7713 if test "$with_latest_c__" = yes; then
7714 CXXFLAGS_CXX11=-std:c++latest
7716 CXXFLAGS_CXX11=-std:c++20
7718 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7719 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7720 my_flags='-std=c++20 -std=c++2a'
7721 if test "$with_latest_c__" = yes; then
7722 my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7724 for flag in $my_flags; do
7725 if test "$COM" = MSC; then
7726 flag="-Xclang $flag"
7728 save_CXXFLAGS=$CXXFLAGS
7729 CXXFLAGS="$CXXFLAGS $flag -Werror"
7731 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7732 #include <algorithm>
7733 #include <functional>
7736 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7737 std::sort(v.begin(), v.end(), fn);
7739 ]])],[CXXFLAGS_CXX11=$flag])
7741 CXXFLAGS=$save_CXXFLAGS
7742 if test -n "$CXXFLAGS_CXX11"; then
7747 if test -n "$CXXFLAGS_CXX11"; then
7748 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7753 AC_SUBST(CXXFLAGS_CXX11)
7755 if test "$GCC" = "yes"; then
7756 save_CXXFLAGS=$CXXFLAGS
7757 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7759 CXXFLAGS=$save_CXXFLAGS
7760 AC_SUBST(ATOMIC_LIB)
7763 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7764 save_CXXFLAGS=$CXXFLAGS
7765 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7771 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7787 a thinga[]={{0,0}, {1,1}};
7788 b thingb[]={{0,0}, {1,1}};
7789 size_t i = sizeof(sal_n_array_size(thinga));
7790 size_t j = sizeof(sal_n_array_size(thingb));
7791 return !(i != 0 && j != 0);
7793 ], [ AC_MSG_RESULT(yes) ],
7794 [ AC_MSG_ERROR(no)])
7796 CXXFLAGS=$save_CXXFLAGS
7798 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7799 if test "$GCC" = yes; then
7800 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7802 save_CXXFLAGS=$CXXFLAGS
7803 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7804 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7805 CXXFLAGS=$save_CXXFLAGS
7807 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7808 AC_MSG_RESULT([yes])
7813 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7815 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7817 save_CXXFLAGS=$CXXFLAGS
7818 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7819 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7820 #include <algorithm>
7821 #include <initializer_list>
7823 template<typename T> class S {
7827 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7829 constinit S<int> s{3, 2, 1};
7831 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7832 AC_MSG_RESULT([yes])
7833 ], [AC_MSG_RESULT([no])])
7834 CXXFLAGS=$save_CXXFLAGS
7837 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7839 save_CXXFLAGS=$CXXFLAGS
7840 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7841 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7842 struct S1 { S1(S1 &&); };
7844 S1 f(S2 s) { return s; }
7846 AC_DEFINE([HAVE_P1155R3],[1])
7847 AC_MSG_RESULT([yes])
7848 ], [AC_MSG_RESULT([no])])
7849 CXXFLAGS=$save_CXXFLAGS
7852 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7853 HAVE_CXX20_ATOMIC_REF=
7855 save_CXXFLAGS=$CXXFLAGS
7856 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7857 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7860 std::atomic_ref<int> y(x);
7862 HAVE_CXX20_ATOMIC_REF=TRUE
7863 AC_MSG_RESULT([yes])
7864 ], [AC_MSG_RESULT([no])])
7865 CXXFLAGS=$save_CXXFLAGS
7867 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7869 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7870 dnl which is included in -Wextra anyway):
7871 HAVE_WDEPRECATED_COPY_DTOR=
7872 if test "$GCC" = yes; then
7873 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7875 save_CXXFLAGS=$CXXFLAGS
7876 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7877 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7878 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7879 AC_MSG_RESULT([yes])
7880 ], [AC_MSG_RESULT([no])])
7881 CXXFLAGS=$save_CXXFLAGS
7884 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7886 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7887 dnl uninitialized warning for code like
7890 dnl boost::optional<OString> * g(bool b) {
7891 dnl boost::optional<OString> o;
7893 dnl return new boost::optional<OString>(o);
7896 dnl (as is e.g. present, in a slightly more elaborate form, in
7897 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7898 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7899 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7900 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7901 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7903 save_CXXFLAGS=$CXXFLAGS
7904 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7905 if test "$ENABLE_OPTIMIZED" = TRUE; then
7906 CXXFLAGS="$CXXFLAGS -O2"
7908 CXXFLAGS="$CXXFLAGS -O0"
7910 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7919 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7920 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7926 char stg[sizeof (S1)];
7934 ]])], [AC_MSG_RESULT([no])], [
7935 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7936 AC_MSG_RESULT([yes])
7938 CXXFLAGS=$save_CXXFLAGS
7941 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7943 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7944 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7945 dnl hits us e.g. with GCC 10 and --enable-optimized at
7947 dnl In file included from include/rtl/string.hxx:49,
7948 dnl from include/rtl/ustring.hxx:43,
7949 dnl from include/osl/file.hxx:35,
7950 dnl from include/codemaker/global.hxx:28,
7951 dnl from include/codemaker/options.hxx:23,
7952 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7953 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7954 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,
7955 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,
7956 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,
7957 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7958 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7959 dnl 78 | memcpy( buffer, data, length );
7960 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7961 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7962 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7963 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7965 save_CXXFLAGS=$CXXFLAGS
7966 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7967 if test "$ENABLE_OPTIMIZED" = TRUE; then
7968 CXXFLAGS="$CXXFLAGS -O2"
7970 CXXFLAGS="$CXXFLAGS -O0"
7972 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7973 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7974 void fill(char const * begin, char const * end, char c);
7980 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7981 __builtin_strncpy(c.username, "root", sizeof(c.username));
7983 ]])], [AC_MSG_RESULT([no])], [
7984 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7985 AC_MSG_RESULT([yes])
7987 CXXFLAGS=$save_CXXFLAGS
7990 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7992 HAVE_DLLEXPORTINLINES=
7993 if test "$_os" = "WINNT"; then
7994 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7996 save_CXXFLAGS=$CXXFLAGS
7997 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7998 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7999 HAVE_DLLEXPORTINLINES=TRUE
8000 AC_MSG_RESULT([yes])
8001 ], [AC_MSG_RESULT([no])])
8002 CXXFLAGS=$save_CXXFLAGS
8005 AC_SUBST([HAVE_DLLEXPORTINLINES])
8007 dnl ===================================================================
8008 dnl CPU Intrinsics support - SSE, AVX
8009 dnl ===================================================================
8011 CXXFLAGS_INTRINSICS_SSE2=
8012 CXXFLAGS_INTRINSICS_SSSE3=
8013 CXXFLAGS_INTRINSICS_SSE41=
8014 CXXFLAGS_INTRINSICS_SSE42=
8015 CXXFLAGS_INTRINSICS_AVX=
8016 CXXFLAGS_INTRINSICS_AVX2=
8017 CXXFLAGS_INTRINSICS_AVX512=
8018 CXXFLAGS_INTRINSICS_AVX512F=
8019 CXXFLAGS_INTRINSICS_F16C=
8020 CXXFLAGS_INTRINSICS_FMA=
8022 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
8023 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
8030 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
8031 flag_avx512f=-mavx512f
8035 # With MSVC using -arch is in fact not necessary for being able
8036 # to use CPU intrinsics, code using AVX512F intrinsics will compile
8037 # even if compiled with -arch:AVX, the -arch option really only affects
8038 # instructions generated for C/C++ code.
8039 # So use the matching same (or lower) -arch options, but only in order
8040 # to generate the best matching instructions for the C++ code surrounding
8042 # SSE2 is the default for x86/x64, so no need to specify the option.
8044 # No specific options for these, use the next lower.
8045 flag_ssse3="$flag_sse2"
8046 flag_sse41="$flag_sse2"
8047 flag_sse42="$flag_sse2"
8049 flag_avx2=-arch:AVX2
8050 flag_avx512=-arch:AVX512
8051 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
8052 flag_avx512f=-arch:AVX2
8053 # No MSVC options for these.
8054 flag_f16c="$flag_sse2"
8055 flag_fma="$flag_sse2"
8058 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8060 save_CXXFLAGS=$CXXFLAGS
8061 CXXFLAGS="$CXXFLAGS $flag_sse2"
8062 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8063 #include <emmintrin.h>
8065 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8066 c = _mm_xor_si128 (a, b);
8070 [can_compile_sse2=yes],
8071 [can_compile_sse2=no])
8073 CXXFLAGS=$save_CXXFLAGS
8074 AC_MSG_RESULT([${can_compile_sse2}])
8075 if test "${can_compile_sse2}" = "yes" ; then
8076 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8079 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8081 save_CXXFLAGS=$CXXFLAGS
8082 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8083 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8084 #include <tmmintrin.h>
8086 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8087 c = _mm_maddubs_epi16 (a, b);
8091 [can_compile_ssse3=yes],
8092 [can_compile_ssse3=no])
8094 CXXFLAGS=$save_CXXFLAGS
8095 AC_MSG_RESULT([${can_compile_ssse3}])
8096 if test "${can_compile_ssse3}" = "yes" ; then
8097 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8100 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8102 save_CXXFLAGS=$CXXFLAGS
8103 CXXFLAGS="$CXXFLAGS $flag_sse41"
8104 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8105 #include <smmintrin.h>
8107 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8108 c = _mm_cmpeq_epi64 (a, b);
8112 [can_compile_sse41=yes],
8113 [can_compile_sse41=no])
8115 CXXFLAGS=$save_CXXFLAGS
8116 AC_MSG_RESULT([${can_compile_sse41}])
8117 if test "${can_compile_sse41}" = "yes" ; then
8118 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8121 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8123 save_CXXFLAGS=$CXXFLAGS
8124 CXXFLAGS="$CXXFLAGS $flag_sse42"
8125 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8126 #include <nmmintrin.h>
8128 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8129 c = _mm_cmpgt_epi64 (a, b);
8133 [can_compile_sse42=yes],
8134 [can_compile_sse42=no])
8136 CXXFLAGS=$save_CXXFLAGS
8137 AC_MSG_RESULT([${can_compile_sse42}])
8138 if test "${can_compile_sse42}" = "yes" ; then
8139 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8142 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8144 save_CXXFLAGS=$CXXFLAGS
8145 CXXFLAGS="$CXXFLAGS $flag_avx"
8146 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8147 #include <immintrin.h>
8149 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8150 c = _mm256_xor_ps(a, b);
8154 [can_compile_avx=yes],
8155 [can_compile_avx=no])
8157 CXXFLAGS=$save_CXXFLAGS
8158 AC_MSG_RESULT([${can_compile_avx}])
8159 if test "${can_compile_avx}" = "yes" ; then
8160 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8163 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8165 save_CXXFLAGS=$CXXFLAGS
8166 CXXFLAGS="$CXXFLAGS $flag_avx2"
8167 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8168 #include <immintrin.h>
8170 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8171 c = _mm256_maddubs_epi16(a, b);
8175 [can_compile_avx2=yes],
8176 [can_compile_avx2=no])
8178 CXXFLAGS=$save_CXXFLAGS
8179 AC_MSG_RESULT([${can_compile_avx2}])
8180 if test "${can_compile_avx2}" = "yes" ; then
8181 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8184 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8186 save_CXXFLAGS=$CXXFLAGS
8187 CXXFLAGS="$CXXFLAGS $flag_avx512"
8188 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8189 #include <immintrin.h>
8191 __m512i a = _mm512_loadu_si512(0);
8192 __m512d v1 = _mm512_load_pd(0);
8193 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8194 __m512d v2 = _mm512_abs_pd(v1);
8198 [can_compile_avx512=yes],
8199 [can_compile_avx512=no])
8201 CXXFLAGS=$save_CXXFLAGS
8202 AC_MSG_RESULT([${can_compile_avx512}])
8203 if test "${can_compile_avx512}" = "yes" ; then
8204 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8205 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8208 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8210 save_CXXFLAGS=$CXXFLAGS
8211 CXXFLAGS="$CXXFLAGS $flag_f16c"
8212 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8213 #include <immintrin.h>
8215 __m128i a = _mm_set1_epi32 (0);
8217 c = _mm_cvtph_ps(a);
8221 [can_compile_f16c=yes],
8222 [can_compile_f16c=no])
8224 CXXFLAGS=$save_CXXFLAGS
8225 AC_MSG_RESULT([${can_compile_f16c}])
8226 if test "${can_compile_f16c}" = "yes" ; then
8227 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8230 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8232 save_CXXFLAGS=$CXXFLAGS
8233 CXXFLAGS="$CXXFLAGS $flag_fma"
8234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8235 #include <immintrin.h>
8237 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8238 d = _mm256_fmadd_ps(a, b, c);
8242 [can_compile_fma=yes],
8243 [can_compile_fma=no])
8245 CXXFLAGS=$save_CXXFLAGS
8246 AC_MSG_RESULT([${can_compile_fma}])
8247 if test "${can_compile_fma}" = "yes" ; then
8248 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8251 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8252 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8253 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8254 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8255 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8256 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8257 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8258 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8259 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8260 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8262 dnl ===================================================================
8263 dnl system stl sanity tests
8264 dnl ===================================================================
8265 if test "$_os" != "WINNT"; then
8269 save_CPPFLAGS="$CPPFLAGS"
8270 if test -n "$MACOSX_SDK_PATH"; then
8271 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8274 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8276 if test "$CPP_LIBRARY" = GLIBCXX; then
8277 dnl gcc#19664, gcc#22482, rhbz#162935
8278 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8279 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8280 AC_MSG_RESULT([$stlvisok])
8281 if test "$stlvisok" = "no"; then
8282 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8286 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8287 # when we don't make any dynamic libraries?
8288 if test "$DISABLE_DYNLOADING" = ""; then
8289 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8290 cat > conftestlib1.cc <<_ACEOF
8291 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8292 struct S2: S1<int> { virtual ~S2(); };
8295 cat > conftestlib2.cc <<_ACEOF
8296 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8297 struct S2: S1<int> { virtual ~S2(); };
8298 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8300 gccvisinlineshiddenok=yes
8301 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8302 gccvisinlineshiddenok=no
8304 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8305 dnl known to not work with -z defs (unsetting which makes the test
8307 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8308 if test "$COM_IS_CLANG" = TRUE; then
8309 for i in $CXX $CXXFLAGS; do
8312 my_linkflagsnoundefs=
8318 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8319 gccvisinlineshiddenok=no
8324 AC_MSG_RESULT([$gccvisinlineshiddenok])
8325 if test "$gccvisinlineshiddenok" = "no"; then
8326 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8330 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8331 cat >visibility.cxx <<_ACEOF
8332 #pragma GCC visibility push(hidden)
8333 struct __attribute__ ((visibility ("default"))) TestStruct {
8336 __attribute__ ((visibility ("default"))) void TestFunc() {
8340 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8345 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8348 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8360 rm -f visibility.s visibility.cxx
8362 AC_MSG_RESULT([$gccvisbroken])
8363 if test "$gccvisbroken" = "yes"; then
8364 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8367 CPPFLAGS="$save_CPPFLAGS"
8369 AC_MSG_CHECKING([if CET endbranch is recognized])
8370 cat > endbr.s <<_ACEOF
8373 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8374 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8375 AC_MSG_RESULT([yes])
8376 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8380 rm -f endbr.s endbr.o
8381 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8386 dnl ===================================================================
8388 dnl ===================================================================
8390 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8391 if test "$GCC" = "yes"; then
8392 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8394 save_CXXFLAGS=$CXXFLAGS
8395 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8396 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8397 CXXFLAGS=$save_CXXFLAGS
8399 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8400 AC_MSG_RESULT([yes])
8405 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8407 dnl ===================================================================
8408 dnl Compiler plugins
8409 dnl ===================================================================
8412 # currently only Clang
8414 if test "$COM_IS_CLANG" != "TRUE"; then
8415 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8416 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8417 enable_compiler_plugins=no
8421 COMPILER_PLUGINS_COM_IS_CLANG=
8422 if test "$COM_IS_CLANG" = "TRUE"; then
8423 if test -n "$enable_compiler_plugins"; then
8424 compiler_plugins="$enable_compiler_plugins"
8425 elif test -n "$ENABLE_DBGUTIL"; then
8426 compiler_plugins=test
8430 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8431 if test "$CLANGVER" -lt 120001; then
8432 if test "$compiler_plugins" = yes; then
8434 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8440 if test "$compiler_plugins" != "no"; then
8441 dnl The prefix where Clang resides, override to where Clang resides if
8442 dnl using a source build:
8443 if test -z "$CLANGDIR"; then
8444 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8446 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8447 if test -z "$COMPILER_PLUGINS_CXX"; then
8448 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8450 clangbindir=$CLANGDIR/bin
8451 if test "$build_os" = "cygwin"; then
8452 clangbindir=$(cygpath -u "$clangbindir")
8454 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8455 if test -n "$LLVM_CONFIG"; then
8456 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8457 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8458 if test -z "$CLANGLIBDIR"; then
8459 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8461 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8462 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8463 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8464 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8465 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8466 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8469 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8470 clangobjdir=$($LLVM_CONFIG --obj-root)
8471 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8472 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8475 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8479 save_CPPFLAGS=$CPPFLAGS
8480 save_CXXFLAGS=$CXXFLAGS
8481 save_LDFLAGS=$LDFLAGS
8483 CXX=$COMPILER_PLUGINS_CXX
8484 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8485 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8486 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8487 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8488 [COMPILER_PLUGINS=TRUE],
8490 if test "$compiler_plugins" = "yes"; then
8491 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8493 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8494 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8497 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8498 dnl comment in compilerplugins/Makefile-clang.mk:
8499 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8501 AC_MSG_CHECKING([for clang libraries to use])
8502 if test -z "$CLANGTOOLLIBS"; then
8503 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8505 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8506 [[ clang::FullSourceLoc().dump(); ]])
8507 ],[CLANGTOOLLIBS="$LIBS"],[])
8509 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8510 dnl list of individual -lclang* (but note that that list can become outdated over time,
8511 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8512 dnl needs to include -lclangSupport now"):
8513 if test -z "$CLANGTOOLLIBS"; then
8514 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8515 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8517 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8518 [[ clang::FullSourceLoc().dump(); ]])
8519 ],[CLANGTOOLLIBS="$LIBS"],[])
8521 AC_MSG_RESULT([$CLANGTOOLLIBS])
8522 if test -z "$CLANGTOOLLIBS"; then
8523 if test "$compiler_plugins" = "yes"; then
8524 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8526 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8527 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8531 if test -n "$COMPILER_PLUGINS"; then
8532 if test -z "$CLANGSYSINCLUDE"; then
8533 if test -n "$LLVM_CONFIG"; then
8534 # Path to the clang system headers (no idea if there's a better way to get it).
8535 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8542 CPPFLAGS=$save_CPPFLAGS
8543 CXXFLAGS=$save_CXXFLAGS
8544 LDFLAGS=$save_LDFLAGS
8548 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8549 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8555 [AC_MSG_RESULT([yes])
8556 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8557 [AC_MSG_RESULT([no])])
8558 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8561 if test "$enable_compiler_plugins" = "yes"; then
8562 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8565 COMPILER_PLUGINS_ANALYZER_PCH=
8566 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8567 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8569 AC_SUBST(COMPILER_PLUGINS)
8570 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8571 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8572 AC_SUBST(COMPILER_PLUGINS_CXX)
8573 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8574 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8575 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8576 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8578 AC_SUBST(CLANGLIBDIR)
8579 AC_SUBST(CLANGTOOLLIBS)
8580 AC_SUBST(CLANGSYSINCLUDE)
8582 # Plugin to help linker.
8583 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8584 # This makes --enable-lto build with clang work.
8587 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8588 AC_SUBST(HAVE_POSIX_FALLOCATE)
8590 JITC_PROCESSOR_TYPE=""
8591 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8592 # IBMs JDK needs this...
8593 JITC_PROCESSOR_TYPE=6
8594 export JITC_PROCESSOR_TYPE
8596 AC_SUBST([JITC_PROCESSOR_TYPE])
8598 # Misc Windows Stuff
8599 AC_ARG_WITH(ucrt-dir,
8600 AS_HELP_STRING([--with-ucrt-dir],
8601 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8602 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8603 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8604 Windows6.1-KB2999226-x64.msu
8605 Windows6.1-KB2999226-x86.msu
8606 Windows8.1-KB2999226-x64.msu
8607 Windows8.1-KB2999226-x86.msu
8608 Windows8-RT-KB2999226-x64.msu
8609 Windows8-RT-KB2999226-x86.msu
8610 A zip archive including those files is available from Microsoft site:
8611 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8614 UCRT_REDISTDIR="$with_ucrt_dir"
8615 if test $_os = "WINNT"; then
8617 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8618 MSVC_DLLS="$msvcdlls"
8619 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8621 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8623 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8626 for i in $PKGFORMAT; do
8627 if test "$i" = msi; then
8628 find_msms "$with_redist"
8629 if test -n "$msmdir"; then
8630 MSM_PATH=`win_short_path_for_make "$msmdir"`
8631 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8637 if test "$UCRT_REDISTDIR" = "no"; then
8638 dnl explicitly disabled
8641 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8642 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8643 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8644 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8645 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8646 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8648 if test -n "$PKGFORMAT"; then
8649 for i in $PKGFORMAT; do
8652 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8653 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8662 AC_SUBST(UCRT_REDISTDIR)
8663 AC_SUBST(MSVC_DLL_PATH)
8668 dnl ===================================================================
8670 dnl ===================================================================
8671 if test "$ENABLE_JAVA" != ""; then
8673 # Windows-specific tests
8674 if test "$build_os" = "cygwin"; then
8675 if test -z "$with_jdk_home"; then
8676 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8677 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8678 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8679 if test -n "$regvalue"; then
8681 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8682 with_jdk_home=$regvalue
8684 howfound="found automatically"
8686 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8687 howfound="you passed"
8690 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8691 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 8])
8695 # 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.
8696 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8697 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8698 with_jdk_home=`/usr/libexec/java_home`
8701 JAVA_HOME=; export JAVA_HOME
8702 if test -z "$with_jdk_home"; then
8703 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8705 _java_path="$with_jdk_home/bin/$with_java"
8706 dnl Check if there is a Java interpreter at all.
8707 if test -x "$_java_path"; then
8708 JAVAINTERPRETER=$_java_path
8710 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8714 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8715 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8716 dnl loaded by java to run JunitTests:
8717 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8718 shortjdkhome=`cygpath -d "$with_jdk_home"`
8719 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
8720 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8721 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8722 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
8723 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8724 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8727 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8728 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8730 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8731 elif test "$cross_compiling" != "yes"; then
8733 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8734 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8735 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8736 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8739 *) # assumption: everything else 32-bit
8740 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8741 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8742 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8749 dnl ===================================================================
8751 dnl ===================================================================
8753 # Whether all the complexity here actually is needed any more or not, no idea.
8755 JDK_SECURITYMANAGER_DISALLOWED=
8757 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8759 AC_MSG_CHECKING([the installed JDK])
8760 if test -n "$JAVAINTERPRETER"; then
8761 dnl java -version sends output to stderr!
8762 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8763 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8764 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8765 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8766 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8767 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8768 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8769 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8773 dnl Sun JDK specific tests
8774 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8775 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8777 if test "$_jdk_ver" -lt 10800; then
8778 AC_MSG_ERROR([JDK is too old, you need at least 8 ($_jdk_ver < 10800)])
8780 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8781 dnl completely removed in some Java version > 18 (see
8782 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8783 if test "$_jdk_ver" -ge 180000; then
8784 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8787 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8788 if test "$_os" = "WINNT"; then
8789 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8791 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8793 dnl Check whether the build Java supports modules
8794 if test "$_jdk_ver" -ge 90000; then
8797 AC_MSG_WARN([Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)])
8798 add_warning "Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)"
8801 # set to limit VM usage for JunitTests
8803 # set to limit VM usage for javac
8804 JAVACFLAGS=-J-Xmx128M
8807 AC_MSG_ERROR([Java not found. You need at least JDK 8])
8810 if test -z "$ENABLE_JAVA"; then
8814 elif test "$cross_compiling" = "yes"; then
8815 # Just assume compatibility of build and host JDK
8817 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8821 dnl ===================================================================
8822 dnl Checks for javac
8823 dnl ===================================================================
8824 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8825 javacompiler="javac"
8826 : ${JAVA_SOURCE_VER=8}
8827 : ${JAVA_TARGET_VER=8}
8828 if test -z "$with_jdk_home"; then
8829 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8831 _javac_path="$with_jdk_home/bin/$javacompiler"
8832 dnl Check if there is a Java compiler at all.
8833 if test -x "$_javac_path"; then
8834 JAVACOMPILER=$_javac_path
8837 if test -z "$JAVACOMPILER"; then
8838 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8840 if test "$build_os" = "cygwin"; then
8841 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8842 JAVACOMPILER="${JAVACOMPILER}.exe"
8844 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8848 dnl ===================================================================
8849 dnl Checks for javadoc
8850 dnl ===================================================================
8851 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8852 if test -z "$with_jdk_home"; then
8853 AC_PATH_PROG(JAVADOC, javadoc)
8855 _javadoc_path="$with_jdk_home/bin/javadoc"
8856 dnl Check if there is a javadoc at all.
8857 if test -x "$_javadoc_path"; then
8858 JAVADOC=$_javadoc_path
8860 AC_PATH_PROG(JAVADOC, javadoc)
8863 if test -z "$JAVADOC"; then
8864 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8866 if test "$build_os" = "cygwin"; then
8867 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8868 JAVADOC="${JAVADOC}.exe"
8870 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8873 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8874 JAVADOCISGJDOC="yes"
8878 AC_SUBST(JAVADOCISGJDOC)
8880 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8881 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8882 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8883 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8884 # try to recover first by looking whether we have an alternative
8885 # system as in Debian or newer SuSEs where following /usr/bin/javac
8886 # over /etc/alternatives/javac leads to the right bindir where we
8887 # just need to strip a bit away to get a valid JAVA_HOME
8888 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8889 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8890 # maybe only one level of symlink (e.g. on Mac)
8891 JAVA_HOME=$(readlink $JAVACOMPILER)
8892 if test "$(dirname $JAVA_HOME)" = "."; then
8893 # we've got no path to trim back
8898 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8899 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8900 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8901 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8903 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8904 if test "$JAVA_HOME" != "/usr"; then
8905 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8906 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8907 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8908 dnl Tiger already returns a JDK path...
8909 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8911 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8912 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8913 dnl that checks which version to run
8914 if test -f "$JAVA_HOME"; then
8915 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8920 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8922 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8923 if test -z "$JAVA_HOME"; then
8924 if test "x$with_jdk_home" = "x"; then
8925 cat > findhome.java <<_ACEOF
8926 [import java.io.File;
8930 public static void main(String args[])
8932 String jrelocation = System.getProperty("java.home");
8933 File jre = new File(jrelocation);
8934 System.out.println(jre.getParent());
8938 AC_MSG_CHECKING([if javac works])
8939 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8940 AC_TRY_EVAL(javac_cmd)
8941 if test $? = 0 -a -f ./findhome.class; then
8942 AC_MSG_RESULT([javac works])
8944 echo "configure: javac test failed" >&5
8945 cat findhome.java >&5
8946 AC_MSG_ERROR([javac does not work - java projects will not build!])
8948 AC_MSG_CHECKING([if gij knows its java.home])
8949 JAVA_HOME=`$JAVAINTERPRETER findhome`
8950 if test $? = 0 -a "$JAVA_HOME" != ""; then
8951 AC_MSG_RESULT([$JAVA_HOME])
8953 echo "configure: java test failed" >&5
8954 cat findhome.java >&5
8955 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8957 # clean-up after ourselves
8958 rm -f ./findhome.java ./findhome.class
8960 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8964 # now check if $JAVA_HOME is really valid
8965 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8966 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8967 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8968 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8969 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8970 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8971 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8972 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8975 PathFormat "$JAVA_HOME"
8976 JAVA_HOME="$formatted_path"
8979 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8982 AC_MSG_CHECKING([for JAWT lib])
8983 if test "$_os" = WINNT; then
8984 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8989 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8990 JAVA_ARCH=$my_java_arch
9005 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
9006 JAVA_ARCH=$my_java_arch
9009 my_java_arch=sparcv9
9015 my_java_arch=$host_cpu
9018 # This is where JDK9 puts the library
9019 if test -e "$JAVA_HOME/lib/libjawt.so"; then
9020 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
9022 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
9024 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
9026 AC_MSG_RESULT([$JAWTLIB])
9030 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
9034 JAVAINC="-I$JAVA_HOME/include/win32"
9035 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
9039 if test -d "$JAVA_HOME/include/darwin"; then
9040 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
9042 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
9047 JAVAINC="-I$JAVA_HOME/include"
9048 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9052 JAVAINC="-I$JAVA_HOME/include"
9053 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
9054 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
9055 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9056 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9060 JAVAINC="-I$JAVA_HOME/include"
9061 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9062 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9066 JAVAINC="-I$JAVA_HOME/include"
9067 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9068 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9072 JAVAINC="-I$JAVA_HOME/include"
9073 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9074 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9078 JAVAINC="-I$JAVA_HOME/include"
9079 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9080 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9084 JAVAINC="-I$JAVA_HOME/include"
9085 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9086 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9090 SOLARINC="$SOLARINC $JAVAINC"
9092 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9093 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9094 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9096 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9099 AC_SUBST(JAVACFLAGS)
9100 AC_SUBST(JAVACOMPILER)
9101 AC_SUBST(JAVAINTERPRETER)
9102 AC_SUBST(JAVAIFLAGS)
9103 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9105 AC_SUBST(JAVA_HOME_FOR_BUILD)
9107 AC_SUBST(JDK_FOR_BUILD)
9108 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9109 AC_SUBST(JAVA_SOURCE_VER)
9110 AC_SUBST(JAVA_TARGET_VER)
9111 AC_SUBST(MODULAR_JAVA)
9114 dnl ===================================================================
9115 dnl Export file validation
9116 dnl ===================================================================
9117 AC_MSG_CHECKING([whether to enable export file validation])
9118 if test "$with_export_validation" != "no"; then
9119 if test -z "$ENABLE_JAVA"; then
9120 if test "$with_export_validation" = "yes"; then
9121 AC_MSG_ERROR([requested, but Java is disabled])
9123 AC_MSG_RESULT([no, as Java is disabled])
9125 elif ! test -d "${SRC_ROOT}/schema"; then
9126 if test "$with_export_validation" = "yes"; then
9127 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9129 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9132 AC_MSG_RESULT([yes])
9133 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9135 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9136 if test -z "$ODFVALIDATOR"; then
9137 # remember to download the ODF toolkit with validator later
9138 AC_MSG_NOTICE([no odfvalidator found, will download it])
9139 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9140 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9142 # and fetch name of odfvalidator jar name from download.lst
9143 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9144 AC_SUBST(ODFVALIDATOR_JAR)
9146 if test -z "$ODFVALIDATOR_JAR"; then
9147 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9150 if test "$build_os" = "cygwin"; then
9151 # In case of Cygwin it will be executed from Windows,
9152 # so we need to run bash and absolute path to validator
9153 # so instead of "odfvalidator" it will be
9154 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9155 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9157 ODFVALIDATOR="sh $ODFVALIDATOR"
9159 AC_SUBST(ODFVALIDATOR)
9162 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9163 if test -z "$OFFICEOTRON"; then
9164 # remember to download the officeotron with validator later
9165 AC_MSG_NOTICE([no officeotron found, will download it])
9166 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9167 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9169 # and fetch name of officeotron jar name from download.lst
9170 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9171 AC_SUBST(OFFICEOTRON_JAR)
9173 if test -z "$OFFICEOTRON_JAR"; then
9174 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9177 # check version of existing officeotron
9178 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9179 if test 0"$OFFICEOTRON_VER" -lt 704; then
9180 AC_MSG_ERROR([officeotron too old])
9183 if test "$build_os" = "cygwin"; then
9184 # In case of Cygwin it will be executed from Windows,
9185 # so we need to run bash and absolute path to validator
9186 # so instead of "odfvalidator" it will be
9187 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9188 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9190 OFFICEOTRON="sh $OFFICEOTRON"
9193 AC_SUBST(OFFICEOTRON)
9198 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9199 if test "$with_bffvalidator" != "no"; then
9200 AC_DEFINE(HAVE_BFFVALIDATOR)
9202 if test "$with_export_validation" = "no"; then
9203 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9206 if test "$with_bffvalidator" = "yes"; then
9207 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9209 BFFVALIDATOR="$with_bffvalidator"
9212 if test "$build_os" = "cygwin"; then
9213 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9214 AC_MSG_RESULT($BFFVALIDATOR)
9216 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9218 elif test -n "$BFFVALIDATOR"; then
9219 # We are not in Cygwin but need to run Windows binary with wine
9220 AC_PATH_PROGS(WINE, wine)
9222 # so swap in a shell wrapper that converts paths transparently
9223 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9224 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9225 AC_SUBST(BFFVALIDATOR_EXE)
9226 AC_MSG_RESULT($BFFVALIDATOR)
9228 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9230 AC_SUBST(BFFVALIDATOR)
9235 dnl ===================================================================
9236 dnl Check for epm (not needed for Windows)
9237 dnl ===================================================================
9238 AC_MSG_CHECKING([whether to enable EPM for packing])
9239 if test "$enable_epm" = "yes"; then
9240 AC_MSG_RESULT([yes])
9241 if test "$_os" != "WINNT"; then
9242 if test $_os = Darwin; then
9244 elif test -n "$with_epm"; then
9247 AC_PATH_PROG(EPM, epm, no)
9249 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9250 AC_MSG_NOTICE([EPM will be built.])
9251 BUILD_TYPE="$BUILD_TYPE EPM"
9252 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9254 # Gentoo has some epm which is something different...
9255 AC_MSG_CHECKING([whether the found epm is the right epm])
9256 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9257 AC_MSG_RESULT([yes])
9259 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9261 AC_MSG_CHECKING([epm version])
9262 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9263 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9264 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9265 AC_MSG_RESULT([OK, >= 3.7])
9267 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9268 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9273 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9274 AC_MSG_CHECKING([for rpm])
9275 for a in "$RPM" rpmbuild rpm; do
9276 $a --usage >/dev/null 2> /dev/null
9277 if test $? -eq 0; then
9281 $a --version >/dev/null 2> /dev/null
9282 if test $? -eq 0; then
9288 if test -z "$RPM"; then
9289 AC_MSG_ERROR([not found])
9290 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9291 RPM_PATH=`which $RPM`
9292 AC_MSG_RESULT([$RPM_PATH])
9293 SCPDEFS="$SCPDEFS -DWITH_RPM"
9295 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9298 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9299 AC_PATH_PROG(DPKG, dpkg, no)
9300 if test "$DPKG" = "no"; then
9301 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9304 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9305 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9306 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9307 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9308 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9309 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9310 AC_MSG_RESULT([yes])
9313 if echo "$PKGFORMAT" | $GREP -q rpm; then
9315 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9316 add_warning "the rpms will need to be installed with --nodeps"
9320 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9321 add_warning "the ${_pt}s will not be relocatable"
9322 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9323 relocation will work, you need to patch your epm with the
9324 patch in epm/epm-3.7.patch or build with
9325 --with-epm=internal which will build a suitable epm])
9330 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9331 AC_PATH_PROG(PKGMK, pkgmk, no)
9332 if test "$PKGMK" = "no"; then
9333 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9340 for i in $PKGFORMAT; do
9342 bsd | deb | pkg | rpm | native | portable)
9344 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9354 if test "$enable_lotuswordpro" = "yes"; then
9357 AC_SUBST(ENABLE_LWP)
9359 dnl ===================================================================
9360 dnl Check for building ODK
9361 dnl ===================================================================
9362 AC_MSG_CHECKING([whether to build the ODK])
9363 if test "$enable_odk" = yes; then
9364 if test "$DISABLE_DYNLOADING" = TRUE; then
9365 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9367 AC_MSG_RESULT([yes])
9368 BUILD_TYPE="$BUILD_TYPE ODK"
9373 if test "$enable_odk" != yes; then
9376 if test "$with_doxygen" = no; then
9377 AC_MSG_CHECKING([for doxygen])
9381 if test "$with_doxygen" = yes; then
9382 AC_PATH_PROG([DOXYGEN], [doxygen])
9383 if test -z "$DOXYGEN"; then
9384 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9386 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9387 if ! dot -V 2>/dev/null; then
9388 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9392 AC_MSG_CHECKING([for doxygen])
9393 DOXYGEN=$with_doxygen
9394 AC_MSG_RESULT([$DOXYGEN])
9396 if test -n "$DOXYGEN"; then
9397 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9398 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9399 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9400 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9407 dnl ==================================================================
9409 dnl ==================================================================
9410 AC_MSG_CHECKING([whether to enable fuzzers])
9411 if test "$enable_fuzzers" != yes; then
9414 if test -z $LIB_FUZZING_ENGINE; then
9415 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9417 AC_MSG_RESULT([yes])
9418 ENABLE_FUZZERS="TRUE"
9419 AC_DEFINE([ENABLE_FUZZERS],1)
9420 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9422 AC_SUBST(LIB_FUZZING_ENGINE)
9424 dnl ===================================================================
9425 dnl Check for system zlib
9426 dnl ===================================================================
9427 if test "$with_system_zlib" = "auto"; then
9430 with_system_zlib="$with_system_libs"
9433 if test "$enable_fuzzers" != "yes"; then
9434 with_system_zlib=yes
9442 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9443 dnl and has no pkg-config for it at least on some tinderboxes,
9444 dnl so leaving that out for now
9445 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9446 AC_MSG_CHECKING([which zlib to use])
9447 if test "$with_system_zlib" = "yes"; then
9448 AC_MSG_RESULT([external])
9450 AC_CHECK_HEADER(zlib.h, [],
9451 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9452 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9453 [AC_MSG_ERROR(zlib not found or functional)], [])
9455 AC_MSG_RESULT([internal])
9457 BUILD_TYPE="$BUILD_TYPE ZLIB"
9458 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9459 if test "$COM" = "MSC"; then
9460 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9462 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9465 AC_SUBST(ZLIB_CFLAGS)
9467 AC_SUBST(SYSTEM_ZLIB)
9469 dnl ===================================================================
9470 dnl Check for system jpeg
9471 dnl ===================================================================
9472 AC_MSG_CHECKING([which libjpeg to use])
9473 if test "$with_system_jpeg" = "yes"; then
9474 AC_MSG_RESULT([external])
9476 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9477 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9478 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9479 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9482 AC_MSG_RESULT([internal, libjpeg-turbo])
9483 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9486 x86_64 | amd64 | i*86 | x86 | ia32)
9487 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9488 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9489 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9490 NASM="$LODE_HOME/opt/bin/nasm"
9491 elif test -x "/opt/lo/bin/nasm"; then
9492 NASM="/opt/lo/bin/nasm"
9496 if test -n "$NASM"; then
9497 AC_MSG_CHECKING([for object file format of host system])
9499 cygwin* | mingw* | pw32* | wsl*)
9509 msdosdjgpp* | go32*)
9512 os2-emx*) # not tested
9513 objfmt='MSOMF' # obj
9515 linux*coff* | linux*oldld*)
9531 kfreebsd* | freebsd* | netbsd* | openbsd*)
9532 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9545 solaris* | sunos* | sysv* | sco*)
9555 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9570 AC_MSG_RESULT([$objfmt])
9571 if test "$objfmt" = 'ELF ?'; then
9573 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9576 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9578 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9579 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9580 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9581 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9582 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9583 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9584 ELF) NAFLAGS='-felf -DELF -DPIC';;
9585 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9586 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9587 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9588 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9590 AC_MSG_RESULT([$NAFLAGS])
9592 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9593 cat > conftest.asm << EOF
9594 [%line __oline__ "configure"
9602 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9603 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9606 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9607 cat conftest.asm >&AS_MESSAGE_LOG_FD
9610 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9616 if test -z "$NASM"; then
9618 ****************************************************************************
9619 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9623 if test "$build_os" = "cygwin"; then
9625 install a pre-compiled binary for Win32
9627 mkdir -p /opt/lo/bin
9629 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9632 or get and install one from https://www.nasm.us/
9634 Then re-run autogen.sh
9636 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9637 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9642 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9646 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9647 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9655 AC_SUBST(LIBJPEG_CFLAGS)
9656 AC_SUBST(LIBJPEG_LIBS)
9657 AC_SUBST(SYSTEM_LIBJPEG)
9659 dnl ===================================================================
9660 dnl Check for system clucene
9661 dnl ===================================================================
9662 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9663 if test "$SYSTEM_CLUCENE" = TRUE; then
9665 save_CXXFLAGS=$CXXFLAGS
9666 save_CPPFLAGS=$CPPFLAGS
9667 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9668 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9669 dnl https://sourceforge.net/p/clucene/bugs/200/
9670 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9671 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9672 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9673 CXXFLAGS=$save_CXXFLAGS
9674 CPPFLAGS=$save_CPPFLAGS
9676 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9679 dnl ===================================================================
9680 dnl Check for system expat
9681 dnl ===================================================================
9682 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9684 dnl ===================================================================
9685 dnl Check for system xmlsec
9686 dnl ===================================================================
9687 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9689 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9690 if test "$enable_eot" = "yes"; then
9692 AC_DEFINE([ENABLE_EOT])
9693 AC_MSG_RESULT([yes])
9695 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9700 AC_SUBST([ENABLE_EOT])
9702 dnl ===================================================================
9703 dnl Check for DLP libs
9704 dnl ===================================================================
9705 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9706 AS_IF([test "$COM" = "MSC"],
9707 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9708 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9710 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9711 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9713 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9715 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9717 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9718 AS_IF([test "$COM" = "MSC"],
9719 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9720 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9722 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9723 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9725 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9727 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9728 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9730 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9732 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9734 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9736 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9737 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9739 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9740 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9742 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9744 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9745 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9747 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9749 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9751 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9753 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9755 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9756 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9758 dnl ===================================================================
9759 dnl Check for system lcms2
9760 dnl ===================================================================
9761 if test "$with_system_lcms2" != "yes"; then
9764 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9765 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9766 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9767 if test "$GCC" = "yes"; then
9768 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9770 if test "$COM" = "MSC"; then # override the above
9771 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9774 dnl ===================================================================
9775 dnl Check for system cppunit
9776 dnl ===================================================================
9777 if test "$_os" != "Android" ; then
9778 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9781 dnl ===================================================================
9782 dnl Check whether freetype is available
9784 dnl FreeType has 3 different kinds of versions
9785 dnl * release, like 2.4.10
9786 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9788 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9791 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9792 dnl ===================================================================
9793 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9794 if test "x$ac_config_site_64bit_host" = xYES; then
9795 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9797 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9799 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9801 # ===================================================================
9802 # Check for system libxslt
9803 # to prevent incompatibilities between internal libxml2 and external libxslt,
9804 # or vice versa, use with_system_libxml here
9805 # ===================================================================
9806 if test "$with_system_libxml" = "auto"; then
9809 with_system_libxml="$with_system_libs"
9812 with_system_libxml=no
9815 if test "$enable_fuzzers" != "yes"; then
9816 with_system_libxml=yes
9818 with_system_libxml=no
9824 AC_MSG_CHECKING([which libxslt to use])
9825 if test "$with_system_libxml" = "yes"; then
9826 AC_MSG_RESULT([external])
9828 if test "$_os" = "Darwin"; then
9829 dnl make sure to use SDK path
9830 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9831 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9833 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9834 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9836 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9837 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9838 FilterLibs "${LIBXSLT_LIBS}"
9839 LIBXSLT_LIBS="${filteredlibs}"
9840 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9841 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9842 FilterLibs "${LIBEXSLT_LIBS}"
9843 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9846 dnl Check for xsltproc
9847 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9848 if test "$XSLTPROC" = "no"; then
9849 AC_MSG_ERROR([xsltproc is required])
9852 AC_MSG_RESULT([internal])
9854 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9856 AC_SUBST(SYSTEM_LIBXSLT)
9857 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9858 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9860 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9862 AC_SUBST(LIBEXSLT_CFLAGS)
9863 AC_SUBST(LIBEXSLT_LIBS)
9864 AC_SUBST(LIBXSLT_CFLAGS)
9865 AC_SUBST(LIBXSLT_LIBS)
9868 # ===================================================================
9869 # Check for system libxml
9870 # ===================================================================
9871 AC_MSG_CHECKING([which libxml to use])
9872 if test "$with_system_libxml" = "yes"; then
9873 AC_MSG_RESULT([external])
9875 if test "$_os" = "Darwin"; then
9876 dnl make sure to use SDK path
9877 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9879 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9880 elif test $_os = iOS; then
9881 dnl make sure to use SDK path
9882 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9883 LIBXML_CFLAGS="-I$usr/include/libxml2"
9884 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9886 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9887 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9888 FilterLibs "${LIBXML_LIBS}"
9889 LIBXML_LIBS="${filteredlibs}"
9892 dnl Check for xmllint
9893 AC_PATH_PROG(XMLLINT, xmllint, no)
9894 if test "$XMLLINT" = "no"; then
9895 AC_MSG_ERROR([xmllint is required])
9898 AC_MSG_RESULT([internal])
9900 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9901 if test "$COM" = "MSC"; then
9902 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9904 if test "$COM" = "MSC"; then
9905 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9907 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9908 if test "$DISABLE_DYNLOADING" = TRUE; then
9909 LIBXML_LIBS="$LIBXML_LIBS -lm"
9912 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9914 AC_SUBST(SYSTEM_LIBXML)
9915 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9916 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9918 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9919 AC_SUBST(LIBXML_CFLAGS)
9920 AC_SUBST(LIBXML_LIBS)
9923 # =====================================================================
9924 # Checking for a Python interpreter with version >= 3.3.
9925 # Optionally user can pass an option to configure, i. e.
9926 # ./configure PYTHON=/usr/bin/python
9927 # =====================================================================
9928 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9929 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9930 # unless PYTHON is defined as above which allows 'system'
9931 enable_python=internal
9933 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9934 if test -n "$PYTHON"; then
9935 PYTHON_FOR_BUILD=$PYTHON
9937 # This allows a lack of system python with no error, we use internal one in that case.
9938 AM_PATH_PYTHON([3.3],, [:])
9939 # Clean PYTHON_VERSION checked below if cross-compiling
9941 if test "$PYTHON" != ":"; then
9942 PYTHON_FOR_BUILD=$PYTHON
9947 # Checks for Python to use for Pyuno
9948 AC_MSG_CHECKING([which Python to use for Pyuno])
9949 case "$enable_python" in
9951 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9952 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9953 # requirement from the choice whether to include Python stuff in the installer, but why
9955 AC_MSG_ERROR([Python is required at build time.])
9958 AC_MSG_RESULT([none])
9961 if test "$DISABLE_SCRIPTING" = TRUE; then
9962 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9963 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9965 AC_MSG_RESULT([none, overridden by --disable-scripting])
9967 elif test $build_os = cygwin -o $build_os = wsl; then
9968 dnl When building on Windows we don't attempt to use any installed
9969 dnl "system" Python.
9970 AC_MSG_RESULT([fully internal])
9971 enable_python=internal
9972 elif test "$cross_compiling" = yes; then
9973 AC_MSG_RESULT([system])
9974 enable_python=system
9976 # Unset variables set by the above AM_PATH_PYTHON so that
9977 # we actually do check anew.
9979 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
9980 AM_PATH_PYTHON([3.3],, [:])
9981 AC_MSG_CHECKING([which Python to use for Pyuno])
9982 if test "$PYTHON" = ":"; then
9983 if test -z "$PYTHON_FOR_BUILD"; then
9984 AC_MSG_RESULT([fully internal])
9986 AC_MSG_RESULT([internal])
9988 enable_python=internal
9990 AC_MSG_RESULT([system])
9991 enable_python=system
9996 AC_MSG_RESULT([internal])
9999 AC_MSG_RESULT([fully internal])
10000 enable_python=internal
10003 AC_MSG_RESULT([system])
10004 if test "$_os" = Darwin -a -z "$PYTHON"; then
10005 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
10009 AC_MSG_ERROR([Incorrect --enable-python option])
10013 if test $enable_python != no; then
10014 BUILD_TYPE="$BUILD_TYPE PYUNO"
10017 if test $enable_python = system; then
10018 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
10019 # Fallback: Accept these in the environment, or as set above
10022 elif test "$cross_compiling" != yes; then
10023 # Unset variables set by the above AM_PATH_PYTHON so that
10024 # we actually do check anew.
10025 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
10026 # This causes an error if no python command is found
10027 AM_PATH_PYTHON([3.3])
10028 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
10029 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
10030 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
10031 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
10032 if test -z "$PKG_CONFIG"; then
10033 PYTHON_CFLAGS="-I$python_include"
10034 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10035 elif $PKG_CONFIG --exists python-$python_version-embed; then
10036 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
10037 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
10038 elif $PKG_CONFIG --exists python-$python_version; then
10039 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
10040 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
10042 PYTHON_CFLAGS="-I$python_include"
10043 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10045 FilterLibs "${PYTHON_LIBS}"
10046 PYTHON_LIBS="${filteredlibs}"
10048 dnl How to find out the cross-compilation Python installation path?
10049 AC_MSG_CHECKING([for python version])
10050 AS_IF([test -n "$PYTHON_VERSION"],
10051 [AC_MSG_RESULT([$PYTHON_VERSION])],
10052 [AC_MSG_RESULT([not found])
10053 AC_MSG_ERROR([no usable python found])])
10054 test -n "$PYTHON_CFLAGS" && break
10057 dnl Check if the headers really work
10058 save_CPPFLAGS="$CPPFLAGS"
10059 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10060 AC_CHECK_HEADER(Python.h)
10061 CPPFLAGS="$save_CPPFLAGS"
10063 # let the PYTHON_FOR_BUILD match the same python installation that
10064 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10065 # better for PythonTests.
10066 PYTHON_FOR_BUILD=$PYTHON
10069 if test "$with_lxml" != no; then
10070 if test -z "$PYTHON_FOR_BUILD"; then
10073 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10076 if test "$cross_compiling" != yes ; then
10077 BUILD_TYPE="$BUILD_TYPE LXML"
10082 AC_MSG_CHECKING([for python lxml])
10083 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10084 AC_MSG_RESULT([yes])
10088 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10091 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10092 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10093 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10095 BUILD_TYPE="$BUILD_TYPE LXML"
10096 AC_MSG_RESULT([no, using internal lxml])
10099 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10107 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10109 PYTHON_VERSION_MAJOR=3
10110 PYTHON_VERSION_MINOR=8
10111 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
10112 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10113 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10115 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10117 # Embedded Python dies without Home set
10118 if test "$HOME" = ""; then
10123 dnl By now enable_python should be "system", "internal" or "no"
10124 case $enable_python in
10128 if test "x$ac_cv_header_Python_h" != "xyes"; then
10129 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10133 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10134 AC_MSG_CHECKING([for correct python library version])
10135 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10136 #include <Python.h>
10138 int main(int argc, char **argv) {
10139 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10142 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10145 dnl FIXME Check if the Python library can be linked with, too?
10149 BUILD_TYPE="$BUILD_TYPE PYTHON"
10150 if test "$OS" = LINUX -o "$OS" = WNT ; then
10151 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10155 DISABLE_PYTHON=TRUE
10159 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10163 AC_SUBST(DISABLE_PYTHON)
10164 AC_SUBST(SYSTEM_PYTHON)
10165 AC_SUBST(PYTHON_CFLAGS)
10166 AC_SUBST(PYTHON_FOR_BUILD)
10167 AC_SUBST(PYTHON_LIBS)
10168 AC_SUBST(PYTHON_VERSION)
10169 AC_SUBST(PYTHON_VERSION_MAJOR)
10170 AC_SUBST(PYTHON_VERSION_MINOR)
10172 AC_MSG_CHECKING([whether to build LibreLogo])
10173 case "$enable_python" in
10175 AC_MSG_RESULT([no; Python disabled])
10178 if test "${enable_librelogo}" = "no"; then
10179 AC_MSG_RESULT([no])
10181 AC_MSG_RESULT([yes])
10182 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10183 AC_DEFINE([ENABLE_LIBRELOGO],1)
10187 AC_SUBST(ENABLE_LIBRELOGO)
10193 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10194 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10195 ENABLE_MARIADBC=TRUE
10196 AC_MSG_RESULT([yes])
10197 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10199 AC_MSG_RESULT([no])
10201 AC_SUBST(ENABLE_MARIADBC)
10202 AC_SUBST(MARIADBC_MAJOR)
10203 AC_SUBST(MARIADBC_MINOR)
10204 AC_SUBST(MARIADBC_MICRO)
10206 if test "$ENABLE_MARIADBC" = "TRUE"; then
10207 dnl ===================================================================
10208 dnl Check for system MariaDB
10209 dnl ===================================================================
10210 AC_MSG_CHECKING([which MariaDB to use])
10211 if test "$with_system_mariadb" = "yes"; then
10212 AC_MSG_RESULT([external])
10213 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10214 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10215 if test -z "$MARIADBCONFIG"; then
10216 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10217 if test -z "$MARIADBCONFIG"; then
10218 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10219 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10222 AC_MSG_CHECKING([MariaDB version])
10223 MARIADB_VERSION=`$MARIADBCONFIG --version`
10224 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10225 if test "$MARIADB_MAJOR" -ge "5"; then
10226 AC_MSG_RESULT([OK])
10228 AC_MSG_ERROR([too old, use 5.0.x or later])
10230 AC_MSG_CHECKING([for MariaDB Client library])
10231 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10232 if test "$COM_IS_CLANG" = TRUE; then
10233 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10235 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10236 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10237 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10239 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10240 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10241 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10242 | sed -e 's|/lib64/|/lib/|')
10244 FilterLibs "${MARIADB_LIBS}"
10245 MARIADB_LIBS="${filteredlibs}"
10246 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10247 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10248 if test "$enable_bundle_mariadb" = "yes"; then
10249 AC_MSG_RESULT([yes])
10250 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10251 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10253 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10255 /g' | grep -E '(mysqlclient|mariadb)')
10256 if test "$_os" = "Darwin"; then
10257 LIBMARIADB=${LIBMARIADB}.dylib
10258 elif test "$_os" = "WINNT"; then
10259 LIBMARIADB=${LIBMARIADB}.dll
10261 LIBMARIADB=${LIBMARIADB}.so
10263 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10264 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10265 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10266 AC_MSG_RESULT([found.])
10267 PathFormat "$LIBMARIADB_PATH"
10268 LIBMARIADB_PATH="$formatted_path"
10270 AC_MSG_ERROR([not found.])
10273 AC_MSG_RESULT([no])
10274 BUNDLE_MARIADB_CONNECTOR_C=
10277 AC_MSG_RESULT([internal])
10278 SYSTEM_MARIADB_CONNECTOR_C=
10279 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10280 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10281 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10284 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10285 AC_SUBST(MARIADB_CFLAGS)
10286 AC_SUBST(MARIADB_LIBS)
10287 AC_SUBST(LIBMARIADB)
10288 AC_SUBST(LIBMARIADB_PATH)
10289 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10292 dnl ===================================================================
10293 dnl Check for system hsqldb
10294 dnl ===================================================================
10295 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10296 AC_MSG_CHECKING([which hsqldb to use])
10297 if test "$with_system_hsqldb" = "yes"; then
10298 AC_MSG_RESULT([external])
10300 if test -z $HSQLDB_JAR; then
10301 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10303 if ! test -f $HSQLDB_JAR; then
10304 AC_MSG_ERROR(hsqldb.jar not found.)
10306 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10310 my $file = "$ENV{'HSQLDB_JAR'}";
10311 my $zip = Archive::Zip->new( $file );
10312 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10313 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10315 push @l, split(/\n/, $mf);
10316 foreach my $line (@l)
10318 if ($line =~ m/Specification-Version:/)
10320 ($t, $version) = split (/:/,$line);
10321 $version =~ s/^\s//;
10322 ($a, $b, $c, $d) = split (/\./,$version);
10323 if ($c == "0" && $d > "8")
10338 AC_MSG_RESULT([yes])
10340 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10343 AC_MSG_RESULT([internal])
10345 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10349 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10350 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10353 AC_SUBST(SYSTEM_HSQLDB)
10354 AC_SUBST(HSQLDB_JAR)
10356 dnl ===================================================================
10357 dnl Check for PostgreSQL stuff
10358 dnl ===================================================================
10359 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10360 if test "x$enable_postgresql_sdbc" != "xno"; then
10361 AC_MSG_RESULT([yes])
10362 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10364 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10365 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10367 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10368 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10371 postgres_interface=""
10372 if test "$with_system_postgresql" = "yes"; then
10373 postgres_interface="external PostgreSQL"
10374 SYSTEM_POSTGRESQL=TRUE
10375 if test "$_os" = Darwin; then
10377 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10378 pg_supp_path="$P_SEP$d$pg_supp_path"
10381 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10382 if test -n "$PGCONFIG"; then
10383 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10384 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10386 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10387 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10388 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10390 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10393 FilterLibs "${POSTGRESQL_LIB}"
10394 POSTGRESQL_LIB="${filteredlibs}"
10396 # if/when anything else than PostgreSQL uses Kerberos,
10397 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10402 # macOS has system MIT Kerberos 5 since 10.4
10403 if test "$with_krb5" != "no"; then
10406 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10407 # that the libraries where these functions are located on macOS will change, is it?
10408 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10409 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10412 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10413 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10414 KRB5_LIBS="$KRB5_LIBS $LIBS"
10417 if test "$with_gssapi" != "no"; then
10420 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10421 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10427 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10428 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10431 Linux|GNU|*BSD|DragonFly)
10432 if test "$with_krb5" != "no"; then
10435 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10436 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10439 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10440 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10441 KRB5_LIBS="$KRB5_LIBS $LIBS"
10444 if test "$with_gssapi" != "no"; then
10447 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10448 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10454 if test "$with_krb5" = "yes"; then
10457 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10458 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10461 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10462 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10463 KRB5_LIBS="$KRB5_LIBS $LIBS"
10466 if test "$with_gssapi" = "yes"; then
10469 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10470 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10476 if test -n "$with_libpq_path"; then
10477 SYSTEM_POSTGRESQL=TRUE
10478 postgres_interface="external libpq"
10479 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10480 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10483 postgres_interface="internal"
10485 POSTGRESQL_INC="%OVERRIDE_ME%"
10486 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10490 AC_MSG_CHECKING([PostgreSQL C interface])
10491 AC_MSG_RESULT([$postgres_interface])
10493 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10494 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10495 save_CFLAGS=$CFLAGS
10496 save_CPPFLAGS=$CPPFLAGS
10498 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10499 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10500 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10501 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10502 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10503 CFLAGS=$save_CFLAGS
10504 CPPFLAGS=$save_CPPFLAGS
10507 BUILD_POSTGRESQL_SDBC=TRUE
10509 AC_MSG_RESULT([no])
10511 AC_SUBST(WITH_KRB5)
10512 AC_SUBST(WITH_GSSAPI)
10513 AC_SUBST(GSSAPI_LIBS)
10514 AC_SUBST(KRB5_LIBS)
10515 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10516 AC_SUBST(SYSTEM_POSTGRESQL)
10517 AC_SUBST(POSTGRESQL_INC)
10518 AC_SUBST(POSTGRESQL_LIB)
10520 dnl ===================================================================
10521 dnl Check for Firebird stuff
10522 dnl ===================================================================
10523 ENABLE_FIREBIRD_SDBC=
10524 if test "$enable_firebird_sdbc" = "yes" ; then
10525 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10527 dnl ===================================================================
10528 dnl Check for system Firebird
10529 dnl ===================================================================
10530 AC_MSG_CHECKING([which Firebird to use])
10531 if test "$with_system_firebird" = "yes"; then
10532 AC_MSG_RESULT([external])
10533 SYSTEM_FIREBIRD=TRUE
10534 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10535 if test -z "$FIREBIRDCONFIG"; then
10536 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10537 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10538 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10540 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10542 AC_MSG_NOTICE([fb_config found])
10543 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10544 AC_MSG_CHECKING([for Firebird Client library])
10545 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10546 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10547 FilterLibs "${FIREBIRD_LIBS}"
10548 FIREBIRD_LIBS="${filteredlibs}"
10550 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10551 AC_MSG_CHECKING([Firebird version])
10552 if test -n "${FIREBIRD_VERSION}"; then
10553 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10554 if test "$FIREBIRD_MAJOR" -ge "3"; then
10555 AC_MSG_RESULT([OK])
10557 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10560 save_CFLAGS="${CFLAGS}"
10561 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10562 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10563 #if defined(FB_API_VER) && FB_API_VER == 30
10564 int fb_api_is_30(void) { return 0; }
10566 #error "Wrong Firebird API version"
10567 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10568 CFLAGS="$save_CFLAGS"
10570 ENABLE_FIREBIRD_SDBC=TRUE
10571 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10572 elif test "$enable_database_connectivity" = no; then
10573 AC_MSG_RESULT([none])
10574 elif test "$cross_compiling" = "yes"; then
10575 AC_MSG_RESULT([none])
10577 dnl Embedded Firebird has version 3.0
10578 dnl We need libatomic_ops for any non X86/X64 system
10579 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10580 dnl ===================================================================
10581 dnl Check for system libatomic_ops
10582 dnl ===================================================================
10583 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10584 if test "$with_system_libatomic_ops" = "yes"; then
10585 SYSTEM_LIBATOMIC_OPS=TRUE
10586 AC_CHECK_HEADERS(atomic_ops.h, [],
10587 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10589 SYSTEM_LIBATOMIC_OPS=
10590 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10591 LIBATOMIC_OPS_LIBS="-latomic_ops"
10592 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10596 AC_MSG_RESULT([internal])
10598 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10599 FIREBIRD_LIBS="-lfbclient"
10601 if test "$with_system_libtommath" = "yes"; then
10602 SYSTEM_LIBTOMMATH=TRUE
10603 dnl check for tommath presence
10605 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10606 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10610 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10611 LIBTOMMATH_LIBS="-ltommath"
10612 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10615 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10616 ENABLE_FIREBIRD_SDBC=TRUE
10617 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10620 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10621 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10622 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10623 AC_SUBST(LIBATOMIC_OPS_LIBS)
10624 AC_SUBST(SYSTEM_FIREBIRD)
10625 AC_SUBST(FIREBIRD_CFLAGS)
10626 AC_SUBST(FIREBIRD_LIBS)
10627 AC_SUBST(SYSTEM_LIBTOMMATH)
10628 AC_SUBST(LIBTOMMATH_CFLAGS)
10629 AC_SUBST(LIBTOMMATH_LIBS)
10631 dnl ===================================================================
10632 dnl Check for system curl
10633 dnl ===================================================================
10634 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10636 dnl ===================================================================
10637 dnl Check for system boost
10638 dnl ===================================================================
10639 AC_MSG_CHECKING([which boost to use])
10640 if test "$with_system_boost" = "yes"; then
10641 AC_MSG_RESULT([external])
10643 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10645 AX_BOOST_FILESYSTEM
10648 AC_LANG_PUSH([C++])
10649 save_CXXFLAGS=$CXXFLAGS
10650 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10651 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10652 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10653 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10654 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10655 CXXFLAGS=$save_CXXFLAGS
10657 # this is in m4/ax_boost_base.m4
10658 FilterLibs "${BOOST_LDFLAGS}"
10659 BOOST_LDFLAGS="${filteredlibs}"
10661 AC_MSG_RESULT([internal])
10662 BUILD_TYPE="$BUILD_TYPE BOOST"
10664 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10665 # use warning-suppressing wrapper headers
10666 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10668 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10671 AC_SUBST(SYSTEM_BOOST)
10673 dnl ===================================================================
10674 dnl Check for system mdds
10675 dnl ===================================================================
10676 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10677 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10679 dnl ===================================================================
10680 dnl Check for system dragonbox
10681 dnl ===================================================================
10682 AC_MSG_CHECKING([which dragonbox to use])
10683 if test "$with_system_dragonbox" = "yes"; then
10684 AC_MSG_RESULT([external])
10685 SYSTEM_DRAGONBOX=TRUE
10686 AC_LANG_PUSH([C++])
10687 save_CPPFLAGS=$CPPFLAGS
10688 # This is where upstream installs to, unfortunately no .pc or so...
10689 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10690 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10691 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10692 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10694 CPPFLAGS=$save_CPPFLAGS
10696 AC_MSG_RESULT([internal])
10697 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10700 AC_SUBST([SYSTEM_DRAGONBOX])
10701 AC_SUBST([DRAGONBOX_CFLAGS])
10703 dnl ===================================================================
10704 dnl Check for system frozen
10705 dnl ===================================================================
10706 AC_MSG_CHECKING([which frozen to use])
10707 if test "$with_system_frozen" = "yes"; then
10708 AC_MSG_RESULT([external])
10710 AC_LANG_PUSH([C++])
10711 save_CPPFLAGS=$CPPFLAGS
10712 AC_CHECK_HEADER([frozen/unordered_map.h], [],
10713 [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10715 CPPFLAGS=$save_CPPFLAGS
10717 AC_MSG_RESULT([internal])
10718 BUILD_TYPE="$BUILD_TYPE FROZEN"
10721 AC_SUBST([SYSTEM_FROZEN])
10722 AC_SUBST([FROZEN_CFLAGS])
10724 dnl ===================================================================
10725 dnl Check for system libfixmath
10726 dnl ===================================================================
10727 AC_MSG_CHECKING([which libfixmath to use])
10728 if test "$with_system_libfixmath" = "yes"; then
10729 AC_MSG_RESULT([external])
10730 SYSTEM_LIBFIXMATH=TRUE
10731 AC_LANG_PUSH([C++])
10732 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10733 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10734 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10737 AC_MSG_RESULT([internal])
10740 AC_SUBST([SYSTEM_LIBFIXMATH])
10742 dnl ===================================================================
10743 dnl Check for system glm
10744 dnl ===================================================================
10745 AC_MSG_CHECKING([which glm to use])
10746 if test "$with_system_glm" = "yes"; then
10747 AC_MSG_RESULT([external])
10749 AC_LANG_PUSH([C++])
10750 AC_CHECK_HEADER([glm/glm.hpp], [],
10751 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10754 AC_MSG_RESULT([internal])
10755 BUILD_TYPE="$BUILD_TYPE GLM"
10757 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10759 AC_SUBST([GLM_CFLAGS])
10760 AC_SUBST([SYSTEM_GLM])
10762 dnl ===================================================================
10763 dnl Check for system odbc
10764 dnl ===================================================================
10765 AC_MSG_CHECKING([which odbc headers to use])
10766 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
10767 AC_MSG_RESULT([external])
10768 SYSTEM_ODBC_HEADERS=TRUE
10770 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10771 save_CPPFLAGS=$CPPFLAGS
10773 PathFormat "$winsdktest"
10774 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"
10775 AC_CHECK_HEADER(sqlext.h, [],
10776 [AC_MSG_ERROR(odbc not found. install odbc)],
10777 [#include <windows.h>])
10778 CPPFLAGS=$save_CPPFLAGS
10780 AC_CHECK_HEADER(sqlext.h, [],
10781 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10783 elif test "$enable_database_connectivity" = no; then
10784 AC_MSG_RESULT([none])
10786 AC_MSG_RESULT([internal])
10787 SYSTEM_ODBC_HEADERS=
10788 BUILD_TYPE="$BUILD_TYPE IODBC"
10790 AC_SUBST(SYSTEM_ODBC_HEADERS)
10792 dnl ===================================================================
10793 dnl Check for system NSS
10794 dnl ===================================================================
10795 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10796 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10797 AC_DEFINE(HAVE_FEATURE_NSS)
10799 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10802 AC_SUBST(ENABLE_NSS)
10804 dnl ===================================================================
10805 dnl Enable LDAP support
10806 dnl ===================================================================
10808 if test "$test_openldap" = yes; then
10809 AC_MSG_CHECKING([whether to enable LDAP support])
10810 if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10811 AC_MSG_RESULT([yes])
10814 if test "$enable_ldap" != "yes"; then
10815 AC_MSG_RESULT([no])
10817 AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10821 dnl ===================================================================
10822 dnl Check for system openldap
10823 dnl ===================================================================
10825 if test "$ENABLE_LDAP" = TRUE; then
10826 AC_MSG_CHECKING([which openldap library to use])
10827 if test "$with_system_openldap" = yes; then
10828 AC_MSG_RESULT([external])
10829 SYSTEM_OPENLDAP=TRUE
10830 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10831 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10832 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10834 AC_MSG_RESULT([internal])
10835 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10840 AC_SUBST(ENABLE_LDAP)
10841 AC_SUBST(SYSTEM_OPENLDAP)
10843 dnl ===================================================================
10844 dnl Check for TLS/SSL and cryptographic implementation to use
10845 dnl ===================================================================
10846 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10847 if test -n "$with_tls"; then
10850 AC_DEFINE(USE_TLS_OPENSSL)
10852 AC_MSG_RESULT([$TLS])
10854 if test "$enable_openssl" != "yes"; then
10855 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10858 # warn that OpenSSL has been selected but not all TLS code has this option
10859 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10860 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10863 AC_DEFINE(USE_TLS_NSS)
10865 AC_MSG_RESULT([$TLS])
10868 AC_MSG_RESULT([none])
10869 AC_MSG_WARN([Skipping TLS/SSL])
10873 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10875 nss - Mozilla's Network Security Services (NSS)
10880 # default to using NSS, it results in smaller oox lib
10881 AC_DEFINE(USE_TLS_NSS)
10883 AC_MSG_RESULT([$TLS])
10887 dnl ===================================================================
10888 dnl Check for system sane
10889 dnl ===================================================================
10890 AC_MSG_CHECKING([which sane header to use])
10891 if test "$with_system_sane" = "yes"; then
10892 AC_MSG_RESULT([external])
10893 AC_CHECK_HEADER(sane/sane.h, [],
10894 [AC_MSG_ERROR(sane not found. install sane)], [])
10896 AC_MSG_RESULT([internal])
10897 BUILD_TYPE="$BUILD_TYPE SANE"
10900 dnl ===================================================================
10901 dnl Check for system icu
10902 dnl ===================================================================
10905 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10906 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10907 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10908 if test "$SYSTEM_ICU" = TRUE; then
10909 AC_LANG_PUSH([C++])
10910 AC_MSG_CHECKING([for unicode/rbbi.h])
10911 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10914 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10915 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10916 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10918 if test "$CROSS_COMPILING" != TRUE; then
10919 # using the system icu tools can lead to version confusion, use the
10920 # ones from the build environment when cross-compiling
10921 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10922 if test -z "$SYSTEM_GENBRK"; then
10923 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10925 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10926 if test -z "$SYSTEM_GENCCODE"; then
10927 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10929 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10930 if test -z "$SYSTEM_GENCMN"; then
10931 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10936 AC_SUBST(SYSTEM_GENBRK)
10937 AC_SUBST(SYSTEM_GENCCODE)
10938 AC_SUBST(SYSTEM_GENCMN)
10939 AC_SUBST(ICU_MAJOR)
10940 AC_SUBST(ICU_MINOR)
10942 dnl ==================================================================
10944 dnl ==================================================================
10945 if test "$enable_curl" == "yes"; then
10946 AC_DEFINE([HAVE_FEATURE_CURL])
10949 dnl ==================================================================
10951 dnl ==================================================================
10952 DEFAULT_CRASHDUMP_VALUE="true"
10953 AC_MSG_CHECKING([whether to enable breakpad])
10954 if test "$enable_breakpad" != yes; then
10955 AC_MSG_RESULT([no])
10957 if test "$enable_curl" != "yes"; then
10958 AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10960 AC_MSG_RESULT([yes])
10961 ENABLE_BREAKPAD="TRUE"
10962 AC_DEFINE(ENABLE_BREAKPAD)
10963 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10964 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10966 AC_MSG_CHECKING([for disable crash dump])
10967 if test "$enable_crashdump" = no; then
10968 DEFAULT_CRASHDUMP_VALUE="false"
10969 AC_MSG_RESULT([yes])
10971 AC_MSG_RESULT([no])
10974 AC_MSG_CHECKING([for crashreport config])
10975 if test "$with_symbol_config" = "no"; then
10976 BREAKPAD_SYMBOL_CONFIG="invalid"
10977 AC_MSG_RESULT([no])
10979 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10980 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10981 AC_MSG_RESULT([yes])
10983 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10985 AC_SUBST(ENABLE_BREAKPAD)
10986 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10988 dnl ==================================================================
10990 dnl ==================================================================
10991 if test "$enable_libcmis" == "yes"; then
10992 if test "$enable_curl" != "yes"; then
10993 AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10997 dnl ===================================================================
10999 dnl ===================================================================
11000 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
11001 if test "$with_system_orcus" != "yes"; then
11002 if test "$SYSTEM_BOOST" = "TRUE"; then
11003 dnl Link with Boost.System
11004 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
11005 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
11006 dnl in documentation has no effect.
11010 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
11011 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
11012 AC_SUBST([BOOST_SYSTEM_LIB])
11013 AC_SUBST(SYSTEM_LIBORCUS)
11015 dnl ===================================================================
11017 dnl ===================================================================
11018 harfbuzz_required_version=5.1.0
11020 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
11021 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
11024 GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
11025 HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
11028 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
11029 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
11032 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
11033 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
11035 if test "$COM" = "MSC"; then # override the above
11036 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
11037 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
11040 if test "$with_system_harfbuzz" = "yes"; then
11041 if test "$with_system_graphite" = "no"; then
11042 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
11044 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
11046 save_CFLAGS="$CFLAGS"
11047 LIBS="$LIBS $HARFBUZZ_LIBS"
11048 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
11049 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
11051 CFLAGS="$save_CFLAGS"
11053 if test "$with_system_graphite" = "yes"; then
11054 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
11058 if test "$USING_X11" = TRUE; then
11061 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11063 if test -z "$x_includes"; then
11064 x_includes="default_x_includes"
11066 if test -z "$x_libraries"; then
11067 x_libraries="default_x_libraries"
11069 CFLAGS="$CFLAGS $X_CFLAGS"
11070 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11071 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11073 x_includes="no_x_includes"
11074 x_libraries="no_x_libraries"
11077 if test "$USING_X11" = TRUE; then
11078 dnl ===================================================================
11079 dnl Check for extension headers
11080 dnl ===================================================================
11081 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11082 [#include <X11/extensions/shape.h>])
11084 # vcl needs ICE and SM
11085 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11086 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11087 [AC_MSG_ERROR(ICE library not found)])
11088 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11089 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11090 [AC_MSG_ERROR(SM library not found)])
11093 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11094 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11095 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11098 dnl ===================================================================
11099 dnl Check for system Xrender
11100 dnl ===================================================================
11101 AC_MSG_CHECKING([whether to use Xrender])
11102 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11103 AC_MSG_RESULT([yes])
11104 PKG_CHECK_MODULES(XRENDER, xrender)
11105 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11106 FilterLibs "${XRENDER_LIBS}"
11107 XRENDER_LIBS="${filteredlibs}"
11108 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11109 [AC_MSG_ERROR(libXrender not found or functional)], [])
11110 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11111 [AC_MSG_ERROR(Xrender not found. install X)], [])
11113 AC_MSG_RESULT([no])
11115 AC_SUBST(XRENDER_CFLAGS)
11116 AC_SUBST(XRENDER_LIBS)
11118 dnl ===================================================================
11119 dnl Check for XRandr
11120 dnl ===================================================================
11121 AC_MSG_CHECKING([whether to enable RandR support])
11122 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11123 AC_MSG_RESULT([yes])
11124 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11125 if test "$ENABLE_RANDR" != "TRUE"; then
11126 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11127 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11129 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11130 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11131 XRANDR_LIBS="-lXrandr "
11132 ENABLE_RANDR="TRUE"
11134 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11135 FilterLibs "${XRANDR_LIBS}"
11136 XRANDR_LIBS="${filteredlibs}"
11139 AC_MSG_RESULT([no])
11141 AC_SUBST(XRANDR_CFLAGS)
11142 AC_SUBST(XRANDR_LIBS)
11143 AC_SUBST(ENABLE_RANDR)
11145 if test -z "$with_webdav"; then
11146 with_webdav=$test_webdav
11149 AC_MSG_CHECKING([for WebDAV support])
11150 case "$with_webdav" in
11152 AC_MSG_RESULT([no])
11156 AC_MSG_RESULT([yes])
11157 # curl is already mandatory (almost) and checked elsewhere
11158 if test "$enable_curl" = "no"; then
11159 AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11164 AC_SUBST(WITH_WEBDAV)
11166 dnl ===================================================================
11167 dnl Check for disabling cve_tests
11168 dnl ===================================================================
11169 AC_MSG_CHECKING([whether to execute CVE tests])
11170 if test "$enable_cve_tests" = "no"; then
11171 AC_MSG_RESULT([no])
11172 DISABLE_CVE_TESTS=TRUE
11173 AC_SUBST(DISABLE_CVE_TESTS)
11175 AC_MSG_RESULT([yes])
11178 dnl ===================================================================
11179 dnl Check for system openssl
11180 dnl ===================================================================
11182 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11183 if test "$enable_openssl" = "yes"; then
11184 AC_MSG_RESULT([no])
11185 ENABLE_OPENSSL=TRUE
11186 if test "$_os" = Darwin ; then
11187 # OpenSSL is deprecated when building for 10.7 or later.
11189 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11190 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11192 with_system_openssl=no
11193 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11194 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11195 && test "$with_system_openssl" != "no"; then
11196 with_system_openssl=yes
11197 SYSTEM_OPENSSL=TRUE
11199 OPENSSL_LIBS="-lssl -lcrypto"
11201 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11202 if test -n "${SYSTEM_OPENSSL}"; then
11203 AC_DEFINE([SYSTEM_OPENSSL])
11206 if test "$with_system_openssl" = "yes"; then
11207 AC_MSG_CHECKING([whether openssl supports SHA512])
11209 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11210 SHA512_CTX context;
11211 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11215 AC_MSG_RESULT([yes])
11217 # warn that although OpenSSL is disabled, system libraries may depend on it
11218 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11219 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11222 AC_SUBST([ENABLE_OPENSSL])
11224 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11225 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11226 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11227 enable_cipher_openssl_backend=no
11229 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11232 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11233 ENABLE_CIPHER_OPENSSL_BACKEND=
11234 if test "$enable_cipher_openssl_backend" = yes; then
11235 AC_MSG_RESULT([yes])
11236 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11238 AC_MSG_RESULT([no])
11240 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11242 dnl ===================================================================
11243 dnl Select the crypto backends used by LO
11244 dnl ===================================================================
11246 if test "$build_crypto" = yes; then
11247 if test "$OS" = WNT; then
11248 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11249 AC_DEFINE([USE_CRYPTO_MSCAPI])
11250 elif test "$ENABLE_NSS" = TRUE; then
11251 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11252 AC_DEFINE([USE_CRYPTO_NSS])
11256 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11257 if test "$COM" = "MSC"; then
11258 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11260 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11262 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11264 dnl ===================================================================
11265 dnl Check for system redland
11266 dnl ===================================================================
11267 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11268 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11269 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11270 if test "$with_system_redland" = "yes"; then
11271 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11272 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11278 AC_SUBST(RAPTOR_MAJOR)
11279 AC_SUBST(RASQAL_MAJOR)
11280 AC_SUBST(REDLAND_MAJOR)
11282 dnl ===================================================================
11283 dnl Check for system hunspell
11284 dnl ===================================================================
11285 AC_MSG_CHECKING([which libhunspell to use])
11286 if test "$with_system_hunspell" = "yes"; then
11287 AC_MSG_RESULT([external])
11288 SYSTEM_HUNSPELL=TRUE
11289 AC_LANG_PUSH([C++])
11290 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11291 if test "$HUNSPELL_PC" != "TRUE"; then
11292 AC_CHECK_HEADER(hunspell.hxx, [],
11294 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11295 [AC_MSG_ERROR(hunspell headers not found.)], [])
11297 AC_CHECK_LIB([hunspell], [main], [:],
11298 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11299 HUNSPELL_LIBS=-lhunspell
11302 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11303 FilterLibs "${HUNSPELL_LIBS}"
11304 HUNSPELL_LIBS="${filteredlibs}"
11306 AC_MSG_RESULT([internal])
11308 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11309 if test "$COM" = "MSC"; then
11310 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11312 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11314 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11316 AC_SUBST(SYSTEM_HUNSPELL)
11317 AC_SUBST(HUNSPELL_CFLAGS)
11318 AC_SUBST(HUNSPELL_LIBS)
11320 dnl ===================================================================
11321 dnl Check for system zxcvbn
11322 dnl ===================================================================
11323 AC_MSG_CHECKING([which zxcvbn to use])
11324 if test "$with_system_zxcvbn" = "yes"; then
11325 AC_MSG_RESULT([external])
11327 AC_CHECK_HEADER(zxcvbn.h, [],
11328 [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11329 AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11330 [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11332 AC_MSG_RESULT([internal])
11333 BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11336 AC_SUBST(SYSTEM_ZXCVBN)
11338 dnl ===================================================================
11339 dnl Check for system zxing
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([whether to use zxing])
11342 if test "$enable_zxing" = "no"; then
11343 AC_MSG_RESULT([no])
11347 AC_MSG_RESULT([yes])
11349 AC_MSG_CHECKING([which libzxing to use])
11350 if test "$with_system_zxing" = "yes"; then
11351 AC_MSG_RESULT([external])
11354 AC_LANG_PUSH([C++])
11355 save_CXXFLAGS=$CXXFLAGS
11358 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11359 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11360 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11361 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11362 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11363 dnl unsetting IFS."):
11365 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11366 dnl ignore them here:
11367 if test -z "$i"; then
11370 dnl TODO: White space in $i would cause problems:
11371 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11372 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11373 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11375 CXXFLAGS=$save_CXXFLAGS
11376 if test -z "$ZXING_CFLAGS"; then
11377 AC_MSG_ERROR(zxing headers not found.)
11379 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11380 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11381 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11383 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11384 FilterLibs "${ZXING_LIBS}"
11385 ZXING_LIBS="${filteredlibs}"
11387 AC_MSG_RESULT([internal])
11389 BUILD_TYPE="$BUILD_TYPE ZXING"
11390 ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11392 if test "$ENABLE_ZXING" = TRUE; then
11393 AC_DEFINE(ENABLE_ZXING)
11395 AC_MSG_CHECKING([whether zxing::tosvg function is available])
11396 AC_LANG_PUSH([C++])
11397 save_CXXFLAGS=$CXXFLAGS
11398 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11399 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11400 #include <BitMatrix.h>
11401 #include <BitMatrixIO.h>
11403 ZXing::BitMatrix matrix(1, 1);
11404 matrix.set(0, 0, true);
11405 ZXing::ToSVG(matrix);
11409 AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11410 AC_MSG_RESULT([yes])
11411 ], [AC_MSG_RESULT([no])])
11412 CXXFLAGS=$save_CXXFLAGS
11414 AC_SUBST(HAVE_ZXING_TOSVG)
11416 AC_SUBST(SYSTEM_ZXING)
11417 AC_SUBST(ENABLE_ZXING)
11418 AC_SUBST(ZXING_CFLAGS)
11419 AC_SUBST(ZXING_LIBS)
11421 dnl ===================================================================
11422 dnl Check for system box2d
11423 dnl ===================================================================
11424 AC_MSG_CHECKING([which box2d to use])
11425 if test "$with_system_box2d" = "yes"; then
11426 AC_MSG_RESULT([external])
11428 AC_LANG_PUSH([C++])
11429 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11430 [BOX2D_H_FOUND='FALSE'])
11431 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11433 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11435 # fail this. there's no other alternative to check when we are here.
11436 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11437 [AC_MSG_ERROR(box2d headers not found.)])
11439 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11441 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11442 [ AC_MSG_ERROR(box2d library not found.) ], [])
11443 BOX2D_LIBS=-l$_BOX2D_LIB
11445 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11446 FilterLibs "${BOX2D_LIBS}"
11447 BOX2D_LIBS="${filteredlibs}"
11449 AC_MSG_RESULT([internal])
11451 BUILD_TYPE="$BUILD_TYPE BOX2D"
11453 AC_SUBST(SYSTEM_BOX2D)
11454 AC_SUBST(BOX2D_CFLAGS)
11455 AC_SUBST(BOX2D_LIBS)
11457 dnl ===================================================================
11458 dnl Checking for altlinuxhyph
11459 dnl ===================================================================
11460 AC_MSG_CHECKING([which altlinuxhyph to use])
11461 if test "$with_system_altlinuxhyph" = "yes"; then
11462 AC_MSG_RESULT([external])
11464 AC_CHECK_HEADER(hyphen.h, [],
11465 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11466 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11467 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11468 [#include <hyphen.h>])
11469 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11470 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11471 if test -z "$HYPHEN_LIB"; then
11472 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11473 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11475 if test -z "$HYPHEN_LIB"; then
11476 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11477 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11480 AC_MSG_RESULT([internal])
11482 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11483 if test "$COM" = "MSC"; then
11484 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11486 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11489 AC_SUBST(SYSTEM_HYPH)
11490 AC_SUBST(HYPHEN_LIB)
11492 dnl ===================================================================
11493 dnl Checking for mythes
11494 dnl ===================================================================
11495 AC_MSG_CHECKING([which mythes to use])
11496 if test "$with_system_mythes" = "yes"; then
11497 AC_MSG_RESULT([external])
11499 AC_LANG_PUSH([C++])
11500 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11501 if test "$MYTHES_PKGCONFIG" = "no"; then
11502 AC_CHECK_HEADER(mythes.hxx, [],
11503 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11504 AC_CHECK_LIB([mythes-1.2], [main], [:],
11505 [ MYTHES_FOUND=no], [])
11506 if test "$MYTHES_FOUND" = "no"; then
11507 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11508 [ MYTHES_FOUND=no], [])
11510 if test "$MYTHES_FOUND" = "no"; then
11511 AC_MSG_ERROR([mythes library not found!.])
11515 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11516 FilterLibs "${MYTHES_LIBS}"
11517 MYTHES_LIBS="${filteredlibs}"
11519 AC_MSG_RESULT([internal])
11521 BUILD_TYPE="$BUILD_TYPE MYTHES"
11522 if test "$COM" = "MSC"; then
11523 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11525 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11528 AC_SUBST(SYSTEM_MYTHES)
11529 AC_SUBST(MYTHES_CFLAGS)
11530 AC_SUBST(MYTHES_LIBS)
11532 dnl ===================================================================
11533 dnl How should we build the linear programming solver ?
11534 dnl ===================================================================
11537 AC_MSG_CHECKING([whether to build with CoinMP])
11538 if test "$enable_coinmp" != "no"; then
11540 AC_MSG_RESULT([yes])
11541 if test "$with_system_coinmp" = "yes"; then
11543 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11544 FilterLibs "${COINMP_LIBS}"
11545 COINMP_LIBS="${filteredlibs}"
11547 BUILD_TYPE="$BUILD_TYPE COINMP"
11550 AC_MSG_RESULT([no])
11552 AC_SUBST(ENABLE_COINMP)
11553 AC_SUBST(SYSTEM_COINMP)
11554 AC_SUBST(COINMP_CFLAGS)
11555 AC_SUBST(COINMP_LIBS)
11558 AC_MSG_CHECKING([whether to build with lpsolve])
11559 if test "$enable_lpsolve" != "no"; then
11560 ENABLE_LPSOLVE=TRUE
11561 AC_MSG_RESULT([yes])
11563 AC_MSG_RESULT([no])
11565 AC_SUBST(ENABLE_LPSOLVE)
11567 if test "$ENABLE_LPSOLVE" = TRUE; then
11568 AC_MSG_CHECKING([which lpsolve to use])
11569 if test "$with_system_lpsolve" = "yes"; then
11570 AC_MSG_RESULT([external])
11571 SYSTEM_LPSOLVE=TRUE
11572 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11573 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11575 # some systems need this. Like Ubuntu...
11576 AC_CHECK_LIB(m, floor)
11577 AC_CHECK_LIB(dl, dlopen)
11578 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11579 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11582 AC_MSG_RESULT([internal])
11584 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11587 AC_SUBST(SYSTEM_LPSOLVE)
11589 dnl ===================================================================
11590 dnl Checking for libexttextcat
11591 dnl ===================================================================
11592 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11593 if test "$with_system_libexttextcat" = "yes"; then
11594 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11596 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11598 dnl ===================================================================
11599 dnl Checking for libnumbertext
11600 dnl ===================================================================
11601 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11602 if test "$with_system_libnumbertext" = "yes"; then
11603 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11604 SYSTEM_LIBNUMBERTEXT=YES
11606 SYSTEM_LIBNUMBERTEXT=
11608 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11609 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11611 dnl ***************************************
11612 dnl testing libc version for Linux...
11613 dnl ***************************************
11614 if test "$_os" = "Linux"; then
11615 AC_MSG_CHECKING([whether the libc is recent enough])
11616 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11617 #include <features.h>
11618 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11619 #error glibc >= 2.1 is required
11621 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11624 dnl =========================================
11625 dnl Check for uuidgen
11626 dnl =========================================
11627 if test "$_os" = "WINNT"; then
11628 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11629 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11630 UUIDGEN=uuidgen.exe
11633 AC_PATH_PROG([UUIDGEN], [uuidgen])
11634 if test -z "$UUIDGEN"; then
11635 AC_MSG_WARN([uuid is needed for building installation sets])
11639 dnl ***************************************
11640 dnl Checking for bison and flex
11641 dnl ***************************************
11642 AC_PATH_PROG(BISON, bison)
11643 if test -z "$BISON"; then
11644 AC_MSG_ERROR([no bison found in \$PATH, install it])
11646 AC_MSG_CHECKING([the bison version])
11647 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11648 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11649 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11652 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]
11653 dnl typedef union YYSTYPE
11656 dnl while at least 3.4.1 is know to be good:
11657 if test "$COMPILER_PLUGINS" = TRUE; then
11658 if test "$_bison_longver" -lt 2004; then
11659 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11662 if test "$_bison_longver" -lt 2000; then
11663 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11669 AC_PATH_PROG(FLEX, flex)
11670 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11671 FLEX=`cygpath -m $FLEX`
11673 if test -z "$FLEX"; then
11674 AC_MSG_ERROR([no flex found in \$PATH, install it])
11676 AC_MSG_CHECKING([the flex version])
11677 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11678 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11679 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11684 AC_PATH_PROG(DIFF, diff)
11685 if test -z "$DIFF"; then
11686 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11690 AC_PATH_PROG(UNIQ, uniq)
11691 if test -z "$UNIQ"; then
11692 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11696 dnl ***************************************
11697 dnl Checking for patch
11698 dnl ***************************************
11699 AC_PATH_PROG(PATCH, patch)
11700 if test -z "$PATCH"; then
11701 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11704 dnl On Solaris or macOS, check if --with-gnu-patch was used
11705 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11706 if test -z "$with_gnu_patch"; then
11709 if test -x "$with_gnu_patch"; then
11710 GNUPATCH=$with_gnu_patch
11712 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11716 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11717 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11718 AC_MSG_RESULT([yes])
11720 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11721 AC_MSG_RESULT([no, but accepted (Apple patch)])
11722 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11724 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11731 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11732 GNUPATCH=`cygpath -m $GNUPATCH`
11735 dnl We also need to check for --with-gnu-cp
11737 if test -z "$with_gnu_cp"; then
11738 # check the place where the good stuff is hidden on Solaris...
11739 if test -x /usr/gnu/bin/cp; then
11740 GNUCP=/usr/gnu/bin/cp
11742 AC_PATH_PROGS(GNUCP, gnucp cp)
11744 if test -z $GNUCP; then
11745 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11748 if test -x "$with_gnu_cp"; then
11751 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11755 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11756 GNUCP=`cygpath -m $GNUCP`
11759 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11760 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11761 AC_MSG_RESULT([yes])
11762 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11763 AC_MSG_RESULT([yes])
11765 case "$build_os" in
11766 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11769 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11772 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11781 dnl ***************************************
11782 dnl testing assembler path
11783 dnl ***************************************
11785 if test "$_os" = "WINNT"; then
11786 case "$WIN_HOST_ARCH" in
11787 x86) assembler=ml.exe ;;
11788 x64) assembler=ml64.exe ;;
11789 arm64) assembler=armasm64.exe ;;
11792 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11793 if test -f "$MSVC_HOST_PATH/$assembler"; then
11794 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11795 AC_MSG_RESULT([$ML_EXE])
11797 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11803 dnl ===================================================================
11804 dnl We need zip and unzip
11805 dnl ===================================================================
11806 AC_PATH_PROG(ZIP, zip)
11807 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11808 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11809 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],,)
11812 AC_PATH_PROG(UNZIP, unzip)
11813 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11815 dnl ===================================================================
11816 dnl Zip must be a specific type for different build types.
11817 dnl ===================================================================
11818 if test $build_os = cygwin; then
11819 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11820 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11824 dnl ===================================================================
11825 dnl We need touch with -h option support.
11826 dnl ===================================================================
11827 AC_PATH_PROG(TOUCH, touch)
11828 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11829 touch "$WARNINGS_FILE"
11830 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11831 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],,)
11834 dnl ===================================================================
11835 dnl Check for system epoxy
11836 dnl ===================================================================
11837 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11838 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11840 dnl ===================================================================
11841 dnl Show which vclplugs will be built.
11842 dnl ===================================================================
11845 libo_ENABLE_VCLPLUG([gen])
11846 libo_ENABLE_VCLPLUG([gtk3])
11847 libo_ENABLE_VCLPLUG([gtk3_kde5])
11848 libo_ENABLE_VCLPLUG([gtk4])
11849 libo_ENABLE_VCLPLUG([kf5])
11850 libo_ENABLE_VCLPLUG([kf6])
11851 libo_ENABLE_VCLPLUG([qt5])
11852 libo_ENABLE_VCLPLUG([qt6])
11854 if test "$_os" = "WINNT"; then
11856 elif test "$_os" = "Darwin"; then
11858 elif test "$_os" = "iOS"; then
11860 elif test "$_os" = Android; then
11864 build_vcl_plugins="$R"
11865 if test -z "$build_vcl_plugins"; then
11866 build_vcl_plugins=" none"
11868 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11870 AC_SUBST([VCL_PLUGIN_INFO])
11872 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11873 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11876 dnl ===================================================================
11877 dnl Check for GTK libraries
11878 dnl ===================================================================
11882 ENABLE_GTKTILEDVIEWER=""
11883 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11884 if test "$with_system_cairo" = no; then
11885 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.'
11887 : ${with_system_cairo:=yes}
11888 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)
11889 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11890 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11891 FilterLibs "${GTK3_LIBS}"
11892 GTK3_LIBS="${filteredlibs}"
11894 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11895 if test "$with_system_epoxy" != "yes"; then
11896 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11897 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11898 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11900 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11901 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11902 if test "$build_os" = "cygwin"; then
11903 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11904 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11907 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11908 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11909 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11910 FilterLibs "${GTK3_LIBS}"
11911 GTK3_LIBS="${filteredlibs}"
11912 ENABLE_GTKTILEDVIEWER="yes"
11914 AC_SUBST(GTK3_LIBS)
11915 AC_SUBST(GTK3_CFLAGS)
11916 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11920 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11921 if test "$with_system_cairo" = no; then
11922 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11924 : ${with_system_cairo:=yes}
11925 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11926 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11927 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11928 FilterLibs "${GTK4_LIBS}"
11929 GTK4_LIBS="${filteredlibs}"
11931 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11932 if test "$with_system_epoxy" != "yes"; then
11933 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11934 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11935 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11938 AC_SUBST(GTK4_LIBS)
11939 AC_SUBST(GTK4_CFLAGS)
11941 if test "$enable_introspection" = yes; then
11942 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11943 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11945 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11949 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11950 if ! test "$ENABLE_GTK3" = TRUE; then
11951 if test "$enable_atspi_tests" = yes; then
11952 AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11954 enable_atspi_tests=no
11956 if ! test "$enable_atspi_tests" = no; then
11957 AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11958 if ! test "$XVFB_RUN" = no; then
11959 dnl make sure the found xvfb-run actually works
11960 AC_MSG_CHECKING([whether $XVFB_RUN works...])
11961 if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11962 AC_MSG_RESULT([yes])
11964 AC_MSG_RESULT([no])
11968 if test "$XVFB_RUN" = no; then
11969 if test "$enable_atspi_tests" = yes; then
11970 AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11972 enable_atspi_tests=no
11975 if ! test "$enable_atspi_tests" = no; then
11976 AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11977 if test "$DBUS_LAUNCH" = no; then
11978 if test "$enable_atspi_tests" = yes; then
11979 AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11981 enable_atspi_tests=no
11984 if ! test "$enable_atspi_tests" = no; then
11985 PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11986 [if test "$enable_atspi_tests" = yes; then
11987 AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11989 enable_atspi_tests=no
11992 if ! test "x$enable_atspi_tests" = xno; then
11993 PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11994 [have_atspi_scroll_to=1],
11995 [have_atspi_scroll_to=0])
11996 AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11997 [Whether AT-SPI2 has the scrollTo API])
11999 ENABLE_ATSPI_TESTS=
12000 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
12001 AC_SUBST([ENABLE_ATSPI_TESTS])
12003 dnl ===================================================================
12004 dnl check for dbus support
12005 dnl ===================================================================
12009 DBUS_GLIB_CFLAGS=""
12013 if test "$enable_dbus" = "no"; then
12017 AC_MSG_CHECKING([whether to enable DBUS support])
12018 if test "$test_dbus" = "yes"; then
12020 AC_MSG_RESULT([yes])
12021 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
12022 AC_DEFINE(ENABLE_DBUS)
12023 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12024 FilterLibs "${DBUS_LIBS}"
12025 DBUS_LIBS="${filteredlibs}"
12027 # Glib is needed for BluetoothServer
12028 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
12029 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
12031 DBUS_HAVE_GLIB="TRUE"
12032 AC_DEFINE(DBUS_HAVE_GLIB,1)
12034 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
12037 AC_MSG_RESULT([no])
12040 AC_SUBST(ENABLE_DBUS)
12041 AC_SUBST(DBUS_CFLAGS)
12042 AC_SUBST(DBUS_LIBS)
12043 AC_SUBST(DBUS_GLIB_CFLAGS)
12044 AC_SUBST(DBUS_GLIB_LIBS)
12045 AC_SUBST(DBUS_HAVE_GLIB)
12047 AC_MSG_CHECKING([whether to enable Impress remote control])
12048 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12049 AC_MSG_RESULT([yes])
12050 ENABLE_SDREMOTE=TRUE
12051 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
12053 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12055 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12056 # The Bluetooth code doesn't compile with macOS SDK 10.15
12057 if test "$enable_sdremote_bluetooth" = yes; then
12058 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12060 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12061 enable_sdremote_bluetooth=no
12063 # If not explicitly enabled or disabled, default
12064 if test -z "$enable_sdremote_bluetooth"; then
12067 # Default to yes for these
12068 enable_sdremote_bluetooth=yes
12072 enable_sdremote_bluetooth=no
12076 # $enable_sdremote_bluetooth is guaranteed non-empty now
12078 if test "$enable_sdremote_bluetooth" != "no"; then
12079 if test "$OS" = "LINUX"; then
12080 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12081 AC_MSG_RESULT([yes])
12082 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12083 dnl ===================================================================
12084 dnl Check for system bluez
12085 dnl ===================================================================
12086 AC_MSG_CHECKING([which Bluetooth header to use])
12087 if test "$with_system_bluez" = "yes"; then
12088 AC_MSG_RESULT([external])
12089 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12090 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12093 AC_MSG_RESULT([internal])
12097 AC_MSG_RESULT([no, dbus disabled])
12098 ENABLE_SDREMOTE_BLUETOOTH=
12102 AC_MSG_RESULT([yes])
12103 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12105 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12106 <key>com.apple.security.device.bluetooth</key>
12110 AC_MSG_RESULT([no])
12111 ENABLE_SDREMOTE_BLUETOOTH=
12117 AC_MSG_RESULT([no])
12119 AC_SUBST(ENABLE_SDREMOTE)
12120 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12121 AC_SUBST(SDREMOTE_ENTITLEMENT)
12122 AC_SUBST(SYSTEM_BLUEZ)
12124 dnl ===================================================================
12125 dnl Check whether to enable GIO support
12126 dnl ===================================================================
12127 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12128 AC_MSG_CHECKING([whether to enable GIO support])
12129 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12130 dnl Need at least 2.26 for the dbus support.
12131 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12132 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12133 if test "$ENABLE_GIO" = "TRUE"; then
12134 AC_DEFINE(ENABLE_GIO)
12135 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12136 FilterLibs "${GIO_LIBS}"
12137 GIO_LIBS="${filteredlibs}"
12140 AC_MSG_RESULT([no])
12143 AC_SUBST(ENABLE_GIO)
12144 AC_SUBST(GIO_CFLAGS)
12148 dnl ===================================================================
12150 SPLIT_APP_MODULES=""
12151 if test "$enable_split_app_modules" = "yes"; then
12152 SPLIT_APP_MODULES="TRUE"
12154 AC_SUBST(SPLIT_APP_MODULES)
12156 SPLIT_OPT_FEATURES=""
12157 if test "$enable_split_opt_features" = "yes"; then
12158 SPLIT_OPT_FEATURES="TRUE"
12160 AC_SUBST(SPLIT_OPT_FEATURES)
12162 dnl ===================================================================
12163 dnl Check whether the GStreamer libraries are available.
12164 dnl ===================================================================
12166 ENABLE_GSTREAMER_1_0=""
12168 if test "$test_gstreamer_1_0" = yes; then
12170 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12171 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12172 ENABLE_GSTREAMER_1_0="TRUE"
12173 AC_MSG_RESULT([yes])
12174 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12175 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12176 FilterLibs "${GSTREAMER_1_0_LIBS}"
12177 GSTREAMER_1_0_LIBS="${filteredlibs}"
12178 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12180 AC_MSG_RESULT([no])
12183 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12184 AC_SUBST(GSTREAMER_1_0_LIBS)
12185 AC_SUBST(ENABLE_GSTREAMER_1_0)
12187 ENABLE_OPENGL_TRANSITIONS=
12188 ENABLE_OPENGL_CANVAS=
12189 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12191 elif test "$_os" = "Darwin"; then
12192 # We use frameworks on macOS, no need for detail checks
12193 ENABLE_OPENGL_TRANSITIONS=TRUE
12194 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12195 ENABLE_OPENGL_CANVAS=TRUE
12196 elif test $_os = WINNT; then
12197 ENABLE_OPENGL_TRANSITIONS=TRUE
12198 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12199 ENABLE_OPENGL_CANVAS=TRUE
12201 if test "$USING_X11" = TRUE; then
12202 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12203 ENABLE_OPENGL_TRANSITIONS=TRUE
12204 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12205 ENABLE_OPENGL_CANVAS=TRUE
12209 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12210 AC_SUBST(ENABLE_OPENGL_CANVAS)
12212 dnl =================================================
12213 dnl Check whether to build with OpenCL support.
12214 dnl =================================================
12216 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12217 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12218 # platform (optional at run-time, used through clew).
12219 BUILD_TYPE="$BUILD_TYPE OPENCL"
12220 AC_DEFINE(HAVE_FEATURE_OPENCL)
12223 dnl =================================================
12224 dnl Check whether to build with dconf support.
12225 dnl =================================================
12227 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12228 PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12229 if test "$enable_dconf" = yes; then
12230 AC_MSG_ERROR([dconf not found])
12235 AC_MSG_CHECKING([whether to enable dconf])
12236 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12240 AC_MSG_RESULT([no])
12243 AC_DEFINE(ENABLE_DCONF)
12244 AC_MSG_RESULT([yes])
12246 AC_SUBST([DCONF_CFLAGS])
12247 AC_SUBST([DCONF_LIBS])
12248 AC_SUBST([ENABLE_DCONF])
12251 AC_MSG_CHECKING([whether to build the PDF import feature])
12253 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12254 AC_MSG_RESULT([yes])
12255 ENABLE_PDFIMPORT=TRUE
12256 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12258 AC_MSG_RESULT([no])
12262 AC_MSG_CHECKING([whether to build PDFium])
12264 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12265 AC_MSG_RESULT([yes])
12267 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12269 AC_MSG_RESULT([no])
12271 AC_SUBST(ENABLE_PDFIUM)
12273 if test "$ENABLE_PDFIUM" = "TRUE"; then
12274 AC_MSG_CHECKING([which OpenJPEG library to use])
12275 if test "$with_system_openjpeg" = "yes"; then
12276 SYSTEM_OPENJPEG2=TRUE
12277 AC_MSG_RESULT([external])
12278 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12279 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12280 FilterLibs "${OPENJPEG2_LIBS}"
12281 OPENJPEG2_LIBS="${filteredlibs}"
12283 SYSTEM_OPENJPEG2=FALSE
12284 AC_MSG_RESULT([internal])
12287 AC_MSG_CHECKING([which Abseil library to use])
12288 if test "$with_system_abseil" = "yes"; then
12289 AC_MSG_RESULT([external])
12291 AC_LANG_PUSH([C++])
12292 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12293 [AC_MSG_ERROR(abseil headers not found.)], [])
12294 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12295 [AC_MSG_ERROR(abseil headers not found.)], [])
12296 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12297 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12298 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12299 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12300 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12302 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12303 FilterLibs "${ABSEIL_LIBS}"
12304 ABSEIL_LIBS="${filteredlibs}"
12306 AC_MSG_RESULT([internal])
12309 AC_SUBST(SYSTEM_OPENJPEG2)
12310 AC_SUBST(SYSTEM_ABSEIL)
12311 AC_SUBST(ABSEIL_CFLAGS)
12312 AC_SUBST(ABSEIL_LIBS)
12314 dnl ===================================================================
12315 dnl Check for poppler
12316 dnl ===================================================================
12318 AC_MSG_CHECKING([whether to build Poppler])
12319 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12320 AC_MSG_RESULT([yes])
12321 ENABLE_POPPLER=TRUE
12322 AC_DEFINE(HAVE_FEATURE_POPPLER)
12324 AC_MSG_RESULT([no])
12326 AC_SUBST(ENABLE_POPPLER)
12328 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12329 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12332 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12333 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12336 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12337 dnl ===================================================================
12338 dnl Check for system poppler
12339 dnl ===================================================================
12340 AC_MSG_CHECKING([which PDF import poppler to use])
12341 if test "$with_system_poppler" = "yes"; then
12342 AC_MSG_RESULT([external])
12343 SYSTEM_POPPLER=TRUE
12344 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12345 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12346 FilterLibs "${POPPLER_LIBS}"
12347 POPPLER_LIBS="${filteredlibs}"
12349 AC_MSG_RESULT([internal])
12351 BUILD_TYPE="$BUILD_TYPE POPPLER"
12353 AC_DEFINE([ENABLE_PDFIMPORT],1)
12355 AC_SUBST(ENABLE_PDFIMPORT)
12356 AC_SUBST(SYSTEM_POPPLER)
12357 AC_SUBST(POPPLER_CFLAGS)
12358 AC_SUBST(POPPLER_LIBS)
12362 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12363 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12364 if test "$SYSTEM_FREETYPE" = TRUE; then
12365 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12366 [skia_freetype_ok=yes],
12367 [skia_freetype_ok=no])
12368 else # internal is ok
12369 skia_freetype_ok=yes
12371 AC_MSG_CHECKING([whether to build Skia])
12372 if test "$skia_freetype_ok" = "yes"; then
12373 if test "$enable_skia" = "debug"; then
12374 AC_MSG_RESULT([yes (debug)])
12375 ENABLE_SKIA_DEBUG=TRUE
12377 AC_MSG_RESULT([yes])
12381 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12382 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12385 AC_DEFINE(HAVE_FEATURE_SKIA)
12386 BUILD_TYPE="$BUILD_TYPE SKIA"
12388 if test "$OS" = "MACOSX"; then
12389 AC_DEFINE(SK_GANESH,1)
12390 AC_DEFINE(SK_METAL,1)
12394 AC_DEFINE(SK_GANESH,1)
12395 AC_DEFINE(SK_VULKAN,1)
12400 AC_MSG_RESULT([no (freetype too old)])
12401 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12405 AC_MSG_CHECKING([whether to build Skia])
12406 AC_MSG_RESULT([no])
12408 AC_SUBST(ENABLE_SKIA)
12409 AC_SUBST(ENABLE_SKIA_DEBUG)
12411 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12412 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12413 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12414 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12415 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12416 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12417 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12418 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12419 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12420 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12422 HAVE_LO_CLANG_DLLEXPORTINLINES=
12424 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12425 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12426 AC_MSG_CHECKING([for Clang])
12427 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12429 if test "$_os" = "WINNT"; then
12430 AC_MSG_CHECKING([for clang-cl])
12431 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12432 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12433 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12434 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12435 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12436 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12438 if test -n "$LO_CLANG_CC"; then
12439 dnl explicitly set -m32/-m64
12440 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12441 LO_CLANG_CXX="$LO_CLANG_CC"
12442 AC_MSG_RESULT([$LO_CLANG_CC])
12444 AC_MSG_RESULT([no])
12447 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12448 echo "#include <stdlib.h>" > conftest.c
12449 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12450 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12451 rm -f conftest.c conftest.obj
12452 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12453 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12455 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12458 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12459 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12462 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12463 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12464 LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12465 if test "$LO_CLANG_VERSION" -lt 50002; then
12466 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12471 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12473 CXX="$LO_CLANG_CXX"
12474 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12475 AC_LANG_PUSH([C++])
12476 save_CXXFLAGS=$CXXFLAGS
12477 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12478 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12479 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12480 AC_MSG_RESULT([yes])
12481 ], [AC_MSG_RESULT([no])])
12482 CXXFLAGS=$save_CXXFLAGS
12485 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12486 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.])
12489 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12490 # Skia is the default on Windows and Mac, so hard-require Clang.
12491 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12492 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12493 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12495 AC_MSG_WARN([Clang compiler not found.])
12500 CXX="$LO_CLANG_CXX"
12501 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12504 flag_sse41=-msse4.1
12505 flag_sse42=-msse4.2
12508 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12509 flag_avx512f=-mavx512f
12513 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12514 AC_LANG_PUSH([C++])
12515 save_CXXFLAGS=$CXXFLAGS
12516 CXXFLAGS="$CXXFLAGS $flag_sse2"
12517 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12518 #include <emmintrin.h>
12520 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12521 c = _mm_xor_si128 (a, b);
12525 [can_compile_sse2=yes],
12526 [can_compile_sse2=no])
12528 CXXFLAGS=$save_CXXFLAGS
12529 AC_MSG_RESULT([${can_compile_sse2}])
12530 if test "${can_compile_sse2}" = "yes" ; then
12531 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12534 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12535 AC_LANG_PUSH([C++])
12536 save_CXXFLAGS=$CXXFLAGS
12537 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12538 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12539 #include <tmmintrin.h>
12541 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12542 c = _mm_maddubs_epi16 (a, b);
12546 [can_compile_ssse3=yes],
12547 [can_compile_ssse3=no])
12549 CXXFLAGS=$save_CXXFLAGS
12550 AC_MSG_RESULT([${can_compile_ssse3}])
12551 if test "${can_compile_ssse3}" = "yes" ; then
12552 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12555 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12556 AC_LANG_PUSH([C++])
12557 save_CXXFLAGS=$CXXFLAGS
12558 CXXFLAGS="$CXXFLAGS $flag_sse41"
12559 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12560 #include <smmintrin.h>
12562 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12563 c = _mm_cmpeq_epi64 (a, b);
12567 [can_compile_sse41=yes],
12568 [can_compile_sse41=no])
12570 CXXFLAGS=$save_CXXFLAGS
12571 AC_MSG_RESULT([${can_compile_sse41}])
12572 if test "${can_compile_sse41}" = "yes" ; then
12573 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12576 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12577 AC_LANG_PUSH([C++])
12578 save_CXXFLAGS=$CXXFLAGS
12579 CXXFLAGS="$CXXFLAGS $flag_sse42"
12580 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12581 #include <nmmintrin.h>
12583 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12584 c = _mm_cmpgt_epi64 (a, b);
12588 [can_compile_sse42=yes],
12589 [can_compile_sse42=no])
12591 CXXFLAGS=$save_CXXFLAGS
12592 AC_MSG_RESULT([${can_compile_sse42}])
12593 if test "${can_compile_sse42}" = "yes" ; then
12594 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12597 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12598 AC_LANG_PUSH([C++])
12599 save_CXXFLAGS=$CXXFLAGS
12600 CXXFLAGS="$CXXFLAGS $flag_avx"
12601 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12602 #include <immintrin.h>
12604 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12605 c = _mm256_xor_ps(a, b);
12609 [can_compile_avx=yes],
12610 [can_compile_avx=no])
12612 CXXFLAGS=$save_CXXFLAGS
12613 AC_MSG_RESULT([${can_compile_avx}])
12614 if test "${can_compile_avx}" = "yes" ; then
12615 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12618 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12619 AC_LANG_PUSH([C++])
12620 save_CXXFLAGS=$CXXFLAGS
12621 CXXFLAGS="$CXXFLAGS $flag_avx2"
12622 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12623 #include <immintrin.h>
12625 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12626 c = _mm256_maddubs_epi16(a, b);
12630 [can_compile_avx2=yes],
12631 [can_compile_avx2=no])
12633 CXXFLAGS=$save_CXXFLAGS
12634 AC_MSG_RESULT([${can_compile_avx2}])
12635 if test "${can_compile_avx2}" = "yes" ; then
12636 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12639 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12640 AC_LANG_PUSH([C++])
12641 save_CXXFLAGS=$CXXFLAGS
12642 CXXFLAGS="$CXXFLAGS $flag_avx512"
12643 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12644 #include <immintrin.h>
12646 __m512i a = _mm512_loadu_si512(0);
12647 __m512d v1 = _mm512_load_pd(0);
12648 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12649 __m512d v2 = _mm512_abs_pd(v1);
12653 [can_compile_avx512=yes],
12654 [can_compile_avx512=no])
12656 CXXFLAGS=$save_CXXFLAGS
12657 AC_MSG_RESULT([${can_compile_avx512}])
12658 if test "${can_compile_avx512}" = "yes" ; then
12659 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12660 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12663 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12664 AC_LANG_PUSH([C++])
12665 save_CXXFLAGS=$CXXFLAGS
12666 CXXFLAGS="$CXXFLAGS $flag_f16c"
12667 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12668 #include <immintrin.h>
12670 __m128i a = _mm_set1_epi32 (0);
12672 c = _mm_cvtph_ps(a);
12676 [can_compile_f16c=yes],
12677 [can_compile_f16c=no])
12679 CXXFLAGS=$save_CXXFLAGS
12680 AC_MSG_RESULT([${can_compile_f16c}])
12681 if test "${can_compile_f16c}" = "yes" ; then
12682 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12685 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12686 AC_LANG_PUSH([C++])
12687 save_CXXFLAGS=$CXXFLAGS
12688 CXXFLAGS="$CXXFLAGS $flag_fma"
12689 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12690 #include <immintrin.h>
12692 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12693 d = _mm256_fmadd_ps(a, b, c);
12697 [can_compile_fma=yes],
12698 [can_compile_fma=no])
12700 CXXFLAGS=$save_CXXFLAGS
12701 AC_MSG_RESULT([${can_compile_fma}])
12702 if test "${can_compile_fma}" = "yes" ; then
12703 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12710 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12712 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12713 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12717 save_CFLAGS=$CFLAGS
12718 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12719 dnl an empty program will do, we're checking the compiler flags
12720 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12721 [use_ccache=yes], [use_ccache=no])
12722 CFLAGS=$save_CFLAGS
12724 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12725 AC_MSG_RESULT([yes])
12727 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12728 AC_MSG_RESULT([no])
12732 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12733 AC_LANG_PUSH([C++])
12735 CXX="$LO_CLANG_CXX"
12736 save_CXXFLAGS=$CXXFLAGS
12737 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12738 dnl an empty program will do, we're checking the compiler flags
12739 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12740 [use_ccache=yes], [use_ccache=no])
12741 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12742 AC_MSG_RESULT([yes])
12744 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12745 AC_MSG_RESULT([no])
12747 CXXFLAGS=$save_CXXFLAGS
12752 AC_SUBST(LO_CLANG_CC)
12753 AC_SUBST(LO_CLANG_CXX)
12754 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12755 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12756 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12757 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12758 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12759 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12760 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12761 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12762 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12763 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12764 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12765 AC_SUBST(LO_CLANG_VERSION)
12766 AC_SUBST(CLANG_USE_LD)
12767 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12771 AC_MSG_CHECKING([whether to enable gpgmepp])
12772 if test "$enable_gpgmepp" = no; then
12773 AC_MSG_RESULT([no])
12774 elif test "$enable_mpl_subset" = "yes"; then
12775 AC_MSG_RESULT([no (MPL only)])
12776 elif test "$enable_fuzzers" = "yes"; then
12777 AC_MSG_RESULT([no (oss-fuzz)])
12778 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12779 AC_MSG_RESULT([yes])
12780 dnl ===================================================================
12781 dnl Check for system gpgme
12782 dnl ===================================================================
12783 AC_MSG_CHECKING([which gpgmepp to use])
12784 if test "$with_system_gpgmepp" = "yes"; then
12785 AC_MSG_RESULT([external])
12786 SYSTEM_GPGMEPP=TRUE
12788 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12789 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12790 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12791 AC_CHECK_HEADER(gpgme.h, [],
12792 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12793 AC_CHECK_LIB(gpgmepp, main, [],
12794 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12795 GPGMEPP_LIBS=-lgpgmepp
12797 AC_MSG_RESULT([internal])
12798 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12800 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12801 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12802 if test "$_os" != "WINNT"; then
12803 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12804 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12807 ENABLE_GPGMEPP=TRUE
12808 AC_DEFINE([HAVE_FEATURE_GPGME])
12809 AC_PATH_PROG(GPG, gpg)
12810 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12811 # so let's exclude that manually for the moment
12812 if test -n "$GPG" -a "$_os" != "WINNT"; then
12813 # make sure we not only have a working gpgme, but a full working
12814 # gpg installation to run OpenPGP signature verification
12815 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12817 if test "$_os" = "Linux"; then
12819 AC_MSG_CHECKING([for /run/user/$uid])
12820 if test -d /run/user/$uid; then
12821 AC_MSG_RESULT([yes])
12822 AC_PATH_PROG(GPGCONF, gpgconf)
12824 # Older versions of gpgconf are not working as expected, since
12825 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12826 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12827 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12828 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12829 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12830 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12831 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12832 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12833 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12834 if $GPGCONF --dump-options > /dev/null ; then
12835 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12836 AC_MSG_RESULT([yes])
12837 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12838 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12840 AC_MSG_RESULT([no])
12843 AC_MSG_RESULT([no. missing or broken gpgconf?])
12846 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12849 AC_MSG_RESULT([no])
12853 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12855 AC_SUBST(ENABLE_GPGMEPP)
12856 AC_SUBST(SYSTEM_GPGMEPP)
12857 AC_SUBST(GPG_ERROR_CFLAGS)
12858 AC_SUBST(GPG_ERROR_LIBS)
12859 AC_SUBST(LIBASSUAN_CFLAGS)
12860 AC_SUBST(LIBASSUAN_LIBS)
12861 AC_SUBST(GPGMEPP_CFLAGS)
12862 AC_SUBST(GPGMEPP_LIBS)
12864 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12865 if test "$with_java" != "no"; then
12866 AC_MSG_RESULT([yes])
12867 ENABLE_JAVA_WEBSOCKET=TRUE
12868 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12871 AC_MSG_RESULT([no])
12872 ENABLE_JAVA_WEBSOCKET=
12874 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12876 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12877 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12878 AC_MSG_RESULT([yes])
12879 ENABLE_MEDIAWIKI=TRUE
12880 BUILD_TYPE="$BUILD_TYPE XSLTML"
12881 if test "x$with_java" = "xno"; then
12882 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12885 AC_MSG_RESULT([no])
12887 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12889 AC_SUBST(ENABLE_MEDIAWIKI)
12891 AC_MSG_CHECKING([whether to build the Report Builder])
12892 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12893 AC_MSG_RESULT([yes])
12894 ENABLE_REPORTBUILDER=TRUE
12895 AC_MSG_CHECKING([which jfreereport libs to use])
12896 if test "$with_system_jfreereport" = "yes"; then
12897 SYSTEM_JFREEREPORT=TRUE
12898 AC_MSG_RESULT([external])
12899 if test -z $SAC_JAR; then
12900 SAC_JAR=/usr/share/java/sac.jar
12902 if ! test -f $SAC_JAR; then
12903 AC_MSG_ERROR(sac.jar not found.)
12906 if test -z $LIBXML_JAR; then
12907 if test -f /usr/share/java/libxml-1.0.0.jar; then
12908 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12909 elif test -f /usr/share/java/libxml.jar; then
12910 LIBXML_JAR=/usr/share/java/libxml.jar
12912 AC_MSG_ERROR(libxml.jar replacement not found.)
12914 elif ! test -f $LIBXML_JAR; then
12915 AC_MSG_ERROR(libxml.jar not found.)
12918 if test -z $FLUTE_JAR; then
12919 if test -f /usr/share/java/flute-1.3.0.jar; then
12920 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12921 elif test -f /usr/share/java/flute.jar; then
12922 FLUTE_JAR=/usr/share/java/flute.jar
12924 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12926 elif ! test -f $FLUTE_JAR; then
12927 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12930 if test -z $JFREEREPORT_JAR; then
12931 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12932 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12933 elif test -f /usr/share/java/flow-engine.jar; then
12934 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12936 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12938 elif ! test -f $JFREEREPORT_JAR; then
12939 AC_MSG_ERROR(jfreereport.jar not found.)
12942 if test -z $LIBLAYOUT_JAR; then
12943 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12944 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12945 elif test -f /usr/share/java/liblayout.jar; then
12946 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12948 AC_MSG_ERROR(liblayout.jar replacement not found.)
12950 elif ! test -f $LIBLAYOUT_JAR; then
12951 AC_MSG_ERROR(liblayout.jar not found.)
12954 if test -z $LIBLOADER_JAR; then
12955 if test -f /usr/share/java/libloader-1.0.0.jar; then
12956 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12957 elif test -f /usr/share/java/libloader.jar; then
12958 LIBLOADER_JAR=/usr/share/java/libloader.jar
12960 AC_MSG_ERROR(libloader.jar replacement not found.)
12962 elif ! test -f $LIBLOADER_JAR; then
12963 AC_MSG_ERROR(libloader.jar not found.)
12966 if test -z $LIBFORMULA_JAR; then
12967 if test -f /usr/share/java/libformula-0.2.0.jar; then
12968 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12969 elif test -f /usr/share/java/libformula.jar; then
12970 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12972 AC_MSG_ERROR(libformula.jar replacement not found.)
12974 elif ! test -f $LIBFORMULA_JAR; then
12975 AC_MSG_ERROR(libformula.jar not found.)
12978 if test -z $LIBREPOSITORY_JAR; then
12979 if test -f /usr/share/java/librepository-1.0.0.jar; then
12980 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12981 elif test -f /usr/share/java/librepository.jar; then
12982 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12984 AC_MSG_ERROR(librepository.jar replacement not found.)
12986 elif ! test -f $LIBREPOSITORY_JAR; then
12987 AC_MSG_ERROR(librepository.jar not found.)
12990 if test -z $LIBFONTS_JAR; then
12991 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12992 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12993 elif test -f /usr/share/java/libfonts.jar; then
12994 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12996 AC_MSG_ERROR(libfonts.jar replacement not found.)
12998 elif ! test -f $LIBFONTS_JAR; then
12999 AC_MSG_ERROR(libfonts.jar not found.)
13002 if test -z $LIBSERIALIZER_JAR; then
13003 if test -f /usr/share/java/libserializer-1.0.0.jar; then
13004 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
13005 elif test -f /usr/share/java/libserializer.jar; then
13006 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
13008 AC_MSG_ERROR(libserializer.jar replacement not found.)
13010 elif ! test -f $LIBSERIALIZER_JAR; then
13011 AC_MSG_ERROR(libserializer.jar not found.)
13014 if test -z $LIBBASE_JAR; then
13015 if test -f /usr/share/java/libbase-1.0.0.jar; then
13016 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
13017 elif test -f /usr/share/java/libbase.jar; then
13018 LIBBASE_JAR=/usr/share/java/libbase.jar
13020 AC_MSG_ERROR(libbase.jar replacement not found.)
13022 elif ! test -f $LIBBASE_JAR; then
13023 AC_MSG_ERROR(libbase.jar not found.)
13027 AC_MSG_RESULT([internal])
13028 SYSTEM_JFREEREPORT=
13029 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
13032 BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
13034 AC_MSG_RESULT([no])
13035 ENABLE_REPORTBUILDER=
13036 SYSTEM_JFREEREPORT=
13038 AC_SUBST(ENABLE_REPORTBUILDER)
13039 AC_SUBST(SYSTEM_JFREEREPORT)
13041 AC_SUBST(LIBXML_JAR)
13042 AC_SUBST(FLUTE_JAR)
13043 AC_SUBST(JFREEREPORT_JAR)
13044 AC_SUBST(LIBBASE_JAR)
13045 AC_SUBST(LIBLAYOUT_JAR)
13046 AC_SUBST(LIBLOADER_JAR)
13047 AC_SUBST(LIBFORMULA_JAR)
13048 AC_SUBST(LIBREPOSITORY_JAR)
13049 AC_SUBST(LIBFONTS_JAR)
13050 AC_SUBST(LIBSERIALIZER_JAR)
13052 # scripting provider for BeanShell?
13053 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13054 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13055 AC_MSG_RESULT([yes])
13056 ENABLE_SCRIPTING_BEANSHELL=TRUE
13058 dnl ===================================================================
13059 dnl Check for system beanshell
13060 dnl ===================================================================
13061 AC_MSG_CHECKING([which beanshell to use])
13062 if test "$with_system_beanshell" = "yes"; then
13063 AC_MSG_RESULT([external])
13065 if test -z $BSH_JAR; then
13066 BSH_JAR=/usr/share/java/bsh.jar
13068 if ! test -f $BSH_JAR; then
13069 AC_MSG_ERROR(bsh.jar not found.)
13072 AC_MSG_RESULT([internal])
13074 BUILD_TYPE="$BUILD_TYPE BSH"
13077 AC_MSG_RESULT([no])
13078 ENABLE_SCRIPTING_BEANSHELL=
13079 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13081 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13082 AC_SUBST(SYSTEM_BSH)
13085 # scripting provider for JavaScript?
13086 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13087 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13088 AC_MSG_RESULT([yes])
13089 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13091 dnl ===================================================================
13092 dnl Check for system rhino
13093 dnl ===================================================================
13094 AC_MSG_CHECKING([which rhino to use])
13095 if test "$with_system_rhino" = "yes"; then
13096 AC_MSG_RESULT([external])
13098 if test -z $RHINO_JAR; then
13099 RHINO_JAR=/usr/share/java/js.jar
13101 if ! test -f $RHINO_JAR; then
13102 AC_MSG_ERROR(js.jar not found.)
13105 AC_MSG_RESULT([internal])
13107 BUILD_TYPE="$BUILD_TYPE RHINO"
13111 AC_MSG_RESULT([no])
13112 ENABLE_SCRIPTING_JAVASCRIPT=
13113 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13115 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13116 AC_SUBST(SYSTEM_RHINO)
13117 AC_SUBST(RHINO_JAR)
13119 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13120 # paths should be added to library search path. So lets put all 64-bit
13123 case "$host_cpu" in
13124 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13125 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13126 supports_multilib="yes"
13133 dnl ===================================================================
13134 dnl QT5 Integration
13135 dnl ===================================================================
13141 QT5_GOBJECT_CFLAGS=""
13142 QT5_GOBJECT_LIBS=""
13143 QT5_HAVE_GOBJECT=""
13144 QT5_PLATFORMS_SRCDIR=""
13145 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13146 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13147 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13149 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13150 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13152 if test -n "$supports_multilib"; then
13153 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13156 qt5_test_include="QtWidgets/qapplication.h"
13157 if test "$_os" = "Emscripten"; then
13158 qt5_test_library="libQt5Widgets.a"
13160 qt5_test_library="libQt5Widgets.so"
13163 dnl Check for qmake5
13164 if test -n "$QT5DIR"; then
13165 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13167 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13169 if test "$QMAKE5" = "no"; then
13170 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13172 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13173 if test -z "$qmake5_test_ver"; then
13174 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13176 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13177 qt5_minimal_minor="15"
13178 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13179 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13181 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13185 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13186 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13187 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13188 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13190 AC_MSG_CHECKING([for Qt5 headers])
13192 for inc_dir in $qt5_incdirs; do
13193 if test -r "$inc_dir/$qt5_test_include"; then
13194 qt5_incdir="$inc_dir"
13198 AC_MSG_RESULT([$qt5_incdir])
13199 if test "x$qt5_incdir" = "xno"; then
13200 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13202 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13203 AC_LANG_PUSH([C++])
13204 save_CPPFLAGS=$CPPFLAGS
13205 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13206 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13207 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13208 CPPFLAGS=$save_CPPFLAGS
13211 AC_MSG_CHECKING([for Qt5 libraries])
13213 for lib_dir in $qt5_libdirs; do
13214 if test -r "$lib_dir/$qt5_test_library"; then
13215 qt5_libdir="$lib_dir"
13219 AC_MSG_RESULT([$qt5_libdir])
13220 if test "x$qt5_libdir" = "xno"; then
13221 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13224 if test "$_os" = "Emscripten"; then
13225 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13226 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13228 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13229 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13232 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13233 if ! test -x "$EMSDK_LLVM_NM"; then
13234 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13236 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13237 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13239 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13240 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13241 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13243 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13244 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13248 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13249 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13250 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13251 if test "$_os" = "Emscripten"; then
13252 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13255 if test "$USING_X11" = TRUE; then
13256 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13257 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13258 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13260 AC_DEFINE(QT5_USING_X11)
13263 dnl Check for Meta Object Compiler
13265 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13266 if test "$MOC5" = "no"; then
13267 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13268 the root of your Qt installation by exporting QT5DIR before running "configure".])
13271 if test "$test_gstreamer_1_0" = yes; then
13272 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13274 AC_DEFINE(QT5_HAVE_GOBJECT)
13276 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13280 AC_SUBST(QT5_CFLAGS)
13283 AC_SUBST(QT5_GOBJECT_CFLAGS)
13284 AC_SUBST(QT5_GOBJECT_LIBS)
13285 AC_SUBST(QT5_HAVE_GOBJECT)
13286 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13288 dnl ===================================================================
13289 dnl QT6 Integration
13290 dnl ===================================================================
13296 QT6_PLATFORMS_SRCDIR=""
13297 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13298 \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13300 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13301 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13303 if test -n "$supports_multilib"; then
13304 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13307 qt6_test_include="QtWidgets/qapplication.h"
13308 if test "$_os" = "Emscripten"; then
13309 qt6_test_library="libQt6Widgets.a"
13311 qt6_test_library="libQt6Widgets.so"
13314 dnl Check for qmake6
13315 if test -n "$QT6DIR"; then
13316 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13318 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13320 if test "$QMAKE6" = "no"; then
13321 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13323 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13324 if test -z "$qmake6_test_ver"; then
13325 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13327 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13330 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13331 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13332 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13333 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13335 AC_MSG_CHECKING([for Qt6 headers])
13337 for inc_dir in $qt6_incdirs; do
13338 if test -r "$inc_dir/$qt6_test_include"; then
13339 qt6_incdir="$inc_dir"
13343 AC_MSG_RESULT([$qt6_incdir])
13344 if test "x$qt6_incdir" = "xno"; then
13345 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13347 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13348 AC_LANG_PUSH([C++])
13349 save_CPPFLAGS=$CPPFLAGS
13350 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13351 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13352 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13353 CPPFLAGS=$save_CPPFLAGS
13356 AC_MSG_CHECKING([for Qt6 libraries])
13358 for lib_dir in $qt6_libdirs; do
13359 if test -r "$lib_dir/$qt6_test_library"; then
13360 qt6_libdir="$lib_dir"
13364 AC_MSG_RESULT([$qt6_libdir])
13365 if test "x$qt6_libdir" = "xno"; then
13366 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13369 if test "$_os" = "Emscripten"; then
13370 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13371 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13373 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13374 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13378 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13379 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13380 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13381 if test "$_os" = "Emscripten"; then
13382 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13385 if test "$USING_X11" = TRUE; then
13386 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13387 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13388 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13390 AC_DEFINE(QT6_USING_X11)
13393 dnl Check for Meta Object Compiler
13395 for lib_dir in $qt6_libdirs; do
13396 if test -z "$qt6_libexec_dirs"; then
13397 qt6_libexec_dirs="$lib_dir/libexec"
13399 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13402 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])
13403 if test "$MOC6" = "no"; then
13404 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13405 the root of your Qt installation by exporting QT6DIR before running "configure".])
13407 moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13408 if test -z "$moc6_test_ver"; then
13409 AC_MSG_ERROR([Wrong moc for Qt6 found.])
13411 AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13414 AC_SUBST(QT6_CFLAGS)
13417 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13419 dnl ===================================================================
13420 dnl KF5 Integration
13421 dnl ===================================================================
13425 KF5_CONFIG="kf5-config"
13426 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13427 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13429 if test "$OS" = "HAIKU"; then
13430 haiku_arch="`echo $RTL_ARCH | tr X x`"
13431 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13432 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13435 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13436 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13437 if test -n "$supports_multilib"; then
13438 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13441 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13442 kf5_test_library="libKF5KIOFileWidgets.so"
13443 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13445 dnl kf5 KDE4 support compatibility installed
13446 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13447 if test "$KF5_CONFIG" != "no"; then
13448 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13449 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13452 dnl Check for KF5 headers
13453 AC_MSG_CHECKING([for KF5 headers])
13455 for kf5_check in $kf5_incdirs; do
13456 if test -r "$kf5_check/$kf5_test_include"; then
13457 kf5_incdir="$kf5_check/KF5"
13461 AC_MSG_RESULT([$kf5_incdir])
13462 if test "x$kf5_incdir" = "xno"; then
13463 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13466 dnl Check for KF5 libraries
13467 AC_MSG_CHECKING([for KF5 libraries])
13469 for kf5_check in $kf5_libdirs; do
13470 if test -r "$kf5_check/$kf5_test_library"; then
13471 kf5_libdir="$kf5_check"
13476 AC_MSG_RESULT([$kf5_libdir])
13477 if test "x$kf5_libdir" = "xno"; then
13478 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13481 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"
13482 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13483 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13485 if test "$USING_X11" = TRUE; then
13486 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13489 AC_LANG_PUSH([C++])
13490 save_CXXFLAGS=$CXXFLAGS
13491 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13492 AC_MSG_CHECKING([whether KDE is >= 5.0])
13493 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13494 #include <kcoreaddons_version.h>
13496 int main(int argc, char **argv) {
13497 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13500 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13501 CXXFLAGS=$save_CXXFLAGS
13504 AC_SUBST(KF5_CFLAGS)
13507 dnl ===================================================================
13508 dnl KF6 Integration
13509 dnl ===================================================================
13513 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13515 if test "$OS" = "HAIKU"; then
13516 haiku_arch="`echo $RTL_ARCH | tr X x`"
13517 kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13518 kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13521 kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13522 kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13523 if test -n "$supports_multilib"; then
13524 kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13527 kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13528 kf6_test_library="libKF6KIOFileWidgets.so"
13529 kf6_libdirs="$qt6_libdir $kf6_libdirs"
13531 dnl Check for KF6 headers
13532 AC_MSG_CHECKING([for KF6 headers])
13534 for kf6_check in $kf6_incdirs; do
13535 if test -r "$kf6_check/$kf6_test_include"; then
13536 kf6_incdir="$kf6_check/KF6"
13540 AC_MSG_RESULT([$kf6_incdir])
13541 if test "x$kf6_incdir" = "xno"; then
13542 AC_MSG_ERROR([KF6 headers not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13545 dnl Check for KF6 libraries
13546 AC_MSG_CHECKING([for KF6 libraries])
13548 for kf6_check in $kf6_libdirs; do
13549 if test -r "$kf6_check/$kf6_test_library"; then
13550 kf6_libdir="$kf6_check"
13555 AC_MSG_RESULT([$kf6_libdir])
13556 if test "x$kf6_libdir" = "xno"; then
13557 AC_MSG_ERROR([KF6 libraries not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13560 KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfig -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13561 KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13562 KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13564 AC_LANG_PUSH([C++])
13565 save_CXXFLAGS=$CXXFLAGS
13566 CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13567 dnl KF6 development version as of 2023-06 uses version number 5.240
13568 AC_MSG_CHECKING([whether KDE is >= 5.240])
13569 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13570 #include <kcoreaddons_version.h>
13572 int main(int argc, char **argv) {
13573 if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13576 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13577 CXXFLAGS=$save_CXXFLAGS
13580 AC_SUBST(KF6_CFLAGS)
13583 dnl ===================================================================
13584 dnl Test whether to include Evolution 2 support
13585 dnl ===================================================================
13586 AC_MSG_CHECKING([whether to enable evolution 2 support])
13587 if test "$enable_evolution2" = yes; then
13588 AC_MSG_RESULT([yes])
13589 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13590 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13591 FilterLibs "${GOBJECT_LIBS}"
13592 GOBJECT_LIBS="${filteredlibs}"
13593 ENABLE_EVOAB2="TRUE"
13595 AC_MSG_RESULT([no])
13597 AC_SUBST(ENABLE_EVOAB2)
13598 AC_SUBST(GOBJECT_CFLAGS)
13599 AC_SUBST(GOBJECT_LIBS)
13601 dnl ===================================================================
13602 dnl Test which themes to include
13603 dnl ===================================================================
13604 AC_MSG_CHECKING([which themes to include])
13605 # if none given use default subset of available themes
13606 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13607 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"
13611 if test "x$with_theme" != "xno"; then
13612 for theme in $with_theme; do
13614 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) WITH_THEMES="${WITH_THEMES:+$WITH_THEMES }$theme" ;;
13615 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13619 AC_MSG_RESULT([$WITH_THEMES])
13620 AC_SUBST([WITH_THEMES])
13622 ###############################################################################
13623 # Extensions checking
13624 ###############################################################################
13625 AC_MSG_CHECKING([for extensions integration])
13626 if test "x$enable_extension_integration" != "xno"; then
13627 WITH_EXTENSION_INTEGRATION=TRUE
13628 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13629 AC_MSG_RESULT([yes, use integration])
13631 WITH_EXTENSION_INTEGRATION=
13632 AC_MSG_RESULT([no, do not integrate])
13634 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13636 dnl Should any extra extensions be included?
13637 dnl There are standalone tests for each of these below.
13638 WITH_EXTRA_EXTENSIONS=
13639 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13641 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13642 if test "x$with_java" != "xno"; then
13643 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13646 AC_MSG_CHECKING([whether to build opens___.ttf])
13647 if test "$enable_build_opensymbol" = "yes"; then
13648 AC_MSG_RESULT([yes])
13649 AC_PATH_PROG(FONTFORGE, fontforge)
13650 if test -z "$FONTFORGE"; then
13651 AC_MSG_ERROR([fontforge not installed])
13654 AC_MSG_RESULT([no])
13655 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13657 AC_SUBST(FONTFORGE)
13659 dnl ===================================================================
13660 dnl Test whether to include fonts
13661 dnl ===================================================================
13662 AC_MSG_CHECKING([whether to include third-party fonts])
13663 if test "$with_fonts" != "no"; then
13664 AC_MSG_RESULT([yes])
13666 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13667 AC_DEFINE(HAVE_MORE_FONTS)
13669 AC_MSG_RESULT([no])
13671 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13673 AC_SUBST(WITH_FONTS)
13675 dnl Test whether to include more Google Noto fonts
13676 dnl ===================================================================
13677 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13678 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13679 AC_MSG_RESULT([no])
13682 AC_MSG_RESULT([yes])
13683 WITH_NOTO_FONT=TRUE
13684 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13685 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13687 AC_SUBST(WITH_NOTO_FONT)
13689 dnl ===================================================================
13690 dnl Test whether to enable online update service
13691 dnl ===================================================================
13692 AC_MSG_CHECKING([whether to enable online update])
13693 ENABLE_ONLINE_UPDATE=
13694 if test "$enable_online_update" = ""; then
13695 AC_MSG_RESULT([no])
13697 if test "$enable_online_update" = "mar"; then
13698 AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13699 elif test "$enable_online_update" = "yes"; then
13700 if test "$enable_curl" != "yes"; then
13701 AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13703 AC_MSG_RESULT([yes])
13704 ENABLE_ONLINE_UPDATE="TRUE"
13706 AC_MSG_RESULT([no])
13709 AC_SUBST(ENABLE_ONLINE_UPDATE)
13712 dnl ===================================================================
13713 dnl Test whether to enable mar online update service
13714 dnl ===================================================================
13715 AC_MSG_CHECKING([whether to enable mar online update])
13716 ENABLE_ONLINE_UPDATE_MAR=
13717 if test "$enable_online_update_mar" = yes; then
13718 AC_MSG_RESULT([yes])
13719 BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13720 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13721 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13723 AC_MSG_RESULT([no])
13725 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13727 AC_MSG_CHECKING([for mar online update baseurl])
13728 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13729 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13730 AC_MSG_RESULT([yes])
13732 AC_MSG_RESULT([no])
13734 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13736 AC_MSG_CHECKING([for mar online update certificateder])
13737 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13738 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13739 AC_MSG_RESULT([yes])
13741 AC_MSG_RESULT([no])
13743 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13745 AC_MSG_CHECKING([for mar online update certificatename])
13746 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13747 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13748 AC_MSG_RESULT([yes])
13750 AC_MSG_RESULT([no])
13752 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13754 AC_MSG_CHECKING([for mar online update certificatepath])
13755 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13756 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13757 AC_MSG_RESULT([yes])
13759 AC_MSG_RESULT([no])
13761 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13763 AC_MSG_CHECKING([for mar online update uploadurl])
13764 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13765 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13766 AC_MSG_RESULT([yes])
13768 AC_MSG_RESULT([no])
13770 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13773 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13774 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13775 if test "x$with_privacy_policy_url" = "xundefined"; then
13776 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13779 AC_SUBST(PRIVACY_POLICY_URL)
13780 dnl ===================================================================
13781 dnl Test whether we need bzip2
13782 dnl ===================================================================
13784 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13785 AC_MSG_CHECKING([whether to use system bzip2])
13786 if test "$with_system_bzip2" = yes; then
13788 AC_MSG_RESULT([yes])
13789 PKG_CHECK_MODULES(BZIP2, bzip2)
13790 FilterLibs "${BZIP2_LIBS}"
13791 BZIP2_LIBS="${filteredlibs}"
13793 AC_MSG_RESULT([no])
13794 BUILD_TYPE="$BUILD_TYPE BZIP2"
13797 AC_SUBST(SYSTEM_BZIP2)
13798 AC_SUBST(BZIP2_CFLAGS)
13799 AC_SUBST(BZIP2_LIBS)
13801 dnl ===================================================================
13802 dnl Test whether to enable extension update
13803 dnl ===================================================================
13804 AC_MSG_CHECKING([whether to enable extension update])
13805 ENABLE_EXTENSION_UPDATE=
13806 if test "x$enable_extension_update" = "xno"; then
13807 AC_MSG_RESULT([no])
13809 AC_MSG_RESULT([yes])
13810 ENABLE_EXTENSION_UPDATE="TRUE"
13811 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13812 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13814 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13817 dnl ===================================================================
13818 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13819 dnl ===================================================================
13820 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13821 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13822 AC_MSG_RESULT([no])
13825 AC_MSG_RESULT([yes])
13826 ENABLE_SILENT_MSI=TRUE
13827 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13829 AC_SUBST(ENABLE_SILENT_MSI)
13831 dnl ===================================================================
13832 dnl Check for WiX tools.
13833 dnl ===================================================================
13834 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13835 AC_MSG_RESULT([no])
13838 AC_MSG_RESULT([yes])
13839 # FIXME: this should do proper detection, but the path is currently
13840 # hardcoded in msicreator/createmsi.py
13841 if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13842 AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13846 AC_SUBST(ENABLE_WIX)
13848 AC_MSG_CHECKING([whether and how to use Xinerama])
13849 if test "$USING_X11" = TRUE; then
13850 if test "$x_libraries" = "default_x_libraries"; then
13851 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13852 if test "x$XINERAMALIB" = x; then
13853 XINERAMALIB="/usr/lib"
13856 XINERAMALIB="$x_libraries"
13858 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13859 # we have both versions, let the user decide but use the dynamic one
13862 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13863 XINERAMA_LINK=dynamic
13865 XINERAMA_LINK=static
13867 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13868 # we have only the dynamic version
13870 XINERAMA_LINK=dynamic
13871 elif test -e "$XINERAMALIB/libXinerama.a"; then
13873 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13875 XINERAMA_LINK=static
13885 if test "$USE_XINERAMA" = "TRUE"; then
13886 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13887 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13888 [AC_MSG_ERROR(Xinerama header not found.)], [])
13889 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13890 if test "x$XEXTLIB" = x; then
13891 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13893 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13894 if test "$_os" = "FreeBSD"; then
13895 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13897 if test "$_os" = "Linux"; then
13898 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13900 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13901 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13903 AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13908 AC_MSG_RESULT([no])
13910 AC_SUBST(XINERAMA_LINK)
13912 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13913 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13914 enable_cairo_rgba=yes
13916 if test "$enable_cairo_rgba" = yes; then
13917 AC_DEFINE(ENABLE_CAIRO_RGBA)
13918 ENABLE_CAIRO_RGBA=TRUE
13919 AC_MSG_RESULT([yes])
13922 AC_MSG_RESULT([no])
13924 AC_SUBST(ENABLE_CAIRO_RGBA)
13926 dnl ===================================================================
13927 dnl Test whether to build cairo or rely on the system version
13928 dnl ===================================================================
13930 if test "$test_cairo" = "yes"; then
13931 AC_MSG_CHECKING([whether to use the system cairo])
13933 : ${with_system_cairo:=$with_system_libs}
13934 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13936 AC_MSG_RESULT([yes])
13938 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13939 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13940 FilterLibs "${CAIRO_LIBS}"
13941 CAIRO_LIBS="${filteredlibs}"
13943 if test "$test_xrender" = "yes"; then
13944 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13946 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13947 #ifdef PictStandardA8
13951 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13956 AC_MSG_RESULT([no])
13957 BUILD_TYPE="$BUILD_TYPE CAIRO"
13960 if test "$enable_cairo_canvas" != no; then
13961 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13962 ENABLE_CAIRO_CANVAS=TRUE
13966 AC_SUBST(CAIRO_CFLAGS)
13967 AC_SUBST(CAIRO_LIBS)
13968 AC_SUBST(ENABLE_CAIRO_CANVAS)
13969 AC_SUBST(SYSTEM_CAIRO)
13971 dnl ===================================================================
13972 dnl Test whether to use avahi
13973 dnl ===================================================================
13974 if test "$_os" = "WINNT"; then
13975 # Windows uses bundled mDNSResponder
13976 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13977 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13978 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13979 [ENABLE_AVAHI="TRUE"])
13980 AC_DEFINE(HAVE_FEATURE_AVAHI)
13981 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13982 FilterLibs "${AVAHI_LIBS}"
13983 AVAHI_LIBS="${filteredlibs}"
13986 AC_SUBST(ENABLE_AVAHI)
13987 AC_SUBST(AVAHI_CFLAGS)
13988 AC_SUBST(AVAHI_LIBS)
13990 dnl ===================================================================
13991 dnl Test whether to use liblangtag
13992 dnl ===================================================================
13994 AC_MSG_CHECKING([whether to use system liblangtag])
13995 if test "$with_system_liblangtag" = yes; then
13996 SYSTEM_LIBLANGTAG=TRUE
13997 AC_MSG_RESULT([yes])
13998 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13999 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
14000 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
14001 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
14002 FilterLibs "${LIBLANGTAG_LIBS}"
14003 LIBLANGTAG_LIBS="${filteredlibs}"
14006 AC_MSG_RESULT([no])
14007 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
14008 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
14009 if test "$COM" = "MSC"; then
14010 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
14012 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
14015 AC_SUBST(SYSTEM_LIBLANGTAG)
14016 AC_SUBST(LIBLANGTAG_CFLAGS)
14017 AC_SUBST(LIBLANGTAG_LIBS)
14019 dnl ===================================================================
14020 dnl Test whether to build libpng or rely on the system version
14021 dnl ===================================================================
14023 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
14024 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
14025 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
14027 dnl ===================================================================
14028 dnl Test whether to build libtiff or rely on the system version
14029 dnl ===================================================================
14031 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
14033 dnl ===================================================================
14034 dnl Test whether to build libwebp or rely on the system version
14035 dnl ===================================================================
14037 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
14039 dnl ===================================================================
14040 dnl Check for runtime JVM search path
14041 dnl ===================================================================
14042 if test "$ENABLE_JAVA" != ""; then
14043 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
14044 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
14045 AC_MSG_RESULT([yes])
14046 if ! test -d "$with_jvm_path"; then
14047 AC_MSG_ERROR(["$with_jvm_path" not a directory])
14049 if ! test -d "$with_jvm_path"jvm; then
14050 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
14052 JVM_ONE_PATH_CHECK="$with_jvm_path"
14053 AC_SUBST(JVM_ONE_PATH_CHECK)
14055 AC_MSG_RESULT([no])
14059 dnl ===================================================================
14060 dnl Test for the presence of Ant and that it works
14061 dnl ===================================================================
14063 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
14064 # breaks filename decoding, so for the ant section, set it to LANG
14066 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14067 ANT_HOME=; export ANT_HOME
14068 WITH_ANT_HOME=; export WITH_ANT_HOME
14069 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14070 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14071 if test "$_os" = "WINNT"; then
14072 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14074 with_ant_home="$LODE_HOME/opt/ant"
14076 elif test -x "$LODE_HOME/opt/bin/ant" ; then
14077 with_ant_home="$LODE_HOME/opt/ant"
14080 if test -z "$with_ant_home"; then
14081 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14083 if test "$_os" = "WINNT"; then
14084 # AC_PATH_PROGS needs unix path
14085 with_ant_home=`cygpath -u "$with_ant_home"`
14087 AbsolutePath "$with_ant_home"
14088 with_ant_home=$absolute_path
14089 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14090 WITH_ANT_HOME=$with_ant_home
14091 ANT_HOME=$with_ant_home
14094 if test -z "$ANT"; then
14095 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14097 # resolve relative or absolute symlink
14098 while test -h "$ANT"; do
14100 a_basename=`basename "$ANT"`
14101 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14102 cd "`dirname "$ANT"`"
14103 cd "`dirname "$a_script"`"
14104 ANT="`pwd`"/"`basename "$a_script"`"
14108 AC_MSG_CHECKING([if $ANT works])
14109 mkdir -p conftest.dir
14112 cat > conftest.java << EOF
14113 public class conftest {
14114 int testmethod(int a, int b) {
14120 cat > conftest.xml << EOF
14121 <project name="conftest" default="conftest">
14122 <target name="conftest">
14123 <javac srcdir="." includes="conftest.java">
14129 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14130 if test $? = 0 -a -f ./conftest.class; then
14131 AC_MSG_RESULT([Ant works])
14132 if test -z "$WITH_ANT_HOME"; then
14133 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14134 if test -z "$ANT_HOME"; then
14135 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14138 ANT_HOME="$WITH_ANT_HOME"
14141 echo "configure: Ant test failed" >&5
14142 cat conftest.java >&5
14143 cat conftest.xml >&5
14144 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14147 rm -fr conftest.dir
14149 if test -z "$ANT_HOME"; then
14150 ANT_HOME="NO_ANT_HOME"
14152 PathFormat "$ANT_HOME"
14153 ANT_HOME="$formatted_path"
14155 ANT="$formatted_path"
14158 dnl Checking for ant.jar
14159 if test "$ANT_HOME" != "NO_ANT_HOME"; then
14160 AC_MSG_CHECKING([Ant lib directory])
14161 if test -f $ANT_HOME/lib/ant.jar; then
14162 ANT_LIB="$ANT_HOME/lib"
14164 if test -f $ANT_HOME/ant.jar; then
14165 ANT_LIB="$ANT_HOME"
14167 if test -f /usr/share/java/ant.jar; then
14168 ANT_LIB=/usr/share/java
14170 if test -f /usr/share/ant-core/lib/ant.jar; then
14171 ANT_LIB=/usr/share/ant-core/lib
14173 if test -f $ANT_HOME/lib/ant/ant.jar; then
14174 ANT_LIB="$ANT_HOME/lib/ant"
14176 if test -f /usr/share/lib/ant/ant.jar; then
14177 ANT_LIB=/usr/share/lib/ant
14179 AC_MSG_ERROR([Ant libraries not found!])
14186 PathFormat "$ANT_LIB"
14187 ANT_LIB="$formatted_path"
14188 AC_MSG_RESULT([Ant lib directory found.])
14192 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14194 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14195 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14196 ant_version_major=`echo $ant_version | cut -d. -f1`
14197 ant_version_minor=`echo $ant_version | cut -d. -f2`
14198 echo "configure: ant_version $ant_version " >&5
14199 echo "configure: ant_version_major $ant_version_major " >&5
14200 echo "configure: ant_version_minor $ant_version_minor " >&5
14201 if test "$ant_version_major" -ge "2"; then
14202 AC_MSG_RESULT([yes, $ant_version])
14203 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14204 AC_MSG_RESULT([yes, $ant_version])
14206 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14209 rm -f conftest* core core.* *.core
14217 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14218 AC_MSG_CHECKING([for JUnit 4])
14219 if test "$with_junit" = "yes"; then
14220 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14221 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14222 elif test -e /usr/share/java/junit4.jar; then
14223 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14225 if test -e /usr/share/lib/java/junit.jar; then
14226 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14228 OOO_JUNIT_JAR=/usr/share/java/junit.jar
14232 OOO_JUNIT_JAR=$with_junit
14234 if test "$_os" = "WINNT"; then
14235 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14237 printf 'import org.junit.Before;' > conftest.java
14238 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14239 AC_MSG_RESULT([$OOO_JUNIT_JAR])
14242 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14243 specify its pathname via --with-junit=..., or disable it via --without-junit])
14245 rm -f conftest.class conftest.java
14246 if test $OOO_JUNIT_JAR != ""; then
14247 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14250 AC_MSG_CHECKING([for included Hamcrest])
14251 printf 'import org.hamcrest.BaseDescription;' > conftest.java
14252 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14253 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14255 AC_MSG_RESULT([Not included])
14256 AC_MSG_CHECKING([for standalone hamcrest jar.])
14257 if test "$with_hamcrest" = "yes"; then
14258 if test -e /usr/share/lib/java/hamcrest.jar; then
14259 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14260 elif test -e /usr/share/java/hamcrest/core.jar; then
14261 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14262 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14263 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14265 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14268 HAMCREST_JAR=$with_hamcrest
14270 if test "$_os" = "WINNT"; then
14271 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14273 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14274 AC_MSG_RESULT([$HAMCREST_JAR])
14276 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),
14277 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14280 rm -f conftest.class conftest.java
14282 AC_SUBST(OOO_JUNIT_JAR)
14283 AC_SUBST(HAMCREST_JAR)
14284 # set back LC_ALL to C after the java related tests...
14290 # check for wget and curl
14295 if test "$enable_fetch_external" != "no"; then
14297 CURL=`which curl 2>/dev/null`
14299 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14301 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14302 if test $? -eq 0; then
14308 if test -z "$WGET" -a -z "$CURL"; then
14309 AC_MSG_ERROR([neither wget nor curl found!])
14318 # check for sha256sum
14322 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14323 eval "$i -a 256 --version" > /dev/null 2>&1
14325 if test $ret -eq 0; then
14326 SHA256SUM="$i -a 256"
14331 if test -z "$SHA256SUM"; then
14332 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14333 eval "$i --version" > /dev/null 2>&1
14335 if test $ret -eq 0; then
14342 if test -z "$SHA256SUM"; then
14343 AC_MSG_ERROR([no sha256sum found!])
14346 AC_SUBST(SHA256SUM)
14348 dnl ===================================================================
14349 dnl Dealing with l10n options
14350 dnl ===================================================================
14351 AC_MSG_CHECKING([which languages to be built])
14352 # get list of all languages
14353 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14354 # the sed command does the following:
14355 # + if a line ends with a backslash, append the next line to it
14356 # + adds " on the beginning of the value (after =)
14357 # + adds " at the end of the value
14358 # + removes en-US; we want to put it on the beginning
14359 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14360 [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)]
14361 ALL_LANGS="en-US $completelangiso"
14362 # check the configured localizations
14363 WITH_LANG="$with_lang"
14365 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14366 # (Norwegian is "nb" and "nn".)
14367 if test "$WITH_LANG" = "no"; then
14371 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14372 AC_MSG_RESULT([en-US])
14374 AC_MSG_RESULT([$WITH_LANG])
14375 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14376 if test -z "$MSGFMT"; then
14377 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14378 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14379 elif test -x "/opt/lo/bin/msgfmt"; then
14380 MSGFMT="/opt/lo/bin/msgfmt"
14382 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14383 if test -z "$MSGFMT"; then
14384 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14388 if test -z "$MSGUNIQ"; then
14389 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14390 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14391 elif test -x "/opt/lo/bin/msguniq"; then
14392 MSGUNIQ="/opt/lo/bin/msguniq"
14394 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14395 if test -z "$MSGUNIQ"; then
14396 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14403 # check that the list is valid
14404 for lang in $WITH_LANG; do
14405 test "$lang" = "ALL" && continue
14406 # need to check for the exact string, so add space before and after the list of all languages
14407 for vl in $ALL_LANGS; do
14408 if test "$vl" = "$lang"; then
14412 if test "$vl" != "$lang"; then
14413 # if you're reading this - you prolly quoted your languages remove the quotes ...
14414 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14417 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14418 echo $WITH_LANG | grep -q en-US
14419 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14421 # list with substituted ALL
14422 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14423 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14424 test "$WITH_LANG" = "en-US" && WITH_LANG=
14425 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14426 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14427 ALL_LANGS=`echo $ALL_LANGS qtz`
14429 AC_SUBST(ALL_LANGS)
14430 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14431 AC_SUBST(WITH_LANG)
14432 AC_SUBST(WITH_LANG_LIST)
14433 AC_SUBST(GIT_NEEDED_SUBMODULES)
14435 WITH_POOR_HELP_LOCALIZATIONS=
14436 if test -d "$SRC_ROOT/translations/source"; then
14437 for l in `ls -1 $SRC_ROOT/translations/source`; do
14438 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14439 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14442 if test "$OS" = WNT; then
14443 # We want to include only English (US), French, German, Italian and Spanish help
14444 # packs in our Windows distribution. Others are probably not needed and digital
14445 # signature of MSI packages is expensive. Some other languages are available online.
14446 WITH_POOR_HELP_LOCALIZATIONS="ab af am an ar as ast az be bg bn bn-IN bo br brx bs ca ca-valencia ckb cs cy da dgo dsb dz el en-GB en-ZA eo et eu fa fi fur fy ga gd gl gu gug he hi hr hsb hu hy id is ja jv ka kab kk kl km kmr-Latn kn ko kok ks ky lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR ro ru rw sa-IN sah sat sd si sid sk sl sq sr sr-Latn ss st sv sw-TZ szl ta te tg th ti tn tr ts tt ug uk ur uz ve vec vi xh zh-CN zh-TW zu"
14449 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14451 if test -n "$with_locales" -a "$with_locales" != ALL; then
14452 WITH_LOCALES="$with_locales"
14454 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14455 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14456 # config_host/config_locales.h.in
14457 for locale in $WITH_LOCALES; do
14460 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14464 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14467 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14472 AC_DEFINE(WITH_LOCALE_ALL)
14474 AC_SUBST(WITH_LOCALES)
14476 dnl git submodule update --reference
14477 dnl ===================================================================
14478 if test -n "${GIT_REFERENCE_SRC}"; then
14479 for repo in ${GIT_NEEDED_SUBMODULES}; do
14480 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14481 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14485 AC_SUBST(GIT_REFERENCE_SRC)
14487 dnl git submodules linked dirs
14488 dnl ===================================================================
14489 if test -n "${GIT_LINK_SRC}"; then
14490 for repo in ${GIT_NEEDED_SUBMODULES}; do
14491 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14492 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14496 AC_SUBST(GIT_LINK_SRC)
14499 dnl ===================================================================
14500 AC_MSG_CHECKING([for alternative branding images directory])
14501 # initialize mapped arrays
14502 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14503 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14505 if test -z "$with_branding" -o "$with_branding" = "no"; then
14506 AC_MSG_RESULT([none])
14507 DEFAULT_BRAND_IMAGES="$brand_files"
14509 if ! test -d $with_branding ; then
14510 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14512 AC_MSG_RESULT([$with_branding])
14513 CUSTOM_BRAND_DIR="$with_branding"
14514 for lfile in $brand_files
14516 if ! test -f $with_branding/$lfile ; then
14517 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14518 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14520 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14523 check_for_progress="yes"
14526 AC_SUBST([BRAND_INTRO_IMAGES])
14527 AC_SUBST([CUSTOM_BRAND_DIR])
14528 AC_SUBST([CUSTOM_BRAND_IMAGES])
14529 AC_SUBST([DEFAULT_BRAND_IMAGES])
14532 AC_MSG_CHECKING([for 'intro' progress settings])
14536 PROGRESSFRAMECOLOR=
14538 PROGRESSTEXTBASELINE=
14540 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14541 source "$with_branding/progress.conf"
14542 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14544 AC_MSG_RESULT([none])
14547 AC_SUBST(PROGRESSBARCOLOR)
14548 AC_SUBST(PROGRESSSIZE)
14549 AC_SUBST(PROGRESSPOSITION)
14550 AC_SUBST(PROGRESSFRAMECOLOR)
14551 AC_SUBST(PROGRESSTEXTCOLOR)
14552 AC_SUBST(PROGRESSTEXTBASELINE)
14555 dnl ===================================================================
14556 dnl Custom build version
14557 dnl ===================================================================
14558 AC_MSG_CHECKING([for extra build ID])
14559 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14560 EXTRA_BUILDID="$with_extra_buildid"
14562 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14563 if test -n "$EXTRA_BUILDID" ; then
14564 AC_MSG_RESULT([$EXTRA_BUILDID])
14566 AC_MSG_RESULT([not set])
14568 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14571 AC_MSG_CHECKING([for vendor])
14572 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14573 OOO_VENDOR="$USERNAME"
14575 if test -z "$OOO_VENDOR"; then
14579 if test -z "$OOO_VENDOR"; then
14580 OOO_VENDOR="`id -u -n`"
14583 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14585 OOO_VENDOR="$with_vendor"
14586 AC_MSG_RESULT([$OOO_VENDOR])
14588 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14589 AC_SUBST(OOO_VENDOR)
14591 if test "$_os" = "Android" ; then
14592 ANDROID_PACKAGE_NAME=
14593 AC_MSG_CHECKING([for Android package name])
14594 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14595 if test -n "$ENABLE_DEBUG"; then
14596 # Default to the package name that makes ndk-gdb happy.
14597 ANDROID_PACKAGE_NAME="org.libreoffice"
14599 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14602 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14604 ANDROID_PACKAGE_NAME="$with_android_package_name"
14605 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14607 AC_SUBST(ANDROID_PACKAGE_NAME)
14610 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14611 if test "$with_compat_oowrappers" = "yes"; then
14612 WITH_COMPAT_OOWRAPPERS=TRUE
14615 WITH_COMPAT_OOWRAPPERS=
14618 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14620 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14621 AC_MSG_CHECKING([for install dirname])
14622 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14623 INSTALLDIRNAME="$with_install_dirname"
14625 AC_MSG_RESULT([$INSTALLDIRNAME])
14626 AC_SUBST(INSTALLDIRNAME)
14628 AC_MSG_CHECKING([for prefix])
14629 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14630 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14631 PREFIXDIR="$prefix"
14632 AC_MSG_RESULT([$PREFIXDIR])
14633 AC_SUBST(PREFIXDIR)
14635 LIBDIR=[$(eval echo $(eval echo $libdir))]
14638 DATADIR=[$(eval echo $(eval echo $datadir))]
14641 MANDIR=[$(eval echo $(eval echo $mandir))]
14644 DOCDIR=[$(eval echo $(eval echo $docdir))]
14647 BINDIR=[$(eval echo $(eval echo $bindir))]
14650 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14651 AC_SUBST(INSTALLDIR)
14653 TESTINSTALLDIR="${BUILDDIR}/test-install"
14654 AC_SUBST(TESTINSTALLDIR)
14657 # ===================================================================
14658 # OAuth2 id and secrets
14659 # ===================================================================
14661 AC_MSG_CHECKING([for Google Drive client id and secret])
14662 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14663 AC_MSG_RESULT([not set])
14664 GDRIVE_CLIENT_ID="\"\""
14665 GDRIVE_CLIENT_SECRET="\"\""
14667 AC_MSG_RESULT([set])
14668 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14669 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14671 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14672 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14674 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14675 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14676 AC_MSG_RESULT([not set])
14677 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14678 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14680 AC_MSG_RESULT([set])
14681 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14682 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14684 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14685 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14687 AC_MSG_CHECKING([for OneDrive client id and secret])
14688 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14689 AC_MSG_RESULT([not set])
14690 ONEDRIVE_CLIENT_ID="\"\""
14691 ONEDRIVE_CLIENT_SECRET="\"\""
14693 AC_MSG_RESULT([set])
14694 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14695 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14697 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14698 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14701 dnl ===================================================================
14702 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14703 dnl --enable-dependency-tracking configure option
14704 dnl ===================================================================
14705 AC_MSG_CHECKING([whether to enable dependency tracking])
14706 if test "$enable_dependency_tracking" = "no"; then
14708 AC_MSG_RESULT([no])
14710 AC_MSG_RESULT([yes])
14714 dnl ===================================================================
14715 dnl Number of CPUs to use during the build
14716 dnl ===================================================================
14717 AC_MSG_CHECKING([for number of processors to use])
14718 # plain --with-parallelism is just the default
14719 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14720 if test "$with_parallelism" = "no"; then
14723 PARALLELISM=$with_parallelism
14726 if test "$enable_icecream" = "yes"; then
14731 Darwin|FreeBSD|NetBSD|OpenBSD)
14732 PARALLELISM=`sysctl -n hw.ncpu`
14736 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14738 # what else than above does profit here *and* has /proc?
14740 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14744 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14745 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14749 if test $PARALLELISM -eq 0; then
14750 AC_MSG_RESULT([explicit make -j option needed])
14752 AC_MSG_RESULT([$PARALLELISM])
14754 AC_SUBST(PARALLELISM)
14757 # Set up ILIB for MSVC build
14760 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14762 if test -n "$JAVA_HOME"; then
14763 ILIB="$ILIB;$JAVA_HOME/lib"
14766 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14767 ILIB="$ILIB;$formatted_path"
14768 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14769 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14770 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14771 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14772 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14773 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14775 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14776 ucrtlibpath_formatted=$formatted_path
14777 ILIB="$ILIB;$ucrtlibpath_formatted"
14778 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14779 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14780 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14781 ILIB="$ILIB;$formatted_path"
14783 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14784 ILIB="$ILIB;$formatted_path"
14787 if test "$cross_compiling" != "yes"; then
14788 ILIB_FOR_BUILD="$ILIB"
14792 AC_SUBST(ILIB_FOR_BUILD)
14794 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14795 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14796 dnl from consteval constructor initializing const variable",
14797 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14798 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14799 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14800 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14801 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14802 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14803 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14804 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14805 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14806 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14807 AC_LANG_PUSH([C++])
14809 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14810 CXX="env LIB=$ILIB $CXX"
14812 save_CXXFLAGS=$CXXFLAGS
14813 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14814 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14816 consteval S() { i = 1; }
14823 consteval S1(int n): a(n) {}
14839 struct S4 { consteval S4() = default; };
14840 void f4(bool b) { b ? S4() : S4(); }
14843 consteval S5() { c = 0; }
14844 char * f() { return &c; }
14850 auto s5 = S5().f();
14852 return (s.i == 1) ? 0 : 1;
14854 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14855 AC_MSG_RESULT([yes])
14856 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14858 CXXFLAGS=$save_CXXFLAGS
14861 # ===================================================================
14862 # Creating bigger shared library to link against
14863 # ===================================================================
14864 AC_MSG_CHECKING([whether to create huge library])
14868 if test $_os = iOS -o $_os = Android; then
14869 # Never any point in mergelibs for these as we build just static
14870 # libraries anyway...
14871 enable_mergelibs=no
14874 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14875 if test "$enable_mergelibs" = "more"; then
14876 if test $_os != Linux; then
14877 add_warning "--enable-mergelibs=more is not tested for this platform"
14880 MERGELIBS_MORE="TRUE"
14881 AC_MSG_RESULT([yes (more)])
14882 AC_DEFINE(ENABLE_MERGELIBS)
14883 elif test "$enable_mergelibs" = "yes" -o "$enable_mergelibs" = ""; then
14884 if test $_os != Linux -a $_os != WINNT; then
14885 add_warning "--enable-mergelibs is not tested for this platform"
14888 AC_MSG_RESULT([yes])
14889 AC_DEFINE(ENABLE_MERGELIBS)
14891 AC_MSG_ERROR([unknown value --enable-mergelibs=$enable_mergelibs])
14894 AC_MSG_RESULT([no])
14896 AC_SUBST([MERGELIBS])
14897 AC_SUBST([MERGELIBS_MORE])
14899 dnl ===================================================================
14900 dnl icerun is a wrapper that stops us spawning tens of processes
14901 dnl locally - for tools that can't be executed on the compile cluster
14902 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14903 dnl ===================================================================
14904 AC_MSG_CHECKING([whether to use icerun wrapper])
14906 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14907 ICECREAM_RUN=icerun
14908 AC_MSG_RESULT([yes])
14910 AC_MSG_RESULT([no])
14912 AC_SUBST(ICECREAM_RUN)
14914 dnl ===================================================================
14915 dnl Setup the ICECC_VERSION for the build the same way it was set for
14916 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14917 dnl ===================================================================
14918 x_ICECC_VERSION=[\#]
14919 if test -n "$ICECC_VERSION" ; then
14922 AC_SUBST(x_ICECC_VERSION)
14923 AC_SUBST(ICECC_VERSION)
14925 dnl ===================================================================
14927 AC_MSG_CHECKING([MPL subset])
14931 if test "$enable_mpl_subset" = "yes"; then
14935 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14937 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14940 if test "$warn_report" = "true"; then
14941 mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14943 if test "x$enable_postgresql_sdbc" != "xno"; then
14944 mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14946 if test "$enable_lotuswordpro" = "yes"; then
14947 mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14949 if test -n "$ENABLE_POPPLER"; then
14950 if test "x$SYSTEM_POPPLER" = "x"; then
14951 mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14954 # cf. m4/libo_check_extension.m4
14955 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14956 mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14960 for theme in $WITH_THEMES; do
14962 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14963 denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14965 filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14968 if test "x$denied_themes" != "x"; then
14969 if test "x$filtered_themes" == "x"; then
14970 filtered_themes="colibre"
14972 mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14975 ENABLE_OPENGL_TRANSITIONS=
14977 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14978 mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14981 if test "x$mpl_error_string" != "x"; then
14982 AC_MSG_ERROR([$mpl_error_string])
14987 AC_DEFINE(MPL_HAVE_SUBSET)
14988 AC_MSG_RESULT([only])
14990 AC_MSG_RESULT([no restrictions])
14992 AC_SUBST(MPL_SUBSET)
14995 dnl ===================================================================
14997 AC_MSG_CHECKING([formula logger])
14998 ENABLE_FORMULA_LOGGER=
15000 if test "x$enable_formula_logger" = "xyes"; then
15001 AC_MSG_RESULT([yes])
15002 AC_DEFINE(ENABLE_FORMULA_LOGGER)
15003 ENABLE_FORMULA_LOGGER=TRUE
15004 elif test -n "$ENABLE_DBGUTIL" ; then
15005 AC_MSG_RESULT([yes])
15006 AC_DEFINE(ENABLE_FORMULA_LOGGER)
15007 ENABLE_FORMULA_LOGGER=TRUE
15009 AC_MSG_RESULT([no])
15012 AC_SUBST(ENABLE_FORMULA_LOGGER)
15014 dnl ===================================================================
15015 dnl Checking for active Antivirus software.
15016 dnl ===================================================================
15018 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
15019 AC_MSG_CHECKING([for active Antivirus software])
15020 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
15021 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
15022 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
15023 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
15024 AC_MSG_RESULT([found])
15025 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
15026 echo $EICAR_STRING > $SRC_ROOT/eicar
15027 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
15029 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15030 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15032 echo $EICAR_STRING > $BUILDDIR/eicar
15033 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
15035 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15036 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15038 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"
15040 AC_MSG_RESULT([not found])
15043 AC_MSG_RESULT([n/a])
15047 dnl ===================================================================
15049 AC_MSG_CHECKING([for coredumpctl support])
15050 if test -z "$with_coredumpctl" && test $_os != Linux; then
15051 with_coredumpctl=no
15053 if test "$with_coredumpctl" = no; then
15056 AC_PATH_PROG(COREDUMPCTL, coredumpctl)
15057 AC_PATH_PROG(JQ, jq)
15058 AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
15059 AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
15060 if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
15061 || test -z "$SYSTEMD_RUN"
15063 if test -z "$with_coredumpctl"; then
15066 if test -z "$COREDUMPCTL"; then
15067 AC_MSG_ERROR([coredumpctl not found])
15069 if test -z "$JQ"; then
15070 AC_MSG_ERROR([jq not found])
15072 if test -z "$SYSTEMD_ESCAPE"; then
15073 AC_MSG_ERROR([systemd-escape not found])
15075 if test -z "$SYSTEMD_RUN"; then
15076 AC_MSG_ERROR([systemd-run not found])
15080 WITH_COREDUMPCTL=TRUE
15083 if test -z "$WITH_COREDUMPCTL"; then
15084 AC_MSG_RESULT([no])
15086 AC_MSG_RESULT([yes])
15088 AC_SUBST(COREDUMPCTL)
15090 AC_SUBST(SYSTEMD_ESCAPE)
15091 AC_SUBST(SYSTEMD_RUN)
15092 AC_SUBST(WITH_COREDUMPCTL)
15094 dnl ===================================================================
15095 dnl Setting up the environment.
15096 dnl ===================================================================
15097 AC_MSG_NOTICE([setting up the build environment variables...])
15101 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15102 if test -d "$COMPATH/atlmfc/lib/spectre"; then
15103 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15104 ATL_INCLUDE="$COMPATH/atlmfc/include"
15105 elif test -d "$COMPATH/atlmfc/lib"; then
15106 ATL_LIB="$COMPATH/atlmfc/lib"
15107 ATL_INCLUDE="$COMPATH/atlmfc/include"
15109 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15110 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15112 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15113 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15114 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15117 if test "$build_os" = "cygwin"; then
15118 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15119 PathFormat "/usr/bin/find.exe"
15120 FIND="$formatted_path"
15121 PathFormat "/usr/bin/sort.exe"
15122 SORT="$formatted_path"
15123 PathFormat "/usr/bin/grep.exe"
15124 WIN_GREP="$formatted_path"
15125 PathFormat "/usr/bin/ls.exe"
15126 WIN_LS="$formatted_path"
15127 PathFormat "/usr/bin/touch.exe"
15128 WIN_TOUCH="$formatted_path"
15134 AC_SUBST(ATL_INCLUDE)
15140 AC_SUBST(WIN_TOUCH)
15142 AC_SUBST(BUILD_TYPE)
15147 PERL="$formatted_path"
15150 if test -n "$TMPDIR"; then
15151 TEMP_DIRECTORY="$TMPDIR"
15153 TEMP_DIRECTORY="/tmp"
15155 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15156 if test "$build_os" = "cygwin"; then
15157 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15158 CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15160 AC_SUBST(TEMP_DIRECTORY)
15161 AC_SUBST(CYGWIN_BASH)
15163 # setup the PATH for the environment
15164 if test -n "$LO_PATH_FOR_BUILD"; then
15165 LO_PATH="$LO_PATH_FOR_BUILD"
15168 pathmunge "$MSVC_HOST_PATH" "before"
15176 dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15177 if test "$ENABLE_JAVA" != ""; then
15178 pathmunge "$JAVA_HOME/bin" "after"
15183 # Win32 make needs native paths
15184 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15185 LO_PATH=`cygpath -p -m "$PATH"`
15187 if test "$WIN_BUILD_ARCH" = "x64"; then
15188 # needed for msi packaging
15189 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15191 if test "$WIN_BUILD_ARCH" = "arm64"; then
15192 # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15193 # the x86 ones probably would work just as well...
15194 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15196 # .NET 4.6 and higher don't have bin directory
15197 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15198 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15200 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15201 pathmunge "$CSC_PATH" "before"
15202 pathmunge "$MIDL_PATH" "before"
15203 pathmunge "$AL_PATH" "before"
15204 pathmunge "$MSVC_MULTI_PATH" "before"
15205 pathmunge "$MSVC_BUILD_PATH" "before"
15206 if test -n "$MSBUILD_PATH" ; then
15207 pathmunge "$MSBUILD_PATH" "before"
15209 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15210 if test "$ENABLE_JAVA" != ""; then
15211 if test -d "$JAVA_HOME/jre/bin/client"; then
15212 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15214 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15215 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15217 pathmunge "$JAVA_HOME/bin" "before"
15219 pathmunge "$MSVC_HOST_PATH" "before"
15223 pathmunge "/usr/css/bin" "before"
15224 if test "$ENABLE_JAVA" != ""; then
15225 pathmunge "$JAVA_HOME/bin" "after"
15233 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15234 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15235 x_LO_ELFCHECK_ALLOWLIST=
15237 x_LO_ELFCHECK_ALLOWLIST=[\#]
15239 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15240 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15244 # Generate a configuration sha256 we can use for deps
15245 if test -f config_host.mk; then
15246 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15248 if test -f config_host_lang.mk; then
15249 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15252 CFLAGS=$my_original_CFLAGS
15253 CXXFLAGS=$my_original_CXXFLAGS
15254 CPPFLAGS=$my_original_CPPFLAGS
15256 AC_CONFIG_LINKS([include:include])
15258 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15259 # BUILD platform configuration] - otherwise breaks cross building
15260 AC_CONFIG_FILES([config_host.mk
15261 config_host_lang.mk
15263 bin/bffvalidator.sh
15264 bin/odfvalidator.sh
15266 instsetoo_native/util/openoffice.lst
15267 sysui/desktop/macosx/Info.plist
15268 hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15269 lo.xcent:sysui/desktop/macosx/lo.xcent.in
15270 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15272 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15273 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15274 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15275 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15276 AC_CONFIG_HEADERS([config_host/config_clang.h])
15277 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15278 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15279 AC_CONFIG_HEADERS([config_host/config_eot.h])
15280 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15281 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15282 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15283 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15284 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15285 AC_CONFIG_HEADERS([config_host/config_features.h])
15286 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15287 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15288 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15289 AC_CONFIG_HEADERS([config_host/config_folders.h])
15290 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15291 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15292 AC_CONFIG_HEADERS([config_host/config_gio.h])
15293 AC_CONFIG_HEADERS([config_host/config_global.h])
15294 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15295 AC_CONFIG_HEADERS([config_host/config_java.h])
15296 AC_CONFIG_HEADERS([config_host/config_langs.h])
15297 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15298 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15299 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15300 AC_CONFIG_HEADERS([config_host/config_locales.h])
15301 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15302 AC_CONFIG_HEADERS([config_host/config_oox.h])
15303 AC_CONFIG_HEADERS([config_host/config_options.h])
15304 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15305 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15306 AC_CONFIG_HEADERS([config_host/config_skia.h])
15307 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15308 AC_CONFIG_HEADERS([config_host/config_validation.h])
15309 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15310 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15311 AC_CONFIG_HEADERS([config_host/config_version.h])
15312 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15313 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15314 AC_CONFIG_HEADERS([config_host/config_python.h])
15315 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15316 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15317 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15320 if test "$CROSS_COMPILING" = TRUE; then
15321 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15324 # touch the config timestamp file
15325 if test ! -f config_host.mk.stamp; then
15326 echo > config_host.mk.stamp
15327 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15328 echo "Host Configuration unchanged - avoiding scp2 stamp update"
15330 echo > config_host.mk.stamp
15333 # touch the config lang timestamp file
15334 if test ! -f config_host_lang.mk.stamp; then
15335 echo > config_host_lang.mk.stamp
15336 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15337 echo "Language Configuration unchanged - avoiding scp2 stamp update"
15339 echo > config_host_lang.mk.stamp
15343 if test \( "$STALE_MAKE" = "TRUE" \) \
15344 -a "$build_os" = "cygwin"; then
15347 ****************************************************************************
15349 Your make version is known to be horribly slow, and hard to debug
15350 problems with. To get a reasonably functional make please do:
15352 to install a pre-compiled binary make for Win32
15354 mkdir -p /opt/lo/bin
15356 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15357 cp make-4.2.1-msvc.exe make
15360 to install from source:
15361 place yourself in a working directory of you choice.
15363 git clone git://git.savannah.gnu.org/make.git
15365 [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"]
15366 set PATH=%PATH%;C:\Cygwin\bin
15367 [or Cygwin64, if that is what you have]
15368 cd path-to-make-repo-you-cloned-above
15369 build_w32.bat --without-guile
15371 should result in a WinRel/gnumake.exe.
15372 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15374 Then re-run autogen.sh
15376 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15377 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15384 ****************************************************************************
15386 To show information on various make targets and make flags, run:
15389 To just build, run:
15394 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15396 After the build has finished successfully, you can immediately run what you built using the command:
15399 if test $_os = Darwin; then
15400 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15402 echo instdir/program/soffice
15406 If you want to run the unit tests, run:
15412 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15413 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15414 cat "$WARNINGS_FILE_FOR_BUILD"
15418 if test -s "$WARNINGS_FILE"; then
15419 echo "HOST config ($WARNINGS_FILE)"
15420 cat "$WARNINGS_FILE"
15423 # Remove unneeded emconfigure artifacts
15424 rm -f a.out a.wasm a.out.js a.out.wasm
15426 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: