Avoid potential negative array index access to cached text.
[LibreOffice.git] / configure.ac
blob03a5b68b6d9ea5b6a98ee33f71a5e896ec760d94
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
17 AC_PREREQ([2.59])
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.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     if test "$COM" = "MSC"; then
50         for f in $1; do
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"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
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)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
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.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
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).
86     #
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
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
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
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$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')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
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"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
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.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
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?])
185         fi
186     fi
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")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
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.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
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)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
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:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
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
242 dnl from themselves
244 mac_sanitize_path()
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`"
252     fi
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`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset 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()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
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
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 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"
310     ac_cv_host_os="wsl"
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.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
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])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
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'
414         exit 0
415     fi
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"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
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 ===================================================================
521 dnl Product version
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)
528 AC_PROG_EGREP
529 # AC_PROG_EGREP doesn't set GREP on all systems as well
530 AC_PATH_PROG(GREP, grep)
532 BUILDDIR=`pwd`
533 cd $srcdir
534 SRC_ROOT=`pwd`
535 cd $BUILDDIR
536 x_Cygwin=[\#]
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"
554     fi
557 GNUMAKE_WIN_NATIVE=
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"
566                 else
567                     GNUMAKE=`which $a`
568                 fi
569             else
570                 GNUMAKE=`which $a`
571             fi
572             break
573         fi
574     fi
575 done
576 AC_MSG_RESULT($GNUMAKE)
577 if test -z "$GNUMAKE"; then
578     AC_MSG_ERROR([not found. install GNU Make.])
579 else
580     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
581         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
582     fi
585 win_short_path_for_make()
587     local short_path="$1"
588     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
589         cygpath -sm "$short_path"
590     else
591         cygpath -u "$(cygpath -d "$short_path")"
592     fi
596 if test "$build_os" = "cygwin"; then
597     PathFormat "$SRC_ROOT"
598     SRC_ROOT="$formatted_path"
599     PathFormat "$BUILDDIR"
600     BUILDDIR="$formatted_path"
601     x_Cygwin=
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])
605     else
606         AC_MSG_RESULT([found: $COMSPEC])
607     fi
610 AC_SUBST(SRC_ROOT)
611 AC_SUBST(BUILDDIR)
612 AC_SUBST(x_Cygwin)
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
631     ENABLE_LTO="TRUE"
632     AC_MSG_RESULT([yes])
633 else
634     ENABLE_LTO=""
635     AC_MSG_RESULT([no])
637 AC_SUBST(ENABLE_LTO)
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
649 dnl mandatory
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]),
673 ANDROID_NDK_DIR=
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
680     ANDROID_API_LEVEL=21
681     if test -n "$with_android_api_level" ; then
682         ANDROID_API_LEVEL="$with_android_api_level"
683     fi
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
698     else
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
703         ANDROID_APP_ABI=x86
704     fi
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.])
711         fi
712         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
713     else
714         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
715     fi
716     if test -z "$ANDROID_NDK_VERSION";  then
717         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
718     fi
719     case $ANDROID_NDK_VERSION in
720     r9*|r10*)
721         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
722         ;;
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.*])
725         ;;
726     23.*|24.*|25.*)
727         ;;
728     *)
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."
731         ;;
732     esac
734     case "$with_android_ndk_toolchain_version" in
735     clang5.0)
736         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
737         ;;
738     *)
739         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
740     esac
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.)
750     case $build_os in
751     linux-gnu*)
752         android_HOST_TAG=linux-x86_64
753         ;;
754     darwin*)
755         android_HOST_TAG=darwin-x86_64
756         ;;
757     *)
758         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
759         # ndk would also support windows and windows-x86_64
760         ;;
761     esac
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"
777     fi
779     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
781     if test -z "$CC"; then
782         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
783         CC_BASE="clang"
784     fi
785     if test -z "$CXX"; then
786         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
787         CXX_BASE="clang++"
788     fi
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 ===================================================================
800 ANDROID_SDK_DIR=
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.])
817 ENABLE_ANDROID_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])
823     else
824         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
825     fi
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()
841     enable_evolution2=no
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 # ===================================================================
856 build_crypto=yes
857 test_clucene=no
858 test_gdb_index=no
859 test_openldap=yes
860 test_split_debug=no
861 test_webdav=yes
862 usable_dlapi=yes
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
867 # must: using_x11
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"
876 PICSWITCH="-fpic"
877 DLLPOST=".so"
879 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
881 INSTROOTBASESUFFIX=
882 INSTROOTCONTENTSUFFIX=
883 SDKDIRNAME=sdk
885 HOST_PLATFORM="$host"
887 host_cpu_for_clang="$host_cpu"
889 case "$host_os" in
891 solaris*)
892     using_freetype_fontconfig=yes
893     using_x11=yes
894     build_skia=yes
895     _os=SunOS
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])
904     else
905         AC_MSG_RESULT([ok ($_os_release)])
906     fi
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)])
912     else
913         AC_MSG_ERROR([only SPARC and i386 processors are supported])
914     fi
915     ;;
917 linux-gnu*|k*bsd*-gnu*|linux-musl*)
918     using_freetype_fontconfig=yes
919     using_x11=yes
920     build_skia=yes
921     test_gdb_index=yes
922     test_split_debug=yes
923     if test "$enable_fuzzers" = yes; then
924         test_system_freetype=no
925     fi
926     _os=Linux
927     ;;
929 gnu)
930     using_freetype_fontconfig=yes
931     using_x11=no
932     _os=GNU
933      ;;
935 cygwin*|wsl*)
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
948     using_x11=no
949     test_unix_dlapi=no
950     test_openldap=no
951     enable_pagein=no
952     build_skia=yes
953     _os=WINNT
955     DLLPOST=".dll"
956     LINKFLAGSNOUNDEFS=
958     if test "$host_cpu" = "aarch64"; then
959         build_skia=no
960         enable_gpgmepp=no
961         enable_coinmp=no
962         enable_firebird_sdbc=no
963     fi
964     ;;
966 darwin*) # macOS
967     using_freetype_fontconfig=no
968     using_x11=no
969     build_skia=yes
970     enable_pagein=no
971     if test -n "$LODE_HOME" ; then
972         mac_sanitize_path
973         AC_MSG_NOTICE([sanitized the PATH to $PATH])
974     fi
975     _os=Darwin
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"
982     # -fPIC is default
983     PICSWITCH=""
985     DLLPOST=".dylib"
987     # -undefined error is the default
988     LINKFLAGSNOUNDEFS=""
989     case "$host_cpu" in
990     aarch64|arm64)
991         # Apple's Clang uses "arm64"
992         host_cpu_for_clang=arm64
993     esac
996 ios*) # iOS
997     using_freetype_fontconfig=no
998     using_x11=no
999     build_crypto=no
1000     test_libcmis=no
1001     test_openldap=no
1002     test_webdav=no
1003     if test -n "$LODE_HOME" ; then
1004         mac_sanitize_path
1005         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1006     fi
1007     enable_gpgmepp=no
1008     _os=iOS
1009     enable_mpl_subset=yes
1010     enable_lotuswordpro=no
1011     disable_database_connectivity_dependencies
1012     enable_coinmp=no
1013     enable_lpsolve=no
1014     enable_extension_integration=no
1015     enable_xmlhelp=no
1016     with_ppds=no
1017     if test "$enable_ios_simulator" = "yes"; then
1018         host=x86_64-apple-darwin
1019     fi
1020     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1021     LINKFLAGSSHL="-dynamiclib"
1023     # -fPIC is default
1024     PICSWITCH=""
1026     DLLPOST=".dylib"
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
1039 freebsd*)
1040     using_freetype_fontconfig=yes
1041     using_x11=yes
1042     build_skia=yes
1043     AC_MSG_CHECKING([the FreeBSD operating system release])
1044     if test -n "$with_os_version"; then
1045         OSVERSION="$with_os_version"
1046     else
1047         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1048     fi
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"
1057     else
1058         PTHREAD_CFLAGS=""
1059         PTHREAD_LIBS="-pthread"
1060     fi
1061     AC_MSG_RESULT([$PTHREAD_LIBS])
1062     _os=FreeBSD
1063     ;;
1065 *netbsd*)
1066     using_freetype_fontconfig=yes
1067     using_x11=yes
1068     test_gtk3_kde5=no
1069     build_skia=yes
1070     PTHREAD_LIBS="-pthread -lpthread"
1071     _os=NetBSD
1072     ;;
1074 openbsd*)
1075     using_freetype_fontconfig=yes
1076     using_x11=yes
1077     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078     PTHREAD_LIBS="-pthread"
1079     _os=OpenBSD
1080     ;;
1082 dragonfly*)
1083     using_freetype_fontconfig=yes
1084     using_x11=yes
1085     build_skia=yes
1086     PTHREAD_LIBS="-pthread"
1087     _os=DragonFly
1088     ;;
1090 linux-android*)
1091     # API exists, but seems not really usable since Android 7 AFAIK
1092     usable_dlapi=no
1093     using_freetype_fontconfig=yes
1094     using_headless_plugin=no
1095     using_x11=no
1096     build_crypto=no
1097     test_openldap=no
1098     test_system_freetype=no
1099     test_webdav=no
1100     disable_database_connectivity_dependencies
1101     enable_lotuswordpro=no
1102     enable_mpl_subset=yes
1103     enable_cairo_canvas=no
1104     enable_coinmp=yes
1105     enable_lpsolve=no
1106     enable_odk=no
1107     enable_python=no
1108     enable_xmlhelp=no
1109     _os=Android
1110     ;;
1112 haiku*)
1113     using_freetype_fontconfig=yes
1114     using_x11=no
1115     test_gtk3=no
1116     test_gtk3_kde5=no
1117     test_kf5=yes
1118     test_kf6=yes
1119     enable_odk=no
1120     enable_coinmp=no
1121     enable_pdfium=no
1122     enable_sdremote=no
1123     enable_postgresql_sdbc=no
1124     enable_firebird_sdbc=no
1125     _os=Haiku
1126     ;;
1128 emscripten)
1129     # API currently just exists in headers, not code
1130     usable_dlapi=no
1131     using_freetype_fontconfig=yes
1132     using_x11=yes
1133     test_openldap=no
1134     test_qt5=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
1141     with_system_zlib=no
1142     with_theme="colibre"
1143     _os=Emscripten
1144     ;;
1147     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1148     ;;
1149 esac
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"
1178 # Don't sort!
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
1187 disable_x11_tests()
1189     test_cups=no
1190     test_dbus=no
1191     test_gen=no
1192     test_gstreamer_1_0=no
1193     test_gtk3_kde5=no
1194     test_gtk3=no
1195     test_gtk4=no
1196     test_kf5=no
1197     test_kf6=no
1198     test_qt5=no
1199     test_qt6=no
1200     test_randr=no
1201     test_xrender=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
1212     fi
1213 else
1214     test_fontconfig=no
1215     test_freetype=no
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])
1238     fi
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])
1244     fi
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])
1258     x_AFLAGS=
1259 else
1260     AC_MSG_RESULT(no)
1261     x_AFLAGS=[\#]
1263 AC_MSG_CHECKING(for explicit CFLAGS)
1264 if test -n "$CFLAGS"; then
1265     AC_MSG_RESULT([$CFLAGS])
1266     x_CFLAGS=
1267 else
1268     AC_MSG_RESULT(no)
1269     x_CFLAGS=[\#]
1271 AC_MSG_CHECKING(for explicit CXXFLAGS)
1272 if test -n "$CXXFLAGS"; then
1273     AC_MSG_RESULT([$CXXFLAGS])
1274     x_CXXFLAGS=
1275 else
1276     AC_MSG_RESULT(no)
1277     x_CXXFLAGS=[\#]
1279 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1280 if test -n "$OBJCFLAGS"; then
1281     AC_MSG_RESULT([$OBJCFLAGS])
1282     x_OBJCFLAGS=
1283 else
1284     AC_MSG_RESULT(no)
1285     x_OBJCFLAGS=[\#]
1287 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1288 if test -n "$OBJCXXFLAGS"; then
1289     AC_MSG_RESULT([$OBJCXXFLAGS])
1290     x_OBJCXXFLAGS=
1291 else
1292     AC_MSG_RESULT(no)
1293     x_OBJCXXFLAGS=[\#]
1295 AC_MSG_CHECKING(for explicit LDFLAGS)
1296 if test -n "$LDFLAGS"; then
1297     AC_MSG_RESULT([$LDFLAGS])
1298     x_LDFLAGS=
1299 else
1300     AC_MSG_RESULT(no)
1301     x_LDFLAGS=[\#]
1303 AC_SUBST(AFLAGS)
1304 AC_SUBST(CFLAGS)
1305 AC_SUBST(CXXFLAGS)
1306 AC_SUBST(OBJCFLAGS)
1307 AC_SUBST(OBJCXXFLAGS)
1308 AC_SUBST(LDFLAGS)
1309 AC_SUBST(x_AFLAGS)
1310 AC_SUBST(x_CFLAGS)
1311 AC_SUBST(x_CXXFLAGS)
1312 AC_SUBST(x_OBJCFLAGS)
1313 AC_SUBST(x_OBJCXXFLAGS)
1314 AC_SUBST(x_LDFLAGS)
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
1326     save_CFLAGS=$CFLAGS
1327     AC_PROG_CC
1328     CFLAGS=$save_CFLAGS
1329     if test -z "$CC_BASE"; then
1330         CC_BASE=`first_arg_basename "$CC"`
1331     fi
1334 if test "$_os" != "WINNT"; then
1335     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1336 else
1337     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
1344         save_LIBS="$LIBS"
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])])
1348         LIBS="$save_LIBS"
1349         AC_DEFINE([HAVE_UNIX_DLAPI])
1350     fi
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], [
1358     save_LIBS="$LIBS"
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=], [:])])
1362     LIBS="$save_LIBS"
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')
1386     else
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')
1391     fi
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)])
1398     else
1399         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1400     fi
1402     EMSCRIPTEN_ERROR=0
1403     if ! which emconfigure >/dev/null 2>&1; then
1404         AC_MSG_WARN([emconfigure must be in your \$PATH])
1405         EMSCRIPTEN_ERROR=1
1406     fi
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])
1409         EMSCRIPTEN_ERROR=1
1410     fi
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.])
1414         EMSCRIPTEN_ERROR=1
1415     fi
1416     if test $EMSCRIPTEN_ERROR -ne 0; then
1417         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1418     fi
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
1433 # case?
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
1571          enabled.])
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.]))
1667 AC_ARG_ENABLE(lto,
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'
1671          linker.)]))
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
1678          during the build.
1679          On macOS the only choices are
1680          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1681          ]))
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)
1688 AC_ARG_ENABLE(gtk4,
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)
1739 AC_ARG_ENABLE(qt5,
1740     AS_HELP_STRING([--enable-qt5],
1741         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1742          available.]),
1745 AC_ARG_ENABLE(qt6,
1746     AS_HELP_STRING([--enable-qt6],
1747         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1748          available.]),
1751 AC_ARG_ENABLE(kf5,
1752     AS_HELP_STRING([--enable-kf5],
1753         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1754          KF5 are available.]),
1757 AC_ARG_ENABLE(kf6,
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.]),
1770 AC_ARG_ENABLE(gen,
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)
1776 AC_ARG_ENABLE(gui,
1777     AS_HELP_STRING([--disable-gui],
1778         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1779 ,enable_gui=yes)
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.]),
1822 AC_ARG_ENABLE(ld,
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
1869          non-functional.)]),
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
1876          non-functional.)]),
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
1883          non-functional.)]),
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
1890          non-functional.)]),
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
1897          non-functional.)]),
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
1909          is done.
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).]),
1930 AC_ARG_ENABLE(wix,
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.]))
2026 AC_ARG_ENABLE(nss,
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.]),
2031 ,enable_nss=yes)
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
2043         library.
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
2052          available).]))
2054 libo_FUZZ_ARG_ENABLE(formula-logger,
2055     AS_HELP_STRING(
2056         [--enable-formula-logger],
2057         [Enable formula logger for logging formula calculation flow in Calc.]
2058     )
2061 AC_ARG_ENABLE(ldap,
2062     AS_HELP_STRING([--disable-ldap],
2063         [Disable LDAP support.]),
2064 ,enable_ldap=yes)
2066 AC_ARG_ENABLE(opencl,
2067     AS_HELP_STRING([--disable-opencl],
2068         [Disable OpenCL support.]),
2069 ,enable_opencl=yes)
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]),
2124 AC_ARG_WITH(gnu-cp,
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")]),
2164 AC_ARG_WITH(theme,
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.]),
2194 AC_ARG_WITH(epm,
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
2198          will be built.]),
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']),
2210 AC_ARG_WITH(tls,
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.]),
2391     BSH_JAR=$withval)
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.]),
2410     RHINO_JAR=$withval)
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.]),
2420     SAC_JAR=$withval)
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.]),
2430     FLUTE_JAR=$withval)
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.]))
2569 AC_ARG_WITH(webdav,
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.]),
2588 AC_ARG_WITH(help,
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.])
2593     [
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
2598     ],
2601 AC_ARG_WITH(omindex,
2602    AS_HELP_STRING([--with-omindex],
2603         [Enable the support of xapian-omega index for online help.])
2604    [
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
2608                                 for xapian-omega
2609   ],
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]),
2639         [],
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.]),
2659 ,with_junit=yes)
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.]),
2665 ,with_hamcrest=yes)
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,
2675     AS_HELP_STRING(
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.]),
2680 ,with_doxygen=yes)
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
2694          be needed.]),
2697 AC_ARG_WITH(lang,
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.])
2714     [
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
2721                           some languages.
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.
2726     ],
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 ===================================================================
2763 dnl Branding
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.])
2769     [
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.
2790     ],
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.]),
2800 AC_ARG_WITH(vendor,
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"
2813          fi]
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
2838         40.]),
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
2891         processes.]))
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
2903     AC_MSG_RESULT([no])
2904 else
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
2918 else
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
2928     AC_MSG_RESULT([no])
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/>'
2933 else
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
2946     AC_MSG_RESULT([no])
2947     ENABLE_HARDENING_FLAGS=
2948 else
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])
2958 else
2959     AC_MSG_RESULT([no])
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"
2969 else
2970     AC_MSG_RESULT([no])
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])
2982     [
2983                           e. g.: --with-macosx-version-min-required=10.15
2984     ],
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
2998 add_lopath_after ()
3000     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
3001         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
3002     fi
3005 add_lopath_before ()
3007     local IFS=${P_SEP}
3008     local path_cleanup
3009     local dir
3010     for dir in $LO_PATH ; do
3011         if test "$dir" != "$1" ; then
3012             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
3013         fi
3014     done
3015     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3018 dnl ===================================================================
3019 dnl check for required programs (grep, awk, sed, bash)
3020 dnl ===================================================================
3022 pathmunge ()
3024     local new_path
3025     if test -n "$1"; then
3026         if test "$build_os" = "cygwin"; then
3027             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3028                 PathFormat "$1"
3029                 new_path=`cygpath -sm "$formatted_path"`
3030             else
3031                 PathFormat "$1"
3032                 new_path=`cygpath -u "$formatted_path"`
3033             fi
3034         else
3035             new_path="$1"
3036         fi
3037         if test "$2" = "after"; then
3038             add_lopath_after "$new_path"
3039         else
3040             add_lopath_before "$new_path"
3041         fi
3042     fi
3045 AC_PROG_AWK
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])
3055 AC_SUBST(BASH)
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])
3063     fi
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
3071         GNUTAR=$a
3072         break
3073     fi
3074 done
3075 AC_MSG_RESULT($GNUTAR)
3076 if test -z "$GNUTAR"; then
3077     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3079 AC_SUBST(GNUTAR)
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"
3085 else
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"
3089     else
3090         STRIP_COMPONENTS="unsupported"
3091     fi
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)
3114     fi
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
3120     enable_avmedia=no
3121     enable_libcmis=no
3122     enable_coinmp=no
3123     enable_cups=no
3124     test "$_os" = Emscripten && enable_curl=no
3125     enable_database_connectivity=no
3126     enable_dbus=no
3127     enable_dconf=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
3132     enable_gio=no
3133     enable_gpgmepp=no
3134     enable_ldap=no
3135     enable_lotuswordpro=no
3136     enable_lpsolve=no
3137     enable_nss=no
3138     enable_odk=no
3139     enable_online_update=no
3140     enable_opencl=no
3141     enable_pdfimport=no
3142     enable_randr=no
3143     enable_report_builder=no
3144     enable_scripting=no
3145     enable_sdremote_bluetooth=no
3146     enable_skia=no
3147     enable_xmlhelp=no
3148     enable_zxing=no
3149     test_libepubgen=no
3150     test_libcdr=no
3151     test_libcmis=no
3152     test_libetonyek=no
3153     test_libfreehand=no
3154     test_libmspub=no
3155     test_libpagemaker=no
3156     test_libqxp=no
3157     test_libvisio=no
3158     test_libzmf=no
3159     test_webdav=no
3160     with_galleries=no
3161     with_templates=no
3162     with_webdav=no
3163     with_x=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])
3198     else
3199         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3200     fi
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)
3210 else
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)
3218 else
3219     if test "$_os" = iOS; then
3220         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3221     fi
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
3229     fi
3232 DISABLE_SCRIPTING=''
3233 if test "$enable_scripting" = yes; then
3234     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3235     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3236 else
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"
3252 else
3253     DISABLE_DYNLOADING='TRUE'
3254     if test $_os != iOS -a $_os != Android; then
3255         enable_database_connectivity=no
3256         enable_nss=no
3257         enable_odk=no
3258         enable_python=no
3259         enable_skia=no
3260         with_java=no
3261     fi
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])
3270     fi
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)
3277 else
3278     enable_extension_integration=no
3279     enable_extension_update=no
3282 # remember SYSBASE value
3283 AC_SUBST(SYSBASE)
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])
3294         fi
3295         AC_MSG_RESULT([build from source images internally])
3296     elif test "$with_galleries" = "no"; then
3297         WITH_GALLERY_BUILD=
3298         AC_MSG_RESULT([disable non-internal gallery build])
3299     else
3300         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3301     fi
3302 else
3303     if test $_os != iOS -a $_os != Android; then
3304         AC_MSG_RESULT([internal src images for desktop])
3305     else
3306         WITH_GALLERY_BUILD=
3307         AC_MSG_RESULT([disable src image build])
3308     fi
3310 AC_SUBST(WITH_GALLERY_BUILD)
3312 dnl ===================================================================
3313 dnl  Sort out various templates compilation options
3314 dnl ===================================================================
3315 WITH_TEMPLATES=TRUE
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
3321         WITH_TEMPLATES=
3322         AC_MSG_RESULT([disable non-internal templates])
3323     else
3324         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3325     fi
3326 else
3327     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3328         AC_MSG_RESULT([enable all templates])
3329     else
3330         WITH_TEMPLATES=
3331         AC_MSG_RESULT([disable non-internal templates])
3332     fi
3334 AC_SUBST(WITH_TEMPLATES)
3336 dnl ===================================================================
3337 dnl  Checks if ccache is available
3338 dnl ===================================================================
3339 CCACHE_DEPEND_MODE=
3340 if test "$enable_ccache" = "no"; then
3341     CCACHE=""
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
3349         ;;
3350     *)
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
3355             fi
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"
3360             fi
3361         fi
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)
3366             rm -f conftest.txt
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
3370                 AC_MSG_RESULT(yes)
3371             else
3372                 AC_MSG_RESULT(no)
3373                 CCACHE="not found"
3374             fi
3375             rm -f conftest.txt
3376         fi
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
3385                 SCCACHE=1
3386                 ;;
3387             *)
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"`
3392                     SCCACHE=1
3393                     CCACHE_DEPEND_MODE=1
3394                 fi
3395                 ;;
3396             esac
3397         fi
3398         if test "$CCACHE" = "not found"; then
3399             CCACHE=""
3400         fi
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])
3412                 else
3413                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3414                     CCACHE=""
3415                     CCACHE_DEPEND_MODE=
3416                 fi
3417             fi
3418         fi
3419         ;;
3420     esac
3421 else
3422     CCACHE=""
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
3439             ccache_size=0
3440         fi
3441         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3442         if test $ccache_size -lt 1024; then
3443             CCACHE=""
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"
3446         else
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"
3450         fi
3451     else
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"
3456         fi
3457     fi
3460 ENABLE_Z7_DEBUG=
3461 if test "$enable_z7_debug" != no; then
3462     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3463         ENABLE_Z7_DEBUG=TRUE
3464     fi
3465 else
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
3476     GCC_HOME_SET="true"
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/"
3486             else
3487                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3489             fi
3490         else
3491             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3492             GCC_HOME_SET="false"
3493         fi
3494     else
3495         GCC_HOME="$with_gcc_home"
3496     fi
3497     AC_MSG_RESULT($GCC_HOME)
3498     AC_SUBST(GCC_HOME)
3500     if test "$GCC_HOME_SET" = "true"; then
3501         if test -z "$CC"; then
3502             CC="$GCC_HOME/bin/gcc"
3503             CC_BASE="gcc"
3504         fi
3505         if test -z "$CXX"; then
3506             CXX="$GCC_HOME/bin/g++"
3507             CXX_BASE="g++"
3508         fi
3509     fi
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 ===================================================================
3521 dnl Java support
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])
3527         ENABLE_JAVA=""
3528         with_java=no
3529     else
3530         AC_MSG_RESULT([yes])
3531         ENABLE_JAVA="TRUE"
3532         AC_DEFINE(HAVE_FEATURE_JAVA)
3533     fi
3534 else
3535     AC_MSG_RESULT([no])
3536     ENABLE_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])
3564     fi
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,
3569     # 10.10.2 is 101002
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])
3575     fi
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)])
3578     fi
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";
3585         else
3586             with_macosx_version_min_required="11.0";
3587         fi
3588     fi
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])
3593     fi
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)])
3599     else
3600         AC_MSG_RESULT([yes])
3601     fi
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]);
3621             fi
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
3628                 x_LDFLAGS=
3629             fi
3630         fi
3631     else
3632         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3633     fi
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"
3648         else
3649             CC+=" -target arm64-apple-macos"
3650         fi
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"
3659         else
3660             CXX+=" -target arm64-apple-macos"
3661         fi
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`
3666         AR=`xcrun -find ar`
3667         NM=`xcrun -find nm`
3668         STRIP=`xcrun -find strip`
3669         LIBTOOL=`xcrun -find libtool`
3670         RANLIB=`xcrun -find ranlib`
3671     fi
3673     AC_MSG_CHECKING([whether to do code signing])
3675     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3676         AC_MSG_RESULT([no])
3677     else
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:"
3687         else
3688             identity=$enable_macosx_code_signing
3689         fi
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])
3695         else
3696             AC_MSG_ERROR([cannot determine identity to use])
3697         fi
3698     fi
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
3703         AC_MSG_RESULT([no])
3704     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3705         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3706     else
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:"
3711         else
3712             identity=$enable_macosx_package_signing
3713         fi
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])
3719         else
3720             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3721         fi
3722     fi
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])
3726     fi
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])
3736     else
3737         AC_MSG_RESULT([no])
3738     fi
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])
3747         else
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#'])
3753         fi
3754     fi
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
3780     else
3781         platformlc=iphoneos
3782         versionmin=-miphoneos-version-min=14.5
3783     fi
3785     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3787     if ! test -d "$sysroot"; then
3788         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3789     fi
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`
3808     AR=`xcrun -find ar`
3809     NM=`xcrun -find nm`
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)
3825 else
3826     AC_MSG_RESULT([no])
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
3869 else
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
3882     else
3883         LIBO_SHARE_RESOURCE_FOLDER=resource
3884     fi
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 ===================================================================
3930 reg_get_value()
3932     # Return value: $regvalue
3933     unset regvalue
3935     if test "$build_os" = "wsl"; then
3936         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3937         return
3938     fi
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
3946             regvalue=$_regvalue
3947         fi
3948     fi
3951 # Get a value from the 32-bit side of the Registry
3952 reg_get_value_32()
3954     reg_get_value "32" "$1"
3957 # Get a value from the 64-bit side of the Registry
3958 reg_get_value_64()
3960     reg_get_value "64" "$1"
3963 reg_list_values()
3965     # Return value: $reglist
3966     unset reglist
3968     if test "$build_os" = "wsl"; then
3969         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3970         return
3971     fi
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"
3988 case "$host_os" in
3989 cygwin*|wsl*)
3990     COM=MSC
3991     OS=WNT
3992     RTL_OS=Windows
3993     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3994         P_SEP=";"
3995     else
3996         P_SEP=:
3997     fi
3998     case "$host_cpu" in
3999     x86_64)
4000         CPUNAME=X86_64
4001         RTL_ARCH=X86_64
4002         PLATFORMID=windows_x86_64
4003         WINDOWS_X64=1
4004         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4005         WIN_HOST_ARCH="x64"
4006         WIN_MULTI_ARCH="x86"
4007         WIN_HOST_BITS=64
4008         ;;
4009     i*86)
4010         CPUNAME=INTEL
4011         RTL_ARCH=x86
4012         PLATFORMID=windows_x86
4013         WIN_HOST_ARCH="x86"
4014         WIN_HOST_BITS=32
4015         WIN_OTHER_ARCH="x64"
4016         ;;
4017     aarch64)
4018         CPUNAME=AARCH64
4019         RTL_ARCH=AARCH64
4020         PLATFORMID=windows_aarch64
4021         WINDOWS_X64=1
4022         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4023         WIN_HOST_ARCH="arm64"
4024         WIN_HOST_BITS=64
4025         with_ucrt_dir=no
4026         ;;
4027     *)
4028         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4029         ;;
4030     esac
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" ;;
4036     *)
4037         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4038         ;;
4039     esac
4041     SCPDEFS="$SCPDEFS -D_MSC_VER"
4042     ;;
4043 esac
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"
4056     fi
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
4063     fi
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
4069         fi
4070     fi
4071 else
4072     CROSS_COMPILING=
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!
4082 ISYSTEM=
4083 if test "$GCC" = "yes"; then
4084     AC_MSG_CHECKING( for -isystem )
4085     save_CFLAGS=$CFLAGS
4086     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4087     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4088     CFLAGS=$save_CFLAGS
4089     if test -n "$ISYSTEM"; then
4090         AC_MSG_RESULT(yes)
4091     else
4092         AC_MSG_RESULT(no)
4093     fi
4095 if test -z "$ISYSTEM"; then
4096     # fall back to using -I
4097     ISYSTEM=-I
4099 AC_SUBST(ISYSTEM)
4101 dnl ===================================================================
4102 dnl  Check which Visual Studio compiler is used
4103 dnl ===================================================================
4105 map_vs_year_to_version()
4107     # Return value: $vsversion
4109     unset vsversion
4111     case $1 in
4112     2019)
4113         vsversion=16;;
4114     2022)
4115         vsversion=17;;
4116     2022preview)
4117         vsversion=17.9;;
4118     *)
4119         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4120     esac
4123 vs_versions_to_check()
4125     # Args: $1 (optional) : versions to check, in the order of preference
4126     # Return value: $vsversions
4128     unset vsversions
4130     if test -n "$1"; then
4131         map_vs_year_to_version "$1"
4132         vsversions=$vsversion
4133     else
4134         # Default version is 2019
4135         vsversions="16"
4136     fi
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
4146     local result
4147     if test "$build_os" = "wsl"; then
4148         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4149     else
4150         chmod +x $WRAPPERBATCHFILEPATH
4151         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4152     fi
4153     rm -f $WRAPPERBATCHFILEPATH
4154     printf '%s' "$result"
4157 find_ucrt()
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
4165         # Rest if not exist
4166         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4167           UCRTSDKDIR=
4168         fi
4169     fi
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"
4181             then
4182                 UCRTVERSION=10.0.14393.0
4183             fi
4184         else
4185           AC_MSG_ERROR([No UCRT found])
4186         fi
4187     fi
4190 find_msvc()
4192     # Find Visual C++
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)"
4203         fi
4204     else
4205         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4206     fi
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`
4214         fi
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`
4219         fi
4220         if test -n "$vswhereoutput"; then
4221             PathFormat "$vswhereoutput"
4222             vctest=$formatted_path_unix
4223             break
4224         fi
4225     done
4227     if test -n "$vctest"; then
4228         vcnumwithdot="$ver"
4229         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4230             vcnumwithdot=$vcnumwithdot.0
4231         fi
4232         case "$vcnumwithdot" in
4233         16.0)
4234             vcyear=2019
4235             vctoolset=v142
4236             ;;
4237         17.0 | 17.9)
4238             vcyear=2022
4239             vctoolset=v143
4240             ;;
4241         esac
4242         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4244     fi
4247 test_cl_exe()
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])
4256             return 1
4257         else
4258             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4259         fi
4260     fi
4262     dnl ===========================================================
4263     dnl  Check for the corresponding mspdb*.dll
4264     dnl ===========================================================
4266     # MSVC 15.0 has libraries from 14.0?
4267     mspdbnum="140"
4269     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4270         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4271     fi
4273     # The compiles has to find its shared libraries
4274     OLD_PATH="$PATH"
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])
4280     fi
4282     PATH="$OLD_PATH"
4284     AC_MSG_RESULT([$CL_EXE_PATH])
4287 SOLARINC=
4288 MSBUILD_PATH=
4289 DEVENV=
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])
4296         else
4297             AC_MSG_ERROR([no Visual Studio installation found])
4298         fi
4299     fi
4300     AC_MSG_RESULT([])
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
4310             WIN_MULTI_ARCH=""
4311             WIN_OTHER_ARCH=""
4312         fi
4313     fi
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"
4318     fi
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"
4323     else
4324         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4325     fi
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])
4331     UCRTSDKDIR=
4332     UCRTVERSION=
4334     AC_MSG_CHECKING([for UCRT location])
4335     find_ucrt
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"
4357         else
4358             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4359         fi
4360     fi
4361     if test -d "$regvalue" ; then
4362         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4363         AC_MSG_RESULT([$regvalue])
4364     else
4365         AC_MSG_ERROR([MSBuild.exe location not found])
4366     fi
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])
4374     fi
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"`
4381     fi
4383     if test -z "$CC"; then
4384         CC=$MSVC_CXX
4385         CC_BASE=`first_arg_basename "$CC"`
4386     fi
4387     if test -z "$CXX"; then
4388         CXX=$MSVC_CXX
4389         CXX_BASE=`first_arg_basename "$CXX"`
4390     fi
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"`
4402         VCVER=$vcnumwithdot
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
4409         16.0 | 17.0 | 17.9)
4410             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4411             ;;
4412         esac
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
4419                 ;;
4420             *)
4421                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4422                 ;;
4423             esac
4424         fi
4426         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4427         ac_objext=obj
4428         ac_exeext=exe
4430     else
4431         AC_MSG_ERROR([Visual C++ not found after all, huh])
4432     fi
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:
4439         #if _MSC_VER < 1925
4440         #error
4441         #endif
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([[
4447         #if _MSC_VER < 1929
4448         #error
4449         #endif
4450     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4452     if test $vs2019_recommended_version = yes; then
4453         AC_MSG_RESULT([yes])
4454     else
4455         AC_MSG_WARN([no])
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."
4457     fi
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.
4466     BUILD_X64=
4467     CXX_X64_BINARY=
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"
4473         then
4474             BUILD_X64=TRUE
4475             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4476             AC_MSG_RESULT([found])
4477         else
4478             AC_MSG_RESULT([not found])
4479             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4480         fi
4481     elif test "$WIN_HOST_ARCH" = "x64"; then
4482         CXX_X64_BINARY=$CXX
4483     fi
4484     AC_SUBST(BUILD_X64)
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
4493     x64)
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
4496             BUILD_X86=TRUE
4497             AC_MSG_RESULT([preset])
4498         elif test -n "$WIN_MULTI_ARCH"; then
4499             BUILD_X86=TRUE
4500             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4501             AC_MSG_RESULT([found])
4502         else
4503             AC_MSG_RESULT([not found])
4504             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4505         fi
4506         ;;
4507     x86)
4508         BUILD_X86=TRUE
4509         CXX_X86_BINARY=$MSVC_CXX
4510         ;;
4511     esac
4512     AC_SUBST(BUILD_X86)
4513     AC_SUBST(CXX_X86_BINARY)
4515 AC_SUBST(VCVER)
4516 AC_SUBST(VCTOOLSET)
4517 AC_SUBST(DEVENV)
4518 AC_SUBST(MSVC_CXX)
4520 COM_IS_CLANG=
4521 AC_MSG_CHECKING([whether the compiler is actually Clang])
4522 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4523     #ifndef __clang__
4524     you lose
4525     #endif
4526     int foo=42;
4527     ]])],
4528     [AC_MSG_RESULT([yes])
4529      COM_IS_CLANG=TRUE],
4530     [AC_MSG_RESULT([no])])
4531 AC_SUBST(COM_IS_CLANG)
4533 CLANGVER=
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__
4538         #error
4539         #endif
4540         ]])],
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)])
4546     else
4547         if test "$_os" = WINNT; then
4548             dnl In which case, assume clang-cl:
4549             my_args="/EP /TC"
4550         else
4551             my_args="-E -P"
4552         fi
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)])
4559         else
4560             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4561         fi
4562         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4563         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4564     fi
4567 SHOWINCLUDES_PREFIX=
4568 if test "$_os" = WINNT; then
4569     dnl We need to guess the prefix of the -showIncludes output, it can be
4570     dnl localized
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])
4578     else
4579         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4580     fi
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])
4590     AC_LANG_PUSH([C])
4591     save_CFLAGS=$CFLAGS
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"
4596     fi
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])
4602     CFLAGS=$save_CFLAGS
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])
4606     else
4607         CC="$CCACHE $CC"
4608         CC_BASE="ccache $CC_BASE"
4609         AC_MSG_RESULT([no])
4610     fi
4611     AC_LANG_POP([C])
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
4617 # flags are set
4618 # ===================================================================
4620 HAVE_GCC_GGDB2=
4621 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4622     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4623     save_CFLAGS=$CFLAGS
4624     CFLAGS="$CFLAGS -Werror -ggdb2"
4625     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4626     CFLAGS=$save_CFLAGS
4627     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4628         AC_MSG_RESULT([yes])
4629     else
4630         AC_MSG_RESULT([no])
4631     fi
4633     if test "$host_cpu" = "m68k"; then
4634         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4635         save_CFLAGS=$CFLAGS
4636         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4637         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4638         CFLAGS=$save_CFLAGS
4639         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4640             AC_MSG_RESULT([yes])
4641         else
4642             AC_MSG_ERROR([no])
4643         fi
4644     fi
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])
4662     fi
4663 else
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).
4668     GCC_VERSION=
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])
4685     else
4686         with_system_cppunit=no
4687     fi
4688     if test "$with_system_graphite" = "yes"; then
4689         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4690     else
4691         with_system_graphite=no
4692     fi
4693     if test "$with_system_orcus" = "yes"; then
4694         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4695     else
4696         with_system_orcus=no
4697     fi
4698     if test "$with_system_libcmis" = "yes"; then
4699         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4700     else
4701         with_system_libcmis=no
4702     fi
4703     if test "$with_system_hunspell" = "yes"; then
4704         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4705     else
4706         with_system_hunspell=no
4707     fi
4708     if test "$with_system_gpgmepp" = "yes"; then
4709         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4710     else
4711         with_system_gpgmepp=no
4712     fi
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])
4720     else
4721         with_system_libnumbertext=no
4722     fi
4723     if test "$with_system_libwps" = "yes"; then
4724         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4725     else
4726         with_system_libwps=no
4727     fi
4728 else
4729     ENABLE_DBGUTIL=""
4730     MSVC_USE_DEBUG_RUNTIME=""
4731     AC_MSG_RESULT([no])
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])
4744     else
4745         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4746         enable_debug=yes
4747     fi
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
4752     ENABLE_DEBUG="TRUE"
4753     if test -n "$ENABLE_DBGUTIL" ; then
4754         AC_MSG_RESULT([yes (dbgutil)])
4755     else
4756         AC_MSG_RESULT([yes])
4757     fi
4758 else
4759     ENABLE_DEBUG=""
4760     AC_MSG_RESULT([no])
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 ===================================================================
4772 check_use_ld()
4774     use_ld=-fuse-ld=${1%%:*}
4775     use_ld_path=${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}"
4780             else
4781                 use_ld="-fuse-ld=${use_ld_path}"
4782             fi
4783         else
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!])
4789         fi
4790     fi
4791     use_ld_fail_if_error=$2
4792     use_ld_ok=
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([
4797 #include <stdio.h>
4798         ],[
4799 printf ("hello world\n");
4800         ])], USE_LD=$use_ld, [])
4801     if test -n "$USE_LD"; then
4802         AC_MSG_RESULT( yes )
4803         use_ld_ok=yes
4804     else
4805         if test -n "$use_ld_fail_if_error"; then
4806             AC_MSG_ERROR( no )
4807         else
4808             AC_MSG_RESULT( no )
4809         fi
4810     fi
4811     if test -n "$use_ld_ok"; then
4812         dnl keep the value of LDFLAGS
4813         return 0
4814     fi
4815     LDFLAGS="$use_ld_ldflags_save"
4816     return 1
4818 USE_LD=
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
4825             true
4826         elif test -n "$COM_IS_CLANG"; then
4827             check_use_ld lld
4828             if test $? -ne 0; then
4829                 check_use_ld gold
4830                 if test $? -ne 0; then
4831                     check_use_ld mold
4832                 fi
4833             fi
4834         else
4835             # For gcc first try gold, new versions also support lld/mold.
4836             check_use_ld gold
4837             if test $? -ne 0; then
4838                 check_use_ld lld
4839                 if test $? -ne 0; then
4840                     check_use_ld mold
4841                 fi
4842             fi
4843         fi
4844         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4845         rm conftest.out
4846         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4847         if test -z "$ld_used"; then
4848             ld_used="unknown"
4849         fi
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."
4856             fi
4857         fi
4858     else
4859         if test "$enable_ld" = "yes"; then
4860             AC_MSG_ERROR([--enable-ld not supported])
4861         fi
4862     fi
4864 AC_SUBST(USE_LD)
4865 AC_SUBST(LD)
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([
4873 #include <stdio.h>
4874         ],[
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 )
4879     else
4880         AC_MSG_RESULT( not found )
4881     fi
4882     LDFLAGS=$bsymbolic_functions_ldflags_save
4884 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4886 LD_GC_SECTIONS=
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([
4893 #include <stdio.h>
4894             ],[
4895 printf ("hello world\n");
4896             ])],[
4897             LD_GC_SECTIONS="-Wl,$flag"
4898             AC_MSG_RESULT( found )
4899             ], [
4900             AC_MSG_RESULT( not found )
4901             ])
4902         LDFLAGS=$ldflags_save
4903         if test -n "$LD_GC_SECTIONS"; then
4904             break
4905         fi
4906     done
4908 AC_SUBST(LD_GC_SECTIONS)
4910 HAVE_EXTERNAL_DWARF=
4911 if test "$enable_split_debug" != no; then
4912     use_split_debug=
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
4916         use_split_debug=1
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
4919         use_split_debug=1
4920     fi
4921     if test -n "$use_split_debug"; then
4922         if test "$_os" = "Emscripten"; then
4923             TEST_CC_FLAG=-gseparate-dwarf
4924         else
4925             TEST_CC_FLAG=-gsplit-dwarf
4926         fi
4927         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4928         save_CFLAGS=$CFLAGS
4929         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4930         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4931         CFLAGS=$save_CFLAGS
4932         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4933             AC_MSG_RESULT([yes])
4934         else
4935             if test "$enable_split_debug" = yes; then
4936                 AC_MSG_ERROR([no])
4937             else
4938                 AC_MSG_RESULT([no])
4939             fi
4940         fi
4941     fi
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."
4945     fi
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])
4951 save_CFLAGS=$CFLAGS
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 ],[])
4954 CFLAGS=$save_CFLAGS
4955 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4956     AC_MSG_RESULT([yes])
4957 else
4958     AC_MSG_RESULT([no])
4960 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4962 ENABLE_GDB_INDEX=
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])
4967         save_CFLAGS=$CFLAGS
4968         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4969         have_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])
4974             else
4975                 AC_MSG_RESULT( no )
4976             fi
4977         else
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([
4983 #include <stdio.h>
4984                 ],[
4985 printf ("hello world\n");
4986                 ])], ENABLE_GDB_INDEX=TRUE, [])
4987             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4988                 AC_MSG_RESULT( yes )
4989             else
4990                 if test "$enable_gdb_index" = "yes"; then
4991                     AC_MSG_ERROR( no )
4992                 else
4993                     AC_MSG_RESULT( no )
4994                 fi
4995             fi
4996             LDFLAGS=$ldflags_save
4997         fi
4998         CFLAGS=$save_CFLAGS
4999         fi
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."
5003     fi
5005 AC_SUBST(ENABLE_GDB_INDEX)
5007 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5008     enable_sal_log=yes
5010 if test "$enable_sal_log" = yes; then
5011     ENABLE_SAL_LOG=TRUE
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
5020         enable_symbols=yes
5021     else
5022         enable_symbols=no
5023     fi
5025 if test "$enable_symbols" = yes; then
5026     ENABLE_SYMBOLS_FOR=all
5027     AC_MSG_RESULT([yes])
5028 elif test "$enable_symbols" = no; then
5029     ENABLE_SYMBOLS_FOR=
5030     AC_MSG_RESULT([no])
5031 else
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])
5044     else
5045         AC_MSG_RESULT([yes])
5046     fi
5049 ENABLE_OPTIMIZED=
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
5054         enable_optimized=no
5055     else
5056         enable_optimized=yes
5057     fi
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)])
5065     HAVE_GCC_OG=
5066     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5067         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5068         save_CFLAGS=$CFLAGS
5069         CFLAGS="$CFLAGS -Werror -Og"
5070         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5071         CFLAGS=$save_CFLAGS
5072         if test "$HAVE_GCC_OG" = "TRUE"; then
5073             AC_MSG_RESULT([yes])
5074         else
5075             AC_MSG_RESULT([no])
5076         fi
5077     fi
5078     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5079         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5080     fi
5081 else
5082     AC_MSG_RESULT([no])
5084 AC_SUBST(ENABLE_OPTIMIZED)
5085 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5088 # determine CPUNAME, OS, ...
5090 case "$host_os" in
5092 cygwin*|wsl*)
5093     # Already handled
5094     ;;
5096 darwin*)
5097     COM=GCC
5098     OS=MACOSX
5099     RTL_OS=MacOSX
5100     P_SEP=:
5102     case "$host_cpu" in
5103     aarch64|arm64)
5104         if test "$enable_ios_simulator" = "yes"; then
5105             OS=iOS
5106         else
5107             CPUNAME=AARCH64
5108             RTL_ARCH=AARCH64
5109             PLATFORMID=macosx_aarch64
5110         fi
5111         ;;
5112     x86_64)
5113         if test "$enable_ios_simulator" = "yes"; then
5114             OS=iOS
5115         fi
5116         CPUNAME=X86_64
5117         RTL_ARCH=X86_64
5118         PLATFORMID=macosx_x86_64
5119         ;;
5120     *)
5121         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5122         ;;
5123     esac
5124     ;;
5126 ios*)
5127     COM=GCC
5128     OS=iOS
5129     RTL_OS=iOS
5130     P_SEP=:
5132     case "$host_cpu" in
5133     aarch64|arm64)
5134         if test "$enable_ios_simulator" = "yes"; then
5135             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5136         fi
5137         ;;
5138     *)
5139         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5140         ;;
5141     esac
5142     CPUNAME=AARCH64
5143     RTL_ARCH=AARCH64
5144     PLATFORMID=ios_arm64
5145     ;;
5147 dragonfly*)
5148     COM=GCC
5149     OS=DRAGONFLY
5150     RTL_OS=DragonFly
5151     P_SEP=:
5153     case "$host_cpu" in
5154     i*86)
5155         CPUNAME=INTEL
5156         RTL_ARCH=x86
5157         PLATFORMID=dragonfly_x86
5158         ;;
5159     x86_64)
5160         CPUNAME=X86_64
5161         RTL_ARCH=X86_64
5162         PLATFORMID=dragonfly_x86_64
5163         ;;
5164     *)
5165         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5166         ;;
5167     esac
5168     ;;
5170 freebsd*)
5171     COM=GCC
5172     RTL_OS=FreeBSD
5173     OS=FREEBSD
5174     P_SEP=:
5176     case "$host_cpu" in
5177     aarch64)
5178         CPUNAME=AARCH64
5179         PLATFORMID=freebsd_aarch64
5180         RTL_ARCH=AARCH64
5181         ;;
5182     i*86)
5183         CPUNAME=INTEL
5184         RTL_ARCH=x86
5185         PLATFORMID=freebsd_x86
5186         ;;
5187     x86_64|amd64)
5188         CPUNAME=X86_64
5189         RTL_ARCH=X86_64
5190         PLATFORMID=freebsd_x86_64
5191         ;;
5192     powerpc64)
5193         CPUNAME=POWERPC64
5194         RTL_ARCH=PowerPC_64
5195         PLATFORMID=freebsd_powerpc64
5196         ;;
5197     powerpc|powerpcspe)
5198         CPUNAME=POWERPC
5199         RTL_ARCH=PowerPC
5200         PLATFORMID=freebsd_powerpc
5201         ;;
5202     *)
5203         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5204         ;;
5205     esac
5206     ;;
5208 haiku*)
5209     COM=GCC
5210     GUIBASE=haiku
5211     RTL_OS=Haiku
5212     OS=HAIKU
5213     P_SEP=:
5215     case "$host_cpu" in
5216     i*86)
5217         CPUNAME=INTEL
5218         RTL_ARCH=x86
5219         PLATFORMID=haiku_x86
5220         ;;
5221     x86_64|amd64)
5222         CPUNAME=X86_64
5223         RTL_ARCH=X86_64
5224         PLATFORMID=haiku_x86_64
5225         ;;
5226     *)
5227         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5228         ;;
5229     esac
5230     ;;
5232 kfreebsd*)
5233     COM=GCC
5234     OS=LINUX
5235     RTL_OS=kFreeBSD
5236     P_SEP=:
5238     case "$host_cpu" in
5240     i*86)
5241         CPUNAME=INTEL
5242         RTL_ARCH=x86
5243         PLATFORMID=kfreebsd_x86
5244         ;;
5245     x86_64)
5246         CPUNAME=X86_64
5247         RTL_ARCH=X86_64
5248         PLATFORMID=kfreebsd_x86_64
5249         ;;
5250     *)
5251         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5252         ;;
5253     esac
5254     ;;
5256 linux-gnu*|linux-musl*)
5257     COM=GCC
5258     OS=LINUX
5259     RTL_OS=Linux
5260     P_SEP=:
5262     case "$host_cpu" in
5264     aarch64)
5265         CPUNAME=AARCH64
5266         PLATFORMID=linux_aarch64
5267         RTL_ARCH=AARCH64
5268         EPM_FLAGS="-a arm64"
5269         ;;
5270     alpha)
5271         CPUNAME=AXP
5272         RTL_ARCH=ALPHA
5273         PLATFORMID=linux_alpha
5274         ;;
5275     arm*)
5276         CPUNAME=ARM
5277         EPM_FLAGS="-a arm"
5278         RTL_ARCH=ARM_EABI
5279         PLATFORMID=linux_arm_eabi
5280         case "$host_cpu" in
5281         arm*-linux)
5282             RTL_ARCH=ARM_OABI
5283             PLATFORMID=linux_arm_oabi
5284             ;;
5285         esac
5286         ;;
5287     hppa)
5288         CPUNAME=HPPA
5289         RTL_ARCH=HPPA
5290         EPM_FLAGS="-a hppa"
5291         PLATFORMID=linux_hppa
5292         ;;
5293     i*86)
5294         CPUNAME=INTEL
5295         RTL_ARCH=x86
5296         PLATFORMID=linux_x86
5297         ;;
5298     ia64)
5299         CPUNAME=IA64
5300         RTL_ARCH=IA64
5301         PLATFORMID=linux_ia64
5302         ;;
5303     mips)
5304         CPUNAME=MIPS
5305         RTL_ARCH=MIPS_EB
5306         EPM_FLAGS="-a mips"
5307         PLATFORMID=linux_mips_eb
5308         ;;
5309     mips64)
5310         CPUNAME=MIPS64
5311         RTL_ARCH=MIPS64_EB
5312         EPM_FLAGS="-a mips64"
5313         PLATFORMID=linux_mips64_eb
5314         ;;
5315     mips64el)
5316         CPUNAME=MIPS64
5317         RTL_ARCH=MIPS64_EL
5318         EPM_FLAGS="-a mips64el"
5319         PLATFORMID=linux_mips64_el
5320         ;;
5321     mipsel)
5322         CPUNAME=MIPS
5323         RTL_ARCH=MIPS_EL
5324         EPM_FLAGS="-a mipsel"
5325         PLATFORMID=linux_mips_el
5326         ;;
5327     riscv64)
5328         CPUNAME=RISCV64
5329         RTL_ARCH=RISCV64
5330         EPM_FLAGS="-a riscv64"
5331         PLATFORMID=linux_riscv64
5332         ;;
5333     m68k)
5334         CPUNAME=M68K
5335         RTL_ARCH=M68K
5336         PLATFORMID=linux_m68k
5337         ;;
5338     powerpc)
5339         CPUNAME=POWERPC
5340         RTL_ARCH=PowerPC
5341         PLATFORMID=linux_powerpc
5342         ;;
5343     powerpc64)
5344         CPUNAME=POWERPC64
5345         RTL_ARCH=PowerPC_64
5346         PLATFORMID=linux_powerpc64
5347         ;;
5348     powerpc64le)
5349         CPUNAME=POWERPC64
5350         RTL_ARCH=PowerPC_64_LE
5351         PLATFORMID=linux_powerpc64_le
5352         ;;
5353     sparc)
5354         CPUNAME=SPARC
5355         RTL_ARCH=SPARC
5356         PLATFORMID=linux_sparc
5357         ;;
5358     sparc64)
5359         CPUNAME=SPARC64
5360         RTL_ARCH=SPARC64
5361         PLATFORMID=linux_sparc64
5362         ;;
5363     s390x)
5364         CPUNAME=S390X
5365         RTL_ARCH=S390x
5366         PLATFORMID=linux_s390x
5367         ;;
5368     x86_64)
5369         CPUNAME=X86_64
5370         RTL_ARCH=X86_64
5371         PLATFORMID=linux_x86_64
5372         ;;
5373     loongarch64)
5374         CPUNAME=LOONGARCH64
5375         RTL_ARCH=LOONGARCH64
5376         PLATFORMID=linux_loongarch64
5377         ;;
5378     *)
5379         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5380         ;;
5381     esac
5382     ;;
5384 linux-android*)
5385     COM=GCC
5386     OS=ANDROID
5387     RTL_OS=Android
5388     P_SEP=:
5390     case "$host_cpu" in
5392     arm|armel)
5393         CPUNAME=ARM
5394         RTL_ARCH=ARM_EABI
5395         PLATFORMID=android_arm_eabi
5396         ;;
5397     aarch64)
5398         CPUNAME=AARCH64
5399         RTL_ARCH=AARCH64
5400         PLATFORMID=android_aarch64
5401         ;;
5402     i*86)
5403         CPUNAME=INTEL
5404         RTL_ARCH=x86
5405         PLATFORMID=android_x86
5406         ;;
5407     x86_64)
5408         CPUNAME=X86_64
5409         RTL_ARCH=X86_64
5410         PLATFORMID=android_x86_64
5411         ;;
5412     *)
5413         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5414         ;;
5415     esac
5416     ;;
5418 *netbsd*)
5419     COM=GCC
5420     OS=NETBSD
5421     RTL_OS=NetBSD
5422     P_SEP=:
5424     case "$host_cpu" in
5425     i*86)
5426         CPUNAME=INTEL
5427         RTL_ARCH=x86
5428         PLATFORMID=netbsd_x86
5429         ;;
5430     powerpc)
5431         CPUNAME=POWERPC
5432         RTL_ARCH=PowerPC
5433         PLATFORMID=netbsd_powerpc
5434         ;;
5435     sparc)
5436         CPUNAME=SPARC
5437         RTL_ARCH=SPARC
5438         PLATFORMID=netbsd_sparc
5439         ;;
5440     x86_64)
5441         CPUNAME=X86_64
5442         RTL_ARCH=X86_64
5443         PLATFORMID=netbsd_x86_64
5444         ;;
5445     *)
5446         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5447         ;;
5448     esac
5449     ;;
5451 openbsd*)
5452     COM=GCC
5453     OS=OPENBSD
5454     RTL_OS=OpenBSD
5455     P_SEP=:
5457     case "$host_cpu" in
5458     i*86)
5459         CPUNAME=INTEL
5460         RTL_ARCH=x86
5461         PLATFORMID=openbsd_x86
5462         ;;
5463     x86_64)
5464         CPUNAME=X86_64
5465         RTL_ARCH=X86_64
5466         PLATFORMID=openbsd_x86_64
5467         ;;
5468     *)
5469         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5470         ;;
5471     esac
5472     SOLARINC="$SOLARINC -I/usr/local/include"
5473     ;;
5475 solaris*)
5476     COM=GCC
5477     OS=SOLARIS
5478     RTL_OS=Solaris
5479     P_SEP=:
5481     case "$host_cpu" in
5482     i*86)
5483         CPUNAME=INTEL
5484         RTL_ARCH=x86
5485         PLATFORMID=solaris_x86
5486         ;;
5487     sparc)
5488         CPUNAME=SPARC
5489         RTL_ARCH=SPARC
5490         PLATFORMID=solaris_sparc
5491         ;;
5492     sparc64)
5493         CPUNAME=SPARC64
5494         RTL_ARCH=SPARC64
5495         PLATFORMID=solaris_sparc64
5496         ;;
5497     *)
5498         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5499         ;;
5500     esac
5501     SOLARINC="$SOLARINC -I/usr/local/include"
5502     ;;
5504 emscripten*)
5505     COM=GCC
5506     OS=EMSCRIPTEN
5507     RTL_OS=Emscripten
5508     P_SEP=:
5510     case "$host_cpu" in
5511     wasm32|wasm64)
5512         ;;
5513     *)
5514         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5515         ;;
5516     esac
5517     CPUNAME=INTEL
5518     RTL_ARCH=x86
5519     PLATFORMID=linux_x86
5520     ;;
5523     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5524     ;;
5525 esac
5527 DISABLE_GUI=""
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.])
5531     fi
5532     USING_X11=
5533     DISABLE_GUI=TRUE
5534     test_epoxy=no
5535 else
5536     AC_DEFINE(HAVE_FEATURE_UI)
5538 AC_SUBST(DISABLE_GUI)
5540 if test "$with_x" = "no"; then
5541     USING_X11=
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)
5551     else
5552         disable_x11_tests
5553         if test "$DISABLE_DYNLOADING" = TRUE; then
5554             test_qt5=yes
5555         fi
5556     fi
5557 else
5558     if test "$USING_X11" = TRUE; then
5559         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5560     fi
5563 WORKDIR="${BUILDDIR}/workdir"
5564 INSTDIR="${BUILDDIR}/instdir"
5565 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5566 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5567 AC_SUBST(COM)
5568 AC_SUBST(CPUNAME)
5569 AC_SUBST(RTL_OS)
5570 AC_SUBST(RTL_ARCH)
5571 AC_SUBST(EPM_FLAGS)
5572 AC_SUBST(USING_X11)
5573 AC_SUBST([INSTDIR])
5574 AC_SUBST([INSTROOT])
5575 AC_SUBST([INSTROOTBASE])
5576 AC_SUBST(OS)
5577 AC_SUBST(P_SEP)
5578 AC_SUBST(WORKDIR)
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
5585     case "$CPUNAME" in
5586     INTEL) CPPU_ENV=msci ;;
5587     X86_64) CPPU_ENV=mscx ;;
5588     AARCH64) CPPU_ENV=msca ;;
5589     *)
5590         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5591         ;;
5592     esac
5593 else
5594     CPPU_ENV=gcc3
5596 AC_SUBST(CPPU_ENV)
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
5604         case "$i" in
5605         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5606             ;;
5607         *)
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
5616 dmg - macOS .dmg
5617 installed - installation tree
5618 msi - Windows .msi
5619         ])
5620             ;;
5621         esac
5622     done
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
5628             AC_MSG_ERROR(
5629                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5630         fi
5631     fi
5632     PKGFORMAT="$with_package_format"
5633     AC_MSG_RESULT([$PKGFORMAT])
5634 else
5635     PKGFORMAT=
5636     AC_MSG_RESULT([none])
5638 AC_SUBST(PKGFORMAT)
5640 dnl ===================================================================
5641 dnl handle help related options
5643 dnl If you change help related options, please update README.help
5644 dnl ===================================================================
5646 ENABLE_HTMLHELP=
5647 HELP_OMINDEX_PAGE=
5648 HELP_ONLINE=
5649 WITH_HELPPACKS=
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
5656     "html")
5657         ENABLE_HTMLHELP=TRUE
5658         WITH_HELPPACKS=TRUE
5659         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5660         AC_MSG_RESULT([HTML (local)])
5661         ;;
5662     "online")
5663         ENABLE_HTMLHELP=TRUE
5664         HELP_ONLINE=TRUE
5665         AC_MSG_RESULT([HTML (online)])
5666         ;;
5667     yes)
5668         WITH_HELPPACKS=TRUE
5669         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5670         AC_MSG_RESULT([XML (local)])
5671         ;;
5672     *)
5673         AC_MSG_ERROR([Unknown --with-help=$with_help])
5674         ;;
5675     esac
5676 else
5677     AC_MSG_RESULT([no])
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"
5683     test_clucene=yes
5684     AC_MSG_RESULT([yes])
5685 else
5686     AC_MSG_RESULT([no])
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])
5693     fi
5694     case "$with_omindex" in
5695     "server")
5696         HELP_OMINDEX_PAGE=TRUE
5697         AC_MSG_RESULT([SERVER])
5698         ;;
5699     "noxap")
5700         AC_MSG_RESULT([NOXAP])
5701         ;;
5702     *)
5703         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5704         ;;
5705     esac
5706 else
5707     AC_MSG_RESULT([no])
5710 AC_MSG_CHECKING([whether to include the XML-help support])
5711 if test "$enable_xmlhelp" = yes; then
5712     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5713     test_clucene=yes
5714     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5715     AC_MSG_RESULT([yes])
5716 else
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!"
5719     fi
5720     AC_MSG_RESULT([no])
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])
5727 else
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])
5746     echo
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 - \
5753         config.guess \
5754         bin/get_config_variables \
5755         solenv/bin/getcompver.awk \
5756         solenv/inc/langlist.mk \
5757         download.lst \
5758         config_host.mk.in \
5759         config_host_lang.mk.in \
5760         Makefile.in \
5761         bin/bffvalidator.sh.in \
5762         bin/odfvalidator.sh.in \
5763         bin/officeotron.sh.in \
5764         instsetoo_native/util/openoffice.lst.in \
5765         config_host/*.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 \
5771         ) \
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
5775     (
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"`
5785     fi
5786     if test -n "$CXX_FOR_BUILD"; then
5787         export CXX="$CXX_FOR_BUILD"
5788         CXX_BASE=`first_arg_basename "$CXX"`
5789     fi
5790     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5791     cd CONF-FOR-BUILD
5793     # Handle host configuration, which affects the cross-toolset too
5794     sub_conf_opts=""
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
5800         case "$_os" in
5801         Android)
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"
5804             ;;
5805         *)
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.])
5808             fi
5809             ;;
5810         esac
5811     else
5812         sub_conf_opts="$sub_conf_opts --without-java"
5813     fi
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}"
5828         else
5829             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5830         fi
5831     fi
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 \
5841         --disable-cups \
5842         --disable-customtarget-components \
5843         --disable-firebird-sdbc \
5844         --disable-gpgmepp \
5845         --disable-gstreamer-1-0 \
5846         --disable-gtk3 \
5847         --disable-gtk4 \
5848         --disable-libcmis \
5849         --disable-mariadb-sdbc \
5850         --disable-nss \
5851         --disable-online-update \
5852         --disable-opencl \
5853         --disable-openssl \
5854         --disable-pdfimport \
5855         --disable-postgresql-sdbc \
5856         --disable-skia \
5857         --disable-xmlhelp \
5858         --enable-dynamic-loading \
5859         --enable-icecream="$enable_icecream" \
5860         --without-doxygen \
5861         --without-tls \
5862         --without-webdav \
5863         --without-x \
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'" \
5871         $sub_conf_opts \
5872         $with_build_platform_configure_options \
5873         --srcdir=$srcdir
5875     ./configure \
5876         $sub_conf_defaults \
5877         --with-parallelism="$with_parallelism" \
5878         --with-theme="$with_theme" \
5879         "--with-vendor=$with_vendor" \
5880         $sub_conf_opts \
5881         $with_build_platform_configure_options \
5882         --srcdir=$srcdir \
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])
5886     fi
5888     # filter permitted build targets
5889     PERMITTED_BUILD_TARGETS="
5890         ARGON2
5891         AVMEDIA
5892         BOOST
5893         BZIP2
5894         CAIRO
5895         CLUCENE
5896         CURL
5897         DBCONNECTIVITY
5898         DESKTOP
5899         DRAGONBOX
5900         DYNLOADING
5901         EPOXY
5902         EXPAT
5903         FROZEN
5904         GLM
5905         GRAPHITE
5906         HARFBUZZ
5907         HELPTOOLS
5908         ICU
5909         LCMS2
5910         LIBJPEG_TURBO
5911         LIBLANGTAG
5912         LibO
5913         LIBFFI
5914         LIBPN
5915         LIBTIFF
5916         LIBWEBP
5917         LIBXML2
5918         LIBXSLT
5919         MDDS
5920         NATIVE
5921         OPENSSL
5922         ORCUS
5923         PYTHON
5924         SCRIPTING
5925         ZLIB
5926         ZXCVBN
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="
5944         CC
5945         CPPU_ENV
5946         CXX
5947         ILIB
5948         JAVA_HOME
5949         JAVAIFLAGS
5950         JDK
5951         JDK_SECURITYMANAGER_DISALLOWED
5952         LIBO_BIN_FOLDER
5953         LIBO_LIB_FOLDER
5954         LIBO_URE_LIB_FOLDER
5955         LIBO_URE_MISC_FOLDER
5956         OS
5957         SDKDIRNAME
5958         SYSTEM_LIBXML
5959         SYSTEM_LIBXSLT
5961     # these overwrite host config with build config
5962     OVERWRITING_SETTINGS="
5963         ANT
5964         ANT_HOME
5965         ANT_LIB
5966         JAVA_SOURCE_VER
5967         JAVA_TARGET_VER
5968         JAVACFLAGS
5969         JAVACOMPILER
5970         JAVADOC
5971         JAVADOCISGJDOC
5972         LOCKFILE
5973         SYSTEM_GENBRK
5974         SYSTEM_GENCCODE
5975         SYSTEM_GENCMN
5977     # these need some special handling
5978     EXTRA_HANDLED_SETTINGS="
5979         INSTDIR
5980         INSTROOT
5981         PATH
5982         WORKDIR
5984     OLD_PATH=$PATH
5985     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5986     BUILD_PATH=$PATH
5987     PATH=$OLD_PATH
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
5993         VV='$'$V
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
5998         fi
5999     done
6001     for V in $OVERWRITING_SETTINGS; do
6002         VV='$'$V
6003         VV=`eval "echo $VV"`
6004         if test -n "$VV"; then
6005             line=${V}='${'${V}:-$VV'}'
6006             echo "$line" >>build-config
6007         fi
6008     done
6010     for V in INSTDIR INSTROOT WORKDIR; do
6011         VV='$'$V
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
6017         fi
6018     done
6020     )
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
6031 else
6032     OS_FOR_BUILD="$OS"
6033     CC_FOR_BUILD="$CC"
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
6066     yes)
6067         AC_MSG_RESULT([external])
6068         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6069         ;;
6070     no)
6071         AC_MSG_RESULT([internal])
6072         ;;
6073     *)
6074         if test -x "$with_system_lockfile"; then
6075             LOCKFILE="$with_system_lockfile"
6076         else
6077             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6078         fi
6079         AC_MSG_RESULT([$with_system_lockfile])
6080         ;;
6081     esac
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])
6090 AC_SUBST(LOCKFILE)
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])
6104 else
6105     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6106         ENABLE_WERROR="TRUE"
6107         PYTHONWARNINGS="error"
6108         AC_MSG_RESULT([yes])
6109     else
6110         AC_MSG_RESULT([no])
6111     fi
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
6122    else
6123        enable_assert_always_abort=no
6124    fi
6126 if test "$enable_assert_always_abort" = "yes"; then
6127     ASSERT_ALWAYS_ABORT="TRUE"
6128     AC_MSG_RESULT([yes])
6129 else
6130     ASSERT_ALWAYS_ABORT="FALSE"
6131     AC_MSG_RESULT([no])
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
6141             enable_ooenv=yes
6142         else
6143             enable_ooenv=no
6144         fi
6145     fi
6146     if test "$enable_ooenv" = "no"; then
6147         AC_MSG_RESULT([no])
6148     else
6149         ENABLE_OOENV="TRUE"
6150         AC_MSG_RESULT([yes])
6151     fi
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])
6158     else
6159         enable_qt5=yes
6160     fi
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])
6166     else
6167         enable_qt6=yes
6168     fi
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])
6175     ENABLE_PAGEIN=TRUE
6176     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6177 else
6178     AC_MSG_RESULT([no])
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
6188     ENABLE_CUPS=TRUE
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.])
6196     fi
6197 else
6198     AC_MSG_RESULT([no])
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`"
6210    else
6211        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6212    fi
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"
6218     fi
6219     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6220 else
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"
6232     else
6233         AC_MSG_RESULT([yes, if we use them])
6234         DO_FETCH_TARBALLS="TRUE"
6235     fi
6236 else
6237     AC_MSG_RESULT([no])
6238     DO_FETCH_TARBALLS=
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"
6250 else
6251     AC_MSG_RESULT([no])
6252     WITH_MYSPELL_DICTS=
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]);
6260     fi
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])
6267     SYSTEM_DICTS=TRUE
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
6271     else
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
6275         fi
6276     fi
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
6281     else
6282         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6283     fi
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
6288     else
6289         THES_SYSTEM_DIR=file:///usr/share/mythes
6290     fi
6291     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6292 else
6293     AC_MSG_RESULT([no])
6294     SYSTEM_DICTS=
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.
6303 ENABLE_PCH=""
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.
6308         enable_pch=yes
6309         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6310         if test -z "$enable_ccache" -a "$SCCACHE"; then
6311             CCACHE=""
6312         fi
6313     else
6314         enable_pch=no
6315     fi
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
6324     ENABLE_PCH="1"
6325     AC_MSG_RESULT([yes (system headers)])
6326 elif test "$enable_pch" = "base"; then
6327     ENABLE_PCH="2"
6328     AC_MSG_RESULT([yes (system and base headers)])
6329 elif test "$enable_pch" = "normal"; then
6330     ENABLE_PCH="3"
6331     AC_MSG_RESULT([yes (normal)])
6332 elif test "$enable_pch" = "full"; then
6333     ENABLE_PCH="4"
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.
6340         ENABLE_PCH="2"
6341         AC_MSG_RESULT([yes (system and base headers)])
6342     else
6343         # With MSVC the highest level makes a significant difference,
6344         # and it was the default when there used to be no PCH levels.
6345         ENABLE_PCH="4"
6346         AC_MSG_RESULT([yes (full)])
6347     fi
6348 elif test "$enable_pch" = "no"; then
6349     AC_MSG_RESULT([no])
6350 else
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])
6365         else
6366             AC_MSG_RESULT([no (not newer than 3.7.1)])
6367             CCACHE_DEPEND_MODE=
6368         fi
6369     fi
6372 PCH_INSTANTIATE_TEMPLATES=
6373 if test -n "$ENABLE_PCH"; then
6374     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6375     save_CFLAGS=$CFLAGS
6376     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6377     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6378     CFLAGS=$save_CFLAGS
6379     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6380         AC_MSG_RESULT(yes)
6381     else
6382         AC_MSG_RESULT(no)
6383     fi
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])
6390     save_CFLAGS=$CFLAGS
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" ],[])
6393     CFLAGS=$save_CFLAGS
6394     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6395         AC_MSG_RESULT(yes)
6396     else
6397         AC_MSG_RESULT(no)
6398     fi
6400 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6402 PCH_CODEGEN=
6403 PCH_NO_CODEGEN=
6404 fpch_prefix=
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])
6410     save_CFLAGS=$CFLAGS
6411     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6412     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6413         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6414     CFLAGS=$save_CFLAGS
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" ],[])
6418     CFLAGS=$save_CFLAGS
6419     if test -n "$PCH_CODEGEN"; then
6420         AC_MSG_RESULT(yes)
6421     else
6422         AC_MSG_RESULT(no)
6423     fi
6425 AC_SUBST(PCH_CODEGEN)
6426 AC_SUBST(PCH_NO_CODEGEN)
6427 PCH_DEBUGINFO=
6428 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6429     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6430     save_CFLAGS=$CFLAGS
6431     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6432     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6433     CFLAGS=$save_CFLAGS
6434     if test -n "$PCH_DEBUGINFO"; then
6435         AC_MSG_RESULT(yes)
6436     else
6437         AC_MSG_RESULT(no)
6438     fi
6440 AC_SUBST(PCH_DEBUGINFO)
6442 TAB=`printf '\t'`
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])
6449 else
6450     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6453 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6454 STALE_MAKE=
6455 if test "$_make_ver_check" = ""; then
6456    STALE_MAKE=TRUE
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
6466         hash_styles=
6467     else
6468         hash_styles="$with_linker_hash_style"
6469     fi
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(
6477             [
6478 #include <stdio.h>
6479             ],[
6480 printf ("");
6481             ])],
6482             [
6483                   HAVE_LD_HASH_STYLE=TRUE
6484                   WITH_LINKER_HASH_STYLE=$hash_style
6485             ],
6486             [HAVE_LD_HASH_STYLE=FALSE],
6487             [HAVE_LD_HASH_STYLE=FALSE])
6488         LDFLAGS=$hash_style_ldflags_save
6489     done
6491     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6492         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6493     else
6494         AC_MSG_RESULT( no )
6495     fi
6496     LDFLAGS=$hash_style_ldflags_save
6497 else
6498     AC_MSG_RESULT( no )
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)
6508 else
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
6512         PERL=$_perl_path
6513     else
6514         AC_MSG_ERROR([$_perl_path not found])
6515     fi
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($]);"
6525     _perl_version=$?
6526     if test "$_perl_version" -lt 5; then
6527         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6528     fi
6529     AC_MSG_RESULT([Perl $_perl_version])
6530 else
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
6543             case "$i" in
6544             msi)
6545                 # for getting fonts versions to use in MSI
6546                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6547                 ;;
6548             esac
6549         done
6550     fi
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])
6561 else
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"
6568             fi
6569         fi
6570     done
6571     AC_MSG_ERROR([
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
6580     PKG_PROG_PKG_CONFIG
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.
6592     toolprefix=gcc
6593     if test "$COM_IS_CLANG" = "TRUE"; then
6594         toolprefix=llvm
6595     fi
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)
6603 AC_SUBST(AR)
6604 AC_SUBST(NM)
6605 AC_SUBST(OBJDUMP)
6606 AC_SUBST(RANLIB)
6607 AC_SUBST(READELF)
6608 AC_SUBST(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])
6619         else
6620             if test "$enable_bogus_pkg_config" = "yes"; then
6621                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6622             else
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.])
6624             fi
6625         fi
6626     else
6627         AC_MSG_RESULT([no, good])
6628     fi
6631 find_csc()
6633     # Return value: $csctest
6635     unset csctest
6637     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6638     if test -n "$regvalue"; then
6639         csctest=$regvalue
6640         return
6641     fi
6644 find_al()
6646     # Return value: $altest
6648     unset 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
6655             altest=$regvalue
6656             return
6657         fi
6658     done
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
6665             altest=$regvalue
6666             return
6667         fi
6668     done
6671 find_dotnetsdk()
6673     unset frametest
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
6678             frametest=$regvalue
6679             return
6680         fi
6681     done
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
6692     case "$1" in
6693     8.0|8.0A)
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
6698             return
6699         fi
6700         ;;
6701     8.1|8.1A)
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
6706             return
6707         fi
6708         ;;
6709     10.0)
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])
6725                    fi
6726                 else
6727                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6728                 fi
6729             fi
6730             return
6731         fi
6732         ;;
6733     esac
6736 find_winsdk()
6738     # Return value: From find_winsdk_version
6740     unset winsdktest
6742     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6743         find_winsdk_version $ver
6744         if test -n "$winsdktest"; then
6745             return
6746         fi
6747     done
6750 find_msms()
6752     # Return value: $msmdir
6753     local version="$1"
6755     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6756     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6757     local my_msm_dir
6759     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6761     msmdir=
6762     case "$VCVER" in
6763     16.0 | 17.0 | 17.9)
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
6768                 msmdir=$my_msm_dir
6769             fi
6770         done
6771         ;;
6772     esac
6774     if test -n "$msmdir"; then
6775         msmdir=`cygpath -m "$msmdir"`
6776         AC_MSG_RESULT([$msmdir])
6777     else
6778         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6779             AC_MSG_FAILURE([not found])
6780         else
6781             AC_MSG_WARN([not found (check config.log)])
6782             add_warning "MSM ${my_msm_file} not found"
6783         fi
6784     fi
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"
6798     case "$VCVER" in
6799     16.0 | 17.0 | 17.9)
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"
6805                 fi
6806             done
6807         done
6808         ;;
6809     esac
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])
6816         fi
6817     done
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
6827         find_winsdk
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"`
6834         fi
6836         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6837     fi
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
6855         else
6856             have_windows_sdk_headers=no
6857         fi
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
6863         else
6864             have_windows_sdk_libs=no
6865         fi
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.])
6870         fi
6871     fi
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)])
6884     else
6885         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6886     fi
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"
6896         fi
6897     fi
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
6905     dnl msiglobal.pm:
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")
6912         fi
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")
6916         fi
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")
6920         fi
6921     fi
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])
6928                     fi
6929                 fi
6930             done
6931         fi
6932     fi
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])
6945     find_winsdk
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"
6951     then
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
6960     fi
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?])
6964     else
6965         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6966     fi
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 :
6983     else
6984         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6985     fi
6987     dnl Check csc.exe
6988     AC_MSG_CHECKING([for csc.exe])
6989     find_csc
6990     PathFormat "$csctest"
6991     csctest_unix="$formatted_path_unix"
6992     if test -f "$csctest_unix/csc.exe"; then
6993         CSC_PATH="$csctest"
6994     fi
6995     if test ! -f "$csctest_unix/csc.exe"; then
6996         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6997     else
6998         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6999     fi
7001     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
7003     dnl Check al.exe
7004     AC_MSG_CHECKING([for al.exe])
7005     if test -n "$winsdkbinsubdir" \
7006         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7007     then
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"
7013     fi
7015     if test -z "$AL_PATH"; then
7016         find_al
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
7022             AL_PATH="$altest"
7023         fi
7024     fi
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])
7028     else
7029         AC_MSG_RESULT([$AL_PATH/al.exe])
7030     fi
7032     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7034     dnl Check mscoree.lib / .NET Framework dir
7035     AC_MSG_CHECKING(.NET Framework)
7036     find_dotnetsdk
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"
7041     else
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"
7044         fi
7045     fi
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])
7049     fi
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
7072     AC_PROG_CXX
7073     CXXFLAGS=$save_CXXFLAGS
7074     if test -z "$CXX_BASE"; then
7075         CXX_BASE=`first_arg_basename "$CXX"`
7076     fi
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.])
7088     else
7089         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7090     fi
7092     dnl see https://issuetracker.google.com/issues/36962819
7093         glibcxx_threads=no
7094         AC_LANG_PUSH([C++])
7095         AC_REQUIRE_CPP
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)
7102             choke me
7103             #endif
7104         ]])],[AC_MSG_RESULT([yes])
7105         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7106         AC_LANG_POP([C++])
7107         if test $glibcxx_threads = yes; then
7108             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7109         fi
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])
7118     AC_LANG_PUSH([C++])
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"
7124     fi
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])
7132     else
7133         CXX="$CCACHE $CXX"
7134         CXX_BASE="ccache $CXX_BASE"
7135         AC_MSG_RESULT([no])
7136     fi
7137     CXXFLAGS=$save_CXXFLAGS
7138     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7139     AC_LANG_POP([C++])
7142 dnl ===================================================================
7143 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7144 dnl ===================================================================
7146 if test "$_os" != "WINNT"; then
7147     AC_PROG_CXXCPP
7149     dnl Check whether there's a C pre-processor.
7150     AC_PROG_CPP
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],
7178         [
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>])
7183         ],
7184         [
7185             case "$_os-$host_cpu" in
7186             Linux-i686)
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
7191                 ;;
7192             Linux-x86_64)
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
7197                 ;;
7198             *)
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.])
7204                 fi
7205                 ;;
7206             esac
7207         ])
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
7215     else
7216         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7217     fi
7219     dnl Check for large file support
7220     AC_SYS_LARGEFILE
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"
7225     fi
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"
7228     fi
7229 else
7230     # Hardcode for MSVC
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
7237         SIZEOF_SIZE_T=4
7238     else
7239         SAL_TYPES_SIZEOFPOINTER=8
7240         SIZEOF_SIZE_T=8
7241     fi
7242     SAL_TYPES_ALIGNMENT2=2
7243     SAL_TYPES_ALIGNMENT4=4
7244     SAL_TYPES_ALIGNMENT8=8
7245     LFS_CFLAGS=''
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)
7266     else
7267         AC_MSG_RESULT([no])
7268     fi
7269 else
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)
7275     else
7276         AC_MSG_RESULT([no])
7277     fi
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
7287     for i in $CC; do
7288         case $i in
7289         -fsanitize=*)
7290             enable_runtime_optimizations=no
7291             break
7292             ;;
7293         esac
7294     done
7296 if test "$enable_runtime_optimizations" != no; then
7297     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7298     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7299     AC_MSG_RESULT([yes])
7300 else
7301     AC_MSG_RESULT([no])
7303 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7305 dnl ===================================================================
7306 dnl Check if valgrind headers are available
7307 dnl ===================================================================
7308 ENABLE_VALGRIND=
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])
7322     fi
7323     VALGRIND_CFLAGS=
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])
7338     AC_LANG_PUSH([C++])
7339     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7340     #include <sys/sdt.h>
7341     class ProbeClass
7342     {
7343     private:
7344       int& ref;
7345       const char *name;
7347     public:
7348       ProbeClass(int& v, const char *n) : ref(v), name(n)
7349       {
7350         DTRACE_PROBE2(_test_, cons, name, ref);
7351       }
7353       void method(int min)
7354       {
7355         DTRACE_PROBE3(_test_, meth, name, ref, min);
7356         ref -= min;
7357       }
7359       ~ProbeClass()
7360       {
7361         DTRACE_PROBE2(_test_, dest, name, ref);
7362       }
7363     };
7364     ]],[[
7365     int i = 64;
7366     DTRACE_PROBE1(_test_, call, i);
7367     ProbeClass inst = ProbeClass(i, "call");
7368     inst.method(24);
7369     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7370           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7371     AC_LANG_POP([C++])
7373 AC_CONFIG_HEADERS([config_host/config_probes.h])
7375 dnl ===================================================================
7376 dnl GCC features
7377 dnl ===================================================================
7378 HAVE_GCC_STACK_CLASH_PROTECTION=
7379 HARDENING_CFLAGS=
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])
7383     save_CFLAGS=$CFLAGS
7384     CFLAGS="$CFLAGS -Werror -grecord-gcc-switches"
7385     AC_LINK_IFELSE(
7386         [AC_LANG_PROGRAM(, [[return 0;]])],
7387         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -grecord-gcc-switches"],
7388         [AC_MSG_RESULT([no])])
7389     CFLAGS=$save_CFLAGS
7391     AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
7392     save_CFLAGS=$CFLAGS
7393     CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
7394     if test "$ENABLE_OPTIMIZED" = TRUE; then
7395         CFLAGS="$CFLAGS -O2"
7396     fi
7397     AC_LINK_IFELSE(
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])])
7401     CFLAGS=$save_CFLAGS
7403     AC_MSG_CHECKING([whether $CC_BASE supports -D_GLIBCXX_ASSERTIONS])
7404     save_CFLAGS=$CFLAGS
7405     CFLAGS="$CFLAGS -Werror -Wp,-D_GLIBCXX_ASSERTIONS"
7406     AC_LINK_IFELSE(
7407         [AC_LANG_PROGRAM(, [[return 0;]])],
7408         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"],
7409         [AC_MSG_RESULT([no])])
7410     CFLAGS=$save_CFLAGS
7412     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7413     save_CFLAGS=$CFLAGS
7414     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7415     AC_LINK_IFELSE(
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])])
7419     CFLAGS=$save_CFLAGS
7421     AC_MSG_CHECKING([whether $CC_BASE supports -fcf-protection])
7422     save_CFLAGS=$CFLAGS
7423     CFLAGS="$CFLAGS -Werror -fcf-protection"
7424     AC_LINK_IFELSE(
7425         [AC_LANG_PROGRAM(, [[return 0;]])],
7426         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -fcf-protection"],
7427         [AC_MSG_RESULT([no])])
7428     CFLAGS=$save_CFLAGS
7430     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7431     save_CFLAGS=$CFLAGS
7432     CFLAGS="$CFLAGS -Werror -mno-avx"
7433     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7434     CFLAGS=$save_CFLAGS
7435     if test "$HAVE_GCC_AVX" = "TRUE"; then
7436         AC_MSG_RESULT([yes])
7437     else
7438         AC_MSG_RESULT([no])
7439     fi
7441     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7442     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7443     int v = 0;
7444     if (__sync_add_and_fetch(&v, 1) != 1 ||
7445         __sync_sub_and_fetch(&v, 1) != 0)
7446         return 1;
7447     __sync_synchronize();
7448     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7449         v != 1)
7450         return 1;
7451     return 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)
7456     else
7457         AC_MSG_RESULT([no])
7458     fi
7460     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7461     AC_LANG_PUSH([C++])
7462     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7463             #include <cstddef>
7464             #include <cxxabi.h>
7465             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7466         ])], [
7467             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7468             AC_MSG_RESULT([yes])
7469         ], [AC_MSG_RESULT([no])])
7470     AC_LANG_POP([C++])
7472     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7473     AC_LANG_PUSH([C++])
7474     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7475             #include <cstddef>
7476             #include <cxxabi.h>
7477             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7478         ])], [
7479             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7480             AC_MSG_RESULT([yes])
7481         ], [AC_MSG_RESULT([no])])
7482     AC_LANG_POP([C++])
7484     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7485     AC_LANG_PUSH([C++])
7486     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7487             #include <cxxabi.h>
7488             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7489         ])], [
7490             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7491             AC_MSG_RESULT([yes])
7492         ], [AC_MSG_RESULT([no])])
7493     AC_LANG_POP([C++])
7495     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7496     AC_LANG_PUSH([C++])
7497     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7498             #include <cstddef>
7499             #include <cxxabi.h>
7500             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7501         ])], [
7502             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7503             AC_MSG_RESULT([yes])
7504         ], [AC_MSG_RESULT([no])])
7505     AC_LANG_POP([C++])
7507     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7508     AC_LANG_PUSH([C++])
7509     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7510             #include <cstddef>
7511             #include <cxxabi.h>
7512             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7513         ])], [
7514             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7515             AC_MSG_RESULT([yes])
7516         ], [AC_MSG_RESULT([no])])
7517     AC_LANG_POP([C++])
7519     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7520     AC_LANG_PUSH([C++])
7521     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7522             #include <cxxabi.h>
7523             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7524         ])], [
7525             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7526             AC_MSG_RESULT([yes])
7527         ], [AC_MSG_RESULT([no])])
7528     AC_LANG_POP([C++])
7530     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7531     AC_LANG_PUSH([C++])
7532     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7533             #include <cxxabi.h>
7534             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7535         ])], [
7536             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7537             AC_MSG_RESULT([yes])
7538         ], [AC_MSG_RESULT([no])])
7539     AC_LANG_POP([C++])
7541     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7542     AC_LANG_PUSH([C++])
7543     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7544             #include <cxxabi.h>
7545             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7546         ])], [
7547             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7548             AC_MSG_RESULT([yes])
7549         ], [AC_MSG_RESULT([no])])
7550     AC_LANG_POP([C++])
7552     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7553     AC_LANG_PUSH([C++])
7554     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7555             #include <cstddef>
7556             #include <cxxabi.h>
7557             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7558         ])], [
7559             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7560             AC_MSG_RESULT([yes])
7561         ], [AC_MSG_RESULT([no])])
7562     AC_LANG_POP([C++])
7564     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7565     AC_LANG_PUSH([C++])
7566     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7567             #include <cstddef>
7568             #include <cxxabi.h>
7569             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7570         ])], [
7571             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7572             AC_MSG_RESULT([yes])
7573         ], [AC_MSG_RESULT([no])])
7574     AC_LANG_POP([C++])
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])
7588 HAVE_LIBSTDCPP=
7589 HAVE_LIBCPP=
7590 AC_LANG_PUSH([C++])
7591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7592 #include <utility>
7593 #ifndef __GLIBCXX__
7594 foo bar
7595 #endif
7596 ]])],
7597     [CPP_LIBRARY=GLIBCXX
7598      cpp_library_name="GNU libstdc++"
7599      HAVE_LIBSTDCPP=TRUE
7600     ],
7601     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7602 #include <utility>
7603 #ifndef _LIBCPP_VERSION
7604 foo bar
7605 #endif
7606 ]])],
7607     [CPP_LIBRARY=LIBCPP
7608      cpp_library_name="LLVM libc++"
7609      AC_DEFINE([HAVE_LIBCPP])
7610      HAVE_LIBCPP=TRUE
7611     ],
7612     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7613 #include <utility>
7614 #ifndef _MSC_VER
7615 foo bar
7616 #endif
7617 ]])],
7618     [CPP_LIBRARY=MSVCRT
7619      cpp_library_name="Microsoft"
7620     ],
7621     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7622 AC_MSG_RESULT([$cpp_library_name])
7623 AC_LANG_POP([C++])
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"
7628 then
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
7637     # if needed.
7638     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7639     AC_LANG_PUSH([C++])
7640     libcpp_debug_links=
7641     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7642 #define _LIBCPP_DEBUG 0 // only assertions
7643 #include <vector>
7644 int main()
7646     std::vector<int> v;
7647     v.push_back( 1 );
7648     return v[ 3 ];
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
7655 #include <string>
7656 #include <vector>
7657 int foo(const std::vector<int>& v) { return *v.begin(); }
7658 int main()
7660     std::vector<int> v;
7661     v.push_back( 1 );
7662     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7663     return (foo(v) + s.size()) != 0 ? 0 : 1;
7665 ]])],
7666         [AC_MSG_RESULT(yes)
7667          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7668         ],
7669         [AC_MSG_RESULT(no, using only assertions)
7670          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7671         ]
7672         )
7673     else
7674         AC_MSG_RESULT(no)
7675     fi
7676     AC_LANG_POP([C++])
7678 AC_SUBST([LIBCPP_DEBUG])
7680 dnl ===================================================================
7681 dnl Check for gperf
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)])
7696 else
7697     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7699 AC_SUBST(GPERF)
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 ===================================================================
7707 dnl C++11
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
7715         else
7716             CXXFLAGS_CXX11=-std:c++20
7717         fi
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"
7723         fi
7724         for flag in $my_flags; do
7725             if test "$COM" = MSC; then
7726                 flag="-Xclang $flag"
7727             fi
7728             save_CXXFLAGS=$CXXFLAGS
7729             CXXFLAGS="$CXXFLAGS $flag -Werror"
7730             AC_LANG_PUSH([C++])
7731             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7732                 #include <algorithm>
7733                 #include <functional>
7734                 #include <vector>
7736                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7737                     std::sort(v.begin(), v.end(), fn);
7738                 }
7739                 ]])],[CXXFLAGS_CXX11=$flag])
7740             AC_LANG_POP([C++])
7741             CXXFLAGS=$save_CXXFLAGS
7742             if test -n "$CXXFLAGS_CXX11"; then
7743                 break
7744             fi
7745         done
7746     fi
7747     if test -n "$CXXFLAGS_CXX11"; then
7748         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7749     else
7750         AC_MSG_ERROR(no)
7751     fi
7753 AC_SUBST(CXXFLAGS_CXX11)
7755 if test "$GCC" = "yes"; then
7756     save_CXXFLAGS=$CXXFLAGS
7757     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7758     CHECK_L_ATOMIC
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"
7766 AC_LANG_PUSH([C++])
7768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7769 #include <stddef.h>
7771 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7773 namespace
7775         struct b
7776         {
7777                 int i;
7778                 int j;
7779         };
7781 ]], [[
7782 struct a
7784         int i;
7785         int j;
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)])
7795 AC_LANG_POP([C++])
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])
7801     AC_LANG_PUSH([C++])
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
7806     AC_LANG_POP([C++])
7807     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7808         AC_MSG_RESULT([yes])
7809     else
7810         AC_MSG_RESULT([no])
7811     fi
7813 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7815 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7816 AC_LANG_PUSH([C++])
7817 save_CXXFLAGS=$CXXFLAGS
7818 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7819 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7820         #include <algorithm>
7821         #include <initializer_list>
7822         #include <vector>
7823         template<typename T> class S {
7824         private:
7825             std::vector<T> v_;
7826         public:
7827             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7828         };
7829         constinit S<int> s{3, 2, 1};
7830     ])], [
7831         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7832         AC_MSG_RESULT([yes])
7833     ], [AC_MSG_RESULT([no])])
7834 CXXFLAGS=$save_CXXFLAGS
7835 AC_LANG_POP([C++])
7837 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7838 AC_LANG_PUSH([C++])
7839 save_CXXFLAGS=$CXXFLAGS
7840 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7841 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7842         struct S1 { S1(S1 &&); };
7843         struct S2: S1 {};
7844         S1 f(S2 s) { return s; }
7845     ])], [
7846         AC_DEFINE([HAVE_P1155R3],[1])
7847         AC_MSG_RESULT([yes])
7848     ], [AC_MSG_RESULT([no])])
7849 CXXFLAGS=$save_CXXFLAGS
7850 AC_LANG_POP([C++])
7852 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7853 HAVE_CXX20_ATOMIC_REF=
7854 AC_LANG_PUSH([C++])
7855 save_CXXFLAGS=$CXXFLAGS
7856 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7857 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7858         #include <atomic>
7859         int x;
7860         std::atomic_ref<int> y(x);
7861     ])], [
7862         HAVE_CXX20_ATOMIC_REF=TRUE
7863         AC_MSG_RESULT([yes])
7864     ], [AC_MSG_RESULT([no])])
7865 CXXFLAGS=$save_CXXFLAGS
7866 AC_LANG_POP([C++])
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])
7874     AC_LANG_PUSH([C++])
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
7882     AC_LANG_POP([C++])
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
7889 dnl   OString f();
7890 dnl   boost::optional<OString> * g(bool b) {
7891 dnl       boost::optional<OString> o;
7892 dnl       if (b) o = f();
7893 dnl       return new boost::optional<OString>(o);
7894 dnl   }
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])
7902     AC_LANG_PUSH([C++])
7903     save_CXXFLAGS=$CXXFLAGS
7904     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7905     if test "$ENABLE_OPTIMIZED" = TRUE; then
7906         CXXFLAGS="$CXXFLAGS -O2"
7907     else
7908         CXXFLAGS="$CXXFLAGS -O0"
7909     fi
7910     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7911             #include <new>
7912             void f1(int);
7913             struct S1 {
7914                 ~S1() { f1(n); }
7915                 int n = 0;
7916             };
7917             struct S2 {
7918                 S2() {}
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(); }
7921                 void set(S1 s) {
7922                     new (stg) S1(s);
7923                     init = true;
7924                 }
7925                 bool init = false;
7926                 char stg[sizeof (S1)];
7927             } ;
7928             S1 f2();
7929             S2 * f3(bool b) {
7930                 S2 o;
7931                 if (b) o.set(f2());
7932                 return new S2(o);
7933             }
7934         ]])], [AC_MSG_RESULT([no])], [
7935             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7936             AC_MSG_RESULT([yes])
7937         ])
7938     CXXFLAGS=$save_CXXFLAGS
7939     AC_LANG_POP([C++])
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=])
7964     AC_LANG_PUSH([C++])
7965     save_CXXFLAGS=$CXXFLAGS
7966     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7967     if test "$ENABLE_OPTIMIZED" = TRUE; then
7968         CXXFLAGS="$CXXFLAGS -O2"
7969     else
7970         CXXFLAGS="$CXXFLAGS -O0"
7971     fi
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);
7975             struct q {
7976                 char ids[4];
7977                 char username[6];
7978             };
7979             void test(q & c) {
7980                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7981                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7982             }
7983         ]])], [AC_MSG_RESULT([no])], [
7984             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7985             AC_MSG_RESULT([yes])
7986         ])
7987     CXXFLAGS=$save_CXXFLAGS
7988     AC_LANG_POP([C++])
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-])
7995     AC_LANG_PUSH([C++])
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
8003     AC_LANG_POP([C++])
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)
8024     flag_sse2=-msse2
8025     flag_ssse3=-mssse3
8026     flag_sse41=-msse4.1
8027     flag_sse42=-msse4.2
8028     flag_avx=-mavx
8029     flag_avx2=-mavx2
8030     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
8031     flag_avx512f=-mavx512f
8032     flag_f16c=-mf16c
8033     flag_fma=-mfma
8034 else
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
8041     # the intrinsics.
8042     # SSE2 is the default for x86/x64, so no need to specify the option.
8043     flag_sse2=
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"
8048     flag_avx=-arch:AVX
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])
8059 AC_LANG_PUSH([C++])
8060 save_CXXFLAGS=$CXXFLAGS
8061 CXXFLAGS="$CXXFLAGS $flag_sse2"
8062 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8063     #include <emmintrin.h>
8064     int main () {
8065         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8066         c = _mm_xor_si128 (a, b);
8067         return 0;
8068     }
8069     ])],
8070     [can_compile_sse2=yes],
8071     [can_compile_sse2=no])
8072 AC_LANG_POP([C++])
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])
8080 AC_LANG_PUSH([C++])
8081 save_CXXFLAGS=$CXXFLAGS
8082 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8083 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8084     #include <tmmintrin.h>
8085     int main () {
8086         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8087         c = _mm_maddubs_epi16 (a, b);
8088         return 0;
8089     }
8090     ])],
8091     [can_compile_ssse3=yes],
8092     [can_compile_ssse3=no])
8093 AC_LANG_POP([C++])
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])
8101 AC_LANG_PUSH([C++])
8102 save_CXXFLAGS=$CXXFLAGS
8103 CXXFLAGS="$CXXFLAGS $flag_sse41"
8104 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8105     #include <smmintrin.h>
8106     int main () {
8107         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8108         c = _mm_cmpeq_epi64 (a, b);
8109         return 0;
8110     }
8111     ])],
8112     [can_compile_sse41=yes],
8113     [can_compile_sse41=no])
8114 AC_LANG_POP([C++])
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])
8122 AC_LANG_PUSH([C++])
8123 save_CXXFLAGS=$CXXFLAGS
8124 CXXFLAGS="$CXXFLAGS $flag_sse42"
8125 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8126     #include <nmmintrin.h>
8127     int main () {
8128         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8129         c = _mm_cmpgt_epi64 (a, b);
8130         return 0;
8131     }
8132     ])],
8133     [can_compile_sse42=yes],
8134     [can_compile_sse42=no])
8135 AC_LANG_POP([C++])
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])
8143 AC_LANG_PUSH([C++])
8144 save_CXXFLAGS=$CXXFLAGS
8145 CXXFLAGS="$CXXFLAGS $flag_avx"
8146 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8147     #include <immintrin.h>
8148     int main () {
8149         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8150         c = _mm256_xor_ps(a, b);
8151         return 0;
8152     }
8153     ])],
8154     [can_compile_avx=yes],
8155     [can_compile_avx=no])
8156 AC_LANG_POP([C++])
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])
8164 AC_LANG_PUSH([C++])
8165 save_CXXFLAGS=$CXXFLAGS
8166 CXXFLAGS="$CXXFLAGS $flag_avx2"
8167 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8168     #include <immintrin.h>
8169     int main () {
8170         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8171         c = _mm256_maddubs_epi16(a, b);
8172         return 0;
8173     }
8174     ])],
8175     [can_compile_avx2=yes],
8176     [can_compile_avx2=no])
8177 AC_LANG_POP([C++])
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])
8185 AC_LANG_PUSH([C++])
8186 save_CXXFLAGS=$CXXFLAGS
8187 CXXFLAGS="$CXXFLAGS $flag_avx512"
8188 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8189     #include <immintrin.h>
8190     int main () {
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);
8195         return 0;
8196     }
8197     ])],
8198     [can_compile_avx512=yes],
8199     [can_compile_avx512=no])
8200 AC_LANG_POP([C++])
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])
8209 AC_LANG_PUSH([C++])
8210 save_CXXFLAGS=$CXXFLAGS
8211 CXXFLAGS="$CXXFLAGS $flag_f16c"
8212 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8213     #include <immintrin.h>
8214     int main () {
8215         __m128i a = _mm_set1_epi32 (0);
8216         __m128 c;
8217         c = _mm_cvtph_ps(a);
8218         return 0;
8219     }
8220     ])],
8221     [can_compile_f16c=yes],
8222     [can_compile_f16c=no])
8223 AC_LANG_POP([C++])
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])
8231 AC_LANG_PUSH([C++])
8232 save_CXXFLAGS=$CXXFLAGS
8233 CXXFLAGS="$CXXFLAGS $flag_fma"
8234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8235     #include <immintrin.h>
8236     int main () {
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);
8239         return 0;
8240     }
8241     ])],
8242     [can_compile_fma=yes],
8243     [can_compile_fma=no])
8244 AC_LANG_POP([C++])
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
8267     AC_LANG_PUSH([C++])
8269     save_CPPFLAGS="$CPPFLAGS"
8270     if test -n "$MACOSX_SDK_PATH"; then
8271         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8272     fi
8274     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8275     # only.
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.])
8283         fi
8284     fi
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(); };
8293 S2::~S2() {}
8294 _ACEOF
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() {}
8299 _ACEOF
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
8303         else
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
8306             dnl moot, though):
8307             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8308             if test "$COM_IS_CLANG" = TRUE; then
8309                 for i in $CXX $CXXFLAGS; do
8310                     case $i in
8311                     -fsanitize=*)
8312                         my_linkflagsnoundefs=
8313                         break
8314                         ;;
8315                     esac
8316                 done
8317             fi
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
8320             fi
8321         fi
8323         rm -fr libconftest*
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.])
8327         fi
8328     fi
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 {
8334   static void Init();
8336 __attribute__ ((visibility ("default"))) void TestFunc() {
8337   TestStruct::Init();
8339 _ACEOF
8340     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8341         gccvisbroken=yes
8342     else
8343         case "$host_cpu" in
8344         i?86|x86_64)
8345             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8346                 gccvisbroken=no
8347             else
8348                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8349                     gccvisbroken=no
8350                 else
8351                     gccvisbroken=yes
8352                 fi
8353             fi
8354             ;;
8355         *)
8356             gccvisbroken=no
8357             ;;
8358         esac
8359     fi
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.])
8365     fi
8367     CPPFLAGS="$save_CPPFLAGS"
8369     AC_MSG_CHECKING([if CET endbranch is recognized])
8370 cat > endbr.s <<_ACEOF
8371 endbr32
8372 _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
8377     else
8378         AC_MSG_RESULT([no])
8379     fi
8380     rm -f endbr.s endbr.o
8381     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8383     AC_LANG_POP([C++])
8386 dnl ===================================================================
8387 dnl  Clang++ tests
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])
8393     AC_LANG_PUSH([C++])
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
8398     AC_LANG_POP([C++])
8399     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8400         AC_MSG_RESULT([yes])
8401     else
8402         AC_MSG_RESULT([no])
8403     fi
8405 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8407 dnl ===================================================================
8408 dnl Compiler plugins
8409 dnl ===================================================================
8411 COMPILER_PLUGINS=
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
8418     fi
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
8427     else
8428         compiler_plugins=no
8429     fi
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
8433                 AC_MSG_ERROR(
8434                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8435             else
8436                 compiler_plugins=no
8437             fi
8438         fi
8439     fi
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)))))
8445         fi
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')]
8449         fi
8450         clangbindir=$CLANGDIR/bin
8451         if test "$build_os" = "cygwin"; then
8452             clangbindir=$(cygpath -u "$clangbindir")
8453         fi
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)
8460             fi
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"
8467                 fi
8468             fi
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"
8473             fi
8474         fi
8475         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8476         AC_LANG_PUSH([C++])
8477         save_CXX=$CXX
8478         save_CXXCPP=$CXXCPP
8479         save_CPPFLAGS=$CPPFLAGS
8480         save_CXXFLAGS=$CXXFLAGS
8481         save_LDFLAGS=$LDFLAGS
8482         save_LIBS=$LIBS
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],
8489             [
8490             if test "$compiler_plugins" = "yes"; then
8491                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8492             else
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."
8495             fi
8496             ])
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
8500             LDFLAGS=""
8501             AC_MSG_CHECKING([for clang libraries to use])
8502             if test -z "$CLANGTOOLLIBS"; then
8503                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8504                 AC_LINK_IFELSE([
8505                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8506                         [[ clang::FullSourceLoc().dump(); ]])
8507                 ],[CLANGTOOLLIBS="$LIBS"],[])
8508             fi
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"
8516                 AC_LINK_IFELSE([
8517                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8518                         [[ clang::FullSourceLoc().dump(); ]])
8519                 ],[CLANGTOOLLIBS="$LIBS"],[])
8520             fi
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.])
8525                 else
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."
8528                 fi
8529                 COMPILER_PLUGINS=
8530             fi
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
8536                     fi
8537                 fi
8538             fi
8539         fi
8540         CXX=$save_CXX
8541         CXXCPP=$save_CXXCPP
8542         CPPFLAGS=$save_CPPFLAGS
8543         CXXFLAGS=$save_CXXFLAGS
8544         LDFLAGS=$save_LDFLAGS
8545         LIBS="$save_LIBS"
8546         AC_LANG_POP([C++])
8548         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8549         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8550             #ifndef __clang__
8551             you lose
8552             #endif
8553             int foo=42;
8554             ]])],
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)
8559     fi
8560 else
8561     if test "$enable_compiler_plugins" = "yes"; then
8562         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8563     fi
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)
8577 AC_SUBST(CLANGDIR)
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.
8585 AC_SUBST(LD_PLUGIN)
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
8616     find_msvc_x64_dlls
8617     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8618     MSVC_DLLS="$msvcdlls"
8619     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8620         with_redist=143
8621     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8622         with_redist=142
8623     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8624         with_redist=141
8625     fi
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"
8632             fi
8633             break
8634         fi
8635     done
8637     if test "$UCRT_REDISTDIR" = "no"; then
8638         dnl explicitly disabled
8639         UCRT_REDISTDIR=""
8640     else
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
8647             UCRT_REDISTDIR=""
8648             if test -n "$PKGFORMAT"; then
8649                for i in $PKGFORMAT; do
8650                    case "$i" in
8651                    msi)
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"
8654                        ;;
8655                    esac
8656                done
8657             fi
8658         fi
8659     fi
8662 AC_SUBST(UCRT_REDISTDIR)
8663 AC_SUBST(MSVC_DLL_PATH)
8664 AC_SUBST(MSVC_DLLS)
8665 AC_SUBST(MSM_PATH)
8668 dnl ===================================================================
8669 dnl Checks for Java
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
8680                 ver=$regvalue
8681                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8682                 with_jdk_home=$regvalue
8683             fi
8684             howfound="found automatically"
8685         else
8686             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8687             howfound="you passed"
8688         fi
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])
8692         fi
8693     fi
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`
8699     fi
8701     JAVA_HOME=; export JAVA_HOME
8702     if test -z "$with_jdk_home"; then
8703         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8704     else
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
8709         else
8710             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8711         fi
8712     fi
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])
8725         fi
8727         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8728             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8729         fi
8730         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8731     elif test "$cross_compiling" != "yes"; then
8732         case $CPUNAME in
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])
8737                 fi
8738                 ;;
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])
8743                 fi
8744                 ;;
8745         esac
8746     fi
8749 dnl ===================================================================
8750 dnl Checks for JDK.
8751 dnl ===================================================================
8753 # Whether all the complexity here actually is needed any more or not, no idea.
8755 JDK_SECURITYMANAGER_DISALLOWED=
8756 MODULAR_JAVA=
8757 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8758     _gij_longver=0
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])
8770         else
8771             JDK=sun
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)])
8779             fi
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
8785             fi
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]]$,,"`
8790             fi
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
8795                 MODULAR_JAVA=TRUE
8796             else
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)"
8799             fi
8801             # set to limit VM usage for JunitTests
8802             JAVAIFLAGS=-Xmx64M
8803             # set to limit VM usage for javac
8804             JAVACFLAGS=-J-Xmx128M
8805         fi
8806     else
8807         AC_MSG_ERROR([Java not found. You need at least JDK 8])
8808     fi
8809 else
8810     if test -z "$ENABLE_JAVA"; then
8811         dnl Java disabled
8812         JAVA_HOME=
8813         export JAVA_HOME
8814     elif test "$cross_compiling" = "yes"; then
8815         # Just assume compatibility of build and host JDK
8816         JDK=$JDK_FOR_BUILD
8817         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8818     fi
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)
8830     else
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
8835         fi
8836     fi
8837     if test -z "$JAVACOMPILER"; then
8838         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8839     fi
8840     if test "$build_os" = "cygwin"; then
8841         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8842             JAVACOMPILER="${JAVACOMPILER}.exe"
8843         fi
8844         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8845     fi
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)
8854     else
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
8859         else
8860             AC_PATH_PROG(JAVADOC, javadoc)
8861         fi
8862     fi
8863     if test -z "$JAVADOC"; then
8864         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8865     fi
8866     if test "$build_os" = "cygwin"; then
8867         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8868             JAVADOC="${JAVADOC}.exe"
8869         fi
8870         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8871     fi
8873     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8874     JAVADOCISGJDOC="yes"
8875     fi
8877 AC_SUBST(JAVADOC)
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
8894                 JAVA_HOME=""
8895             fi
8896         else
8897             # else warn
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"
8902         fi
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,)
8910             else
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
8916                 fi
8917             fi
8918         fi
8919     fi
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;
8928 class findhome
8930     public static void main(String args[])
8931     {
8932         String jrelocation = System.getProperty("java.home");
8933         File jre = new File(jrelocation);
8934         System.out.println(jre.getParent());
8935     }
8937 _ACEOF
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])
8943             else
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!])
8947             fi
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])
8952             else
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])
8956             fi
8957             # clean-up after ourselves
8958             rm -f ./findhome.java ./findhome.class
8959         else
8960             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8961         fi
8962     fi
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"
8973         fi
8974     fi
8975     PathFormat "$JAVA_HOME"
8976     JAVA_HOME="$formatted_path"
8979 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8980     "$_os" != Darwin
8981 then
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:
8985         JAWTLIB=jawt.lib
8986     else
8987         case "$host_cpu" in
8988         arm*)
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
8991             ;;
8992         i*86)
8993             my_java_arch=i386
8994             ;;
8995         m68k)
8996             my_java_arch=m68k
8997             ;;
8998         powerpc)
8999             my_java_arch=ppc
9000             ;;
9001         powerpc64)
9002             my_java_arch=ppc64
9003             ;;
9004         powerpc64le)
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
9007             ;;
9008         sparc64)
9009             my_java_arch=sparcv9
9010             ;;
9011         x86_64)
9012             my_java_arch=amd64
9013             ;;
9014         *)
9015             my_java_arch=$host_cpu
9016             ;;
9017         esac
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"
9021         else
9022             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
9023         fi
9024         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
9025     fi
9026     AC_MSG_RESULT([$JAWTLIB])
9028 AC_SUBST(JAWTLIB)
9030 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
9031     case "$host_os" in
9033     cygwin*|wsl*)
9034         JAVAINC="-I$JAVA_HOME/include/win32"
9035         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
9036         ;;
9038     darwin*)
9039         if test -d "$JAVA_HOME/include/darwin"; then
9040             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
9041         else
9042             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
9043         fi
9044         ;;
9046     dragonfly*)
9047         JAVAINC="-I$JAVA_HOME/include"
9048         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9049         ;;
9051     freebsd*)
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"
9057         ;;
9059     k*bsd*-gnu*)
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"
9063         ;;
9065     linux-gnu*)
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"
9069         ;;
9071     *netbsd*)
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"
9075        ;;
9077     openbsd*)
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"
9081         ;;
9083     solaris*)
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"
9087         ;;
9088     esac
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
9095     JDK_FOR_BUILD=$JDK
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)
9104 AC_SUBST(JAVA_HOME)
9105 AC_SUBST(JAVA_HOME_FOR_BUILD)
9106 AC_SUBST(JDK)
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])
9122         else
9123             AC_MSG_RESULT([no, as Java is disabled])
9124         fi
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)])
9128         else
9129             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9130         fi
9131     else
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)])
9148             fi
9149         fi
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"`"
9156         else
9157             ODFVALIDATOR="sh $ODFVALIDATOR"
9158         fi
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)])
9175             fi
9176         else
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])
9181             fi
9182         fi
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"`"
9189         else
9190             OFFICEOTRON="sh $OFFICEOTRON"
9191         fi
9192     fi
9193     AC_SUBST(OFFICEOTRON)
9194 else
9195     AC_MSG_RESULT([no])
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)!])
9204     fi
9206     if test "$with_bffvalidator" = "yes"; then
9207         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9208     else
9209         BFFVALIDATOR="$with_bffvalidator"
9210     fi
9212     if test "$build_os" = "cygwin"; then
9213         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9214             AC_MSG_RESULT($BFFVALIDATOR)
9215         else
9216             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9217         fi
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)
9227     else
9228         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9229     fi
9230     AC_SUBST(BFFVALIDATOR)
9231 else
9232     AC_MSG_RESULT([no])
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
9243             EPM=internal
9244         elif test -n "$with_epm"; then
9245             EPM=$with_epm
9246         else
9247             AC_PATH_PROG(EPM, epm, no)
9248         fi
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
9253         else
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])
9258             else
9259                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9260             fi
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])
9266             else
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])
9269             fi
9270         fi
9271     fi
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
9278                 RPM=$a
9279                 break
9280             else
9281                 $a --version >/dev/null 2> /dev/null
9282                 if test $? -eq 0; then
9283                     RPM=$a
9284                     break
9285                 fi
9286             fi
9287         done
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"
9294         else
9295             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9296         fi
9297     fi
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.])
9302         fi
9303     fi
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])
9311                 else
9312                     AC_MSG_RESULT([no])
9313                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9314                         _pt="rpm"
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"
9317                     else
9318                         _pt="pkg"
9319                     fi
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])
9326                 fi
9327             fi
9328         fi
9329     fi
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.])
9334         fi
9335     fi
9336     AC_SUBST(RPM)
9337     AC_SUBST(DPKG)
9338     AC_SUBST(PKGMK)
9339 else
9340     for i in $PKGFORMAT; do
9341         case "$i" in
9342         bsd | deb | pkg | rpm | native | portable)
9343             AC_MSG_ERROR(
9344                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9345             ;;
9346         esac
9347     done
9348     AC_MSG_RESULT([no])
9349     EPM=NO
9351 AC_SUBST(EPM)
9353 ENABLE_LWP=
9354 if test "$enable_lotuswordpro" = "yes"; then
9355     ENABLE_LWP="TRUE"
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])
9366     fi
9367     AC_MSG_RESULT([yes])
9368     BUILD_TYPE="$BUILD_TYPE ODK"
9369 else
9370     AC_MSG_RESULT([no])
9373 if test "$enable_odk" != yes; then
9374     unset DOXYGEN
9375 else
9376     if test "$with_doxygen" = no; then
9377         AC_MSG_CHECKING([for doxygen])
9378         unset DOXYGEN
9379         AC_MSG_RESULT([no])
9380     else
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])
9385             fi
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])
9389                 fi
9390             fi
9391         else
9392             AC_MSG_CHECKING([for doxygen])
9393             DOXYGEN=$with_doxygen
9394             AC_MSG_RESULT([$DOXYGEN])
9395         fi
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])
9401             fi
9402         fi
9403     fi
9405 AC_SUBST([DOXYGEN])
9407 dnl ==================================================================
9408 dnl libfuzzer
9409 dnl ==================================================================
9410 AC_MSG_CHECKING([whether to enable fuzzers])
9411 if test "$enable_fuzzers" != yes; then
9412     AC_MSG_RESULT([no])
9413 else
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'.])
9416     fi
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
9428     case "$_os" in
9429     WINNT)
9430         with_system_zlib="$with_system_libs"
9431         ;;
9432     *)
9433         if test "$enable_fuzzers" != "yes"; then
9434             with_system_zlib=yes
9435         else
9436             with_system_zlib=no
9437         fi
9438         ;;
9439     esac
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])
9449     SYSTEM_ZLIB=TRUE
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)], [])
9454 else
9455     AC_MSG_RESULT([internal])
9456     SYSTEM_ZLIB=
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"
9461     else
9462         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9463     fi
9465 AC_SUBST(ZLIB_CFLAGS)
9466 AC_SUBST(ZLIB_LIBS)
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])
9475     SYSTEM_LIBJPEG=TRUE
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)], [])
9480 else
9481     SYSTEM_LIBJPEG=
9482     AC_MSG_RESULT([internal, libjpeg-turbo])
9483     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9485     case "$host_cpu" in
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"
9493             fi
9494         fi
9496         if test -n "$NASM"; then
9497             AC_MSG_CHECKING([for object file format of host system])
9498             case "$host_os" in
9499               cygwin* | mingw* | pw32* | wsl*)
9500                 case "$host_cpu" in
9501                   x86_64)
9502                     objfmt='Win64-COFF'
9503                     ;;
9504                   *)
9505                     objfmt='Win32-COFF'
9506                     ;;
9507                 esac
9508               ;;
9509               msdosdjgpp* | go32*)
9510                 objfmt='COFF'
9511               ;;
9512               os2-emx*) # not tested
9513                 objfmt='MSOMF' # obj
9514               ;;
9515               linux*coff* | linux*oldld*)
9516                 objfmt='COFF' # ???
9517               ;;
9518               linux*aout*)
9519                 objfmt='a.out'
9520               ;;
9521               linux*)
9522                 case "$host_cpu" in
9523                   x86_64)
9524                     objfmt='ELF64'
9525                     ;;
9526                   *)
9527                     objfmt='ELF'
9528                     ;;
9529                 esac
9530               ;;
9531               kfreebsd* | freebsd* | netbsd* | openbsd*)
9532                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9533                   objfmt='BSD-a.out'
9534                 else
9535                   case "$host_cpu" in
9536                     x86_64 | amd64)
9537                       objfmt='ELF64'
9538                       ;;
9539                     *)
9540                       objfmt='ELF'
9541                       ;;
9542                   esac
9543                 fi
9544               ;;
9545               solaris* | sunos* | sysv* | sco*)
9546                 case "$host_cpu" in
9547                   x86_64)
9548                     objfmt='ELF64'
9549                     ;;
9550                   *)
9551                     objfmt='ELF'
9552                     ;;
9553                 esac
9554               ;;
9555               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9556                 case "$host_cpu" in
9557                   x86_64)
9558                     objfmt='Mach-O64'
9559                     ;;
9560                   *)
9561                     objfmt='Mach-O'
9562                     ;;
9563                 esac
9564               ;;
9565               *)
9566                 objfmt='ELF ?'
9567               ;;
9568             esac
9570             AC_MSG_RESULT([$objfmt])
9571             if test "$objfmt" = 'ELF ?'; then
9572               objfmt='ELF'
9573               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9574             fi
9576             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9577             case "$objfmt" in
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';;
9589             esac
9590             AC_MSG_RESULT([$NAFLAGS])
9592             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9593             cat > conftest.asm << EOF
9594             [%line __oline__ "configure"
9595                     section .text
9596                     global  _main,main
9597             _main:
9598             main:   xor     eax,eax
9599                     ret
9600             ]
9602             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9603             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9604               AC_MSG_RESULT(yes)
9605             else
9606               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9607               cat conftest.asm >&AS_MESSAGE_LOG_FD
9608               rm -rf conftest*
9609               AC_MSG_RESULT(no)
9610               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9611               NASM=""
9612             fi
9614         fi
9616         if test -z "$NASM"; then
9617 cat << _EOS
9618 ****************************************************************************
9619 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9620 To get one please:
9622 _EOS
9623             if test "$build_os" = "cygwin"; then
9624 cat << _EOS
9625 install a pre-compiled binary for Win32
9627 mkdir -p /opt/lo/bin
9628 cd /opt/lo/bin
9629 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9630 chmod +x nasm
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.
9639 _EOS
9640             else
9641 cat << _EOS
9642 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9644 _EOS
9645             fi
9646             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9647             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9648         fi
9649       ;;
9650     esac
9653 AC_SUBST(NASM)
9654 AC_SUBST(NAFLAGS)
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
9664     AC_LANG_PUSH([C++])
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
9675     AC_LANG_POP([C++])
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
9691     ENABLE_EOT="TRUE"
9692     AC_DEFINE([ENABLE_EOT])
9693     AC_MSG_RESULT([yes])
9695     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9696 else
9697     ENABLE_EOT=
9698     AC_MSG_RESULT([no])
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
9762     SYSTEM_LCMS2=
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)
9787 dnl * soname
9788 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9790 dnl 9.9.3 is 2.2.0
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"
9796 else
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
9807     case "$_os" in
9808     WINNT|iOS|Android)
9809         with_system_libxml="$with_system_libs"
9810         ;;
9811     Emscripten)
9812         with_system_libxml=no
9813         ;;
9814     *)
9815         if test "$enable_fuzzers" != "yes"; then
9816             with_system_libxml=yes
9817         else
9818             with_system_libxml=no
9819         fi
9820         ;;
9821     esac
9824 AC_MSG_CHECKING([which libxslt to use])
9825 if test "$with_system_libxml" = "yes"; then
9826     AC_MSG_RESULT([external])
9827     SYSTEM_LIBXSLT=TRUE
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"
9832         dnl omit -L/usr/lib
9833         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9834         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9835     else
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//")
9844     fi
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])
9850     fi
9851 else
9852     AC_MSG_RESULT([internal])
9853     SYSTEM_LIBXSLT=
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)
9866 AC_SUBST(XSLTPROC)
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])
9874     SYSTEM_LIBXML=TRUE
9875     if test "$_os" = "Darwin"; then
9876         dnl make sure to use SDK path
9877         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9878         dnl omit -L/usr/lib
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"
9885     else
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}"
9890     fi
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])
9896     fi
9897 else
9898     AC_MSG_RESULT([internal])
9899     SYSTEM_LIBXML=
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"
9903     fi
9904     if test "$COM" = "MSC"; then
9905         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9906     else
9907         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9908         if test "$DISABLE_DYNLOADING" = TRUE; then
9909             LIBXML_LIBS="$LIBXML_LIBS -lm"
9910         fi
9911     fi
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)
9921 AC_SUBST(XMLLINT)
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
9936     else
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
9940         PYTHON_VERSION=""
9941         if test "$PYTHON" != ":"; then
9942             PYTHON_FOR_BUILD=$PYTHON
9943         fi
9944     fi
9947 # Checks for Python to use for Pyuno
9948 AC_MSG_CHECKING([which Python to use for Pyuno])
9949 case "$enable_python" in
9950 no|disable)
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
9954         # bother?
9955         AC_MSG_ERROR([Python is required at build time.])
9956     fi
9957     enable_python=no
9958     AC_MSG_RESULT([none])
9959     ;;
9960 ""|yes|auto)
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.])
9964         fi
9965         AC_MSG_RESULT([none, overridden by --disable-scripting])
9966         enable_python=no
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
9975     else
9976         # Unset variables set by the above AM_PATH_PYTHON so that
9977         # we actually do check anew.
9978         AC_MSG_RESULT([])
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])
9985             else
9986                 AC_MSG_RESULT([internal])
9987             fi
9988             enable_python=internal
9989         else
9990             AC_MSG_RESULT([system])
9991             enable_python=system
9992         fi
9993     fi
9994     ;;
9995 internal)
9996     AC_MSG_RESULT([internal])
9997     ;;
9998 fully-internal)
9999     AC_MSG_RESULT([fully internal])
10000     enable_python=internal
10001     ;;
10002 system)
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])
10006     fi
10007     ;;
10009     AC_MSG_ERROR([Incorrect --enable-python option])
10010     ;;
10011 esac
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
10020         # for MacOSX.
10021         :
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"
10041         else
10042             PYTHON_CFLAGS="-I$python_include"
10043             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10044         fi
10045         FilterLibs "${PYTHON_LIBS}"
10046         PYTHON_LIBS="${filteredlibs}"
10047     else
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
10055     fi
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
10071         case $build_os in
10072             cygwin)
10073                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10074                 ;;
10075             *)
10076                 if test "$cross_compiling" != yes ; then
10077                     BUILD_TYPE="$BUILD_TYPE LXML"
10078                 fi
10079                 ;;
10080         esac
10081     else
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])
10085         else
10086             case $build_os in
10087                 cygwin)
10088                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10089                     ;;
10090                 *)
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])
10094                         else
10095                             BUILD_TYPE="$BUILD_TYPE LXML"
10096                             AC_MSG_RESULT([no, using internal lxml])
10097                         fi
10098                     else
10099                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10100                     fi
10101                     ;;
10102             esac
10103         fi
10104     fi
10107 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10108     SYSTEM_PYTHON=
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])
10114     fi
10115     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10117     # Embedded Python dies without Home set
10118     if test "$HOME" = ""; then
10119         export HOME=""
10120     fi
10123 dnl By now enable_python should be "system", "internal" or "no"
10124 case $enable_python in
10125 system)
10126     SYSTEM_PYTHON=TRUE
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.])
10130     fi
10132     AC_LANG_PUSH(C)
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;
10140    else return 1;
10142        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10143     AC_LANG_POP(C)
10145     dnl FIXME Check if the Python library can be linked with, too?
10146     ;;
10148 internal)
10149     BUILD_TYPE="$BUILD_TYPE PYTHON"
10150     if test "$OS" = LINUX -o "$OS" = WNT ; then
10151         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10152     fi
10153     ;;
10155     DISABLE_PYTHON=TRUE
10156     SYSTEM_PYTHON=
10157     ;;
10159     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10160     ;;
10161 esac
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
10174 no|disable)
10175     AC_MSG_RESULT([no; Python disabled])
10176     ;;
10178     if test "${enable_librelogo}" = "no"; then
10179         AC_MSG_RESULT([no])
10180     else
10181         AC_MSG_RESULT([yes])
10182         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10183         AC_DEFINE([ENABLE_LIBRELOGO],1)
10184     fi
10185     ;;
10186 esac
10187 AC_SUBST(ENABLE_LIBRELOGO)
10189 ENABLE_MARIADBC=
10190 MARIADBC_MAJOR=1
10191 MARIADBC_MINOR=0
10192 MARIADBC_MICRO=2
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"
10198 else
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.])
10220             fi
10221         fi
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])
10227         else
10228             AC_MSG_ERROR([too old, use 5.0.x or later])
10229         fi
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//)
10234         fi
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
10238         dnl linux32:
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/|')
10243         fi
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
10260             else
10261                 LIBMARIADB=${LIBMARIADB}.so
10262             fi
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"
10269             else
10270                 AC_MSG_ERROR([not found.])
10271             fi
10272         else
10273             AC_MSG_RESULT([no])
10274             BUNDLE_MARIADB_CONNECTOR_C=
10275         fi
10276     else
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"
10282     fi
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])
10299         SYSTEM_HSQLDB=TRUE
10300         if test -z $HSQLDB_JAR; then
10301             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10302         fi
10303         if ! test -f $HSQLDB_JAR; then
10304                AC_MSG_ERROR(hsqldb.jar not found.)
10305         fi
10306         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10307         export HSQLDB_JAR
10308         if $PERL -e \
10309            'use Archive::Zip;
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.*/ )
10314             {
10315                 push @l, split(/\n/, $mf);
10316                 foreach my $line (@l)
10317                 {
10318                     if ($line =~ m/Specification-Version:/)
10319                     {
10320                         ($t, $version) = split (/:/,$line);
10321                         $version =~ s/^\s//;
10322                         ($a, $b, $c, $d) = split (/\./,$version);
10323                         if ($c == "0" && $d > "8")
10324                         {
10325                             exit 0;
10326                         }
10327                         else
10328                         {
10329                             exit 1;
10330                         }
10331                     }
10332                 }
10333             }
10334             else
10335             {
10336                 exit 1;
10337             }'; then
10338             AC_MSG_RESULT([yes])
10339         else
10340             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10341         fi
10342     else
10343         AC_MSG_RESULT([internal])
10344         SYSTEM_HSQLDB=
10345         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10346         NEED_ANT=TRUE
10347     fi
10348 else
10349     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10350         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10351     fi
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.])
10366     fi
10367     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10368         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10369     fi
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
10376             supp_path=''
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"
10379             done
10380         fi
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)"
10385         else
10386             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10387               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10388               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10389             ],[
10390               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10391             ])
10392         fi
10393         FilterLibs "${POSTGRESQL_LIB}"
10394         POSTGRESQL_LIB="${filteredlibs}"
10395     else
10396         # if/when anything else than PostgreSQL uses Kerberos,
10397         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10398         WITH_KRB5=
10399         WITH_GSSAPI=
10400         case "$_os" in
10401         Darwin)
10402             # macOS has system MIT Kerberos 5 since 10.4
10403             if test "$with_krb5" != "no"; then
10404                 WITH_KRB5=TRUE
10405                 save_LIBS=$LIBS
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])])
10410                 KRB5_LIBS=$LIBS
10411                 LIBS=$save_LIBS
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"
10415                 LIBS=$save_LIBS
10416             fi
10417             if test "$with_gssapi" != "no"; then
10418                 WITH_GSSAPI=TRUE
10419                 save_LIBS=$LIBS
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])])
10422                 GSSAPI_LIBS=$LIBS
10423                 LIBS=$save_LIBS
10424             fi
10425             ;;
10426         WINNT)
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.])
10429             fi
10430             ;;
10431         Linux|GNU|*BSD|DragonFly)
10432             if test "$with_krb5" != "no"; then
10433                 WITH_KRB5=TRUE
10434                 save_LIBS=$LIBS
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])])
10437                 KRB5_LIBS=$LIBS
10438                 LIBS=$save_LIBS
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"
10442                 LIBS=$save_LIBS
10443             fi
10444             if test "$with_gssapi" != "no"; then
10445                 WITH_GSSAPI=TRUE
10446                 save_LIBS=$LIBS
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])])
10449                 GSSAPI_LIBS=$LIBS
10450                 LIBS=$save_LIBS
10451             fi
10452             ;;
10453         *)
10454             if test "$with_krb5" = "yes"; then
10455                 WITH_KRB5=TRUE
10456                 save_LIBS=$LIBS
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])])
10459                 KRB5_LIBS=$LIBS
10460                 LIBS=$save_LIBS
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"
10464                 LIBS=$save_LIBS
10465             fi
10466             if test "$with_gssapi" = "yes"; then
10467                 WITH_GSSAPI=TRUE
10468                 save_LIBS=$LIBS
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])])
10471                 LIBS=$save_LIBS
10472                 GSSAPI_LIBS=$LIBS
10473             fi
10474         esac
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/"
10481         else
10482             SYSTEM_POSTGRESQL=
10483             postgres_interface="internal"
10484             POSTGRESQL_LIB=""
10485             POSTGRESQL_INC="%OVERRIDE_ME%"
10486             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10487         fi
10488     fi
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
10497         save_LIBS=$LIBS
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
10505         LIBS=$save_LIBS
10506     fi
10507     BUILD_POSTGRESQL_SDBC=TRUE
10508 else
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])
10539             ])
10540             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10541         else
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}"
10549         fi
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])
10556             else
10557                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10558             fi
10559         else
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; }
10565 #else
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"
10569         fi
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])
10576     else
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)], [])
10588             else
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"
10593             fi
10594         fi
10596         AC_MSG_RESULT([internal])
10597         SYSTEM_FIREBIRD=
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
10604             save_LIBS=$LIBS
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))
10607             LIBS=$save_LIBS
10608         else
10609             SYSTEM_LIBTOMMATH=
10610             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10611             LIBTOMMATH_LIBS="-ltommath"
10612             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10613         fi
10615         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10616         ENABLE_FIREBIRD_SDBC=TRUE
10617         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10618     fi
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])
10642     SYSTEM_BOOST=TRUE
10643     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10644     AX_BOOST_DATE_TIME
10645     AX_BOOST_FILESYSTEM
10646     AX_BOOST_IOSTREAMS
10647     AX_BOOST_LOCALE
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
10656     AC_LANG_POP([C++])
10657     # this is in m4/ax_boost_base.m4
10658     FilterLibs "${BOOST_LDFLAGS}"
10659     BOOST_LDFLAGS="${filteredlibs}"
10660 else
10661     AC_MSG_RESULT([internal])
10662     BUILD_TYPE="$BUILD_TYPE BOOST"
10663     SYSTEM_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"
10667     else
10668         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10669     fi
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])], [])
10693     AC_LANG_POP([C++])
10694     CPPFLAGS=$save_CPPFLAGS
10695 else
10696     AC_MSG_RESULT([internal])
10697     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10698     SYSTEM_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])
10709     SYSTEM_FROZEN=TRUE
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])], [])
10714     AC_LANG_POP([C++])
10715     CPPFLAGS=$save_CPPFLAGS
10716 else
10717     AC_MSG_RESULT([internal])
10718     BUILD_TYPE="$BUILD_TYPE FROZEN"
10719     SYSTEM_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)], [])
10735     AC_LANG_POP([C++])
10736 else
10737     AC_MSG_RESULT([internal])
10738     SYSTEM_LIBFIXMATH=
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])
10748     SYSTEM_GLM=TRUE
10749     AC_LANG_PUSH([C++])
10750     AC_CHECK_HEADER([glm/glm.hpp], [],
10751        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10752     AC_LANG_POP([C++])
10753 else
10754     AC_MSG_RESULT([internal])
10755     BUILD_TYPE="$BUILD_TYPE GLM"
10756     SYSTEM_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
10772         find_winsdk
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
10779     else
10780         AC_CHECK_HEADER(sqlext.h, [],
10781             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10782     fi
10783 elif test "$enable_database_connectivity" = no; then
10784     AC_MSG_RESULT([none])
10785 else
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)
10798     ENABLE_NSS=TRUE
10799 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10800     with_tls=openssl
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])
10812         ENABLE_LDAP=TRUE
10813     else
10814         if test "$enable_ldap" != "yes"; then
10815             AC_MSG_RESULT([no])
10816         else
10817             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10818         fi
10819     fi
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)], [])
10833         else
10834             AC_MSG_RESULT([internal])
10835             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10836         fi
10837     fi
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
10848     case $with_tls in
10849     openssl)
10850         AC_DEFINE(USE_TLS_OPENSSL)
10851         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."])
10856         fi
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"
10861         ;;
10862     nss)
10863         AC_DEFINE(USE_TLS_NSS)
10864         TLS=NSS
10865         AC_MSG_RESULT([$TLS])
10866         ;;
10867     no)
10868         AC_MSG_RESULT([none])
10869         AC_MSG_WARN([Skipping TLS/SSL])
10870         ;;
10871     *)
10872         AC_MSG_RESULT([])
10873         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10874 openssl - OpenSSL
10875 nss - Mozilla's Network Security Services (NSS)
10876     ])
10877         ;;
10878     esac
10879 else
10880     # default to using NSS, it results in smaller oox lib
10881     AC_DEFINE(USE_TLS_NSS)
10882     TLS=NSS
10883     AC_MSG_RESULT([$TLS])
10885 AC_SUBST(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)], [])
10895 else
10896     AC_MSG_RESULT([internal])
10897     BUILD_TYPE="$BUILD_TYPE SANE"
10900 dnl ===================================================================
10901 dnl Check for system icu
10902 dnl ===================================================================
10903 ICU_MAJOR=73
10904 ICU_MINOR=2
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])])
10912     AC_LANG_POP([C++])
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\'])
10924         fi
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\'])
10928         fi
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\'])
10932         fi
10933     fi
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 ==================================================================
10943 dnl CURL
10944 dnl ==================================================================
10945 if test "$enable_curl" == "yes"; then
10946     AC_DEFINE([HAVE_FEATURE_CURL])
10949 dnl ==================================================================
10950 dnl Breakpad
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])
10956 else
10957     if test "$enable_curl" != "yes"; then
10958         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10959     fi
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])
10970     else
10971        AC_MSG_RESULT([no])
10972     fi
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])
10978     else
10979         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10980         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10981         AC_MSG_RESULT([yes])
10982     fi
10983     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10985 AC_SUBST(ENABLE_BREAKPAD)
10986 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10988 dnl ==================================================================
10989 dnl libcmis
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])
10994     fi
10997 dnl ===================================================================
10998 dnl Orcus
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.
11007         AX_BOOST_SYSTEM
11008     fi
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 ===================================================================
11016 dnl HarfBuzz
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"
11022 case "$_os" in
11023     Linux)
11024         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
11025         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
11026         ;;
11027     *)
11028         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
11029         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
11030         ;;
11031 esac
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])
11043     fi
11044     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
11045     save_LIBS="$LIBS"
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.])])
11050     LIBS="$save_LIBS"
11051     CFLAGS="$save_CFLAGS"
11052 else
11053     if test "$with_system_graphite" = "yes"; then
11054         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
11055     fi
11058 if test "$USING_X11" = TRUE; then
11059     AC_PATH_X
11060     AC_PATH_XTRA
11061     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11063     if test -z "$x_includes"; then
11064         x_includes="default_x_includes"
11065     fi
11066     if test -z "$x_libraries"; then
11067         x_libraries="default_x_libraries"
11068     fi
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])])
11072 else
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)], [])
11112 else
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?])], [])
11128         XRANDR_CFLAGS=" "
11129         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11130           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11131         XRANDR_LIBS="-lXrandr "
11132         ENABLE_RANDR="TRUE"
11133     fi
11134     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11135     FilterLibs "${XRANDR_LIBS}"
11136     XRANDR_LIBS="${filteredlibs}"
11137 else
11138     ENABLE_RANDR=""
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])
11153     WITH_WEBDAV=""
11154     ;;
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"])
11160     fi
11161     WITH_WEBDAV=TRUE
11162     ;;
11163 esac
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)
11174 else
11175     AC_MSG_RESULT([yes])
11178 dnl ===================================================================
11179 dnl Check for system openssl
11180 dnl ===================================================================
11181 ENABLE_OPENSSL=
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.
11188         #
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
11198         OPENSSL_CFLAGS=
11199         OPENSSL_LIBS="-lssl -lcrypto"
11200     else
11201         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11202         if test -n "${SYSTEM_OPENSSL}"; then
11203             AC_DEFINE([SYSTEM_OPENSSL])
11204         fi
11205     fi
11206     if test "$with_system_openssl" = "yes"; then
11207         AC_MSG_CHECKING([whether openssl supports SHA512])
11208         AC_LANG_PUSH([C])
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.])])
11212         AC_LANG_POP(C)
11213     fi
11214 else
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
11228     else
11229         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11230     fi
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
11237 else
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])
11253     fi
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"
11259 else
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)], [])
11273 else
11274     RAPTOR_MAJOR="0"
11275     RASQAL_MAJOR="3"
11276     REDLAND_MAJOR="0"
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, [],
11293             [
11294             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11295             [AC_MSG_ERROR(hunspell headers not found.)], [])
11296             ], [])
11297         AC_CHECK_LIB([hunspell], [main], [:],
11298            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11299         HUNSPELL_LIBS=-lhunspell
11300     fi
11301     AC_LANG_POP([C++])
11302     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11303     FilterLibs "${HUNSPELL_LIBS}"
11304     HUNSPELL_LIBS="${filteredlibs}"
11305 else
11306     AC_MSG_RESULT([internal])
11307     SYSTEM_HUNSPELL=
11308     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11309     if test "$COM" = "MSC"; then
11310         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11311     else
11312         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11313     fi
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])
11326     SYSTEM_ZXCVBN=TRUE
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.)], [])
11331 else
11332    AC_MSG_RESULT([internal])
11333    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11334    SYSTEM_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])
11344     ENABLE_ZXING=
11345     SYSTEM_ZXING=
11346 else
11347     AC_MSG_RESULT([yes])
11348     ENABLE_ZXING=TRUE
11349     AC_MSG_CHECKING([which libzxing to use])
11350     if test "$with_system_zxing" = "yes"; then
11351         AC_MSG_RESULT([external])
11352         SYSTEM_ZXING=TRUE
11353         ZXING_CFLAGS=
11354         AC_LANG_PUSH([C++])
11355         save_CXXFLAGS=$CXXFLAGS
11356         save_IFS=$IFS
11357         IFS=$P_SEP
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."):
11364             IFS=$save_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
11368                 continue
11369             fi
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>])
11374         done
11375         CXXFLAGS=$save_CXXFLAGS
11376         if test -z "$ZXING_CFLAGS"; then
11377             AC_MSG_ERROR(zxing headers not found.)
11378         fi
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.) ])], [])
11382         AC_LANG_POP([C++])
11383         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11384         FilterLibs "${ZXING_LIBS}"
11385         ZXING_LIBS="${filteredlibs}"
11386     else
11387         AC_MSG_RESULT([internal])
11388         SYSTEM_ZXING=
11389         BUILD_TYPE="$BUILD_TYPE ZXING"
11390         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11391     fi
11392     if test "$ENABLE_ZXING" = TRUE; then
11393         AC_DEFINE(ENABLE_ZXING)
11394     fi
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>
11402             int main(){
11403                 ZXing::BitMatrix matrix(1, 1);
11404                 matrix.set(0, 0, true);
11405                 ZXing::ToSVG(matrix);
11406                 return 0;
11407             }
11408         ])], [
11409             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11410             AC_MSG_RESULT([yes])
11411         ], [AC_MSG_RESULT([no])])
11412     CXXFLAGS=$save_CXXFLAGS
11413     AC_LANG_POP([C++])
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])
11427     SYSTEM_BOX2D=TRUE
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+
11432         _BOX2D_LIB=box2d
11433         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11434     else
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.)])
11438         _BOX2D_LIB=Box2D
11439         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11440     fi
11441     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11442         [ AC_MSG_ERROR(box2d library not found.) ], [])
11443     BOX2D_LIBS=-l$_BOX2D_LIB
11444     AC_LANG_POP([C++])
11445     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11446     FilterLibs "${BOX2D_LIBS}"
11447     BOX2D_LIBS="${filteredlibs}"
11448 else
11449     AC_MSG_RESULT([internal])
11450     SYSTEM_BOX2D=
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])
11463     SYSTEM_HYPH=TRUE
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.)], [])
11474     fi
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.)], [])
11478     fi
11479 else
11480     AC_MSG_RESULT([internal])
11481     SYSTEM_HYPH=
11482     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11483     if test "$COM" = "MSC"; then
11484         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11485     else
11486         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11487     fi
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])
11498     SYSTEM_MYTHES=TRUE
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], [])
11509     fi
11510     if test "$MYTHES_FOUND" = "no"; then
11511         AC_MSG_ERROR([mythes library not found!.])
11512     fi
11513     fi
11514     AC_LANG_POP([C++])
11515     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11516     FilterLibs "${MYTHES_LIBS}"
11517     MYTHES_LIBS="${filteredlibs}"
11518 else
11519     AC_MSG_RESULT([internal])
11520     SYSTEM_MYTHES=
11521     BUILD_TYPE="$BUILD_TYPE MYTHES"
11522     if test "$COM" = "MSC"; then
11523         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11524     else
11525         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11526     fi
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 ===================================================================
11536 ENABLE_COINMP=
11537 AC_MSG_CHECKING([whether to build with CoinMP])
11538 if test "$enable_coinmp" != "no"; then
11539     ENABLE_COINMP=TRUE
11540     AC_MSG_RESULT([yes])
11541     if test "$with_system_coinmp" = "yes"; then
11542         SYSTEM_COINMP=TRUE
11543         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11544         FilterLibs "${COINMP_LIBS}"
11545         COINMP_LIBS="${filteredlibs}"
11546     else
11547         BUILD_TYPE="$BUILD_TYPE COINMP"
11548     fi
11549 else
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)
11557 ENABLE_LPSOLVE=
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])
11562 else
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.)], [])
11574         save_LIBS=$LIBS
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.)], [])
11580         LIBS=$save_LIBS
11581     else
11582         AC_MSG_RESULT([internal])
11583         SYSTEM_LPSOLVE=
11584         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11585     fi
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
11605 else
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
11620     #endif
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
11631     AC_SUBST(UUIDGEN)
11632 else
11633     AC_PATH_PROG([UUIDGEN], [uuidgen])
11634     if test -z "$UUIDGEN"; then
11635         AC_MSG_WARN([uuid is needed for building installation sets])
11636     fi
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])
11645 else
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
11650     dnl cause
11651     dnl
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
11654     dnl           ~~~~~~^~~~~~~
11655     dnl
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)])
11660         fi
11661     else
11662         if test "$_bison_longver" -lt 2000; then
11663             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11664         fi
11665     fi
11667 AC_SUBST([BISON])
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])
11675 else
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)])
11680     fi
11682 AC_SUBST([FLEX])
11684 AC_PATH_PROG(DIFF, diff)
11685 if test -z "$DIFF"; then
11686     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11688 AC_SUBST([DIFF])
11690 AC_PATH_PROG(UNIQ, uniq)
11691 if test -z "$UNIQ"; then
11692     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11694 AC_SUBST([UNIQ])
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
11707         GNUPATCH=$PATCH
11708     else
11709         if test -x "$with_gnu_patch"; then
11710             GNUPATCH=$with_gnu_patch
11711         else
11712             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11713         fi
11714     fi
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])
11719     else
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."
11723         else
11724             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11725         fi
11726     fi
11727 else
11728     GNUPATCH=$PATCH
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
11741     else
11742         AC_PATH_PROGS(GNUCP, gnucp cp)
11743     fi
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])
11746     fi
11747 else
11748     if test -x "$with_gnu_cp"; then
11749         GNUCP=$with_gnu_cp
11750     else
11751         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11752     fi
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])
11764 else
11765     case "$build_os" in
11766     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11767         x_GNUCP=[\#]
11768         GNUCP=''
11769         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11770         ;;
11771     *)
11772         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11773         ;;
11774     esac
11777 AC_SUBST(GNUPATCH)
11778 AC_SUBST(GNUCP)
11779 AC_SUBST(x_GNUCP)
11781 dnl ***************************************
11782 dnl testing assembler path
11783 dnl ***************************************
11784 ML_EXE=""
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 ;;
11790     esac
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])
11796     else
11797         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11798     fi
11801 AC_SUBST(ML_EXE)
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.])
11821     fi
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 ===================================================================
11843 R=""
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
11855     R="$R win"
11856 elif test "$_os" = "Darwin"; then
11857     R="$R osx"
11858 elif test "$_os" = "iOS"; then
11859     R="ios"
11860 elif test "$_os" = Android; then
11861     R="android"
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}])
11869 VCL_PLUGIN_INFO=$R
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 ===================================================================
11880 GTK3_CFLAGS=""
11881 GTK3_LIBS=""
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.'
11886     fi
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)], [])
11899     fi
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"`
11905     fi
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)
11918 GTK4_CFLAGS=""
11919 GTK4_LIBS=""
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.'
11923     fi
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)], [])
11936     fi
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)
11944     else
11945         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11946     fi
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])
11953     fi
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])
11963         else
11964             AC_MSG_RESULT([no])
11965             XVFB_RUN=no
11966         fi
11967     fi
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])
11971         fi
11972         enable_atspi_tests=no
11973     fi
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])
11980         fi
11981         enable_atspi_tests=no
11982     fi
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])
11988                        else
11989                            enable_atspi_tests=no
11990                        fi])
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 ===================================================================
12006 ENABLE_DBUS=""
12007 DBUS_CFLAGS=""
12008 DBUS_LIBS=""
12009 DBUS_GLIB_CFLAGS=""
12010 DBUS_GLIB_LIBS=""
12011 DBUS_HAVE_GLIB=""
12013 if test "$enable_dbus" = "no"; then
12014     test_dbus=no
12017 AC_MSG_CHECKING([whether to enable DBUS support])
12018 if test "$test_dbus" = "yes"; then
12019     ENABLE_DBUS="TRUE"
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],
12030         [
12031             DBUS_HAVE_GLIB="TRUE"
12032             AC_DEFINE(DBUS_HAVE_GLIB,1)
12033         ],
12034         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
12035     )
12036 else
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>
12052         <true/>"
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])
12059         fi
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
12062     fi
12063     # If not explicitly enabled or disabled, default
12064     if test -z "$enable_sdremote_bluetooth"; then
12065         case "$OS" in
12066         LINUX|MACOSX|WNT)
12067             # Default to yes for these
12068             enable_sdremote_bluetooth=yes
12069             ;;
12070         *)
12071             # otherwise no
12072             enable_sdremote_bluetooth=no
12073             ;;
12074         esac
12075     fi
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)], [])
12091                     SYSTEM_BLUEZ=TRUE
12092                 else
12093                     AC_MSG_RESULT([internal])
12094                     SYSTEM_BLUEZ=
12095                 fi
12096             else
12097                 AC_MSG_RESULT([no, dbus disabled])
12098                 ENABLE_SDREMOTE_BLUETOOTH=
12099                 SYSTEM_BLUEZ=
12100             fi
12101         else
12102             AC_MSG_RESULT([yes])
12103             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12104             SYSTEM_BLUEZ=
12105             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12106         <key>com.apple.security.device.bluetooth</key>
12107         <true/>"
12108         fi
12109     else
12110         AC_MSG_RESULT([no])
12111         ENABLE_SDREMOTE_BLUETOOTH=
12112         SYSTEM_BLUEZ=
12113     fi
12114 else
12115     ENABLE_SDREMOTE=
12116     SYSTEM_BLUEZ=
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}"
12138         fi
12139     else
12140         AC_MSG_RESULT([no])
12141     fi
12143 AC_SUBST(ENABLE_GIO)
12144 AC_SUBST(GIO_CFLAGS)
12145 AC_SUBST(GIO_LIBS)
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)
12179     else
12180         AC_MSG_RESULT([no])
12181     fi
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
12190    : # disable
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
12200 else
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
12206     fi
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])
12231         else
12232             enable_dconf=no
12233         fi])
12235 AC_MSG_CHECKING([whether to enable dconf])
12236 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12237     DCONF_CFLAGS=
12238     DCONF_LIBS=
12239     ENABLE_DCONF=
12240     AC_MSG_RESULT([no])
12241 else
12242     ENABLE_DCONF=TRUE
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])
12250 # pdf import?
12251 AC_MSG_CHECKING([whether to build the PDF import feature])
12252 ENABLE_PDFIMPORT=
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)
12257 else
12258     AC_MSG_RESULT([no])
12261 # Pdfium?
12262 AC_MSG_CHECKING([whether to build PDFium])
12263 ENABLE_PDFIUM=
12264 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12265     AC_MSG_RESULT([yes])
12266     ENABLE_PDFIUM=TRUE
12267     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12268 else
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}"
12282     else
12283         SYSTEM_OPENJPEG2=FALSE
12284         AC_MSG_RESULT([internal])
12285     fi
12287     AC_MSG_CHECKING([which Abseil library to use])
12288     if test "$with_system_abseil" = "yes"; then
12289         AC_MSG_RESULT([external])
12290         SYSTEM_ABSEIL=TRUE
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"
12301         AC_LANG_POP([C++])
12302         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12303         FilterLibs "${ABSEIL_LIBS}"
12304         ABSEIL_LIBS="${filteredlibs}"
12305     else
12306         AC_MSG_RESULT([internal])
12307     fi
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 ===================================================================
12317 ENABLE_POPPLER=
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)
12323 else
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}"
12348     else
12349         AC_MSG_RESULT([internal])
12350         SYSTEM_POPPLER=
12351         BUILD_TYPE="$BUILD_TYPE POPPLER"
12352     fi
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)
12360 # Skia?
12361 ENABLE_SKIA=
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
12370     fi
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
12376         else
12377             AC_MSG_RESULT([yes])
12378             ENABLE_SKIA_DEBUG=
12379         fi
12380         ENABLE_SKIA=TRUE
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])
12383         fi
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)
12391             SKIA_GPU=METAL
12392             AC_SUBST(SKIA_GPU)
12393         else
12394             AC_DEFINE(SK_GANESH,1)
12395             AC_DEFINE(SK_VULKAN,1)
12396             SKIA_GPU=VULKAN
12397             AC_SUBST(SKIA_GPU)
12398         fi
12399     else
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"
12402     fi
12404 else
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=
12421 LO_CLANG_VERSION=
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])
12428     else
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"`
12437             fi
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])
12443             else
12444                 AC_MSG_RESULT([no])
12445             fi
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])
12454             else
12455                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12456             fi
12457         else
12458             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12459             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12460         fi
12461     fi
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])
12467             LO_CLANG_CC=
12468             LO_CLANG_CXX=
12469         fi
12470     fi
12471     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12472         save_CXX="$CXX"
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
12483         AC_LANG_POP([C++])
12484         CXX="$save_CXX"
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.])
12487         fi
12488     fi
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.])
12494         else
12495             AC_MSG_WARN([Clang compiler not found.])
12496         fi
12497     else
12499         save_CXX="$CXX"
12500         CXX="$LO_CLANG_CXX"
12501         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12502         flag_sse2=-msse2
12503         flag_ssse3=-mssse3
12504         flag_sse41=-msse4.1
12505         flag_sse42=-msse4.2
12506         flag_avx=-mavx
12507         flag_avx2=-mavx2
12508         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12509         flag_avx512f=-mavx512f
12510         flag_f16c=-mf16c
12511         flag_fma=-mfma
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>
12519             int main () {
12520                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12521                 c = _mm_xor_si128 (a, b);
12522                 return 0;
12523             }
12524             ])],
12525             [can_compile_sse2=yes],
12526             [can_compile_sse2=no])
12527         AC_LANG_POP([C++])
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"
12532         fi
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>
12540             int main () {
12541                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12542                 c = _mm_maddubs_epi16 (a, b);
12543                 return 0;
12544             }
12545             ])],
12546             [can_compile_ssse3=yes],
12547             [can_compile_ssse3=no])
12548         AC_LANG_POP([C++])
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"
12553         fi
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>
12561             int main () {
12562                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12563                 c = _mm_cmpeq_epi64 (a, b);
12564                 return 0;
12565             }
12566             ])],
12567             [can_compile_sse41=yes],
12568             [can_compile_sse41=no])
12569         AC_LANG_POP([C++])
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"
12574         fi
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>
12582             int main () {
12583                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12584                 c = _mm_cmpgt_epi64 (a, b);
12585                 return 0;
12586             }
12587             ])],
12588             [can_compile_sse42=yes],
12589             [can_compile_sse42=no])
12590         AC_LANG_POP([C++])
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"
12595         fi
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>
12603             int main () {
12604                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12605                 c = _mm256_xor_ps(a, b);
12606                 return 0;
12607             }
12608             ])],
12609             [can_compile_avx=yes],
12610             [can_compile_avx=no])
12611         AC_LANG_POP([C++])
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"
12616         fi
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>
12624             int main () {
12625                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12626                 c = _mm256_maddubs_epi16(a, b);
12627                 return 0;
12628             }
12629             ])],
12630             [can_compile_avx2=yes],
12631             [can_compile_avx2=no])
12632         AC_LANG_POP([C++])
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"
12637         fi
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>
12645             int main () {
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);
12650                 return 0;
12651             }
12652             ])],
12653             [can_compile_avx512=yes],
12654             [can_compile_avx512=no])
12655         AC_LANG_POP([C++])
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"
12661         fi
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>
12669             int main () {
12670                 __m128i a = _mm_set1_epi32 (0);
12671                 __m128 c;
12672                 c = _mm_cvtph_ps(a);
12673                 return 0;
12674             }
12675             ])],
12676             [can_compile_f16c=yes],
12677             [can_compile_f16c=no])
12678         AC_LANG_POP([C++])
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"
12683         fi
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>
12691             int main () {
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);
12694                 return 0;
12695             }
12696             ])],
12697             [can_compile_fma=yes],
12698             [can_compile_fma=no])
12699         AC_LANG_POP([C++])
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"
12704         fi
12706         CXX="$save_CXX"
12707     fi
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])
12714     AC_LANG_PUSH([C])
12715     save_CC="$CC"
12716     CC="$LO_CLANG_CC"
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
12723     CC=$save_CC
12724     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12725         AC_MSG_RESULT([yes])
12726     else
12727         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12728         AC_MSG_RESULT([no])
12729     fi
12730     AC_LANG_POP([C])
12732     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12733     AC_LANG_PUSH([C++])
12734     save_CXX="$CXX"
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])
12743     else
12744         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12745         AC_MSG_RESULT([no])
12746     fi
12747     CXXFLAGS=$save_CXXFLAGS
12748     CXX=$save_CXX
12749     AC_LANG_POP([C++])
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])
12769 SYSTEM_GPGMEPP=
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
12796     else
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"
12805         fi
12806     fi
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])
12816     fi
12817     if test "$_os" = "Linux"; then
12818       uid=`id -u`
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"])
12839             else
12840               AC_MSG_RESULT([no])
12841             fi
12842           else
12843             AC_MSG_RESULT([no. missing or broken gpgconf?])
12844           fi
12845         else
12846           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12847         fi
12848       else
12849         AC_MSG_RESULT([no])
12850      fi
12851    fi
12852 else
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"
12869     NEED_ANT=TRUE
12870 else
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.])
12883     fi
12884 else
12885     AC_MSG_RESULT([no])
12886     ENABLE_MEDIAWIKI=
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
12901         fi
12902         if ! test -f $SAC_JAR; then
12903              AC_MSG_ERROR(sac.jar not found.)
12904         fi
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
12911             else
12912                 AC_MSG_ERROR(libxml.jar replacement not found.)
12913             fi
12914         elif ! test -f $LIBXML_JAR; then
12915             AC_MSG_ERROR(libxml.jar not found.)
12916         fi
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
12923             else
12924                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12925             fi
12926         elif ! test -f $FLUTE_JAR; then
12927             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12928         fi
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
12935             else
12936                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12937             fi
12938         elif ! test -f  $JFREEREPORT_JAR; then
12939                 AC_MSG_ERROR(jfreereport.jar not found.)
12940         fi
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
12947             else
12948                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12949             fi
12950         elif ! test -f $LIBLAYOUT_JAR; then
12951                 AC_MSG_ERROR(liblayout.jar not found.)
12952         fi
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
12959             else
12960                 AC_MSG_ERROR(libloader.jar replacement not found.)
12961             fi
12962         elif ! test -f  $LIBLOADER_JAR; then
12963             AC_MSG_ERROR(libloader.jar not found.)
12964         fi
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
12971             else
12972                 AC_MSG_ERROR(libformula.jar replacement not found.)
12973             fi
12974         elif ! test -f $LIBFORMULA_JAR; then
12975                 AC_MSG_ERROR(libformula.jar not found.)
12976         fi
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
12983             else
12984                 AC_MSG_ERROR(librepository.jar replacement not found.)
12985             fi
12986         elif ! test -f $LIBREPOSITORY_JAR; then
12987             AC_MSG_ERROR(librepository.jar not found.)
12988         fi
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
12995             else
12996                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12997             fi
12998         elif ! test -f $LIBFONTS_JAR; then
12999                 AC_MSG_ERROR(libfonts.jar not found.)
13000         fi
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
13007             else
13008                 AC_MSG_ERROR(libserializer.jar replacement not found.)
13009             fi
13010         elif ! test -f $LIBSERIALIZER_JAR; then
13011                 AC_MSG_ERROR(libserializer.jar not found.)
13012         fi
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
13019             else
13020                 AC_MSG_ERROR(libbase.jar replacement not found.)
13021             fi
13022         elif ! test -f $LIBBASE_JAR; then
13023             AC_MSG_ERROR(libbase.jar not found.)
13024         fi
13026     else
13027         AC_MSG_RESULT([internal])
13028         SYSTEM_JFREEREPORT=
13029         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
13030         NEED_ANT=TRUE
13031     fi
13032     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
13033 else
13034     AC_MSG_RESULT([no])
13035     ENABLE_REPORTBUILDER=
13036     SYSTEM_JFREEREPORT=
13038 AC_SUBST(ENABLE_REPORTBUILDER)
13039 AC_SUBST(SYSTEM_JFREEREPORT)
13040 AC_SUBST(SAC_JAR)
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])
13064         SYSTEM_BSH=TRUE
13065         if test -z $BSH_JAR; then
13066             BSH_JAR=/usr/share/java/bsh.jar
13067         fi
13068         if ! test -f $BSH_JAR; then
13069             AC_MSG_ERROR(bsh.jar not found.)
13070         fi
13071     else
13072         AC_MSG_RESULT([internal])
13073         SYSTEM_BSH=
13074         BUILD_TYPE="$BUILD_TYPE BSH"
13075     fi
13076 else
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)
13083 AC_SUBST(BSH_JAR)
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])
13097         SYSTEM_RHINO=TRUE
13098         if test -z $RHINO_JAR; then
13099             RHINO_JAR=/usr/share/java/js.jar
13100         fi
13101         if ! test -f $RHINO_JAR; then
13102             AC_MSG_ERROR(js.jar not found.)
13103         fi
13104     else
13105         AC_MSG_RESULT([internal])
13106         SYSTEM_RHINO=
13107         BUILD_TYPE="$BUILD_TYPE RHINO"
13108         NEED_ANT=TRUE
13109     fi
13110 else
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
13121 # platforms there.
13122 supports_multilib=
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"
13127     fi
13128     ;;
13130     ;;
13131 esac
13133 dnl ===================================================================
13134 dnl QT5 Integration
13135 dnl ===================================================================
13137 QT5_CFLAGS=""
13138 QT5_LIBS=""
13139 QMAKE5="qmake"
13140 MOC5="moc"
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" \)
13148 then
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"
13154     fi
13156     qt5_test_include="QtWidgets/qapplication.h"
13157     if test "$_os" = "Emscripten"; then
13158         qt5_test_library="libQt5Widgets.a"
13159     else
13160         qt5_test_library="libQt5Widgets.so"
13161     fi
13163     dnl Check for qmake5
13164     if test -n "$QT5DIR"; then
13165         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13166     else
13167         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13168     fi
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".])
13171     else
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".])
13175         fi
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.])
13180         else
13181             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13182         fi
13183     fi
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])
13191     qt5_incdir="no"
13192     for inc_dir in $qt5_incdirs; do
13193         if test -r "$inc_dir/$qt5_test_include"; then
13194             qt5_incdir="$inc_dir"
13195             break
13196         fi
13197     done
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".])
13201     fi
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
13209     AC_LANG_POP([C++])
13211     AC_MSG_CHECKING([for Qt5 libraries])
13212     qt5_libdir="no"
13213     for lib_dir in $qt5_libdirs; do
13214         if test -r "$lib_dir/$qt5_test_library"; then
13215             qt5_libdir="$lib_dir"
13216             break
13217         fi
13218     done
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".])
13222     fi
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"
13227         fi
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}])
13230         fi
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".])
13235         fi
13236         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13237             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13238         fi
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.])
13242         fi
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'.])
13245         fi
13246     fi
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"
13253     fi
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"
13259         QT5_USING_X11=1
13260         AC_DEFINE(QT5_USING_X11)
13261     fi
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".])
13269     fi
13271     if test "$test_gstreamer_1_0" = yes; then
13272         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13273                 QT5_HAVE_GOBJECT=1
13274                 AC_DEFINE(QT5_HAVE_GOBJECT)
13275             ],
13276             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13277         )
13278     fi
13280 AC_SUBST(QT5_CFLAGS)
13281 AC_SUBST(QT5_LIBS)
13282 AC_SUBST(MOC5)
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 ===================================================================
13292 QT6_CFLAGS=""
13293 QT6_LIBS=""
13294 QMAKE6="qmake"
13295 MOC6="moc"
13296 QT6_PLATFORMS_SRCDIR=""
13297 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13298         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13299 then
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"
13305     fi
13307     qt6_test_include="QtWidgets/qapplication.h"
13308     if test "$_os" = "Emscripten"; then
13309         qt6_test_library="libQt6Widgets.a"
13310     else
13311         qt6_test_library="libQt6Widgets.so"
13312     fi
13314     dnl Check for qmake6
13315     if test -n "$QT6DIR"; then
13316         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13317     else
13318         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13319     fi
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".])
13322     else
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".])
13326         fi
13327         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13328     fi
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])
13336     qt6_incdir="no"
13337     for inc_dir in $qt6_incdirs; do
13338         if test -r "$inc_dir/$qt6_test_include"; then
13339             qt6_incdir="$inc_dir"
13340             break
13341         fi
13342     done
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".])
13346     fi
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
13354     AC_LANG_POP([C++])
13356     AC_MSG_CHECKING([for Qt6 libraries])
13357     qt6_libdir="no"
13358     for lib_dir in $qt6_libdirs; do
13359         if test -r "$lib_dir/$qt6_test_library"; then
13360             qt6_libdir="$lib_dir"
13361             break
13362         fi
13363     done
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".])
13367     fi
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"
13372         fi
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}])
13375         fi
13376     fi
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"
13383     fi
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"
13389         QT6_USING_X11=1
13390         AC_DEFINE(QT6_USING_X11)
13391     fi
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"
13398         else
13399             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13400         fi
13401     done
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".])
13406     else
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.])
13410         fi
13411         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13412     fi
13414 AC_SUBST(QT6_CFLAGS)
13415 AC_SUBST(QT6_LIBS)
13416 AC_SUBST(MOC6)
13417 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13419 dnl ===================================================================
13420 dnl KF5 Integration
13421 dnl ===================================================================
13423 KF5_CFLAGS=""
13424 KF5_LIBS=""
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" \)
13428 then
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`"
13433     fi
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"
13439     fi
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"
13450     fi
13452     dnl Check for KF5 headers
13453     AC_MSG_CHECKING([for KF5 headers])
13454     kf5_incdir="no"
13455     for kf5_check in $kf5_incdirs; do
13456         if test -r "$kf5_check/$kf5_test_include"; then
13457             kf5_incdir="$kf5_check/KF5"
13458             break
13459         fi
13460     done
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".])
13464     fi
13466     dnl Check for KF5 libraries
13467     AC_MSG_CHECKING([for KF5 libraries])
13468     kf5_libdir="no"
13469     for kf5_check in $kf5_libdirs; do
13470         if test -r "$kf5_check/$kf5_test_library"; then
13471             kf5_libdir="$kf5_check"
13472             break
13473         fi
13474     done
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".])
13479     fi
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"
13487     fi
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;
13498        else return 1;
13500        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13501     CXXFLAGS=$save_CXXFLAGS
13502     AC_LANG_POP([C++])
13504 AC_SUBST(KF5_CFLAGS)
13505 AC_SUBST(KF5_LIBS)
13507 dnl ===================================================================
13508 dnl KF6 Integration
13509 dnl ===================================================================
13511 KF6_CFLAGS=""
13512 KF6_LIBS=""
13513 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13514 then
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`"
13519     fi
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"
13525     fi
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])
13533     kf6_incdir="no"
13534     for kf6_check in $kf6_incdirs; do
13535         if test -r "$kf6_check/$kf6_test_include"; then
13536             kf6_incdir="$kf6_check/KF6"
13537             break
13538         fi
13539     done
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".])
13543     fi
13545     dnl Check for KF6 libraries
13546     AC_MSG_CHECKING([for KF6 libraries])
13547     kf6_libdir="no"
13548     for kf6_check in $kf6_libdirs; do
13549         if test -r "$kf6_check/$kf6_test_library"; then
13550             kf6_libdir="$kf6_check"
13551             break
13552         fi
13553     done
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".])
13558     fi
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;
13574        else return 1;
13576        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13577     CXXFLAGS=$save_CXXFLAGS
13578     AC_LANG_POP([C++])
13580 AC_SUBST(KF6_CFLAGS)
13581 AC_SUBST(KF6_LIBS)
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"
13594 else
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"
13610 WITH_THEMES=""
13611 if test "x$with_theme" != "xno"; then
13612     for theme in $with_theme; do
13613         case $theme in
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]) ;;
13616         esac
13617     done
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])
13630 else
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])
13652     fi
13653 else
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])
13665     WITH_FONTS=TRUE
13666     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13667     AC_DEFINE(HAVE_MORE_FONTS)
13668 else
13669     AC_MSG_RESULT([no])
13670     WITH_FONTS=
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])
13680     WITH_NOTO_FONT=
13681 else
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])
13696 else
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])
13702         fi
13703         AC_MSG_RESULT([yes])
13704         ENABLE_ONLINE_UPDATE="TRUE"
13705     else
13706         AC_MSG_RESULT([no])
13707     fi
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)
13722 else
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])
13731 else
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])
13740 else
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])
13749 else
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])
13758 else
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])
13767 else
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])
13777     fi
13779 AC_SUBST(PRIVACY_POLICY_URL)
13780 dnl ===================================================================
13781 dnl Test whether we need bzip2
13782 dnl ===================================================================
13783 SYSTEM_BZIP2=
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
13787         SYSTEM_BZIP2=TRUE
13788         AC_MSG_RESULT([yes])
13789         PKG_CHECK_MODULES(BZIP2, bzip2)
13790         FilterLibs "${BZIP2_LIBS}"
13791         BZIP2_LIBS="${filteredlibs}"
13792     else
13793         AC_MSG_RESULT([no])
13794         BUILD_TYPE="$BUILD_TYPE BZIP2"
13795     fi
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])
13808 else
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])
13823     ENABLE_SILENT_MSI=
13824 else
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])
13836     ENABLE_WIX=
13837 else
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])
13843     fi
13844     ENABLE_WIX=TRUE
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"
13854         fi
13855     else
13856         XINERAMALIB="$x_libraries"
13857     fi
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
13860         # per default
13861         USE_XINERAMA=TRUE
13862         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13863             XINERAMA_LINK=dynamic
13864         else
13865             XINERAMA_LINK=static
13866         fi
13867     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13868         # we have only the dynamic version
13869         USE_XINERAMA=TRUE
13870         XINERAMA_LINK=dynamic
13871     elif test -e "$XINERAMALIB/libXinerama.a"; then
13872         # static version
13873         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13874             USE_XINERAMA=TRUE
13875             XINERAMA_LINK=static
13876         else
13877             USE_XINERAMA=
13878             XINERAMA_LINK=none
13879         fi
13880     else
13881         # no Xinerama
13882         USE_XINERAMA=
13883         XINERAMA_LINK=none
13884     fi
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"
13892         fi
13893         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13894         if test "$_os" = "FreeBSD"; then
13895             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13896         fi
13897         if test "$_os" = "Linux"; then
13898             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13899         fi
13900         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13901             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13902     else
13903         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13904     fi
13905 else
13906     USE_XINERAMA=
13907     XINERAMA_LINK=none
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])
13920 else
13921     ENABLE_CAIRO_RGBA=
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
13935         SYSTEM_CAIRO=TRUE
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])
13945             AC_LANG_PUSH([C])
13946             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13947 #ifdef PictStandardA8
13948 #else
13949       return fail;
13950 #endif
13951 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13953             AC_LANG_POP([C])
13954         fi
13955     else
13956         AC_MSG_RESULT([no])
13957         BUILD_TYPE="$BUILD_TYPE CAIRO"
13958     fi
13960     if test "$enable_cairo_canvas" != no; then
13961         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13962         ENABLE_CAIRO_CANVAS=TRUE
13963     fi
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 ===================================================================
13993 SYSTEM_LIBLANGTAG=
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}"
14004 else
14005     SYSTEM_LIBLANGTAG=
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"
14011     else
14012         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
14013     fi
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])
14048         fi
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])
14051         fi
14052         JVM_ONE_PATH_CHECK="$with_jvm_path"
14053         AC_SUBST(JVM_ONE_PATH_CHECK)
14054     else
14055         AC_MSG_RESULT([no])
14056     fi
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
14065 LC_ALL=$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`"
14073             else
14074                 with_ant_home="$LODE_HOME/opt/ant"
14075             fi
14076         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14077             with_ant_home="$LODE_HOME/opt/ant"
14078         fi
14079     fi
14080     if test -z "$with_ant_home"; then
14081         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14082     else
14083         if test "$_os" = "WINNT"; then
14084             # AC_PATH_PROGS needs unix path
14085             with_ant_home=`cygpath -u "$with_ant_home"`
14086         fi
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
14092     fi
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])
14096     else
14097         # resolve relative or absolute symlink
14098         while test -h "$ANT"; do
14099             a_cwd=`pwd`
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"`"
14105             cd "$a_cwd"
14106         done
14108         AC_MSG_CHECKING([if $ANT works])
14109         mkdir -p conftest.dir
14110         a_cwd=$(pwd)
14111         cd conftest.dir
14112         cat > conftest.java << EOF
14113         public class conftest {
14114             int testmethod(int a, int b) {
14115                     return a + b;
14116             }
14117         }
14120         cat > conftest.xml << EOF
14121         <project name="conftest" default="conftest">
14122         <target name="conftest">
14123             <javac srcdir="." includes="conftest.java">
14124             </javac>
14125         </target>
14126         </project>
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"`
14136                 fi
14137             else
14138                 ANT_HOME="$WITH_ANT_HOME"
14139             fi
14140         else
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!])
14145         fi
14146         cd "$a_cwd"
14147         rm -fr conftest.dir
14148     fi
14149     if test -z "$ANT_HOME"; then
14150         ANT_HOME="NO_ANT_HOME"
14151     else
14152         PathFormat "$ANT_HOME"
14153         ANT_HOME="$formatted_path"
14154         PathFormat "$ANT"
14155         ANT="$formatted_path"
14156     fi
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"
14163         else
14164             if test -f $ANT_HOME/ant.jar; then
14165                 ANT_LIB="$ANT_HOME"
14166             else
14167                 if test -f /usr/share/java/ant.jar; then
14168                     ANT_LIB=/usr/share/java
14169                 else
14170                     if test -f /usr/share/ant-core/lib/ant.jar; then
14171                         ANT_LIB=/usr/share/ant-core/lib
14172                     else
14173                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14174                             ANT_LIB="$ANT_HOME/lib/ant"
14175                         else
14176                             if test -f /usr/share/lib/ant/ant.jar; then
14177                                 ANT_LIB=/usr/share/lib/ant
14178                             else
14179                                 AC_MSG_ERROR([Ant libraries not found!])
14180                             fi
14181                         fi
14182                     fi
14183                 fi
14184             fi
14185         fi
14186         PathFormat "$ANT_LIB"
14187         ANT_LIB="$formatted_path"
14188         AC_MSG_RESULT([Ant lib directory found.])
14189     fi
14191     ant_minver=1.6.0
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])
14205     else
14206         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14207     fi
14209     rm -f conftest* core core.* *.core
14211 AC_SUBST(ANT)
14212 AC_SUBST(ANT_HOME)
14213 AC_SUBST(ANT_LIB)
14215 OOO_JUNIT_JAR=
14216 HAMCREST_JAR=
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
14224         else
14225            if test -e /usr/share/lib/java/junit.jar; then
14226               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14227            else
14228               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14229            fi
14230         fi
14231     else
14232         OOO_JUNIT_JAR=$with_junit
14233     fi
14234     if test "$_os" = "WINNT"; then
14235         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14236     fi
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])
14240     else
14241         AC_MSG_ERROR(
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])
14244     fi
14245     rm -f conftest.class conftest.java
14246     if test $OOO_JUNIT_JAR != ""; then
14247         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14248     fi
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])
14254     else
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
14264             else
14265                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14266             fi
14267         else
14268             HAMCREST_JAR=$with_hamcrest
14269         fi
14270         if test "$_os" = "WINNT"; then
14271             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14272         fi
14273         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14274             AC_MSG_RESULT([$HAMCREST_JAR])
14275         else
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])
14278         fi
14279     fi
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...
14285 LC_ALL=C
14287 AC_SUBST(SCPDEFS)
14290 # check for wget and curl
14292 WGET=
14293 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
14300     # wget new enough?
14301     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14302     if test $? -eq 0; then
14303         WGET=$i
14304         break
14305     fi
14306 done
14308 if test -z "$WGET" -a -z "$CURL"; then
14309     AC_MSG_ERROR([neither wget nor curl found!])
14314 AC_SUBST(WGET)
14315 AC_SUBST(CURL)
14318 # check for sha256sum
14320 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
14324     ret=$?
14325     if test $ret -eq 0; then
14326         SHA256SUM="$i -a 256"
14327         break
14328     fi
14329 done
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
14334         ret=$?
14335         if test $ret -eq 0; then
14336             SHA256SUM=$i
14337             break
14338         fi
14339     done
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
14368     WITH_LANG=
14371 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14372     AC_MSG_RESULT([en-US])
14373 else
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"
14381         else
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.])
14385             fi
14386         fi
14387     fi
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"
14393         else
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.])
14397             fi
14398         fi
14399     fi
14401 AC_SUBST(MSGFMT)
14402 AC_SUBST(MSGUNIQ)
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
14409            break
14410         fi
14411     done
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])
14415     fi
14416 done
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"
14440         fi
14441     done
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"
14447     fi
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
14458         lang=${locale%_*}
14460         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14462         case $lang in
14463         hi|mr*ne)
14464             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14465             ;;
14466         bg|ru)
14467             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14468             ;;
14469         esac
14470     done
14471 else
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}])
14482         fi
14483     done
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}])
14493         fi
14494     done
14496 AC_SUBST(GIT_LINK_SRC)
14498 dnl branding
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"
14508 else
14509     if ! test -d $with_branding ; then
14510         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14511     else
14512         AC_MSG_RESULT([$with_branding])
14513         CUSTOM_BRAND_DIR="$with_branding"
14514         for lfile in $brand_files
14515         do
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"
14519             else
14520                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14521             fi
14522         done
14523         check_for_progress="yes"
14524     fi
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])
14533 PROGRESSBARCOLOR=
14534 PROGRESSSIZE=
14535 PROGRESSPOSITION=
14536 PROGRESSFRAMECOLOR=
14537 PROGRESSTEXTCOLOR=
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])
14543 else
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])
14565 else
14566     AC_MSG_RESULT([not set])
14568 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14570 OOO_VENDOR=
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
14576         OOO_VENDOR="$USER"
14577     fi
14579     if test -z "$OOO_VENDOR"; then
14580         OOO_VENDOR="`id -u -n`"
14581     fi
14583     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14584 else
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"
14598         else
14599             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14600         fi
14602         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14603     else
14604         ANDROID_PACKAGE_NAME="$with_android_package_name"
14605         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14606     fi
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
14613     AC_MSG_RESULT(yes)
14614 else
14615     WITH_COMPAT_OOWRAPPERS=
14616     AC_MSG_RESULT(no)
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))]
14636 AC_SUBST(LIBDIR)
14638 DATADIR=[$(eval echo $(eval echo $datadir))]
14639 AC_SUBST(DATADIR)
14641 MANDIR=[$(eval echo $(eval echo $mandir))]
14642 AC_SUBST(MANDIR)
14644 DOCDIR=[$(eval echo $(eval echo $docdir))]
14645 AC_SUBST(DOCDIR)
14647 BINDIR=[$(eval echo $(eval echo $bindir))]
14648 AC_SUBST(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="\"\""
14666 else
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="\"\""
14679 else
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="\"\""
14692 else
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
14707     nodep=TRUE
14708     AC_MSG_RESULT([no])
14709 else
14710     AC_MSG_RESULT([yes])
14712 AC_SUBST(nodep)
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
14721         PARALLELISM=0
14722     else
14723         PARALLELISM=$with_parallelism
14724     fi
14725 else
14726     if test "$enable_icecream" = "yes"; then
14727         PARALLELISM="40"
14728     else
14729         case `uname -s` in
14731         Darwin|FreeBSD|NetBSD|OpenBSD)
14732             PARALLELISM=`sysctl -n hw.ncpu`
14733             ;;
14735         Linux)
14736             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14737         ;;
14738         # what else than above does profit here *and* has /proc?
14739         *)
14740             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14741             ;;
14742         esac
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).
14746     fi
14749 if test $PARALLELISM -eq 0; then
14750     AC_MSG_RESULT([explicit make -j option needed])
14751 else
14752     AC_MSG_RESULT([$PARALLELISM])
14754 AC_SUBST(PARALLELISM)
14757 # Set up ILIB for MSVC build
14759 ILIB1=
14760 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14761     ILIB="."
14762     if test -n "$JAVA_HOME"; then
14763         ILIB="$ILIB;$JAVA_HOME/lib"
14764     fi
14765     ILIB1=-link
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"
14774     fi
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"
14782     else
14783         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14784         ILIB="$ILIB;$formatted_path"
14785     fi
14787     if test "$cross_compiling" != "yes"; then
14788         ILIB_FOR_BUILD="$ILIB"
14789     fi
14791 AC_SUBST(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++])
14808 save_CXX=$CXX
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([
14815         struct S {
14816             consteval S() { i = 1; }
14817             int i = 0;
14818         };
14819         S const s;
14821         struct S1 {
14822              int a;
14823              consteval S1(int n): a(n) {}
14824         };
14825         struct S2 {
14826             S1 x;
14827             S2(): x(0) {}
14828         };
14830         struct S3 {
14831             consteval S3() {}
14832             union {
14833                 int a;
14834                 unsigned b = 0;
14835             };
14836         };
14837         void f() { S3(); }
14839         struct S4 { consteval S4() = default; };
14840         void f4(bool b) { b ? S4() : S4(); }
14842         struct S5 {
14843             consteval S5() { c = 0; }
14844             char * f() { return &c; }
14845             union {
14846                 char c;
14847                 int i;
14848             };
14849         };
14850         auto s5 = S5().f();
14851     ], [
14852         return (s.i == 1) ? 0 : 1;
14853     ])], [
14854         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14855         AC_MSG_RESULT([yes])
14856     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14857 CXX=$save_CXX
14858 CXXFLAGS=$save_CXXFLAGS
14859 AC_LANG_POP([C++])
14861 # ===================================================================
14862 # Creating bigger shared library to link against
14863 # ===================================================================
14864 AC_MSG_CHECKING([whether to create huge library])
14865 MERGELIBS=
14866 MERGELIBS_MORE=
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"
14878         fi
14879         MERGELIBS="TRUE"
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"
14886         fi
14887         MERGELIBS="TRUE"
14888         AC_MSG_RESULT([yes])
14889         AC_DEFINE(ENABLE_MERGELIBS)
14890     else
14891         AC_MSG_ERROR([unknown value --enable-mergelibs=$enable_mergelibs])
14892     fi
14893 else
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])
14905 ICECREAM_RUN=
14906 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14907     ICECREAM_RUN=icerun
14908     AC_MSG_RESULT([yes])
14909 else
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
14920     x_ICECC_VERSION=
14922 AC_SUBST(x_ICECC_VERSION)
14923 AC_SUBST(ICECC_VERSION)
14925 dnl ===================================================================
14927 AC_MSG_CHECKING([MPL subset])
14928 MPL_SUBSET=
14929 LICENSE="LGPL"
14931 if test "$enable_mpl_subset" = "yes"; then
14932     mpl_error_string=
14933     newline=$'\n    *'
14934     warn_report=false
14935     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14936         warn_report=true
14937     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14938         warn_report=true
14939     fi
14940     if test "$warn_report" = "true"; then
14941         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14942     fi
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."
14945     fi
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."
14948     fi
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."
14952         fi
14953     fi
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."
14957     fi
14958     denied_themes=
14959     filtered_themes=
14960     for theme in $WITH_THEMES; do
14961         case $theme in
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" ;;
14964         *)
14965             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14966         esac
14967     done
14968     if test "x$denied_themes" != "x"; then
14969         if test "x$filtered_themes" == "x"; then
14970             filtered_themes="colibre"
14971         fi
14972         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14973     fi
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."
14979     fi
14981     if test "x$mpl_error_string" != "x"; then
14982         AC_MSG_ERROR([$mpl_error_string])
14983     fi
14985     MPL_SUBSET="TRUE"
14986     LICENSE="MPL-2.0"
14987     AC_DEFINE(MPL_HAVE_SUBSET)
14988     AC_MSG_RESULT([only])
14989 else
14990     AC_MSG_RESULT([no restrictions])
14992 AC_SUBST(MPL_SUBSET)
14993 AC_SUBST(LICENSE)
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
15008 else
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`
15028             rm $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])
15031             fi
15032             echo $EICAR_STRING > $BUILDDIR/eicar
15033             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
15034             rm $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])
15037             fi
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"
15039         else
15040             AC_MSG_RESULT([not found])
15041         fi
15042     else
15043         AC_MSG_RESULT([n/a])
15044     fi
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
15054     WITH_COREDUMPCTL=
15055 else
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"
15062     then
15063         if test -z "$with_coredumpctl"; then
15064             WITH_COREDUMPCTL=
15065         else
15066             if test -z "$COREDUMPCTL"; then
15067                 AC_MSG_ERROR([coredumpctl not found])
15068             fi
15069             if test -z "$JQ"; then
15070                 AC_MSG_ERROR([jq not found])
15071             fi
15072             if test -z "$SYSTEMD_ESCAPE"; then
15073                 AC_MSG_ERROR([systemd-escape not found])
15074             fi
15075             if test -z "$SYSTEMD_RUN"; then
15076                 AC_MSG_ERROR([systemd-run not found])
15077             fi
15078         fi
15079     else
15080         WITH_COREDUMPCTL=TRUE
15081     fi
15083 if test -z "$WITH_COREDUMPCTL"; then
15084     AC_MSG_RESULT([no])
15085 else
15086     AC_MSG_RESULT([yes])
15088 AC_SUBST(COREDUMPCTL)
15089 AC_SUBST(JQ)
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...])
15099 AC_SUBST(COMPATH)
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"
15108     else
15109         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15110         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15111     fi
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"
15129 else
15130     FIND=find
15131     SORT=sort
15134 AC_SUBST(ATL_INCLUDE)
15135 AC_SUBST(ATL_LIB)
15136 AC_SUBST(FIND)
15137 AC_SUBST(SORT)
15138 AC_SUBST(WIN_GREP)
15139 AC_SUBST(WIN_LS)
15140 AC_SUBST(WIN_TOUCH)
15142 AC_SUBST(BUILD_TYPE)
15144 AC_SUBST(SOLARINC)
15146 PathFormat "$PERL"
15147 PERL="$formatted_path"
15148 AC_SUBST(PERL)
15150 if test -n "$TMPDIR"; then
15151     TEMP_DIRECTORY="$TMPDIR"
15152 else
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"
15166     case "$host_os" in
15167     cygwin*|wsl*)
15168         pathmunge "$MSVC_HOST_PATH" "before"
15169         ;;
15170     esac
15171 else
15172     LO_PATH="$PATH"
15174     case "$host_os" in
15176     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15177         if test "$ENABLE_JAVA" != ""; then
15178             pathmunge "$JAVA_HOME/bin" "after"
15179         fi
15180         ;;
15182     cygwin*|wsl*)
15183         # Win32 make needs native paths
15184         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15185             LO_PATH=`cygpath -p -m "$PATH"`
15186         fi
15187         if test "$WIN_BUILD_ARCH" = "x64"; then
15188             # needed for msi packaging
15189             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15190         fi
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"
15195         fi
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"
15199         fi
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"
15208         fi
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"
15213             fi
15214             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15215                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15216             fi
15217             pathmunge "$JAVA_HOME/bin" "before"
15218         fi
15219         pathmunge "$MSVC_HOST_PATH" "before"
15220         ;;
15222     solaris*)
15223         pathmunge "/usr/css/bin" "before"
15224         if test "$ENABLE_JAVA" != ""; then
15225             pathmunge "$JAVA_HOME/bin" "after"
15226         fi
15227         ;;
15228     esac
15231 AC_SUBST(LO_PATH)
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=
15236 else
15237     x_LO_ELFCHECK_ALLOWLIST=[\#]
15239 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15240 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15242 libo_FUZZ_SUMMARY
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
15262                  Makefile
15263                  bin/bffvalidator.sh
15264                  bin/odfvalidator.sh
15265                  bin/officeotron.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])
15318 AC_OUTPUT
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"
15329 else
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"
15338 else
15339     echo > config_host_lang.mk.stamp
15343 if test \( "$STALE_MAKE" = "TRUE" \) \
15344         -a "$build_os" = "cygwin"; then
15346 cat << _EOS
15347 ****************************************************************************
15348 WARNING:
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
15355  cd /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
15358  chmod +x 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.
15379 _EOS
15383 cat << _EOF
15384 ****************************************************************************
15386 To show information on various make targets and make flags, run:
15387 $GNUMAKE help
15389 To just build, run:
15390 $GNUMAKE
15392 _EOF
15394 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15395     cat << _EOF
15396 After the build has finished successfully, you can immediately run what you built using the command:
15397 _EOF
15399     if test $_os = Darwin; then
15400         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15401     else
15402         echo instdir/program/soffice
15403     fi
15404     cat << _EOF
15406 If you want to run the unit tests, run:
15407 $GNUMAKE check
15409 _EOF
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"
15415     echo
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: