Bump version to 24.04.8.5
[LibreOffice.git] / configure.ac
blob29f55de40efb5b8f07f7f9d08689a4647f96abc1
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.8.5],[],[],[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     with_gssapi=no
1004     if test -n "$LODE_HOME" ; then
1005         mac_sanitize_path
1006         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1007     fi
1008     enable_gpgmepp=no
1009     _os=iOS
1010     enable_mpl_subset=yes
1011     enable_lotuswordpro=no
1012     disable_database_connectivity_dependencies
1013     enable_coinmp=no
1014     enable_lpsolve=no
1015     enable_extension_integration=no
1016     enable_xmlhelp=no
1017     with_ppds=no
1018     if test "$enable_ios_simulator" = "yes"; then
1019         host=x86_64-apple-darwin
1020     fi
1021     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1022     LINKFLAGSSHL="-dynamiclib"
1024     # -fPIC is default
1025     PICSWITCH=""
1027     DLLPOST=".dylib"
1029     # -undefined error is the default
1030     LINKFLAGSNOUNDEFS=""
1032     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1033     # part, so use aarch64-apple-darwin for now.
1034     HOST_PLATFORM=aarch64-apple-darwin
1036     # Apple's Clang uses "arm64"
1037     host_cpu_for_clang=arm64
1040 freebsd*)
1041     using_freetype_fontconfig=yes
1042     using_x11=yes
1043     build_skia=yes
1044     AC_MSG_CHECKING([the FreeBSD operating system release])
1045     if test -n "$with_os_version"; then
1046         OSVERSION="$with_os_version"
1047     else
1048         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1049     fi
1050     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1051     AC_MSG_CHECKING([which thread library to use])
1052     if test "$OSVERSION" -lt "500016"; then
1053         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054         PTHREAD_LIBS="-pthread"
1055     elif test "$OSVERSION" -lt "502102"; then
1056         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057         PTHREAD_LIBS="-lc_r"
1058     else
1059         PTHREAD_CFLAGS=""
1060         PTHREAD_LIBS="-pthread"
1061     fi
1062     AC_MSG_RESULT([$PTHREAD_LIBS])
1063     _os=FreeBSD
1064     ;;
1066 *netbsd*)
1067     using_freetype_fontconfig=yes
1068     using_x11=yes
1069     test_gtk3_kde5=no
1070     build_skia=yes
1071     PTHREAD_LIBS="-pthread -lpthread"
1072     _os=NetBSD
1073     ;;
1075 openbsd*)
1076     using_freetype_fontconfig=yes
1077     using_x11=yes
1078     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1079     PTHREAD_LIBS="-pthread"
1080     _os=OpenBSD
1081     ;;
1083 dragonfly*)
1084     using_freetype_fontconfig=yes
1085     using_x11=yes
1086     build_skia=yes
1087     PTHREAD_LIBS="-pthread"
1088     _os=DragonFly
1089     ;;
1091 linux-android*)
1092     # API exists, but seems not really usable since Android 7 AFAIK
1093     usable_dlapi=no
1094     using_freetype_fontconfig=yes
1095     using_headless_plugin=no
1096     using_x11=no
1097     build_crypto=no
1098     test_openldap=no
1099     test_system_freetype=no
1100     test_webdav=no
1101     with_gssapi=no
1102     disable_database_connectivity_dependencies
1103     enable_lotuswordpro=no
1104     enable_mpl_subset=yes
1105     enable_cairo_canvas=no
1106     enable_coinmp=yes
1107     enable_lpsolve=no
1108     enable_odk=no
1109     enable_python=no
1110     enable_xmlhelp=no
1111     _os=Android
1112     ;;
1114 haiku*)
1115     using_freetype_fontconfig=yes
1116     using_x11=no
1117     test_gtk3=no
1118     test_gtk3_kde5=no
1119     test_kf5=yes
1120     test_kf6=yes
1121     enable_odk=no
1122     enable_coinmp=no
1123     enable_pdfium=no
1124     enable_sdremote=no
1125     enable_postgresql_sdbc=no
1126     enable_firebird_sdbc=no
1127     _os=Haiku
1128     ;;
1130 emscripten)
1131     # API currently just exists in headers, not code
1132     usable_dlapi=no
1133     using_freetype_fontconfig=yes
1134     using_x11=yes
1135     test_openldap=no
1136     test_qt5=yes
1137     test_split_debug=yes
1138     test_system_freetype=no
1139     enable_compiler_plugins=no
1140     enable_customtarget_components=yes
1141     enable_split_debug=yes
1142     enable_wasm_strip=yes
1143     with_system_zlib=no
1144     with_theme="colibre"
1145     _os=Emscripten
1146     ;;
1149     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1150     ;;
1151 esac
1153 AC_SUBST(HOST_PLATFORM)
1155 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1156     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1159 # Set defaults, if not set by platform
1160 test "${test_cups+set}" = set || test_cups="$using_x11"
1161 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1162 test "${test_gen+set}" = set || test_gen="$using_x11"
1163 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1164 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1165 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1166 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1167 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1168 # don't handle test_qt5, so it can disable test_kf5 later
1169 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1170 test "${test_randr+set}" = set || test_randr="$using_x11"
1171 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1172 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1174 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1175 # Make sure fontconfig and freetype test both either system or not
1176 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1177 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1179 # convenience / platform overriding "fixes"
1180 # Don't sort!
1181 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1182 test "$test_kf5" = yes && test_qt5=yes
1183 test "$test_gtk3" != yes && enable_gtk3=no
1184 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1185 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1186 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1188 # Keep in sync with the above $using_x11 depending test default list
1189 disable_x11_tests()
1191     test_cups=no
1192     test_dbus=no
1193     test_gen=no
1194     test_gstreamer_1_0=no
1195     test_gtk3_kde5=no
1196     test_gtk3=no
1197     test_gtk4=no
1198     test_kf5=no
1199     test_kf6=no
1200     test_qt5=no
1201     test_qt6=no
1202     test_randr=no
1203     test_xrender=no
1206 test "$using_x11" = yes && USING_X11=TRUE
1208 if test "$using_freetype_fontconfig" = yes; then
1209     AC_DEFINE(USE_HEADLESS_CODE)
1210     USE_HEADLESS_CODE=TRUE
1211     if test "$using_headless_plugin" = yes; then
1212         AC_DEFINE(ENABLE_HEADLESS)
1213         ENABLE_HEADLESS=TRUE
1214     fi
1215 else
1216     test_fontconfig=no
1217     test_freetype=no
1220 AC_SUBST(ENABLE_HEADLESS)
1221 AC_SUBST(USE_HEADLESS_CODE)
1223 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1224 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1225 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1226 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1228 # ===================================================================
1230 # End initial platform setup
1232 # ===================================================================
1234 if test "$_os" = "Android" ; then
1235     # Verify that the NDK and SDK options are proper
1236     if test -z "$with_android_ndk"; then
1237         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1238     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1239         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1240     fi
1242     if test -z "$ANDROID_SDK_DIR"; then
1243         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1244     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1245         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1246     fi
1249 AC_SUBST(SDKDIRNAME)
1251 AC_SUBST(PTHREAD_CFLAGS)
1252 AC_SUBST(PTHREAD_LIBS)
1254 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1255 # By default use the ones specified by our build system,
1256 # but explicit override is possible.
1257 AC_MSG_CHECKING(for explicit AFLAGS)
1258 if test -n "$AFLAGS"; then
1259     AC_MSG_RESULT([$AFLAGS])
1260     x_AFLAGS=
1261 else
1262     AC_MSG_RESULT(no)
1263     x_AFLAGS=[\#]
1265 AC_MSG_CHECKING(for explicit CFLAGS)
1266 if test -n "$CFLAGS"; then
1267     AC_MSG_RESULT([$CFLAGS])
1268     x_CFLAGS=
1269 else
1270     AC_MSG_RESULT(no)
1271     x_CFLAGS=[\#]
1273 AC_MSG_CHECKING(for explicit CXXFLAGS)
1274 if test -n "$CXXFLAGS"; then
1275     AC_MSG_RESULT([$CXXFLAGS])
1276     x_CXXFLAGS=
1277 else
1278     AC_MSG_RESULT(no)
1279     x_CXXFLAGS=[\#]
1281 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1282 if test -n "$OBJCFLAGS"; then
1283     AC_MSG_RESULT([$OBJCFLAGS])
1284     x_OBJCFLAGS=
1285 else
1286     AC_MSG_RESULT(no)
1287     x_OBJCFLAGS=[\#]
1289 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1290 if test -n "$OBJCXXFLAGS"; then
1291     AC_MSG_RESULT([$OBJCXXFLAGS])
1292     x_OBJCXXFLAGS=
1293 else
1294     AC_MSG_RESULT(no)
1295     x_OBJCXXFLAGS=[\#]
1297 AC_MSG_CHECKING(for explicit LDFLAGS)
1298 if test -n "$LDFLAGS"; then
1299     AC_MSG_RESULT([$LDFLAGS])
1300     x_LDFLAGS=
1301 else
1302     AC_MSG_RESULT(no)
1303     x_LDFLAGS=[\#]
1305 AC_SUBST(AFLAGS)
1306 AC_SUBST(CFLAGS)
1307 AC_SUBST(CXXFLAGS)
1308 AC_SUBST(OBJCFLAGS)
1309 AC_SUBST(OBJCXXFLAGS)
1310 AC_SUBST(LDFLAGS)
1311 AC_SUBST(x_AFLAGS)
1312 AC_SUBST(x_CFLAGS)
1313 AC_SUBST(x_CXXFLAGS)
1314 AC_SUBST(x_OBJCFLAGS)
1315 AC_SUBST(x_OBJCXXFLAGS)
1316 AC_SUBST(x_LDFLAGS)
1318 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1319 my_original_CFLAGS=$CFLAGS
1320 my_original_CXXFLAGS=$CXXFLAGS
1321 my_original_CPPFLAGS=$CPPFLAGS
1323 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1324 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1325 dnl AC_PROG_CC internally.
1326 if test "$_os" != "WINNT"; then
1327     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1328     save_CFLAGS=$CFLAGS
1329     AC_PROG_CC
1330     CFLAGS=$save_CFLAGS
1331     if test -z "$CC_BASE"; then
1332         CC_BASE=`first_arg_basename "$CC"`
1333     fi
1336 if test "$_os" != "WINNT"; then
1337     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1338 else
1339     ENDIANNESS=little
1341 AC_SUBST(ENDIANNESS)
1343 if test "$usable_dlapi" != no; then
1344     AC_DEFINE([HAVE_DLAPI])
1345     if test "$test_unix_dlapi" != no; then
1346         save_LIBS="$LIBS"
1347         AC_SEARCH_LIBS([dlsym], [dl],
1348             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1349             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1350         LIBS="$save_LIBS"
1351         AC_DEFINE([HAVE_UNIX_DLAPI])
1352     fi
1354 AC_SUBST(UNIX_DLAPI_LIBS)
1356 # Check for a (GNU) backtrace implementation
1357 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1358 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1359 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1360     save_LIBS="$LIBS"
1361     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1362         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1363         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1364     LIBS="$save_LIBS"
1366 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1367     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1370 dnl ===================================================================
1371 dnl Sanity checks for Emscripten SDK setup
1372 dnl ===================================================================
1374 EMSCRIPTEN_MIN_MAJOR=2
1375 EMSCRIPTEN_MIN_MINOR=0
1376 EMSCRIPTEN_MIN_TINY=31
1377 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1379 if test "$_os" = "Emscripten"; then
1380     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1381     AS_IF([test -z "$EMSDK"],
1382           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1383     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1384     if test -f "$EMSCRIPTEN_VERSION_H"; then
1385         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1386         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1387         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1388     else
1389         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1390         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1391         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1392         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1393     fi
1395     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1397     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1398     if test $? -eq 0; then
1399         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1400     else
1401         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1402     fi
1404     EMSCRIPTEN_ERROR=0
1405     if ! which emconfigure >/dev/null 2>&1; then
1406         AC_MSG_WARN([emconfigure must be in your \$PATH])
1407         EMSCRIPTEN_ERROR=1
1408     fi
1409     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1410         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1411         EMSCRIPTEN_ERROR=1
1412     fi
1413     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1414     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1415         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1416         EMSCRIPTEN_ERROR=1
1417     fi
1418     if test $EMSCRIPTEN_ERROR -ne 0; then
1419         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1420     fi
1422 AC_SUBST(EMSDK_FILE_PACKAGER)
1424 ###############################################################################
1425 # Extensions switches --enable/--disable
1426 ###############################################################################
1427 # By default these should be enabled unless having extra dependencies.
1428 # If there is extra dependency over configure options then the enable should
1429 # be automagic based on whether the requiring feature is enabled or not.
1430 # All this options change anything only with --enable-extension-integration.
1432 # The name of this option and its help string makes it sound as if
1433 # extensions are built anyway, just not integrated in the installer,
1434 # if you use --disable-extension-integration. Is that really the
1435 # case?
1437 AC_ARG_ENABLE(ios-simulator,
1438     AS_HELP_STRING([--enable-ios-simulator],
1439         [build for iOS simulator])
1442 libo_FUZZ_ARG_ENABLE(extension-integration,
1443     AS_HELP_STRING([--disable-extension-integration],
1444         [Disable integration of the built extensions in the installer of the
1445          product. Use this switch to disable the integration.])
1448 AC_ARG_ENABLE(avmedia,
1449     AS_HELP_STRING([--disable-avmedia],
1450         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1451 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1453 AC_ARG_ENABLE(database-connectivity,
1454     AS_HELP_STRING([--disable-database-connectivity],
1455         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1458 # This doesn't mean not building (or "integrating") extensions
1459 # (although it probably should; i.e. it should imply
1460 # --disable-extension-integration I guess), it means not supporting
1461 # any extension mechanism at all
1462 libo_FUZZ_ARG_ENABLE(extensions,
1463     AS_HELP_STRING([--disable-extensions],
1464         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1467 AC_ARG_ENABLE(scripting,
1468     AS_HELP_STRING([--disable-scripting],
1469         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1470 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1472 # This is mainly for Android and iOS, but could potentially be used in some
1473 # special case otherwise, too, so factored out as a separate setting
1475 AC_ARG_ENABLE(dynamic-loading,
1476     AS_HELP_STRING([--disable-dynamic-loading],
1477         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1480 libo_FUZZ_ARG_ENABLE(report-builder,
1481     AS_HELP_STRING([--disable-report-builder],
1482         [Disable the Report Builder.])
1485 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1486     AS_HELP_STRING([--enable-ext-wiki-publisher],
1487         [Enable the Wiki Publisher extension.])
1490 libo_FUZZ_ARG_ENABLE(lpsolve,
1491     AS_HELP_STRING([--disable-lpsolve],
1492         [Disable compilation of the lp solve solver ])
1494 libo_FUZZ_ARG_ENABLE(coinmp,
1495     AS_HELP_STRING([--disable-coinmp],
1496         [Disable compilation of the CoinMP solver ])
1499 libo_FUZZ_ARG_ENABLE(pdfimport,
1500     AS_HELP_STRING([--disable-pdfimport],
1501         [Disable building the PDF import feature.])
1504 libo_FUZZ_ARG_ENABLE(pdfium,
1505     AS_HELP_STRING([--disable-pdfium],
1506         [Disable building PDFium. Results in unsecure PDF signature verification.])
1509 libo_FUZZ_ARG_ENABLE(skia,
1510     AS_HELP_STRING([--disable-skia],
1511         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1514 ###############################################################################
1516 dnl ---------- *** ----------
1518 libo_FUZZ_ARG_ENABLE(mergelibs,
1519     AS_HELP_STRING([--enable-mergelibs=yes/no/more],
1520         [Merge several of the smaller libraries into one big "merged" library.
1521          The "more" option will link even more of the smaller libraries.
1522          "more" not appropriate for distros which split up LibreOffice into multiple packages.
1523          It is only appropriate for situations where all of LO is delivered in a single install/package. ])
1526 libo_FUZZ_ARG_ENABLE(breakpad,
1527     AS_HELP_STRING([--enable-breakpad],
1528         [Enables breakpad for crash reporting.])
1531 libo_FUZZ_ARG_ENABLE(crashdump,
1532     AS_HELP_STRING([--disable-crashdump],
1533         [Disable dump.ini and dump-file, when --enable-breakpad])
1536 AC_ARG_ENABLE(fetch-external,
1537     AS_HELP_STRING([--disable-fetch-external],
1538         [Disables fetching external tarballs from web sources.])
1541 AC_ARG_ENABLE(fuzzers,
1542     AS_HELP_STRING([--enable-fuzzers],
1543         [Enables building libfuzzer targets for fuzz testing.])
1546 libo_FUZZ_ARG_ENABLE(pch,
1547     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1548         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1549          Using 'system' will include only external headers, 'base' will add also headers
1550          from base modules, 'normal' will also add all headers except from the module built,
1551          'full' will use all suitable headers even from a module itself.])
1554 libo_FUZZ_ARG_ENABLE(epm,
1555     AS_HELP_STRING([--enable-epm],
1556         [LibreOffice includes self-packaging code, that requires epm, however epm is
1557          useless for large scale package building.])
1560 libo_FUZZ_ARG_ENABLE(odk,
1561     AS_HELP_STRING([--enable-odk],
1562         [Enable building the Office Development Kit, the part that extensions need to build against])
1565 AC_ARG_ENABLE(mpl-subset,
1566     AS_HELP_STRING([--enable-mpl-subset],
1567         [Don't compile any pieces which are not MPL or more liberally licensed])
1570 libo_FUZZ_ARG_ENABLE(evolution2,
1571     AS_HELP_STRING([--enable-evolution2],
1572         [Allows the built-in evolution 2 addressbook connectivity build to be
1573          enabled.])
1576 AC_ARG_ENABLE(avahi,
1577     AS_HELP_STRING([--enable-avahi],
1578         [Determines whether to use Avahi to advertise Impress to remote controls.])
1581 libo_FUZZ_ARG_ENABLE(werror,
1582     AS_HELP_STRING([--enable-werror],
1583         [Turn warnings to errors. (Has no effect in modules where the treating
1584          of warnings as errors is disabled explicitly.)]),
1587 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1588     AS_HELP_STRING([--enable-assert-always-abort],
1589         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1592 libo_FUZZ_ARG_ENABLE(dbgutil,
1593     AS_HELP_STRING([--enable-dbgutil],
1594         [Provide debugging support from --enable-debug and include additional debugging
1595          utilities such as object counting or more expensive checks.
1596          This is the recommended option for developers.
1597          Note that this makes the build ABI incompatible, it is not possible to mix object
1598          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1600 libo_FUZZ_ARG_ENABLE(debug,
1601     AS_HELP_STRING([--enable-debug],
1602         [Include debugging information, disable compiler optimization and inlining plus
1603          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1605 libo_FUZZ_ARG_ENABLE(split-debug,
1606     AS_HELP_STRING([--disable-split-debug],
1607         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1608          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1610 libo_FUZZ_ARG_ENABLE(gdb-index,
1611     AS_HELP_STRING([--disable-gdb-index],
1612         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1613          The feature requires a linker that supports the --gdb-index option.]))
1615 libo_FUZZ_ARG_ENABLE(sal-log,
1616     AS_HELP_STRING([--enable-sal-log],
1617         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1619 libo_FUZZ_ARG_ENABLE(symbols,
1620     AS_HELP_STRING([--enable-symbols],
1621         [Generate debug information.
1622          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1623          otherwise. It is possible to explicitly specify gbuild build targets
1624          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1625          everything in the directory; there is no ordering, more specific overrides
1626          more general, and disabling takes precedence).
1627          Example: --enable-symbols="all -sw/ -Library_sc".]))
1629 libo_FUZZ_ARG_ENABLE(optimized,
1630     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1631         [Whether to compile with optimization flags.
1632          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1633          otherwise. Using 'debug' will try to use only optimizations that should
1634          not interfere with debugging. For Emscripten we default to optimized (-O1)
1635          debug build, as otherwise binaries become too large.]))
1637 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1638     AS_HELP_STRING([--disable-runtime-optimizations],
1639         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1640          JVM JIT) that are known to interact badly with certain dynamic analysis
1641          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1642          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1643          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1645 AC_ARG_WITH(valgrind,
1646     AS_HELP_STRING([--with-valgrind],
1647         [Make availability of Valgrind headers a hard requirement.]))
1649 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1650     AS_HELP_STRING([--enable-compiler-plugins],
1651         [Enable compiler plugins that will perform additional checks during
1652          building. Enabled automatically by --enable-dbgutil.
1653          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1654 COMPILER_PLUGINS_DEBUG=
1655 if test "$enable_compiler_plugins" = debug; then
1656     enable_compiler_plugins=yes
1657     COMPILER_PLUGINS_DEBUG=TRUE
1660 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1661     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1662         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1663          relevant in the --disable-compiler-plugins case.]))
1665 libo_FUZZ_ARG_ENABLE(ooenv,
1666     AS_HELP_STRING([--enable-ooenv],
1667         [Enable ooenv for the instdir installation.]))
1669 AC_ARG_ENABLE(lto,
1670     AS_HELP_STRING([--enable-lto],
1671         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1672          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1673          linker.)]))
1675 AC_ARG_ENABLE(python,
1676     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1677         [Enables or disables Python support at run-time.
1678          Also specifies what Python to use at build-time.
1679          'fully-internal' even forces the internal version for uses of Python
1680          during the build.
1681          On macOS the only choices are
1682          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1683          ]))
1685 libo_FUZZ_ARG_ENABLE(gtk3,
1686     AS_HELP_STRING([--disable-gtk3],
1687         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1688 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1690 AC_ARG_ENABLE(gtk4,
1691     AS_HELP_STRING([--enable-gtk4],
1692         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1694 AC_ARG_ENABLE(atspi-tests,
1695     AS_HELP_STRING([--disable-atspi-tests],
1696         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1698 AC_ARG_ENABLE(introspection,
1699     AS_HELP_STRING([--enable-introspection],
1700         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1701          Linux distributions.)]))
1703 AC_ARG_ENABLE(split-app-modules,
1704     AS_HELP_STRING([--enable-split-app-modules],
1705         [Split file lists for app modules, e.g. base, calc.
1706          Has effect only with make distro-pack-install]),
1709 AC_ARG_ENABLE(split-opt-features,
1710     AS_HELP_STRING([--enable-split-opt-features],
1711         [Split file lists for some optional features, e.g. pyuno, testtool.
1712          Has effect only with make distro-pack-install]),
1715 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1716     AS_HELP_STRING([--disable-cairo-canvas],
1717         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1720 libo_FUZZ_ARG_ENABLE(dbus,
1721     AS_HELP_STRING([--disable-dbus],
1722         [Determines whether to enable features that depend on dbus.
1723          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1724 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1726 libo_FUZZ_ARG_ENABLE(sdremote,
1727     AS_HELP_STRING([--disable-sdremote],
1728         [Determines whether to enable Impress remote control (i.e. the server component).]),
1729 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1731 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1732     AS_HELP_STRING([--disable-sdremote-bluetooth],
1733         [Determines whether to build sdremote with bluetooth support.
1734          Requires dbus on Linux.]))
1736 libo_FUZZ_ARG_ENABLE(gio,
1737     AS_HELP_STRING([--disable-gio],
1738         [Determines whether to use the GIO support.]),
1739 ,test "${enable_gio+set}" = set || enable_gio=yes)
1741 AC_ARG_ENABLE(qt5,
1742     AS_HELP_STRING([--enable-qt5],
1743         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1744          available.]),
1747 AC_ARG_ENABLE(qt6,
1748     AS_HELP_STRING([--enable-qt6],
1749         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1750          available.]),
1753 AC_ARG_ENABLE(kf5,
1754     AS_HELP_STRING([--enable-kf5],
1755         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1756          KF5 are available.]),
1759 AC_ARG_ENABLE(kf6,
1760     AS_HELP_STRING([--enable-kf6],
1761         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1762          KF6 are available.]),
1766 AC_ARG_ENABLE(gtk3_kde5,
1767     AS_HELP_STRING([--enable-gtk3-kde5],
1768         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1769          platforms where Gtk3, Qt5 and Plasma is available.]),
1772 AC_ARG_ENABLE(gen,
1773     AS_HELP_STRING([--enable-gen],
1774         [To select the gen backend in case of --disable-dynamic-loading.
1775          Per default auto-enabled when X11 is used.]),
1776 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1778 AC_ARG_ENABLE(gui,
1779     AS_HELP_STRING([--disable-gui],
1780         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1781 ,enable_gui=yes)
1783 libo_FUZZ_ARG_ENABLE(randr,
1784     AS_HELP_STRING([--disable-randr],
1785         [Disable RandR support in the vcl project.]),
1786 ,test "${enable_randr+set}" = set || enable_randr=yes)
1788 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1789     AS_HELP_STRING([--disable-gstreamer-1-0],
1790         [Disable building with the gstreamer 1.0 avmedia backend.]),
1791 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1793 libo_FUZZ_ARG_ENABLE([eot],
1794     [AS_HELP_STRING([--enable-eot],
1795         [Enable support for Embedded OpenType fonts.])],
1796 ,test "${enable_eot+set}" = set || enable_eot=no)
1798 libo_FUZZ_ARG_ENABLE(cve-tests,
1799     AS_HELP_STRING([--disable-cve-tests],
1800         [Prevent CVE tests to be executed]),
1803 AC_ARG_ENABLE(build-opensymbol,
1804     AS_HELP_STRING([--enable-build-opensymbol],
1805         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1806          fontforge installed.]),
1809 AC_ARG_ENABLE(dependency-tracking,
1810     AS_HELP_STRING([--enable-dependency-tracking],
1811         [Do not reject slow dependency extractors.])[
1812   --disable-dependency-tracking
1813                           Disables generation of dependency information.
1814                           Speed up one-time builds.],
1817 AC_ARG_ENABLE(icecream,
1818     AS_HELP_STRING([--enable-icecream],
1819         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1820          It defaults to /opt/icecream for the location of the icecream gcc/g++
1821          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1824 AC_ARG_ENABLE(ld,
1825     AS_HELP_STRING([--enable-ld=<linker>],
1826         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1827          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1828          If <linker> contains any ':', the part before the first ':' is used as the value of
1829          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1830          needed for Clang 12).]),
1833 libo_FUZZ_ARG_ENABLE(cups,
1834     AS_HELP_STRING([--disable-cups],
1835         [Do not build cups support.])
1838 AC_ARG_ENABLE(ccache,
1839     AS_HELP_STRING([--disable-ccache],
1840         [Do not try to use ccache automatically.
1841          By default we will try to detect if ccache is available; in that case if
1842          CC/CXX are not yet set, and --enable-icecream is not given, we
1843          attempt to use ccache. --disable-ccache disables ccache completely.
1844          Additionally ccache's depend mode is enabled if possible,
1845          use --enable-ccache=nodepend to enable ccache without depend mode.
1849 AC_ARG_ENABLE(z7-debug,
1850     AS_HELP_STRING([--enable-z7-debug],
1851         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1852          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1853          Enabled by default if ccache is detected.]))
1855 libo_FUZZ_ARG_ENABLE(online-update,
1856     AS_HELP_STRING([--enable-online-update],
1857         [Enable the online update service that will check for new versions of
1858          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1861 libo_FUZZ_ARG_ENABLE(online-update-mar,
1862     AS_HELP_STRING([--enable-online-update-mar],
1863         [Enable the experimental Mozilla-like online update service that will
1864          check for new versions of LibreOffice. Disabled by default.]),
1867 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1868     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1869         [Set the base URL value for --enable-online-update-mar.
1870          (Can be left off for debug purposes, even if that may render the feature
1871          non-functional.)]),
1874 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1875     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1876         [Set the certificate DER value for --enable-online-update-mar.
1877          (Can be left off for debug purposes, even if that may render the feature
1878          non-functional.)]),
1881 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1882     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1883         [Set the certificate name value for --enable-online-update-mar.
1884          (Can be left off for debug purposes, even if that may render the feature
1885          non-functional.)]),
1888 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1889     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1890         [Set the certificate path value for --enable-online-update-mar.
1891          (Can be left off for debug purposes, even if that may render the feature
1892          non-functional.)]),
1895 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1896     AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1897         [Set the upload URL value for --enable-online-update-mar.
1898          (Can be left off for debug purposes, even if that may render the feature
1899          non-functional.)]),
1902 libo_FUZZ_ARG_ENABLE(extension-update,
1903     AS_HELP_STRING([--disable-extension-update],
1904         [Disable possibility to update installed extensions.]),
1907 libo_FUZZ_ARG_ENABLE(release-build,
1908     AS_HELP_STRING([--enable-release-build],
1909         [Enable release build. Note that the "release build" choice is orthogonal to
1910          whether symbols are present, debug info is generated, or optimization
1911          is done.
1912          See https://wiki.documentfoundation.org/Development/DevBuild]),
1915 libo_FUZZ_ARG_ENABLE(hardening-flags,
1916     AS_HELP_STRING([--enable-hardening-flags],
1917         [Enable automatically using hardening compiler flags. Distros should typically
1918          use their default configuration via CXXFLAGS, etc. But this provides a
1919          convenient default set of hardening flags]),
1922 AC_ARG_ENABLE(windows-build-signing,
1923     AS_HELP_STRING([--enable-windows-build-signing],
1924         [Enable signing of windows binaries (*.exe, *.dll)]),
1927 AC_ARG_ENABLE(silent-msi,
1928     AS_HELP_STRING([--enable-silent-msi],
1929         [Enable MSI with LIMITUI=1 (silent install).]),
1932 AC_ARG_ENABLE(wix,
1933     AS_HELP_STRING([--enable-wix],
1934         [Build Windows installer using WiX.]),
1937 AC_ARG_ENABLE(macosx-code-signing,
1938     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1939         [Sign executables, dylibs, frameworks and the app bundle. If you
1940          don't provide an identity the first suitable certificate
1941          in your keychain is used.]),
1944 AC_ARG_ENABLE(macosx-package-signing,
1945     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1946         [Create a .pkg suitable for uploading to the Mac App Store and sign
1947          it. If you don't provide an identity the first suitable certificate
1948          in your keychain is used.]),
1951 AC_ARG_ENABLE(macosx-sandbox,
1952     AS_HELP_STRING([--enable-macosx-sandbox],
1953         [Make the app bundle run in a sandbox. Requires code signing.
1954          Is required by apps distributed in the Mac App Store, and implies
1955          adherence to App Store rules.]),
1958 AC_ARG_WITH(macosx-bundle-identifier,
1959     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1960         [Define the macOS bundle identifier. Default is the somewhat weird
1961          org.libreoffice.script ("script", huh?).]),
1962 ,with_macosx_bundle_identifier=org.libreoffice.script)
1964 AC_ARG_WITH(macosx-provisioning-profile,
1965     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1966         [Specify the path to a provisioning profile to use]),
1969 AC_ARG_WITH(product-name,
1970     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1971         [Define the product name. Default is AC_PACKAGE_NAME.]),
1972 ,with_product_name=$PRODUCTNAME)
1974 libo_FUZZ_ARG_ENABLE(community-flavor,
1975     AS_HELP_STRING([--disable-community-flavor],
1976         [Disable the Community branding.]),
1979 AC_ARG_WITH(package-version,
1980     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1981         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1984 libo_FUZZ_ARG_ENABLE(readonly-installset,
1985     AS_HELP_STRING([--enable-readonly-installset],
1986         [Prevents any attempts by LibreOffice to write into its installation. That means
1987          at least that no "system-wide" extensions can be added. Partly experimental work in
1988          progress, probably not fully implemented. Always enabled for macOS.]),
1991 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1992     AS_HELP_STRING([--disable-mariadb-sdbc],
1993         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1996 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1997     AS_HELP_STRING([--disable-postgresql-sdbc],
1998         [Disable the build of the PostgreSQL-SDBC driver.])
2001 libo_FUZZ_ARG_ENABLE(lotuswordpro,
2002     AS_HELP_STRING([--disable-lotuswordpro],
2003         [Disable the build of the Lotus Word Pro filter.]),
2004 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2006 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2007     AS_HELP_STRING([--disable-firebird-sdbc],
2008         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2009 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2011 AC_ARG_ENABLE(bogus-pkg-config,
2012     AS_HELP_STRING([--enable-bogus-pkg-config],
2013         [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.]),
2016 AC_ARG_ENABLE(openssl,
2017     AS_HELP_STRING([--disable-openssl],
2018         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2019          components will use NSS. Work in progress,
2020          use only if you are hacking on it.]),
2021 ,enable_openssl=yes)
2023 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2024     AS_HELP_STRING([--enable-cipher-openssl-backend],
2025         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2026          Requires --enable-openssl.]))
2028 AC_ARG_ENABLE(nss,
2029     AS_HELP_STRING([--disable-nss],
2030         [Disable using NSS. If disabled,
2031          components will use openssl. Work in progress,
2032          use only if you are hacking on it.]),
2033 ,enable_nss=yes)
2035 AC_ARG_ENABLE(library-bin-tar,
2036     AS_HELP_STRING([--enable-library-bin-tar],
2037         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2038         Some libraries can save their build result in a tarball
2039         stored in TARFILE_LOCATION. That binary tarball is
2040         uniquely identified by the source tarball,
2041         the content of the config_host.mk file and the content
2042         of the top-level directory in core for that library
2043         If this option is enabled, then if such a tarfile exist, it will be untarred
2044         instead of the source tarfile, and the build step will be skipped for that
2045         library.
2046         If a proper tarfile does not exist, then the normal source-based
2047         build is done for that library and a proper binary tarfile is created
2048         for the next time.]),
2051 AC_ARG_ENABLE(dconf,
2052     AS_HELP_STRING([--disable-dconf],
2053         [Disable the dconf configuration backend (enabled by default where
2054          available).]))
2056 libo_FUZZ_ARG_ENABLE(formula-logger,
2057     AS_HELP_STRING(
2058         [--enable-formula-logger],
2059         [Enable formula logger for logging formula calculation flow in Calc.]
2060     )
2063 AC_ARG_ENABLE(ldap,
2064     AS_HELP_STRING([--disable-ldap],
2065         [Disable LDAP support.]),
2066 ,enable_ldap=yes)
2068 AC_ARG_ENABLE(opencl,
2069     AS_HELP_STRING([--disable-opencl],
2070         [Disable OpenCL support.]),
2071 ,enable_opencl=yes)
2073 libo_FUZZ_ARG_ENABLE(librelogo,
2074     AS_HELP_STRING([--disable-librelogo],
2075         [Do not build LibreLogo.]),
2076 ,enable_librelogo=yes)
2078 AC_ARG_ENABLE(wasm-strip,
2079     AS_HELP_STRING([--enable-wasm-strip],
2080         [Strip the static build like for WASM/emscripten platform.]),
2083 AC_ARG_WITH(main-module,
2084     AS_HELP_STRING([--with-main-module=<writer/calc>],
2085         [Specify which main module to build for wasm.
2086         Default value is 'writer'.]),
2089 AC_ARG_ENABLE(wasm-exceptions,
2090     AS_HELP_STRING([--enable-wasm-exceptions],
2091         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2092         matter of fact, this is currently not finished by any implementation)
2093         (see https://webassembly.org/roadmap/ for the current state]),
2096 AC_ARG_ENABLE(xmlhelp,
2097     AS_HELP_STRING([--disable-xmlhelp],
2098         [Disable XML help support]),
2099 ,enable_xmlhelp=yes)
2101 AC_ARG_ENABLE(customtarget-components,
2102     AS_HELP_STRING([--enable-customtarget-components],
2103         [Generates the static UNO object constructor mapping from the build.]))
2105 dnl ===================================================================
2106 dnl Optional Packages (--with/without-)
2107 dnl ===================================================================
2109 AC_ARG_WITH(gcc-home,
2110     AS_HELP_STRING([--with-gcc-home],
2111         [Specify the location of gcc/g++ manually. This can be used in conjunction
2112          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2113          non-default path.]),
2116 AC_ARG_WITH(gnu-patch,
2117     AS_HELP_STRING([--with-gnu-patch],
2118         [Specify location of GNU patch on Solaris or FreeBSD.]),
2121 AC_ARG_WITH(build-platform-configure-options,
2122     AS_HELP_STRING([--with-build-platform-configure-options],
2123         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2126 AC_ARG_WITH(gnu-cp,
2127     AS_HELP_STRING([--with-gnu-cp],
2128         [Specify location of GNU cp on Solaris or FreeBSD.]),
2131 AC_ARG_WITH(external-tar,
2132     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2133         [Specify an absolute path of where to find (and store) tarfiles.]),
2134     TARFILE_LOCATION=$withval ,
2137 AC_ARG_WITH(referenced-git,
2138     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2139         [Specify another checkout directory to reference. This makes use of
2140                  git submodule update --reference, and saves a lot of diskspace
2141                  when having multiple trees side-by-side.]),
2142     GIT_REFERENCE_SRC=$withval ,
2145 AC_ARG_WITH(linked-git,
2146     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2147         [Specify a directory where the repositories of submodules are located.
2148          This uses a method similar to git-new-workdir to get submodules.]),
2149     GIT_LINK_SRC=$withval ,
2152 AC_ARG_WITH(galleries,
2153     AS_HELP_STRING([--with-galleries],
2154         [Specify how galleries should be built. It is possible either to
2155          build these internally from source ("build"),
2156          or to disable them ("no")]),
2159 AC_ARG_WITH(templates,
2160     AS_HELP_STRING([--with-templates],
2161         [Specify we build with or without template files. It is possible either to
2162          build with templates ("yes"),
2163          or to disable them ("no")]),
2166 AC_ARG_WITH(theme,
2167     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2168         [Choose which themes to include. By default those themes with an '*' are included.
2169          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2170          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2171          *elementary, *elementary_svg,
2172          *karasa_jaga, *karasa_jaga_svg,
2173          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2174          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2177 libo_FUZZ_ARG_WITH(helppack-integration,
2178     AS_HELP_STRING([--without-helppack-integration],
2179         [It will not integrate the helppacks to the installer
2180          of the product. Please use this switch to use the online help
2181          or separate help packages.]),
2184 libo_FUZZ_ARG_WITH(fonts,
2185     AS_HELP_STRING([--without-fonts],
2186         [LibreOffice includes some third-party fonts to provide a reliable basis for
2187          help content, templates, samples, etc. When these fonts are already
2188          known to be available on the system then you should use this option.]),
2191 libo_FUZZ_ARG_WITH(docrepair-fonts,
2192     AS_HELP_STRING([--with-docrepair-fonts],
2193         [LibreOffice optionally includes fonts from 'The DocRepair Project' that
2194          provide metrically equivalent fallback fonts for a variety of common fonts
2195          seen in Office Open XML documents. See https://github.com/docrepair-fonts
2196          for more details. This option has no effect when --without-fonts is used.]),
2199 AC_ARG_ENABLE(noto-font,
2200     AS_HELP_STRING([--enable-noto-font],
2201         [Add more Google Noto fonts.]),
2204 AC_ARG_WITH(epm,
2205     AS_HELP_STRING([--with-epm],
2206         [Decides which epm to use. Default is to use the one from the system if
2207          one is built. When either this is not there or you say =internal epm
2208          will be built.]),
2211 AC_ARG_WITH(package-format,
2212     AS_HELP_STRING([--with-package-format],
2213         [Specify package format(s) for LibreOffice installation sets. The
2214          implicit --without-package-format leads to no installation sets being
2215          generated. Possible values: archive, bsd, deb, dmg,
2216          installed, msi, pkg, and rpm.
2217          Example: --with-package-format='deb rpm']),
2220 AC_ARG_WITH(tls,
2221     AS_HELP_STRING([--with-tls],
2222         [Decides which TLS/SSL and cryptographic implementations to use for
2223          LibreOffice's code. Default is to use NSS although OpenSSL is also
2224          possible. Notice that selecting NSS restricts the usage of OpenSSL
2225          in LO's code but selecting OpenSSL doesn't restrict by now the
2226          usage of NSS in LO's code. Possible values: openssl, nss.
2227          Example: --with-tls="nss"]),
2230 AC_ARG_WITH(system-libs,
2231     AS_HELP_STRING([--with-system-libs],
2232         [Use libraries already on system -- enables all --with-system-* flags.]),
2235 AC_ARG_WITH(system-bzip2,
2236     AS_HELP_STRING([--with-system-bzip2],
2237         [Use bzip2 already on system. Used when --enable-online-update-mar
2238         or --enable-python=internal]),,
2239     [with_system_bzip2="$with_system_libs"])
2241 AC_ARG_WITH(system-headers,
2242     AS_HELP_STRING([--with-system-headers],
2243         [Use headers already on system -- enables all --with-system-* flags for
2244          external packages whose headers are the only entities used i.e.
2245          boost/odbc/sane-header(s).]),,
2246     [with_system_headers="$with_system_libs"])
2248 AC_ARG_WITH(system-jars,
2249     AS_HELP_STRING([--without-system-jars],
2250         [When building with --with-system-libs, also the needed jars are expected
2251          on the system. Use this to disable that]),,
2252     [with_system_jars="$with_system_libs"])
2254 AC_ARG_WITH(system-cairo,
2255     AS_HELP_STRING([--with-system-cairo],
2256         [Use cairo libraries already on system.  Happens automatically for
2257          (implicit) --enable-gtk3.]))
2259 AC_ARG_WITH(system-epoxy,
2260     AS_HELP_STRING([--with-system-epoxy],
2261         [Use epoxy libraries already on system.  Happens automatically for
2262          (implicit) --enable-gtk3.]),,
2263        [with_system_epoxy="$with_system_libs"])
2265 AC_ARG_WITH(myspell-dicts,
2266     AS_HELP_STRING([--with-myspell-dicts],
2267         [Adds myspell dictionaries to the LibreOffice installation set]),
2270 AC_ARG_WITH(system-dicts,
2271     AS_HELP_STRING([--without-system-dicts],
2272         [Do not use dictionaries from system paths.]),
2275 AC_ARG_WITH(external-dict-dir,
2276     AS_HELP_STRING([--with-external-dict-dir],
2277         [Specify external dictionary dir.]),
2280 AC_ARG_WITH(external-hyph-dir,
2281     AS_HELP_STRING([--with-external-hyph-dir],
2282         [Specify external hyphenation pattern dir.]),
2285 AC_ARG_WITH(external-thes-dir,
2286     AS_HELP_STRING([--with-external-thes-dir],
2287         [Specify external thesaurus dir.]),
2290 AC_ARG_WITH(system-zlib,
2291     AS_HELP_STRING([--with-system-zlib],
2292         [Use zlib already on system.]),,
2293     [with_system_zlib=auto])
2295 AC_ARG_WITH(system-jpeg,
2296     AS_HELP_STRING([--with-system-jpeg],
2297         [Use jpeg already on system.]),,
2298     [with_system_jpeg="$with_system_libs"])
2300 AC_ARG_WITH(system-expat,
2301     AS_HELP_STRING([--with-system-expat],
2302         [Use expat already on system.]),,
2303     [with_system_expat="$with_system_libs"])
2305 AC_ARG_WITH(system-libxml,
2306     AS_HELP_STRING([--with-system-libxml],
2307         [Use libxml/libxslt already on system.]),,
2308     [with_system_libxml=auto])
2310 AC_ARG_WITH(system-openldap,
2311     AS_HELP_STRING([--with-system-openldap],
2312         [Use the OpenLDAP LDAP SDK already on system.]),,
2313     [with_system_openldap="$with_system_libs"])
2315 libo_FUZZ_ARG_ENABLE(poppler,
2316     AS_HELP_STRING([--disable-poppler],
2317         [Disable building Poppler.])
2320 AC_ARG_WITH(system-poppler,
2321     AS_HELP_STRING([--with-system-poppler],
2322         [Use system poppler (only needed for PDF import).]),,
2323     [with_system_poppler="$with_system_libs"])
2325 AC_ARG_WITH(system-abseil,
2326     AS_HELP_STRING([--with-system-abseil],
2327         [Use the abseil libraries already on system.]),,
2328     [with_system_abseil="$with_system_libs"])
2330 AC_ARG_WITH(system-openjpeg,
2331     AS_HELP_STRING([--with-system-openjpeg],
2332         [Use the OpenJPEG library already on system.]),,
2333     [with_system_openjpeg="$with_system_libs"])
2335 libo_FUZZ_ARG_ENABLE(gpgmepp,
2336     AS_HELP_STRING([--disable-gpgmepp],
2337         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2340 AC_ARG_WITH(system-gpgmepp,
2341     AS_HELP_STRING([--with-system-gpgmepp],
2342         [Use gpgmepp already on system]),,
2343     [with_system_gpgmepp="$with_system_libs"])
2345 AC_ARG_WITH(system-mariadb,
2346     AS_HELP_STRING([--with-system-mariadb],
2347         [Use MariaDB/MySQL libraries already on system.]),,
2348     [with_system_mariadb="$with_system_libs"])
2350 AC_ARG_ENABLE(bundle-mariadb,
2351     AS_HELP_STRING([--enable-bundle-mariadb],
2352         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2355 AC_ARG_WITH(system-postgresql,
2356     AS_HELP_STRING([--with-system-postgresql],
2357         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2358          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2359     [with_system_postgresql="$with_system_libs"])
2361 AC_ARG_WITH(libpq-path,
2362     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2363         [Use this PostgreSQL C interface (libpq) installation for building
2364          the PostgreSQL-SDBC extension.]),
2367 AC_ARG_WITH(system-firebird,
2368     AS_HELP_STRING([--with-system-firebird],
2369         [Use Firebird libraries already on system, for building the Firebird-SDBC
2370          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2371     [with_system_firebird="$with_system_libs"])
2373 AC_ARG_WITH(system-libtommath,
2374             AS_HELP_STRING([--with-system-libtommath],
2375                            [Use libtommath already on system]),,
2376             [with_system_libtommath="$with_system_libs"])
2378 AC_ARG_WITH(system-hsqldb,
2379     AS_HELP_STRING([--with-system-hsqldb],
2380         [Use hsqldb already on system.]))
2382 AC_ARG_WITH(hsqldb-jar,
2383     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2384         [Specify path to jarfile manually.]),
2385     HSQLDB_JAR=$withval)
2387 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2388     AS_HELP_STRING([--disable-scripting-beanshell],
2389         [Disable support for scripts in BeanShell.]),
2393 AC_ARG_WITH(system-beanshell,
2394     AS_HELP_STRING([--with-system-beanshell],
2395         [Use beanshell already on system.]),,
2396     [with_system_beanshell="$with_system_jars"])
2398 AC_ARG_WITH(beanshell-jar,
2399     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2400         [Specify path to jarfile manually.]),
2401     BSH_JAR=$withval)
2403 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2404     AS_HELP_STRING([--disable-scripting-javascript],
2405         [Disable support for scripts in JavaScript.]),
2409 AC_ARG_WITH(system-rhino,
2410     AS_HELP_STRING([--with-system-rhino],
2411         [Use rhino already on system.]),,)
2412 #    [with_system_rhino="$with_system_jars"])
2413 # Above is not used as we have different debug interface
2414 # patched into internal rhino. This code needs to be fixed
2415 # before we can enable it by default.
2417 AC_ARG_WITH(rhino-jar,
2418     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2419         [Specify path to jarfile manually.]),
2420     RHINO_JAR=$withval)
2422 AC_ARG_WITH(system-jfreereport,
2423     AS_HELP_STRING([--with-system-jfreereport],
2424         [Use JFreeReport already on system.]),,
2425     [with_system_jfreereport="$with_system_jars"])
2427 AC_ARG_WITH(sac-jar,
2428     AS_HELP_STRING([--with-sac-jar=JARFILE],
2429         [Specify path to jarfile manually.]),
2430     SAC_JAR=$withval)
2432 AC_ARG_WITH(libxml-jar,
2433     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2434         [Specify path to jarfile manually.]),
2435     LIBXML_JAR=$withval)
2437 AC_ARG_WITH(flute-jar,
2438     AS_HELP_STRING([--with-flute-jar=JARFILE],
2439         [Specify path to jarfile manually.]),
2440     FLUTE_JAR=$withval)
2442 AC_ARG_WITH(jfreereport-jar,
2443     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2444         [Specify path to jarfile manually.]),
2445     JFREEREPORT_JAR=$withval)
2447 AC_ARG_WITH(liblayout-jar,
2448     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2449         [Specify path to jarfile manually.]),
2450     LIBLAYOUT_JAR=$withval)
2452 AC_ARG_WITH(libloader-jar,
2453     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2454         [Specify path to jarfile manually.]),
2455     LIBLOADER_JAR=$withval)
2457 AC_ARG_WITH(libformula-jar,
2458     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2459         [Specify path to jarfile manually.]),
2460     LIBFORMULA_JAR=$withval)
2462 AC_ARG_WITH(librepository-jar,
2463     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2464         [Specify path to jarfile manually.]),
2465     LIBREPOSITORY_JAR=$withval)
2467 AC_ARG_WITH(libfonts-jar,
2468     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2469         [Specify path to jarfile manually.]),
2470     LIBFONTS_JAR=$withval)
2472 AC_ARG_WITH(libserializer-jar,
2473     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2474         [Specify path to jarfile manually.]),
2475     LIBSERIALIZER_JAR=$withval)
2477 AC_ARG_WITH(libbase-jar,
2478     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2479         [Specify path to jarfile manually.]),
2480     LIBBASE_JAR=$withval)
2482 AC_ARG_WITH(system-odbc,
2483     AS_HELP_STRING([--with-system-odbc],
2484         [Use the odbc headers already on system.]),,
2485     [with_system_odbc="auto"])
2487 AC_ARG_WITH(system-sane,
2488     AS_HELP_STRING([--with-system-sane],
2489         [Use sane.h already on system.]),,
2490     [with_system_sane="$with_system_headers"])
2492 AC_ARG_WITH(system-bluez,
2493     AS_HELP_STRING([--with-system-bluez],
2494         [Use bluetooth.h already on system.]),,
2495     [with_system_bluez="$with_system_headers"])
2497 AC_ARG_WITH(system-boost,
2498     AS_HELP_STRING([--with-system-boost],
2499         [Use boost already on system.]),,
2500     [with_system_boost="$with_system_headers"])
2502 AC_ARG_WITH(system-dragonbox,
2503     AS_HELP_STRING([--with-system-dragonbox],
2504         [Use dragonbox already on system.]),,
2505     [with_system_dragonbox="$with_system_headers"])
2507 AC_ARG_WITH(system-frozen,
2508     AS_HELP_STRING([--with-system-frozen],
2509         [Use frozen already on system.]),,
2510     [with_system_frozen="$with_system_headers"])
2512 AC_ARG_WITH(system-libfixmath,
2513     AS_HELP_STRING([--with-system-libfixmath],
2514         [Use libfixmath already on system.]),,
2515     [with_system_libfixmath="$with_system_libs"])
2517 AC_ARG_WITH(system-glm,
2518     AS_HELP_STRING([--with-system-glm],
2519         [Use glm already on system.]),,
2520     [with_system_glm="$with_system_headers"])
2522 AC_ARG_WITH(system-hunspell,
2523     AS_HELP_STRING([--with-system-hunspell],
2524         [Use libhunspell already on system.]),,
2525     [with_system_hunspell="$with_system_libs"])
2527 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2528     AS_HELP_STRING([--enable-cairo-rgba],
2529         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2531 libo_FUZZ_ARG_ENABLE(zxing,
2532     AS_HELP_STRING([--disable-zxing],
2533        [Disable use of zxing external library.]))
2535 AC_ARG_WITH(system-zxing,
2536     AS_HELP_STRING([--with-system-zxing],
2537         [Use libzxing already on system.]),,
2538     [with_system_zxing="$with_system_libs"])
2540 AC_ARG_WITH(system-zxcvbn,
2541     AS_HELP_STRING([--with-system-zxcvbn],
2542         [Use libzxcvbn already on system.]),,
2543     [with_system_zxcvbn="$with_system_libs"])
2545 AC_ARG_WITH(system-box2d,
2546     AS_HELP_STRING([--with-system-box2d],
2547         [Use box2d already on system.]),,
2548     [with_system_box2d="$with_system_libs"])
2550 AC_ARG_WITH(system-mythes,
2551     AS_HELP_STRING([--with-system-mythes],
2552         [Use mythes already on system.]),,
2553     [with_system_mythes="$with_system_libs"])
2555 AC_ARG_WITH(system-altlinuxhyph,
2556     AS_HELP_STRING([--with-system-altlinuxhyph],
2557         [Use ALTLinuxhyph already on system.]),,
2558     [with_system_altlinuxhyph="$with_system_libs"])
2560 AC_ARG_WITH(system-lpsolve,
2561     AS_HELP_STRING([--with-system-lpsolve],
2562         [Use lpsolve already on system.]),,
2563     [with_system_lpsolve="$with_system_libs"])
2565 AC_ARG_WITH(system-coinmp,
2566     AS_HELP_STRING([--with-system-coinmp],
2567         [Use CoinMP already on system.]),,
2568     [with_system_coinmp="$with_system_libs"])
2570 AC_ARG_WITH(system-liblangtag,
2571     AS_HELP_STRING([--with-system-liblangtag],
2572         [Use liblangtag library already on system.]),,
2573     [with_system_liblangtag="$with_system_libs"])
2575 AC_ARG_WITH(system-lockfile,
2576     AS_HELP_STRING([--with-system-lockfile[=file]],
2577         [Detect a system lockfile program or use the \$file argument.]))
2579 AC_ARG_WITH(webdav,
2580     AS_HELP_STRING([--without-webdav],
2581         [Disable WebDAV support in the UCB.]))
2583 AC_ARG_WITH(linker-hash-style,
2584     AS_HELP_STRING([--with-linker-hash-style],
2585         [Use linker with --hash-style=<style> when linking shared objects.
2586          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2587          if supported on the build system, and "sysv" otherwise.]))
2589 AC_ARG_WITH(jdk-home,
2590     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2591         [If you have installed JDK 8 or later on your system please supply the
2592          path here. Note that this is not the location of the java command but the
2593          location of the entire distribution. In case of cross-compiling, this
2594          is the JDK of the host os. Use --with-build-platform-configure-options
2595          to point to a different build platform JDK.]),
2598 AC_ARG_WITH(help,
2599     AS_HELP_STRING([--with-help],
2600         [Enable the build of help. There is a special parameter "common" that
2601          can be used to bundle only the common part, .e.g help-specific icons.
2602          This is useful when you build the helpcontent separately.])
2603     [
2604                           Usage:     --with-help    build the old local help
2605                                  --without-help     no local help (default)
2606                                  --with-help=html   build the new HTML local help
2607                                  --with-help=online build the new HTML online help
2608     ],
2611 AC_ARG_WITH(omindex,
2612    AS_HELP_STRING([--with-omindex],
2613         [Enable the support of xapian-omega index for online help.])
2614    [
2615                          Usage: --with-omindex=server prepare the pages for omindex
2616                                 but let xapian-omega be built in server.
2617                                 --with-omindex=noxap do not prepare online pages
2618                                 for xapian-omega
2619   ],
2622 libo_FUZZ_ARG_WITH(java,
2623     AS_HELP_STRING([--with-java=<java command>],
2624         [Specify the name of the Java interpreter command. Typically "java"
2625          which is the default.
2627          To build without support for Java components, applets, accessibility
2628          or the XML filters written in Java, use --without-java or --with-java=no.]),
2629     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2630     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2633 AC_ARG_WITH(jvm-path,
2634     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2635         [Use a specific JVM search path at runtime.
2636          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2639 AC_ARG_WITH(ant-home,
2640     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2641         [If you have installed Apache Ant on your system, please supply the path here.
2642          Note that this is not the location of the Ant binary but the location
2643          of the entire distribution.]),
2646 AC_ARG_WITH(symbol-config,
2647     AS_HELP_STRING([--with-symbol-config],
2648         [Configuration for the crashreport symbol upload]),
2649         [],
2650         [with_symbol_config=no])
2652 AC_ARG_WITH(export-validation,
2653     AS_HELP_STRING([--without-export-validation],
2654         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2655 ,with_export_validation=auto)
2657 AC_ARG_WITH(bffvalidator,
2658     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2659         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2660          Requires installed Microsoft Office Binary File Format Validator.
2661          Note: export-validation (--with-export-validation) is required to be turned on.
2662          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2663 ,with_bffvalidator=no)
2665 libo_FUZZ_ARG_WITH(junit,
2666     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2667         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2668          --without-junit disables those tests. Not relevant in the --without-java case.]),
2669 ,with_junit=yes)
2671 AC_ARG_WITH(hamcrest,
2672     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2673         [Specifies the hamcrest jar file to use for JUnit-based tests.
2674          --without-junit disables those tests. Not relevant in the --without-java case.]),
2675 ,with_hamcrest=yes)
2677 AC_ARG_WITH(perl-home,
2678     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2679         [If you have installed Perl 5 Distribution, on your system, please
2680          supply the path here. Note that this is not the location of the Perl
2681          binary but the location of the entire distribution.]),
2684 libo_FUZZ_ARG_WITH(doxygen,
2685     AS_HELP_STRING(
2686         [--with-doxygen=<absolute path to doxygen executable>],
2687         [Specifies the doxygen executable to use when generating ODK C/C++
2688          documentation. --without-doxygen disables generation of ODK C/C++
2689          documentation. Not relevant in the --disable-odk case.]),
2690 ,with_doxygen=yes)
2692 AC_ARG_WITH(visual-studio,
2693     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2694         [Specify which Visual Studio version to use in case several are
2695          installed. Currently 2019 (default) and 2022 are supported.]),
2698 AC_ARG_WITH(windows-sdk,
2699     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2700         [Specify which Windows SDK, or "Windows Kit", version to use
2701          in case the one that came with the selected Visual Studio
2702          is not what you want for some reason. Note that not all compiler/SDK
2703          combinations are supported. The intent is that this option should not
2704          be needed.]),
2707 AC_ARG_WITH(lang,
2708     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2709         [Use this option to build LibreOffice with additional UI language support.
2710          English (US) is always included by default.
2711          Separate multiple languages with space.
2712          For all languages, use --with-lang=ALL.]),
2715 AC_ARG_WITH(locales,
2716     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2717         [Use this option to limit the locale information built in.
2718          Separate multiple locales with space.
2719          Very experimental and might well break stuff.
2720          Just a desperate measure to shrink code and data size.
2721          By default all the locales available is included.
2722          Just works with --disable-dynloading. Defaults to "ALL".
2723          This option is completely unrelated to --with-lang.])
2724     [
2725                           Affects also our character encoding conversion
2726                           tables for encodings mainly targeted for a
2727                           particular locale, like EUC-CN and EUC-TW for
2728                           zh, ISO-2022-JP for ja.
2730                           Affects also our add-on break iterator data for
2731                           some languages.
2733                           For the default, all locales, don't use this switch at all.
2734                           Specifying just the language part of a locale means all matching
2735                           locales will be included.
2736     ],
2739 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2740 # and also by libcurl since LibO 24.2.6
2741 libo_FUZZ_ARG_WITH(krb5,
2742     AS_HELP_STRING([--with-krb5],
2743         [Enable MIT Kerberos 5 support in modules that support it.
2744          By default automatically enabled on platforms
2745          where a good system Kerberos 5 is available.]),
2748 libo_FUZZ_ARG_WITH(gssapi,
2749     AS_HELP_STRING([--with-gssapi],
2750         [Enable GSSAPI support in modules that support it.
2751          By default automatically enabled on platforms
2752          where a good system GSSAPI is available.]),
2755 libo_FUZZ_ARG_WITH(lxml,
2756     AS_HELP_STRING([--without-lxml],
2757         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2758          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2759          report widget classes and ids.]),
2762 libo_FUZZ_ARG_WITH(latest-c++,
2763     AS_HELP_STRING([--with-latest-c++],
2764         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2765          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2766         [with_latest_c__=no])
2768 AC_ARG_WITH(gtk3-build,
2769     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2770         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2771          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2773 dnl ===================================================================
2774 dnl Branding
2775 dnl ===================================================================
2777 AC_ARG_WITH(branding,
2778     AS_HELP_STRING([--with-branding=/path/to/images],
2779         [Use given path to retrieve branding images set.])
2780     [
2781                           Search for intro.png about.svg and logo.svg.
2782                           If any is missing, default ones will be used instead.
2784                           Search also progress.conf for progress
2785                           settings on intro screen :
2787                           PROGRESSBARCOLOR="255,255,255" Set color of
2788                           progress bar. Comma separated RGB decimal values.
2789                           PROGRESSSIZE="407,6" Set size of progress bar.
2790                           Comma separated decimal values (width, height).
2791                           PROGRESSPOSITION="61,317" Set position of progress
2792                           bar from left,top. Comma separated decimal values.
2793                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2794                           bar frame. Comma separated RGB decimal values.
2795                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2796                           bar text. Comma separated RGB decimal values.
2797                           PROGRESSTEXTBASELINE="287" Set vertical position of
2798                           progress bar text from top. Decimal value.
2800                           Default values will be used if not found.
2801     ],
2805 AC_ARG_WITH(extra-buildid,
2806     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2807         [Show addition build identification in about dialog.]),
2811 AC_ARG_WITH(vendor,
2812     AS_HELP_STRING([--with-vendor="John the Builder"],
2813         [Set vendor of the build.]),
2816 AC_ARG_WITH(privacy-policy-url,
2817     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2818         [The URL to your privacy policy (needed when
2819          enabling online-update or crashreporting via breakpad)]),
2820         [if test "x$with_privacy_policy_url" = "xyes"; then
2821             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2822          elif test "x$with_privacy_policy_url" = "xno"; then
2823             with_privacy_policy_url="undefined"
2824          fi]
2825 ,[with_privacy_policy_url="undefined"])
2827 AC_ARG_WITH(android-package-name,
2828     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2829         [Set Android package name of the build.]),
2832 AC_ARG_WITH(compat-oowrappers,
2833     AS_HELP_STRING([--with-compat-oowrappers],
2834         [Install oo* wrappers in parallel with
2835          lo* ones to keep backward compatibility.
2836          Has effect only with make distro-pack-install]),
2839 AC_ARG_WITH(os-version,
2840     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2841         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2844 AC_ARG_WITH(parallelism,
2845     AS_HELP_STRING([--with-parallelism],
2846         [Number of jobs to run simultaneously during build. Parallel builds can
2847         save a lot of time on multi-cpu machines. Defaults to the number of
2848         CPUs on the machine, unless you configure --enable-icecream - then to
2849         40.]),
2852 AC_ARG_WITH(all-tarballs,
2853     AS_HELP_STRING([--with-all-tarballs],
2854         [Download all external tarballs unconditionally]))
2856 AC_ARG_WITH(gdrive-client-id,
2857     AS_HELP_STRING([--with-gdrive-client-id],
2858         [Provides the client id of the application for OAuth2 authentication
2859         on Google Drive. If either this or --with-gdrive-client-secret is
2860         empty, the feature will be disabled]),
2863 AC_ARG_WITH(gdrive-client-secret,
2864     AS_HELP_STRING([--with-gdrive-client-secret],
2865         [Provides the client secret of the application for OAuth2
2866         authentication on Google Drive. If either this or
2867         --with-gdrive-client-id is empty, the feature will be disabled]),
2870 AC_ARG_WITH(alfresco-cloud-client-id,
2871     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2872         [Provides the client id of the application for OAuth2 authentication
2873         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2874         empty, the feature will be disabled]),
2877 AC_ARG_WITH(alfresco-cloud-client-secret,
2878     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2879         [Provides the client secret of the application for OAuth2
2880         authentication on Alfresco Cloud. If either this or
2881         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2884 AC_ARG_WITH(onedrive-client-id,
2885     AS_HELP_STRING([--with-onedrive-client-id],
2886         [Provides the client id of the application for OAuth2 authentication
2887         on OneDrive. If either this or --with-onedrive-client-secret is
2888         empty, the feature will be disabled]),
2891 AC_ARG_WITH(onedrive-client-secret,
2892     AS_HELP_STRING([--with-onedrive-client-secret],
2893         [Provides the client secret of the application for OAuth2
2894         authentication on OneDrive. If either this or
2895         --with-onedrive-client-id is empty, the feature will be disabled]),
2898 dnl Check for coredumpctl support to present information about crashing test processes:
2899 AC_ARG_WITH(coredumpctl,
2900     AS_HELP_STRING([--with-coredumpctl],
2901         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2902         processes.]))
2904 AC_ARG_WITH(buildconfig-recorded,
2905     AS_HELP_STRING([--with-buildconfig-recorded],
2906         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2909 AC_MSG_CHECKING([whether to record build config])
2910 if test -z "$with_buildconfig_recorded"; then
2911     with_buildconfig_recorded=no
2913 if test "$with_buildconfig_recorded" = no; then
2914     AC_MSG_RESULT([no])
2915 else
2916     AC_MSG_RESULT([yes])
2917     # replace backslashes, to get a valid c++ string
2918     config_args=$(echo $ac_configure_args | tr '\\' '/')
2919     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2920     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2923 dnl ===================================================================
2924 dnl Do we want to use pre-build binary tarball for recompile
2925 dnl ===================================================================
2927 if test "$enable_library_bin_tar" = "yes" ; then
2928     USE_LIBRARY_BIN_TAR=TRUE
2929 else
2930     USE_LIBRARY_BIN_TAR=
2932 AC_SUBST(USE_LIBRARY_BIN_TAR)
2934 dnl ===================================================================
2935 dnl Test whether build target is Release Build
2936 dnl ===================================================================
2937 AC_MSG_CHECKING([whether build target is Release Build])
2938 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2939     AC_MSG_RESULT([no])
2940     ENABLE_RELEASE_BUILD=
2941     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2942     dnl the newlines and then complains about spaces.
2943     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/>'
2944 else
2945     AC_MSG_RESULT([yes])
2946     ENABLE_RELEASE_BUILD=TRUE
2947     GET_TASK_ALLOW_ENTITLEMENT=
2949 AC_SUBST(ENABLE_RELEASE_BUILD)
2950 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2952 dnl ===================================================================
2953 dnl Test whether build should auto use hardening compiler flags
2954 dnl ===================================================================
2955 AC_MSG_CHECKING([whether build should auto use hardening compiler flags])
2956 if test "$enable_hardening_flags" = "" -o "$enable_hardening_flags" = "no"; then
2957     AC_MSG_RESULT([no])
2958     ENABLE_HARDENING_FLAGS=
2959 else
2960     AC_MSG_RESULT([yes])
2961     ENABLE_HARDENING_FLAGS=TRUE
2963 AC_SUBST(ENABLE_HARDENING_FLAGS)
2965 AC_MSG_CHECKING([whether to build a Community flavor])
2966 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2967     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2968     AC_MSG_RESULT([yes])
2969 else
2970     AC_MSG_RESULT([no])
2973 dnl ===================================================================
2974 dnl Test whether to sign Windows Build
2975 dnl ===================================================================
2976 AC_MSG_CHECKING([whether to sign windows build])
2977 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2978     AC_MSG_RESULT([yes])
2979     WINDOWS_BUILD_SIGNING="TRUE"
2980 else
2981     AC_MSG_RESULT([no])
2982     WINDOWS_BUILD_SIGNING="FALSE"
2984 AC_SUBST(WINDOWS_BUILD_SIGNING)
2986 dnl ===================================================================
2987 dnl MacOSX build and runtime environment options
2988 dnl ===================================================================
2990 AC_ARG_WITH(macosx-version-min-required,
2991     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2992         [set the minimum OS version needed to run the built LibreOffice])
2993     [
2994                           e. g.: --with-macosx-version-min-required=10.15
2995     ],
2998 dnl ===================================================================
2999 dnl Check for incompatible options set by fuzzing, and reset those
3000 dnl automatically to working combinations
3001 dnl ===================================================================
3003 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
3004         "$enable_dbus" != "$enable_avahi"; then
3005     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
3006     enable_avahi=$enable_dbus
3009 add_lopath_after ()
3011     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
3012         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
3013     fi
3016 add_lopath_before ()
3018     local IFS=${P_SEP}
3019     local path_cleanup
3020     local dir
3021     for dir in $LO_PATH ; do
3022         if test "$dir" != "$1" ; then
3023             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
3024         fi
3025     done
3026     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3029 dnl ===================================================================
3030 dnl check for required programs (grep, awk, sed, bash)
3031 dnl ===================================================================
3033 pathmunge ()
3035     local new_path
3036     if test -n "$1"; then
3037         if test "$build_os" = "cygwin"; then
3038             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3039                 PathFormat "$1"
3040                 new_path=`cygpath -sm "$formatted_path"`
3041             else
3042                 PathFormat "$1"
3043                 new_path=`cygpath -u "$formatted_path"`
3044             fi
3045         else
3046             new_path="$1"
3047         fi
3048         if test "$2" = "after"; then
3049             add_lopath_after "$new_path"
3050         else
3051             add_lopath_before "$new_path"
3052         fi
3053     fi
3056 AC_PROG_AWK
3057 AC_PATH_PROG( AWK, $AWK)
3058 if test -z "$AWK"; then
3059     AC_MSG_ERROR([install awk to run this script])
3062 AC_PATH_PROG(BASH, bash)
3063 if test -z "$BASH"; then
3064     AC_MSG_ERROR([bash not found in \$PATH])
3066 AC_SUBST(BASH)
3068 # prefer parallel compression tools, if available
3069 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3070 if test -z "$COMPRESSIONTOOL"; then
3071     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3072     if test -z "$COMPRESSIONTOOL"; then
3073         AC_MSG_ERROR([gzip not found in \$PATH])
3074     fi
3076 AC_SUBST(COMPRESSIONTOOL)
3078 AC_MSG_CHECKING([for GNU or BSD tar])
3079 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3080     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3081     if test $? -eq 0;  then
3082         GNUTAR=$a
3083         break
3084     fi
3085 done
3086 AC_MSG_RESULT($GNUTAR)
3087 if test -z "$GNUTAR"; then
3088     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3090 AC_SUBST(GNUTAR)
3092 AC_MSG_CHECKING([for tar's option to strip components])
3093 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3094 if test $? -eq 0; then
3095     STRIP_COMPONENTS="--strip-components"
3096 else
3097     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3098     if test $? -eq 0; then
3099         STRIP_COMPONENTS="--strip-path"
3100     else
3101         STRIP_COMPONENTS="unsupported"
3102     fi
3104 AC_MSG_RESULT($STRIP_COMPONENTS)
3105 if test x$STRIP_COMPONENTS = xunsupported; then
3106     AC_MSG_ERROR([you need a tar that is able to strip components.])
3108 AC_SUBST(STRIP_COMPONENTS)
3110 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3111 dnl desktop OSes from "mobile" ones.
3113 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3114 dnl In other words, that when building for an OS that is not a
3115 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3117 dnl Note the direction of the implication; there is no assumption that
3118 dnl cross-compiling would imply a non-desktop OS.
3120 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3121     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3122     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3123     if test "$_os" != Emscripten; then
3124         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3125     fi
3128 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3129 # also work with the default gtk3 plugin.
3130 if test "$enable_wasm_strip" = "yes"; then
3131     enable_avmedia=no
3132     enable_libcmis=no
3133     enable_coinmp=no
3134     enable_cups=no
3135     test "$_os" = Emscripten && enable_curl=no
3136     enable_database_connectivity=no
3137     enable_dbus=no
3138     enable_dconf=no
3139     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3140     enable_extension_integration=no
3141     enable_extensions=no
3142     enable_extension_update=no
3143     enable_gio=no
3144     enable_gpgmepp=no
3145     enable_ldap=no
3146     enable_lotuswordpro=no
3147     enable_lpsolve=no
3148     enable_nss=no
3149     enable_odk=no
3150     enable_online_update=no
3151     enable_opencl=no
3152     enable_pdfimport=no
3153     enable_randr=no
3154     enable_report_builder=no
3155     enable_scripting=no
3156     enable_sdremote_bluetooth=no
3157     enable_skia=no
3158     enable_xmlhelp=no
3159     enable_zxing=no
3160     test_libepubgen=no
3161     test_libcdr=no
3162     test_libcmis=no
3163     test_libetonyek=no
3164     test_libfreehand=no
3165     test_libmspub=no
3166     test_libpagemaker=no
3167     test_libqxp=no
3168     test_libvisio=no
3169     test_libzmf=no
3170     test_webdav=no
3171     with_galleries=no
3172     with_templates=no
3173     with_webdav=no
3174     with_x=no
3176     test "${with_fonts+set}" = set || with_fonts=yes
3177     test "${with_locales+set}" = set || with_locales=en
3179     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3180     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3181     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3182     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3183 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3184     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3185     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3186     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3187     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3188 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3189     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3190     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3191     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3192     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3193     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3194     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3195     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3196     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3199 EMSCRIPTEN_NEH_MAJOR=3
3200 EMSCRIPTEN_NEH_MINOR=1
3201 EMSCRIPTEN_NEH_TINY=3
3202 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3204 if test "$enable_wasm_exceptions" = yes; then
3205     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3206     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3207     if test $? -ne 0; then
3208         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3209     else
3210         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3211     fi
3212     ENABLE_WASM_EXCEPTIONS=TRUE
3214 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3216 # Whether to build "avmedia" functionality or not.
3218 if test "$enable_avmedia" = yes; then
3219     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3220     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3221 else
3222     test_gstreamer_1_0=no
3225 # Decide whether to build database connectivity stuff (including Base) or not.
3226 if test "$enable_database_connectivity" != no; then
3227     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3228     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3229 else
3230     if test "$_os" = iOS; then
3231         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3232     fi
3233     disable_database_connectivity_dependencies
3236 if test -z "$enable_extensions"; then
3237     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3238     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3239         enable_extensions=yes
3240     fi
3243 DISABLE_SCRIPTING=''
3244 if test "$enable_scripting" = yes; then
3245     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3246     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3247 else
3248     DISABLE_SCRIPTING='TRUE'
3249     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3252 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3253     # Disable dynamic_loading always for iOS and Android
3254     enable_dynamic_loading=no
3255 elif test -z "$enable_dynamic_loading"; then
3256     # Otherwise enable it unless specifically disabled
3257     enable_dynamic_loading=yes
3260 DISABLE_DYNLOADING=''
3261 if test "$enable_dynamic_loading" = yes; then
3262     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3263 else
3264     DISABLE_DYNLOADING='TRUE'
3265     if test $_os != iOS -a $_os != Android; then
3266         enable_database_connectivity=no
3267         enable_nss=no
3268         enable_odk=no
3269         enable_python=no
3270         enable_skia=no
3271         with_java=no
3272     fi
3274 AC_SUBST(DISABLE_DYNLOADING)
3276 ENABLE_CUSTOMTARGET_COMPONENTS=
3277 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3278     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3279     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3280         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3281     fi
3283 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3285 if test "$enable_extensions" = yes; then
3286     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3287     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3288 else
3289     enable_extension_integration=no
3290     enable_extension_update=no
3293 # remember SYSBASE value
3294 AC_SUBST(SYSBASE)
3296 dnl ===================================================================
3297 dnl  Sort out various gallery compilation options
3298 dnl ===================================================================
3299 WITH_GALLERY_BUILD=TRUE
3300 AC_MSG_CHECKING([how to build and package galleries])
3301 if test -n "${with_galleries}"; then
3302     if test "$with_galleries" = "build"; then
3303         if test "$enable_database_connectivity" = no; then
3304             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3305         fi
3306         AC_MSG_RESULT([build from source images internally])
3307     elif test "$with_galleries" = "no"; then
3308         WITH_GALLERY_BUILD=
3309         AC_MSG_RESULT([disable non-internal gallery build])
3310     else
3311         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3312     fi
3313 else
3314     if test $_os != iOS -a $_os != Android; then
3315         AC_MSG_RESULT([internal src images for desktop])
3316     else
3317         WITH_GALLERY_BUILD=
3318         AC_MSG_RESULT([disable src image build])
3319     fi
3321 AC_SUBST(WITH_GALLERY_BUILD)
3323 dnl ===================================================================
3324 dnl  Sort out various templates compilation options
3325 dnl ===================================================================
3326 WITH_TEMPLATES=TRUE
3327 AC_MSG_CHECKING([build with or without template files])
3328 if test -n "${with_templates}"; then
3329     if test "$with_templates" = "yes"; then
3330         AC_MSG_RESULT([enable all templates])
3331     elif test "$with_templates" = "no"; then
3332         WITH_TEMPLATES=
3333         AC_MSG_RESULT([disable non-internal templates])
3334     else
3335         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3336     fi
3337 else
3338     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3339         AC_MSG_RESULT([enable all templates])
3340     else
3341         WITH_TEMPLATES=
3342         AC_MSG_RESULT([disable non-internal templates])
3343     fi
3345 AC_SUBST(WITH_TEMPLATES)
3347 dnl ===================================================================
3348 dnl  Checks if ccache is available
3349 dnl ===================================================================
3350 CCACHE_DEPEND_MODE=
3351 if test "$enable_ccache" = "no"; then
3352     CCACHE=""
3353 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3354     case "%$CC%$CXX%" in
3355     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3356     # assume that's good then
3357     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3358         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3359         CCACHE_DEPEND_MODE=1
3360         ;;
3361     *)
3362         # try to use our own ccache if it is available and CCACHE was not already defined
3363         if test -z "$CCACHE"; then
3364             if test "$_os" = "WINNT"; then
3365                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3366             fi
3367             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3368                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3369             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3370                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3371             fi
3372         fi
3373         AC_PATH_PROG([CCACHE],[ccache],[not found])
3374         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3375             CCACHE=`win_short_path_for_make "$CCACHE"`
3376             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3377             rm -f conftest.txt
3378             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3379             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3380             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3381                 AC_MSG_RESULT(yes)
3382             else
3383                 AC_MSG_RESULT(no)
3384                 CCACHE="not found"
3385             fi
3386             rm -f conftest.txt
3387         fi
3388         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3389             # on windows/VC perhaps sccache is around?
3390             case "%$CC%$CXX%" in
3391             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3392             # assume that's good then
3393             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3394                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3395                 CCACHE_DEPEND_MODE=1
3396                 SCCACHE=1
3397                 ;;
3398             *)
3399                 # for sharing code below, reuse CCACHE env var
3400                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3401                 if test "$CCACHE" != "not found"; then
3402                     CCACHE=`win_short_path_for_make "$CCACHE"`
3403                     SCCACHE=1
3404                     CCACHE_DEPEND_MODE=1
3405                 fi
3406                 ;;
3407             esac
3408         fi
3409         if test "$CCACHE" = "not found"; then
3410             CCACHE=""
3411         fi
3412         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3413             CCACHE_DEPEND_MODE=1
3414             # Need to check for ccache version: otherwise prevents
3415             # caching of the results (like "-x objective-c++" for Mac)
3416             if test $_os = Darwin -o $_os = iOS; then
3417                 # Check ccache version
3418                 AC_MSG_CHECKING([whether version of ccache is suitable])
3419                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3420                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3421                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3422                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3423                 else
3424                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3425                     CCACHE=""
3426                     CCACHE_DEPEND_MODE=
3427                 fi
3428             fi
3429         fi
3430         ;;
3431     esac
3432 else
3433     CCACHE=""
3435 if test "$enable_ccache" = "nodepend"; then
3436     CCACHE_DEPEND_MODE=""
3438 AC_SUBST(CCACHE_DEPEND_MODE)
3440 # sccache defaults are good enough
3441 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3442     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3443     # or (...) max_size = 20.0 G
3444     # -p works with both 4.2 and 4.4
3445     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3446     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3447     if test "$ccache_size" = ""; then
3448         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3449         if test "$ccache_size" = ""; then
3450             ccache_size=0
3451         fi
3452         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3453         if test $ccache_size -lt 1024; then
3454             CCACHE=""
3455             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3456             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3457         else
3458             # warn that ccache may be too small for debug build
3459             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3460             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3461         fi
3462     else
3463         if test $ccache_size -lt 5; then
3464             #warn that ccache may be too small for debug build
3465             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3466             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3467         fi
3468     fi
3471 ENABLE_Z7_DEBUG=
3472 if test "$enable_z7_debug" != no; then
3473     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3474         ENABLE_Z7_DEBUG=TRUE
3475     fi
3476 else
3477     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3478     add_warning "ccache will not work with --disable-z7-debug"
3480 AC_SUBST(ENABLE_Z7_DEBUG)
3482 dnl ===================================================================
3483 dnl  Checks for C compiler,
3484 dnl  The check for the C++ compiler is later on.
3485 dnl ===================================================================
3486 if test "$_os" != "WINNT"; then
3487     GCC_HOME_SET="true"
3488     AC_MSG_CHECKING([gcc home])
3489     if test -z "$with_gcc_home"; then
3490         if test "$enable_icecream" = "yes"; then
3491             if test -d "/usr/lib/icecc/bin"; then
3492                 GCC_HOME="/usr/lib/icecc/"
3493             elif test -d "/usr/libexec/icecc/bin"; then
3494                 GCC_HOME="/usr/libexec/icecc/"
3495             elif test -d "/opt/icecream/bin"; then
3496                 GCC_HOME="/opt/icecream/"
3497             else
3498                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3500             fi
3501         else
3502             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3503             GCC_HOME_SET="false"
3504         fi
3505     else
3506         GCC_HOME="$with_gcc_home"
3507     fi
3508     AC_MSG_RESULT($GCC_HOME)
3509     AC_SUBST(GCC_HOME)
3511     if test "$GCC_HOME_SET" = "true"; then
3512         if test -z "$CC"; then
3513             CC="$GCC_HOME/bin/gcc"
3514             CC_BASE="gcc"
3515         fi
3516         if test -z "$CXX"; then
3517             CXX="$GCC_HOME/bin/g++"
3518             CXX_BASE="g++"
3519         fi
3520     fi
3523 COMPATH=`dirname "$CC"`
3524 if test "$COMPATH" = "."; then
3525     AC_PATH_PROGS(COMPATH, $CC)
3526     dnl double square bracket to get single because of M4 quote...
3527     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3529 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3531 dnl ===================================================================
3532 dnl Java support
3533 dnl ===================================================================
3534 AC_MSG_CHECKING([whether to build with Java support])
3535 if test "$with_java" != "no"; then
3536     if test "$DISABLE_SCRIPTING" = TRUE; then
3537         AC_MSG_RESULT([no, overridden by --disable-scripting])
3538         ENABLE_JAVA=""
3539         with_java=no
3540     else
3541         AC_MSG_RESULT([yes])
3542         ENABLE_JAVA="TRUE"
3543         AC_DEFINE(HAVE_FEATURE_JAVA)
3544     fi
3545 else
3546     AC_MSG_RESULT([no])
3547     ENABLE_JAVA=""
3550 AC_SUBST(ENABLE_JAVA)
3552 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3554 dnl ENABLE_JAVA="" indicate no Java support at all
3556 dnl ===================================================================
3557 dnl Check macOS SDK and compiler
3558 dnl ===================================================================
3560 if test $_os = Darwin; then
3562     # The SDK in the currently selected Xcode should be found.
3564     AC_MSG_CHECKING([what macOS SDK to use])
3565     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3566     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3567     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3568     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3569     # problems that existed in the PPC days with target versions not being respected or random
3570     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3571     # SDK version is enough, no need to do both...
3572     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3573     if test ! -d "$MACOSX_SDK_PATH"; then
3574         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3575     fi
3576     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3577     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3578     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3579     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3580     # 10.10.2 is 101002
3581     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3582     # correct version in case such an old SDK is specified, it will be rejected later anyway
3583     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3584     if test $MACOSX_SDK_VERSION -lt 101500; then
3585         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3586     fi
3587     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3588         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3589     fi
3590     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3592     AC_MSG_CHECKING([what minimum version of macOS to require])
3593     if test "$with_macosx_version_min_required" = "" ; then
3594         if test "$host_cpu" = x86_64; then
3595             with_macosx_version_min_required="10.15";
3596         else
3597             with_macosx_version_min_required="11.0";
3598         fi
3599     fi
3600     # see same notes about MACOSX_SDK_VERSION above
3601     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3602     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3603         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3604     fi
3605     AC_MSG_RESULT([$with_macosx_version_min_required])
3607     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3608     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3609         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3610     else
3611         AC_MSG_RESULT([yes])
3612     fi
3614     # export this so that "xcrun" invocations later return matching values
3615     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3616     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3617     export DEVELOPER_DIR
3618     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3619     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3621     AC_MSG_CHECKING([whether Xcode is new enough])
3622     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3623     my_xcode_ver2=${my_xcode_ver1#Xcode }
3624     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3625     if test "$my_xcode_ver3" -ge 1205; then
3626         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3627         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3628             if test "$my_xcode_ver3" -eq 1500; then
3629                 dnl the bug was aleady fixed on 15.1 and 15.2 still has the same OS requirements as 15.0
3630                 dnl in other words all affected users could update to a working Xcode version
3631                 AC_MSG_WARN([Use a current version of XCode or bump the minimum deployment target])
3632                 AC_MSG_WARN([[see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking]])
3633                 AC_MSG_ERROR([Xcode 15.0 has a bug in the new linker that causes runtime crashes on macOS 11 - aborting])
3634             fi
3635         fi
3636     else
3637         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3638     fi
3640     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3641     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3643     LIBTOOL=/usr/bin/libtool
3644     INSTALL_NAME_TOOL=install_name_tool
3645     if test -z "$save_CC"; then
3646         stdlib=-stdlib=libc++
3648         AC_MSG_CHECKING([what C compiler to use])
3649         CC="`xcrun -find clang`"
3650         CC_BASE=`first_arg_basename "$CC"`
3651         if test "$host_cpu" = x86_64; then
3652             CC+=" -target x86_64-apple-macos"
3653         else
3654             CC+=" -target arm64-apple-macos"
3655         fi
3656         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3657         AC_MSG_RESULT([$CC])
3659         AC_MSG_CHECKING([what C++ compiler to use])
3660         CXX="`xcrun -find clang++`"
3661         CXX_BASE=`first_arg_basename "$CXX"`
3662         if test "$host_cpu" = x86_64; then
3663             CXX+=" -target x86_64-apple-macos"
3664         else
3665             CXX+=" -target arm64-apple-macos"
3666         fi
3667         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3668         AC_MSG_RESULT([$CXX])
3670         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3671         AR=`xcrun -find ar`
3672         NM=`xcrun -find nm`
3673         STRIP=`xcrun -find strip`
3674         LIBTOOL=`xcrun -find libtool`
3675         RANLIB=`xcrun -find ranlib`
3676     fi
3678     AC_MSG_CHECKING([whether to do code signing])
3680     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3681         AC_MSG_RESULT([no])
3682     else
3683         if test "$enable_macosx_code_signing" = yes; then
3684             # By default use the first suitable certificate (?).
3686             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3687             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3688             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3689             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3690             # "Developer ID Application" one.
3691             identity="Developer ID Application:"
3692         else
3693             identity=$enable_macosx_code_signing
3694         fi
3695         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3696         if test -n "$identity"; then
3697             MACOSX_CODESIGNING_IDENTITY=$identity
3698             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3699             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3700         else
3701             AC_MSG_ERROR([cannot determine identity to use])
3702         fi
3703     fi
3705     AC_MSG_CHECKING([whether to create a Mac App Store package])
3707     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3708         AC_MSG_RESULT([no])
3709     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3710         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3711     else
3712         if test "$enable_macosx_package_signing" = yes; then
3713             # By default use the first suitable certificate.
3714             # It should be a "3rd Party Mac Developer Installer" one
3715             identity="3rd Party Mac Developer Installer:"
3716         else
3717             identity=$enable_macosx_package_signing
3718         fi
3719         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3720         if test -n "$identity"; then
3721             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3722             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3723             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3724         else
3725             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3726         fi
3727     fi
3729     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3730         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3731     fi
3733     AC_MSG_CHECKING([whether to sandbox the application])
3735     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3736         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3737     elif test "$enable_macosx_sandbox" = yes; then
3738         ENABLE_MACOSX_SANDBOX=TRUE
3739         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3740         AC_MSG_RESULT([yes])
3741     else
3742         AC_MSG_RESULT([no])
3743     fi
3745     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3746     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3747     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3749     if test -n "$with_macosx_provisioning_profile" ; then
3750         if test ! -f "$with_macosx_provisioning_profile"; then
3751             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3752         else
3753             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3754             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3755                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3756                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3757                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3758         fi
3759     fi
3761 AC_SUBST(MACOSX_SDK_PATH)
3762 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3763 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3764 AC_SUBST(INSTALL_NAME_TOOL)
3765 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3766 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3767 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3768 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3769 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3770 AC_SUBST(MACOSX_PROVISIONING_INFO)
3771 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3772 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3773 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3775 dnl ===================================================================
3776 dnl Check iOS SDK and compiler
3777 dnl ===================================================================
3779 if test $_os = iOS; then
3780     AC_MSG_CHECKING([what iOS SDK to use])
3782     if test "$enable_ios_simulator" = "yes"; then
3783         platformlc=iphonesimulator
3784         versionmin=-mios-simulator-version-min=14.5
3785     else
3786         platformlc=iphoneos
3787         versionmin=-miphoneos-version-min=14.5
3788     fi
3790     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3792     if ! test -d "$sysroot"; then
3793         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3794     fi
3796     AC_MSG_RESULT($sysroot)
3798     stdlib="-stdlib=libc++"
3800     AC_MSG_CHECKING([what C compiler to use])
3801     CC="`xcrun -find clang`"
3802     CC_BASE=`first_arg_basename "$CC"`
3803     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3804     AC_MSG_RESULT([$CC])
3806     AC_MSG_CHECKING([what C++ compiler to use])
3807     CXX="`xcrun -find clang++`"
3808     CXX_BASE=`first_arg_basename "$CXX"`
3809     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3810     AC_MSG_RESULT([$CXX])
3812     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3813     AR=`xcrun -find ar`
3814     NM=`xcrun -find nm`
3815     STRIP=`xcrun -find strip`
3816     LIBTOOL=`xcrun -find libtool`
3817     RANLIB=`xcrun -find ranlib`
3820 AC_MSG_CHECKING([whether to treat the installation as read-only])
3822 if test $_os = Darwin; then
3823     enable_readonly_installset=yes
3824 elif test "$enable_extensions" != yes; then
3825     enable_readonly_installset=yes
3827 if test "$enable_readonly_installset" = yes; then
3828     AC_MSG_RESULT([yes])
3829     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3830 else
3831     AC_MSG_RESULT([no])
3834 dnl ===================================================================
3835 dnl Structure of install set
3836 dnl ===================================================================
3838 if test $_os = Darwin; then
3839     LIBO_BIN_FOLDER=MacOS
3840     LIBO_ETC_FOLDER=Resources
3841     LIBO_LIBEXEC_FOLDER=MacOS
3842     LIBO_LIB_FOLDER=Frameworks
3843     LIBO_LIB_PYUNO_FOLDER=Resources
3844     LIBO_SHARE_FOLDER=Resources
3845     LIBO_SHARE_HELP_FOLDER=Resources/help
3846     LIBO_SHARE_JAVA_FOLDER=Resources/java
3847     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3848     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3849     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3850     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3851     LIBO_URE_BIN_FOLDER=MacOS
3852     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3853     LIBO_URE_LIB_FOLDER=Frameworks
3854     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3855     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3856 elif test $_os = WINNT; then
3857     LIBO_BIN_FOLDER=program
3858     LIBO_ETC_FOLDER=program
3859     LIBO_LIBEXEC_FOLDER=program
3860     LIBO_LIB_FOLDER=program
3861     LIBO_LIB_PYUNO_FOLDER=program
3862     LIBO_SHARE_FOLDER=share
3863     LIBO_SHARE_HELP_FOLDER=help
3864     LIBO_SHARE_JAVA_FOLDER=program/classes
3865     LIBO_SHARE_PRESETS_FOLDER=presets
3866     LIBO_SHARE_READMES_FOLDER=readmes
3867     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3868     LIBO_SHARE_SHELL_FOLDER=program/shell
3869     LIBO_URE_BIN_FOLDER=program
3870     LIBO_URE_ETC_FOLDER=program
3871     LIBO_URE_LIB_FOLDER=program
3872     LIBO_URE_MISC_FOLDER=program
3873     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3874 else
3875     LIBO_BIN_FOLDER=program
3876     LIBO_ETC_FOLDER=program
3877     LIBO_LIBEXEC_FOLDER=program
3878     LIBO_LIB_FOLDER=program
3879     LIBO_LIB_PYUNO_FOLDER=program
3880     LIBO_SHARE_FOLDER=share
3881     LIBO_SHARE_HELP_FOLDER=help
3882     LIBO_SHARE_JAVA_FOLDER=program/classes
3883     LIBO_SHARE_PRESETS_FOLDER=presets
3884     LIBO_SHARE_READMES_FOLDER=readmes
3885     if test "$enable_fuzzers" != yes; then
3886         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3887     else
3888         LIBO_SHARE_RESOURCE_FOLDER=resource
3889     fi
3890     LIBO_SHARE_SHELL_FOLDER=program/shell
3891     LIBO_URE_BIN_FOLDER=program
3892     LIBO_URE_ETC_FOLDER=program
3893     LIBO_URE_LIB_FOLDER=program
3894     LIBO_URE_MISC_FOLDER=program
3895     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3897 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3898 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3899 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3900 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3901 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3902 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3903 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3904 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3905 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3906 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3907 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3908 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3909 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3910 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3911 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3912 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3914 # Not all of them needed in config_host.mk, add more if need arises
3915 AC_SUBST(LIBO_BIN_FOLDER)
3916 AC_SUBST(LIBO_ETC_FOLDER)
3917 AC_SUBST(LIBO_LIB_FOLDER)
3918 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3919 AC_SUBST(LIBO_SHARE_FOLDER)
3920 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3921 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3922 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3923 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3924 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3925 AC_SUBST(LIBO_URE_BIN_FOLDER)
3926 AC_SUBST(LIBO_URE_ETC_FOLDER)
3927 AC_SUBST(LIBO_URE_LIB_FOLDER)
3928 AC_SUBST(LIBO_URE_MISC_FOLDER)
3929 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3931 dnl ===================================================================
3932 dnl Windows specific tests and stuff
3933 dnl ===================================================================
3935 reg_get_value()
3937     # Return value: $regvalue
3938     unset regvalue
3940     if test "$build_os" = "wsl"; then
3941         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3942         return
3943     fi
3945     local _regentry="/proc/registry${1}/${2}"
3946     if test -f "$_regentry"; then
3947         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3948         # Registry keys read via /proc/registry* are always \0 terminated!
3949         local _regvalue=$(tr -d '\0' < "$_regentry")
3950         if test $? -eq 0; then
3951             regvalue=$_regvalue
3952         fi
3953     fi
3956 # Get a value from the 32-bit side of the Registry
3957 reg_get_value_32()
3959     reg_get_value "32" "$1"
3962 # Get a value from the 64-bit side of the Registry
3963 reg_get_value_64()
3965     reg_get_value "64" "$1"
3968 reg_list_values()
3970     # Return value: $reglist
3971     unset reglist
3973     if test "$build_os" = "wsl"; then
3974         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3975         return
3976     fi
3978     reglist=$(ls "/proc/registry${1}/${2}")
3981 # List values from the 32-bit side of the Registry
3982 reg_list_values_32()
3984     reg_list_values "32" "$1"
3987 # List values from the 64-bit side of the Registry
3988 reg_list_values_64()
3990     reg_list_values "64" "$1"
3993 case "$host_os" in
3994 cygwin*|wsl*)
3995     COM=MSC
3996     OS=WNT
3997     RTL_OS=Windows
3998     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3999         P_SEP=";"
4000     else
4001         P_SEP=:
4002     fi
4003     case "$host_cpu" in
4004     x86_64)
4005         CPUNAME=X86_64
4006         RTL_ARCH=X86_64
4007         PLATFORMID=windows_x86_64
4008         WINDOWS_X64=1
4009         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4010         WIN_HOST_ARCH="x64"
4011         WIN_MULTI_ARCH="x86"
4012         WIN_HOST_BITS=64
4013         ;;
4014     i*86)
4015         CPUNAME=INTEL
4016         RTL_ARCH=x86
4017         PLATFORMID=windows_x86
4018         WIN_HOST_ARCH="x86"
4019         WIN_HOST_BITS=32
4020         WIN_OTHER_ARCH="x64"
4021         ;;
4022     aarch64)
4023         CPUNAME=AARCH64
4024         RTL_ARCH=AARCH64
4025         PLATFORMID=windows_aarch64
4026         WINDOWS_X64=1
4027         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4028         WIN_HOST_ARCH="arm64"
4029         WIN_HOST_BITS=64
4030         with_ucrt_dir=no
4031         ;;
4032     *)
4033         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4034         ;;
4035     esac
4037     case "$build_cpu" in
4038     x86_64) WIN_BUILD_ARCH="x64" ;;
4039     i*86) WIN_BUILD_ARCH="x86" ;;
4040     aarch64) WIN_BUILD_ARCH="arm64" ;;
4041     *)
4042         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4043         ;;
4044     esac
4046     SCPDEFS="$SCPDEFS -D_MSC_VER"
4047     ;;
4048 esac
4050 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4051 # other-arch won't, but wouldn't break the build (x64 on x86).
4052 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4053     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4057 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4058     # To allow building Windows multi-arch releases without cross-tooling
4059     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4060         cross_compiling="yes"
4061     fi
4064 if test "$cross_compiling" = "yes"; then
4065     export CROSS_COMPILING=TRUE
4066     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4067         ENABLE_WASM_STRIP=TRUE
4068     fi
4069     if test "$_os" = "Emscripten"; then
4070         if test "$with_main_module" = "calc"; then
4071             ENABLE_WASM_STRIP_WRITER=TRUE
4072         elif test "$with_main_module" = "writer"; then
4073             ENABLE_WASM_STRIP_CALC=TRUE
4074         fi
4075     fi
4076 else
4077     CROSS_COMPILING=
4078     BUILD_TYPE="$BUILD_TYPE NATIVE"
4080 AC_SUBST(CROSS_COMPILING)
4081 AC_SUBST(ENABLE_WASM_STRIP)
4082 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4083 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4085 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4086 # NOTE: must _not_ be used for bundled external libraries!
4087 ISYSTEM=
4088 if test "$GCC" = "yes"; then
4089     AC_MSG_CHECKING( for -isystem )
4090     save_CFLAGS=$CFLAGS
4091     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4092     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4093     CFLAGS=$save_CFLAGS
4094     if test -n "$ISYSTEM"; then
4095         AC_MSG_RESULT(yes)
4096     else
4097         AC_MSG_RESULT(no)
4098     fi
4100 if test -z "$ISYSTEM"; then
4101     # fall back to using -I
4102     ISYSTEM=-I
4104 AC_SUBST(ISYSTEM)
4106 dnl ===================================================================
4107 dnl  Check which Visual Studio compiler is used
4108 dnl ===================================================================
4110 map_vs_year_to_version()
4112     # Return value: $vsversion
4114     unset vsversion
4116     case $1 in
4117     2019)
4118         vsversion=16;;
4119     2022)
4120         vsversion=17;;
4121     2022preview)
4122         vsversion=17.9;;
4123     *)
4124         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4125     esac
4128 vs_versions_to_check()
4130     # Args: $1 (optional) : versions to check, in the order of preference
4131     # Return value: $vsversions
4133     unset vsversions
4135     if test -n "$1"; then
4136         map_vs_year_to_version "$1"
4137         vsversions=$vsversion
4138     else
4139         # Default version is 2019
4140         vsversions="16"
4141     fi
4144 win_get_env_from_vsdevcmdbat()
4146     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4147     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4148     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4149     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4150     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4151     local result
4152     if test "$build_os" = "wsl"; then
4153         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4154     else
4155         chmod +x $WRAPPERBATCHFILEPATH
4156         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4157     fi
4158     rm -f $WRAPPERBATCHFILEPATH
4159     printf '%s' "$result"
4162 find_ucrt()
4164     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4165     if test -n "$regvalue"; then
4166         PathFormat "$regvalue"
4167         UCRTSDKDIR=$formatted_path_unix
4168         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4169         UCRTVERSION=$regvalue
4170         # Rest if not exist
4171         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4172           UCRTSDKDIR=
4173         fi
4174     fi
4175     if test -z "$UCRTSDKDIR"; then
4176         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4177         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4178         if test -f "$ide_env_file"; then
4179             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4180             UCRTSDKDIR=$formatted_path
4181             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4182             dnl Hack needed at least by tml:
4183             if test "$UCRTVERSION" = 10.0.15063.0 \
4184                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4185                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4186             then
4187                 UCRTVERSION=10.0.14393.0
4188             fi
4189         else
4190           AC_MSG_ERROR([No UCRT found])
4191         fi
4192     fi
4195 find_msvc()
4197     # Find Visual C++
4198     # Args: $1 (optional) : The VS version year
4199     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4201     unset vctest vctoolset vcnumwithdot vcbuildnumber
4203     vs_versions_to_check "$1"
4204     if test "$build_os" = wsl; then
4205         vswhere="$PROGRAMFILESX86"
4206         if test -z "$vswhere"; then
4207             vswhere="c:\\Program Files (x86)"
4208         fi
4209     else
4210         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4211     fi
4212     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4213     PathFormat "$vswhere"
4214     vswhere=$formatted_path_unix
4215     for ver in $vsversions; do
4216         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4217         if test -z "$vswhereoutput"; then
4218             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4219         fi
4220         # Fall back to all MS products (this includes VC++ Build Tools)
4221         if ! test -n "$vswhereoutput"; then
4222             AC_MSG_CHECKING([VC++ Build Tools and similar])
4223             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4224         fi
4225         if test -n "$vswhereoutput"; then
4226             PathFormat "$vswhereoutput"
4227             vctest=$formatted_path_unix
4228             break
4229         fi
4230     done
4232     if test -n "$vctest"; then
4233         vcnumwithdot="$ver"
4234         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4235             vcnumwithdot=$vcnumwithdot.0
4236         fi
4237         case "$vcnumwithdot" in
4238         16.0)
4239             vcyear=2019
4240             vctoolset=v142
4241             ;;
4242         17.0 | 17.9)
4243             vcyear=2022
4244             vctoolset=v143
4245             ;;
4246         esac
4247         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4249     fi
4252 test_cl_exe()
4254     AC_MSG_CHECKING([$1 compiler])
4256     CL_EXE_PATH="$2/cl.exe"
4258     if test ! -f "$CL_EXE_PATH"; then
4259         if test "$1" = "multi-arch"; then
4260             AC_MSG_WARN([no compiler (cl.exe) in $2])
4261             return 1
4262         else
4263             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4264         fi
4265     fi
4267     dnl ===========================================================
4268     dnl  Check for the corresponding mspdb*.dll
4269     dnl ===========================================================
4271     # MSVC 15.0 has libraries from 14.0?
4272     mspdbnum="140"
4274     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4275         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4276     fi
4278     # The compiles has to find its shared libraries
4279     OLD_PATH="$PATH"
4280     TEMP_PATH=`cygpath -d "$2"`
4281     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4283     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4284         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4285     fi
4287     PATH="$OLD_PATH"
4289     AC_MSG_RESULT([$CL_EXE_PATH])
4292 SOLARINC=
4293 MSBUILD_PATH=
4294 DEVENV=
4295 if test "$_os" = "WINNT"; then
4296     AC_MSG_CHECKING([Visual C++])
4297     find_msvc "$with_visual_studio"
4298     if test -z "$vctest"; then
4299         if test -n "$with_visual_studio"; then
4300             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4301         else
4302             AC_MSG_ERROR([no Visual Studio installation found])
4303         fi
4304     fi
4305     AC_MSG_RESULT([])
4307     VC_PRODUCT_DIR="$vctest/VC"
4308     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4310     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4311     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4312         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4313         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4314         if test $? -ne 0; then
4315             WIN_MULTI_ARCH=""
4316             WIN_OTHER_ARCH=""
4317         fi
4318     fi
4320     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4321         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4322         test_cl_exe "build" "$MSVC_BUILD_PATH"
4323     fi
4325     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4326         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4327         test_cl_exe "host" "$MSVC_HOST_PATH"
4328     else
4329         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4330     fi
4332     AC_MSG_CHECKING([for short pathname of VC product directory])
4333     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4334     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4336     UCRTSDKDIR=
4337     UCRTVERSION=
4339     AC_MSG_CHECKING([for UCRT location])
4340     find_ucrt
4341     # find_ucrt errors out if it doesn't find it
4342     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4343     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4344     ucrtincpath_formatted=$formatted_path
4345     # SOLARINC is used for external modules and must be set too.
4346     # And no, it's not sufficient to set SOLARINC only, as configure
4347     # itself doesn't honour it.
4348     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4349     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4350     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4351     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4353     AC_SUBST(UCRTSDKDIR)
4354     AC_SUBST(UCRTVERSION)
4356     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4357     # Find the proper version of MSBuild.exe to use based on the VS version
4358     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4359     if test -z "$regvalue" ; then
4360         if test "$WIN_BUILD_ARCH" != "x64"; then
4361             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4362         else
4363             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4364         fi
4365     fi
4366     if test -d "$regvalue" ; then
4367         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4368         AC_MSG_RESULT([$regvalue])
4369     else
4370         AC_MSG_ERROR([MSBuild.exe location not found])
4371     fi
4373     # Find the version of devenv.exe
4374     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4375     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4376     DEVENV_unix=$(cygpath -u "$DEVENV")
4377     if test ! -e "$DEVENV_unix"; then
4378         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4379     fi
4381     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4382     dnl needed when building CLR code:
4383     if test -z "$MSVC_CXX"; then
4384         # This gives us a posix path with 8.3 filename restrictions
4385         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4386     fi
4388     if test -z "$CC"; then
4389         CC=$MSVC_CXX
4390         CC_BASE=`first_arg_basename "$CC"`
4391     fi
4392     if test -z "$CXX"; then
4393         CXX=$MSVC_CXX
4394         CXX_BASE=`first_arg_basename "$CXX"`
4395     fi
4397     if test -n "$CC"; then
4398         # Remove /cl.exe from CC case insensitive
4399         AC_MSG_NOTICE([found Visual C++ $vcyear])
4401         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4402         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4404         PathFormat "$COMPATH"
4405         COMPATH=`win_short_path_for_make "$formatted_path"`
4407         VCVER=$vcnumwithdot
4408         VCTOOLSET=$vctoolset
4410         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4411         # are always "better", we list them in reverse chronological order.
4413         case "$vcnumwithdot" in
4414         16.0 | 17.0 | 17.9)
4415             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4416             ;;
4417         esac
4419         # The expectation is that --with-windows-sdk should not need to be used
4420         if test -n "$with_windows_sdk"; then
4421             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4422             *" "$with_windows_sdk" "*)
4423                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4424                 ;;
4425             *)
4426                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4427                 ;;
4428             esac
4429         fi
4431         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4432         ac_objext=obj
4433         ac_exeext=exe
4435     else
4436         AC_MSG_ERROR([Visual C++ not found after all, huh])
4437     fi
4439     # ERROR if VS version < 16.5
4440     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4441     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4442         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4443         // between Visual Studio versions and _MSC_VER:
4444         #if _MSC_VER < 1925
4445         #error
4446         #endif
4447     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4449     # WARN if VS version < 16.10
4450     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4451     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4452         #if _MSC_VER < 1929
4453         #error
4454         #endif
4455     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4457     if test $vs2019_recommended_version = yes; then
4458         AC_MSG_RESULT([yes])
4459     else
4460         AC_MSG_WARN([no])
4461         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."
4462     fi
4464     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4465     # version of the Explorer extension (and maybe other small
4466     # bits, too) needed when installing a 32-bit LibreOffice on a
4467     # 64-bit OS. The 64-bit Explorer extension is a feature that
4468     # has been present since long in OOo. Don't confuse it with
4469     # building LibreOffice itself as 64-bit code.
4471     BUILD_X64=
4472     CXX_X64_BINARY=
4474     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4475         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4476         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4477              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4478         then
4479             BUILD_X64=TRUE
4480             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4481             AC_MSG_RESULT([found])
4482         else
4483             AC_MSG_RESULT([not found])
4484             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4485         fi
4486     elif test "$WIN_HOST_ARCH" = "x64"; then
4487         CXX_X64_BINARY=$CXX
4488     fi
4489     AC_SUBST(BUILD_X64)
4491     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4492     AC_SUBST(CXX_X64_BINARY)
4494     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4495     # needed to support TWAIN scan on both 32- and 64-bit systems
4497     case "$WIN_HOST_ARCH" in
4498     x64)
4499         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4500         if test -n "$CXX_X86_BINARY"; then
4501             BUILD_X86=TRUE
4502             AC_MSG_RESULT([preset])
4503         elif test -n "$WIN_MULTI_ARCH"; then
4504             BUILD_X86=TRUE
4505             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4506             AC_MSG_RESULT([found])
4507         else
4508             AC_MSG_RESULT([not found])
4509             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4510         fi
4511         ;;
4512     x86)
4513         BUILD_X86=TRUE
4514         CXX_X86_BINARY=$MSVC_CXX
4515         ;;
4516     esac
4517     AC_SUBST(BUILD_X86)
4518     AC_SUBST(CXX_X86_BINARY)
4520 AC_SUBST(VCVER)
4521 AC_SUBST(VCTOOLSET)
4522 AC_SUBST(DEVENV)
4523 AC_SUBST(MSVC_CXX)
4525 COM_IS_CLANG=
4526 AC_MSG_CHECKING([whether the compiler is actually Clang])
4527 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4528     #ifndef __clang__
4529     you lose
4530     #endif
4531     int foo=42;
4532     ]])],
4533     [AC_MSG_RESULT([yes])
4534      COM_IS_CLANG=TRUE],
4535     [AC_MSG_RESULT([no])])
4536 AC_SUBST(COM_IS_CLANG)
4538 CLANGVER=
4539 if test "$COM_IS_CLANG" = TRUE; then
4540     AC_MSG_CHECKING([whether Clang is new enough])
4541     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4542         #if !defined __apple_build_version__
4543         #error
4544         #endif
4545         ]])],
4546         [my_apple_clang=yes],[my_apple_clang=])
4547     if test "$my_apple_clang" = yes; then
4548         AC_MSG_RESULT([assumed yes (Apple Clang)])
4549     elif test "$_os" = Emscripten; then
4550         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4551     else
4552         if test "$_os" = WINNT; then
4553             dnl In which case, assume clang-cl:
4554             my_args="/EP /TC"
4555         else
4556             my_args="-E -P"
4557         fi
4558         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4559         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4560         CLANGVER=`echo $clang_version \
4561             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4562         if test "$CLANGVER" -ge 120000; then
4563             AC_MSG_RESULT([yes ($clang_version)])
4564         else
4565             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4566         fi
4567         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4568         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4569     fi
4572 SHOWINCLUDES_PREFIX=
4573 if test "$_os" = WINNT; then
4574     dnl We need to guess the prefix of the -showIncludes output, it can be
4575     dnl localized
4576     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4577     echo "#include <stdlib.h>" > conftest.c
4578     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4579         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4580     rm -f conftest.c conftest.obj
4581     if test -z "$SHOWINCLUDES_PREFIX"; then
4582         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4583     else
4584         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4585     fi
4587 AC_SUBST(SHOWINCLUDES_PREFIX)
4590 # prefix C with ccache if needed
4592 if test "$CCACHE" != ""; then
4593     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4595     AC_LANG_PUSH([C])
4596     save_CFLAGS=$CFLAGS
4597     CFLAGS="$CFLAGS --ccache-skip -O2"
4598     # msvc does not fail on unknown options, check stdout
4599     if test "$COM" = MSC; then
4600         CFLAGS="$CFLAGS -nologo"
4601     fi
4602     save_ac_c_werror_flag=$ac_c_werror_flag
4603     ac_c_werror_flag=yes
4604     dnl an empty program will do, we're checking the compiler flags
4605     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4606                       [use_ccache=yes], [use_ccache=no])
4607     CFLAGS=$save_CFLAGS
4608     ac_c_werror_flag=$save_ac_c_werror_flag
4609     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4610         AC_MSG_RESULT([yes])
4611     else
4612         CC="$CCACHE $CC"
4613         CC_BASE="ccache $CC_BASE"
4614         AC_MSG_RESULT([no])
4615     fi
4616     AC_LANG_POP([C])
4619 # ===================================================================
4620 # check various GCC options that Clang does not support now but maybe
4621 # will somewhen in the future, check them even for GCC, so that the
4622 # flags are set
4623 # ===================================================================
4625 HAVE_GCC_GGDB2=
4626 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4627     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4628     save_CFLAGS=$CFLAGS
4629     CFLAGS="$CFLAGS -Werror -ggdb2"
4630     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4631     CFLAGS=$save_CFLAGS
4632     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4633         AC_MSG_RESULT([yes])
4634     else
4635         AC_MSG_RESULT([no])
4636     fi
4638     if test "$host_cpu" = "m68k"; then
4639         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4640         save_CFLAGS=$CFLAGS
4641         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4642         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4643         CFLAGS=$save_CFLAGS
4644         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4645             AC_MSG_RESULT([yes])
4646         else
4647             AC_MSG_ERROR([no])
4648         fi
4649     fi
4651 AC_SUBST(HAVE_GCC_GGDB2)
4653 dnl ===================================================================
4654 dnl  Test the gcc version
4655 dnl ===================================================================
4656 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4657     AC_MSG_CHECKING([the GCC version])
4658     _gcc_version=`$CC -dumpfullversion`
4659     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4660         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4661     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4663     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4665     if test "$gcc_full_version" -lt 120000; then
4666         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4667     fi
4668 else
4669     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4670     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4671     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4672     # (which reports itself as GCC 4.2.1).
4673     GCC_VERSION=
4675 AC_SUBST(GCC_VERSION)
4677 dnl Set the ENABLE_DBGUTIL variable
4678 dnl ===================================================================
4679 AC_MSG_CHECKING([whether to build with additional debug utilities])
4680 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4681     ENABLE_DBGUTIL="TRUE"
4682     # this is an extra var so it can have different default on different MSVC
4683     # versions (in case there are version specific problems with it)
4684     MSVC_USE_DEBUG_RUNTIME="TRUE"
4686     AC_MSG_RESULT([yes])
4687     # cppunit and graphite expose STL in public headers
4688     if test "$with_system_cppunit" = "yes"; then
4689         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4690     else
4691         with_system_cppunit=no
4692     fi
4693     if test "$with_system_graphite" = "yes"; then
4694         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4695     else
4696         with_system_graphite=no
4697     fi
4698     if test "$with_system_orcus" = "yes"; then
4699         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4700     else
4701         with_system_orcus=no
4702     fi
4703     if test "$with_system_libcmis" = "yes"; then
4704         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4705     else
4706         with_system_libcmis=no
4707     fi
4708     if test "$with_system_hunspell" = "yes"; then
4709         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4710     else
4711         with_system_hunspell=no
4712     fi
4713     if test "$with_system_gpgmepp" = "yes"; then
4714         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4715     else
4716         with_system_gpgmepp=no
4717     fi
4718     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4719     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4720     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4721     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4722     # of those two is using the system variant:
4723     if test "$with_system_libnumbertext" = "yes"; then
4724         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4725     else
4726         with_system_libnumbertext=no
4727     fi
4728     if test "$with_system_libwps" = "yes"; then
4729         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4730     else
4731         with_system_libwps=no
4732     fi
4733 else
4734     ENABLE_DBGUTIL=""
4735     MSVC_USE_DEBUG_RUNTIME=""
4736     AC_MSG_RESULT([no])
4738 AC_SUBST(ENABLE_DBGUTIL)
4739 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4741 dnl Set the ENABLE_DEBUG variable.
4742 dnl ===================================================================
4743 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4744     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4746 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4747     if test -z "$libo_fuzzed_enable_debug"; then
4748         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4749     else
4750         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4751         enable_debug=yes
4752     fi
4755 AC_MSG_CHECKING([whether to do a debug build])
4756 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4757     ENABLE_DEBUG="TRUE"
4758     if test -n "$ENABLE_DBGUTIL" ; then
4759         AC_MSG_RESULT([yes (dbgutil)])
4760     else
4761         AC_MSG_RESULT([yes])
4762     fi
4763 else
4764     ENABLE_DEBUG=""
4765     AC_MSG_RESULT([no])
4767 AC_SUBST(ENABLE_DEBUG)
4769 dnl ===================================================================
4770 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4771 dnl This is done only after compiler checks (need to know if Clang is
4772 dnl used, for different defaults) and after checking if a debug build
4773 dnl is wanted (non-debug builds get the default linker if not explicitly
4774 dnl specified otherwise).
4775 dnl All checks for linker features/options should come after this.
4776 dnl ===================================================================
4777 check_use_ld()
4779     use_ld=-fuse-ld=${1%%:*}
4780     use_ld_path=${1#*:}
4781     if test "$use_ld_path" != "$1"; then
4782         if test "$COM_IS_CLANG" = TRUE; then
4783             if test "$CLANGVER" -ge 120000; then
4784                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4785             else
4786                 use_ld="-fuse-ld=${use_ld_path}"
4787             fi
4788         else
4789             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4790             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4791             # pickup the alternative linker, when called by libtool for linking.
4792             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4793             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4794         fi
4795     fi
4796     use_ld_fail_if_error=$2
4797     use_ld_ok=
4798     AC_MSG_CHECKING([for $use_ld linker support])
4799     use_ld_ldflags_save="$LDFLAGS"
4800     LDFLAGS="$LDFLAGS $use_ld"
4801     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4802 #include <stdio.h>
4803         ],[
4804 printf ("hello world\n");
4805         ])], USE_LD=$use_ld, [])
4806     if test -n "$USE_LD"; then
4807         AC_MSG_RESULT( yes )
4808         use_ld_ok=yes
4809     else
4810         if test -n "$use_ld_fail_if_error"; then
4811             AC_MSG_ERROR( no )
4812         else
4813             AC_MSG_RESULT( no )
4814         fi
4815     fi
4816     if test -n "$use_ld_ok"; then
4817         dnl keep the value of LDFLAGS
4818         return 0
4819     fi
4820     LDFLAGS="$use_ld_ldflags_save"
4821     return 1
4823 USE_LD=
4824 if test "$enable_ld" != "no"; then
4825     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4826         if test -n "$enable_ld"; then
4827             check_use_ld "$enable_ld" fail_if_error
4828         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4829             dnl non-debug builds default to the default linker
4830             true
4831         elif test -n "$COM_IS_CLANG"; then
4832             check_use_ld lld
4833             if test $? -ne 0; then
4834                 check_use_ld gold
4835                 if test $? -ne 0; then
4836                     check_use_ld mold
4837                 fi
4838             fi
4839         else
4840             # For gcc first try gold, new versions also support lld/mold.
4841             check_use_ld gold
4842             if test $? -ne 0; then
4843                 check_use_ld lld
4844                 if test $? -ne 0; then
4845                     check_use_ld mold
4846                 fi
4847             fi
4848         fi
4849         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4850         rm conftest.out
4851         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4852         if test -z "$ld_used"; then
4853             ld_used="unknown"
4854         fi
4855         AC_MSG_CHECKING([for linker that is used])
4856         AC_MSG_RESULT([$ld_used])
4857         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4858             if echo "$ld_used" | grep -q "^GNU ld"; then
4859                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4860                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4861             fi
4862         fi
4863     else
4864         if test "$enable_ld" = "yes"; then
4865             AC_MSG_ERROR([--enable-ld not supported])
4866         fi
4867     fi
4869 AC_SUBST(USE_LD)
4870 AC_SUBST(LD)
4872 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4873 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4874     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4875     bsymbolic_functions_ldflags_save=$LDFLAGS
4876     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4877     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4878 #include <stdio.h>
4879         ],[
4880 printf ("hello world\n");
4881         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4882     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4883         AC_MSG_RESULT( found )
4884     else
4885         AC_MSG_RESULT( not found )
4886     fi
4887     LDFLAGS=$bsymbolic_functions_ldflags_save
4889 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4891 LD_GC_SECTIONS=
4892 if test "$GCC" = "yes"; then
4893     for flag in "--gc-sections" "-dead_strip"; do
4894         AC_MSG_CHECKING([for $flag linker support])
4895         ldflags_save=$LDFLAGS
4896         LDFLAGS="$LDFLAGS -Wl,$flag"
4897         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4898 #include <stdio.h>
4899             ],[
4900 printf ("hello world\n");
4901             ])],[
4902             LD_GC_SECTIONS="-Wl,$flag"
4903             AC_MSG_RESULT( found )
4904             ], [
4905             AC_MSG_RESULT( not found )
4906             ])
4907         LDFLAGS=$ldflags_save
4908         if test -n "$LD_GC_SECTIONS"; then
4909             break
4910         fi
4911     done
4913 AC_SUBST(LD_GC_SECTIONS)
4915 HAVE_EXTERNAL_DWARF=
4916 if test "$enable_split_debug" != no; then
4917     use_split_debug=
4918     if test -n "$ENABLE_LTO"; then
4919         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4920     elif test "$enable_split_debug" = yes; then
4921         use_split_debug=1
4922     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4923     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4924         use_split_debug=1
4925     fi
4926     if test -n "$use_split_debug"; then
4927         if test "$_os" = "Emscripten"; then
4928             TEST_CC_FLAG=-gseparate-dwarf
4929         else
4930             TEST_CC_FLAG=-gsplit-dwarf
4931         fi
4932         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4933         save_CFLAGS=$CFLAGS
4934         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4935         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4936         CFLAGS=$save_CFLAGS
4937         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4938             AC_MSG_RESULT([yes])
4939         else
4940             if test "$enable_split_debug" = yes; then
4941                 AC_MSG_ERROR([no])
4942             else
4943                 AC_MSG_RESULT([no])
4944             fi
4945         fi
4946     fi
4947     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4948         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4949         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4950     fi
4952 AC_SUBST(HAVE_EXTERNAL_DWARF)
4954 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4955 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4956 save_CFLAGS=$CFLAGS
4957 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4958 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4959 CFLAGS=$save_CFLAGS
4960 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4961     AC_MSG_RESULT([yes])
4962 else
4963     AC_MSG_RESULT([no])
4965 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4967 ENABLE_GDB_INDEX=
4968 if test "$enable_gdb_index" != "no"; then
4969     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4970     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4971         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4972         save_CFLAGS=$CFLAGS
4973         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4974         have_ggnu_pubnames=
4975         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4976         if test "$have_ggnu_pubnames" != "TRUE"; then
4977             if test "$enable_gdb_index" = "yes"; then
4978                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4979             else
4980                 AC_MSG_RESULT( no )
4981             fi
4982         else
4983             AC_MSG_RESULT( yes )
4984             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4985             ldflags_save=$LDFLAGS
4986             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4987             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4988 #include <stdio.h>
4989                 ],[
4990 printf ("hello world\n");
4991                 ])], ENABLE_GDB_INDEX=TRUE, [])
4992             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4993                 AC_MSG_RESULT( yes )
4994             else
4995                 if test "$enable_gdb_index" = "yes"; then
4996                     AC_MSG_ERROR( no )
4997                 else
4998                     AC_MSG_RESULT( no )
4999                 fi
5000             fi
5001             LDFLAGS=$ldflags_save
5002         fi
5003         CFLAGS=$save_CFLAGS
5004         fi
5005     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5006         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
5007         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
5008     fi
5010 AC_SUBST(ENABLE_GDB_INDEX)
5012 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5013     enable_sal_log=yes
5015 if test "$enable_sal_log" = yes; then
5016     ENABLE_SAL_LOG=TRUE
5018 AC_SUBST(ENABLE_SAL_LOG)
5020 dnl Check for enable symbols option
5021 dnl ===================================================================
5022 AC_MSG_CHECKING([whether to generate debug information])
5023 if test -z "$enable_symbols"; then
5024     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5025         enable_symbols=yes
5026     else
5027         enable_symbols=no
5028     fi
5030 if test "$enable_symbols" = yes; then
5031     ENABLE_SYMBOLS_FOR=all
5032     AC_MSG_RESULT([yes])
5033 elif test "$enable_symbols" = no; then
5034     ENABLE_SYMBOLS_FOR=
5035     AC_MSG_RESULT([no])
5036 else
5037     # Selective debuginfo.
5038     ENABLE_SYMBOLS_FOR="$enable_symbols"
5039     AC_MSG_RESULT([for "$enable_symbols"])
5041 AC_SUBST(ENABLE_SYMBOLS_FOR)
5042 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5043     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5044     AC_MSG_CHECKING([whether enough memory is available for linking])
5045     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5046     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5047     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5048         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5049     else
5050         AC_MSG_RESULT([yes])
5051     fi
5054 ENABLE_OPTIMIZED=
5055 ENABLE_OPTIMIZED_DEBUG=
5056 AC_MSG_CHECKING([whether to compile with optimization flags])
5057 if test -z "$enable_optimized"; then
5058     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5059         enable_optimized=no
5060     else
5061         enable_optimized=yes
5062     fi
5064 if test "$enable_optimized" = yes; then
5065     ENABLE_OPTIMIZED=TRUE
5066     AC_MSG_RESULT([yes])
5067 elif test "$enable_optimized" = debug; then
5068     ENABLE_OPTIMIZED_DEBUG=TRUE
5069     AC_MSG_RESULT([yes (debug)])
5070     HAVE_GCC_OG=
5071     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5072         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5073         save_CFLAGS=$CFLAGS
5074         CFLAGS="$CFLAGS -Werror -Og"
5075         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5076         CFLAGS=$save_CFLAGS
5077         if test "$HAVE_GCC_OG" = "TRUE"; then
5078             AC_MSG_RESULT([yes])
5079         else
5080             AC_MSG_RESULT([no])
5081         fi
5082     fi
5083     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5084         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5085     fi
5086 else
5087     AC_MSG_RESULT([no])
5089 AC_SUBST(ENABLE_OPTIMIZED)
5090 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5093 # determine CPUNAME, OS, ...
5095 case "$host_os" in
5097 cygwin*|wsl*)
5098     # Already handled
5099     ;;
5101 darwin*)
5102     COM=GCC
5103     OS=MACOSX
5104     RTL_OS=MacOSX
5105     P_SEP=:
5107     case "$host_cpu" in
5108     aarch64|arm64)
5109         if test "$enable_ios_simulator" = "yes"; then
5110             OS=iOS
5111         else
5112             CPUNAME=AARCH64
5113             RTL_ARCH=AARCH64
5114             PLATFORMID=macosx_aarch64
5115         fi
5116         ;;
5117     x86_64)
5118         if test "$enable_ios_simulator" = "yes"; then
5119             OS=iOS
5120         fi
5121         CPUNAME=X86_64
5122         RTL_ARCH=X86_64
5123         PLATFORMID=macosx_x86_64
5124         ;;
5125     *)
5126         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5127         ;;
5128     esac
5129     ;;
5131 ios*)
5132     COM=GCC
5133     OS=iOS
5134     RTL_OS=iOS
5135     P_SEP=:
5137     case "$host_cpu" in
5138     aarch64|arm64)
5139         if test "$enable_ios_simulator" = "yes"; then
5140             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5141         fi
5142         ;;
5143     *)
5144         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5145         ;;
5146     esac
5147     CPUNAME=AARCH64
5148     RTL_ARCH=AARCH64
5149     PLATFORMID=ios_arm64
5150     ;;
5152 dragonfly*)
5153     COM=GCC
5154     OS=DRAGONFLY
5155     RTL_OS=DragonFly
5156     P_SEP=:
5158     case "$host_cpu" in
5159     i*86)
5160         CPUNAME=INTEL
5161         RTL_ARCH=x86
5162         PLATFORMID=dragonfly_x86
5163         ;;
5164     x86_64)
5165         CPUNAME=X86_64
5166         RTL_ARCH=X86_64
5167         PLATFORMID=dragonfly_x86_64
5168         ;;
5169     *)
5170         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5171         ;;
5172     esac
5173     ;;
5175 freebsd*)
5176     COM=GCC
5177     RTL_OS=FreeBSD
5178     OS=FREEBSD
5179     P_SEP=:
5181     case "$host_cpu" in
5182     aarch64)
5183         CPUNAME=AARCH64
5184         PLATFORMID=freebsd_aarch64
5185         RTL_ARCH=AARCH64
5186         ;;
5187     i*86)
5188         CPUNAME=INTEL
5189         RTL_ARCH=x86
5190         PLATFORMID=freebsd_x86
5191         ;;
5192     x86_64|amd64)
5193         CPUNAME=X86_64
5194         RTL_ARCH=X86_64
5195         PLATFORMID=freebsd_x86_64
5196         ;;
5197     powerpc64)
5198         CPUNAME=POWERPC64
5199         RTL_ARCH=PowerPC_64
5200         PLATFORMID=freebsd_powerpc64
5201         ;;
5202     powerpc|powerpcspe)
5203         CPUNAME=POWERPC
5204         RTL_ARCH=PowerPC
5205         PLATFORMID=freebsd_powerpc
5206         ;;
5207     *)
5208         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5209         ;;
5210     esac
5211     ;;
5213 haiku*)
5214     COM=GCC
5215     GUIBASE=haiku
5216     RTL_OS=Haiku
5217     OS=HAIKU
5218     P_SEP=:
5220     case "$host_cpu" in
5221     i*86)
5222         CPUNAME=INTEL
5223         RTL_ARCH=x86
5224         PLATFORMID=haiku_x86
5225         ;;
5226     x86_64|amd64)
5227         CPUNAME=X86_64
5228         RTL_ARCH=X86_64
5229         PLATFORMID=haiku_x86_64
5230         ;;
5231     *)
5232         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5233         ;;
5234     esac
5235     ;;
5237 kfreebsd*)
5238     COM=GCC
5239     OS=LINUX
5240     RTL_OS=kFreeBSD
5241     P_SEP=:
5243     case "$host_cpu" in
5245     i*86)
5246         CPUNAME=INTEL
5247         RTL_ARCH=x86
5248         PLATFORMID=kfreebsd_x86
5249         ;;
5250     x86_64)
5251         CPUNAME=X86_64
5252         RTL_ARCH=X86_64
5253         PLATFORMID=kfreebsd_x86_64
5254         ;;
5255     *)
5256         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5257         ;;
5258     esac
5259     ;;
5261 linux-gnu*|linux-musl*)
5262     COM=GCC
5263     OS=LINUX
5264     RTL_OS=Linux
5265     P_SEP=:
5267     case "$host_cpu" in
5269     aarch64)
5270         CPUNAME=AARCH64
5271         PLATFORMID=linux_aarch64
5272         RTL_ARCH=AARCH64
5273         EPM_FLAGS="-a arm64"
5274         ;;
5275     alpha)
5276         CPUNAME=AXP
5277         RTL_ARCH=ALPHA
5278         PLATFORMID=linux_alpha
5279         ;;
5280     arm*)
5281         CPUNAME=ARM
5282         EPM_FLAGS="-a arm"
5283         RTL_ARCH=ARM_EABI
5284         PLATFORMID=linux_arm_eabi
5285         case "$host_cpu" in
5286         arm*-linux)
5287             RTL_ARCH=ARM_OABI
5288             PLATFORMID=linux_arm_oabi
5289             ;;
5290         esac
5291         ;;
5292     hppa)
5293         CPUNAME=HPPA
5294         RTL_ARCH=HPPA
5295         EPM_FLAGS="-a hppa"
5296         PLATFORMID=linux_hppa
5297         ;;
5298     i*86)
5299         CPUNAME=INTEL
5300         RTL_ARCH=x86
5301         PLATFORMID=linux_x86
5302         ;;
5303     ia64)
5304         CPUNAME=IA64
5305         RTL_ARCH=IA64
5306         PLATFORMID=linux_ia64
5307         ;;
5308     mips)
5309         CPUNAME=MIPS
5310         RTL_ARCH=MIPS_EB
5311         EPM_FLAGS="-a mips"
5312         PLATFORMID=linux_mips_eb
5313         ;;
5314     mips64)
5315         CPUNAME=MIPS64
5316         RTL_ARCH=MIPS64_EB
5317         EPM_FLAGS="-a mips64"
5318         PLATFORMID=linux_mips64_eb
5319         ;;
5320     mips64el)
5321         CPUNAME=MIPS64
5322         RTL_ARCH=MIPS64_EL
5323         EPM_FLAGS="-a mips64el"
5324         PLATFORMID=linux_mips64_el
5325         ;;
5326     mipsel)
5327         CPUNAME=MIPS
5328         RTL_ARCH=MIPS_EL
5329         EPM_FLAGS="-a mipsel"
5330         PLATFORMID=linux_mips_el
5331         ;;
5332     riscv64)
5333         CPUNAME=RISCV64
5334         RTL_ARCH=RISCV64
5335         EPM_FLAGS="-a riscv64"
5336         PLATFORMID=linux_riscv64
5337         ;;
5338     m68k)
5339         CPUNAME=M68K
5340         RTL_ARCH=M68K
5341         PLATFORMID=linux_m68k
5342         ;;
5343     powerpc)
5344         CPUNAME=POWERPC
5345         RTL_ARCH=PowerPC
5346         PLATFORMID=linux_powerpc
5347         ;;
5348     powerpc64)
5349         CPUNAME=POWERPC64
5350         RTL_ARCH=PowerPC_64
5351         PLATFORMID=linux_powerpc64
5352         ;;
5353     powerpc64le)
5354         CPUNAME=POWERPC64
5355         RTL_ARCH=PowerPC_64_LE
5356         PLATFORMID=linux_powerpc64_le
5357         ;;
5358     sparc)
5359         CPUNAME=SPARC
5360         RTL_ARCH=SPARC
5361         PLATFORMID=linux_sparc
5362         ;;
5363     sparc64)
5364         CPUNAME=SPARC64
5365         RTL_ARCH=SPARC64
5366         PLATFORMID=linux_sparc64
5367         ;;
5368     s390x)
5369         CPUNAME=S390X
5370         RTL_ARCH=S390x
5371         PLATFORMID=linux_s390x
5372         ;;
5373     x86_64)
5374         CPUNAME=X86_64
5375         RTL_ARCH=X86_64
5376         PLATFORMID=linux_x86_64
5377         ;;
5378     loongarch64)
5379         CPUNAME=LOONGARCH64
5380         RTL_ARCH=LOONGARCH64
5381         PLATFORMID=linux_loongarch64
5382         ;;
5383     *)
5384         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5385         ;;
5386     esac
5387     ;;
5389 linux-android*)
5390     COM=GCC
5391     OS=ANDROID
5392     RTL_OS=Android
5393     P_SEP=:
5395     case "$host_cpu" in
5397     arm|armel)
5398         CPUNAME=ARM
5399         RTL_ARCH=ARM_EABI
5400         PLATFORMID=android_arm_eabi
5401         ;;
5402     aarch64)
5403         CPUNAME=AARCH64
5404         RTL_ARCH=AARCH64
5405         PLATFORMID=android_aarch64
5406         ;;
5407     i*86)
5408         CPUNAME=INTEL
5409         RTL_ARCH=x86
5410         PLATFORMID=android_x86
5411         ;;
5412     x86_64)
5413         CPUNAME=X86_64
5414         RTL_ARCH=X86_64
5415         PLATFORMID=android_x86_64
5416         ;;
5417     *)
5418         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5419         ;;
5420     esac
5421     ;;
5423 *netbsd*)
5424     COM=GCC
5425     OS=NETBSD
5426     RTL_OS=NetBSD
5427     P_SEP=:
5429     case "$host_cpu" in
5430     i*86)
5431         CPUNAME=INTEL
5432         RTL_ARCH=x86
5433         PLATFORMID=netbsd_x86
5434         ;;
5435     powerpc)
5436         CPUNAME=POWERPC
5437         RTL_ARCH=PowerPC
5438         PLATFORMID=netbsd_powerpc
5439         ;;
5440     sparc)
5441         CPUNAME=SPARC
5442         RTL_ARCH=SPARC
5443         PLATFORMID=netbsd_sparc
5444         ;;
5445     x86_64)
5446         CPUNAME=X86_64
5447         RTL_ARCH=X86_64
5448         PLATFORMID=netbsd_x86_64
5449         ;;
5450     *)
5451         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5452         ;;
5453     esac
5454     ;;
5456 openbsd*)
5457     COM=GCC
5458     OS=OPENBSD
5459     RTL_OS=OpenBSD
5460     P_SEP=:
5462     case "$host_cpu" in
5463     i*86)
5464         CPUNAME=INTEL
5465         RTL_ARCH=x86
5466         PLATFORMID=openbsd_x86
5467         ;;
5468     x86_64)
5469         CPUNAME=X86_64
5470         RTL_ARCH=X86_64
5471         PLATFORMID=openbsd_x86_64
5472         ;;
5473     *)
5474         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5475         ;;
5476     esac
5477     SOLARINC="$SOLARINC -I/usr/local/include"
5478     ;;
5480 solaris*)
5481     COM=GCC
5482     OS=SOLARIS
5483     RTL_OS=Solaris
5484     P_SEP=:
5486     case "$host_cpu" in
5487     i*86)
5488         CPUNAME=INTEL
5489         RTL_ARCH=x86
5490         PLATFORMID=solaris_x86
5491         ;;
5492     sparc)
5493         CPUNAME=SPARC
5494         RTL_ARCH=SPARC
5495         PLATFORMID=solaris_sparc
5496         ;;
5497     sparc64)
5498         CPUNAME=SPARC64
5499         RTL_ARCH=SPARC64
5500         PLATFORMID=solaris_sparc64
5501         ;;
5502     *)
5503         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5504         ;;
5505     esac
5506     SOLARINC="$SOLARINC -I/usr/local/include"
5507     ;;
5509 emscripten*)
5510     COM=GCC
5511     OS=EMSCRIPTEN
5512     RTL_OS=Emscripten
5513     P_SEP=:
5515     case "$host_cpu" in
5516     wasm32|wasm64)
5517         ;;
5518     *)
5519         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5520         ;;
5521     esac
5522     CPUNAME=INTEL
5523     RTL_ARCH=x86
5524     PLATFORMID=linux_x86
5525     ;;
5528     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5529     ;;
5530 esac
5532 DISABLE_GUI=""
5533 if test "$enable_gui" = "no"; then
5534     if test "$using_x11" != yes; then
5535         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5536     fi
5537     USING_X11=
5538     DISABLE_GUI=TRUE
5539     test_epoxy=no
5540 else
5541     AC_DEFINE(HAVE_FEATURE_UI)
5543 AC_SUBST(DISABLE_GUI)
5545 if test "$with_x" = "no"; then
5546     USING_X11=
5549 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5550     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5553 if test "$using_x11" = yes; then
5554     if test "$USING_X11" = TRUE; then
5555         AC_DEFINE(USING_X11)
5556     else
5557         disable_x11_tests
5558         if test "$DISABLE_DYNLOADING" = TRUE; then
5559             test_qt5=yes
5560         fi
5561     fi
5562 else
5563     if test "$USING_X11" = TRUE; then
5564         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5565     fi
5568 WORKDIR="${BUILDDIR}/workdir"
5569 INSTDIR="${BUILDDIR}/instdir"
5570 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5571 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5572 AC_SUBST(COM)
5573 AC_SUBST(CPUNAME)
5574 AC_SUBST(RTL_OS)
5575 AC_SUBST(RTL_ARCH)
5576 AC_SUBST(EPM_FLAGS)
5577 AC_SUBST(USING_X11)
5578 AC_SUBST([INSTDIR])
5579 AC_SUBST([INSTROOT])
5580 AC_SUBST([INSTROOTBASE])
5581 AC_SUBST(OS)
5582 AC_SUBST(P_SEP)
5583 AC_SUBST(WORKDIR)
5584 AC_SUBST(PLATFORMID)
5585 AC_SUBST(WINDOWS_X64)
5586 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5587 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5589 if test "$OS" = WNT -a "$COM" = MSC; then
5590     case "$CPUNAME" in
5591     INTEL) CPPU_ENV=msci ;;
5592     X86_64) CPPU_ENV=mscx ;;
5593     AARCH64) CPPU_ENV=msca ;;
5594     *)
5595         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5596         ;;
5597     esac
5598 else
5599     CPPU_ENV=gcc3
5601 AC_SUBST(CPPU_ENV)
5603 dnl ===================================================================
5604 dnl Test which package format to use
5605 dnl ===================================================================
5606 AC_MSG_CHECKING([which package format to use])
5607 if test -n "$with_package_format" -a "$with_package_format" != no; then
5608     for i in $with_package_format; do
5609         case "$i" in
5610         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5611             ;;
5612         *)
5613             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5614 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5615 deb - Debian software distribution
5616 pkg - Solaris software distribution
5617 rpm - RedHat software distribution
5619 LibreOffice additionally supports:
5620 archive - .tar.gz or .zip
5621 dmg - macOS .dmg
5622 installed - installation tree
5623 msi - Windows .msi
5624         ])
5625             ;;
5626         esac
5627     done
5628     # fakeroot is needed to ensure correct file ownerships/permissions
5629     # inside deb packages and tar archives created on Linux and Solaris.
5630     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5631         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5632         if test "$FAKEROOT" = "no"; then
5633             AC_MSG_ERROR(
5634                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5635         fi
5636     fi
5637     PKGFORMAT="$with_package_format"
5638     AC_MSG_RESULT([$PKGFORMAT])
5639 else
5640     PKGFORMAT=
5641     AC_MSG_RESULT([none])
5643 AC_SUBST(PKGFORMAT)
5645 dnl ===================================================================
5646 dnl handle help related options
5648 dnl If you change help related options, please update README.help
5649 dnl ===================================================================
5651 ENABLE_HTMLHELP=
5652 HELP_OMINDEX_PAGE=
5653 HELP_ONLINE=
5654 ENABLE_LOCALHELP=
5656 AC_MSG_CHECKING([which help to build])
5657 if test -n "$with_help" -a "$with_help" != "no"; then
5658     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5659     BUILD_TYPE="$BUILD_TYPE HELP"
5660     case "$with_help" in
5661     "html")
5662         ENABLE_HTMLHELP=TRUE
5663         ENABLE_LOCALHELP=TRUE
5664         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5665         AC_MSG_RESULT([HTML (local)])
5666         ;;
5667     "online")
5668         ENABLE_HTMLHELP=TRUE
5669         HELP_ONLINE=TRUE
5670         AC_MSG_RESULT([HTML (online)])
5671         ;;
5672     yes)
5673         ENABLE_LOCALHELP=TRUE
5674         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5675         AC_MSG_RESULT([XML (local)])
5676         ;;
5677     *)
5678         AC_MSG_ERROR([Unknown --with-help=$with_help])
5679         ;;
5680     esac
5681 else
5682     AC_MSG_RESULT([no])
5685 AC_MSG_CHECKING([if we need to build the help index tooling])
5686 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5687     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5688     test_clucene=yes
5689     AC_MSG_RESULT([yes])
5690 else
5691     AC_MSG_RESULT([no])
5694 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5695 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5696     if test "$HELP_ONLINE" != TRUE; then
5697         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5698     fi
5699     case "$with_omindex" in
5700     "server")
5701         HELP_OMINDEX_PAGE=TRUE
5702         AC_MSG_RESULT([SERVER])
5703         ;;
5704     "noxap")
5705         AC_MSG_RESULT([NOXAP])
5706         ;;
5707     *)
5708         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5709         ;;
5710     esac
5711 else
5712     AC_MSG_RESULT([no])
5715 AC_MSG_CHECKING([whether to include the XML-help support])
5716 if test "$enable_xmlhelp" = yes; then
5717     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5718     test_clucene=yes
5719     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5720     AC_MSG_RESULT([yes])
5721 else
5722     if test "$with_help" = yes; then
5723         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5724     fi
5725     AC_MSG_RESULT([no])
5728 dnl Test whether to integrate helppacks into the product's installer
5729 AC_MSG_CHECKING([for helppack integration])
5730 if test -z "$ENABLE_LOCALHELP" -o "$with_helppack_integration" = no; then
5731     AC_MSG_RESULT([no integration])
5732 else
5733     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5734     AC_MSG_RESULT([integration])
5737 AC_SUBST([ENABLE_HTMLHELP])
5738 AC_SUBST([HELP_OMINDEX_PAGE])
5739 AC_SUBST([HELP_ONLINE])
5740 if test "$ENABLE_LOCALHELP" = "TRUE" ; then
5741     AC_DEFINE(HAVE_FEATURE_LOCAL_HELP)
5744 dnl ===================================================================
5745 dnl Set up a different compiler to produce tools to run on the build
5746 dnl machine when doing cross-compilation
5747 dnl ===================================================================
5749 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5750 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5751 if test "$cross_compiling" = "yes"; then
5752     AC_MSG_CHECKING([for BUILD platform configuration])
5753     echo
5754     rm -rf CONF-FOR-BUILD config_build.mk
5755     mkdir CONF-FOR-BUILD
5756     # Here must be listed all files needed when running the configure script. In particular, also
5757     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5758     # keep them in the same order as there.
5759     (cd $SRC_ROOT && tar cf - \
5760         config.guess \
5761         bin/get_config_variables \
5762         solenv/bin/getcompver.awk \
5763         solenv/inc/langlist.mk \
5764         download.lst \
5765         config_host.mk.in \
5766         config_host_lang.mk.in \
5767         Makefile.in \
5768         bin/bffvalidator.sh.in \
5769         bin/odfvalidator.sh.in \
5770         bin/officeotron.sh.in \
5771         instsetoo_native/util/openoffice.lst.in \
5772         config_host/*.in \
5773         sysui/desktop/macosx/Info.plist.in \
5774         sysui/desktop/macosx/hardened_runtime.xcent.in \
5775         sysui/desktop/macosx/lo.xcent.in \
5776         .vscode/vs-code-template.code-workspace.in \
5777         solenv/lockfile/autoconf.h.in \
5778         ) \
5779     | (cd CONF-FOR-BUILD && tar xf -)
5780     cp configure CONF-FOR-BUILD
5781     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5782     (
5783     unset COM USING_X11 OS CPUNAME
5784     unset CC CXX SYSBASE CFLAGS
5785     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5786     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5787     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5788     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5789     if test -n "$CC_FOR_BUILD"; then
5790         export CC="$CC_FOR_BUILD"
5791         CC_BASE=`first_arg_basename "$CC"`
5792     fi
5793     if test -n "$CXX_FOR_BUILD"; then
5794         export CXX="$CXX_FOR_BUILD"
5795         CXX_BASE=`first_arg_basename "$CXX"`
5796     fi
5797     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5798     cd CONF-FOR-BUILD
5800     # Handle host configuration, which affects the cross-toolset too
5801     sub_conf_opts=""
5802     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5803     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5804     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5805     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5806     if test -n "$ENABLE_JAVA"; then
5807         case "$_os" in
5808         Android)
5809             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5810             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5811             ;;
5812         *)
5813             if test -z "$with_jdk_home"; then
5814                 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.])
5815             fi
5816             ;;
5817         esac
5818     else
5819         sub_conf_opts="$sub_conf_opts --without-java"
5820     fi
5821     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5822     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5823     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5824     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5825     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5826     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5827     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5828     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5829     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5830     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5831     if test "$_os" = "Emscripten"; then
5832         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5833         if test "${with_main_module+set}" = set; then
5834             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5835         else
5836             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5837         fi
5838     fi
5839     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5840     # when cross-compiling for aarch64, overriding the defaults below
5841     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5843     # Don't bother having configure look for stuff not needed for the build platform anyway
5844     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5845     sub_conf_defaults=" \
5846         --build="$build_alias" \
5847         --disable-cairo-canvas \
5848         --disable-cups \
5849         --disable-customtarget-components \
5850         --disable-firebird-sdbc \
5851         --disable-gpgmepp \
5852         --disable-gstreamer-1-0 \
5853         --disable-gtk3 \
5854         --disable-gtk4 \
5855         --disable-libcmis \
5856         --disable-mariadb-sdbc \
5857         --disable-nss \
5858         --disable-online-update \
5859         --disable-opencl \
5860         --disable-openssl \
5861         --disable-pdfimport \
5862         --disable-postgresql-sdbc \
5863         --disable-skia \
5864         --disable-xmlhelp \
5865         --enable-dynamic-loading \
5866         --enable-icecream="$enable_icecream" \
5867         --without-doxygen \
5868         --without-tls \
5869         --without-webdav \
5870         --without-x \
5872     # single quotes added for better readability in case of spaces
5873     echo "    Running CONF-FOR-BUILD/configure" \
5874         $sub_conf_defaults \
5875         --with-parallelism="'$with_parallelism'" \
5876         --with-theme="'$with_theme'" \
5877         --with-vendor="'$with_vendor'" \
5878         $sub_conf_opts \
5879         $with_build_platform_configure_options \
5880         --srcdir=$srcdir
5882     ./configure \
5883         $sub_conf_defaults \
5884         --with-parallelism="$with_parallelism" \
5885         --with-theme="$with_theme" \
5886         "--with-vendor=$with_vendor" \
5887         $sub_conf_opts \
5888         $with_build_platform_configure_options \
5889         --srcdir=$srcdir \
5890         2>&1 | sed -e 's/^/    /'
5891     if test [${PIPESTATUS[0]}] -ne 0; then
5892         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5893     fi
5895     # filter permitted build targets
5896     PERMITTED_BUILD_TARGETS="
5897         ARGON2
5898         AVMEDIA
5899         BOOST
5900         BZIP2
5901         CAIRO
5902         CLUCENE
5903         CURL
5904         DBCONNECTIVITY
5905         DESKTOP
5906         DRAGONBOX
5907         DYNLOADING
5908         EPOXY
5909         EXPAT
5910         FROZEN
5911         GLM
5912         GRAPHITE
5913         HARFBUZZ
5914         HELPTOOLS
5915         ICU
5916         LCMS2
5917         LIBJPEG_TURBO
5918         LIBLANGTAG
5919         LibO
5920         LIBFFI
5921         LIBPN
5922         LIBTIFF
5923         LIBWEBP
5924         LIBXML2
5925         LIBXSLT
5926         MDDS
5927         NATIVE
5928         OPENSSL
5929         ORCUS
5930         PYTHON
5931         SCRIPTING
5932         ZLIB
5933         ZXCVBN
5935     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5936     # newlined lists, to use grep as a filter
5937     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5938     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5939     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5940     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5942     cp config_host.mk ../config_build.mk
5943     cp config_host_lang.mk ../config_build_lang.mk
5944     mv config.log ../config.Build.log
5945     mkdir -p ../config_build
5946     mv config_host/*.h ../config_build
5947     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5949     # all these will get a _FOR_BUILD postfix
5950     DIRECT_FOR_BUILD_SETTINGS="
5951         CC
5952         CPPU_ENV
5953         CXX
5954         ILIB
5955         JAVA_HOME
5956         JAVAIFLAGS
5957         JDK
5958         JDK_SECURITYMANAGER_DISALLOWED
5959         LIBO_BIN_FOLDER
5960         LIBO_LIB_FOLDER
5961         LIBO_URE_LIB_FOLDER
5962         LIBO_URE_MISC_FOLDER
5963         OS
5964         SDKDIRNAME
5965         SYSTEM_LIBXML
5966         SYSTEM_LIBXSLT
5968     # these overwrite host config with build config
5969     OVERWRITING_SETTINGS="
5970         ANT
5971         ANT_HOME
5972         ANT_LIB
5973         JAVA_SOURCE_VER
5974         JAVA_TARGET_VER
5975         JAVACFLAGS
5976         JAVACOMPILER
5977         JAVADOC
5978         JAVADOCISGJDOC
5979         LOCKFILE
5980         SYSTEM_GENBRK
5981         SYSTEM_GENCCODE
5982         SYSTEM_GENCMN
5984     # these need some special handling
5985     EXTRA_HANDLED_SETTINGS="
5986         INSTDIR
5987         INSTROOT
5988         PATH
5989         WORKDIR
5991     OLD_PATH=$PATH
5992     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5993     BUILD_PATH=$PATH
5994     PATH=$OLD_PATH
5996     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5997     echo "$line" >>build-config
5999     for V in $DIRECT_FOR_BUILD_SETTINGS; do
6000         VV='$'$V
6001         VV=`eval "echo $VV"`
6002         if test -n "$VV"; then
6003             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
6004             echo "$line" >>build-config
6005         fi
6006     done
6008     for V in $OVERWRITING_SETTINGS; do
6009         VV='$'$V
6010         VV=`eval "echo $VV"`
6011         if test -n "$VV"; then
6012             line=${V}='${'${V}:-$VV'}'
6013             echo "$line" >>build-config
6014         fi
6015     done
6017     for V in INSTDIR INSTROOT WORKDIR; do
6018         VV='$'$V
6019         VV=`eval "echo $VV"`
6020         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6021         if test -n "$VV"; then
6022             line="${V}_FOR_BUILD='$VV'"
6023             echo "$line" >>build-config
6024         fi
6025     done
6027     )
6028     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6029     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])
6030     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6031              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6033     eval `cat CONF-FOR-BUILD/build-config`
6035     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6037     rm -rf CONF-FOR-BUILD
6038 else
6039     OS_FOR_BUILD="$OS"
6040     CC_FOR_BUILD="$CC"
6041     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6042     CXX_FOR_BUILD="$CXX"
6043     INSTDIR_FOR_BUILD="$INSTDIR"
6044     INSTROOT_FOR_BUILD="$INSTROOT"
6045     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6046     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6047     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6048     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6049     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6050     WORKDIR_FOR_BUILD="$WORKDIR"
6052 AC_SUBST(OS_FOR_BUILD)
6053 AC_SUBST(INSTDIR_FOR_BUILD)
6054 AC_SUBST(INSTROOT_FOR_BUILD)
6055 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6056 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6057 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6058 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6059 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6060 AC_SUBST(WORKDIR_FOR_BUILD)
6061 AC_SUBST(CC_FOR_BUILD)
6062 AC_SUBST(CXX_FOR_BUILD)
6063 AC_SUBST(CPPU_ENV_FOR_BUILD)
6065 dnl ===================================================================
6066 dnl Check for lockfile deps
6067 dnl ===================================================================
6068 if test -z "$CROSS_COMPILING"; then
6069     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6070     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6071     AC_MSG_CHECKING([which lockfile binary to use])
6072     case "$with_system_lockfile" in
6073     yes)
6074         AC_MSG_RESULT([external])
6075         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6076         ;;
6077     no)
6078         AC_MSG_RESULT([internal])
6079         ;;
6080     *)
6081         if test -x "$with_system_lockfile"; then
6082             LOCKFILE="$with_system_lockfile"
6083         else
6084             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6085         fi
6086         AC_MSG_RESULT([$with_system_lockfile])
6087         ;;
6088     esac
6091 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6092     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6095 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6096 AC_CHECK_FUNCS([utime utimes])
6097 AC_SUBST(LOCKFILE)
6099 dnl ===================================================================
6100 dnl Check for syslog header
6101 dnl ===================================================================
6102 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6104 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6105 dnl ===================================================================
6106 AC_MSG_CHECKING([whether to turn warnings to errors])
6107 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6108     ENABLE_WERROR="TRUE"
6109     PYTHONWARNINGS="error"
6110     AC_MSG_RESULT([yes])
6111 else
6112     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6113         ENABLE_WERROR="TRUE"
6114         PYTHONWARNINGS="error"
6115         AC_MSG_RESULT([yes])
6116     else
6117         AC_MSG_RESULT([no])
6118     fi
6120 AC_SUBST(ENABLE_WERROR)
6121 AC_SUBST(PYTHONWARNINGS)
6123 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6124 dnl ===================================================================
6125 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6126 if test -z "$enable_assert_always_abort"; then
6127    if test "$ENABLE_DEBUG" = TRUE; then
6128        enable_assert_always_abort=yes
6129    else
6130        enable_assert_always_abort=no
6131    fi
6133 if test "$enable_assert_always_abort" = "yes"; then
6134     ASSERT_ALWAYS_ABORT="TRUE"
6135     AC_MSG_RESULT([yes])
6136 else
6137     ASSERT_ALWAYS_ABORT="FALSE"
6138     AC_MSG_RESULT([no])
6140 AC_SUBST(ASSERT_ALWAYS_ABORT)
6142 # Determine whether to use ooenv for the instdir installation
6143 # ===================================================================
6144 if test $_os != "WINNT" -a $_os != "Darwin"; then
6145     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6146     if test -z "$enable_ooenv"; then
6147         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6148             enable_ooenv=yes
6149         else
6150             enable_ooenv=no
6151         fi
6152     fi
6153     if test "$enable_ooenv" = "no"; then
6154         AC_MSG_RESULT([no])
6155     else
6156         ENABLE_OOENV="TRUE"
6157         AC_MSG_RESULT([yes])
6158     fi
6160 AC_SUBST(ENABLE_OOENV)
6162 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6163     if test "$enable_qt5" = "no"; then
6164         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6165     else
6166         enable_qt5=yes
6167     fi
6170 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6171     if test "$enable_qt6" = "no"; then
6172         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6173     else
6174         enable_qt6=yes
6175     fi
6179 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6180 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6181     AC_MSG_RESULT([yes])
6182     ENABLE_PAGEIN=TRUE
6183     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6184 else
6185     AC_MSG_RESULT([no])
6187 AC_SUBST(ENABLE_PAGEIN)
6189 dnl ===================================================================
6190 dnl check for cups support
6191 dnl ===================================================================
6193 AC_MSG_CHECKING([whether to enable CUPS support])
6194 if test "$test_cups" = yes -a "$enable_cups" != no; then
6195     ENABLE_CUPS=TRUE
6196     AC_MSG_RESULT([yes])
6198     AC_MSG_CHECKING([whether cups support is present])
6199     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6200     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6201     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6202         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6203     fi
6204 else
6205     AC_MSG_RESULT([no])
6208 AC_SUBST(ENABLE_CUPS)
6210 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6212 dnl whether to find & fetch external tarballs?
6213 dnl ===================================================================
6214 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6215    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6216        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6217    else
6218        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6219    fi
6221 if test -z "$TARFILE_LOCATION"; then
6222     if test -d "$SRC_ROOT/src" ; then
6223         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6224         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6225     fi
6226     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6227 else
6228     AbsolutePath "$TARFILE_LOCATION"
6229     PathFormat "${absolute_path}"
6230     TARFILE_LOCATION="${formatted_path_unix}"
6232 AC_SUBST(TARFILE_LOCATION)
6234 AC_MSG_CHECKING([whether we want to fetch tarballs])
6235 if test "$enable_fetch_external" != "no"; then
6236     if test "$with_all_tarballs" = "yes"; then
6237         AC_MSG_RESULT([yes, all of them])
6238         DO_FETCH_TARBALLS="ALL"
6239     else
6240         AC_MSG_RESULT([yes, if we use them])
6241         DO_FETCH_TARBALLS="TRUE"
6242     fi
6243 else
6244     AC_MSG_RESULT([no])
6245     DO_FETCH_TARBALLS=
6247 AC_SUBST(DO_FETCH_TARBALLS)
6249 dnl Test whether to include MySpell dictionaries
6250 dnl ===================================================================
6251 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6252 if test "$with_myspell_dicts" = "yes"; then
6253     AC_MSG_RESULT([yes])
6254     WITH_MYSPELL_DICTS=TRUE
6255     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6256     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6257 else
6258     AC_MSG_RESULT([no])
6259     WITH_MYSPELL_DICTS=
6261 AC_SUBST(WITH_MYSPELL_DICTS)
6263 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6264 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6265     if test "$with_system_dicts" = yes; then
6266         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6267     fi
6268     with_system_dicts=no
6271 AC_MSG_CHECKING([whether to use dicts from external paths])
6272 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6273     AC_MSG_RESULT([yes])
6274     SYSTEM_DICTS=TRUE
6275     AC_MSG_CHECKING([for spelling dictionary directory])
6276     if test -n "$with_external_dict_dir"; then
6277         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6278     else
6279         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6280         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6281             DICT_SYSTEM_DIR=file:///usr/share/myspell
6282         fi
6283     fi
6284     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6285     AC_MSG_CHECKING([for hyphenation patterns directory])
6286     if test -n "$with_external_hyph_dir"; then
6287         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6288     else
6289         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6290     fi
6291     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6292     AC_MSG_CHECKING([for thesaurus directory])
6293     if test -n "$with_external_thes_dir"; then
6294         THES_SYSTEM_DIR=file://$with_external_thes_dir
6295     else
6296         THES_SYSTEM_DIR=file:///usr/share/mythes
6297     fi
6298     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6299 else
6300     AC_MSG_RESULT([no])
6301     SYSTEM_DICTS=
6303 AC_SUBST(SYSTEM_DICTS)
6304 AC_SUBST(DICT_SYSTEM_DIR)
6305 AC_SUBST(HYPH_SYSTEM_DIR)
6306 AC_SUBST(THES_SYSTEM_DIR)
6308 dnl ===================================================================
6309 dnl Precompiled headers.
6310 ENABLE_PCH=""
6311 AC_MSG_CHECKING([whether to enable pch feature])
6312 if test -z "$enable_pch"; then
6313     if test "$_os" = "WINNT"; then
6314         # Enabled by default on Windows.
6315         enable_pch=yes
6316         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6317         if test -z "$enable_ccache" -a "$SCCACHE"; then
6318             CCACHE=""
6319         fi
6320     else
6321         enable_pch=no
6322     fi
6324 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6325     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6327 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6328     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6330 if test "$enable_pch" = "system"; then
6331     ENABLE_PCH="1"
6332     AC_MSG_RESULT([yes (system headers)])
6333 elif test "$enable_pch" = "base"; then
6334     ENABLE_PCH="2"
6335     AC_MSG_RESULT([yes (system and base headers)])
6336 elif test "$enable_pch" = "normal"; then
6337     ENABLE_PCH="3"
6338     AC_MSG_RESULT([yes (normal)])
6339 elif test "$enable_pch" = "full"; then
6340     ENABLE_PCH="4"
6341     AC_MSG_RESULT([yes (full)])
6342 elif test "$enable_pch" = "yes"; then
6343     # Pick a suitable default.
6344     if test "$GCC" = "yes"; then
6345         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6346         # while making the PCHs larger and rebuilds more likely.
6347         ENABLE_PCH="2"
6348         AC_MSG_RESULT([yes (system and base headers)])
6349     else
6350         # With MSVC the highest level makes a significant difference,
6351         # and it was the default when there used to be no PCH levels.
6352         ENABLE_PCH="4"
6353         AC_MSG_RESULT([yes (full)])
6354     fi
6355 elif test "$enable_pch" = "no"; then
6356     AC_MSG_RESULT([no])
6357 else
6358     AC_MSG_ERROR([Unknown value for --enable-pch])
6360 AC_SUBST(ENABLE_PCH)
6361 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6362 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6363     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6364     if test "$CCACHE_BIN" != "not found"; then
6365         AC_MSG_CHECKING([ccache version])
6366         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6367         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6368         AC_MSG_RESULT([$CCACHE_VERSION])
6369         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6370         if test "$CCACHE_NUMVER" -gt "030701"; then
6371             AC_MSG_RESULT([yes])
6372         else
6373             AC_MSG_RESULT([no (not newer than 3.7.1)])
6374             CCACHE_DEPEND_MODE=
6375         fi
6376     fi
6379 PCH_INSTANTIATE_TEMPLATES=
6380 if test -n "$ENABLE_PCH"; then
6381     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6382     save_CFLAGS=$CFLAGS
6383     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6384     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6385     CFLAGS=$save_CFLAGS
6386     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6387         AC_MSG_RESULT(yes)
6388     else
6389         AC_MSG_RESULT(no)
6390     fi
6392 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6394 BUILDING_PCH_WITH_OBJ=
6395 if test -n "$ENABLE_PCH"; then
6396     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6397     save_CFLAGS=$CFLAGS
6398     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6399     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6400     CFLAGS=$save_CFLAGS
6401     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6402         AC_MSG_RESULT(yes)
6403     else
6404         AC_MSG_RESULT(no)
6405     fi
6407 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6409 PCH_CODEGEN=
6410 PCH_NO_CODEGEN=
6411 fpch_prefix=
6412 if test "$COM" = MSC; then
6413     fpch_prefix="-Xclang "
6415 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6416     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6417     save_CFLAGS=$CFLAGS
6418     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6419     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6420         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6421     CFLAGS=$save_CFLAGS
6422     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6423     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6424         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6425     CFLAGS=$save_CFLAGS
6426     if test -n "$PCH_CODEGEN"; then
6427         AC_MSG_RESULT(yes)
6428     else
6429         AC_MSG_RESULT(no)
6430     fi
6432 AC_SUBST(PCH_CODEGEN)
6433 AC_SUBST(PCH_NO_CODEGEN)
6434 PCH_DEBUGINFO=
6435 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6436     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6437     save_CFLAGS=$CFLAGS
6438     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6439     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6440     CFLAGS=$save_CFLAGS
6441     if test -n "$PCH_DEBUGINFO"; then
6442         AC_MSG_RESULT(yes)
6443     else
6444         AC_MSG_RESULT(no)
6445     fi
6447 AC_SUBST(PCH_DEBUGINFO)
6449 TAB=`printf '\t'`
6451 AC_MSG_CHECKING([the GNU Make version])
6452 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6453 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6454 if test "$_make_longver" -ge "040000"; then
6455     AC_MSG_RESULT([$GNUMAKE $_make_version])
6456 else
6457     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6460 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6461 STALE_MAKE=
6462 if test "$_make_ver_check" = ""; then
6463    STALE_MAKE=TRUE
6466 HAVE_LD_HASH_STYLE=FALSE
6467 WITH_LINKER_HASH_STYLE=
6468 AC_MSG_CHECKING([for --hash-style gcc linker support])
6469 if test "$GCC" = "yes"; then
6470     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6471         hash_styles="gnu sysv"
6472     elif test "$with_linker_hash_style" = "no"; then
6473         hash_styles=
6474     else
6475         hash_styles="$with_linker_hash_style"
6476     fi
6478     for hash_style in $hash_styles; do
6479         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6480         hash_style_ldflags_save=$LDFLAGS
6481         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6483         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6484             [
6485 #include <stdio.h>
6486             ],[
6487 printf ("");
6488             ])],
6489             [
6490                   HAVE_LD_HASH_STYLE=TRUE
6491                   WITH_LINKER_HASH_STYLE=$hash_style
6492             ],
6493             [HAVE_LD_HASH_STYLE=FALSE],
6494             [HAVE_LD_HASH_STYLE=FALSE])
6495         LDFLAGS=$hash_style_ldflags_save
6496     done
6498     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6499         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6500     else
6501         AC_MSG_RESULT( no )
6502     fi
6503     LDFLAGS=$hash_style_ldflags_save
6504 else
6505     AC_MSG_RESULT( no )
6507 AC_SUBST(HAVE_LD_HASH_STYLE)
6508 AC_SUBST(WITH_LINKER_HASH_STYLE)
6510 dnl ===================================================================
6511 dnl Check whether there's a Perl version available.
6512 dnl ===================================================================
6513 if test -z "$with_perl_home"; then
6514     AC_PATH_PROG(PERL, perl)
6515 else
6516     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6517     _perl_path="$with_perl_home/bin/perl"
6518     if test -x "$_perl_path"; then
6519         PERL=$_perl_path
6520     else
6521         AC_MSG_ERROR([$_perl_path not found])
6522     fi
6525 dnl ===================================================================
6526 dnl Testing for Perl version 5 or greater.
6527 dnl $] is the Perl version variable, it is returned as an integer
6528 dnl ===================================================================
6529 if test "$PERL"; then
6530     AC_MSG_CHECKING([the Perl version])
6531     ${PERL} -e "exit($]);"
6532     _perl_version=$?
6533     if test "$_perl_version" -lt 5; then
6534         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6535     fi
6536     AC_MSG_RESULT([Perl $_perl_version])
6537 else
6538     AC_MSG_ERROR([Perl not found, install Perl 5])
6541 dnl ===================================================================
6542 dnl Testing for required Perl modules
6543 dnl ===================================================================
6545 AC_MSG_CHECKING([for required Perl modules])
6546 perl_use_string="use Cwd ; use Digest::MD5"
6547 if test "$_os" = "WINNT"; then
6548     if test -n "$PKGFORMAT"; then
6549         for i in $PKGFORMAT; do
6550             case "$i" in
6551             msi)
6552                 # for getting fonts versions to use in MSI
6553                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6554                 ;;
6555             esac
6556         done
6557     fi
6559 if test "$with_system_hsqldb" = "yes"; then
6560     perl_use_string="$perl_use_string ; use Archive::Zip"
6562 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6563     # OpenSSL needs that to build
6564     perl_use_string="$perl_use_string ; use FindBin"
6566 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6567     AC_MSG_RESULT([all modules found])
6568 else
6569     AC_MSG_RESULT([failed to find some modules])
6570     # Find out which modules are missing.
6571     for i in $perl_use_string; do
6572         if test "$i" != "use" -a "$i" != ";"; then
6573             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6574                 missing_perl_modules="$missing_perl_modules $i"
6575             fi
6576         fi
6577     done
6578     AC_MSG_ERROR([
6579     The missing Perl modules are: $missing_perl_modules
6580     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6583 dnl ===================================================================
6584 dnl Check for pkg-config
6585 dnl ===================================================================
6586 if test "$_os" != "WINNT"; then
6587     PKG_PROG_PKG_CONFIG
6589 AC_SUBST(PKG_CONFIG)
6590 AC_SUBST(PKG_CONFIG_PATH)
6591 AC_SUBST(PKG_CONFIG_LIBDIR)
6593 if test "$_os" != "WINNT"; then
6595     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6596     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6597     # explicitly. Or put /path/to/compiler in PATH yourself.
6599     toolprefix=gcc
6600     if test "$COM_IS_CLANG" = "TRUE"; then
6601         toolprefix=llvm
6602     fi
6603     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6604     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6605     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6606     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6607     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6608     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6610 AC_SUBST(AR)
6611 AC_SUBST(NM)
6612 AC_SUBST(OBJDUMP)
6613 AC_SUBST(RANLIB)
6614 AC_SUBST(READELF)
6615 AC_SUBST(STRIP)
6617 dnl ===================================================================
6618 dnl pkg-config checks on macOS
6619 dnl ===================================================================
6621 if test $_os = Darwin; then
6622     AC_MSG_CHECKING([for bogus pkg-config])
6623     if test -n "$PKG_CONFIG"; then
6624         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6625             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6626         else
6627             if test "$enable_bogus_pkg_config" = "yes"; then
6628                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6629             else
6630                 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.])
6631             fi
6632         fi
6633     else
6634         AC_MSG_RESULT([no, good])
6635     fi
6638 find_csc()
6640     # Return value: $csctest
6642     unset csctest
6644     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6645     if test -n "$regvalue"; then
6646         csctest=$regvalue
6647         return
6648     fi
6651 find_al()
6653     # Return value: $altest
6655     unset altest
6657     # We need this check to detect 4.6.1 or above.
6658     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6659         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6660         PathFormat "$regvalue"
6661         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6662             altest=$regvalue
6663             return
6664         fi
6665     done
6667     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6668     for x in $reglist; do
6669         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6670         PathFormat "$regvalue"
6671         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6672             altest=$regvalue
6673             return
6674         fi
6675     done
6678 find_dotnetsdk()
6680     unset frametest
6682     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
6683         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6684         if test -n "$regvalue"; then
6685             frametest=$regvalue
6686             return
6687         fi
6688     done
6689     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6692 find_winsdk_version()
6694     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6695     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6697     unset winsdktest winsdkbinsubdir winsdklibsubdir
6699     case "$1" in
6700     8.0|8.0A)
6701         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6702         if test -n "$regvalue"; then
6703             winsdktest=$regvalue
6704             winsdklibsubdir=win8
6705             return
6706         fi
6707         ;;
6708     8.1|8.1A)
6709         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6710         if test -n "$regvalue"; then
6711             winsdktest=$regvalue
6712             winsdklibsubdir=winv6.3
6713             return
6714         fi
6715         ;;
6716     10.0)
6717         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6718         if test -n "$regvalue"; then
6719             winsdktest=$regvalue
6720             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6721             if test -n "$regvalue"; then
6722                 winsdkbinsubdir="$regvalue".0
6723                 winsdklibsubdir=$winsdkbinsubdir
6724                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6725                 local tmppath_unix=$(cygpath -u "$tmppath")
6726                 # test exist the SDK path
6727                 if test -d "$tmppath_unix"; then
6728                    # when path is convertible to a short path then path is okay
6729                    cygpath -d "$tmppath" >/dev/null 2>&1
6730                    if test $? -ne 0; then
6731                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6732                    fi
6733                 else
6734                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6735                 fi
6736             fi
6737             return
6738         fi
6739         ;;
6740     esac
6743 find_winsdk()
6745     # Return value: From find_winsdk_version
6747     unset winsdktest
6749     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6750         find_winsdk_version $ver
6751         if test -n "$winsdktest"; then
6752             return
6753         fi
6754     done
6757 find_msms()
6759     # Return value: $msmdir
6760     local version="$1"
6762     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6763     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6764     local my_msm_dir
6766     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6768     msmdir=
6769     case "$VCVER" in
6770     16.0 | 17.0 | 17.9)
6771         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6772             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6773             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6774             if test -e "$my_msm_dir${my_msm_file}"; then
6775                 msmdir=$my_msm_dir
6776             fi
6777         done
6778         ;;
6779     esac
6781     if test -n "$msmdir"; then
6782         msmdir=`cygpath -m "$msmdir"`
6783         AC_MSG_RESULT([$msmdir])
6784     else
6785         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6786             AC_MSG_FAILURE([not found])
6787         else
6788             AC_MSG_WARN([not found (check config.log)])
6789             add_warning "MSM ${my_msm_file} not found"
6790         fi
6791     fi
6794 find_msvc_x64_dlls()
6796     # Return value: $msvcdllpath, $msvcdlls
6798     AC_MSG_CHECKING([for MSVC x64 DLL path])
6800     dnl Order crtver in increasing order. Then check the directories returned by
6801     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6802     dnl the result will be the highest CRT version found in the highest directory.
6804     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6805     case "$VCVER" in
6806     16.0 | 17.0 | 17.9)
6807         for crtver in 141 142 143; do
6808             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6809                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6810                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6811                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6812                 fi
6813             done
6814         done
6815         ;;
6816     esac
6817     AC_MSG_RESULT([$msvcdllpath])
6818     AC_MSG_CHECKING([for MSVC x64 DLLs])
6819     msvcdlls="msvcp140.dll vcruntime140.dll"
6820     for dll in $msvcdlls; do
6821         if ! test -f "$msvcdllpath/$dll"; then
6822             AC_MSG_FAILURE([missing $dll])
6823         fi
6824     done
6825     AC_MSG_RESULT([found all ($msvcdlls)])
6828 dnl =========================================
6829 dnl Check for the Windows  SDK.
6830 dnl =========================================
6831 if test "$_os" = "WINNT"; then
6832     AC_MSG_CHECKING([for Windows SDK])
6833     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6834         find_winsdk
6835         WINDOWS_SDK_HOME=$winsdktest
6837         # normalize if found
6838         if test -n "$WINDOWS_SDK_HOME"; then
6839             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6840             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6841         fi
6843         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6844     fi
6846     if test -n "$WINDOWS_SDK_HOME"; then
6847         # Remove a possible trailing backslash
6848         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6850         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6851              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6852              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6853             have_windows_sdk_headers=yes
6854         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6855              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6856              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6857             have_windows_sdk_headers=yes
6858         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6859              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6860              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6861             have_windows_sdk_headers=yes
6862         else
6863             have_windows_sdk_headers=no
6864         fi
6866         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6867             have_windows_sdk_libs=yes
6868         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6869             have_windows_sdk_libs=yes
6870         else
6871             have_windows_sdk_libs=no
6872         fi
6874         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6875             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6876 the  Windows SDK are installed.])
6877         fi
6878     fi
6880     if test -z "$WINDOWS_SDK_HOME"; then
6881         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6882     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6883         WINDOWS_SDK_VERSION=80
6884         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6885     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6886         WINDOWS_SDK_VERSION=81
6887         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6888     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6889         WINDOWS_SDK_VERSION=10
6890         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6891     else
6892         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6893     fi
6894     PathFormat "$WINDOWS_SDK_HOME"
6895     WINDOWS_SDK_HOME="$formatted_path"
6896     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6897     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6898         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6899         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6900             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6901         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6902             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6903         fi
6904     fi
6906     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6907     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6908     dnl but not in v8.0), so allow this to be overridden with a
6909     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6910     dnl and configuration error if no WiLangId.vbs is found would arguably be
6911     dnl better, but I do not know under which conditions exactly it is needed by
6912     dnl msiglobal.pm:
6913     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6914         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6915         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6916         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6917             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6918             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6919         fi
6920         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6921             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6922             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6923         fi
6924         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6925             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6926             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6927         fi
6928     fi
6929     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6930         if test -n "$with_package_format" -a "$with_package_format" != no; then
6931             for i in "$with_package_format"; do
6932                 if test "$i" = "msi"; then
6933                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6934                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6935                     fi
6936                 fi
6937             done
6938         fi
6939     fi
6941 AC_SUBST(WINDOWS_SDK_HOME)
6942 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6943 AC_SUBST(WINDOWS_SDK_VERSION)
6944 AC_SUBST(WINDOWS_SDK_WILANGID)
6946 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6947     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6948     dnl dir, it also determines that dir's path w/o an arch segment if any,
6949     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6950     AC_MSG_CHECKING([for midl.exe])
6952     find_winsdk
6953     PathFormat "$winsdktest"
6954     winsdktest_unix="$formatted_path_unix"
6956     if test -n "$winsdkbinsubdir" \
6957         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6958     then
6959         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6960         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6961     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6962         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6963         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6964     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6965         MIDL_PATH=$winsdktest/Bin
6966         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6967     fi
6968     PathFormat "$MIDL_PATH"
6969     if test ! -f "$formatted_path_unix/midl.exe"; then
6970         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6971     else
6972         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6973     fi
6975     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6976     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6978     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6979          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6980          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6981          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6982     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6983          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6984          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6985          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6986     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6987          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6988          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6989          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6990     else
6991         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6992     fi
6994     dnl Check csc.exe
6995     AC_MSG_CHECKING([for csc.exe])
6996     find_csc
6997     PathFormat "$csctest"
6998     csctest_unix="$formatted_path_unix"
6999     if test -f "$csctest_unix/csc.exe"; then
7000         CSC_PATH="$csctest"
7001     fi
7002     if test ! -f "$csctest_unix/csc.exe"; then
7003         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
7004     else
7005         AC_MSG_RESULT([$CSC_PATH/csc.exe])
7006     fi
7008     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
7010     dnl Check al.exe
7011     AC_MSG_CHECKING([for al.exe])
7012     if test -n "$winsdkbinsubdir" \
7013         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7014     then
7015         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7016     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7017         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7018     elif test -f "$winsdktest_unix/Bin/al.exe"; then
7019         AL_PATH="$winsdktest/Bin"
7020     fi
7022     if test -z "$AL_PATH"; then
7023         find_al
7024         PathFormat "$altest"
7025         altest_unix="$formatted_path_unix"
7026         if test -f "$altest_unix/bin/al.exe"; then
7027             AL_PATH="$altest/bin"
7028         elif test -f "$altest_unix/al.exe"; then
7029             AL_PATH="$altest"
7030         fi
7031     fi
7032     PathFormat "$AL_PATH"
7033     if test ! -f "$formatted_path_unix/al.exe"; then
7034         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7035     else
7036         AC_MSG_RESULT([$AL_PATH/al.exe])
7037     fi
7039     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7041     dnl Check mscoree.lib / .NET Framework dir
7042     AC_MSG_CHECKING(.NET Framework)
7043     find_dotnetsdk
7044     PathFormat "$frametest"
7045     frametest="$formatted_path_unix"
7046     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7047         DOTNET_FRAMEWORK_HOME="$frametest"
7048     else
7049         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7050             DOTNET_FRAMEWORK_HOME="$winsdktest"
7051         fi
7052     fi
7053     PathFormat "$DOTNET_FRAMEWORK_HOME"
7054     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
7055         AC_MSG_ERROR([mscoree.lib not found])
7056     fi
7057     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7059     PathFormat "$MIDL_PATH"
7060     MIDL_PATH="$formatted_path"
7062     PathFormat "$AL_PATH"
7063     AL_PATH="$formatted_path"
7065     PathFormat "$DOTNET_FRAMEWORK_HOME"
7066     DOTNET_FRAMEWORK_HOME="$formatted_path"
7068     PathFormat "$CSC_PATH"
7069     CSC_PATH="$formatted_path"
7072 dnl ===================================================================
7073 dnl Testing for C++ compiler and version...
7074 dnl ===================================================================
7076 if test "$_os" != "WINNT"; then
7077     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7078     save_CXXFLAGS=$CXXFLAGS
7079     AC_PROG_CXX
7080     CXXFLAGS=$save_CXXFLAGS
7081     if test -z "$CXX_BASE"; then
7082         CXX_BASE=`first_arg_basename "$CXX"`
7083     fi
7086 dnl check for GNU C++ compiler version
7087 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7088     AC_MSG_CHECKING([the GNU C++ compiler version])
7090     _gpp_version=`$CXX -dumpversion`
7091     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7093     if test "$_gpp_majmin" -lt "700"; then
7094         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7095     else
7096         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7097     fi
7099     dnl see https://issuetracker.google.com/issues/36962819
7100         glibcxx_threads=no
7101         AC_LANG_PUSH([C++])
7102         AC_REQUIRE_CPP
7103         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7104         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7105             #include <bits/c++config.h>]],[[
7106             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7107             && !defined(_GLIBCXX__PTHREADS) \
7108             && !defined(_GLIBCXX_HAS_GTHREADS)
7109             choke me
7110             #endif
7111         ]])],[AC_MSG_RESULT([yes])
7112         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7113         AC_LANG_POP([C++])
7114         if test $glibcxx_threads = yes; then
7115             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7116         fi
7118 AC_SUBST(BOOST_CXXFLAGS)
7121 # prefx CXX with ccache if needed
7123 if test "$CCACHE" != ""; then
7124     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7125     AC_LANG_PUSH([C++])
7126     save_CXXFLAGS=$CXXFLAGS
7127     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7128     # msvc does not fail on unknown options, check stdout
7129     if test "$COM" = MSC; then
7130         CXXFLAGS="$CXXFLAGS -nologo"
7131     fi
7132     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7133     ac_cxx_werror_flag=yes
7134     dnl an empty program will do, we're checking the compiler flags
7135     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7136                       [use_ccache=yes], [use_ccache=no])
7137     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7138         AC_MSG_RESULT([yes])
7139     else
7140         CXX="$CCACHE $CXX"
7141         CXX_BASE="ccache $CXX_BASE"
7142         AC_MSG_RESULT([no])
7143     fi
7144     CXXFLAGS=$save_CXXFLAGS
7145     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7146     AC_LANG_POP([C++])
7149 dnl ===================================================================
7150 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7151 dnl ===================================================================
7153 if test "$_os" != "WINNT"; then
7154     AC_PROG_CXXCPP
7156     dnl Check whether there's a C pre-processor.
7157     AC_PROG_CPP
7161 dnl ===================================================================
7162 dnl Find integral type sizes and alignments
7163 dnl ===================================================================
7165 if test "$_os" != "WINNT"; then
7167     AC_CHECK_SIZEOF(long)
7168     AC_CHECK_SIZEOF(short)
7169     AC_CHECK_SIZEOF(int)
7170     AC_CHECK_SIZEOF(long long)
7171     AC_CHECK_SIZEOF(double)
7172     AC_CHECK_SIZEOF(void*)
7173     AC_CHECK_SIZEOF(size_t)
7175     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7176     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7177     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7178     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7179     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7180     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7182     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7183     m4_pattern_allow([AC_CHECK_ALIGNOF])
7184     m4_ifdef([AC_CHECK_ALIGNOF],
7185         [
7186             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7187             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7188             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7189             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7190         ],
7191         [
7192             case "$_os-$host_cpu" in
7193             Linux-i686)
7194                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7195                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7196                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7197                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7198                 ;;
7199             Linux-x86_64)
7200                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7201                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7202                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7203                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7204                 ;;
7205             *)
7206                 if test -z "$ac_cv_alignof_short" -o \
7207                         -z "$ac_cv_alignof_int" -o \
7208                         -z "$ac_cv_alignof_long" -o \
7209                         -z "$ac_cv_alignof_double"; then
7210                    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.])
7211                 fi
7212                 ;;
7213             esac
7214         ])
7216     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7217     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7218     if test $ac_cv_sizeof_long -eq 8; then
7219         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7220     elif test $ac_cv_sizeof_double -eq 8; then
7221         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7222     else
7223         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7224     fi
7226     dnl Check for large file support
7227     AC_SYS_LARGEFILE
7228     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
7229         LFS_CFLAGS="$ac_cv_sys_largefile_opts"
7230     elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7231         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7232     fi
7233     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7234         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7235     fi
7236 else
7237     # Hardcode for MSVC
7238     SAL_TYPES_SIZEOFSHORT=2
7239     SAL_TYPES_SIZEOFINT=4
7240     SAL_TYPES_SIZEOFLONG=4
7241     SAL_TYPES_SIZEOFLONGLONG=8
7242     if test $WIN_HOST_BITS -eq 32; then
7243         SAL_TYPES_SIZEOFPOINTER=4
7244         SIZEOF_SIZE_T=4
7245     else
7246         SAL_TYPES_SIZEOFPOINTER=8
7247         SIZEOF_SIZE_T=8
7248     fi
7249     SAL_TYPES_ALIGNMENT2=2
7250     SAL_TYPES_ALIGNMENT4=4
7251     SAL_TYPES_ALIGNMENT8=8
7252     LFS_CFLAGS=''
7254 AC_SUBST(LFS_CFLAGS)
7255 AC_SUBST(SIZEOF_SIZE_T)
7257 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7258 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7259 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7260 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7261 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7262 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7263 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7264 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7266 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7267 AC_MSG_CHECKING([whether jumbo sheets are supported])
7268 if test "$_os" != "WINNT"; then
7269     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7270         AC_MSG_RESULT([yes])
7271         ENABLE_JUMBO_SHEETS=TRUE
7272         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7273     else
7274         AC_MSG_RESULT([no])
7275     fi
7276 else
7277     if test $WIN_HOST_BITS -gt 32; then
7278         # 64bit windows is special-cased for tools::Long because long is 32bit
7279         AC_MSG_RESULT([yes])
7280         ENABLE_JUMBO_SHEETS=TRUE
7281         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7282     else
7283         AC_MSG_RESULT([no])
7284     fi
7286 AC_SUBST(ENABLE_JUMBO_SHEETS)
7288 dnl ===================================================================
7289 dnl Check whether to enable runtime optimizations
7290 dnl ===================================================================
7291 ENABLE_RUNTIME_OPTIMIZATIONS=
7292 AC_MSG_CHECKING([whether to enable runtime optimizations])
7293 if test -z "$enable_runtime_optimizations"; then
7294     for i in $CC; do
7295         case $i in
7296         -fsanitize=*)
7297             enable_runtime_optimizations=no
7298             break
7299             ;;
7300         esac
7301     done
7303 if test "$enable_runtime_optimizations" != no; then
7304     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7305     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7306     AC_MSG_RESULT([yes])
7307 else
7308     AC_MSG_RESULT([no])
7310 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7312 dnl ===================================================================
7313 dnl Check if valgrind headers are available
7314 dnl ===================================================================
7315 ENABLE_VALGRIND=
7316 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7317     prev_cppflags=$CPPFLAGS
7318     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7319     # or where does it come from?
7320     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7321     AC_CHECK_HEADER([valgrind/valgrind.h],
7322         [ENABLE_VALGRIND=TRUE])
7323     CPPFLAGS=$prev_cppflags
7325 AC_SUBST([ENABLE_VALGRIND])
7326 if test -z "$ENABLE_VALGRIND"; then
7327     if test "$with_valgrind" = yes; then
7328         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7329     fi
7330     VALGRIND_CFLAGS=
7332 AC_SUBST([VALGRIND_CFLAGS])
7335 dnl ===================================================================
7336 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7337 dnl ===================================================================
7339 # We need at least the sys/sdt.h include header.
7340 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7341 if test "$SDT_H_FOUND" = "TRUE"; then
7342     # Found sys/sdt.h header, now make sure the c++ compiler works.
7343     # Old g++ versions had problems with probes in constructors/destructors.
7344     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7345     AC_LANG_PUSH([C++])
7346     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7347     #include <sys/sdt.h>
7348     class ProbeClass
7349     {
7350     private:
7351       int& ref;
7352       const char *name;
7354     public:
7355       ProbeClass(int& v, const char *n) : ref(v), name(n)
7356       {
7357         DTRACE_PROBE2(_test_, cons, name, ref);
7358       }
7360       void method(int min)
7361       {
7362         DTRACE_PROBE3(_test_, meth, name, ref, min);
7363         ref -= min;
7364       }
7366       ~ProbeClass()
7367       {
7368         DTRACE_PROBE2(_test_, dest, name, ref);
7369       }
7370     };
7371     ]],[[
7372     int i = 64;
7373     DTRACE_PROBE1(_test_, call, i);
7374     ProbeClass inst = ProbeClass(i, "call");
7375     inst.method(24);
7376     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7377           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7378     AC_LANG_POP([C++])
7380 AC_CONFIG_HEADERS([config_host/config_probes.h])
7382 dnl ===================================================================
7383 dnl GCC features
7384 dnl ===================================================================
7385 HAVE_GCC_STACK_CLASH_PROTECTION=
7386 HARDENING_CFLAGS=
7387 HARDENING_OPT_CFLAGS=
7388 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7389     AC_MSG_CHECKING([whether $CC_BASE supports -grecord-gcc-switches])
7390     save_CFLAGS=$CFLAGS
7391     CFLAGS="$CFLAGS -Werror -grecord-gcc-switches"
7392     AC_LINK_IFELSE(
7393         [AC_LANG_PROGRAM(, [[return 0;]])],
7394         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -grecord-gcc-switches"],
7395         [AC_MSG_RESULT([no])])
7396     CFLAGS=$save_CFLAGS
7398     AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
7399     save_CFLAGS=$CFLAGS
7400     CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
7401     if test "$ENABLE_OPTIMIZED" = TRUE; then
7402         CFLAGS="$CFLAGS -O2"
7403     fi
7404     AC_LINK_IFELSE(
7405         [AC_LANG_PROGRAM([[#include <string.h>]], [[return 0;]])],
7406         [AC_MSG_RESULT([yes]); HARDENING_OPT_CFLAGS="$HARDENING_OPT_CFLAGS -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"],
7407         [AC_MSG_RESULT([no])])
7408     CFLAGS=$save_CFLAGS
7410     AC_MSG_CHECKING([whether $CC_BASE supports -D_GLIBCXX_ASSERTIONS])
7411     save_CFLAGS=$CFLAGS
7412     CFLAGS="$CFLAGS -Werror -Wp,-D_GLIBCXX_ASSERTIONS"
7413     AC_LINK_IFELSE(
7414         [AC_LANG_PROGRAM(, [[return 0;]])],
7415         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"],
7416         [AC_MSG_RESULT([no])])
7417     CFLAGS=$save_CFLAGS
7419     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7420     save_CFLAGS=$CFLAGS
7421     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7422     AC_LINK_IFELSE(
7423         [AC_LANG_PROGRAM(, [[return 0;]])],
7424         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE; HARDENING_CFLAGS="$HARDENING_CFLAGS -fstack-clash-protection"],
7425         [AC_MSG_RESULT([no])])
7426     CFLAGS=$save_CFLAGS
7428     AC_MSG_CHECKING([whether $CC_BASE supports -fcf-protection])
7429     save_CFLAGS=$CFLAGS
7430     CFLAGS="$CFLAGS -Werror -fcf-protection"
7431     AC_LINK_IFELSE(
7432         [AC_LANG_PROGRAM(, [[return 0;]])],
7433         [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -fcf-protection"],
7434         [AC_MSG_RESULT([no])])
7435     CFLAGS=$save_CFLAGS
7437     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7438     save_CFLAGS=$CFLAGS
7439     CFLAGS="$CFLAGS -Werror -mno-avx"
7440     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7441     CFLAGS=$save_CFLAGS
7442     if test "$HAVE_GCC_AVX" = "TRUE"; then
7443         AC_MSG_RESULT([yes])
7444     else
7445         AC_MSG_RESULT([no])
7446     fi
7448     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7449     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7450     int v = 0;
7451     if (__sync_add_and_fetch(&v, 1) != 1 ||
7452         __sync_sub_and_fetch(&v, 1) != 0)
7453         return 1;
7454     __sync_synchronize();
7455     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7456         v != 1)
7457         return 1;
7458     return 0;
7459 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7460     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7461         AC_MSG_RESULT([yes])
7462         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7463     else
7464         AC_MSG_RESULT([no])
7465     fi
7467     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7468     AC_LANG_PUSH([C++])
7469     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7470             #include <cstddef>
7471             #include <cxxabi.h>
7472             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7473         ])], [
7474             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7475             AC_MSG_RESULT([yes])
7476         ], [AC_MSG_RESULT([no])])
7477     AC_LANG_POP([C++])
7479     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7480     AC_LANG_PUSH([C++])
7481     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7482             #include <cstddef>
7483             #include <cxxabi.h>
7484             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7485         ])], [
7486             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7487             AC_MSG_RESULT([yes])
7488         ], [AC_MSG_RESULT([no])])
7489     AC_LANG_POP([C++])
7491     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7492     AC_LANG_PUSH([C++])
7493     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7494             #include <cxxabi.h>
7495             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7496         ])], [
7497             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7498             AC_MSG_RESULT([yes])
7499         ], [AC_MSG_RESULT([no])])
7500     AC_LANG_POP([C++])
7502     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7503     AC_LANG_PUSH([C++])
7504     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7505             #include <cstddef>
7506             #include <cxxabi.h>
7507             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7508         ])], [
7509             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7510             AC_MSG_RESULT([yes])
7511         ], [AC_MSG_RESULT([no])])
7512     AC_LANG_POP([C++])
7514     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7515     AC_LANG_PUSH([C++])
7516     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7517             #include <cstddef>
7518             #include <cxxabi.h>
7519             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7520         ])], [
7521             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7522             AC_MSG_RESULT([yes])
7523         ], [AC_MSG_RESULT([no])])
7524     AC_LANG_POP([C++])
7526     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7527     AC_LANG_PUSH([C++])
7528     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7529             #include <cxxabi.h>
7530             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7531         ])], [
7532             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7533             AC_MSG_RESULT([yes])
7534         ], [AC_MSG_RESULT([no])])
7535     AC_LANG_POP([C++])
7537     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7538     AC_LANG_PUSH([C++])
7539     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7540             #include <cxxabi.h>
7541             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7542         ])], [
7543             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7544             AC_MSG_RESULT([yes])
7545         ], [AC_MSG_RESULT([no])])
7546     AC_LANG_POP([C++])
7548     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7549     AC_LANG_PUSH([C++])
7550     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7551             #include <cxxabi.h>
7552             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7553         ])], [
7554             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7555             AC_MSG_RESULT([yes])
7556         ], [AC_MSG_RESULT([no])])
7557     AC_LANG_POP([C++])
7559     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7560     AC_LANG_PUSH([C++])
7561     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7562             #include <cstddef>
7563             #include <cxxabi.h>
7564             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7565         ])], [
7566             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7567             AC_MSG_RESULT([yes])
7568         ], [AC_MSG_RESULT([no])])
7569     AC_LANG_POP([C++])
7571     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7572     AC_LANG_PUSH([C++])
7573     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7574             #include <cstddef>
7575             #include <cxxabi.h>
7576             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7577         ])], [
7578             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7579             AC_MSG_RESULT([yes])
7580         ], [AC_MSG_RESULT([no])])
7581     AC_LANG_POP([C++])
7584 AC_SUBST(HAVE_GCC_AVX)
7585 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7586 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7587 AC_SUBST(HARDENING_CFLAGS)
7588 AC_SUBST(HARDENING_OPT_CFLAGS)
7590 dnl ===================================================================
7591 dnl Identify the C++ library
7592 dnl ===================================================================
7594 AC_MSG_CHECKING([what the C++ library is])
7595 HAVE_LIBSTDCPP=
7596 HAVE_LIBCPP=
7597 AC_LANG_PUSH([C++])
7598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7599 #include <utility>
7600 #ifndef __GLIBCXX__
7601 foo bar
7602 #endif
7603 ]])],
7604     [CPP_LIBRARY=GLIBCXX
7605      cpp_library_name="GNU libstdc++"
7606      HAVE_LIBSTDCPP=TRUE
7607     ],
7608     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7609 #include <utility>
7610 #ifndef _LIBCPP_VERSION
7611 foo bar
7612 #endif
7613 ]])],
7614     [CPP_LIBRARY=LIBCPP
7615      cpp_library_name="LLVM libc++"
7616      AC_DEFINE([HAVE_LIBCPP])
7617      HAVE_LIBCPP=TRUE
7618     ],
7619     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7620 #include <utility>
7621 #ifndef _MSC_VER
7622 foo bar
7623 #endif
7624 ]])],
7625     [CPP_LIBRARY=MSVCRT
7626      cpp_library_name="Microsoft"
7627     ],
7628     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7629 AC_MSG_RESULT([$cpp_library_name])
7630 AC_LANG_POP([C++])
7631 AC_SUBST([HAVE_LIBSTDCPP])
7632 AC_SUBST([HAVE_LIBCPP])
7634 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7635 then
7636     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7637     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7638     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7639     # although there will be backwards compatibility).
7640     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7641     # and there would be undefined references to debug functions.
7642     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7643     # So check if debug mode can be used and disable or downgrade it to assertions
7644     # if needed.
7645     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7646     AC_LANG_PUSH([C++])
7647     libcpp_debug_links=
7648     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7649 #define _LIBCPP_DEBUG 0 // only assertions
7650 #include <vector>
7651 int main()
7653     std::vector<int> v;
7654     v.push_back( 1 );
7655     return v[ 3 ];
7657 ]])], [libcpp_debug_links=1])
7658     if test -n "$libcpp_debug_links"; then
7659         # we can use at least assertions, check if debug mode works
7660         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7661 #define _LIBCPP_DEBUG 1 // debug mode
7662 #include <string>
7663 #include <vector>
7664 int foo(const std::vector<int>& v) { return *v.begin(); }
7665 int main()
7667     std::vector<int> v;
7668     v.push_back( 1 );
7669     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7670     return (foo(v) + s.size()) != 0 ? 0 : 1;
7672 ]])],
7673         [AC_MSG_RESULT(yes)
7674          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7675         ],
7676         [AC_MSG_RESULT(no, using only assertions)
7677          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7678         ]
7679         )
7680     else
7681         AC_MSG_RESULT(no)
7682     fi
7683     AC_LANG_POP([C++])
7685 AC_SUBST([LIBCPP_DEBUG])
7687 dnl ===================================================================
7688 dnl Check for gperf
7689 dnl ===================================================================
7690 AC_PATH_PROG(GPERF, gperf)
7691 if test -z "$GPERF"; then
7692     AC_MSG_ERROR([gperf not found but needed. Install it.])
7694 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7695     GPERF=`cygpath -m $GPERF`
7697 AC_MSG_CHECKING([whether gperf is new enough])
7698 my_gperf_ver1=$($GPERF --version | head -n 1)
7699 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7700 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7701 if test "$my_gperf_ver3" -ge 301; then
7702     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7703 else
7704     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7706 AC_SUBST(GPERF)
7708 dnl ===================================================================
7709 dnl Check for system libcmis
7710 dnl ===================================================================
7711 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7713 dnl ===================================================================
7714 dnl C++11
7715 dnl ===================================================================
7717 if test -z "${CXXFLAGS_CXX11+x}"; then
7718     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7719     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7720         if test "$with_latest_c__" = yes; then
7721             CXXFLAGS_CXX11=-std:c++latest
7722         else
7723             CXXFLAGS_CXX11=-std:c++20
7724         fi
7725         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7726     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7727         my_flags='-std=c++20 -std=c++2a'
7728         if test "$with_latest_c__" = yes; then
7729             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7730         fi
7731         for flag in $my_flags; do
7732             if test "$COM" = MSC; then
7733                 flag="-Xclang $flag"
7734             fi
7735             save_CXXFLAGS=$CXXFLAGS
7736             CXXFLAGS="$CXXFLAGS $flag -Werror"
7737             AC_LANG_PUSH([C++])
7738             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7739                 #include <algorithm>
7740                 #include <functional>
7741                 #include <vector>
7743                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7744                     std::sort(v.begin(), v.end(), fn);
7745                 }
7746                 ]])],[CXXFLAGS_CXX11=$flag])
7747             AC_LANG_POP([C++])
7748             CXXFLAGS=$save_CXXFLAGS
7749             if test -n "$CXXFLAGS_CXX11"; then
7750                 break
7751             fi
7752         done
7753     fi
7754     if test -n "$CXXFLAGS_CXX11"; then
7755         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7756     else
7757         AC_MSG_ERROR(no)
7758     fi
7760 AC_SUBST(CXXFLAGS_CXX11)
7762 if test "$GCC" = "yes"; then
7763     save_CXXFLAGS=$CXXFLAGS
7764     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7765     CHECK_L_ATOMIC
7766     CXXFLAGS=$save_CXXFLAGS
7767     AC_SUBST(ATOMIC_LIB)
7770 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7771 save_CXXFLAGS=$CXXFLAGS
7772 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7773 AC_LANG_PUSH([C++])
7775 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7776 #include <stddef.h>
7778 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7780 namespace
7782         struct b
7783         {
7784                 int i;
7785                 int j;
7786         };
7788 ]], [[
7789 struct a
7791         int i;
7792         int j;
7794 a thinga[]={{0,0}, {1,1}};
7795 b thingb[]={{0,0}, {1,1}};
7796 size_t i = sizeof(sal_n_array_size(thinga));
7797 size_t j = sizeof(sal_n_array_size(thingb));
7798 return !(i != 0 && j != 0);
7800     ], [ AC_MSG_RESULT(yes) ],
7801     [ AC_MSG_ERROR(no)])
7802 AC_LANG_POP([C++])
7803 CXXFLAGS=$save_CXXFLAGS
7805 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7806 if test "$GCC" = yes; then
7807     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7808     AC_LANG_PUSH([C++])
7809     save_CXXFLAGS=$CXXFLAGS
7810     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7811     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7812     CXXFLAGS=$save_CXXFLAGS
7813     AC_LANG_POP([C++])
7814     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7815         AC_MSG_RESULT([yes])
7816     else
7817         AC_MSG_RESULT([no])
7818     fi
7820 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7822 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7823 AC_LANG_PUSH([C++])
7824 save_CXXFLAGS=$CXXFLAGS
7825 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7826 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7827         #include <algorithm>
7828         #include <initializer_list>
7829         #include <vector>
7830         template<typename T> class S {
7831         private:
7832             std::vector<T> v_;
7833         public:
7834             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7835         };
7836         constinit S<int> s{3, 2, 1};
7837     ])], [
7838         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7839         AC_MSG_RESULT([yes])
7840     ], [AC_MSG_RESULT([no])])
7841 CXXFLAGS=$save_CXXFLAGS
7842 AC_LANG_POP([C++])
7844 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7845 AC_LANG_PUSH([C++])
7846 save_CXXFLAGS=$CXXFLAGS
7847 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7848 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7849         struct S1 { S1(S1 &&); };
7850         struct S2: S1 {};
7851         S1 f(S2 s) { return s; }
7852     ])], [
7853         AC_DEFINE([HAVE_P1155R3],[1])
7854         AC_MSG_RESULT([yes])
7855     ], [AC_MSG_RESULT([no])])
7856 CXXFLAGS=$save_CXXFLAGS
7857 AC_LANG_POP([C++])
7859 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7860 HAVE_CXX20_ATOMIC_REF=
7861 AC_LANG_PUSH([C++])
7862 save_CXXFLAGS=$CXXFLAGS
7863 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7864 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7865         #include <atomic>
7866         int x;
7867         std::atomic_ref<int> y(x);
7868     ])], [
7869         HAVE_CXX20_ATOMIC_REF=TRUE
7870         AC_MSG_RESULT([yes])
7871     ], [AC_MSG_RESULT([no])])
7872 CXXFLAGS=$save_CXXFLAGS
7873 AC_LANG_POP([C++])
7874 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7876 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7877 dnl which is included in -Wextra anyway):
7878 HAVE_WDEPRECATED_COPY_DTOR=
7879 if test "$GCC" = yes; then
7880     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7881     AC_LANG_PUSH([C++])
7882     save_CXXFLAGS=$CXXFLAGS
7883     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7884     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7885             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7886             AC_MSG_RESULT([yes])
7887         ], [AC_MSG_RESULT([no])])
7888     CXXFLAGS=$save_CXXFLAGS
7889     AC_LANG_POP([C++])
7891 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7893 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7894 dnl uninitialized warning for code like
7896 dnl   OString f();
7897 dnl   boost::optional<OString> * g(bool b) {
7898 dnl       boost::optional<OString> o;
7899 dnl       if (b) o = f();
7900 dnl       return new boost::optional<OString>(o);
7901 dnl   }
7903 dnl (as is e.g. present, in a slightly more elaborate form, in
7904 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7905 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7906 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7907 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7908     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7909     AC_LANG_PUSH([C++])
7910     save_CXXFLAGS=$CXXFLAGS
7911     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7912     if test "$ENABLE_OPTIMIZED" = TRUE; then
7913         CXXFLAGS="$CXXFLAGS -O2"
7914     else
7915         CXXFLAGS="$CXXFLAGS -O0"
7916     fi
7917     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7918             #include <new>
7919             void f1(int);
7920             struct S1 {
7921                 ~S1() { f1(n); }
7922                 int n = 0;
7923             };
7924             struct S2 {
7925                 S2() {}
7926                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7927                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7928                 void set(S1 s) {
7929                     new (stg) S1(s);
7930                     init = true;
7931                 }
7932                 bool init = false;
7933                 char stg[sizeof (S1)];
7934             } ;
7935             S1 f2();
7936             S2 * f3(bool b) {
7937                 S2 o;
7938                 if (b) o.set(f2());
7939                 return new S2(o);
7940             }
7941         ]])], [AC_MSG_RESULT([no])], [
7942             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7943             AC_MSG_RESULT([yes])
7944         ])
7945     CXXFLAGS=$save_CXXFLAGS
7946     AC_LANG_POP([C++])
7948 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7950 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7951 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7952 dnl hits us e.g. with GCC 10 and --enable-optimized at
7954 dnl   In file included from include/rtl/string.hxx:49,
7955 dnl                    from include/rtl/ustring.hxx:43,
7956 dnl                    from include/osl/file.hxx:35,
7957 dnl                    from include/codemaker/global.hxx:28,
7958 dnl                    from include/codemaker/options.hxx:23,
7959 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7960 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7961 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,
7962 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,
7963 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,
7964 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7965 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7966 dnl      78 |         memcpy( buffer, data, length );
7967 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7968 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7969 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7970     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7971     AC_LANG_PUSH([C++])
7972     save_CXXFLAGS=$CXXFLAGS
7973     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7974     if test "$ENABLE_OPTIMIZED" = TRUE; then
7975         CXXFLAGS="$CXXFLAGS -O2"
7976     else
7977         CXXFLAGS="$CXXFLAGS -O0"
7978     fi
7979     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7980     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7981             void fill(char const * begin, char const * end, char c);
7982             struct q {
7983                 char ids[4];
7984                 char username[6];
7985             };
7986             void test(q & c) {
7987                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7988                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7989             }
7990         ]])], [AC_MSG_RESULT([no])], [
7991             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7992             AC_MSG_RESULT([yes])
7993         ])
7994     CXXFLAGS=$save_CXXFLAGS
7995     AC_LANG_POP([C++])
7997 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7999 HAVE_DLLEXPORTINLINES=
8000 if test "$_os" = "WINNT"; then
8001     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
8002     AC_LANG_PUSH([C++])
8003     save_CXXFLAGS=$CXXFLAGS
8004     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
8005     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
8006             HAVE_DLLEXPORTINLINES=TRUE
8007             AC_MSG_RESULT([yes])
8008         ], [AC_MSG_RESULT([no])])
8009     CXXFLAGS=$save_CXXFLAGS
8010     AC_LANG_POP([C++])
8012 AC_SUBST([HAVE_DLLEXPORTINLINES])
8014 dnl ===================================================================
8015 dnl CPU Intrinsics support - SSE, AVX
8016 dnl ===================================================================
8018 CXXFLAGS_INTRINSICS_SSE2=
8019 CXXFLAGS_INTRINSICS_SSSE3=
8020 CXXFLAGS_INTRINSICS_SSE41=
8021 CXXFLAGS_INTRINSICS_SSE42=
8022 CXXFLAGS_INTRINSICS_AVX=
8023 CXXFLAGS_INTRINSICS_AVX2=
8024 CXXFLAGS_INTRINSICS_AVX512=
8025 CXXFLAGS_INTRINSICS_AVX512F=
8026 CXXFLAGS_INTRINSICS_F16C=
8027 CXXFLAGS_INTRINSICS_FMA=
8029 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
8030     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
8031     flag_sse2=-msse2
8032     flag_ssse3=-mssse3
8033     flag_sse41=-msse4.1
8034     flag_sse42=-msse4.2
8035     flag_avx=-mavx
8036     flag_avx2=-mavx2
8037     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
8038     flag_avx512f=-mavx512f
8039     flag_f16c=-mf16c
8040     flag_fma=-mfma
8041 else
8042     # With MSVC using -arch is in fact not necessary for being able
8043     # to use CPU intrinsics, code using AVX512F intrinsics will compile
8044     # even if compiled with -arch:AVX, the -arch option really only affects
8045     # instructions generated for C/C++ code.
8046     # So use the matching same (or lower) -arch options, but only in order
8047     # to generate the best matching instructions for the C++ code surrounding
8048     # the intrinsics.
8049     # SSE2 is the default for x86/x64, so no need to specify the option.
8050     flag_sse2=
8051     # No specific options for these, use the next lower.
8052     flag_ssse3="$flag_sse2"
8053     flag_sse41="$flag_sse2"
8054     flag_sse42="$flag_sse2"
8055     flag_avx=-arch:AVX
8056     flag_avx2=-arch:AVX2
8057     flag_avx512=-arch:AVX512
8058     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
8059     flag_avx512f=-arch:AVX2
8060     # No MSVC options for these.
8061     flag_f16c="$flag_sse2"
8062     flag_fma="$flag_sse2"
8065 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8066 AC_LANG_PUSH([C++])
8067 save_CXXFLAGS=$CXXFLAGS
8068 CXXFLAGS="$CXXFLAGS $flag_sse2"
8069 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8070     #include <emmintrin.h>
8071     int main () {
8072         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8073         c = _mm_xor_si128 (a, b);
8074         return 0;
8075     }
8076     ])],
8077     [can_compile_sse2=yes],
8078     [can_compile_sse2=no])
8079 AC_LANG_POP([C++])
8080 CXXFLAGS=$save_CXXFLAGS
8081 AC_MSG_RESULT([${can_compile_sse2}])
8082 if test "${can_compile_sse2}" = "yes" ; then
8083     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8086 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8087 AC_LANG_PUSH([C++])
8088 save_CXXFLAGS=$CXXFLAGS
8089 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8090 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8091     #include <tmmintrin.h>
8092     int main () {
8093         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8094         c = _mm_maddubs_epi16 (a, b);
8095         return 0;
8096     }
8097     ])],
8098     [can_compile_ssse3=yes],
8099     [can_compile_ssse3=no])
8100 AC_LANG_POP([C++])
8101 CXXFLAGS=$save_CXXFLAGS
8102 AC_MSG_RESULT([${can_compile_ssse3}])
8103 if test "${can_compile_ssse3}" = "yes" ; then
8104     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8107 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8108 AC_LANG_PUSH([C++])
8109 save_CXXFLAGS=$CXXFLAGS
8110 CXXFLAGS="$CXXFLAGS $flag_sse41"
8111 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8112     #include <smmintrin.h>
8113     int main () {
8114         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8115         c = _mm_cmpeq_epi64 (a, b);
8116         return 0;
8117     }
8118     ])],
8119     [can_compile_sse41=yes],
8120     [can_compile_sse41=no])
8121 AC_LANG_POP([C++])
8122 CXXFLAGS=$save_CXXFLAGS
8123 AC_MSG_RESULT([${can_compile_sse41}])
8124 if test "${can_compile_sse41}" = "yes" ; then
8125     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8128 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8129 AC_LANG_PUSH([C++])
8130 save_CXXFLAGS=$CXXFLAGS
8131 CXXFLAGS="$CXXFLAGS $flag_sse42"
8132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8133     #include <nmmintrin.h>
8134     int main () {
8135         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8136         c = _mm_cmpgt_epi64 (a, b);
8137         return 0;
8138     }
8139     ])],
8140     [can_compile_sse42=yes],
8141     [can_compile_sse42=no])
8142 AC_LANG_POP([C++])
8143 CXXFLAGS=$save_CXXFLAGS
8144 AC_MSG_RESULT([${can_compile_sse42}])
8145 if test "${can_compile_sse42}" = "yes" ; then
8146     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8149 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8150 AC_LANG_PUSH([C++])
8151 save_CXXFLAGS=$CXXFLAGS
8152 CXXFLAGS="$CXXFLAGS $flag_avx"
8153 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8154     #include <immintrin.h>
8155     int main () {
8156         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8157         c = _mm256_xor_ps(a, b);
8158         return 0;
8159     }
8160     ])],
8161     [can_compile_avx=yes],
8162     [can_compile_avx=no])
8163 AC_LANG_POP([C++])
8164 CXXFLAGS=$save_CXXFLAGS
8165 AC_MSG_RESULT([${can_compile_avx}])
8166 if test "${can_compile_avx}" = "yes" ; then
8167     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8170 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8171 AC_LANG_PUSH([C++])
8172 save_CXXFLAGS=$CXXFLAGS
8173 CXXFLAGS="$CXXFLAGS $flag_avx2"
8174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8175     #include <immintrin.h>
8176     int main () {
8177         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8178         c = _mm256_maddubs_epi16(a, b);
8179         return 0;
8180     }
8181     ])],
8182     [can_compile_avx2=yes],
8183     [can_compile_avx2=no])
8184 AC_LANG_POP([C++])
8185 CXXFLAGS=$save_CXXFLAGS
8186 AC_MSG_RESULT([${can_compile_avx2}])
8187 if test "${can_compile_avx2}" = "yes" ; then
8188     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8191 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8192 AC_LANG_PUSH([C++])
8193 save_CXXFLAGS=$CXXFLAGS
8194 CXXFLAGS="$CXXFLAGS $flag_avx512"
8195 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8196     #include <immintrin.h>
8197     int main () {
8198         __m512i a = _mm512_loadu_si512(0);
8199         __m512d v1 = _mm512_load_pd(0);
8200         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8201         __m512d v2 = _mm512_abs_pd(v1);
8202         return 0;
8203     }
8204     ])],
8205     [can_compile_avx512=yes],
8206     [can_compile_avx512=no])
8207 AC_LANG_POP([C++])
8208 CXXFLAGS=$save_CXXFLAGS
8209 AC_MSG_RESULT([${can_compile_avx512}])
8210 if test "${can_compile_avx512}" = "yes" ; then
8211     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8212     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8215 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8216 AC_LANG_PUSH([C++])
8217 save_CXXFLAGS=$CXXFLAGS
8218 CXXFLAGS="$CXXFLAGS $flag_f16c"
8219 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8220     #include <immintrin.h>
8221     int main () {
8222         __m128i a = _mm_set1_epi32 (0);
8223         __m128 c;
8224         c = _mm_cvtph_ps(a);
8225         return 0;
8226     }
8227     ])],
8228     [can_compile_f16c=yes],
8229     [can_compile_f16c=no])
8230 AC_LANG_POP([C++])
8231 CXXFLAGS=$save_CXXFLAGS
8232 AC_MSG_RESULT([${can_compile_f16c}])
8233 if test "${can_compile_f16c}" = "yes" ; then
8234     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8237 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8238 AC_LANG_PUSH([C++])
8239 save_CXXFLAGS=$CXXFLAGS
8240 CXXFLAGS="$CXXFLAGS $flag_fma"
8241 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8242     #include <immintrin.h>
8243     int main () {
8244         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8245         d = _mm256_fmadd_ps(a, b, c);
8246         return 0;
8247     }
8248     ])],
8249     [can_compile_fma=yes],
8250     [can_compile_fma=no])
8251 AC_LANG_POP([C++])
8252 CXXFLAGS=$save_CXXFLAGS
8253 AC_MSG_RESULT([${can_compile_fma}])
8254 if test "${can_compile_fma}" = "yes" ; then
8255     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8258 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8259 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8260 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8261 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8262 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8263 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8264 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8265 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8266 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8267 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8269 dnl ===================================================================
8270 dnl system stl sanity tests
8271 dnl ===================================================================
8272 if test "$_os" != "WINNT"; then
8274     AC_LANG_PUSH([C++])
8276     save_CPPFLAGS="$CPPFLAGS"
8277     if test -n "$MACOSX_SDK_PATH"; then
8278         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8279     fi
8281     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8282     # only.
8283     if test "$CPP_LIBRARY" = GLIBCXX; then
8284         dnl gcc#19664, gcc#22482, rhbz#162935
8285         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8286         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8287         AC_MSG_RESULT([$stlvisok])
8288         if test "$stlvisok" = "no"; then
8289             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8290         fi
8291     fi
8293     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8294     # when we don't make any dynamic libraries?
8295     if test "$DISABLE_DYNLOADING" = ""; then
8296         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8297         cat > conftestlib1.cc <<_ACEOF
8298 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8299 struct S2: S1<int> { virtual ~S2(); };
8300 S2::~S2() {}
8301 _ACEOF
8302         cat > conftestlib2.cc <<_ACEOF
8303 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8304 struct S2: S1<int> { virtual ~S2(); };
8305 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8306 _ACEOF
8307         gccvisinlineshiddenok=yes
8308         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8309             gccvisinlineshiddenok=no
8310         else
8311             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8312             dnl known to not work with -z defs (unsetting which makes the test
8313             dnl moot, though):
8314             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8315             if test "$COM_IS_CLANG" = TRUE; then
8316                 for i in $CXX $CXXFLAGS; do
8317                     case $i in
8318                     -fsanitize=*)
8319                         my_linkflagsnoundefs=
8320                         break
8321                         ;;
8322                     esac
8323                 done
8324             fi
8325             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8326                 gccvisinlineshiddenok=no
8327             fi
8328         fi
8330         rm -fr libconftest*
8331         AC_MSG_RESULT([$gccvisinlineshiddenok])
8332         if test "$gccvisinlineshiddenok" = "no"; then
8333             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8334         fi
8335     fi
8337    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8338     cat >visibility.cxx <<_ACEOF
8339 #pragma GCC visibility push(hidden)
8340 struct __attribute__ ((visibility ("default"))) TestStruct {
8341   static void Init();
8343 __attribute__ ((visibility ("default"))) void TestFunc() {
8344   TestStruct::Init();
8346 _ACEOF
8347     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8348         gccvisbroken=yes
8349     else
8350         case "$host_cpu" in
8351         i?86|x86_64)
8352             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8353                 gccvisbroken=no
8354             else
8355                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8356                     gccvisbroken=no
8357                 else
8358                     gccvisbroken=yes
8359                 fi
8360             fi
8361             ;;
8362         *)
8363             gccvisbroken=no
8364             ;;
8365         esac
8366     fi
8367     rm -f visibility.s visibility.cxx
8369     AC_MSG_RESULT([$gccvisbroken])
8370     if test "$gccvisbroken" = "yes"; then
8371         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8372     fi
8374     CPPFLAGS="$save_CPPFLAGS"
8376     AC_MSG_CHECKING([if CET endbranch is recognized])
8377 cat > endbr.s <<_ACEOF
8378 endbr32
8379 _ACEOF
8380     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8381     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8382         AC_MSG_RESULT([yes])
8383         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8384     else
8385         AC_MSG_RESULT([no])
8386     fi
8387     rm -f endbr.s endbr.o
8388     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8390     AC_LANG_POP([C++])
8393 dnl ===================================================================
8394 dnl  Clang++ tests
8395 dnl ===================================================================
8397 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8398 if test "$GCC" = "yes"; then
8399     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8400     AC_LANG_PUSH([C++])
8401     save_CXXFLAGS=$CXXFLAGS
8402     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8403     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8404     CXXFLAGS=$save_CXXFLAGS
8405     AC_LANG_POP([C++])
8406     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8407         AC_MSG_RESULT([yes])
8408     else
8409         AC_MSG_RESULT([no])
8410     fi
8412 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8414 dnl ===================================================================
8415 dnl Compiler plugins
8416 dnl ===================================================================
8418 COMPILER_PLUGINS=
8419 # currently only Clang
8421 if test "$COM_IS_CLANG" != "TRUE"; then
8422     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8423         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8424         enable_compiler_plugins=no
8425     fi
8428 COMPILER_PLUGINS_COM_IS_CLANG=
8429 if test "$COM_IS_CLANG" = "TRUE"; then
8430     if test -n "$enable_compiler_plugins"; then
8431         compiler_plugins="$enable_compiler_plugins"
8432     elif test -n "$ENABLE_DBGUTIL"; then
8433         compiler_plugins=test
8434     else
8435         compiler_plugins=no
8436     fi
8437     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8438         if test "$CLANGVER" -lt 120001; then
8439             if test "$compiler_plugins" = yes; then
8440                 AC_MSG_ERROR(
8441                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8442             else
8443                 compiler_plugins=no
8444             fi
8445         fi
8446     fi
8447     if test "$compiler_plugins" != "no"; then
8448         dnl The prefix where Clang resides, override to where Clang resides if
8449         dnl using a source build:
8450         if test -z "$CLANGDIR"; then
8451             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8452         fi
8453         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8454         if test -z "$COMPILER_PLUGINS_CXX"; then
8455             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8456         fi
8457         clangbindir=$CLANGDIR/bin
8458         if test "$build_os" = "cygwin"; then
8459             clangbindir=$(cygpath -u "$clangbindir")
8460         fi
8461         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8462         if test -n "$LLVM_CONFIG"; then
8463             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8464             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8465             if test -z "$CLANGLIBDIR"; then
8466                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8467             fi
8468             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8469             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8470             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8471                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8472                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8473                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8474                 fi
8475             fi
8476             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8477             clangobjdir=$($LLVM_CONFIG --obj-root)
8478             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8479                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8480             fi
8481         fi
8482         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8483         AC_LANG_PUSH([C++])
8484         save_CXX=$CXX
8485         save_CXXCPP=$CXXCPP
8486         save_CPPFLAGS=$CPPFLAGS
8487         save_CXXFLAGS=$CXXFLAGS
8488         save_LDFLAGS=$LDFLAGS
8489         save_LIBS=$LIBS
8490         CXX=$COMPILER_PLUGINS_CXX
8491         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8492         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8493         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8494         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8495             [COMPILER_PLUGINS=TRUE],
8496             [
8497             if test "$compiler_plugins" = "yes"; then
8498                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8499             else
8500                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8501                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8502             fi
8503             ])
8504         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8505         dnl comment in compilerplugins/Makefile-clang.mk:
8506         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8507             LDFLAGS=""
8508             AC_MSG_CHECKING([for clang libraries to use])
8509             if test -z "$CLANGTOOLLIBS"; then
8510                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8511                 AC_LINK_IFELSE([
8512                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8513                         [[ clang::FullSourceLoc().dump(); ]])
8514                 ],[CLANGTOOLLIBS="$LIBS"],[])
8515             fi
8516             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8517             dnl list of individual -lclang* (but note that that list can become outdated over time,
8518             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8519             dnl needs to include -lclangSupport now"):
8520             if test -z "$CLANGTOOLLIBS"; then
8521                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8522  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8523                 AC_LINK_IFELSE([
8524                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8525                         [[ clang::FullSourceLoc().dump(); ]])
8526                 ],[CLANGTOOLLIBS="$LIBS"],[])
8527             fi
8528             AC_MSG_RESULT([$CLANGTOOLLIBS])
8529             if test -z "$CLANGTOOLLIBS"; then
8530                 if test "$compiler_plugins" = "yes"; then
8531                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8532                 else
8533                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8534                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8535                 fi
8536                 COMPILER_PLUGINS=
8537             fi
8538             if test -n "$COMPILER_PLUGINS"; then
8539                 if test -z "$CLANGSYSINCLUDE"; then
8540                     if test -n "$LLVM_CONFIG"; then
8541                         # Path to the clang system headers (no idea if there's a better way to get it).
8542                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8543                     fi
8544                 fi
8545             fi
8546         fi
8547         CXX=$save_CXX
8548         CXXCPP=$save_CXXCPP
8549         CPPFLAGS=$save_CPPFLAGS
8550         CXXFLAGS=$save_CXXFLAGS
8551         LDFLAGS=$save_LDFLAGS
8552         LIBS="$save_LIBS"
8553         AC_LANG_POP([C++])
8555         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8556         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8557             #ifndef __clang__
8558             you lose
8559             #endif
8560             int foo=42;
8561             ]])],
8562             [AC_MSG_RESULT([yes])
8563              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8564             [AC_MSG_RESULT([no])])
8565         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8566     fi
8567 else
8568     if test "$enable_compiler_plugins" = "yes"; then
8569         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8570     fi
8572 COMPILER_PLUGINS_ANALYZER_PCH=
8573 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8574     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8576 AC_SUBST(COMPILER_PLUGINS)
8577 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8578 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8579 AC_SUBST(COMPILER_PLUGINS_CXX)
8580 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8581 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8582 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8583 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8584 AC_SUBST(CLANGDIR)
8585 AC_SUBST(CLANGLIBDIR)
8586 AC_SUBST(CLANGTOOLLIBS)
8587 AC_SUBST(CLANGSYSINCLUDE)
8589 # Plugin to help linker.
8590 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8591 # This makes --enable-lto build with clang work.
8592 AC_SUBST(LD_PLUGIN)
8594 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8595 AC_SUBST(HAVE_POSIX_FALLOCATE)
8597 JITC_PROCESSOR_TYPE=""
8598 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8599     # IBMs JDK needs this...
8600     JITC_PROCESSOR_TYPE=6
8601     export JITC_PROCESSOR_TYPE
8603 AC_SUBST([JITC_PROCESSOR_TYPE])
8605 # Misc Windows Stuff
8606 AC_ARG_WITH(ucrt-dir,
8607     AS_HELP_STRING([--with-ucrt-dir],
8608         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8609         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8610         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8611             Windows6.1-KB2999226-x64.msu
8612             Windows6.1-KB2999226-x86.msu
8613             Windows8.1-KB2999226-x64.msu
8614             Windows8.1-KB2999226-x86.msu
8615             Windows8-RT-KB2999226-x64.msu
8616             Windows8-RT-KB2999226-x86.msu
8617         A zip archive including those files is available from Microsoft site:
8618         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8621 UCRT_REDISTDIR="$with_ucrt_dir"
8622 if test $_os = "WINNT"; then
8623     find_msvc_x64_dlls
8624     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8625     MSVC_DLLS="$msvcdlls"
8626     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8627         with_redist=143
8628     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8629         with_redist=142
8630     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8631         with_redist=141
8632     fi
8633     for i in $PKGFORMAT; do
8634         if test "$i" = msi; then
8635             find_msms "$with_redist"
8636             if test -n "$msmdir"; then
8637                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8638                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8639             fi
8640             break
8641         fi
8642     done
8644     if test "$UCRT_REDISTDIR" = "no"; then
8645         dnl explicitly disabled
8646         UCRT_REDISTDIR=""
8647     else
8648         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8649                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8650                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8651                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8652                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8653                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8654             UCRT_REDISTDIR=""
8655             if test -n "$PKGFORMAT"; then
8656                for i in $PKGFORMAT; do
8657                    case "$i" in
8658                    msi)
8659                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8660                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8661                        ;;
8662                    esac
8663                done
8664             fi
8665         fi
8666     fi
8669 AC_SUBST(UCRT_REDISTDIR)
8670 AC_SUBST(MSVC_DLL_PATH)
8671 AC_SUBST(MSVC_DLLS)
8672 AC_SUBST(MSM_PATH)
8675 dnl ===================================================================
8676 dnl Checks for Java
8677 dnl ===================================================================
8678 if test "$ENABLE_JAVA" != ""; then
8680     # Windows-specific tests
8681     if test "$build_os" = "cygwin"; then
8682         if test -z "$with_jdk_home"; then
8683             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8684             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8685             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8686             if test -n "$regvalue"; then
8687                 ver=$regvalue
8688                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8689                 with_jdk_home=$regvalue
8690             fi
8691             howfound="found automatically"
8692         else
8693             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8694             howfound="you passed"
8695         fi
8697         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8698             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])
8699         fi
8700     fi
8702     # 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.
8703     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8704     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8705         with_jdk_home=`/usr/libexec/java_home`
8706     fi
8708     JAVA_HOME=; export JAVA_HOME
8709     if test -z "$with_jdk_home"; then
8710         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8711     else
8712         _java_path="$with_jdk_home/bin/$with_java"
8713         dnl Check if there is a Java interpreter at all.
8714         if test -x "$_java_path"; then
8715             JAVAINTERPRETER=$_java_path
8716         else
8717             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8718         fi
8719     fi
8721     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8722     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8723     dnl loaded by java to run JunitTests:
8724     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8725         shortjdkhome=`cygpath -d "$with_jdk_home"`
8726         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
8727             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8728             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8729         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
8730             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8731             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8732         fi
8734         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8735             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8736         fi
8737         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8738     elif test "$cross_compiling" != "yes"; then
8739         case $CPUNAME in
8740             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8741                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8742                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8743                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8744                 fi
8745                 ;;
8746             *) # assumption: everything else 32-bit
8747                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8748                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8749                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8750                 fi
8751                 ;;
8752         esac
8753     fi
8756 dnl ===================================================================
8757 dnl Checks for JDK.
8758 dnl ===================================================================
8760 # Whether all the complexity here actually is needed any more or not, no idea.
8762 JDK_SECURITYMANAGER_DISALLOWED=
8763 MODULAR_JAVA=
8764 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8765     _gij_longver=0
8766     AC_MSG_CHECKING([the installed JDK])
8767     if test -n "$JAVAINTERPRETER"; then
8768         dnl java -version sends output to stderr!
8769         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8770             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8771         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8772             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8773         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8774             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8775         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8776             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8777         else
8778             JDK=sun
8780             dnl Sun JDK specific tests
8781             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8782             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8784             if test "$_jdk_ver" -lt 10800; then
8785                 AC_MSG_ERROR([JDK is too old, you need at least 8 ($_jdk_ver < 10800)])
8786             fi
8787             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8788             dnl completely removed in some Java version > 18 (see
8789             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8790             if test "$_jdk_ver" -ge 180000; then
8791                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8792             fi
8794             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8795             if test "$_os" = "WINNT"; then
8796                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8797             fi
8798             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8800             dnl Check whether the build Java supports modules
8801             if test "$_jdk_ver" -ge 90000; then
8802                 MODULAR_JAVA=TRUE
8803             else
8804                 AC_MSG_WARN([Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)])
8805                 add_warning "Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)"
8806             fi
8808             # set to limit VM usage for JunitTests
8809             JAVAIFLAGS=-Xmx64M
8810             # set to limit VM usage for javac
8811             JAVACFLAGS=-J-Xmx128M
8812         fi
8813     else
8814         AC_MSG_ERROR([Java not found. You need at least JDK 8])
8815     fi
8816 else
8817     if test -z "$ENABLE_JAVA"; then
8818         dnl Java disabled
8819         JAVA_HOME=
8820         export JAVA_HOME
8821     elif test "$cross_compiling" = "yes"; then
8822         # Just assume compatibility of build and host JDK
8823         JDK=$JDK_FOR_BUILD
8824         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8825     fi
8828 dnl ===================================================================
8829 dnl Checks for javac
8830 dnl ===================================================================
8831 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8832     javacompiler="javac"
8833     : ${JAVA_SOURCE_VER=8}
8834     : ${JAVA_TARGET_VER=8}
8835     if test -z "$with_jdk_home"; then
8836         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8837     else
8838         _javac_path="$with_jdk_home/bin/$javacompiler"
8839         dnl Check if there is a Java compiler at all.
8840         if test -x "$_javac_path"; then
8841             JAVACOMPILER=$_javac_path
8842         fi
8843     fi
8844     if test -z "$JAVACOMPILER"; then
8845         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8846     fi
8847     if test "$build_os" = "cygwin"; then
8848         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8849             JAVACOMPILER="${JAVACOMPILER}.exe"
8850         fi
8851         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8852     fi
8855 dnl ===================================================================
8856 dnl Checks for javadoc
8857 dnl ===================================================================
8858 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8859     if test -z "$with_jdk_home"; then
8860         AC_PATH_PROG(JAVADOC, javadoc)
8861     else
8862         _javadoc_path="$with_jdk_home/bin/javadoc"
8863         dnl Check if there is a javadoc at all.
8864         if test -x "$_javadoc_path"; then
8865             JAVADOC=$_javadoc_path
8866         else
8867             AC_PATH_PROG(JAVADOC, javadoc)
8868         fi
8869     fi
8870     if test -z "$JAVADOC"; then
8871         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8872     fi
8873     if test "$build_os" = "cygwin"; then
8874         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8875             JAVADOC="${JAVADOC}.exe"
8876         fi
8877         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8878     fi
8880     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8881     JAVADOCISGJDOC="yes"
8882     fi
8884 AC_SUBST(JAVADOC)
8885 AC_SUBST(JAVADOCISGJDOC)
8887 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8888     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8889     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8890         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8891            # try to recover first by looking whether we have an alternative
8892            # system as in Debian or newer SuSEs where following /usr/bin/javac
8893            # over /etc/alternatives/javac leads to the right bindir where we
8894            # just need to strip a bit away to get a valid JAVA_HOME
8895            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8896         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8897             # maybe only one level of symlink (e.g. on Mac)
8898             JAVA_HOME=$(readlink $JAVACOMPILER)
8899             if test "$(dirname $JAVA_HOME)" = "."; then
8900                 # we've got no path to trim back
8901                 JAVA_HOME=""
8902             fi
8903         else
8904             # else warn
8905             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8906             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8907             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8908             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8909         fi
8910         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8911         if test "$JAVA_HOME" != "/usr"; then
8912             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8913                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8914                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8915                 dnl Tiger already returns a JDK path...
8916                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8917             else
8918                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8919                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8920                 dnl that checks which version to run
8921                 if test -f "$JAVA_HOME"; then
8922                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8923                 fi
8924             fi
8925         fi
8926     fi
8927     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8929     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8930     if test -z "$JAVA_HOME"; then
8931         if test "x$with_jdk_home" = "x"; then
8932             cat > findhome.java <<_ACEOF
8933 [import java.io.File;
8935 class findhome
8937     public static void main(String args[])
8938     {
8939         String jrelocation = System.getProperty("java.home");
8940         File jre = new File(jrelocation);
8941         System.out.println(jre.getParent());
8942     }
8944 _ACEOF
8945             AC_MSG_CHECKING([if javac works])
8946             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8947             AC_TRY_EVAL(javac_cmd)
8948             if test $? = 0 -a -f ./findhome.class; then
8949                 AC_MSG_RESULT([javac works])
8950             else
8951                 echo "configure: javac test failed" >&5
8952                 cat findhome.java >&5
8953                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8954             fi
8955             AC_MSG_CHECKING([if gij knows its java.home])
8956             JAVA_HOME=`$JAVAINTERPRETER findhome`
8957             if test $? = 0 -a "$JAVA_HOME" != ""; then
8958                 AC_MSG_RESULT([$JAVA_HOME])
8959             else
8960                 echo "configure: java test failed" >&5
8961                 cat findhome.java >&5
8962                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8963             fi
8964             # clean-up after ourselves
8965             rm -f ./findhome.java ./findhome.class
8966         else
8967             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8968         fi
8969     fi
8971     # now check if $JAVA_HOME is really valid
8972     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8973         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8974             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8975             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8976             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8977             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8978             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8979             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8980         fi
8981     fi
8982     PathFormat "$JAVA_HOME"
8983     JAVA_HOME="$formatted_path"
8986 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8987     "$_os" != Darwin
8988 then
8989     AC_MSG_CHECKING([for JAWT lib])
8990     if test "$_os" = WINNT; then
8991         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8992         JAWTLIB=jawt.lib
8993     else
8994         case "$host_cpu" in
8995         arm*)
8996             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8997             JAVA_ARCH=$my_java_arch
8998             ;;
8999         i*86)
9000             my_java_arch=i386
9001             ;;
9002         m68k)
9003             my_java_arch=m68k
9004             ;;
9005         powerpc)
9006             my_java_arch=ppc
9007             ;;
9008         powerpc64)
9009             my_java_arch=ppc64
9010             ;;
9011         powerpc64le)
9012             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
9013             JAVA_ARCH=$my_java_arch
9014             ;;
9015         sparc64)
9016             my_java_arch=sparcv9
9017             ;;
9018         x86_64)
9019             my_java_arch=amd64
9020             ;;
9021         *)
9022             my_java_arch=$host_cpu
9023             ;;
9024         esac
9025         # This is where JDK9 puts the library
9026         if test -e "$JAVA_HOME/lib/libjawt.so"; then
9027             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
9028         else
9029             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
9030         fi
9031         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
9032     fi
9033     AC_MSG_RESULT([$JAWTLIB])
9035 AC_SUBST(JAWTLIB)
9037 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
9038     case "$host_os" in
9040     cygwin*|wsl*)
9041         JAVAINC="-I$JAVA_HOME/include/win32"
9042         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
9043         ;;
9045     darwin*)
9046         if test -d "$JAVA_HOME/include/darwin"; then
9047             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
9048         else
9049             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
9050         fi
9051         ;;
9053     dragonfly*)
9054         JAVAINC="-I$JAVA_HOME/include"
9055         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9056         ;;
9058     freebsd*)
9059         JAVAINC="-I$JAVA_HOME/include"
9060         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
9061         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
9062         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9063         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9064         ;;
9066     k*bsd*-gnu*)
9067         JAVAINC="-I$JAVA_HOME/include"
9068         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9069         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9070         ;;
9072     linux-gnu*)
9073         JAVAINC="-I$JAVA_HOME/include"
9074         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9075         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9076         ;;
9078     *netbsd*)
9079         JAVAINC="-I$JAVA_HOME/include"
9080         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9081         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9082        ;;
9084     openbsd*)
9085         JAVAINC="-I$JAVA_HOME/include"
9086         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9087         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9088         ;;
9090     solaris*)
9091         JAVAINC="-I$JAVA_HOME/include"
9092         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9093         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9094         ;;
9095     esac
9097 SOLARINC="$SOLARINC $JAVAINC"
9099 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9100     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9101     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9102     JDK_FOR_BUILD=$JDK
9103     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9106 AC_SUBST(JAVACFLAGS)
9107 AC_SUBST(JAVACOMPILER)
9108 AC_SUBST(JAVAINTERPRETER)
9109 AC_SUBST(JAVAIFLAGS)
9110 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9111 AC_SUBST(JAVA_HOME)
9112 AC_SUBST(JAVA_HOME_FOR_BUILD)
9113 AC_SUBST(JDK)
9114 AC_SUBST(JDK_FOR_BUILD)
9115 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9116 AC_SUBST(JAVA_SOURCE_VER)
9117 AC_SUBST(JAVA_TARGET_VER)
9118 AC_SUBST(MODULAR_JAVA)
9121 dnl ===================================================================
9122 dnl Export file validation
9123 dnl ===================================================================
9124 AC_MSG_CHECKING([whether to enable export file validation])
9125 if test "$with_export_validation" != "no"; then
9126     if test -z "$ENABLE_JAVA"; then
9127         if test "$with_export_validation" = "yes"; then
9128             AC_MSG_ERROR([requested, but Java is disabled])
9129         else
9130             AC_MSG_RESULT([no, as Java is disabled])
9131         fi
9132     elif ! test -d "${SRC_ROOT}/schema"; then
9133         if test "$with_export_validation" = "yes"; then
9134             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9135         else
9136             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9137         fi
9138     else
9139         AC_MSG_RESULT([yes])
9140         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9142         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9143         if test -z "$ODFVALIDATOR"; then
9144             # remember to download the ODF toolkit with validator later
9145             AC_MSG_NOTICE([no odfvalidator found, will download it])
9146             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9147             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9149             # and fetch name of odfvalidator jar name from download.lst
9150             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9151             AC_SUBST(ODFVALIDATOR_JAR)
9153             if test -z "$ODFVALIDATOR_JAR"; then
9154                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9155             fi
9156         fi
9157         if test "$build_os" = "cygwin"; then
9158             # In case of Cygwin it will be executed from Windows,
9159             # so we need to run bash and absolute path to validator
9160             # so instead of "odfvalidator" it will be
9161             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9162             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9163         else
9164             ODFVALIDATOR="sh $ODFVALIDATOR"
9165         fi
9166         AC_SUBST(ODFVALIDATOR)
9169         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9170         if test -z "$OFFICEOTRON"; then
9171             # remember to download the officeotron with validator later
9172             AC_MSG_NOTICE([no officeotron found, will download it])
9173             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9174             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9176             # and fetch name of officeotron jar name from download.lst
9177             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9178             AC_SUBST(OFFICEOTRON_JAR)
9180             if test -z "$OFFICEOTRON_JAR"; then
9181                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9182             fi
9183         else
9184             # check version of existing officeotron
9185             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9186             if test 0"$OFFICEOTRON_VER" -lt 704; then
9187                 AC_MSG_ERROR([officeotron too old])
9188             fi
9189         fi
9190         if test "$build_os" = "cygwin"; then
9191             # In case of Cygwin it will be executed from Windows,
9192             # so we need to run bash and absolute path to validator
9193             # so instead of "odfvalidator" it will be
9194             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9195             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9196         else
9197             OFFICEOTRON="sh $OFFICEOTRON"
9198         fi
9199     fi
9200     AC_SUBST(OFFICEOTRON)
9201 else
9202     AC_MSG_RESULT([no])
9205 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9206 if test "$with_bffvalidator" != "no"; then
9207     AC_DEFINE(HAVE_BFFVALIDATOR)
9209     if test "$with_export_validation" = "no"; then
9210         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9211     fi
9213     if test "$with_bffvalidator" = "yes"; then
9214         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9215     else
9216         BFFVALIDATOR="$with_bffvalidator"
9217     fi
9219     if test "$build_os" = "cygwin"; then
9220         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9221             AC_MSG_RESULT($BFFVALIDATOR)
9222         else
9223             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9224         fi
9225     elif test -n "$BFFVALIDATOR"; then
9226         # We are not in Cygwin but need to run Windows binary with wine
9227         AC_PATH_PROGS(WINE, wine)
9229         # so swap in a shell wrapper that converts paths transparently
9230         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9231         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9232         AC_SUBST(BFFVALIDATOR_EXE)
9233         AC_MSG_RESULT($BFFVALIDATOR)
9234     else
9235         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9236     fi
9237     AC_SUBST(BFFVALIDATOR)
9238 else
9239     AC_MSG_RESULT([no])
9242 dnl ===================================================================
9243 dnl Check for epm (not needed for Windows)
9244 dnl ===================================================================
9245 AC_MSG_CHECKING([whether to enable EPM for packing])
9246 if test "$enable_epm" = "yes"; then
9247     AC_MSG_RESULT([yes])
9248     if test "$_os" != "WINNT"; then
9249         if test $_os = Darwin; then
9250             EPM=internal
9251         elif test -n "$with_epm"; then
9252             EPM=$with_epm
9253         else
9254             AC_PATH_PROG(EPM, epm, no)
9255         fi
9256         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9257             AC_MSG_NOTICE([EPM will be built.])
9258             BUILD_TYPE="$BUILD_TYPE EPM"
9259             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9260         else
9261             # Gentoo has some epm which is something different...
9262             AC_MSG_CHECKING([whether the found epm is the right epm])
9263             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9264                 AC_MSG_RESULT([yes])
9265             else
9266                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9267             fi
9268             AC_MSG_CHECKING([epm version])
9269             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9270             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9271                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9272                 AC_MSG_RESULT([OK, >= 3.7])
9273             else
9274                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9275                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9276             fi
9277         fi
9278     fi
9280     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9281         AC_MSG_CHECKING([for rpm])
9282         for a in "$RPM" rpmbuild rpm; do
9283             $a --usage >/dev/null 2> /dev/null
9284             if test $? -eq 0; then
9285                 RPM=$a
9286                 break
9287             else
9288                 $a --version >/dev/null 2> /dev/null
9289                 if test $? -eq 0; then
9290                     RPM=$a
9291                     break
9292                 fi
9293             fi
9294         done
9295         if test -z "$RPM"; then
9296             AC_MSG_ERROR([not found])
9297         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9298             RPM_PATH=`which $RPM`
9299             AC_MSG_RESULT([$RPM_PATH])
9300             SCPDEFS="$SCPDEFS -DWITH_RPM"
9301         else
9302             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9303         fi
9304     fi
9305     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9306         AC_PATH_PROG(DPKG, dpkg, no)
9307         if test "$DPKG" = "no"; then
9308             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9309         fi
9310     fi
9311     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9312        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9313         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9314             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9315                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9316                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9317                     AC_MSG_RESULT([yes])
9318                 else
9319                     AC_MSG_RESULT([no])
9320                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9321                         _pt="rpm"
9322                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9323                         add_warning "the rpms will need to be installed with --nodeps"
9324                     else
9325                         _pt="pkg"
9326                     fi
9327                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9328                     add_warning "the ${_pt}s will not be relocatable"
9329                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9330                                  relocation will work, you need to patch your epm with the
9331                                  patch in epm/epm-3.7.patch or build with
9332                                  --with-epm=internal which will build a suitable epm])
9333                 fi
9334             fi
9335         fi
9336     fi
9337     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9338         AC_PATH_PROG(PKGMK, pkgmk, no)
9339         if test "$PKGMK" = "no"; then
9340             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9341         fi
9342     fi
9343     AC_SUBST(RPM)
9344     AC_SUBST(DPKG)
9345     AC_SUBST(PKGMK)
9346 else
9347     for i in $PKGFORMAT; do
9348         case "$i" in
9349         bsd | deb | pkg | rpm | native | portable)
9350             AC_MSG_ERROR(
9351                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9352             ;;
9353         esac
9354     done
9355     AC_MSG_RESULT([no])
9356     EPM=NO
9358 AC_SUBST(EPM)
9360 ENABLE_LWP=
9361 if test "$enable_lotuswordpro" = "yes"; then
9362     ENABLE_LWP="TRUE"
9364 AC_SUBST(ENABLE_LWP)
9366 dnl ===================================================================
9367 dnl Check for building ODK
9368 dnl ===================================================================
9369 AC_MSG_CHECKING([whether to build the ODK])
9370 if test "$enable_odk" = yes; then
9371     if test "$DISABLE_DYNLOADING" = TRUE; then
9372         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9373     fi
9374     AC_MSG_RESULT([yes])
9375     BUILD_TYPE="$BUILD_TYPE ODK"
9376 else
9377     AC_MSG_RESULT([no])
9380 if test "$enable_odk" != yes; then
9381     unset DOXYGEN
9382 else
9383     if test "$with_doxygen" = no; then
9384         AC_MSG_CHECKING([for doxygen])
9385         unset DOXYGEN
9386         AC_MSG_RESULT([no])
9387     else
9388         if test "$with_doxygen" = yes; then
9389             AC_PATH_PROG([DOXYGEN], [doxygen])
9390             if test -z "$DOXYGEN"; then
9391                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9392             fi
9393             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9394                 if ! dot -V 2>/dev/null; then
9395                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9396                 fi
9397             fi
9398         else
9399             AC_MSG_CHECKING([for doxygen])
9400             DOXYGEN=$with_doxygen
9401             AC_MSG_RESULT([$DOXYGEN])
9402         fi
9403         if test -n "$DOXYGEN"; then
9404             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9405             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9406             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9407                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9408             fi
9409         fi
9410     fi
9412 AC_SUBST([DOXYGEN])
9414 dnl ==================================================================
9415 dnl libfuzzer
9416 dnl ==================================================================
9417 AC_MSG_CHECKING([whether to enable fuzzers])
9418 if test "$enable_fuzzers" != yes; then
9419     AC_MSG_RESULT([no])
9420 else
9421     if test -z $LIB_FUZZING_ENGINE; then
9422       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9423     fi
9424     AC_MSG_RESULT([yes])
9425     ENABLE_FUZZERS="TRUE"
9426     AC_DEFINE([ENABLE_FUZZERS],1)
9427     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9429 AC_SUBST(LIB_FUZZING_ENGINE)
9431 dnl ===================================================================
9432 dnl Check for system zlib
9433 dnl ===================================================================
9434 if test "$with_system_zlib" = "auto"; then
9435     case "$_os" in
9436     WINNT)
9437         with_system_zlib="$with_system_libs"
9438         ;;
9439     *)
9440         if test "$enable_fuzzers" != "yes"; then
9441             with_system_zlib=yes
9442         else
9443             with_system_zlib=no
9444         fi
9445         ;;
9446     esac
9449 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9450 dnl and has no pkg-config for it at least on some tinderboxes,
9451 dnl so leaving that out for now
9452 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9453 AC_MSG_CHECKING([which zlib to use])
9454 if test "$with_system_zlib" = "yes"; then
9455     AC_MSG_RESULT([external])
9456     SYSTEM_ZLIB=TRUE
9457     AC_CHECK_HEADER(zlib.h, [],
9458         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9459     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9460         [AC_MSG_ERROR(zlib not found or functional)], [])
9461 else
9462     AC_MSG_RESULT([internal])
9463     SYSTEM_ZLIB=
9464     BUILD_TYPE="$BUILD_TYPE ZLIB"
9465     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9466     if test "$COM" = "MSC"; then
9467         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9468     else
9469         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9470     fi
9472 AC_SUBST(ZLIB_CFLAGS)
9473 AC_SUBST(ZLIB_LIBS)
9474 AC_SUBST(SYSTEM_ZLIB)
9476 dnl ===================================================================
9477 dnl Check for system jpeg
9478 dnl ===================================================================
9479 AC_MSG_CHECKING([which libjpeg to use])
9480 if test "$with_system_jpeg" = "yes"; then
9481     AC_MSG_RESULT([external])
9482     SYSTEM_LIBJPEG=TRUE
9483     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9484         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9485     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9486         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9487 else
9488     SYSTEM_LIBJPEG=
9489     AC_MSG_RESULT([internal, libjpeg-turbo])
9490     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9492     case "$host_cpu" in
9493     x86_64 | amd64 | i*86 | x86 | ia32)
9494         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9495         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9496             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9497                 NASM="$LODE_HOME/opt/bin/nasm"
9498             elif test -x "/opt/lo/bin/nasm"; then
9499                 NASM="/opt/lo/bin/nasm"
9500             fi
9501         fi
9503         if test -n "$NASM"; then
9504             AC_MSG_CHECKING([for object file format of host system])
9505             case "$host_os" in
9506               cygwin* | mingw* | pw32* | wsl*)
9507                 case "$host_cpu" in
9508                   x86_64)
9509                     objfmt='Win64-COFF'
9510                     ;;
9511                   *)
9512                     objfmt='Win32-COFF'
9513                     ;;
9514                 esac
9515               ;;
9516               msdosdjgpp* | go32*)
9517                 objfmt='COFF'
9518               ;;
9519               os2-emx*) # not tested
9520                 objfmt='MSOMF' # obj
9521               ;;
9522               linux*coff* | linux*oldld*)
9523                 objfmt='COFF' # ???
9524               ;;
9525               linux*aout*)
9526                 objfmt='a.out'
9527               ;;
9528               linux*)
9529                 case "$host_cpu" in
9530                   x86_64)
9531                     objfmt='ELF64'
9532                     ;;
9533                   *)
9534                     objfmt='ELF'
9535                     ;;
9536                 esac
9537               ;;
9538               kfreebsd* | freebsd* | netbsd* | openbsd*)
9539                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9540                   objfmt='BSD-a.out'
9541                 else
9542                   case "$host_cpu" in
9543                     x86_64 | amd64)
9544                       objfmt='ELF64'
9545                       ;;
9546                     *)
9547                       objfmt='ELF'
9548                       ;;
9549                   esac
9550                 fi
9551               ;;
9552               solaris* | sunos* | sysv* | sco*)
9553                 case "$host_cpu" in
9554                   x86_64)
9555                     objfmt='ELF64'
9556                     ;;
9557                   *)
9558                     objfmt='ELF'
9559                     ;;
9560                 esac
9561               ;;
9562               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9563                 case "$host_cpu" in
9564                   x86_64)
9565                     objfmt='Mach-O64'
9566                     ;;
9567                   *)
9568                     objfmt='Mach-O'
9569                     ;;
9570                 esac
9571               ;;
9572               *)
9573                 objfmt='ELF ?'
9574               ;;
9575             esac
9577             AC_MSG_RESULT([$objfmt])
9578             if test "$objfmt" = 'ELF ?'; then
9579               objfmt='ELF'
9580               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9581             fi
9583             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9584             case "$objfmt" in
9585               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9586               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9587               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9588               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9589               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9590               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9591               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9592               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9593               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9594               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9595               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9596             esac
9597             AC_MSG_RESULT([$NAFLAGS])
9599             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9600             cat > conftest.asm << EOF
9601             [%line __oline__ "configure"
9602                     section .text
9603                     global  _main,main
9604             _main:
9605             main:   xor     eax,eax
9606                     ret
9607             ]
9609             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9610             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9611               AC_MSG_RESULT(yes)
9612             else
9613               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9614               cat conftest.asm >&AS_MESSAGE_LOG_FD
9615               rm -rf conftest*
9616               AC_MSG_RESULT(no)
9617               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9618               NASM=""
9619             fi
9621         fi
9623         if test -z "$NASM"; then
9624 cat << _EOS
9625 ****************************************************************************
9626 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9627 To get one please:
9629 _EOS
9630             if test "$build_os" = "cygwin"; then
9631 cat << _EOS
9632 install a pre-compiled binary for Win32
9634 mkdir -p /opt/lo/bin
9635 cd /opt/lo/bin
9636 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9637 chmod +x nasm
9639 or get and install one from https://www.nasm.us/
9641 Then re-run autogen.sh
9643 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9644 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9646 _EOS
9647             else
9648 cat << _EOS
9649 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9651 _EOS
9652             fi
9653             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9654             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9655         fi
9656       ;;
9657     esac
9660 AC_SUBST(NASM)
9661 AC_SUBST(NAFLAGS)
9662 AC_SUBST(LIBJPEG_CFLAGS)
9663 AC_SUBST(LIBJPEG_LIBS)
9664 AC_SUBST(SYSTEM_LIBJPEG)
9666 dnl ===================================================================
9667 dnl Check for system clucene
9668 dnl ===================================================================
9669 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9670 if test "$SYSTEM_CLUCENE" = TRUE; then
9671     AC_LANG_PUSH([C++])
9672     save_CXXFLAGS=$CXXFLAGS
9673     save_CPPFLAGS=$CPPFLAGS
9674     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9675     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9676     dnl https://sourceforge.net/p/clucene/bugs/200/
9677     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9678     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9679                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9680     CXXFLAGS=$save_CXXFLAGS
9681     CPPFLAGS=$save_CPPFLAGS
9682     AC_LANG_POP([C++])
9683     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9686 dnl ===================================================================
9687 dnl Check for system expat
9688 dnl ===================================================================
9689 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9691 dnl ===================================================================
9692 dnl Check for system xmlsec
9693 dnl ===================================================================
9694 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9696 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9697 if test "$enable_eot" = "yes"; then
9698     ENABLE_EOT="TRUE"
9699     AC_DEFINE([ENABLE_EOT])
9700     AC_MSG_RESULT([yes])
9702     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9703 else
9704     ENABLE_EOT=
9705     AC_MSG_RESULT([no])
9707 AC_SUBST([ENABLE_EOT])
9709 dnl ===================================================================
9710 dnl Check for DLP libs
9711 dnl ===================================================================
9712 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9713 AS_IF([test "$COM" = "MSC"],
9714       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9715       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9717 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9718 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9720 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9722 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9724 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9725 AS_IF([test "$COM" = "MSC"],
9726       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9727       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9729 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9730 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9732 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9734 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9735 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9737 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9739 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9741 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9743 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9744 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9746 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9747 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9749 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9751 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9752 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9754 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9756 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9758 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9760 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9762 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9763 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9765 dnl ===================================================================
9766 dnl Check for system lcms2
9767 dnl ===================================================================
9768 if test "$with_system_lcms2" != "yes"; then
9769     SYSTEM_LCMS2=
9771 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9772 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9773 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9774 if test "$GCC" = "yes"; then
9775     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9777 if test "$COM" = "MSC"; then # override the above
9778     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9781 dnl ===================================================================
9782 dnl Check for system cppunit
9783 dnl ===================================================================
9784 if test "$_os" != "Android" ; then
9785     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9788 dnl ===================================================================
9789 dnl Check whether freetype is available
9791 dnl FreeType has 3 different kinds of versions
9792 dnl * release, like 2.4.10
9793 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9794 dnl * soname
9795 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9797 dnl 9.9.3 is 2.2.0
9798 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9799 dnl ===================================================================
9800 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9801 if test "x$ac_config_site_64bit_host" = xYES; then
9802     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9803 else
9804     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9806 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9808 # ===================================================================
9809 # Check for system libxslt
9810 # to prevent incompatibilities between internal libxml2 and external libxslt,
9811 # or vice versa, use with_system_libxml here
9812 # ===================================================================
9813 if test "$with_system_libxml" = "auto"; then
9814     case "$_os" in
9815     WINNT|iOS|Android)
9816         with_system_libxml="$with_system_libs"
9817         ;;
9818     Emscripten)
9819         with_system_libxml=no
9820         ;;
9821     *)
9822         if test "$enable_fuzzers" != "yes"; then
9823             with_system_libxml=yes
9824         else
9825             with_system_libxml=no
9826         fi
9827         ;;
9828     esac
9831 AC_MSG_CHECKING([which libxslt to use])
9832 if test "$with_system_libxml" = "yes"; then
9833     AC_MSG_RESULT([external])
9834     SYSTEM_LIBXSLT=TRUE
9835     if test "$_os" = "Darwin"; then
9836         dnl make sure to use SDK path
9837         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9838         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9839         dnl omit -L/usr/lib
9840         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9841         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9842     else
9843         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9844         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9845         FilterLibs "${LIBXSLT_LIBS}"
9846         LIBXSLT_LIBS="${filteredlibs}"
9847         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9848         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9849         FilterLibs "${LIBEXSLT_LIBS}"
9850         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9851     fi
9853     dnl Check for xsltproc
9854     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9855     if test "$XSLTPROC" = "no"; then
9856         AC_MSG_ERROR([xsltproc is required])
9857     fi
9858 else
9859     AC_MSG_RESULT([internal])
9860     SYSTEM_LIBXSLT=
9861     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9863 AC_SUBST(SYSTEM_LIBXSLT)
9864 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9865     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9867 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9869 AC_SUBST(LIBEXSLT_CFLAGS)
9870 AC_SUBST(LIBEXSLT_LIBS)
9871 AC_SUBST(LIBXSLT_CFLAGS)
9872 AC_SUBST(LIBXSLT_LIBS)
9873 AC_SUBST(XSLTPROC)
9875 # ===================================================================
9876 # Check for system libxml
9877 # ===================================================================
9878 AC_MSG_CHECKING([which libxml to use])
9879 if test "$with_system_libxml" = "yes"; then
9880     AC_MSG_RESULT([external])
9881     SYSTEM_LIBXML=TRUE
9882     if test "$_os" = "Darwin"; then
9883         dnl make sure to use SDK path
9884         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9885         dnl omit -L/usr/lib
9886         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9887     elif test $_os = iOS; then
9888         dnl make sure to use SDK path
9889         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9890         LIBXML_CFLAGS="-I$usr/include/libxml2"
9891         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9892     else
9893         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9894         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9895         FilterLibs "${LIBXML_LIBS}"
9896         LIBXML_LIBS="${filteredlibs}"
9897     fi
9899     dnl Check for xmllint
9900     AC_PATH_PROG(XMLLINT, xmllint, no)
9901     if test "$XMLLINT" = "no"; then
9902         AC_MSG_ERROR([xmllint is required])
9903     fi
9904 else
9905     AC_MSG_RESULT([internal])
9906     SYSTEM_LIBXML=
9907     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9908     if test "$COM" = "MSC"; then
9909         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9910     fi
9911     if test "$COM" = "MSC"; then
9912         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9913     else
9914         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9915         if test "$DISABLE_DYNLOADING" = TRUE; then
9916             LIBXML_LIBS="$LIBXML_LIBS -lm"
9917         fi
9918     fi
9919     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9921 AC_SUBST(SYSTEM_LIBXML)
9922 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9923     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9925 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9926 AC_SUBST(LIBXML_CFLAGS)
9927 AC_SUBST(LIBXML_LIBS)
9928 AC_SUBST(XMLLINT)
9930 # =====================================================================
9931 # Checking for a Python interpreter with version >= 3.3.
9932 # Optionally user can pass an option to configure, i. e.
9933 # ./configure PYTHON=/usr/bin/python
9934 # =====================================================================
9935 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9936     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9937     # unless PYTHON is defined as above which allows 'system'
9938     enable_python=internal
9940 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9941     if test -n "$PYTHON"; then
9942         PYTHON_FOR_BUILD=$PYTHON
9943     else
9944         # This allows a lack of system python with no error, we use internal one in that case.
9945         AM_PATH_PYTHON([3.3],, [:])
9946         # Clean PYTHON_VERSION checked below if cross-compiling
9947         PYTHON_VERSION=""
9948         if test "$PYTHON" != ":"; then
9949             PYTHON_FOR_BUILD=$PYTHON
9950         fi
9951     fi
9954 # Checks for Python to use for Pyuno
9955 AC_MSG_CHECKING([which Python to use for Pyuno])
9956 case "$enable_python" in
9957 no|disable)
9958     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9959         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9960         # requirement from the choice whether to include Python stuff in the installer, but why
9961         # bother?
9962         AC_MSG_ERROR([Python is required at build time.])
9963     fi
9964     enable_python=no
9965     AC_MSG_RESULT([none])
9966     ;;
9967 ""|yes|auto)
9968     if test "$DISABLE_SCRIPTING" = TRUE; then
9969         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9970             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9971         fi
9972         AC_MSG_RESULT([none, overridden by --disable-scripting])
9973         enable_python=no
9974     elif test $build_os = cygwin -o $build_os = wsl; then
9975         dnl When building on Windows we don't attempt to use any installed
9976         dnl "system"  Python.
9977         AC_MSG_RESULT([fully internal])
9978         enable_python=internal
9979     elif test "$cross_compiling" = yes; then
9980         AC_MSG_RESULT([system])
9981         enable_python=system
9982     else
9983         # Unset variables set by the above AM_PATH_PYTHON so that
9984         # we actually do check anew.
9985         AC_MSG_RESULT([])
9986         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
9987         AM_PATH_PYTHON([3.3],, [:])
9988         AC_MSG_CHECKING([which Python to use for Pyuno])
9989         if test "$PYTHON" = ":"; then
9990             if test -z "$PYTHON_FOR_BUILD"; then
9991                 AC_MSG_RESULT([fully internal])
9992             else
9993                 AC_MSG_RESULT([internal])
9994             fi
9995             enable_python=internal
9996         else
9997             AC_MSG_RESULT([system])
9998             enable_python=system
9999         fi
10000     fi
10001     ;;
10002 internal)
10003     AC_MSG_RESULT([internal])
10004     ;;
10005 fully-internal)
10006     AC_MSG_RESULT([fully internal])
10007     enable_python=internal
10008     ;;
10009 system)
10010     AC_MSG_RESULT([system])
10011     if test "$_os" = Darwin -a -z "$PYTHON"; then
10012         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
10013     fi
10014     ;;
10016     AC_MSG_ERROR([Incorrect --enable-python option])
10017     ;;
10018 esac
10020 if test $enable_python != no; then
10021     BUILD_TYPE="$BUILD_TYPE PYUNO"
10024 if test $enable_python = system; then
10025     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
10026         # Fallback: Accept these in the environment, or as set above
10027         # for MacOSX.
10028         :
10029     elif test "$cross_compiling" != yes; then
10030         # Unset variables set by the above AM_PATH_PYTHON so that
10031         # we actually do check anew.
10032         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
10033         # This causes an error if no python command is found
10034         AM_PATH_PYTHON([3.3])
10035         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
10036         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
10037         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
10038         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
10039         if test -z "$PKG_CONFIG"; then
10040             PYTHON_CFLAGS="-I$python_include"
10041             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10042         elif $PKG_CONFIG --exists python-$python_version-embed; then
10043             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
10044             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
10045         elif $PKG_CONFIG --exists python-$python_version; then
10046             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
10047             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
10048         else
10049             PYTHON_CFLAGS="-I$python_include"
10050             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10051         fi
10052         FilterLibs "${PYTHON_LIBS}"
10053         PYTHON_LIBS="${filteredlibs}"
10054     else
10055         dnl How to find out the cross-compilation Python installation path?
10056         AC_MSG_CHECKING([for python version])
10057         AS_IF([test -n "$PYTHON_VERSION"],
10058               [AC_MSG_RESULT([$PYTHON_VERSION])],
10059               [AC_MSG_RESULT([not found])
10060                AC_MSG_ERROR([no usable python found])])
10061         test -n "$PYTHON_CFLAGS" && break
10062     fi
10064     dnl Check if the headers really work
10065     save_CPPFLAGS="$CPPFLAGS"
10066     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10067     AC_CHECK_HEADER(Python.h)
10068     CPPFLAGS="$save_CPPFLAGS"
10070     # let the PYTHON_FOR_BUILD match the same python installation that
10071     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10072     # better for PythonTests.
10073     PYTHON_FOR_BUILD=$PYTHON
10076 if test "$with_lxml" != no; then
10077     if test -z "$PYTHON_FOR_BUILD"; then
10078         case $build_os in
10079             cygwin)
10080                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10081                 ;;
10082             *)
10083                 if test "$cross_compiling" != yes ; then
10084                     BUILD_TYPE="$BUILD_TYPE LXML"
10085                 fi
10086                 ;;
10087         esac
10088     else
10089         AC_MSG_CHECKING([for python lxml])
10090         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10091             AC_MSG_RESULT([yes])
10092         else
10093             case $build_os in
10094                 cygwin)
10095                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10096                     ;;
10097                 *)
10098                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10099                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10100                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10101                         else
10102                             BUILD_TYPE="$BUILD_TYPE LXML"
10103                             AC_MSG_RESULT([no, using internal lxml])
10104                         fi
10105                     else
10106                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10107                     fi
10108                     ;;
10109             esac
10110         fi
10111     fi
10114 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10115     SYSTEM_PYTHON=
10116     PYTHON_VERSION_MAJOR=3
10117     PYTHON_VERSION_MINOR=8
10118     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.20
10119     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10120         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10121     fi
10122     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10124     # Embedded Python dies without Home set
10125     if test "$HOME" = ""; then
10126         export HOME=""
10127     fi
10130 dnl By now enable_python should be "system", "internal" or "no"
10131 case $enable_python in
10132 system)
10133     SYSTEM_PYTHON=TRUE
10135     if test "x$ac_cv_header_Python_h" != "xyes"; then
10136        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10137     fi
10139     AC_LANG_PUSH(C)
10140     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10141     AC_MSG_CHECKING([for correct python library version])
10142        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10143 #include <Python.h>
10145 int main(int argc, char **argv) {
10146    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10147    else return 1;
10149        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10150     AC_LANG_POP(C)
10152     dnl FIXME Check if the Python library can be linked with, too?
10153     ;;
10155 internal)
10156     BUILD_TYPE="$BUILD_TYPE PYTHON"
10157     if test "$OS" = LINUX -o "$OS" = WNT ; then
10158         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10159     fi
10160     ;;
10162     DISABLE_PYTHON=TRUE
10163     SYSTEM_PYTHON=
10164     ;;
10166     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10167     ;;
10168 esac
10170 AC_SUBST(DISABLE_PYTHON)
10171 AC_SUBST(SYSTEM_PYTHON)
10172 AC_SUBST(PYTHON_CFLAGS)
10173 AC_SUBST(PYTHON_FOR_BUILD)
10174 AC_SUBST(PYTHON_LIBS)
10175 AC_SUBST(PYTHON_VERSION)
10176 AC_SUBST(PYTHON_VERSION_MAJOR)
10177 AC_SUBST(PYTHON_VERSION_MINOR)
10179 AC_MSG_CHECKING([whether to build LibreLogo])
10180 case "$enable_python" in
10181 no|disable)
10182     AC_MSG_RESULT([no; Python disabled])
10183     ;;
10185     if test "${enable_librelogo}" = "no"; then
10186         AC_MSG_RESULT([no])
10187     else
10188         AC_MSG_RESULT([yes])
10189         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10190         AC_DEFINE([ENABLE_LIBRELOGO],1)
10191     fi
10192     ;;
10193 esac
10194 AC_SUBST(ENABLE_LIBRELOGO)
10196 ENABLE_MARIADBC=
10197 MARIADBC_MAJOR=1
10198 MARIADBC_MINOR=0
10199 MARIADBC_MICRO=2
10200 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10201 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10202     ENABLE_MARIADBC=TRUE
10203     AC_MSG_RESULT([yes])
10204     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10205 else
10206     AC_MSG_RESULT([no])
10208 AC_SUBST(ENABLE_MARIADBC)
10209 AC_SUBST(MARIADBC_MAJOR)
10210 AC_SUBST(MARIADBC_MINOR)
10211 AC_SUBST(MARIADBC_MICRO)
10213 if test "$ENABLE_MARIADBC" = "TRUE"; then
10214     dnl ===================================================================
10215     dnl Check for system MariaDB
10216     dnl ===================================================================
10217     AC_MSG_CHECKING([which MariaDB to use])
10218     if test "$with_system_mariadb" = "yes"; then
10219         AC_MSG_RESULT([external])
10220         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10221         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10222         if test -z "$MARIADBCONFIG"; then
10223             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10224             if test -z "$MARIADBCONFIG"; then
10225                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10226                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10227             fi
10228         fi
10229         AC_MSG_CHECKING([MariaDB version])
10230         MARIADB_VERSION=`$MARIADBCONFIG --version`
10231         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10232         if test "$MARIADB_MAJOR" -ge "5"; then
10233             AC_MSG_RESULT([OK])
10234         else
10235             AC_MSG_ERROR([too old, use 5.0.x or later])
10236         fi
10237         AC_MSG_CHECKING([for MariaDB Client library])
10238         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10239         if test "$COM_IS_CLANG" = TRUE; then
10240             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10241         fi
10242         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10243         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10244         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10245         dnl linux32:
10246         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10247             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10248             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10249                 | sed -e 's|/lib64/|/lib/|')
10250         fi
10251         FilterLibs "${MARIADB_LIBS}"
10252         MARIADB_LIBS="${filteredlibs}"
10253         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10254         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10255         if test "$enable_bundle_mariadb" = "yes"; then
10256             AC_MSG_RESULT([yes])
10257             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10258             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10260 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10262 /g' | grep -E '(mysqlclient|mariadb)')
10263             if test "$_os" = "Darwin"; then
10264                 LIBMARIADB=${LIBMARIADB}.dylib
10265             elif test "$_os" = "WINNT"; then
10266                 LIBMARIADB=${LIBMARIADB}.dll
10267             else
10268                 LIBMARIADB=${LIBMARIADB}.so
10269             fi
10270             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10271             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10272             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10273                 AC_MSG_RESULT([found.])
10274                 PathFormat "$LIBMARIADB_PATH"
10275                 LIBMARIADB_PATH="$formatted_path"
10276             else
10277                 AC_MSG_ERROR([not found.])
10278             fi
10279         else
10280             AC_MSG_RESULT([no])
10281             BUNDLE_MARIADB_CONNECTOR_C=
10282         fi
10283     else
10284         AC_MSG_RESULT([internal])
10285         SYSTEM_MARIADB_CONNECTOR_C=
10286         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10287         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10288         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10289     fi
10291     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10292     AC_SUBST(MARIADB_CFLAGS)
10293     AC_SUBST(MARIADB_LIBS)
10294     AC_SUBST(LIBMARIADB)
10295     AC_SUBST(LIBMARIADB_PATH)
10296     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10299 dnl ===================================================================
10300 dnl Check for system hsqldb
10301 dnl ===================================================================
10302 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10303     AC_MSG_CHECKING([which hsqldb to use])
10304     if test "$with_system_hsqldb" = "yes"; then
10305         AC_MSG_RESULT([external])
10306         SYSTEM_HSQLDB=TRUE
10307         if test -z $HSQLDB_JAR; then
10308             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10309         fi
10310         if ! test -f $HSQLDB_JAR; then
10311                AC_MSG_ERROR(hsqldb.jar not found.)
10312         fi
10313         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10314         export HSQLDB_JAR
10315         if $PERL -e \
10316            'use Archive::Zip;
10317             my $file = "$ENV{'HSQLDB_JAR'}";
10318             my $zip = Archive::Zip->new( $file );
10319             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10320             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10321             {
10322                 push @l, split(/\n/, $mf);
10323                 foreach my $line (@l)
10324                 {
10325                     if ($line =~ m/Specification-Version:/)
10326                     {
10327                         ($t, $version) = split (/:/,$line);
10328                         $version =~ s/^\s//;
10329                         ($a, $b, $c, $d) = split (/\./,$version);
10330                         if ($c == "0" && $d > "8")
10331                         {
10332                             exit 0;
10333                         }
10334                         else
10335                         {
10336                             exit 1;
10337                         }
10338                     }
10339                 }
10340             }
10341             else
10342             {
10343                 exit 1;
10344             }'; then
10345             AC_MSG_RESULT([yes])
10346         else
10347             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10348         fi
10349     else
10350         AC_MSG_RESULT([internal])
10351         SYSTEM_HSQLDB=
10352         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10353         NEED_ANT=TRUE
10354     fi
10355 else
10356     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10357         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10358     fi
10360 AC_SUBST(SYSTEM_HSQLDB)
10361 AC_SUBST(HSQLDB_JAR)
10363 dnl ===================================================================
10364 dnl Check for PostgreSQL stuff
10365 dnl ===================================================================
10366 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10367 if test "x$enable_postgresql_sdbc" != "xno"; then
10368     AC_MSG_RESULT([yes])
10369     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10371     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10372         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10373     fi
10374     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10375         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10376     fi
10378     postgres_interface=""
10379     if test "$with_system_postgresql" = "yes"; then
10380         postgres_interface="external PostgreSQL"
10381         SYSTEM_POSTGRESQL=TRUE
10382         if test "$_os" = Darwin; then
10383             supp_path=''
10384             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10385                 pg_supp_path="$P_SEP$d$pg_supp_path"
10386             done
10387         fi
10388         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10389         if test -n "$PGCONFIG"; then
10390             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10391             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10392         else
10393             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10394               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10395               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10396             ],[
10397               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10398             ])
10399         fi
10400         FilterLibs "${POSTGRESQL_LIB}"
10401         POSTGRESQL_LIB="${filteredlibs}"
10402     else
10403         # if/when anything else than PostgreSQL uses Kerberos,
10404         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10405         WITH_KRB5=
10406         WITH_GSSAPI=
10407         case "$_os" in
10408         Darwin)
10409             # macOS has system MIT Kerberos 5 since 10.4
10410             if test "$with_krb5" != "no"; then
10411                 WITH_KRB5=TRUE
10412                 save_LIBS=$LIBS
10413                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10414                 # that the libraries where these functions are located on macOS will change, is it?
10415                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10416                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10417                 KRB5_LIBS=$LIBS
10418                 LIBS=$save_LIBS
10419                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10420                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10421                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10422                 LIBS=$save_LIBS
10423             fi
10424             if test "$with_gssapi" != "no"; then
10425                 WITH_GSSAPI=TRUE
10426                 save_LIBS=$LIBS
10427                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10428                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10429                 GSSAPI_LIBS=$LIBS
10430                 LIBS=$save_LIBS
10431             fi
10432             ;;
10433         WINNT)
10434             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10435                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10436             fi
10437             ;;
10438         Linux|GNU|*BSD|DragonFly)
10439             if test "$with_krb5" != "no"; then
10440                 WITH_KRB5=TRUE
10441                 save_LIBS=$LIBS
10442                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10443                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10444                 KRB5_LIBS=$LIBS
10445                 LIBS=$save_LIBS
10446                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10447                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10448                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10449                 LIBS=$save_LIBS
10450             fi
10451             if test "$with_gssapi" != "no"; then
10452                 WITH_GSSAPI=TRUE
10453                 save_LIBS=$LIBS
10454                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10455                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10456                 GSSAPI_LIBS=$LIBS
10457                 LIBS=$save_LIBS
10458             fi
10459             ;;
10460         *)
10461             if test "$with_krb5" = "yes"; then
10462                 WITH_KRB5=TRUE
10463                 save_LIBS=$LIBS
10464                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10465                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10466                 KRB5_LIBS=$LIBS
10467                 LIBS=$save_LIBS
10468                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10469                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10470                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10471                 LIBS=$save_LIBS
10472             fi
10473             if test "$with_gssapi" = "yes"; then
10474                 WITH_GSSAPI=TRUE
10475                 save_LIBS=$LIBS
10476                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10477                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10478                 LIBS=$save_LIBS
10479                 GSSAPI_LIBS=$LIBS
10480             fi
10481         esac
10483         if test -n "$with_libpq_path"; then
10484             SYSTEM_POSTGRESQL=TRUE
10485             postgres_interface="external libpq"
10486             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10487             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10488         else
10489             SYSTEM_POSTGRESQL=
10490             postgres_interface="internal"
10491             POSTGRESQL_LIB=""
10492             POSTGRESQL_INC="%OVERRIDE_ME%"
10493             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10494         fi
10495     fi
10497     AC_MSG_CHECKING([PostgreSQL C interface])
10498     AC_MSG_RESULT([$postgres_interface])
10500     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10501         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10502         save_CFLAGS=$CFLAGS
10503         save_CPPFLAGS=$CPPFLAGS
10504         save_LIBS=$LIBS
10505         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10506         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10507         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10508         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10509             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10510         CFLAGS=$save_CFLAGS
10511         CPPFLAGS=$save_CPPFLAGS
10512         LIBS=$save_LIBS
10513     fi
10514     BUILD_POSTGRESQL_SDBC=TRUE
10515 else
10516     AC_MSG_RESULT([no])
10518 AC_SUBST(WITH_KRB5)
10519 AC_SUBST(WITH_GSSAPI)
10520 AC_SUBST(GSSAPI_LIBS)
10521 AC_SUBST(KRB5_LIBS)
10522 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10523 AC_SUBST(SYSTEM_POSTGRESQL)
10524 AC_SUBST(POSTGRESQL_INC)
10525 AC_SUBST(POSTGRESQL_LIB)
10527 dnl ===================================================================
10528 dnl Check for Firebird stuff
10529 dnl ===================================================================
10530 ENABLE_FIREBIRD_SDBC=
10531 if test "$enable_firebird_sdbc" = "yes" ; then
10532     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10534     dnl ===================================================================
10535     dnl Check for system Firebird
10536     dnl ===================================================================
10537     AC_MSG_CHECKING([which Firebird to use])
10538     if test "$with_system_firebird" = "yes"; then
10539         AC_MSG_RESULT([external])
10540         SYSTEM_FIREBIRD=TRUE
10541         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10542         if test -z "$FIREBIRDCONFIG"; then
10543             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10544             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10545                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10546             ])
10547             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10548         else
10549             AC_MSG_NOTICE([fb_config found])
10550             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10551             AC_MSG_CHECKING([for Firebird Client library])
10552             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10553             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10554             FilterLibs "${FIREBIRD_LIBS}"
10555             FIREBIRD_LIBS="${filteredlibs}"
10556         fi
10557         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10558         AC_MSG_CHECKING([Firebird version])
10559         if test -n "${FIREBIRD_VERSION}"; then
10560             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10561             if test "$FIREBIRD_MAJOR" -ge "3"; then
10562                 AC_MSG_RESULT([OK])
10563             else
10564                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10565             fi
10566         else
10567             save_CFLAGS="${CFLAGS}"
10568             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10569             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10570 #if defined(FB_API_VER) && FB_API_VER == 30
10571 int fb_api_is_30(void) { return 0; }
10572 #else
10573 #error "Wrong Firebird API version"
10574 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10575             CFLAGS="$save_CFLAGS"
10576         fi
10577         ENABLE_FIREBIRD_SDBC=TRUE
10578         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10579     elif test "$enable_database_connectivity" = no; then
10580         AC_MSG_RESULT([none])
10581     elif test "$cross_compiling" = "yes"; then
10582         AC_MSG_RESULT([none])
10583     else
10584         dnl Embedded Firebird has version 3.0
10585         dnl We need libatomic_ops for any non X86/X64 system
10586         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10587             dnl ===================================================================
10588             dnl Check for system libatomic_ops
10589             dnl ===================================================================
10590             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10591             if test "$with_system_libatomic_ops" = "yes"; then
10592                 SYSTEM_LIBATOMIC_OPS=TRUE
10593                 AC_CHECK_HEADERS(atomic_ops.h, [],
10594                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10595             else
10596                 SYSTEM_LIBATOMIC_OPS=
10597                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10598                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10599                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10600             fi
10601         fi
10603         AC_MSG_RESULT([internal])
10604         SYSTEM_FIREBIRD=
10605         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10606         FIREBIRD_LIBS="-lfbclient"
10608         if test "$with_system_libtommath" = "yes"; then
10609             SYSTEM_LIBTOMMATH=TRUE
10610             dnl check for tommath presence
10611             save_LIBS=$LIBS
10612             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10613             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10614             LIBS=$save_LIBS
10615         else
10616             SYSTEM_LIBTOMMATH=
10617             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10618             LIBTOMMATH_LIBS="-ltommath"
10619             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10620         fi
10622         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10623         ENABLE_FIREBIRD_SDBC=TRUE
10624         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10625     fi
10627 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10628 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10629 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10630 AC_SUBST(LIBATOMIC_OPS_LIBS)
10631 AC_SUBST(SYSTEM_FIREBIRD)
10632 AC_SUBST(FIREBIRD_CFLAGS)
10633 AC_SUBST(FIREBIRD_LIBS)
10634 AC_SUBST(SYSTEM_LIBTOMMATH)
10635 AC_SUBST(LIBTOMMATH_CFLAGS)
10636 AC_SUBST(LIBTOMMATH_LIBS)
10638 dnl ===================================================================
10639 dnl Check for system curl
10640 dnl ===================================================================
10641 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10643 if test "$enable_curl" = "yes" -a "$with_system_curl" != "yes" -a "$with_gssapi" != "no"; then
10644     if test "$_os" != "WINNT"; then
10645         WITH_GSSAPI=TRUE
10646         save_LIBS=$LIBS
10647         AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10648             [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10649         GSSAPI_LIBS=$LIBS
10650         LIBS=$save_LIBS
10651     fi
10654 dnl ===================================================================
10655 dnl Check for system boost
10656 dnl ===================================================================
10657 AC_MSG_CHECKING([which boost to use])
10658 if test "$with_system_boost" = "yes"; then
10659     AC_MSG_RESULT([external])
10660     SYSTEM_BOOST=TRUE
10661     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10662     AX_BOOST_DATE_TIME
10663     AX_BOOST_FILESYSTEM
10664     AX_BOOST_IOSTREAMS
10665     AX_BOOST_LOCALE
10666     AC_LANG_PUSH([C++])
10667     save_CXXFLAGS=$CXXFLAGS
10668     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10669     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10670        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10671     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10672        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10673     CXXFLAGS=$save_CXXFLAGS
10674     AC_LANG_POP([C++])
10675     # this is in m4/ax_boost_base.m4
10676     FilterLibs "${BOOST_LDFLAGS}"
10677     BOOST_LDFLAGS="${filteredlibs}"
10678 else
10679     AC_MSG_RESULT([internal])
10680     BUILD_TYPE="$BUILD_TYPE BOOST"
10681     SYSTEM_BOOST=
10682     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10683         # use warning-suppressing wrapper headers
10684         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10685     else
10686         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10687     fi
10689 AC_SUBST(SYSTEM_BOOST)
10691 dnl ===================================================================
10692 dnl Check for system mdds
10693 dnl ===================================================================
10694 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10695 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10697 dnl ===================================================================
10698 dnl Check for system dragonbox
10699 dnl ===================================================================
10700 AC_MSG_CHECKING([which dragonbox to use])
10701 if test "$with_system_dragonbox" = "yes"; then
10702     AC_MSG_RESULT([external])
10703     SYSTEM_DRAGONBOX=TRUE
10704     AC_LANG_PUSH([C++])
10705     save_CPPFLAGS=$CPPFLAGS
10706     # This is where upstream installs to, unfortunately no .pc or so...
10707     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10708     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10709     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10710        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10711     AC_LANG_POP([C++])
10712     CPPFLAGS=$save_CPPFLAGS
10713 else
10714     AC_MSG_RESULT([internal])
10715     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10716     SYSTEM_DRAGONBOX=
10718 AC_SUBST([SYSTEM_DRAGONBOX])
10719 AC_SUBST([DRAGONBOX_CFLAGS])
10721 dnl ===================================================================
10722 dnl Check for system frozen
10723 dnl ===================================================================
10724 AC_MSG_CHECKING([which frozen to use])
10725 if test "$with_system_frozen" = "yes"; then
10726     AC_MSG_RESULT([external])
10727     SYSTEM_FROZEN=TRUE
10728     AC_LANG_PUSH([C++])
10729     save_CPPFLAGS=$CPPFLAGS
10730     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10731        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10732     AC_LANG_POP([C++])
10733     CPPFLAGS=$save_CPPFLAGS
10734 else
10735     AC_MSG_RESULT([internal])
10736     BUILD_TYPE="$BUILD_TYPE FROZEN"
10737     SYSTEM_FROZEN=
10739 AC_SUBST([SYSTEM_FROZEN])
10740 AC_SUBST([FROZEN_CFLAGS])
10742 dnl ===================================================================
10743 dnl Check for system libfixmath
10744 dnl ===================================================================
10745 AC_MSG_CHECKING([which libfixmath to use])
10746 if test "$with_system_libfixmath" = "yes"; then
10747     AC_MSG_RESULT([external])
10748     SYSTEM_LIBFIXMATH=TRUE
10749     AC_LANG_PUSH([C++])
10750     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10751        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10752     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10753     AC_LANG_POP([C++])
10754 else
10755     AC_MSG_RESULT([internal])
10756     SYSTEM_LIBFIXMATH=
10758 AC_SUBST([SYSTEM_LIBFIXMATH])
10760 dnl ===================================================================
10761 dnl Check for system glm
10762 dnl ===================================================================
10763 AC_MSG_CHECKING([which glm to use])
10764 if test "$with_system_glm" = "yes"; then
10765     AC_MSG_RESULT([external])
10766     SYSTEM_GLM=TRUE
10767     AC_LANG_PUSH([C++])
10768     AC_CHECK_HEADER([glm/glm.hpp], [],
10769        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10770     AC_LANG_POP([C++])
10771 else
10772     AC_MSG_RESULT([internal])
10773     BUILD_TYPE="$BUILD_TYPE GLM"
10774     SYSTEM_GLM=
10775     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10777 AC_SUBST([GLM_CFLAGS])
10778 AC_SUBST([SYSTEM_GLM])
10780 dnl ===================================================================
10781 dnl Check for system odbc
10782 dnl ===================================================================
10783 AC_MSG_CHECKING([which odbc headers to use])
10784 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
10785     AC_MSG_RESULT([external])
10786     SYSTEM_ODBC_HEADERS=TRUE
10788     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10789         save_CPPFLAGS=$CPPFLAGS
10790         find_winsdk
10791         PathFormat "$winsdktest"
10792         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"
10793         AC_CHECK_HEADER(sqlext.h, [],
10794             [AC_MSG_ERROR(odbc not found. install odbc)],
10795             [#include <windows.h>])
10796         CPPFLAGS=$save_CPPFLAGS
10797     else
10798         AC_CHECK_HEADER(sqlext.h, [],
10799             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10800     fi
10801 elif test "$enable_database_connectivity" = no; then
10802     AC_MSG_RESULT([none])
10803 else
10804     AC_MSG_RESULT([internal])
10805     SYSTEM_ODBC_HEADERS=
10806     BUILD_TYPE="$BUILD_TYPE IODBC"
10808 AC_SUBST(SYSTEM_ODBC_HEADERS)
10810 dnl ===================================================================
10811 dnl Check for system NSS
10812 dnl ===================================================================
10813 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10814     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10815     AC_DEFINE(HAVE_FEATURE_NSS)
10816     ENABLE_NSS=TRUE
10817 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10818     with_tls=openssl
10820 AC_SUBST(ENABLE_NSS)
10822 dnl ===================================================================
10823 dnl Enable LDAP support
10824 dnl ===================================================================
10826 if test "$test_openldap" = yes; then
10827     AC_MSG_CHECKING([whether to enable LDAP support])
10828     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10829         AC_MSG_RESULT([yes])
10830         ENABLE_LDAP=TRUE
10831     else
10832         if test "$enable_ldap" != "yes"; then
10833             AC_MSG_RESULT([no])
10834         else
10835             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10836         fi
10837     fi
10839 dnl ===================================================================
10840 dnl Check for system openldap
10841 dnl ===================================================================
10843     if test "$ENABLE_LDAP" = TRUE; then
10844         AC_MSG_CHECKING([which openldap library to use])
10845         if test "$with_system_openldap" = yes; then
10846             AC_MSG_RESULT([external])
10847             SYSTEM_OPENLDAP=TRUE
10848             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10849             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10850             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10851         else
10852             AC_MSG_RESULT([internal])
10853             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10854         fi
10855     fi
10858 AC_SUBST(ENABLE_LDAP)
10859 AC_SUBST(SYSTEM_OPENLDAP)
10861 dnl ===================================================================
10862 dnl Check for TLS/SSL and cryptographic implementation to use
10863 dnl ===================================================================
10864 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10865 if test -n "$with_tls"; then
10866     case $with_tls in
10867     openssl)
10868         AC_DEFINE(USE_TLS_OPENSSL)
10869         TLS=OPENSSL
10870         AC_MSG_RESULT([$TLS])
10872         if test "$enable_openssl" != "yes"; then
10873             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10874         fi
10876         # warn that OpenSSL has been selected but not all TLS code has this option
10877         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10878         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10879         ;;
10880     nss)
10881         AC_DEFINE(USE_TLS_NSS)
10882         TLS=NSS
10883         AC_MSG_RESULT([$TLS])
10884         ;;
10885     no)
10886         AC_MSG_RESULT([none])
10887         AC_MSG_WARN([Skipping TLS/SSL])
10888         ;;
10889     *)
10890         AC_MSG_RESULT([])
10891         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10892 openssl - OpenSSL
10893 nss - Mozilla's Network Security Services (NSS)
10894     ])
10895         ;;
10896     esac
10897 else
10898     # default to using NSS, it results in smaller oox lib
10899     AC_DEFINE(USE_TLS_NSS)
10900     TLS=NSS
10901     AC_MSG_RESULT([$TLS])
10903 AC_SUBST(TLS)
10905 dnl ===================================================================
10906 dnl Check for system sane
10907 dnl ===================================================================
10908 AC_MSG_CHECKING([which sane header to use])
10909 if test "$with_system_sane" = "yes"; then
10910     AC_MSG_RESULT([external])
10911     AC_CHECK_HEADER(sane/sane.h, [],
10912       [AC_MSG_ERROR(sane not found. install sane)], [])
10913 else
10914     AC_MSG_RESULT([internal])
10915     BUILD_TYPE="$BUILD_TYPE SANE"
10918 dnl ===================================================================
10919 dnl Check for system icu
10920 dnl ===================================================================
10921 ICU_MAJOR=73
10922 ICU_MINOR=2
10923 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10924 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10925 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10926 if test "$SYSTEM_ICU" = TRUE; then
10927     AC_LANG_PUSH([C++])
10928     AC_MSG_CHECKING([for unicode/rbbi.h])
10929     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10930     AC_LANG_POP([C++])
10932     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10933     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10934     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10936     if test "$CROSS_COMPILING" != TRUE; then
10937         # using the system icu tools can lead to version confusion, use the
10938         # ones from the build environment when cross-compiling
10939         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10940         if test -z "$SYSTEM_GENBRK"; then
10941             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10942         fi
10943         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10944         if test -z "$SYSTEM_GENCCODE"; then
10945             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10946         fi
10947         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10948         if test -z "$SYSTEM_GENCMN"; then
10949             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10950         fi
10951     fi
10954 AC_SUBST(SYSTEM_GENBRK)
10955 AC_SUBST(SYSTEM_GENCCODE)
10956 AC_SUBST(SYSTEM_GENCMN)
10957 AC_SUBST(ICU_MAJOR)
10958 AC_SUBST(ICU_MINOR)
10960 dnl ==================================================================
10961 dnl CURL
10962 dnl ==================================================================
10963 if test "$enable_curl" = "yes"; then
10964     AC_DEFINE([HAVE_FEATURE_CURL])
10967 dnl ==================================================================
10968 dnl Breakpad
10969 dnl ==================================================================
10970 DEFAULT_CRASHDUMP_VALUE="true"
10971 AC_MSG_CHECKING([whether to enable breakpad])
10972 if test "$enable_breakpad" != yes; then
10973     AC_MSG_RESULT([no])
10974 else
10975     if test "$enable_curl" != "yes"; then
10976         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10977     fi
10978     AC_MSG_RESULT([yes])
10979     ENABLE_BREAKPAD="TRUE"
10980     AC_DEFINE(ENABLE_BREAKPAD)
10981     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10982     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10984     AC_MSG_CHECKING([for disable crash dump])
10985     if test "$enable_crashdump" = no; then
10986         DEFAULT_CRASHDUMP_VALUE="false"
10987         AC_MSG_RESULT([yes])
10988     else
10989        AC_MSG_RESULT([no])
10990     fi
10992     AC_MSG_CHECKING([for crashreport config])
10993     if test "$with_symbol_config" = "no"; then
10994         BREAKPAD_SYMBOL_CONFIG="invalid"
10995         AC_MSG_RESULT([no])
10996     else
10997         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10998         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10999         AC_MSG_RESULT([yes])
11000     fi
11001     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
11003 AC_SUBST(ENABLE_BREAKPAD)
11004 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
11006 dnl ==================================================================
11007 dnl libcmis
11008 dnl ==================================================================
11009 if test "$enable_libcmis" = "yes"; then
11010     if test "$enable_curl" != "yes"; then
11011         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
11012     fi
11015 dnl ===================================================================
11016 dnl Orcus
11017 dnl ===================================================================
11018 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
11019 if test "$with_system_orcus" != "yes"; then
11020     if test "$SYSTEM_BOOST" = "TRUE"; then
11021         dnl Link with Boost.System
11022         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
11023         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
11024         dnl in documentation has no effect.
11025         AX_BOOST_SYSTEM
11026     fi
11028 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
11029 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
11030 AC_SUBST([BOOST_SYSTEM_LIB])
11031 AC_SUBST(SYSTEM_LIBORCUS)
11033 dnl ===================================================================
11034 dnl HarfBuzz
11035 dnl ===================================================================
11036 harfbuzz_required_version=5.1.0
11038 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
11039 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
11040 case "$_os" in
11041     Linux)
11042         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
11043         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
11044         ;;
11045     *)
11046         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
11047         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
11048         ;;
11049 esac
11050 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
11051 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
11053 if test "$COM" = "MSC"; then # override the above
11054     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
11055     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
11058 if test "$with_system_harfbuzz" = "yes"; then
11059     if test "$with_system_graphite" = "no"; then
11060         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
11061     fi
11062     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
11063     save_LIBS="$LIBS"
11064     save_CFLAGS="$CFLAGS"
11065     LIBS="$LIBS $HARFBUZZ_LIBS"
11066     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
11067     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
11068     LIBS="$save_LIBS"
11069     CFLAGS="$save_CFLAGS"
11070 else
11071     if test "$with_system_graphite" = "yes"; then
11072         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
11073     fi
11076 if test "$USING_X11" = TRUE; then
11077     AC_PATH_X
11078     AC_PATH_XTRA
11079     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11081     if test -z "$x_includes"; then
11082         x_includes="default_x_includes"
11083     fi
11084     if test -z "$x_libraries"; then
11085         x_libraries="default_x_libraries"
11086     fi
11087     CFLAGS="$CFLAGS $X_CFLAGS"
11088     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11089     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11090 else
11091     x_includes="no_x_includes"
11092     x_libraries="no_x_libraries"
11095 if test "$USING_X11" = TRUE; then
11096     dnl ===================================================================
11097     dnl Check for extension headers
11098     dnl ===================================================================
11099     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11100      [#include <X11/extensions/shape.h>])
11102     # vcl needs ICE and SM
11103     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11104     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11105         [AC_MSG_ERROR(ICE library not found)])
11106     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11107     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11108         [AC_MSG_ERROR(SM library not found)])
11111 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11112     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11113     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11116 dnl ===================================================================
11117 dnl Check for system Xrender
11118 dnl ===================================================================
11119 AC_MSG_CHECKING([whether to use Xrender])
11120 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11121     AC_MSG_RESULT([yes])
11122     PKG_CHECK_MODULES(XRENDER, xrender)
11123     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11124     FilterLibs "${XRENDER_LIBS}"
11125     XRENDER_LIBS="${filteredlibs}"
11126     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11127       [AC_MSG_ERROR(libXrender not found or functional)], [])
11128     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11129       [AC_MSG_ERROR(Xrender not found. install X)], [])
11130 else
11131     AC_MSG_RESULT([no])
11133 AC_SUBST(XRENDER_CFLAGS)
11134 AC_SUBST(XRENDER_LIBS)
11136 dnl ===================================================================
11137 dnl Check for XRandr
11138 dnl ===================================================================
11139 AC_MSG_CHECKING([whether to enable RandR support])
11140 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11141     AC_MSG_RESULT([yes])
11142     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11143     if test "$ENABLE_RANDR" != "TRUE"; then
11144         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11145                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11146         XRANDR_CFLAGS=" "
11147         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11148           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11149         XRANDR_LIBS="-lXrandr "
11150         ENABLE_RANDR="TRUE"
11151     fi
11152     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11153     FilterLibs "${XRANDR_LIBS}"
11154     XRANDR_LIBS="${filteredlibs}"
11155 else
11156     ENABLE_RANDR=""
11157     AC_MSG_RESULT([no])
11159 AC_SUBST(XRANDR_CFLAGS)
11160 AC_SUBST(XRANDR_LIBS)
11161 AC_SUBST(ENABLE_RANDR)
11163 if test -z "$with_webdav"; then
11164     with_webdav=$test_webdav
11167 AC_MSG_CHECKING([for WebDAV support])
11168 case "$with_webdav" in
11170     AC_MSG_RESULT([no])
11171     WITH_WEBDAV=""
11172     ;;
11174     AC_MSG_RESULT([yes])
11175     # curl is already mandatory (almost) and checked elsewhere
11176     if test "$enable_curl" = "no"; then
11177         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11178     fi
11179     WITH_WEBDAV=TRUE
11180     ;;
11181 esac
11182 AC_SUBST(WITH_WEBDAV)
11184 dnl ===================================================================
11185 dnl Check for disabling cve_tests
11186 dnl ===================================================================
11187 AC_MSG_CHECKING([whether to execute CVE tests])
11188 if test "$enable_cve_tests" = "no"; then
11189     AC_MSG_RESULT([no])
11190     DISABLE_CVE_TESTS=TRUE
11191     AC_SUBST(DISABLE_CVE_TESTS)
11192 else
11193     AC_MSG_RESULT([yes])
11196 dnl ===================================================================
11197 dnl Check for system openssl
11198 dnl ===================================================================
11199 ENABLE_OPENSSL=
11200 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11201 if test "$enable_openssl" = "yes"; then
11202     AC_MSG_RESULT([no])
11203     ENABLE_OPENSSL=TRUE
11204     if test "$_os" = Darwin ; then
11205         # OpenSSL is deprecated when building for 10.7 or later.
11206         #
11207         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11208         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11210         with_system_openssl=no
11211         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11212     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11213             && test "$with_system_openssl" != "no"; then
11214         with_system_openssl=yes
11215         SYSTEM_OPENSSL=TRUE
11216         OPENSSL_CFLAGS=
11217         OPENSSL_LIBS="-lssl -lcrypto"
11218     else
11219         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11220         if test -n "${SYSTEM_OPENSSL}"; then
11221             AC_DEFINE([SYSTEM_OPENSSL])
11222         fi
11223     fi
11224     if test "$with_system_openssl" = "yes"; then
11225         AC_MSG_CHECKING([whether openssl supports SHA512])
11226         AC_LANG_PUSH([C])
11227         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11228             SHA512_CTX context;
11229 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11230         AC_LANG_POP(C)
11231     fi
11232 else
11233     AC_MSG_RESULT([yes])
11235     # warn that although OpenSSL is disabled, system libraries may depend on it
11236     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11237     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11240 AC_SUBST([ENABLE_OPENSSL])
11242 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11243     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11244         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11245         enable_cipher_openssl_backend=no
11246     else
11247         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11248     fi
11250 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11251 ENABLE_CIPHER_OPENSSL_BACKEND=
11252 if test "$enable_cipher_openssl_backend" = yes; then
11253     AC_MSG_RESULT([yes])
11254     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11255 else
11256     AC_MSG_RESULT([no])
11258 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11260 dnl ===================================================================
11261 dnl Select the crypto backends used by LO
11262 dnl ===================================================================
11264 if test "$build_crypto" = yes; then
11265     if test "$OS" = WNT; then
11266         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11267         AC_DEFINE([USE_CRYPTO_MSCAPI])
11268     elif test "$ENABLE_NSS" = TRUE; then
11269         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11270         AC_DEFINE([USE_CRYPTO_NSS])
11271     fi
11274 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11275 if test "$COM" = "MSC"; then
11276     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11277 else
11278     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11280 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11282 dnl ===================================================================
11283 dnl Check for system redland
11284 dnl ===================================================================
11285 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11286 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11287 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11288 if test "$with_system_redland" = "yes"; then
11289     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11290             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11291 else
11292     RAPTOR_MAJOR="0"
11293     RASQAL_MAJOR="3"
11294     REDLAND_MAJOR="0"
11296 AC_SUBST(RAPTOR_MAJOR)
11297 AC_SUBST(RASQAL_MAJOR)
11298 AC_SUBST(REDLAND_MAJOR)
11300 dnl ===================================================================
11301 dnl Check for system hunspell
11302 dnl ===================================================================
11303 AC_MSG_CHECKING([which libhunspell to use])
11304 if test "$with_system_hunspell" = "yes"; then
11305     AC_MSG_RESULT([external])
11306     SYSTEM_HUNSPELL=TRUE
11307     AC_LANG_PUSH([C++])
11308     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11309     if test "$HUNSPELL_PC" != "TRUE"; then
11310         AC_CHECK_HEADER(hunspell.hxx, [],
11311             [
11312             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11313             [AC_MSG_ERROR(hunspell headers not found.)], [])
11314             ], [])
11315         AC_CHECK_LIB([hunspell], [main], [:],
11316            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11317         HUNSPELL_LIBS=-lhunspell
11318     fi
11319     AC_LANG_POP([C++])
11320     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11321     FilterLibs "${HUNSPELL_LIBS}"
11322     HUNSPELL_LIBS="${filteredlibs}"
11323 else
11324     AC_MSG_RESULT([internal])
11325     SYSTEM_HUNSPELL=
11326     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11327     if test "$COM" = "MSC"; then
11328         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11329     else
11330         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11331     fi
11332     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11334 AC_SUBST(SYSTEM_HUNSPELL)
11335 AC_SUBST(HUNSPELL_CFLAGS)
11336 AC_SUBST(HUNSPELL_LIBS)
11338 dnl ===================================================================
11339 dnl Check for system zxcvbn
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which zxcvbn to use])
11342 if test "$with_system_zxcvbn" = "yes"; then
11343     AC_MSG_RESULT([external])
11344     SYSTEM_ZXCVBN=TRUE
11345     AC_CHECK_HEADER(zxcvbn.h, [],
11346        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11347     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11348         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11349 else
11350    AC_MSG_RESULT([internal])
11351    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11352    SYSTEM_ZXCVBN=
11354 AC_SUBST(SYSTEM_ZXCVBN)
11356 dnl ===================================================================
11357 dnl Check for system zxing
11358 dnl ===================================================================
11359 AC_MSG_CHECKING([whether to use zxing])
11360 if test "$enable_zxing" = "no"; then
11361     AC_MSG_RESULT([no])
11362     ENABLE_ZXING=
11363     SYSTEM_ZXING=
11364 else
11365     AC_MSG_RESULT([yes])
11366     ENABLE_ZXING=TRUE
11367     AC_MSG_CHECKING([which libzxing to use])
11368     if test "$with_system_zxing" = "yes"; then
11369         AC_MSG_RESULT([external])
11370         SYSTEM_ZXING=TRUE
11371         ZXING_CFLAGS=
11372         AC_LANG_PUSH([C++])
11373         save_CXXFLAGS=$CXXFLAGS
11374         save_IFS=$IFS
11375         IFS=$P_SEP
11376         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11377             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11378             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11379             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11380             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11381             dnl unsetting IFS."):
11382             IFS=$save_IFS
11383             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11384             dnl ignore them here:
11385             if test -z "$i"; then
11386                 continue
11387             fi
11388             dnl TODO: White space in $i would cause problems:
11389             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11390             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11391                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11392         done
11393         CXXFLAGS=$save_CXXFLAGS
11394         if test -z "$ZXING_CFLAGS"; then
11395             AC_MSG_ERROR(zxing headers not found.)
11396         fi
11397         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11398             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11399             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11400         AC_LANG_POP([C++])
11401         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11402         FilterLibs "${ZXING_LIBS}"
11403         ZXING_LIBS="${filteredlibs}"
11404     else
11405         AC_MSG_RESULT([internal])
11406         SYSTEM_ZXING=
11407         BUILD_TYPE="$BUILD_TYPE ZXING"
11408         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11409     fi
11410     if test "$ENABLE_ZXING" = TRUE; then
11411         AC_DEFINE(ENABLE_ZXING)
11412     fi
11413     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11414     AC_LANG_PUSH([C++])
11415     save_CXXFLAGS=$CXXFLAGS
11416     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11417     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11418             #include <BitMatrix.h>
11419             #include <BitMatrixIO.h>
11420             int main(){
11421                 ZXing::BitMatrix matrix(1, 1);
11422                 matrix.set(0, 0, true);
11423                 ZXing::ToSVG(matrix);
11424                 return 0;
11425             }
11426         ])], [
11427             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11428             AC_MSG_RESULT([yes])
11429         ], [AC_MSG_RESULT([no])])
11430     CXXFLAGS=$save_CXXFLAGS
11431     AC_LANG_POP([C++])
11432     AC_SUBST(HAVE_ZXING_TOSVG)
11434 AC_SUBST(SYSTEM_ZXING)
11435 AC_SUBST(ENABLE_ZXING)
11436 AC_SUBST(ZXING_CFLAGS)
11437 AC_SUBST(ZXING_LIBS)
11439 dnl ===================================================================
11440 dnl Check for system box2d
11441 dnl ===================================================================
11442 AC_MSG_CHECKING([which box2d to use])
11443 if test "$with_system_box2d" = "yes"; then
11444     AC_MSG_RESULT([external])
11445     SYSTEM_BOX2D=TRUE
11446     AC_LANG_PUSH([C++])
11447     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11448         [BOX2D_H_FOUND='FALSE'])
11449     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11450         _BOX2D_LIB=box2d
11451         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11452     else
11453         # fail this. there's no other alternative to check when we are here.
11454         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11455             [AC_MSG_ERROR(box2d headers not found.)])
11456         _BOX2D_LIB=Box2D
11457         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11458     fi
11459     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11460         [ AC_MSG_ERROR(box2d library not found.) ], [])
11461     BOX2D_LIBS=-l$_BOX2D_LIB
11462     AC_LANG_POP([C++])
11463     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11464     FilterLibs "${BOX2D_LIBS}"
11465     BOX2D_LIBS="${filteredlibs}"
11466 else
11467     AC_MSG_RESULT([internal])
11468     SYSTEM_BOX2D=
11469     BUILD_TYPE="$BUILD_TYPE BOX2D"
11471 AC_SUBST(SYSTEM_BOX2D)
11472 AC_SUBST(BOX2D_CFLAGS)
11473 AC_SUBST(BOX2D_LIBS)
11475 dnl ===================================================================
11476 dnl Checking for altlinuxhyph
11477 dnl ===================================================================
11478 AC_MSG_CHECKING([which altlinuxhyph to use])
11479 if test "$with_system_altlinuxhyph" = "yes"; then
11480     AC_MSG_RESULT([external])
11481     SYSTEM_HYPH=TRUE
11482     AC_CHECK_HEADER(hyphen.h, [],
11483        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11484     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11485        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11486        [#include <hyphen.h>])
11487     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11488         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11489     if test -z "$HYPHEN_LIB"; then
11490         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11491            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11492     fi
11493     if test -z "$HYPHEN_LIB"; then
11494         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11495            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11496     fi
11497 else
11498     AC_MSG_RESULT([internal])
11499     SYSTEM_HYPH=
11500     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11501     if test "$COM" = "MSC"; then
11502         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11503     else
11504         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11505     fi
11507 AC_SUBST(SYSTEM_HYPH)
11508 AC_SUBST(HYPHEN_LIB)
11510 dnl ===================================================================
11511 dnl Checking for mythes
11512 dnl ===================================================================
11513 AC_MSG_CHECKING([which mythes to use])
11514 if test "$with_system_mythes" = "yes"; then
11515     AC_MSG_RESULT([external])
11516     SYSTEM_MYTHES=TRUE
11517     AC_LANG_PUSH([C++])
11518     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11519     if test "$MYTHES_PKGCONFIG" = "no"; then
11520         AC_CHECK_HEADER(mythes.hxx, [],
11521             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11522         AC_CHECK_LIB([mythes-1.2], [main], [:],
11523             [ MYTHES_FOUND=no], [])
11524     if test "$MYTHES_FOUND" = "no"; then
11525         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11526                 [ MYTHES_FOUND=no], [])
11527     fi
11528     if test "$MYTHES_FOUND" = "no"; then
11529         AC_MSG_ERROR([mythes library not found!.])
11530     fi
11531     fi
11532     AC_LANG_POP([C++])
11533     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11534     FilterLibs "${MYTHES_LIBS}"
11535     MYTHES_LIBS="${filteredlibs}"
11536 else
11537     AC_MSG_RESULT([internal])
11538     SYSTEM_MYTHES=
11539     BUILD_TYPE="$BUILD_TYPE MYTHES"
11540     if test "$COM" = "MSC"; then
11541         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11542     else
11543         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11544     fi
11546 AC_SUBST(SYSTEM_MYTHES)
11547 AC_SUBST(MYTHES_CFLAGS)
11548 AC_SUBST(MYTHES_LIBS)
11550 dnl ===================================================================
11551 dnl How should we build the linear programming solver ?
11552 dnl ===================================================================
11554 ENABLE_COINMP=
11555 AC_MSG_CHECKING([whether to build with CoinMP])
11556 if test "$enable_coinmp" != "no"; then
11557     ENABLE_COINMP=TRUE
11558     AC_MSG_RESULT([yes])
11559     if test "$with_system_coinmp" = "yes"; then
11560         SYSTEM_COINMP=TRUE
11561         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11562         FilterLibs "${COINMP_LIBS}"
11563         COINMP_LIBS="${filteredlibs}"
11564     else
11565         BUILD_TYPE="$BUILD_TYPE COINMP"
11566     fi
11567 else
11568     AC_MSG_RESULT([no])
11570 AC_SUBST(ENABLE_COINMP)
11571 AC_SUBST(SYSTEM_COINMP)
11572 AC_SUBST(COINMP_CFLAGS)
11573 AC_SUBST(COINMP_LIBS)
11575 ENABLE_LPSOLVE=
11576 AC_MSG_CHECKING([whether to build with lpsolve])
11577 if test "$enable_lpsolve" != "no"; then
11578     ENABLE_LPSOLVE=TRUE
11579     AC_MSG_RESULT([yes])
11580 else
11581     AC_MSG_RESULT([no])
11583 AC_SUBST(ENABLE_LPSOLVE)
11585 if test "$ENABLE_LPSOLVE" = TRUE; then
11586     AC_MSG_CHECKING([which lpsolve to use])
11587     if test "$with_system_lpsolve" = "yes"; then
11588         AC_MSG_RESULT([external])
11589         SYSTEM_LPSOLVE=TRUE
11590         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11591            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11592         save_LIBS=$LIBS
11593         # some systems need this. Like Ubuntu...
11594         AC_CHECK_LIB(m, floor)
11595         AC_CHECK_LIB(dl, dlopen)
11596         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11597             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11598         LIBS=$save_LIBS
11599     else
11600         AC_MSG_RESULT([internal])
11601         SYSTEM_LPSOLVE=
11602         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11603     fi
11605 AC_SUBST(SYSTEM_LPSOLVE)
11607 dnl ===================================================================
11608 dnl Checking for libexttextcat
11609 dnl ===================================================================
11610 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11611 if test "$with_system_libexttextcat" = "yes"; then
11612     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11614 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11616 dnl ===================================================================
11617 dnl Checking for libnumbertext
11618 dnl ===================================================================
11619 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11620 if test "$with_system_libnumbertext" = "yes"; then
11621     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11622     SYSTEM_LIBNUMBERTEXT=YES
11623 else
11624     SYSTEM_LIBNUMBERTEXT=
11626 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11627 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11629 dnl ***************************************
11630 dnl testing libc version for Linux...
11631 dnl ***************************************
11632 if test "$_os" = "Linux"; then
11633     AC_MSG_CHECKING([whether the libc is recent enough])
11634     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11635     #include <features.h>
11636     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11637     #error glibc >= 2.1 is required
11638     #endif
11639     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11642 dnl =========================================
11643 dnl Check for uuidgen
11644 dnl =========================================
11645 if test "$_os" = "WINNT"; then
11646     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11647     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11648     UUIDGEN=uuidgen.exe
11649     AC_SUBST(UUIDGEN)
11650 else
11651     AC_PATH_PROG([UUIDGEN], [uuidgen])
11652     if test -z "$UUIDGEN"; then
11653         AC_MSG_WARN([uuid is needed for building installation sets])
11654     fi
11657 dnl ***************************************
11658 dnl Checking for bison and flex
11659 dnl ***************************************
11660 AC_PATH_PROG(BISON, bison)
11661 if test -z "$BISON"; then
11662     AC_MSG_ERROR([no bison found in \$PATH, install it])
11663 else
11664     AC_MSG_CHECKING([the bison version])
11665     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11666     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11667     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11668     dnl cause
11669     dnl
11670     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]
11671     dnl   typedef union YYSTYPE
11672     dnl           ~~~~~~^~~~~~~
11673     dnl
11674     dnl while at least 3.4.1 is know to be good:
11675     if test "$COMPILER_PLUGINS" = TRUE; then
11676         if test "$_bison_longver" -lt 2004; then
11677             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11678         fi
11679     else
11680         if test "$_bison_longver" -lt 2000; then
11681             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11682         fi
11683     fi
11685 AC_SUBST([BISON])
11687 AC_PATH_PROG(FLEX, flex)
11688 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11689     FLEX=`cygpath -m $FLEX`
11691 if test -z "$FLEX"; then
11692     AC_MSG_ERROR([no flex found in \$PATH, install it])
11693 else
11694     AC_MSG_CHECKING([the flex version])
11695     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11696     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11697         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11698     fi
11700 AC_SUBST([FLEX])
11702 AC_PATH_PROG(DIFF, diff)
11703 if test -z "$DIFF"; then
11704     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11706 AC_SUBST([DIFF])
11708 AC_PATH_PROG(UNIQ, uniq)
11709 if test -z "$UNIQ"; then
11710     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11712 AC_SUBST([UNIQ])
11714 dnl ***************************************
11715 dnl Checking for patch
11716 dnl ***************************************
11717 AC_PATH_PROG(PATCH, patch)
11718 if test -z "$PATCH"; then
11719     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11722 dnl On Solaris or macOS, check if --with-gnu-patch was used
11723 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11724     if test -z "$with_gnu_patch"; then
11725         GNUPATCH=$PATCH
11726     else
11727         if test -x "$with_gnu_patch"; then
11728             GNUPATCH=$with_gnu_patch
11729         else
11730             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11731         fi
11732     fi
11734     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11735     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11736         AC_MSG_RESULT([yes])
11737     else
11738         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11739             AC_MSG_RESULT([no, but accepted (Apple patch)])
11740             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11741         else
11742             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11743         fi
11744     fi
11745 else
11746     GNUPATCH=$PATCH
11749 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11750     GNUPATCH=`cygpath -m $GNUPATCH`
11753 dnl We also need to check for --with-gnu-cp
11755 if test -z "$with_gnu_cp"; then
11756     # check the place where the good stuff is hidden on Solaris...
11757     if test -x /usr/gnu/bin/cp; then
11758         GNUCP=/usr/gnu/bin/cp
11759     else
11760         AC_PATH_PROGS(GNUCP, gnucp cp)
11761     fi
11762     if test -z $GNUCP; then
11763         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11764     fi
11765 else
11766     if test -x "$with_gnu_cp"; then
11767         GNUCP=$with_gnu_cp
11768     else
11769         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11770     fi
11773 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11774     GNUCP=`cygpath -m $GNUCP`
11777 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11778 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11779     AC_MSG_RESULT([yes])
11780 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11781     AC_MSG_RESULT([yes])
11782 else
11783     case "$build_os" in
11784     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11785         x_GNUCP=[\#]
11786         GNUCP=''
11787         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11788         ;;
11789     *)
11790         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11791         ;;
11792     esac
11795 AC_SUBST(GNUPATCH)
11796 AC_SUBST(GNUCP)
11797 AC_SUBST(x_GNUCP)
11799 dnl ***************************************
11800 dnl testing assembler path
11801 dnl ***************************************
11802 ML_EXE=""
11803 if test "$_os" = "WINNT"; then
11804     case "$WIN_HOST_ARCH" in
11805     x86) assembler=ml.exe ;;
11806     x64) assembler=ml64.exe ;;
11807     arm64) assembler=armasm64.exe ;;
11808     esac
11810     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11811     if test -f "$MSVC_HOST_PATH/$assembler"; then
11812         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11813         AC_MSG_RESULT([$ML_EXE])
11814     else
11815         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11816     fi
11819 AC_SUBST(ML_EXE)
11821 dnl ===================================================================
11822 dnl We need zip and unzip
11823 dnl ===================================================================
11824 AC_PATH_PROG(ZIP, zip)
11825 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11826 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11827     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],,)
11830 AC_PATH_PROG(UNZIP, unzip)
11831 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11833 dnl ===================================================================
11834 dnl Zip must be a specific type for different build types.
11835 dnl ===================================================================
11836 if test $build_os = cygwin; then
11837     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11838         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11839     fi
11842 dnl ===================================================================
11843 dnl We need touch with -h option support.
11844 dnl ===================================================================
11845 AC_PATH_PROG(TOUCH, touch)
11846 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11847 touch "$WARNINGS_FILE"
11848 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11849     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],,)
11852 dnl ===================================================================
11853 dnl Check for system epoxy
11854 dnl ===================================================================
11855 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11856 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11858 dnl ===================================================================
11859 dnl Show which vclplugs will be built.
11860 dnl ===================================================================
11861 R=""
11863 libo_ENABLE_VCLPLUG([gen])
11864 libo_ENABLE_VCLPLUG([gtk3])
11865 libo_ENABLE_VCLPLUG([gtk3_kde5])
11866 libo_ENABLE_VCLPLUG([gtk4])
11867 libo_ENABLE_VCLPLUG([kf5])
11868 libo_ENABLE_VCLPLUG([kf6])
11869 libo_ENABLE_VCLPLUG([qt5])
11870 libo_ENABLE_VCLPLUG([qt6])
11872 if test "$_os" = "WINNT"; then
11873     R="$R win"
11874 elif test "$_os" = "Darwin"; then
11875     R="$R osx"
11876 elif test "$_os" = "iOS"; then
11877     R="ios"
11878 elif test "$_os" = Android; then
11879     R="android"
11882 build_vcl_plugins="$R"
11883 if test -z "$build_vcl_plugins"; then
11884     build_vcl_plugins=" none"
11886 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11887 VCL_PLUGIN_INFO=$R
11888 AC_SUBST([VCL_PLUGIN_INFO])
11890 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11891     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11894 dnl ===================================================================
11895 dnl Check for GTK libraries
11896 dnl ===================================================================
11898 GTK3_CFLAGS=""
11899 GTK3_LIBS=""
11900 ENABLE_GTKTILEDVIEWER=""
11901 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11902     if test "$with_system_cairo" = no; then
11903         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.'
11904     fi
11905     : ${with_system_cairo:=yes}
11906     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)
11907     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11908     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11909     FilterLibs "${GTK3_LIBS}"
11910     GTK3_LIBS="${filteredlibs}"
11912     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11913     if test "$with_system_epoxy" != "yes"; then
11914         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11915         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11916                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11917     fi
11918 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11919     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11920     if test "$build_os" = "cygwin"; then
11921         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11922         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11923     fi
11925     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11926     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11927     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11928     FilterLibs "${GTK3_LIBS}"
11929     GTK3_LIBS="${filteredlibs}"
11930     ENABLE_GTKTILEDVIEWER="yes"
11932 AC_SUBST(GTK3_LIBS)
11933 AC_SUBST(GTK3_CFLAGS)
11934 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11936 GTK4_CFLAGS=""
11937 GTK4_LIBS=""
11938 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11939     if test "$with_system_cairo" = no; then
11940         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11941     fi
11942     : ${with_system_cairo:=yes}
11943     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11944     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11945     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11946     FilterLibs "${GTK4_LIBS}"
11947     GTK4_LIBS="${filteredlibs}"
11949     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11950     if test "$with_system_epoxy" != "yes"; then
11951         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11952         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11953                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11954     fi
11956 AC_SUBST(GTK4_LIBS)
11957 AC_SUBST(GTK4_CFLAGS)
11959 if test "$enable_introspection" = yes; then
11960     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11961         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11962     else
11963         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11964     fi
11967 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11968 if ! test "$ENABLE_GTK3" = TRUE; then
11969     if test "$enable_atspi_tests" = yes; then
11970         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11971     fi
11972     enable_atspi_tests=no
11974 if ! test "$enable_atspi_tests" = no; then
11975     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11976     if ! test "$XVFB_RUN" = no; then
11977         dnl make sure the found xvfb-run actually works
11978         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11979         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11980             AC_MSG_RESULT([yes])
11981         else
11982             AC_MSG_RESULT([no])
11983             XVFB_RUN=no
11984         fi
11985     fi
11986     if test "$XVFB_RUN" = no; then
11987         if test "$enable_atspi_tests" = yes; then
11988             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11989         fi
11990         enable_atspi_tests=no
11991     fi
11993 if ! test "$enable_atspi_tests" = no; then
11994     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11995     if test "$DBUS_LAUNCH" = no; then
11996         if test "$enable_atspi_tests" = yes; then
11997             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11998         fi
11999         enable_atspi_tests=no
12000     fi
12002 if ! test "$enable_atspi_tests" = no; then
12003     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
12004                       [if test "$enable_atspi_tests" = yes; then
12005                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
12006                        else
12007                            enable_atspi_tests=no
12008                        fi])
12010 if ! test "x$enable_atspi_tests" = xno; then
12011     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
12012                       [have_atspi_scroll_to=1],
12013                       [have_atspi_scroll_to=0])
12014     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
12015                        [Whether AT-SPI2 has the scrollTo API])
12017 ENABLE_ATSPI_TESTS=
12018 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
12019 AC_SUBST([ENABLE_ATSPI_TESTS])
12021 dnl ===================================================================
12022 dnl check for dbus support
12023 dnl ===================================================================
12024 ENABLE_DBUS=""
12025 DBUS_CFLAGS=""
12026 DBUS_LIBS=""
12027 DBUS_GLIB_CFLAGS=""
12028 DBUS_GLIB_LIBS=""
12029 DBUS_HAVE_GLIB=""
12031 if test "$enable_dbus" = "no"; then
12032     test_dbus=no
12035 AC_MSG_CHECKING([whether to enable DBUS support])
12036 if test "$test_dbus" = "yes"; then
12037     ENABLE_DBUS="TRUE"
12038     AC_MSG_RESULT([yes])
12039     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
12040     AC_DEFINE(ENABLE_DBUS)
12041     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12042     FilterLibs "${DBUS_LIBS}"
12043     DBUS_LIBS="${filteredlibs}"
12045     # Glib is needed for BluetoothServer
12046     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
12047     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
12048         [
12049             DBUS_HAVE_GLIB="TRUE"
12050             AC_DEFINE(DBUS_HAVE_GLIB,1)
12051         ],
12052         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
12053     )
12054 else
12055     AC_MSG_RESULT([no])
12058 AC_SUBST(ENABLE_DBUS)
12059 AC_SUBST(DBUS_CFLAGS)
12060 AC_SUBST(DBUS_LIBS)
12061 AC_SUBST(DBUS_GLIB_CFLAGS)
12062 AC_SUBST(DBUS_GLIB_LIBS)
12063 AC_SUBST(DBUS_HAVE_GLIB)
12065 AC_MSG_CHECKING([whether to enable Impress remote control])
12066 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12067     AC_MSG_RESULT([yes])
12068     ENABLE_SDREMOTE=TRUE
12069     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
12070         <true/>"
12071     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12073     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12074         # The Bluetooth code doesn't compile with macOS SDK 10.15
12075         if test "$enable_sdremote_bluetooth" = yes; then
12076             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12077         fi
12078         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12079         enable_sdremote_bluetooth=no
12080     fi
12081     # If not explicitly enabled or disabled, default
12082     if test -z "$enable_sdremote_bluetooth"; then
12083         case "$OS" in
12084         LINUX|MACOSX|WNT)
12085             # Default to yes for these
12086             enable_sdremote_bluetooth=yes
12087             ;;
12088         *)
12089             # otherwise no
12090             enable_sdremote_bluetooth=no
12091             ;;
12092         esac
12093     fi
12094     # $enable_sdremote_bluetooth is guaranteed non-empty now
12096     if test "$enable_sdremote_bluetooth" != "no"; then
12097         if test "$OS" = "LINUX"; then
12098             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12099                 AC_MSG_RESULT([yes])
12100                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12101                 dnl ===================================================================
12102                 dnl Check for system bluez
12103                 dnl ===================================================================
12104                 AC_MSG_CHECKING([which Bluetooth header to use])
12105                 if test "$with_system_bluez" = "yes"; then
12106                     AC_MSG_RESULT([external])
12107                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12108                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12109                     SYSTEM_BLUEZ=TRUE
12110                 else
12111                     AC_MSG_RESULT([internal])
12112                     SYSTEM_BLUEZ=
12113                 fi
12114             else
12115                 AC_MSG_RESULT([no, dbus disabled])
12116                 ENABLE_SDREMOTE_BLUETOOTH=
12117                 SYSTEM_BLUEZ=
12118             fi
12119         else
12120             AC_MSG_RESULT([yes])
12121             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12122             SYSTEM_BLUEZ=
12123             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12124         <key>com.apple.security.device.bluetooth</key>
12125         <true/>"
12126         fi
12127     else
12128         AC_MSG_RESULT([no])
12129         ENABLE_SDREMOTE_BLUETOOTH=
12130         SYSTEM_BLUEZ=
12131     fi
12132 else
12133     ENABLE_SDREMOTE=
12134     SYSTEM_BLUEZ=
12135     AC_MSG_RESULT([no])
12137 AC_SUBST(ENABLE_SDREMOTE)
12138 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12139 AC_SUBST(SDREMOTE_ENTITLEMENT)
12140 AC_SUBST(SYSTEM_BLUEZ)
12142 dnl ===================================================================
12143 dnl Check whether to enable GIO support
12144 dnl ===================================================================
12145 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12146     AC_MSG_CHECKING([whether to enable GIO support])
12147     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12148         dnl Need at least 2.26 for the dbus support.
12149         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12150                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12151         if test "$ENABLE_GIO" = "TRUE"; then
12152             AC_DEFINE(ENABLE_GIO)
12153             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12154             FilterLibs "${GIO_LIBS}"
12155             GIO_LIBS="${filteredlibs}"
12156         fi
12157     else
12158         AC_MSG_RESULT([no])
12159     fi
12161 AC_SUBST(ENABLE_GIO)
12162 AC_SUBST(GIO_CFLAGS)
12163 AC_SUBST(GIO_LIBS)
12166 dnl ===================================================================
12168 SPLIT_APP_MODULES=""
12169 if test "$enable_split_app_modules" = "yes"; then
12170     SPLIT_APP_MODULES="TRUE"
12172 AC_SUBST(SPLIT_APP_MODULES)
12174 SPLIT_OPT_FEATURES=""
12175 if test "$enable_split_opt_features" = "yes"; then
12176     SPLIT_OPT_FEATURES="TRUE"
12178 AC_SUBST(SPLIT_OPT_FEATURES)
12180 dnl ===================================================================
12181 dnl Check whether the GStreamer libraries are available.
12182 dnl ===================================================================
12184 ENABLE_GSTREAMER_1_0=""
12186 if test "$test_gstreamer_1_0" = yes; then
12188     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12189     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12190         ENABLE_GSTREAMER_1_0="TRUE"
12191         AC_MSG_RESULT([yes])
12192         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12193         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12194         FilterLibs "${GSTREAMER_1_0_LIBS}"
12195         GSTREAMER_1_0_LIBS="${filteredlibs}"
12196         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12197     else
12198         AC_MSG_RESULT([no])
12199     fi
12201 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12202 AC_SUBST(GSTREAMER_1_0_LIBS)
12203 AC_SUBST(ENABLE_GSTREAMER_1_0)
12205 ENABLE_OPENGL_TRANSITIONS=
12206 ENABLE_OPENGL_CANVAS=
12207 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12208    : # disable
12209 elif test "$_os" = "Darwin"; then
12210     # We use frameworks on macOS, no need for detail checks
12211     ENABLE_OPENGL_TRANSITIONS=TRUE
12212     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12213     ENABLE_OPENGL_CANVAS=TRUE
12214 elif test $_os = WINNT; then
12215     ENABLE_OPENGL_TRANSITIONS=TRUE
12216     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12217     ENABLE_OPENGL_CANVAS=TRUE
12218 else
12219     if test "$USING_X11" = TRUE; then
12220         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12221         ENABLE_OPENGL_TRANSITIONS=TRUE
12222         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12223         ENABLE_OPENGL_CANVAS=TRUE
12224     fi
12227 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12228 AC_SUBST(ENABLE_OPENGL_CANVAS)
12230 dnl =================================================
12231 dnl Check whether to build with OpenCL support.
12232 dnl =================================================
12234 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12235     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12236     # platform (optional at run-time, used through clew).
12237     BUILD_TYPE="$BUILD_TYPE OPENCL"
12238     AC_DEFINE(HAVE_FEATURE_OPENCL)
12241 dnl =================================================
12242 dnl Check whether to build with dconf support.
12243 dnl =================================================
12245 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12246     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12247         if test "$enable_dconf" = yes; then
12248             AC_MSG_ERROR([dconf not found])
12249         else
12250             enable_dconf=no
12251         fi])
12253 AC_MSG_CHECKING([whether to enable dconf])
12254 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12255     DCONF_CFLAGS=
12256     DCONF_LIBS=
12257     ENABLE_DCONF=
12258     AC_MSG_RESULT([no])
12259 else
12260     ENABLE_DCONF=TRUE
12261     AC_DEFINE(ENABLE_DCONF)
12262     AC_MSG_RESULT([yes])
12264 AC_SUBST([DCONF_CFLAGS])
12265 AC_SUBST([DCONF_LIBS])
12266 AC_SUBST([ENABLE_DCONF])
12268 # pdf import?
12269 AC_MSG_CHECKING([whether to build the PDF import feature])
12270 ENABLE_PDFIMPORT=
12271 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12272     AC_MSG_RESULT([yes])
12273     ENABLE_PDFIMPORT=TRUE
12274     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12275 else
12276     AC_MSG_RESULT([no])
12279 # Pdfium?
12280 AC_MSG_CHECKING([whether to build PDFium])
12281 ENABLE_PDFIUM=
12282 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12283     AC_MSG_RESULT([yes])
12284     ENABLE_PDFIUM=TRUE
12285     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12286 else
12287     AC_MSG_RESULT([no])
12289 AC_SUBST(ENABLE_PDFIUM)
12291 if test "$ENABLE_PDFIUM" = "TRUE"; then
12292     AC_MSG_CHECKING([which OpenJPEG library to use])
12293     if test "$with_system_openjpeg" = "yes"; then
12294         SYSTEM_OPENJPEG2=TRUE
12295         AC_MSG_RESULT([external])
12296         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12297         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12298         FilterLibs "${OPENJPEG2_LIBS}"
12299         OPENJPEG2_LIBS="${filteredlibs}"
12300     else
12301         SYSTEM_OPENJPEG2=FALSE
12302         AC_MSG_RESULT([internal])
12303     fi
12305     AC_MSG_CHECKING([which Abseil library to use])
12306     if test "$with_system_abseil" = "yes"; then
12307         AC_MSG_RESULT([external])
12308         SYSTEM_ABSEIL=TRUE
12309         AC_LANG_PUSH([C++])
12310         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12311                         [AC_MSG_ERROR(abseil headers not found.)], [])
12312         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12313                         [AC_MSG_ERROR(abseil headers not found.)], [])
12314         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12315                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12316         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12317                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12318         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12319         AC_LANG_POP([C++])
12320         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12321         FilterLibs "${ABSEIL_LIBS}"
12322         ABSEIL_LIBS="${filteredlibs}"
12323     else
12324         AC_MSG_RESULT([internal])
12325     fi
12327 AC_SUBST(SYSTEM_OPENJPEG2)
12328 AC_SUBST(SYSTEM_ABSEIL)
12329 AC_SUBST(ABSEIL_CFLAGS)
12330 AC_SUBST(ABSEIL_LIBS)
12332 dnl ===================================================================
12333 dnl Check for poppler
12334 dnl ===================================================================
12335 ENABLE_POPPLER=
12336 AC_MSG_CHECKING([whether to build Poppler])
12337 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12338     AC_MSG_RESULT([yes])
12339     ENABLE_POPPLER=TRUE
12340     AC_DEFINE(HAVE_FEATURE_POPPLER)
12341 else
12342     AC_MSG_RESULT([no])
12344 AC_SUBST(ENABLE_POPPLER)
12346 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12347     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12350 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12351     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12354 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12355     dnl ===================================================================
12356     dnl Check for system poppler
12357     dnl ===================================================================
12358     AC_MSG_CHECKING([which PDF import poppler to use])
12359     if test "$with_system_poppler" = "yes"; then
12360         AC_MSG_RESULT([external])
12361         SYSTEM_POPPLER=TRUE
12362         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12363         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12364         FilterLibs "${POPPLER_LIBS}"
12365         POPPLER_LIBS="${filteredlibs}"
12366     else
12367         AC_MSG_RESULT([internal])
12368         SYSTEM_POPPLER=
12369         BUILD_TYPE="$BUILD_TYPE POPPLER"
12370     fi
12371     AC_DEFINE([ENABLE_PDFIMPORT],1)
12373 AC_SUBST(ENABLE_PDFIMPORT)
12374 AC_SUBST(SYSTEM_POPPLER)
12375 AC_SUBST(POPPLER_CFLAGS)
12376 AC_SUBST(POPPLER_LIBS)
12378 # Skia?
12379 ENABLE_SKIA=
12380 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12381     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12382     if test "$SYSTEM_FREETYPE" = TRUE; then
12383         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12384             [skia_freetype_ok=yes],
12385             [skia_freetype_ok=no])
12386     else # internal is ok
12387         skia_freetype_ok=yes
12388     fi
12389     AC_MSG_CHECKING([whether to build Skia])
12390     if test "$skia_freetype_ok" = "yes"; then
12391         if test "$enable_skia" = "debug"; then
12392             AC_MSG_RESULT([yes (debug)])
12393             ENABLE_SKIA_DEBUG=TRUE
12394         else
12395             AC_MSG_RESULT([yes])
12396             ENABLE_SKIA_DEBUG=
12397         fi
12398         ENABLE_SKIA=TRUE
12399         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12400             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12401         fi
12403         AC_DEFINE(HAVE_FEATURE_SKIA)
12404         BUILD_TYPE="$BUILD_TYPE SKIA"
12406         if test "$OS" = "MACOSX"; then
12407             AC_DEFINE(SK_GANESH,1)
12408             AC_DEFINE(SK_METAL,1)
12409             SKIA_GPU=METAL
12410             AC_SUBST(SKIA_GPU)
12411         else
12412             AC_DEFINE(SK_GANESH,1)
12413             AC_DEFINE(SK_VULKAN,1)
12414             SKIA_GPU=VULKAN
12415             AC_SUBST(SKIA_GPU)
12416         fi
12417     else
12418         AC_MSG_RESULT([no (freetype too old)])
12419         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12420     fi
12422 else
12423     AC_MSG_CHECKING([whether to build Skia])
12424     AC_MSG_RESULT([no])
12426 AC_SUBST(ENABLE_SKIA)
12427 AC_SUBST(ENABLE_SKIA_DEBUG)
12429 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12430 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12431 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12432 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12433 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12434 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12435 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12436 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12437 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12438 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12439 LO_CLANG_VERSION=
12440 HAVE_LO_CLANG_DLLEXPORTINLINES=
12442 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12443     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12444         AC_MSG_CHECKING([for Clang])
12445         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12446     else
12447         if test "$_os" = "WINNT"; then
12448             AC_MSG_CHECKING([for clang-cl])
12449             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12450                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12451             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12452                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12453             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12454                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12455             fi
12456             if test -n "$LO_CLANG_CC"; then
12457                 dnl explicitly set -m32/-m64
12458                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12459                 LO_CLANG_CXX="$LO_CLANG_CC"
12460                 AC_MSG_RESULT([$LO_CLANG_CC])
12461             else
12462                 AC_MSG_RESULT([no])
12463             fi
12465             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12466             echo "#include <stdlib.h>" > conftest.c
12467             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12468                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12469             rm -f conftest.c conftest.obj
12470             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12471                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12472             else
12473                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12474             fi
12475         else
12476             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12477             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12478         fi
12479     fi
12480     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12481         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12482         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12483         if test "$LO_CLANG_VERSION" -lt 50002; then
12484             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12485             LO_CLANG_CC=
12486             LO_CLANG_CXX=
12487         fi
12488     fi
12489     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12490         save_CXX="$CXX"
12491         CXX="$LO_CLANG_CXX"
12492         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12493         AC_LANG_PUSH([C++])
12494         save_CXXFLAGS=$CXXFLAGS
12495         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12496         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12497                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12498                 AC_MSG_RESULT([yes])
12499             ], [AC_MSG_RESULT([no])])
12500         CXXFLAGS=$save_CXXFLAGS
12501         AC_LANG_POP([C++])
12502         CXX="$save_CXX"
12503         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12504             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.])
12505         fi
12506     fi
12507     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12508         # Skia is the default on Windows and Mac, so hard-require Clang.
12509         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12510         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12511             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12512         else
12513             AC_MSG_WARN([Clang compiler not found.])
12514         fi
12515     else
12517         save_CXX="$CXX"
12518         CXX="$LO_CLANG_CXX"
12519         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12520         flag_sse2=-msse2
12521         flag_ssse3=-mssse3
12522         flag_sse41=-msse4.1
12523         flag_sse42=-msse4.2
12524         flag_avx=-mavx
12525         flag_avx2=-mavx2
12526         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12527         flag_avx512f=-mavx512f
12528         flag_f16c=-mf16c
12529         flag_fma=-mfma
12531         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12532         AC_LANG_PUSH([C++])
12533         save_CXXFLAGS=$CXXFLAGS
12534         CXXFLAGS="$CXXFLAGS $flag_sse2"
12535         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12536             #include <emmintrin.h>
12537             int main () {
12538                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12539                 c = _mm_xor_si128 (a, b);
12540                 return 0;
12541             }
12542             ])],
12543             [can_compile_sse2=yes],
12544             [can_compile_sse2=no])
12545         AC_LANG_POP([C++])
12546         CXXFLAGS=$save_CXXFLAGS
12547         AC_MSG_RESULT([${can_compile_sse2}])
12548         if test "${can_compile_sse2}" = "yes" ; then
12549             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12550         fi
12552         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12553         AC_LANG_PUSH([C++])
12554         save_CXXFLAGS=$CXXFLAGS
12555         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12556         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12557             #include <tmmintrin.h>
12558             int main () {
12559                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12560                 c = _mm_maddubs_epi16 (a, b);
12561                 return 0;
12562             }
12563             ])],
12564             [can_compile_ssse3=yes],
12565             [can_compile_ssse3=no])
12566         AC_LANG_POP([C++])
12567         CXXFLAGS=$save_CXXFLAGS
12568         AC_MSG_RESULT([${can_compile_ssse3}])
12569         if test "${can_compile_ssse3}" = "yes" ; then
12570             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12571         fi
12573         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12574         AC_LANG_PUSH([C++])
12575         save_CXXFLAGS=$CXXFLAGS
12576         CXXFLAGS="$CXXFLAGS $flag_sse41"
12577         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12578             #include <smmintrin.h>
12579             int main () {
12580                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12581                 c = _mm_cmpeq_epi64 (a, b);
12582                 return 0;
12583             }
12584             ])],
12585             [can_compile_sse41=yes],
12586             [can_compile_sse41=no])
12587         AC_LANG_POP([C++])
12588         CXXFLAGS=$save_CXXFLAGS
12589         AC_MSG_RESULT([${can_compile_sse41}])
12590         if test "${can_compile_sse41}" = "yes" ; then
12591             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12592         fi
12594         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12595         AC_LANG_PUSH([C++])
12596         save_CXXFLAGS=$CXXFLAGS
12597         CXXFLAGS="$CXXFLAGS $flag_sse42"
12598         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12599             #include <nmmintrin.h>
12600             int main () {
12601                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12602                 c = _mm_cmpgt_epi64 (a, b);
12603                 return 0;
12604             }
12605             ])],
12606             [can_compile_sse42=yes],
12607             [can_compile_sse42=no])
12608         AC_LANG_POP([C++])
12609         CXXFLAGS=$save_CXXFLAGS
12610         AC_MSG_RESULT([${can_compile_sse42}])
12611         if test "${can_compile_sse42}" = "yes" ; then
12612             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12613         fi
12615         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12616         AC_LANG_PUSH([C++])
12617         save_CXXFLAGS=$CXXFLAGS
12618         CXXFLAGS="$CXXFLAGS $flag_avx"
12619         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12620             #include <immintrin.h>
12621             int main () {
12622                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12623                 c = _mm256_xor_ps(a, b);
12624                 return 0;
12625             }
12626             ])],
12627             [can_compile_avx=yes],
12628             [can_compile_avx=no])
12629         AC_LANG_POP([C++])
12630         CXXFLAGS=$save_CXXFLAGS
12631         AC_MSG_RESULT([${can_compile_avx}])
12632         if test "${can_compile_avx}" = "yes" ; then
12633             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12634         fi
12636         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12637         AC_LANG_PUSH([C++])
12638         save_CXXFLAGS=$CXXFLAGS
12639         CXXFLAGS="$CXXFLAGS $flag_avx2"
12640         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12641             #include <immintrin.h>
12642             int main () {
12643                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12644                 c = _mm256_maddubs_epi16(a, b);
12645                 return 0;
12646             }
12647             ])],
12648             [can_compile_avx2=yes],
12649             [can_compile_avx2=no])
12650         AC_LANG_POP([C++])
12651         CXXFLAGS=$save_CXXFLAGS
12652         AC_MSG_RESULT([${can_compile_avx2}])
12653         if test "${can_compile_avx2}" = "yes" ; then
12654             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12655         fi
12657         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12658         AC_LANG_PUSH([C++])
12659         save_CXXFLAGS=$CXXFLAGS
12660         CXXFLAGS="$CXXFLAGS $flag_avx512"
12661         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12662             #include <immintrin.h>
12663             int main () {
12664                 __m512i a = _mm512_loadu_si512(0);
12665                 __m512d v1 = _mm512_load_pd(0);
12666                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12667                 __m512d v2 = _mm512_abs_pd(v1);
12668                 return 0;
12669             }
12670             ])],
12671             [can_compile_avx512=yes],
12672             [can_compile_avx512=no])
12673         AC_LANG_POP([C++])
12674         CXXFLAGS=$save_CXXFLAGS
12675         AC_MSG_RESULT([${can_compile_avx512}])
12676         if test "${can_compile_avx512}" = "yes" ; then
12677             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12678             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12679         fi
12681         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12682         AC_LANG_PUSH([C++])
12683         save_CXXFLAGS=$CXXFLAGS
12684         CXXFLAGS="$CXXFLAGS $flag_f16c"
12685         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12686             #include <immintrin.h>
12687             int main () {
12688                 __m128i a = _mm_set1_epi32 (0);
12689                 __m128 c;
12690                 c = _mm_cvtph_ps(a);
12691                 return 0;
12692             }
12693             ])],
12694             [can_compile_f16c=yes],
12695             [can_compile_f16c=no])
12696         AC_LANG_POP([C++])
12697         CXXFLAGS=$save_CXXFLAGS
12698         AC_MSG_RESULT([${can_compile_f16c}])
12699         if test "${can_compile_f16c}" = "yes" ; then
12700             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12701         fi
12703         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12704         AC_LANG_PUSH([C++])
12705         save_CXXFLAGS=$CXXFLAGS
12706         CXXFLAGS="$CXXFLAGS $flag_fma"
12707         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12708             #include <immintrin.h>
12709             int main () {
12710                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12711                 d = _mm256_fmadd_ps(a, b, c);
12712                 return 0;
12713             }
12714             ])],
12715             [can_compile_fma=yes],
12716             [can_compile_fma=no])
12717         AC_LANG_POP([C++])
12718         CXXFLAGS=$save_CXXFLAGS
12719         AC_MSG_RESULT([${can_compile_fma}])
12720         if test "${can_compile_fma}" = "yes" ; then
12721             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12722         fi
12724         CXX="$save_CXX"
12725     fi
12728 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12730 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12731     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12732     AC_LANG_PUSH([C])
12733     save_CC="$CC"
12734     CC="$LO_CLANG_CC"
12735     save_CFLAGS=$CFLAGS
12736     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12737     dnl an empty program will do, we're checking the compiler flags
12738     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12739                       [use_ccache=yes], [use_ccache=no])
12740     CFLAGS=$save_CFLAGS
12741     CC=$save_CC
12742     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12743         AC_MSG_RESULT([yes])
12744     else
12745         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12746         AC_MSG_RESULT([no])
12747     fi
12748     AC_LANG_POP([C])
12750     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12751     AC_LANG_PUSH([C++])
12752     save_CXX="$CXX"
12753     CXX="$LO_CLANG_CXX"
12754     save_CXXFLAGS=$CXXFLAGS
12755     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12756     dnl an empty program will do, we're checking the compiler flags
12757     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12758                       [use_ccache=yes], [use_ccache=no])
12759     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12760         AC_MSG_RESULT([yes])
12761     else
12762         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12763         AC_MSG_RESULT([no])
12764     fi
12765     CXXFLAGS=$save_CXXFLAGS
12766     CXX=$save_CXX
12767     AC_LANG_POP([C++])
12770 AC_SUBST(LO_CLANG_CC)
12771 AC_SUBST(LO_CLANG_CXX)
12772 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12773 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12774 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12775 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12776 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12777 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12778 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12779 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12780 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12781 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12782 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12783 AC_SUBST(LO_CLANG_VERSION)
12784 AC_SUBST(CLANG_USE_LD)
12785 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12787 SYSTEM_GPGMEPP=
12789 AC_MSG_CHECKING([whether to enable gpgmepp])
12790 if test "$enable_gpgmepp" = no; then
12791     AC_MSG_RESULT([no])
12792 elif test "$enable_mpl_subset" = "yes"; then
12793     AC_MSG_RESULT([no (MPL only)])
12794 elif test "$enable_fuzzers" = "yes"; then
12795     AC_MSG_RESULT([no (oss-fuzz)])
12796 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12797     AC_MSG_RESULT([yes])
12798     dnl ===================================================================
12799     dnl Check for system gpgme
12800     dnl ===================================================================
12801     AC_MSG_CHECKING([which gpgmepp to use])
12802     if test "$with_system_gpgmepp" = "yes"; then
12803         AC_MSG_RESULT([external])
12804         SYSTEM_GPGMEPP=TRUE
12806         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12807         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12808             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12809         AC_CHECK_HEADER(gpgme.h, [],
12810             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12811         AC_CHECK_LIB(gpgmepp, main, [],
12812             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12813         GPGMEPP_LIBS=-lgpgmepp
12814     else
12815         AC_MSG_RESULT([internal])
12816         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12818         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12819         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12820         if test "$_os" != "WINNT"; then
12821             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12822             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12823         fi
12824     fi
12825     ENABLE_GPGMEPP=TRUE
12826     AC_DEFINE([HAVE_FEATURE_GPGME])
12827     AC_PATH_PROG(GPG, gpg)
12828     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12829     # so let's exclude that manually for the moment
12830     if test -n "$GPG" -a "$_os" != "WINNT"; then
12831         # make sure we not only have a working gpgme, but a full working
12832         # gpg installation to run OpenPGP signature verification
12833         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12834     fi
12835     if test "$_os" = "Linux"; then
12836       uid=`id -u`
12837       AC_MSG_CHECKING([for /run/user/$uid])
12838       if test -d /run/user/$uid; then
12839         AC_MSG_RESULT([yes])
12840         AC_PATH_PROG(GPGCONF, gpgconf)
12842         # Older versions of gpgconf are not working as expected, since
12843         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12844         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12845         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12846         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12847         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12848         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12849         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12850           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12851           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12852           if $GPGCONF --dump-options > /dev/null ; then
12853             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12854               AC_MSG_RESULT([yes])
12855               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12856               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12857             else
12858               AC_MSG_RESULT([no])
12859             fi
12860           else
12861             AC_MSG_RESULT([no. missing or broken gpgconf?])
12862           fi
12863         else
12864           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12865         fi
12866       else
12867         AC_MSG_RESULT([no])
12868      fi
12869    fi
12870 else
12871     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12873 AC_SUBST(ENABLE_GPGMEPP)
12874 AC_SUBST(SYSTEM_GPGMEPP)
12875 AC_SUBST(GPG_ERROR_CFLAGS)
12876 AC_SUBST(GPG_ERROR_LIBS)
12877 AC_SUBST(LIBASSUAN_CFLAGS)
12878 AC_SUBST(LIBASSUAN_LIBS)
12879 AC_SUBST(GPGMEPP_CFLAGS)
12880 AC_SUBST(GPGMEPP_LIBS)
12882 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12883 if test "$with_java" != "no"; then
12884     AC_MSG_RESULT([yes])
12885     ENABLE_JAVA_WEBSOCKET=TRUE
12886     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12887     NEED_ANT=TRUE
12888 else
12889     AC_MSG_RESULT([no])
12890     ENABLE_JAVA_WEBSOCKET=
12892 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12894 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12895 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12896     AC_MSG_RESULT([yes])
12897     ENABLE_MEDIAWIKI=TRUE
12898     BUILD_TYPE="$BUILD_TYPE XSLTML"
12899     if test  "x$with_java" = "xno"; then
12900         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12901     fi
12902 else
12903     AC_MSG_RESULT([no])
12904     ENABLE_MEDIAWIKI=
12905     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12907 AC_SUBST(ENABLE_MEDIAWIKI)
12909 AC_MSG_CHECKING([whether to build the Report Builder])
12910 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12911     AC_MSG_RESULT([yes])
12912     ENABLE_REPORTBUILDER=TRUE
12913     AC_MSG_CHECKING([which jfreereport libs to use])
12914     if test "$with_system_jfreereport" = "yes"; then
12915         SYSTEM_JFREEREPORT=TRUE
12916         AC_MSG_RESULT([external])
12917         if test -z $SAC_JAR; then
12918             SAC_JAR=/usr/share/java/sac.jar
12919         fi
12920         if ! test -f $SAC_JAR; then
12921              AC_MSG_ERROR(sac.jar not found.)
12922         fi
12924         if test -z $LIBXML_JAR; then
12925             if test -f /usr/share/java/libxml-1.0.0.jar; then
12926                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12927             elif test -f /usr/share/java/libxml.jar; then
12928                 LIBXML_JAR=/usr/share/java/libxml.jar
12929             else
12930                 AC_MSG_ERROR(libxml.jar replacement not found.)
12931             fi
12932         elif ! test -f $LIBXML_JAR; then
12933             AC_MSG_ERROR(libxml.jar not found.)
12934         fi
12936         if test -z $FLUTE_JAR; then
12937             if test -f /usr/share/java/flute-1.3.0.jar; then
12938                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12939             elif test -f /usr/share/java/flute.jar; then
12940                 FLUTE_JAR=/usr/share/java/flute.jar
12941             else
12942                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12943             fi
12944         elif ! test -f $FLUTE_JAR; then
12945             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12946         fi
12948         if test -z $JFREEREPORT_JAR; then
12949             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12950                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12951             elif test -f /usr/share/java/flow-engine.jar; then
12952                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12953             else
12954                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12955             fi
12956         elif ! test -f  $JFREEREPORT_JAR; then
12957                 AC_MSG_ERROR(jfreereport.jar not found.)
12958         fi
12960         if test -z $LIBLAYOUT_JAR; then
12961             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12962                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12963             elif test -f /usr/share/java/liblayout.jar; then
12964                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12965             else
12966                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12967             fi
12968         elif ! test -f $LIBLAYOUT_JAR; then
12969                 AC_MSG_ERROR(liblayout.jar not found.)
12970         fi
12972         if test -z $LIBLOADER_JAR; then
12973             if test -f /usr/share/java/libloader-1.0.0.jar; then
12974                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12975             elif test -f /usr/share/java/libloader.jar; then
12976                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12977             else
12978                 AC_MSG_ERROR(libloader.jar replacement not found.)
12979             fi
12980         elif ! test -f  $LIBLOADER_JAR; then
12981             AC_MSG_ERROR(libloader.jar not found.)
12982         fi
12984         if test -z $LIBFORMULA_JAR; then
12985             if test -f /usr/share/java/libformula-0.2.0.jar; then
12986                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12987             elif test -f /usr/share/java/libformula.jar; then
12988                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12989             else
12990                 AC_MSG_ERROR(libformula.jar replacement not found.)
12991             fi
12992         elif ! test -f $LIBFORMULA_JAR; then
12993                 AC_MSG_ERROR(libformula.jar not found.)
12994         fi
12996         if test -z $LIBREPOSITORY_JAR; then
12997             if test -f /usr/share/java/librepository-1.0.0.jar; then
12998                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12999             elif test -f /usr/share/java/librepository.jar; then
13000                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
13001             else
13002                 AC_MSG_ERROR(librepository.jar replacement not found.)
13003             fi
13004         elif ! test -f $LIBREPOSITORY_JAR; then
13005             AC_MSG_ERROR(librepository.jar not found.)
13006         fi
13008         if test -z $LIBFONTS_JAR; then
13009             if test -f /usr/share/java/libfonts-1.0.0.jar; then
13010                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
13011             elif test -f /usr/share/java/libfonts.jar; then
13012                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
13013             else
13014                 AC_MSG_ERROR(libfonts.jar replacement not found.)
13015             fi
13016         elif ! test -f $LIBFONTS_JAR; then
13017                 AC_MSG_ERROR(libfonts.jar not found.)
13018         fi
13020         if test -z $LIBSERIALIZER_JAR; then
13021             if test -f /usr/share/java/libserializer-1.0.0.jar; then
13022                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
13023             elif test -f /usr/share/java/libserializer.jar; then
13024                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
13025             else
13026                 AC_MSG_ERROR(libserializer.jar replacement not found.)
13027             fi
13028         elif ! test -f $LIBSERIALIZER_JAR; then
13029                 AC_MSG_ERROR(libserializer.jar not found.)
13030         fi
13032         if test -z $LIBBASE_JAR; then
13033             if test -f /usr/share/java/libbase-1.0.0.jar; then
13034                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
13035             elif test -f /usr/share/java/libbase.jar; then
13036                 LIBBASE_JAR=/usr/share/java/libbase.jar
13037             else
13038                 AC_MSG_ERROR(libbase.jar replacement not found.)
13039             fi
13040         elif ! test -f $LIBBASE_JAR; then
13041             AC_MSG_ERROR(libbase.jar not found.)
13042         fi
13044     else
13045         AC_MSG_RESULT([internal])
13046         SYSTEM_JFREEREPORT=
13047         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
13048         NEED_ANT=TRUE
13049     fi
13050     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
13051 else
13052     AC_MSG_RESULT([no])
13053     ENABLE_REPORTBUILDER=
13054     SYSTEM_JFREEREPORT=
13056 AC_SUBST(ENABLE_REPORTBUILDER)
13057 AC_SUBST(SYSTEM_JFREEREPORT)
13058 AC_SUBST(SAC_JAR)
13059 AC_SUBST(LIBXML_JAR)
13060 AC_SUBST(FLUTE_JAR)
13061 AC_SUBST(JFREEREPORT_JAR)
13062 AC_SUBST(LIBBASE_JAR)
13063 AC_SUBST(LIBLAYOUT_JAR)
13064 AC_SUBST(LIBLOADER_JAR)
13065 AC_SUBST(LIBFORMULA_JAR)
13066 AC_SUBST(LIBREPOSITORY_JAR)
13067 AC_SUBST(LIBFONTS_JAR)
13068 AC_SUBST(LIBSERIALIZER_JAR)
13070 # scripting provider for BeanShell?
13071 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13072 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13073     AC_MSG_RESULT([yes])
13074     ENABLE_SCRIPTING_BEANSHELL=TRUE
13076     dnl ===================================================================
13077     dnl Check for system beanshell
13078     dnl ===================================================================
13079     AC_MSG_CHECKING([which beanshell to use])
13080     if test "$with_system_beanshell" = "yes"; then
13081         AC_MSG_RESULT([external])
13082         SYSTEM_BSH=TRUE
13083         if test -z $BSH_JAR; then
13084             BSH_JAR=/usr/share/java/bsh.jar
13085         fi
13086         if ! test -f $BSH_JAR; then
13087             AC_MSG_ERROR(bsh.jar not found.)
13088         fi
13089     else
13090         AC_MSG_RESULT([internal])
13091         SYSTEM_BSH=
13092         BUILD_TYPE="$BUILD_TYPE BSH"
13093     fi
13094 else
13095     AC_MSG_RESULT([no])
13096     ENABLE_SCRIPTING_BEANSHELL=
13097     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13099 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13100 AC_SUBST(SYSTEM_BSH)
13101 AC_SUBST(BSH_JAR)
13103 # scripting provider for JavaScript?
13104 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13105 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13106     AC_MSG_RESULT([yes])
13107     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13109     dnl ===================================================================
13110     dnl Check for system rhino
13111     dnl ===================================================================
13112     AC_MSG_CHECKING([which rhino to use])
13113     if test "$with_system_rhino" = "yes"; then
13114         AC_MSG_RESULT([external])
13115         SYSTEM_RHINO=TRUE
13116         if test -z $RHINO_JAR; then
13117             RHINO_JAR=/usr/share/java/js.jar
13118         fi
13119         if ! test -f $RHINO_JAR; then
13120             AC_MSG_ERROR(js.jar not found.)
13121         fi
13122     else
13123         AC_MSG_RESULT([internal])
13124         SYSTEM_RHINO=
13125         BUILD_TYPE="$BUILD_TYPE RHINO"
13126         NEED_ANT=TRUE
13127     fi
13128 else
13129     AC_MSG_RESULT([no])
13130     ENABLE_SCRIPTING_JAVASCRIPT=
13131     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13133 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13134 AC_SUBST(SYSTEM_RHINO)
13135 AC_SUBST(RHINO_JAR)
13137 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13138 # paths should be added to library search path. So lets put all 64-bit
13139 # platforms there.
13140 supports_multilib=
13141 case "$host_cpu" in
13142 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13143     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13144         supports_multilib="yes"
13145     fi
13146     ;;
13148     ;;
13149 esac
13151 dnl ===================================================================
13152 dnl QT5 Integration
13153 dnl ===================================================================
13155 QT5_CFLAGS=""
13156 QT5_LIBS=""
13157 QMAKE5="qmake"
13158 MOC5="moc"
13159 QT5_GOBJECT_CFLAGS=""
13160 QT5_GOBJECT_LIBS=""
13161 QT5_HAVE_GOBJECT=""
13162 QT5_PLATFORMS_SRCDIR=""
13163 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13164         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13165         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13166 then
13167     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13168     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13170     if test -n "$supports_multilib"; then
13171         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13172     fi
13174     qt5_test_include="QtWidgets/qapplication.h"
13175     if test "$_os" = "Emscripten"; then
13176         qt5_test_library="libQt5Widgets.a"
13177     else
13178         qt5_test_library="libQt5Widgets.so"
13179     fi
13181     dnl Check for qmake5
13182     if test -n "$QT5DIR"; then
13183         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13184     else
13185         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13186     fi
13187     if test "$QMAKE5" = "no"; then
13188         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13189     else
13190         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13191         if test -z "$qmake5_test_ver"; then
13192             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13193         fi
13194         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13195         qt5_minimal_minor="15"
13196         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13197             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13198         else
13199             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13200         fi
13201     fi
13203     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13204     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13205     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13206     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13208     AC_MSG_CHECKING([for Qt5 headers])
13209     qt5_incdir="no"
13210     for inc_dir in $qt5_incdirs; do
13211         if test -r "$inc_dir/$qt5_test_include"; then
13212             qt5_incdir="$inc_dir"
13213             break
13214         fi
13215     done
13216     AC_MSG_RESULT([$qt5_incdir])
13217     if test "x$qt5_incdir" = "xno"; then
13218         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13219     fi
13220     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13221     AC_LANG_PUSH([C++])
13222     save_CPPFLAGS=$CPPFLAGS
13223     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13224     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13225         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13226     CPPFLAGS=$save_CPPFLAGS
13227     AC_LANG_POP([C++])
13229     AC_MSG_CHECKING([for Qt5 libraries])
13230     qt5_libdir="no"
13231     for lib_dir in $qt5_libdirs; do
13232         if test -r "$lib_dir/$qt5_test_library"; then
13233             qt5_libdir="$lib_dir"
13234             break
13235         fi
13236     done
13237     AC_MSG_RESULT([$qt5_libdir])
13238     if test "x$qt5_libdir" = "xno"; then
13239         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13240     fi
13242     if test "$_os" = "Emscripten"; then
13243         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13244             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13245         fi
13246         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13247             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13248         fi
13250         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13251         if ! test -x "$EMSDK_LLVM_NM"; then
13252             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13253         fi
13254         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13255             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13256         fi
13257         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13258         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13259             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13260         fi
13261         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13262             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13263         fi
13264     fi
13266     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13267     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13268     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13269     if test "$_os" = "Emscripten"; then
13270         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13271     fi
13273     if test "$USING_X11" = TRUE; then
13274         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13275         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13276         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13277         QT5_USING_X11=1
13278         AC_DEFINE(QT5_USING_X11)
13279     fi
13281     dnl Check for Meta Object Compiler
13283     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13284     if test "$MOC5" = "no"; then
13285         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13286 the root of your Qt installation by exporting QT5DIR before running "configure".])
13287     fi
13289     if test "$test_gstreamer_1_0" = yes; then
13290         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13291                 QT5_HAVE_GOBJECT=1
13292                 AC_DEFINE(QT5_HAVE_GOBJECT)
13293             ],
13294             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13295         )
13296     fi
13298 AC_SUBST(QT5_CFLAGS)
13299 AC_SUBST(QT5_LIBS)
13300 AC_SUBST(MOC5)
13301 AC_SUBST(QT5_GOBJECT_CFLAGS)
13302 AC_SUBST(QT5_GOBJECT_LIBS)
13303 AC_SUBST(QT5_HAVE_GOBJECT)
13304 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13306 dnl ===================================================================
13307 dnl QT6 Integration
13308 dnl ===================================================================
13310 QT6_CFLAGS=""
13311 QT6_LIBS=""
13312 QMAKE6="qmake"
13313 MOC6="moc"
13314 QT6_PLATFORMS_SRCDIR=""
13315 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13316         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13317 then
13318     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13319     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13321     if test -n "$supports_multilib"; then
13322         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13323     fi
13325     qt6_test_include="QtWidgets/qapplication.h"
13326     if test "$_os" = "Emscripten"; then
13327         qt6_test_library="libQt6Widgets.a"
13328     else
13329         qt6_test_library="libQt6Widgets.so"
13330     fi
13332     dnl Check for qmake6
13333     if test -n "$QT6DIR"; then
13334         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13335     else
13336         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13337     fi
13338     if test "$QMAKE6" = "no"; then
13339         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13340     else
13341         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13342         if test -z "$qmake6_test_ver"; then
13343             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13344         fi
13345         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13346     fi
13348     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13349     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13350     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13351     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13353     AC_MSG_CHECKING([for Qt6 headers])
13354     qt6_incdir="no"
13355     for inc_dir in $qt6_incdirs; do
13356         if test -r "$inc_dir/$qt6_test_include"; then
13357             qt6_incdir="$inc_dir"
13358             break
13359         fi
13360     done
13361     AC_MSG_RESULT([$qt6_incdir])
13362     if test "x$qt6_incdir" = "xno"; then
13363         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13364     fi
13365     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13366     AC_LANG_PUSH([C++])
13367     save_CPPFLAGS=$CPPFLAGS
13368     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13369     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13370         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13371     CPPFLAGS=$save_CPPFLAGS
13372     AC_LANG_POP([C++])
13374     AC_MSG_CHECKING([for Qt6 libraries])
13375     qt6_libdir="no"
13376     for lib_dir in $qt6_libdirs; do
13377         if test -r "$lib_dir/$qt6_test_library"; then
13378             qt6_libdir="$lib_dir"
13379             break
13380         fi
13381     done
13382     AC_MSG_RESULT([$qt6_libdir])
13383     if test "x$qt6_libdir" = "xno"; then
13384         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13385     fi
13387     if test "$_os" = "Emscripten"; then
13388         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13389             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13390         fi
13391         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13392             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13393         fi
13394     fi
13396     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13397     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13398     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13399     if test "$_os" = "Emscripten"; then
13400         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13401     fi
13403     if test "$USING_X11" = TRUE; then
13404         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13405         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13406         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13407         QT6_USING_X11=1
13408         AC_DEFINE(QT6_USING_X11)
13409     fi
13411     dnl Check for Meta Object Compiler
13413     for lib_dir in $qt6_libdirs; do
13414         if test -z "$qt6_libexec_dirs"; then
13415             qt6_libexec_dirs="$lib_dir/libexec"
13416         else
13417             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13418         fi
13419     done
13420     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])
13421     if test "$MOC6" = "no"; then
13422         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13423 the root of your Qt installation by exporting QT6DIR before running "configure".])
13424     else
13425         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13426         if test -z "$moc6_test_ver"; then
13427             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13428         fi
13429         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13430     fi
13432 AC_SUBST(QT6_CFLAGS)
13433 AC_SUBST(QT6_LIBS)
13434 AC_SUBST(MOC6)
13435 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13437 dnl ===================================================================
13438 dnl KF5 Integration
13439 dnl ===================================================================
13441 KF5_CFLAGS=""
13442 KF5_LIBS=""
13443 KF5_CONFIG="kf5-config"
13444 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13445         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13446 then
13447     if test "$OS" = "HAIKU"; then
13448         haiku_arch="`echo $RTL_ARCH | tr X x`"
13449         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13450         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13451     fi
13453     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13454     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13455     if test -n "$supports_multilib"; then
13456         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13457     fi
13459     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13460     kf5_test_library="libKF5KIOFileWidgets.so"
13461     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13463     dnl kf5 KDE4 support compatibility installed
13464     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13465     if test "$KF5_CONFIG" != "no"; then
13466         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13467         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13468     fi
13470     dnl Check for KF5 headers
13471     AC_MSG_CHECKING([for KF5 headers])
13472     kf5_incdir="no"
13473     for kf5_check in $kf5_incdirs; do
13474         if test -r "$kf5_check/$kf5_test_include"; then
13475             kf5_incdir="$kf5_check/KF5"
13476             break
13477         fi
13478     done
13479     AC_MSG_RESULT([$kf5_incdir])
13480     if test "x$kf5_incdir" = "xno"; then
13481         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13482     fi
13484     dnl Check for KF5 libraries
13485     AC_MSG_CHECKING([for KF5 libraries])
13486     kf5_libdir="no"
13487     for kf5_check in $kf5_libdirs; do
13488         if test -r "$kf5_check/$kf5_test_library"; then
13489             kf5_libdir="$kf5_check"
13490             break
13491         fi
13492     done
13494     AC_MSG_RESULT([$kf5_libdir])
13495     if test "x$kf5_libdir" = "xno"; then
13496         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13497     fi
13499     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"
13500     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13501     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13503     if test "$USING_X11" = TRUE; then
13504         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13505     fi
13507     AC_LANG_PUSH([C++])
13508     save_CXXFLAGS=$CXXFLAGS
13509     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13510     AC_MSG_CHECKING([whether KDE is >= 5.0])
13511        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13512 #include <kcoreaddons_version.h>
13514 int main(int argc, char **argv) {
13515        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13516        else return 1;
13518        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13519     CXXFLAGS=$save_CXXFLAGS
13520     AC_LANG_POP([C++])
13522 AC_SUBST(KF5_CFLAGS)
13523 AC_SUBST(KF5_LIBS)
13525 dnl ===================================================================
13526 dnl KF6 Integration
13527 dnl ===================================================================
13529 KF6_CFLAGS=""
13530 KF6_LIBS=""
13531 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13532 then
13533     if test "$OS" = "HAIKU"; then
13534         haiku_arch="`echo $RTL_ARCH | tr X x`"
13535         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13536         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13537     fi
13539     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13540     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13541     if test -n "$supports_multilib"; then
13542         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13543     fi
13545     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13546     kf6_test_library="libKF6KIOFileWidgets.so"
13547     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13549     dnl Check for KF6 headers
13550     AC_MSG_CHECKING([for KF6 headers])
13551     kf6_incdir="no"
13552     for kf6_check in $kf6_incdirs; do
13553         if test -r "$kf6_check/$kf6_test_include"; then
13554             kf6_incdir="$kf6_check/KF6"
13555             break
13556         fi
13557     done
13558     AC_MSG_RESULT([$kf6_incdir])
13559     if test "x$kf6_incdir" = "xno"; then
13560         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13561     fi
13563     dnl Check for KF6 libraries
13564     AC_MSG_CHECKING([for KF6 libraries])
13565     kf6_libdir="no"
13566     for kf6_check in $kf6_libdirs; do
13567         if test -r "$kf6_check/$kf6_test_library"; then
13568             kf6_libdir="$kf6_check"
13569             break
13570         fi
13571     done
13573     AC_MSG_RESULT([$kf6_libdir])
13574     if test "x$kf6_libdir" = "xno"; then
13575         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13576     fi
13578     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"
13579     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13580     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13582     AC_LANG_PUSH([C++])
13583     save_CXXFLAGS=$CXXFLAGS
13584     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13585     dnl KF6 development version as of 2023-06 uses version number 5.240
13586     AC_MSG_CHECKING([whether KDE is >= 5.240])
13587        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13588 #include <kcoreaddons_version.h>
13590 int main(int argc, char **argv) {
13591        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13592        else return 1;
13594        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13595     CXXFLAGS=$save_CXXFLAGS
13596     AC_LANG_POP([C++])
13598 AC_SUBST(KF6_CFLAGS)
13599 AC_SUBST(KF6_LIBS)
13601 dnl ===================================================================
13602 dnl Test whether to include Evolution 2 support
13603 dnl ===================================================================
13604 AC_MSG_CHECKING([whether to enable evolution 2 support])
13605 if test "$enable_evolution2" = yes; then
13606     AC_MSG_RESULT([yes])
13607     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13608     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13609     FilterLibs "${GOBJECT_LIBS}"
13610     GOBJECT_LIBS="${filteredlibs}"
13611     ENABLE_EVOAB2="TRUE"
13612 else
13613     AC_MSG_RESULT([no])
13615 AC_SUBST(ENABLE_EVOAB2)
13616 AC_SUBST(GOBJECT_CFLAGS)
13617 AC_SUBST(GOBJECT_LIBS)
13619 dnl ===================================================================
13620 dnl Test which themes to include
13621 dnl ===================================================================
13622 AC_MSG_CHECKING([which themes to include])
13623 # if none given use default subset of available themes
13624 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13625     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"
13628 WITH_THEMES=""
13629 if test "x$with_theme" != "xno"; then
13630     for theme in $with_theme; do
13631         case $theme in
13632         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" ;;
13633         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13634         esac
13635     done
13637 AC_MSG_RESULT([$WITH_THEMES])
13638 AC_SUBST([WITH_THEMES])
13640 ###############################################################################
13641 # Extensions checking
13642 ###############################################################################
13643 AC_MSG_CHECKING([for extensions integration])
13644 if test "x$enable_extension_integration" != "xno"; then
13645     WITH_EXTENSION_INTEGRATION=TRUE
13646     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13647     AC_MSG_RESULT([yes, use integration])
13648 else
13649     WITH_EXTENSION_INTEGRATION=
13650     AC_MSG_RESULT([no, do not integrate])
13652 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13654 dnl Should any extra extensions be included?
13655 dnl There are standalone tests for each of these below.
13656 WITH_EXTRA_EXTENSIONS=
13657 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13659 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13660 if test "x$with_java" != "xno"; then
13661     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13664 AC_MSG_CHECKING([whether to build opens___.ttf])
13665 if test "$enable_build_opensymbol" = "yes"; then
13666     AC_MSG_RESULT([yes])
13667     AC_PATH_PROG(FONTFORGE, fontforge)
13668     if test -z "$FONTFORGE"; then
13669         AC_MSG_ERROR([fontforge not installed])
13670     fi
13671 else
13672     AC_MSG_RESULT([no])
13673     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13675 AC_SUBST(FONTFORGE)
13677 dnl ===================================================================
13678 dnl Test whether to include fonts
13679 dnl ===================================================================
13680 WITH_FONTS=
13681 WITH_DOCREPAIR_FONTS=
13682 AC_MSG_CHECKING([whether to include third-party fonts])
13683 if test "$with_fonts" != "no"; then
13684     AC_MSG_RESULT([yes])
13685     WITH_FONTS=TRUE
13686     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13687     AC_DEFINE(HAVE_MORE_FONTS)
13688     AC_MSG_CHECKING([whether to include 'docrepair' fonts])
13689     if test "$with_docrepair_fonts" = "yes"; then
13690         AC_MSG_RESULT([yes])
13691         WITH_DOCREPAIR_FONTS=TRUE
13692     fi
13693 else
13694     AC_MSG_RESULT([no])
13695     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13697 AC_SUBST(WITH_FONTS)
13698 AC_SUBST(WITH_DOCREPAIR_FONTS)
13700 dnl Test whether to include more Google Noto fonts
13701 dnl ===================================================================
13702 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13703 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13704     AC_MSG_RESULT([no])
13705     WITH_NOTO_FONT=
13706 else
13707     AC_MSG_RESULT([yes])
13708     WITH_NOTO_FONT=TRUE
13709     BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13710     SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13712 AC_SUBST(WITH_NOTO_FONT)
13714 dnl ===================================================================
13715 dnl Test whether to enable online update service
13716 dnl ===================================================================
13717 AC_MSG_CHECKING([whether to enable online update])
13718 ENABLE_ONLINE_UPDATE=
13719 if test "$enable_online_update" = ""; then
13720     AC_MSG_RESULT([no])
13721 else
13722     if test "$enable_online_update" = "mar"; then
13723         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13724     elif test "$enable_online_update" = "yes"; then
13725         if test "$enable_curl" != "yes"; then
13726             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13727         fi
13728         AC_MSG_RESULT([yes])
13729         ENABLE_ONLINE_UPDATE="TRUE"
13730     else
13731         AC_MSG_RESULT([no])
13732     fi
13734 AC_SUBST(ENABLE_ONLINE_UPDATE)
13737 dnl ===================================================================
13738 dnl Test whether to enable mar online update service
13739 dnl ===================================================================
13740 AC_MSG_CHECKING([whether to enable mar online update])
13741 ENABLE_ONLINE_UPDATE_MAR=
13742 if test "$enable_online_update_mar" = yes; then
13743     AC_MSG_RESULT([yes])
13744     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13745     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13746     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13747 else
13748     AC_MSG_RESULT([no])
13750 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13752 AC_MSG_CHECKING([for mar online update baseurl])
13753 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13754 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13755     AC_MSG_RESULT([yes])
13756 else
13757     AC_MSG_RESULT([no])
13759 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13761 AC_MSG_CHECKING([for mar online update certificateder])
13762 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13763 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13764     AC_MSG_RESULT([yes])
13765 else
13766     AC_MSG_RESULT([no])
13768 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13770 AC_MSG_CHECKING([for mar online update certificatename])
13771 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13772 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13773     AC_MSG_RESULT([yes])
13774 else
13775     AC_MSG_RESULT([no])
13777 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13779 AC_MSG_CHECKING([for mar online update certificatepath])
13780 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13781 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13782     AC_MSG_RESULT([yes])
13783 else
13784     AC_MSG_RESULT([no])
13786 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13788 AC_MSG_CHECKING([for mar online update uploadurl])
13789 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13790 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13791     AC_MSG_RESULT([yes])
13792 else
13793     AC_MSG_RESULT([no])
13795 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13798 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13799 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13800     if test "x$with_privacy_policy_url" = "xundefined"; then
13801         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13802     fi
13804 AC_SUBST(PRIVACY_POLICY_URL)
13805 dnl ===================================================================
13806 dnl Test whether we need bzip2
13807 dnl ===================================================================
13808 SYSTEM_BZIP2=
13809 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13810     AC_MSG_CHECKING([whether to use system bzip2])
13811     if test "$with_system_bzip2" = yes; then
13812         SYSTEM_BZIP2=TRUE
13813         AC_MSG_RESULT([yes])
13814         PKG_CHECK_MODULES(BZIP2, bzip2)
13815         FilterLibs "${BZIP2_LIBS}"
13816         BZIP2_LIBS="${filteredlibs}"
13817     else
13818         AC_MSG_RESULT([no])
13819         BUILD_TYPE="$BUILD_TYPE BZIP2"
13820     fi
13822 AC_SUBST(SYSTEM_BZIP2)
13823 AC_SUBST(BZIP2_CFLAGS)
13824 AC_SUBST(BZIP2_LIBS)
13826 dnl ===================================================================
13827 dnl Test whether to enable extension update
13828 dnl ===================================================================
13829 AC_MSG_CHECKING([whether to enable extension update])
13830 ENABLE_EXTENSION_UPDATE=
13831 if test "x$enable_extension_update" = "xno"; then
13832     AC_MSG_RESULT([no])
13833 else
13834     AC_MSG_RESULT([yes])
13835     ENABLE_EXTENSION_UPDATE="TRUE"
13836     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13837     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13839 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13842 dnl ===================================================================
13843 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13844 dnl ===================================================================
13845 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13846 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13847     AC_MSG_RESULT([no])
13848     ENABLE_SILENT_MSI=
13849 else
13850     AC_MSG_RESULT([yes])
13851     ENABLE_SILENT_MSI=TRUE
13852     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13854 AC_SUBST(ENABLE_SILENT_MSI)
13856 dnl ===================================================================
13857 dnl Check for WiX tools.
13858 dnl ===================================================================
13859 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13860     AC_MSG_RESULT([no])
13861     ENABLE_WIX=
13862 else
13863     AC_MSG_RESULT([yes])
13864     # FIXME: this should do proper detection, but the path is currently
13865     # hardcoded in msicreator/createmsi.py
13866     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13867       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13868     fi
13869     ENABLE_WIX=TRUE
13871 AC_SUBST(ENABLE_WIX)
13873 AC_MSG_CHECKING([whether and how to use Xinerama])
13874 if test "$USING_X11" = TRUE; then
13875     if test "$x_libraries" = "default_x_libraries"; then
13876         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13877         if test "x$XINERAMALIB" = x; then
13878            XINERAMALIB="/usr/lib"
13879         fi
13880     else
13881         XINERAMALIB="$x_libraries"
13882     fi
13883     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13884         # we have both versions, let the user decide but use the dynamic one
13885         # per default
13886         USE_XINERAMA=TRUE
13887         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13888             XINERAMA_LINK=dynamic
13889         else
13890             XINERAMA_LINK=static
13891         fi
13892     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13893         # we have only the dynamic version
13894         USE_XINERAMA=TRUE
13895         XINERAMA_LINK=dynamic
13896     elif test -e "$XINERAMALIB/libXinerama.a"; then
13897         # static version
13898         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13899             USE_XINERAMA=TRUE
13900             XINERAMA_LINK=static
13901         else
13902             USE_XINERAMA=
13903             XINERAMA_LINK=none
13904         fi
13905     else
13906         # no Xinerama
13907         USE_XINERAMA=
13908         XINERAMA_LINK=none
13909     fi
13910     if test "$USE_XINERAMA" = "TRUE"; then
13911         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13912         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13913             [AC_MSG_ERROR(Xinerama header not found.)], [])
13914         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13915         if test "x$XEXTLIB" = x; then
13916            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13917         fi
13918         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13919         if test "$_os" = "FreeBSD"; then
13920             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13921         fi
13922         if test "$_os" = "Linux"; then
13923             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13924         fi
13925         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13926             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13927     else
13928         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13929     fi
13930 else
13931     USE_XINERAMA=
13932     XINERAMA_LINK=none
13933     AC_MSG_RESULT([no])
13935 AC_SUBST(XINERAMA_LINK)
13937 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13938 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13939     enable_cairo_rgba=yes
13941 if test "$enable_cairo_rgba" = yes; then
13942     AC_DEFINE(ENABLE_CAIRO_RGBA)
13943     ENABLE_CAIRO_RGBA=TRUE
13944     AC_MSG_RESULT([yes])
13945 else
13946     ENABLE_CAIRO_RGBA=
13947     AC_MSG_RESULT([no])
13949 AC_SUBST(ENABLE_CAIRO_RGBA)
13951 dnl ===================================================================
13952 dnl Test whether to build cairo or rely on the system version
13953 dnl ===================================================================
13955 if test "$test_cairo" = "yes"; then
13956     AC_MSG_CHECKING([whether to use the system cairo])
13958     : ${with_system_cairo:=$with_system_libs}
13959     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13960         SYSTEM_CAIRO=TRUE
13961         AC_MSG_RESULT([yes])
13963         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13964         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13965         FilterLibs "${CAIRO_LIBS}"
13966         CAIRO_LIBS="${filteredlibs}"
13968         if test "$test_xrender" = "yes"; then
13969             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13970             AC_LANG_PUSH([C])
13971             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13972 #ifdef PictStandardA8
13973 #else
13974       return fail;
13975 #endif
13976 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13978             AC_LANG_POP([C])
13979         fi
13980     else
13981         AC_MSG_RESULT([no])
13982         BUILD_TYPE="$BUILD_TYPE CAIRO"
13983     fi
13985     if test "$enable_cairo_canvas" != no; then
13986         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13987         ENABLE_CAIRO_CANVAS=TRUE
13988     fi
13991 AC_SUBST(CAIRO_CFLAGS)
13992 AC_SUBST(CAIRO_LIBS)
13993 AC_SUBST(ENABLE_CAIRO_CANVAS)
13994 AC_SUBST(SYSTEM_CAIRO)
13996 dnl ===================================================================
13997 dnl Test whether to use avahi
13998 dnl ===================================================================
13999 if test "$_os" = "WINNT"; then
14000     # Windows uses bundled mDNSResponder
14001     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
14002 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
14003     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
14004                       [ENABLE_AVAHI="TRUE"])
14005     AC_DEFINE(HAVE_FEATURE_AVAHI)
14006     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
14007     FilterLibs "${AVAHI_LIBS}"
14008     AVAHI_LIBS="${filteredlibs}"
14011 AC_SUBST(ENABLE_AVAHI)
14012 AC_SUBST(AVAHI_CFLAGS)
14013 AC_SUBST(AVAHI_LIBS)
14015 dnl ===================================================================
14016 dnl Test whether to use liblangtag
14017 dnl ===================================================================
14018 SYSTEM_LIBLANGTAG=
14019 AC_MSG_CHECKING([whether to use system liblangtag])
14020 if test "$with_system_liblangtag" = yes; then
14021     SYSTEM_LIBLANGTAG=TRUE
14022     AC_MSG_RESULT([yes])
14023     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
14024     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
14025     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
14026     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
14027     FilterLibs "${LIBLANGTAG_LIBS}"
14028     LIBLANGTAG_LIBS="${filteredlibs}"
14029 else
14030     SYSTEM_LIBLANGTAG=
14031     AC_MSG_RESULT([no])
14032     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
14033     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
14034     if test "$COM" = "MSC"; then
14035         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
14036     else
14037         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
14038     fi
14040 AC_SUBST(SYSTEM_LIBLANGTAG)
14041 AC_SUBST(LIBLANGTAG_CFLAGS)
14042 AC_SUBST(LIBLANGTAG_LIBS)
14044 dnl ===================================================================
14045 dnl Test whether to build libpng or rely on the system version
14046 dnl ===================================================================
14048 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
14049 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
14050 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
14052 dnl ===================================================================
14053 dnl Test whether to build libtiff or rely on the system version
14054 dnl ===================================================================
14056 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
14058 dnl ===================================================================
14059 dnl Test whether to build libwebp or rely on the system version
14060 dnl ===================================================================
14062 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
14064 dnl ===================================================================
14065 dnl Check for runtime JVM search path
14066 dnl ===================================================================
14067 if test "$ENABLE_JAVA" != ""; then
14068     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
14069     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
14070         AC_MSG_RESULT([yes])
14071         if ! test -d "$with_jvm_path"; then
14072             AC_MSG_ERROR(["$with_jvm_path" not a directory])
14073         fi
14074         if ! test -d "$with_jvm_path"jvm; then
14075             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
14076         fi
14077         JVM_ONE_PATH_CHECK="$with_jvm_path"
14078         AC_SUBST(JVM_ONE_PATH_CHECK)
14079     else
14080         AC_MSG_RESULT([no])
14081     fi
14084 dnl ===================================================================
14085 dnl Test for the presence of Ant and that it works
14086 dnl ===================================================================
14088 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
14089 # breaks filename decoding, so for the ant section, set it to LANG
14090 LC_ALL=$LANG
14091 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14092     ANT_HOME=; export ANT_HOME
14093     WITH_ANT_HOME=; export WITH_ANT_HOME
14094     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14095         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14096             if test "$_os" = "WINNT"; then
14097                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14098             else
14099                 with_ant_home="$LODE_HOME/opt/ant"
14100             fi
14101         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14102             with_ant_home="$LODE_HOME/opt/ant"
14103         fi
14104     fi
14105     if test -z "$with_ant_home"; then
14106         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14107     else
14108         if test "$_os" = "WINNT"; then
14109             # AC_PATH_PROGS needs unix path
14110             with_ant_home=`cygpath -u "$with_ant_home"`
14111         fi
14112         AbsolutePath "$with_ant_home"
14113         with_ant_home=$absolute_path
14114         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14115         WITH_ANT_HOME=$with_ant_home
14116         ANT_HOME=$with_ant_home
14117     fi
14119     if test -z "$ANT"; then
14120         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14121     else
14122         # resolve relative or absolute symlink
14123         while test -h "$ANT"; do
14124             a_cwd=`pwd`
14125             a_basename=`basename "$ANT"`
14126             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14127             cd "`dirname "$ANT"`"
14128             cd "`dirname "$a_script"`"
14129             ANT="`pwd`"/"`basename "$a_script"`"
14130             cd "$a_cwd"
14131         done
14133         AC_MSG_CHECKING([if $ANT works])
14134         mkdir -p conftest.dir
14135         a_cwd=$(pwd)
14136         cd conftest.dir
14137         cat > conftest.java << EOF
14138         public class conftest {
14139             int testmethod(int a, int b) {
14140                     return a + b;
14141             }
14142         }
14145         cat > conftest.xml << EOF
14146         <project name="conftest" default="conftest">
14147         <target name="conftest">
14148             <javac srcdir="." includes="conftest.java">
14149             </javac>
14150         </target>
14151         </project>
14154         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14155         if test $? = 0 -a -f ./conftest.class; then
14156             AC_MSG_RESULT([Ant works])
14157             if test -z "$WITH_ANT_HOME"; then
14158                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14159                 if test -z "$ANT_HOME"; then
14160                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14161                 fi
14162             else
14163                 ANT_HOME="$WITH_ANT_HOME"
14164             fi
14165         else
14166             echo "configure: Ant test failed" >&5
14167             cat conftest.java >&5
14168             cat conftest.xml >&5
14169             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14170         fi
14171         cd "$a_cwd"
14172         rm -fr conftest.dir
14173     fi
14174     if test -z "$ANT_HOME"; then
14175         ANT_HOME="NO_ANT_HOME"
14176     else
14177         PathFormat "$ANT_HOME"
14178         ANT_HOME="$formatted_path"
14179         PathFormat "$ANT"
14180         ANT="$formatted_path"
14181     fi
14183     dnl Checking for ant.jar
14184     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14185         AC_MSG_CHECKING([Ant lib directory])
14186         if test -f $ANT_HOME/lib/ant.jar; then
14187             ANT_LIB="$ANT_HOME/lib"
14188         else
14189             if test -f $ANT_HOME/ant.jar; then
14190                 ANT_LIB="$ANT_HOME"
14191             else
14192                 if test -f /usr/share/java/ant.jar; then
14193                     ANT_LIB=/usr/share/java
14194                 else
14195                     if test -f /usr/share/ant-core/lib/ant.jar; then
14196                         ANT_LIB=/usr/share/ant-core/lib
14197                     else
14198                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14199                             ANT_LIB="$ANT_HOME/lib/ant"
14200                         else
14201                             if test -f /usr/share/lib/ant/ant.jar; then
14202                                 ANT_LIB=/usr/share/lib/ant
14203                             else
14204                                 AC_MSG_ERROR([Ant libraries not found!])
14205                             fi
14206                         fi
14207                     fi
14208                 fi
14209             fi
14210         fi
14211         PathFormat "$ANT_LIB"
14212         ANT_LIB="$formatted_path"
14213         AC_MSG_RESULT([Ant lib directory found.])
14214     fi
14216     ant_minver=1.6.0
14217     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14219     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14220     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14221     ant_version_major=`echo $ant_version | cut -d. -f1`
14222     ant_version_minor=`echo $ant_version | cut -d. -f2`
14223     echo "configure: ant_version $ant_version " >&5
14224     echo "configure: ant_version_major $ant_version_major " >&5
14225     echo "configure: ant_version_minor $ant_version_minor " >&5
14226     if test "$ant_version_major" -ge "2"; then
14227         AC_MSG_RESULT([yes, $ant_version])
14228     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14229         AC_MSG_RESULT([yes, $ant_version])
14230     else
14231         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14232     fi
14234     rm -f conftest* core core.* *.core
14236 AC_SUBST(ANT)
14237 AC_SUBST(ANT_HOME)
14238 AC_SUBST(ANT_LIB)
14240 OOO_JUNIT_JAR=
14241 HAMCREST_JAR=
14242 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14243     AC_MSG_CHECKING([for JUnit 4])
14244     if test "$with_junit" = "yes"; then
14245         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14246             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14247         elif test -e /usr/share/java/junit4.jar; then
14248             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14249         else
14250            if test -e /usr/share/lib/java/junit.jar; then
14251               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14252            else
14253               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14254            fi
14255         fi
14256     else
14257         OOO_JUNIT_JAR=$with_junit
14258     fi
14259     if test "$_os" = "WINNT"; then
14260         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14261     fi
14262     printf 'import org.junit.Before;' > conftest.java
14263     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14264         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14265     else
14266         AC_MSG_ERROR(
14267 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14268  specify its pathname via --with-junit=..., or disable it via --without-junit])
14269     fi
14270     rm -f conftest.class conftest.java
14271     if test $OOO_JUNIT_JAR != ""; then
14272         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14273     fi
14275     AC_MSG_CHECKING([for included Hamcrest])
14276     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14277     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14278         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14279     else
14280         AC_MSG_RESULT([Not included])
14281         AC_MSG_CHECKING([for standalone hamcrest jar.])
14282         if test "$with_hamcrest" = "yes"; then
14283             if test -e /usr/share/lib/java/hamcrest.jar; then
14284                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14285             elif test -e /usr/share/java/hamcrest/core.jar; then
14286                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14287             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14288                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14289             else
14290                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14291             fi
14292         else
14293             HAMCREST_JAR=$with_hamcrest
14294         fi
14295         if test "$_os" = "WINNT"; then
14296             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14297         fi
14298         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14299             AC_MSG_RESULT([$HAMCREST_JAR])
14300         else
14301             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),
14302                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14303         fi
14304     fi
14305     rm -f conftest.class conftest.java
14307 AC_SUBST(OOO_JUNIT_JAR)
14308 AC_SUBST(HAMCREST_JAR)
14309 # set back LC_ALL to C after the java related tests...
14310 LC_ALL=C
14312 AC_SUBST(SCPDEFS)
14315 # check for wget and curl
14317 WGET=
14318 CURL=
14320 if test "$enable_fetch_external" != "no"; then
14322 CURL=`which curl 2>/dev/null`
14324 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14325     # wget new enough?
14326     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14327     if test $? -eq 0; then
14328         WGET=$i
14329         break
14330     fi
14331 done
14333 if test -z "$WGET" -a -z "$CURL"; then
14334     AC_MSG_ERROR([neither wget nor curl found!])
14339 AC_SUBST(WGET)
14340 AC_SUBST(CURL)
14343 # check for sha256sum
14345 SHA256SUM=
14347 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14348     eval "$i -a 256 --version" > /dev/null 2>&1
14349     ret=$?
14350     if test $ret -eq 0; then
14351         SHA256SUM="$i -a 256"
14352         break
14353     fi
14354 done
14356 if test -z "$SHA256SUM"; then
14357     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14358         eval "$i --version" > /dev/null 2>&1
14359         ret=$?
14360         if test $ret -eq 0; then
14361             SHA256SUM=$i
14362             break
14363         fi
14364     done
14367 if test -z "$SHA256SUM"; then
14368     AC_MSG_ERROR([no sha256sum found!])
14371 AC_SUBST(SHA256SUM)
14373 dnl ===================================================================
14374 dnl Dealing with l10n options
14375 dnl ===================================================================
14376 AC_MSG_CHECKING([which languages to be built])
14377 # get list of all languages
14378 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14379 # the sed command does the following:
14380 #   + if a line ends with a backslash, append the next line to it
14381 #   + adds " on the beginning of the value (after =)
14382 #   + adds " at the end of the value
14383 #   + removes en-US; we want to put it on the beginning
14384 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14385 [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)]
14386 ALL_LANGS="en-US $completelangiso"
14387 # check the configured localizations
14388 WITH_LANG="$with_lang"
14390 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14391 # (Norwegian is "nb" and "nn".)
14392 if test "$WITH_LANG" = "no"; then
14393     WITH_LANG=
14396 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14397     AC_MSG_RESULT([en-US])
14398 else
14399     AC_MSG_RESULT([$WITH_LANG])
14400     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14401     if test -z "$MSGFMT"; then
14402         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14403             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14404         elif test -x "/opt/lo/bin/msgfmt"; then
14405             MSGFMT="/opt/lo/bin/msgfmt"
14406         else
14407             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14408             if test -z "$MSGFMT"; then
14409                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14410             fi
14411         fi
14412     fi
14413     if test -z "$MSGUNIQ"; then
14414         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14415             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14416         elif test -x "/opt/lo/bin/msguniq"; then
14417             MSGUNIQ="/opt/lo/bin/msguniq"
14418         else
14419             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14420             if test -z "$MSGUNIQ"; then
14421                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14422             fi
14423         fi
14424     fi
14426 AC_SUBST(MSGFMT)
14427 AC_SUBST(MSGUNIQ)
14428 # check that the list is valid
14429 for lang in $WITH_LANG; do
14430     test "$lang" = "ALL" && continue
14431     # need to check for the exact string, so add space before and after the list of all languages
14432     for vl in $ALL_LANGS; do
14433         if test "$vl" = "$lang"; then
14434            break
14435         fi
14436     done
14437     if test "$vl" != "$lang"; then
14438         # if you're reading this - you prolly quoted your languages remove the quotes ...
14439         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14440     fi
14441 done
14442 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14443     echo $WITH_LANG | grep -q en-US
14444     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14446 # list with substituted ALL
14447 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14448 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14449 test "$WITH_LANG" = "en-US" && WITH_LANG=
14450 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14451     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14452     ALL_LANGS=`echo $ALL_LANGS qtz`
14454 AC_SUBST(ALL_LANGS)
14455 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14456 AC_SUBST(WITH_LANG)
14457 AC_SUBST(WITH_LANG_LIST)
14458 AC_SUBST(GIT_NEEDED_SUBMODULES)
14460 WITH_POOR_HELP_LOCALIZATIONS=
14461 if test -d "$SRC_ROOT/translations/source"; then
14462     for l in `ls -1 $SRC_ROOT/translations/source`; do
14463         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14464             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14465         fi
14466     done
14467     if test "$OS" = WNT; then
14468         # We want to include only English (US), French, German, Italian and Spanish help
14469         # packs in our Windows distribution. Others are probably not needed and digital
14470         # signature of MSI packages is expensive. Some other languages are available online.
14471         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"
14472     fi
14474 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14476 if test -n "$with_locales" -a "$with_locales" != ALL; then
14477     WITH_LOCALES="$with_locales"
14479     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14480     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14481     # config_host/config_locales.h.in
14482     for locale in $WITH_LOCALES; do
14483         lang=${locale%_*}
14485         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14487         case $lang in
14488         hi|mr*ne)
14489             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14490             ;;
14491         bg|ru)
14492             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14493             ;;
14494         esac
14495     done
14496 else
14497     AC_DEFINE(WITH_LOCALE_ALL)
14499 AC_SUBST(WITH_LOCALES)
14501 dnl git submodule update --reference
14502 dnl ===================================================================
14503 if test -n "${GIT_REFERENCE_SRC}"; then
14504     for repo in ${GIT_NEEDED_SUBMODULES}; do
14505         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14506             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14507         fi
14508     done
14510 AC_SUBST(GIT_REFERENCE_SRC)
14512 dnl git submodules linked dirs
14513 dnl ===================================================================
14514 if test -n "${GIT_LINK_SRC}"; then
14515     for repo in ${GIT_NEEDED_SUBMODULES}; do
14516         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14517             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14518         fi
14519     done
14521 AC_SUBST(GIT_LINK_SRC)
14523 dnl branding
14524 dnl ===================================================================
14525 AC_MSG_CHECKING([for alternative branding images directory])
14526 # initialize mapped arrays
14527 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14528 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14530 if test -z "$with_branding" -o "$with_branding" = "no"; then
14531     AC_MSG_RESULT([none])
14532     DEFAULT_BRAND_IMAGES="$brand_files"
14533 else
14534     if ! test -d $with_branding ; then
14535         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14536     else
14537         AC_MSG_RESULT([$with_branding])
14538         CUSTOM_BRAND_DIR="$with_branding"
14539         for lfile in $brand_files
14540         do
14541             if ! test -f $with_branding/$lfile ; then
14542                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14543                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14544             else
14545                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14546             fi
14547         done
14548         check_for_progress="yes"
14549     fi
14551 AC_SUBST([BRAND_INTRO_IMAGES])
14552 AC_SUBST([CUSTOM_BRAND_DIR])
14553 AC_SUBST([CUSTOM_BRAND_IMAGES])
14554 AC_SUBST([DEFAULT_BRAND_IMAGES])
14557 AC_MSG_CHECKING([for 'intro' progress settings])
14558 PROGRESSBARCOLOR=
14559 PROGRESSSIZE=
14560 PROGRESSPOSITION=
14561 PROGRESSFRAMECOLOR=
14562 PROGRESSTEXTCOLOR=
14563 PROGRESSTEXTBASELINE=
14565 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14566     source "$with_branding/progress.conf"
14567     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14568 else
14569     AC_MSG_RESULT([none])
14572 AC_SUBST(PROGRESSBARCOLOR)
14573 AC_SUBST(PROGRESSSIZE)
14574 AC_SUBST(PROGRESSPOSITION)
14575 AC_SUBST(PROGRESSFRAMECOLOR)
14576 AC_SUBST(PROGRESSTEXTCOLOR)
14577 AC_SUBST(PROGRESSTEXTBASELINE)
14580 dnl ===================================================================
14581 dnl Custom build version
14582 dnl ===================================================================
14583 AC_MSG_CHECKING([for extra build ID])
14584 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14585     EXTRA_BUILDID="$with_extra_buildid"
14587 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14588 if test -n "$EXTRA_BUILDID" ; then
14589     AC_MSG_RESULT([$EXTRA_BUILDID])
14590 else
14591     AC_MSG_RESULT([not set])
14593 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14595 OOO_VENDOR=
14596 AC_MSG_CHECKING([for vendor])
14597 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14598     OOO_VENDOR="$USERNAME"
14600     if test -z "$OOO_VENDOR"; then
14601         OOO_VENDOR="$USER"
14602     fi
14604     if test -z "$OOO_VENDOR"; then
14605         OOO_VENDOR="`id -u -n`"
14606     fi
14608     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14609 else
14610     OOO_VENDOR="$with_vendor"
14611     AC_MSG_RESULT([$OOO_VENDOR])
14613 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14614 AC_SUBST(OOO_VENDOR)
14616 if test "$_os" = "Android" ; then
14617     ANDROID_PACKAGE_NAME=
14618     AC_MSG_CHECKING([for Android package name])
14619     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14620         if test -n "$ENABLE_DEBUG"; then
14621             # Default to the package name that makes ndk-gdb happy.
14622             ANDROID_PACKAGE_NAME="org.libreoffice"
14623         else
14624             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14625         fi
14627         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14628     else
14629         ANDROID_PACKAGE_NAME="$with_android_package_name"
14630         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14631     fi
14632     AC_SUBST(ANDROID_PACKAGE_NAME)
14635 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14636 if test "$with_compat_oowrappers" = "yes"; then
14637     WITH_COMPAT_OOWRAPPERS=TRUE
14638     AC_MSG_RESULT(yes)
14639 else
14640     WITH_COMPAT_OOWRAPPERS=
14641     AC_MSG_RESULT(no)
14643 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14645 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14646 AC_MSG_CHECKING([for install dirname])
14647 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14648     INSTALLDIRNAME="$with_install_dirname"
14650 AC_MSG_RESULT([$INSTALLDIRNAME])
14651 AC_SUBST(INSTALLDIRNAME)
14653 AC_MSG_CHECKING([for prefix])
14654 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14655 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14656 PREFIXDIR="$prefix"
14657 AC_MSG_RESULT([$PREFIXDIR])
14658 AC_SUBST(PREFIXDIR)
14660 LIBDIR=[$(eval echo $(eval echo $libdir))]
14661 AC_SUBST(LIBDIR)
14663 DATADIR=[$(eval echo $(eval echo $datadir))]
14664 AC_SUBST(DATADIR)
14666 MANDIR=[$(eval echo $(eval echo $mandir))]
14667 AC_SUBST(MANDIR)
14669 DOCDIR=[$(eval echo $(eval echo $docdir))]
14670 AC_SUBST(DOCDIR)
14672 BINDIR=[$(eval echo $(eval echo $bindir))]
14673 AC_SUBST(BINDIR)
14675 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14676 AC_SUBST(INSTALLDIR)
14678 TESTINSTALLDIR="${BUILDDIR}/test-install"
14679 AC_SUBST(TESTINSTALLDIR)
14682 # ===================================================================
14683 # OAuth2 id and secrets
14684 # ===================================================================
14686 AC_MSG_CHECKING([for Google Drive client id and secret])
14687 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14688     AC_MSG_RESULT([not set])
14689     GDRIVE_CLIENT_ID="\"\""
14690     GDRIVE_CLIENT_SECRET="\"\""
14691 else
14692     AC_MSG_RESULT([set])
14693     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14694     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14696 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14697 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14699 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14700 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14701     AC_MSG_RESULT([not set])
14702     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14703     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14704 else
14705     AC_MSG_RESULT([set])
14706     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14707     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14709 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14710 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14712 AC_MSG_CHECKING([for OneDrive client id and secret])
14713 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14714     AC_MSG_RESULT([not set])
14715     ONEDRIVE_CLIENT_ID="\"\""
14716     ONEDRIVE_CLIENT_SECRET="\"\""
14717 else
14718     AC_MSG_RESULT([set])
14719     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14720     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14722 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14723 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14726 dnl ===================================================================
14727 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14728 dnl --enable-dependency-tracking configure option
14729 dnl ===================================================================
14730 AC_MSG_CHECKING([whether to enable dependency tracking])
14731 if test "$enable_dependency_tracking" = "no"; then
14732     nodep=TRUE
14733     AC_MSG_RESULT([no])
14734 else
14735     AC_MSG_RESULT([yes])
14737 AC_SUBST(nodep)
14739 dnl ===================================================================
14740 dnl Number of CPUs to use during the build
14741 dnl ===================================================================
14742 AC_MSG_CHECKING([for number of processors to use])
14743 # plain --with-parallelism is just the default
14744 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14745     if test "$with_parallelism" = "no"; then
14746         PARALLELISM=0
14747     else
14748         PARALLELISM=$with_parallelism
14749     fi
14750 else
14751     if test "$enable_icecream" = "yes"; then
14752         PARALLELISM="40"
14753     else
14754         case `uname -s` in
14756         Darwin|FreeBSD|NetBSD|OpenBSD)
14757             PARALLELISM=`sysctl -n hw.ncpu`
14758             ;;
14760         Linux)
14761             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14762         ;;
14763         # what else than above does profit here *and* has /proc?
14764         *)
14765             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14766             ;;
14767         esac
14769         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14770         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14771     fi
14774 if test $PARALLELISM -eq 0; then
14775     AC_MSG_RESULT([explicit make -j option needed])
14776 else
14777     AC_MSG_RESULT([$PARALLELISM])
14779 AC_SUBST(PARALLELISM)
14782 # Set up ILIB for MSVC build
14784 ILIB1=
14785 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14786     ILIB="."
14787     if test -n "$JAVA_HOME"; then
14788         ILIB="$ILIB;$JAVA_HOME/lib"
14789     fi
14790     ILIB1=-link
14791     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14792     ILIB="$ILIB;$formatted_path"
14793     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14794     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14795     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14796     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14797         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14798         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14799     fi
14800     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14801     ucrtlibpath_formatted=$formatted_path
14802     ILIB="$ILIB;$ucrtlibpath_formatted"
14803     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14804     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14805         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14806         ILIB="$ILIB;$formatted_path"
14807     else
14808         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14809         ILIB="$ILIB;$formatted_path"
14810     fi
14812     if test "$cross_compiling" != "yes"; then
14813         ILIB_FOR_BUILD="$ILIB"
14814     fi
14816 AC_SUBST(ILIB)
14817 AC_SUBST(ILIB_FOR_BUILD)
14819 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14820 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14821 dnl from consteval constructor initializing const variable",
14822 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14823 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14824 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14825 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14826 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14827 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)" (which appears to be
14828 dnl fixed at least in Visual Studio Community 2022 Preview 17.9.0 Preview 5.0),
14829 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14830 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14831 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14832 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17), or
14833 dnl <https://developercommunity.visualstudio.com/t/Bogus-error-C2440-with-consteval-constru/10579616>
14834 dnl "Bogus error C2440 with consteval constructor (/std:c++20)":
14835 AC_LANG_PUSH([C++])
14836 save_CXX=$CXX
14837 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14838     CXX="env LIB=$ILIB $CXX"
14840 save_CXXFLAGS=$CXXFLAGS
14841 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14842 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14843         struct S {
14844             consteval S() { i = 1; }
14845             int i = 0;
14846         };
14847         S const s;
14849         struct S1 {
14850              int a;
14851              consteval S1(int n): a(n) {}
14852         };
14853         struct S2 {
14854             S1 x;
14855             S2(): x(0) {}
14856         };
14858         struct S3 {
14859             consteval S3() {}
14860             union {
14861                 int a;
14862                 unsigned b = 0;
14863             };
14864         };
14865         void f() { S3(); }
14867         struct S4 { consteval S4() = default; };
14868         void f4(bool b) { b ? S4() : S4(); }
14870         struct S5 {
14871             consteval S5() { c = 0; }
14872             char * f() { return &c; }
14873             union {
14874                 char c;
14875                 int i;
14876             };
14877         };
14878         auto s5 = S5().f();
14880         struct S6 {
14881             consteval S6(char const (&lit)[2]) {
14882                 buf[0] = lit[0];
14883                 buf[1] = lit[1];
14884             }
14885             union {
14886                 int x;
14887                 char buf[2];
14888             };
14889         };
14890         void f6() { S6("a"); }
14891     ], [
14892         return (s.i == 1) ? 0 : 1;
14893     ])], [
14894         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14895         AC_MSG_RESULT([yes])
14896     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14897 CXX=$save_CXX
14898 CXXFLAGS=$save_CXXFLAGS
14899 AC_LANG_POP([C++])
14901 # ===================================================================
14902 # Creating bigger shared library to link against
14903 # ===================================================================
14904 AC_MSG_CHECKING([whether to create huge library])
14905 MERGELIBS=
14906 MERGELIBS_MORE=
14908 if test $_os = iOS -o $_os = Android; then
14909     # Never any point in mergelibs for these as we build just static
14910     # libraries anyway...
14911     enable_mergelibs=no
14914 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14915     if test "$enable_mergelibs" = "more"; then
14916         if test $_os != Linux; then
14917             add_warning "--enable-mergelibs=more is not tested for this platform"
14918         fi
14919         MERGELIBS="TRUE"
14920         MERGELIBS_MORE="TRUE"
14921         AC_MSG_RESULT([yes (more)])
14922         AC_DEFINE(ENABLE_MERGELIBS)
14923     elif test "$enable_mergelibs" = "yes" -o "$enable_mergelibs" = ""; then
14924         if test $_os != Linux -a $_os != WINNT; then
14925             add_warning "--enable-mergelibs is not tested for this platform"
14926         fi
14927         MERGELIBS="TRUE"
14928         AC_MSG_RESULT([yes])
14929         AC_DEFINE(ENABLE_MERGELIBS)
14930     else
14931         AC_MSG_ERROR([unknown value --enable-mergelibs=$enable_mergelibs])
14932     fi
14933 else
14934     AC_MSG_RESULT([no])
14936 AC_SUBST([MERGELIBS])
14937 AC_SUBST([MERGELIBS_MORE])
14939 dnl ===================================================================
14940 dnl icerun is a wrapper that stops us spawning tens of processes
14941 dnl locally - for tools that can't be executed on the compile cluster
14942 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14943 dnl ===================================================================
14944 AC_MSG_CHECKING([whether to use icerun wrapper])
14945 ICECREAM_RUN=
14946 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14947     ICECREAM_RUN=icerun
14948     AC_MSG_RESULT([yes])
14949 else
14950     AC_MSG_RESULT([no])
14952 AC_SUBST(ICECREAM_RUN)
14954 dnl ===================================================================
14955 dnl Setup the ICECC_VERSION for the build the same way it was set for
14956 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14957 dnl ===================================================================
14958 x_ICECC_VERSION=[\#]
14959 if test -n "$ICECC_VERSION" ; then
14960     x_ICECC_VERSION=
14962 AC_SUBST(x_ICECC_VERSION)
14963 AC_SUBST(ICECC_VERSION)
14965 dnl ===================================================================
14967 AC_MSG_CHECKING([MPL subset])
14968 MPL_SUBSET=
14969 LICENSE="LGPL"
14971 if test "$enable_mpl_subset" = "yes"; then
14972     mpl_error_string=
14973     newline=$'\n    *'
14974     warn_report=false
14975     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14976         warn_report=true
14977     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14978         warn_report=true
14979     fi
14980     if test "$warn_report" = "true"; then
14981         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14982     fi
14983     if test "x$enable_postgresql_sdbc" != "xno"; then
14984         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14985     fi
14986     if test "$enable_lotuswordpro" = "yes"; then
14987         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14988     fi
14989     if test -n "$ENABLE_POPPLER"; then
14990         if test "x$SYSTEM_POPPLER" = "x"; then
14991             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14992         fi
14993     fi
14994     # cf. m4/libo_check_extension.m4
14995     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14996         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14997     fi
14998     denied_themes=
14999     filtered_themes=
15000     for theme in $WITH_THEMES; do
15001         case $theme in
15002         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
15003             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
15004         *)
15005             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
15006         esac
15007     done
15008     if test "x$denied_themes" != "x"; then
15009         if test "x$filtered_themes" == "x"; then
15010             filtered_themes="colibre"
15011         fi
15012         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
15013     fi
15015     ENABLE_OPENGL_TRANSITIONS=
15017     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
15018         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
15019     fi
15021     if test "x$mpl_error_string" != "x"; then
15022         AC_MSG_ERROR([$mpl_error_string])
15023     fi
15025     MPL_SUBSET="TRUE"
15026     LICENSE="MPL-2.0"
15027     AC_DEFINE(MPL_HAVE_SUBSET)
15028     AC_MSG_RESULT([only])
15029 else
15030     AC_MSG_RESULT([no restrictions])
15032 AC_SUBST(MPL_SUBSET)
15033 AC_SUBST(LICENSE)
15035 dnl ===================================================================
15037 AC_MSG_CHECKING([formula logger])
15038 ENABLE_FORMULA_LOGGER=
15040 if test "x$enable_formula_logger" = "xyes"; then
15041     AC_MSG_RESULT([yes])
15042     AC_DEFINE(ENABLE_FORMULA_LOGGER)
15043     ENABLE_FORMULA_LOGGER=TRUE
15044 elif test -n "$ENABLE_DBGUTIL" ; then
15045     AC_MSG_RESULT([yes])
15046     AC_DEFINE(ENABLE_FORMULA_LOGGER)
15047     ENABLE_FORMULA_LOGGER=TRUE
15048 else
15049     AC_MSG_RESULT([no])
15052 AC_SUBST(ENABLE_FORMULA_LOGGER)
15054 dnl ===================================================================
15055 dnl Checking for active Antivirus software.
15056 dnl ===================================================================
15058 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
15059     AC_MSG_CHECKING([for active Antivirus software])
15060     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
15061     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
15062     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
15063         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
15064             AC_MSG_RESULT([found])
15065             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
15066             echo $EICAR_STRING > $SRC_ROOT/eicar
15067             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
15068             rm $SRC_ROOT/eicar
15069             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15070                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15071             fi
15072             echo $EICAR_STRING > $BUILDDIR/eicar
15073             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
15074             rm $BUILDDIR/eicar
15075             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15076                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15077             fi
15078             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"
15079         else
15080             AC_MSG_RESULT([not found])
15081         fi
15082     else
15083         AC_MSG_RESULT([n/a])
15084     fi
15087 dnl ===================================================================
15089 AC_MSG_CHECKING([for coredumpctl support])
15090 if test -z "$with_coredumpctl" && test $_os != Linux; then
15091     with_coredumpctl=no
15093 if test "$with_coredumpctl" = no; then
15094     WITH_COREDUMPCTL=
15095 else
15096     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
15097     AC_PATH_PROG(JQ, jq)
15098     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
15099     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
15100     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
15101         || test -z "$SYSTEMD_RUN"
15102     then
15103         if test -z "$with_coredumpctl"; then
15104             WITH_COREDUMPCTL=
15105         else
15106             if test -z "$COREDUMPCTL"; then
15107                 AC_MSG_ERROR([coredumpctl not found])
15108             fi
15109             if test -z "$JQ"; then
15110                 AC_MSG_ERROR([jq not found])
15111             fi
15112             if test -z "$SYSTEMD_ESCAPE"; then
15113                 AC_MSG_ERROR([systemd-escape not found])
15114             fi
15115             if test -z "$SYSTEMD_RUN"; then
15116                 AC_MSG_ERROR([systemd-run not found])
15117             fi
15118         fi
15119     else
15120         WITH_COREDUMPCTL=TRUE
15121     fi
15123 if test -z "$WITH_COREDUMPCTL"; then
15124     AC_MSG_RESULT([no])
15125 else
15126     AC_MSG_RESULT([yes])
15128 AC_SUBST(COREDUMPCTL)
15129 AC_SUBST(JQ)
15130 AC_SUBST(SYSTEMD_ESCAPE)
15131 AC_SUBST(SYSTEMD_RUN)
15132 AC_SUBST(WITH_COREDUMPCTL)
15134 dnl ===================================================================
15135 dnl Setting up the environment.
15136 dnl ===================================================================
15137 AC_MSG_NOTICE([setting up the build environment variables...])
15139 AC_SUBST(COMPATH)
15141 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15142     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15143         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15144         ATL_INCLUDE="$COMPATH/atlmfc/include"
15145     elif test -d "$COMPATH/atlmfc/lib"; then
15146         ATL_LIB="$COMPATH/atlmfc/lib"
15147         ATL_INCLUDE="$COMPATH/atlmfc/include"
15148     else
15149         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15150         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15151     fi
15152     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15153     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15154     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15157 if test "$build_os" = "cygwin"; then
15158     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15159     PathFormat "/usr/bin/find.exe"
15160     FIND="$formatted_path"
15161     PathFormat "/usr/bin/sort.exe"
15162     SORT="$formatted_path"
15163     PathFormat "/usr/bin/grep.exe"
15164     WIN_GREP="$formatted_path"
15165     PathFormat "/usr/bin/ls.exe"
15166     WIN_LS="$formatted_path"
15167     PathFormat "/usr/bin/touch.exe"
15168     WIN_TOUCH="$formatted_path"
15169 else
15170     FIND=find
15171     SORT=sort
15174 AC_SUBST(ATL_INCLUDE)
15175 AC_SUBST(ATL_LIB)
15176 AC_SUBST(FIND)
15177 AC_SUBST(SORT)
15178 AC_SUBST(WIN_GREP)
15179 AC_SUBST(WIN_LS)
15180 AC_SUBST(WIN_TOUCH)
15182 AC_SUBST(BUILD_TYPE)
15184 AC_SUBST(SOLARINC)
15186 PathFormat "$PERL"
15187 PERL="$formatted_path"
15188 AC_SUBST(PERL)
15190 if test -n "$TMPDIR"; then
15191     TEMP_DIRECTORY="$TMPDIR"
15192 else
15193     TEMP_DIRECTORY="/tmp"
15195 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15196 if test "$build_os" = "cygwin"; then
15197     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15198     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15200 AC_SUBST(TEMP_DIRECTORY)
15201 AC_SUBST(CYGWIN_BASH)
15203 # setup the PATH for the environment
15204 if test -n "$LO_PATH_FOR_BUILD"; then
15205     LO_PATH="$LO_PATH_FOR_BUILD"
15206     case "$host_os" in
15207     cygwin*|wsl*)
15208         pathmunge "$MSVC_HOST_PATH" "before"
15209         ;;
15210     esac
15211 else
15212     LO_PATH="$PATH"
15214     case "$host_os" in
15216     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15217         if test "$ENABLE_JAVA" != ""; then
15218             pathmunge "$JAVA_HOME/bin" "after"
15219         fi
15220         ;;
15222     cygwin*|wsl*)
15223         # Win32 make needs native paths
15224         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15225             LO_PATH=`cygpath -p -m "$PATH"`
15226         fi
15227         if test "$WIN_BUILD_ARCH" = "x64"; then
15228             # needed for msi packaging
15229             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15230         fi
15231         if test "$WIN_BUILD_ARCH" = "arm64"; then
15232             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15233             # the x86 ones probably would work just as well...
15234             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15235         fi
15236         # .NET 4.6 and higher don't have bin directory
15237         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15238             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15239         fi
15240         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15241         pathmunge "$CSC_PATH" "before"
15242         pathmunge "$MIDL_PATH" "before"
15243         pathmunge "$AL_PATH" "before"
15244         pathmunge "$MSVC_MULTI_PATH" "before"
15245         pathmunge "$MSVC_BUILD_PATH" "before"
15246         if test -n "$MSBUILD_PATH" ; then
15247             pathmunge "$MSBUILD_PATH" "before"
15248         fi
15249         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15250         if test "$ENABLE_JAVA" != ""; then
15251             if test -d "$JAVA_HOME/jre/bin/client"; then
15252                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15253             fi
15254             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15255                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15256             fi
15257             pathmunge "$JAVA_HOME/bin" "before"
15258         fi
15259         pathmunge "$MSVC_HOST_PATH" "before"
15260         ;;
15262     solaris*)
15263         pathmunge "/usr/css/bin" "before"
15264         if test "$ENABLE_JAVA" != ""; then
15265             pathmunge "$JAVA_HOME/bin" "after"
15266         fi
15267         ;;
15268     esac
15271 AC_SUBST(LO_PATH)
15273 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15274 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15275     x_LO_ELFCHECK_ALLOWLIST=
15276 else
15277     x_LO_ELFCHECK_ALLOWLIST=[\#]
15279 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15280 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15282 libo_FUZZ_SUMMARY
15284 # Generate a configuration sha256 we can use for deps
15285 if test -f config_host.mk; then
15286     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15288 if test -f config_host_lang.mk; then
15289     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15292 CFLAGS=$my_original_CFLAGS
15293 CXXFLAGS=$my_original_CXXFLAGS
15294 CPPFLAGS=$my_original_CPPFLAGS
15296 AC_CONFIG_LINKS([include:include])
15298 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15299 # BUILD platform configuration] - otherwise breaks cross building
15300 AC_CONFIG_FILES([config_host.mk
15301                  config_host_lang.mk
15302                  Makefile
15303                  bin/bffvalidator.sh
15304                  bin/odfvalidator.sh
15305                  bin/officeotron.sh
15306                  instsetoo_native/util/openoffice.lst
15307                  sysui/desktop/macosx/Info.plist
15308                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15309                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15310                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15312 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15313 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15314 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15315 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15316 AC_CONFIG_HEADERS([config_host/config_clang.h])
15317 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15318 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15319 AC_CONFIG_HEADERS([config_host/config_eot.h])
15320 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15321 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15322 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15323 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15324 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15325 AC_CONFIG_HEADERS([config_host/config_features.h])
15326 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15327 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15328 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15329 AC_CONFIG_HEADERS([config_host/config_folders.h])
15330 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15331 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15332 AC_CONFIG_HEADERS([config_host/config_gio.h])
15333 AC_CONFIG_HEADERS([config_host/config_global.h])
15334 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15335 AC_CONFIG_HEADERS([config_host/config_java.h])
15336 AC_CONFIG_HEADERS([config_host/config_langs.h])
15337 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15338 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15339 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15340 AC_CONFIG_HEADERS([config_host/config_locales.h])
15341 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15342 AC_CONFIG_HEADERS([config_host/config_oox.h])
15343 AC_CONFIG_HEADERS([config_host/config_options.h])
15344 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15345 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15346 AC_CONFIG_HEADERS([config_host/config_skia.h])
15347 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15348 AC_CONFIG_HEADERS([config_host/config_validation.h])
15349 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15350 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15351 AC_CONFIG_HEADERS([config_host/config_version.h])
15352 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15353 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15354 AC_CONFIG_HEADERS([config_host/config_python.h])
15355 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15356 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15357 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15358 AC_OUTPUT
15360 if test "$CROSS_COMPILING" = TRUE; then
15361     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15364 # touch the config timestamp file
15365 if test ! -f config_host.mk.stamp; then
15366     echo > config_host.mk.stamp
15367 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15368     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15369 else
15370     echo > config_host.mk.stamp
15373 # touch the config lang timestamp file
15374 if test ! -f config_host_lang.mk.stamp; then
15375     echo > config_host_lang.mk.stamp
15376 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15377     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15378 else
15379     echo > config_host_lang.mk.stamp
15383 if test \( "$STALE_MAKE" = "TRUE" \) \
15384         -a "$build_os" = "cygwin"; then
15386 cat << _EOS
15387 ****************************************************************************
15388 WARNING:
15389 Your make version is known to be horribly slow, and hard to debug
15390 problems with. To get a reasonably functional make please do:
15392 to install a pre-compiled binary make for Win32
15394  mkdir -p /opt/lo/bin
15395  cd /opt/lo/bin
15396  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15397  cp make-4.2.1-msvc.exe make
15398  chmod +x make
15400 to install from source:
15401 place yourself in a working directory of you choice.
15403  git clone git://git.savannah.gnu.org/make.git
15405  [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"]
15406  set PATH=%PATH%;C:\Cygwin\bin
15407  [or Cygwin64, if that is what you have]
15408  cd path-to-make-repo-you-cloned-above
15409  build_w32.bat --without-guile
15411 should result in a WinRel/gnumake.exe.
15412 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15414 Then re-run autogen.sh
15416 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15417 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15419 _EOS
15423 cat << _EOF
15424 ****************************************************************************
15426 To show information on various make targets and make flags, run:
15427 $GNUMAKE help
15429 To just build, run:
15430 $GNUMAKE
15432 _EOF
15434 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15435     cat << _EOF
15436 After the build has finished successfully, you can immediately run what you built using the command:
15437 _EOF
15439     if test $_os = Darwin; then
15440         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15441     else
15442         echo instdir/program/soffice
15443     fi
15444     cat << _EOF
15446 If you want to run the unit tests, run:
15447 $GNUMAKE check
15449 _EOF
15452 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15453     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15454     cat "$WARNINGS_FILE_FOR_BUILD"
15455     echo
15458 if test -s "$WARNINGS_FILE"; then
15459     echo "HOST config ($WARNINGS_FILE)"
15460     cat "$WARNINGS_FILE"
15463 # Remove unneeded emconfigure artifacts
15464 rm -f a.out a.wasm a.out.js a.out.wasm
15466 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: