Update git submodules
[LibreOffice.git] / configure.ac
blob842721cc44274ae75aa61a806a7cae70508aa822
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.5.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
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     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     # Convert to unix path, mkdir would treat c:/path as a relative path.
194     PathFormat "$1"
195     local rel="$formatted_path_unix"
196     absolute_path=""
197     test ! -e "$rel" && mkdir -p "$rel"
198     if test -d "$rel" ; then
199         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
200         absolute_path="$(pwd)"
201         cd - > /dev/null
202     else
203         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
204     fi
207 WARNINGS_FILE=config.warn
208 WARNINGS_FILE_FOR_BUILD=config.Build.warn
209 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
210 have_WARNINGS="no"
211 add_warning()
213     if test "$have_WARNINGS" = "no"; then
214         echo "*************************************" > "$WARNINGS_FILE"
215         have_WARNINGS="yes"
216         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
217             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
218             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
219         else
220             COLORWARN="* WARNING :"
221         fi
222     fi
223     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
226 dnl Some Mac User have the bad habit of letting a lot of crap
227 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
228 dnl that confuse the build.
229 dnl For the ones that use LODE, let's be nice and protect them
230 dnl from themselves
232 mac_sanitize_path()
234     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
235 dnl a common but nevertheless necessary thing that may be in a fancy
236 dnl path location is git, so make sure we have it
237     mac_git_path=`which git 2>/dev/null`
238     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
239         mac_path="$mac_path:`dirname $mac_git_path`"
240     fi
241 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
242 dnl path location is gpg, so make sure we find it
243     mac_gpg_path=`which gpg 2>/dev/null`
244     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
245         mac_path="$mac_path:`dirname $mac_gpg_path`"
246     fi
247     PATH="$mac_path"
248     unset mac_path
249     unset mac_git_path
250     unset mac_gpg_path
253 dnl semantically test a three digits version
254 dnl $1 - $3 = minimal version
255 dnl $4 - $6 = current version
257 check_semantic_version_three()
259     test "$4" -gt "$1" \
260         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
261         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
262     return $?
265 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
266 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
267 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
269 check_semantic_version_three_prefixed()
271     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
272     eval local MIN_MINOR="\$${1}_${2}_MINOR"
273     eval local MIN_TINY="\$${1}_${2}_TINY"
274     eval local CUR_MAJOR="\$${1}_MAJOR"
275     eval local CUR_MINOR="\$${1}_MINOR"
276     eval local CUR_TINY="\$${1}_TINY"
277     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
278     return $?
281 echo "********************************************************************"
282 echo "*"
283 echo "*   Running ${PACKAGE_NAME} build configuration."
284 echo "*"
285 echo "********************************************************************"
286 echo ""
288 dnl ===================================================================
289 dnl checks build and host OSes
290 dnl do this before argument processing to allow for platform dependent defaults
291 dnl ===================================================================
293 # Check for WSL. But if --host is explicitly specified (to really do build for
294 # Linux on WSL) trust that.
295 if test -z "$host" -a -z "$build" -a "$(uname -r | grep -i Microsoft 2>/dev/null)" != ""; then
296     ac_cv_host="x86_64-pc-wsl"
297     ac_cv_host_cpu="x86_64"
298     ac_cv_host_os="wsl"
299     ac_cv_build="$ac_cv_host"
300     ac_cv_build_cpu="$ac_cv_host_cpu"
301     ac_cv_build_os="$ac_cv_host_os"
303     # Emulation of Cygwin's cygpath command for WSL.
304     cygpath()
305     {
306         if test -n "$UNITTEST_WSL_CYGPATH"; then
307             echo -n cygpath "$@" "==> "
308         fi
310         # Cygwin's real cygpath has a plethora of options but we use only a few here.
311         local args="$@"
312         local opt
313         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
314         OPTIND=1
316         while getopts dmuwlsp opt; do
317             case "$opt" in
318                 \?)
319                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
320                     ;;
321                 ?)
322                     eval opt_$opt=yes
323                     ;;
324             esac
325         done
327         shift $((OPTIND-1))
329         if test $# -ne 1; then
330             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
331         fi
333         local input="$1"
335         local result
337         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
338             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
340             if test -n "$opt_u"; then
341                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
342             fi
344             case "$input" in
345                 /mnt/*)
346                     # A Windows file in WSL format
347                     input=$(wslpath -w "$input")
348                     ;;
349                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
350                     # Already in Windows format
351                     ;;
352                 /*)
353                     input=$(wslpath -w "$input")
354                     ;;
355                 *)
356                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
357                     ;;
358             esac
359             if test -n "$opt_d" -o -n "$opt_s"; then
360                 input=$($WSL_LO_HELPER --8.3 "$input")
361             fi
362             if test -n "$opt_m"; then
363                 input="${input//\\//}"
364             fi
365             echo "$input"
366         else
367             # Print Unix path
369             case "$input" in
370                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
371                     wslpath -u "$input"
372                     ;;
373                 /)
374                     echo "$input"
375                     ;;
376                 *)
377                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
378                     ;;
379             esac
380         fi
381     }
383     if test -n "$UNITTEST_WSL_CYGPATH"; then
384         BUILDDIR=.
386         # Nothing special with these file names, just arbitrary ones picked to test with
387         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
388         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
389         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
390         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
391         # At least on my machine for instance this file does have an 8.3 name
392         cygpath -d /mnt/c/windows/WindowsUpdate.log
393         # But for instance this one doesn't
394         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
395         cygpath -ws /mnt/c/windows/WindowsUpdate.log
396         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
397         cygpath -ms /mnt/c/windows/WindowsUpdate.log
399         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
400         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
402         exit 0
403     fi
405     if test -z "$WSL_LO_HELPER"; then
406         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
407             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
408         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
409             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
410         fi
411     fi
412     if test -z "$WSL_LO_HELPER"; then
413         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
414     fi
417 AC_CANONICAL_HOST
418 AC_CANONICAL_BUILD
420 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
421     BUILDDIR=.
422     GREP=grep
424     # Use of PathFormat must be after AC_CANONICAL_BUILD above
425     PathFormat /
426     printf "$formatted_path , $formatted_path_unix\n"
428     PathFormat $PWD
429     printf "$formatted_path , $formatted_path_unix\n"
431     PathFormat "$PROGRAMFILESX86"
432     printf "$formatted_path , $formatted_path_unix\n"
434     exit 0
437 AC_MSG_CHECKING([for product name])
438 PRODUCTNAME="AC_PACKAGE_NAME"
439 if test -n "$with_product_name" -a "$with_product_name" != no; then
440     PRODUCTNAME="$with_product_name"
442 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
443     PRODUCTNAME="${PRODUCTNAME}Dev"
445 AC_MSG_RESULT([$PRODUCTNAME])
446 AC_SUBST(PRODUCTNAME)
447 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
448 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
450 dnl ===================================================================
451 dnl Our version is defined by the AC_INIT() at the top of this script.
452 dnl ===================================================================
454 AC_MSG_CHECKING([for package version])
455 if test -n "$with_package_version" -a "$with_package_version" != no; then
456     PACKAGE_VERSION="$with_package_version"
458 AC_MSG_RESULT([$PACKAGE_VERSION])
460 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
462 LIBO_VERSION_MAJOR=$1
463 LIBO_VERSION_MINOR=$2
464 LIBO_VERSION_MICRO=$3
465 LIBO_VERSION_PATCH=$4
467 LIBO_VERSION_SUFFIX=$5
469 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
470 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
471 # they get undoubled before actually passed to sed.
472 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
473 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
474 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
475 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
477 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
478 # three non-negative integers. Please find more information about CFBundleVersion at
479 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
481 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
482 # of at most three non-negative integers. Please find more information about
483 # CFBundleShortVersionString at
484 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
486 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
488 if test "$enable_macosx_sandbox" = yes; then
489     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
490     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
491 else
492     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
493     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
496 AC_SUBST(LIBO_VERSION_MAJOR)
497 AC_SUBST(LIBO_VERSION_MINOR)
498 AC_SUBST(LIBO_VERSION_MICRO)
499 AC_SUBST(LIBO_VERSION_PATCH)
500 AC_SUBST(LIBO_VERSION_SUFFIX)
501 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
502 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
503 AC_SUBST(MACOSX_BUNDLE_VERSION)
505 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
506 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
507 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
508 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
510 LIBO_THIS_YEAR=`date +%Y`
511 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
513 dnl ===================================================================
514 dnl Product version
515 dnl ===================================================================
516 AC_MSG_CHECKING([for product version])
517 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
518 AC_MSG_RESULT([$PRODUCTVERSION])
519 AC_SUBST(PRODUCTVERSION)
521 AC_PROG_EGREP
522 # AC_PROG_EGREP doesn't set GREP on all systems as well
523 AC_PATH_PROG(GREP, grep)
525 BUILDDIR=`pwd`
526 cd $srcdir
527 SRC_ROOT=`pwd`
528 cd $BUILDDIR
529 x_Cygwin=[\#]
531 dnl ======================================
532 dnl Required GObject introspection version
533 dnl ======================================
534 INTROSPECTION_REQUIRED_VERSION=1.32.0
536 dnl ===================================================================
537 dnl Search all the common names for GNU Make
538 dnl ===================================================================
539 AC_MSG_CHECKING([for GNU Make])
541 # try to use our own make if it is available and GNUMAKE was not already defined
542 if test -z "$GNUMAKE"; then
543     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
544         GNUMAKE="$LODE_HOME/opt/bin/make"
545     elif test -x "/opt/lo/bin/make"; then
546         GNUMAKE="/opt/lo/bin/make"
547     fi
550 GNUMAKE_WIN_NATIVE=
551 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
552     if test -n "$a"; then
553         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
554         if test $? -eq 0;  then
555             if test "$build_os" = "cygwin"; then
556                 if test -n "$($a -v | grep 'Built for Windows')" ; then
557                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
558                     GNUMAKE_WIN_NATIVE="TRUE"
559                 else
560                     GNUMAKE=`which $a`
561                 fi
562             else
563                 GNUMAKE=`which $a`
564             fi
565             break
566         fi
567     fi
568 done
569 AC_MSG_RESULT($GNUMAKE)
570 if test -z "$GNUMAKE"; then
571     AC_MSG_ERROR([not found. install GNU Make.])
572 else
573     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
574         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
575     fi
578 win_short_path_for_make()
580     local short_path="$1"
581     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
582         cygpath -sm "$short_path"
583     else
584         cygpath -u "$(cygpath -d "$short_path")"
585     fi
589 if test "$build_os" = "cygwin"; then
590     PathFormat "$SRC_ROOT"
591     SRC_ROOT="$formatted_path"
592     PathFormat "$BUILDDIR"
593     BUILDDIR="$formatted_path"
594     x_Cygwin=
595     AC_MSG_CHECKING(for explicit COMSPEC)
596     if test -z "$COMSPEC"; then
597         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
598     else
599         AC_MSG_RESULT([found: $COMSPEC])
600     fi
603 AC_SUBST(SRC_ROOT)
604 AC_SUBST(BUILDDIR)
605 AC_SUBST(x_Cygwin)
606 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
607 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
608 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
610 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
611     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
614 # need sed in os checks...
615 AC_PATH_PROGS(SED, sed)
616 if test -z "$SED"; then
617     AC_MSG_ERROR([install sed to run this script])
620 # Set the ENABLE_LTO variable
621 # ===================================================================
622 AC_MSG_CHECKING([whether to use link-time optimization])
623 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
624     ENABLE_LTO="TRUE"
625     AC_MSG_RESULT([yes])
626 else
627     ENABLE_LTO=""
628     AC_MSG_RESULT([no])
630 AC_SUBST(ENABLE_LTO)
632 AC_ARG_ENABLE(fuzz-options,
633     AS_HELP_STRING([--enable-fuzz-options],
634         [Randomly enable or disable each of those configurable options
635          that are supposed to be freely selectable without interdependencies,
636          or where bad interaction from interdependencies is automatically avoided.])
639 dnl ===================================================================
640 dnl When building for Android, --with-android-ndk,
641 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
642 dnl mandatory
643 dnl ===================================================================
645 AC_ARG_WITH(android-ndk,
646     AS_HELP_STRING([--with-android-ndk],
647         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
650 AC_ARG_WITH(android-ndk-toolchain-version,
651     AS_HELP_STRING([--with-android-ndk-toolchain-version],
652         [Specify which toolchain version to use, of those present in the
653         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
654         with_android_ndk_toolchain_version=clang5.0)
656 AC_ARG_WITH(android-sdk,
657     AS_HELP_STRING([--with-android-sdk],
658         [Specify location of the Android SDK. Mandatory when building for Android.]),
661 AC_ARG_WITH(android-api-level,
662     AS_HELP_STRING([--with-android-api-level],
663         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
666 ANDROID_NDK_DIR=
667 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
668     with_android_ndk="$SRC_ROOT/external/android-ndk"
670 if test -n "$with_android_ndk"; then
671     eval ANDROID_NDK_DIR=$with_android_ndk
673     # Set up a lot of pre-canned defaults
675     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
676         if test ! -f $ANDROID_NDK_DIR/source.properties; then
677             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
678         fi
679         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
680     else
681         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
682     fi
683     if test -z "$ANDROID_NDK_VERSION";  then
684         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
685     fi
686     case $ANDROID_NDK_VERSION in
687     r9*|r10*)
688         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
689         ;;
690     11.1.*|12.1.*|13.1.*|14.1.*)
691         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
692         ;;
693     16.*|17.*|18.*|19.*|20.*)
694         ;;
695     *)
696         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
697         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
698         ;;
699     esac
701     ANDROID_API_LEVEL=16
702     if test -n "$with_android_api_level" ; then
703         ANDROID_API_LEVEL="$with_android_api_level"
704     fi
706     android_cpu=$host_cpu
707     if test $host_cpu = arm; then
708         android_platform_prefix=arm-linux-androideabi
709         android_gnu_prefix=$android_platform_prefix
710         LLVM_TRIPLE=armv7a-linux-androideabi
711         ANDROID_APP_ABI=armeabi-v7a
712         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
713     elif test $host_cpu = aarch64; then
714         android_platform_prefix=aarch64-linux-android
715         android_gnu_prefix=$android_platform_prefix
716         LLVM_TRIPLE=$android_platform_prefix
717         # minimum android version that supports aarch64
718         if test "$ANDROID_API_LEVEL" -lt "21" ; then
719             ANDROID_API_LEVEL=21
720         fi
721         ANDROID_APP_ABI=arm64-v8a
722     elif test $host_cpu = x86_64; then
723         android_platform_prefix=x86_64-linux-android
724         android_gnu_prefix=$android_platform_prefix
725         LLVM_TRIPLE=$android_platform_prefix
726         # minimum android version that supports x86_64
727         ANDROID_API_LEVEL=21
728         ANDROID_APP_ABI=x86_64
729     else
730         # host_cpu is something like "i386" or "i686" I guess, NDK uses
731         # "x86" in some contexts
732         android_cpu=x86
733         android_platform_prefix=$android_cpu
734         android_gnu_prefix=i686-linux-android
735         LLVM_TRIPLE=$android_gnu_prefix
736         ANDROID_APP_ABI=x86
737     fi
739     case "$with_android_ndk_toolchain_version" in
740     clang5.0)
741         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
742         ;;
743     *)
744         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
745     esac
747     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
749     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
750     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
751     # manage to link the (app-specific) single huge .so that is built for the app in
752     # android/source/ if there is debug information in a significant part of the object files.
753     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
754     # all objects have been built with debug information.)
755     case $build_os in
756     linux-gnu*)
757         android_HOST_TAG=linux-x86_64
758         ;;
759     darwin*)
760         android_HOST_TAG=darwin-x86_64
761         ;;
762     *)
763         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
764         # ndk would also support windows and windows-x86_64
765         ;;
766     esac
767     android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
768     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
769     dnl TODO: NSS build uses it...
770     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
771     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
773     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
774     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
775     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
776     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
777     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
779     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
780     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
781     if test "$ENABLE_LTO" = TRUE; then
782         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
783         # $CC and $CXX when building external libraries
784         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
785     fi
787     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
789     if test -z "$CC"; then
790         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
791         CC_BASE="clang"
792     fi
793     if test -z "$CXX"; then
794         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
795         CXX_BASE="clang++"
796     fi
798 AC_SUBST(ANDROID_NDK_DIR)
799 AC_SUBST(ANDROID_APP_ABI)
800 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
802 dnl ===================================================================
803 dnl --with-android-sdk
804 dnl ===================================================================
805 ANDROID_SDK_DIR=
806 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
807     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
809 if test -n "$with_android_sdk"; then
810     eval ANDROID_SDK_DIR=$with_android_sdk
811     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
813 AC_SUBST(ANDROID_SDK_DIR)
815 AC_ARG_ENABLE([android-lok],
816     AS_HELP_STRING([--enable-android-lok],
817         [The Android app from the android/ subdir needs several tweaks all
818          over the place that break the LOK when used in the Online-based
819          Android app.  This switch indicates that the intent of this build is
820          actually the Online-based, non-modified LOK.])
822 ENABLE_ANDROID_LOK=
823 if test -n "$ANDROID_NDK_DIR" ; then
824     if test "$enable_android_lok" = yes; then
825         ENABLE_ANDROID_LOK=TRUE
826         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
827         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
828     else
829         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
830     fi
832 AC_SUBST([ENABLE_ANDROID_LOK])
834 libo_FUZZ_ARG_ENABLE([android-editing],
835     AS_HELP_STRING([--enable-android-editing],
836         [Enable the experimental editing feature on Android.])
838 ENABLE_ANDROID_EDITING=
839 if test "$enable_android_editing" = yes; then
840     ENABLE_ANDROID_EDITING=TRUE
842 AC_SUBST([ENABLE_ANDROID_EDITING])
844 disable_database_connectivity_dependencies()
846     enable_evolution2=no
847     enable_firebird_sdbc=no
848     enable_mariadb_sdbc=no
849     enable_postgresql_sdbc=no
850     enable_report_builder=no
853 # ===================================================================
855 # Start initial platform setup
857 # The using_* variables reflect platform support and should not be
858 # changed after the "End initial platform setup" block.
859 # This is also true for most test_* variables.
860 # ===================================================================
861 build_crypto=yes
862 test_clucene=no
863 test_gdb_index=no
864 test_openldap=yes
865 test_split_debug=no
866 test_webdav=yes
867 usable_dlapi=yes
869 # There is currently just iOS not using salplug, so this explicitly enables it.
870 # must: using_freetype_fontconfig
871 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
872 # must: using_x11
874 # Default values, as such probably valid just for Linux, set
875 # differently below just for Mac OSX, but at least better than
876 # hardcoding these as we used to do. Much of this is duplicated also
877 # in solenv for old build system and for gbuild, ideally we should
878 # perhaps define stuff like this only here in configure.ac?
880 LINKFLAGSSHL="-shared"
881 PICSWITCH="-fpic"
882 DLLPOST=".so"
884 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
886 INSTROOTBASESUFFIX=
887 INSTROOTCONTENTSUFFIX=
888 SDKDIRNAME=sdk
890 HOST_PLATFORM="$host"
892 host_cpu_for_clang="$host_cpu"
894 case "$host_os" in
896 solaris*)
897     using_freetype_fontconfig=yes
898     using_x11=yes
899     build_skia=yes
900     _os=SunOS
902     dnl ===========================================================
903     dnl Check whether we're using Solaris 10 - SPARC or Intel.
904     dnl ===========================================================
905     AC_MSG_CHECKING([the Solaris operating system release])
906     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
907     if test "$_os_release" -lt "10"; then
908         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
909     else
910         AC_MSG_RESULT([ok ($_os_release)])
911     fi
913     dnl Check whether we're using a SPARC or i386 processor
914     AC_MSG_CHECKING([the processor type])
915     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
916         AC_MSG_RESULT([ok ($host_cpu)])
917     else
918         AC_MSG_ERROR([only SPARC and i386 processors are supported])
919     fi
920     ;;
922 linux-gnu*|k*bsd*-gnu*|linux-musl*)
923     using_freetype_fontconfig=yes
924     using_x11=yes
925     build_skia=yes
926     test_gdb_index=yes
927     test_split_debug=yes
928     if test "$enable_fuzzers" = yes; then
929         test_system_freetype=no
930     fi
931     _os=Linux
932     ;;
934 gnu)
935     using_freetype_fontconfig=yes
936     using_x11=no
937     _os=GNU
938      ;;
940 cygwin*|wsl*)
941     # When building on Windows normally with MSVC under Cygwin,
942     # configure thinks that the host platform (the platform the
943     # built code will run on) is Cygwin, even if it obviously is
944     # Windows, which in Autoconf terminology is called
945     # "mingw32". (Which is misleading as MinGW is the name of the
946     # tool-chain, not an operating system.)
948     # Somewhat confusing, yes. But this configure script doesn't
949     # look at $host etc that much, it mostly uses its own $_os
950     # variable, set here in this case statement.
952     using_freetype_fontconfig=no
953     using_x11=no
954     test_unix_dlapi=no
955     test_openldap=no
956     enable_pagein=no
957     build_skia=yes
958     _os=WINNT
960     DLLPOST=".dll"
961     LINKFLAGSNOUNDEFS=
963     if test "$host_cpu" = "aarch64"; then
964         build_skia=no
965         enable_gpgmepp=no
966         enable_coinmp=no
967         enable_firebird_sdbc=no
968     fi
969     ;;
971 darwin*) # macOS
972     using_freetype_fontconfig=no
973     using_x11=no
974     build_skia=yes
975     enable_pagein=no
976     if test -n "$LODE_HOME" ; then
977         mac_sanitize_path
978         AC_MSG_NOTICE([sanitized the PATH to $PATH])
979     fi
980     _os=Darwin
981     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
982     INSTROOTCONTENTSUFFIX=/Contents
983     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
984     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
985     LINKFLAGSSHL="-dynamiclib -single_module"
987     # -fPIC is default
988     PICSWITCH=""
990     DLLPOST=".dylib"
992     # -undefined error is the default
993     LINKFLAGSNOUNDEFS=""
994     case "$host_cpu" in
995     aarch64|arm64)
996         # Apple's Clang uses "arm64"
997         host_cpu_for_clang=arm64
998     esac
1001 ios*) # iOS
1002     using_freetype_fontconfig=no
1003     using_x11=no
1004     build_crypto=no
1005     test_libcmis=no
1006     test_openldap=no
1007     test_webdav=no
1008     if test -n "$LODE_HOME" ; then
1009         mac_sanitize_path
1010         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1011     fi
1012     enable_gpgmepp=no
1013     _os=iOS
1014     enable_mpl_subset=yes
1015     enable_lotuswordpro=no
1016     disable_database_connectivity_dependencies
1017     enable_coinmp=no
1018     enable_lpsolve=no
1019     enable_extension_integration=no
1020     enable_xmlhelp=no
1021     with_ppds=no
1022     if test "$enable_ios_simulator" = "yes"; then
1023         host=x86_64-apple-darwin
1024     fi
1025     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1026     LINKFLAGSSHL="-dynamiclib -single_module"
1028     # -fPIC is default
1029     PICSWITCH=""
1031     DLLPOST=".dylib"
1033     # -undefined error is the default
1034     LINKFLAGSNOUNDEFS=""
1036     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1037     # part, so use aarch64-apple-darwin for now.
1038     HOST_PLATFORM=aarch64-apple-darwin
1040     # Apple's Clang uses "arm64"
1041     host_cpu_for_clang=arm64
1044 freebsd*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     build_skia=yes
1048     AC_MSG_CHECKING([the FreeBSD operating system release])
1049     if test -n "$with_os_version"; then
1050         OSVERSION="$with_os_version"
1051     else
1052         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1053     fi
1054     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1055     AC_MSG_CHECKING([which thread library to use])
1056     if test "$OSVERSION" -lt "500016"; then
1057         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1058         PTHREAD_LIBS="-pthread"
1059     elif test "$OSVERSION" -lt "502102"; then
1060         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1061         PTHREAD_LIBS="-lc_r"
1062     else
1063         PTHREAD_CFLAGS=""
1064         PTHREAD_LIBS="-pthread"
1065     fi
1066     AC_MSG_RESULT([$PTHREAD_LIBS])
1067     _os=FreeBSD
1068     ;;
1070 *netbsd*)
1071     using_freetype_fontconfig=yes
1072     using_x11=yes
1073     test_gtk3_kde5=no
1074     build_skia=yes
1075     PTHREAD_LIBS="-pthread -lpthread"
1076     _os=NetBSD
1077     ;;
1079 aix*)
1080     using_freetype_fontconfig=yes
1081     using_x11=yes
1082     test_randr=no
1083     test_gstreamer_1_0=no
1084     PTHREAD_LIBS=-pthread
1085     _os=AIX
1086     ;;
1088 openbsd*)
1089     using_freetype_fontconfig=yes
1090     using_x11=yes
1091     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1092     PTHREAD_LIBS="-pthread"
1093     _os=OpenBSD
1094     ;;
1096 dragonfly*)
1097     using_freetype_fontconfig=yes
1098     using_x11=yes
1099     build_skia=yes
1100     PTHREAD_LIBS="-pthread"
1101     _os=DragonFly
1102     ;;
1104 linux-android*)
1105     # API exists, but seems not really usable since Android 7 AFAIK
1106     usable_dlapi=no
1107     using_freetype_fontconfig=yes
1108     using_headless_plugin=no
1109     using_x11=no
1110     build_crypto=no
1111     test_openldap=no
1112     test_system_freetype=no
1113     test_webdav=no
1114     disable_database_connectivity_dependencies
1115     enable_lotuswordpro=no
1116     enable_mpl_subset=yes
1117     enable_cairo_canvas=no
1118     enable_coinmp=yes
1119     enable_lpsolve=no
1120     enable_odk=no
1121     enable_python=no
1122     enable_xmlhelp=no
1123     _os=Android
1124     ;;
1126 haiku*)
1127     using_freetype_fontconfig=yes
1128     using_x11=no
1129     test_gtk3=no
1130     test_gtk3_kde5=no
1131     test_kf5=yes
1132     enable_odk=no
1133     enable_coinmp=no
1134     enable_pdfium=no
1135     enable_sdremote=no
1136     enable_postgresql_sdbc=no
1137     enable_firebird_sdbc=no
1138     _os=Haiku
1139     ;;
1141 emscripten)
1142     # API currently just exists in headers, not code
1143     usable_dlapi=no
1144     using_freetype_fontconfig=yes
1145     using_x11=no
1146     test_openldap=no
1147     test_qt5=yes
1148     test_split_debug=yes
1149     test_system_freetype=no
1150     enable_compiler_plugins=no
1151     enable_customtarget_components=yes
1152     enable_qt5=yes
1153     enable_scripting=no
1154     enable_split_debug=yes
1155     enable_wasm_strip=yes
1156     with_system_zlib=no
1157     with_theme="colibre"
1158     _os=Emscripten
1159     ;;
1162     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1163     ;;
1164 esac
1166 AC_SUBST(HOST_PLATFORM)
1168 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1169     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1172 # Set defaults, if not set by platform
1173 test "${test_cups+set}" = set || test_cups="$using_x11"
1174 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1175 test "${test_gen+set}" = set || test_gen="$using_x11"
1176 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1177 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1178 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1179 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1180 # don't handle test_qt5, so it can disable test_kf5 later
1181 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1182 test "${test_randr+set}" = set || test_randr="$using_x11"
1183 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1184 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1186 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1187 # Make sure fontconfig and freetype test both either system or not
1188 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1189 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1191 # convenience / platform overriding "fixes"
1192 # Don't sort!
1193 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1194 test "$test_kf5" = yes && test_qt5=yes
1195 test "$test_gtk3" != yes && enable_gtk3=no
1196 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1197 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1198 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1200 # Keep in sync with the above $using_x11 depending test default list
1201 disable_x11_tests()
1203     test_cups=no
1204     test_dbus=no
1205     test_gen=no
1206     test_gstreamer_1_0=no
1207     test_gtk3_kde5=no
1208     test_gtk3=no
1209     test_gtk4=no
1210     test_kf5=no
1211     test_qt5=no
1212     test_qt6=no
1213     test_randr=no
1214     test_xrender=no
1217 test "$using_x11" = yes && USING_X11=TRUE
1219 if test "$using_freetype_fontconfig" = yes; then
1220     USE_HEADLESS_CODE=TRUE
1221     if test "$using_headless_plugin" = yes; then
1222         AC_DEFINE(ENABLE_HEADLESS)
1223         ENABLE_HEADLESS=TRUE
1224     fi
1225 else
1226     test_fontconfig=no
1227     test_freetype=no
1230 AC_SUBST(ENABLE_HEADLESS)
1231 AC_SUBST(USE_HEADLESS_CODE)
1233 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1234 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1235 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1236 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1238 # ===================================================================
1240 # End initial platform setup
1242 # ===================================================================
1244 if test "$_os" = "Android" ; then
1245     # Verify that the NDK and SDK options are proper
1246     if test -z "$with_android_ndk"; then
1247         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1248     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1249         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1250     fi
1252     if test -z "$ANDROID_SDK_DIR"; then
1253         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1254     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1255         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1256     fi
1259 if test "$_os" = "AIX"; then
1260     AC_PATH_PROG(GAWK, gawk)
1261     if test -z "$GAWK"; then
1262         AC_MSG_ERROR([gawk not found in \$PATH])
1263     fi
1266 AC_SUBST(SDKDIRNAME)
1268 AC_SUBST(PTHREAD_CFLAGS)
1269 AC_SUBST(PTHREAD_LIBS)
1271 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1272 # By default use the ones specified by our build system,
1273 # but explicit override is possible.
1274 AC_MSG_CHECKING(for explicit AFLAGS)
1275 if test -n "$AFLAGS"; then
1276     AC_MSG_RESULT([$AFLAGS])
1277     x_AFLAGS=
1278 else
1279     AC_MSG_RESULT(no)
1280     x_AFLAGS=[\#]
1282 AC_MSG_CHECKING(for explicit CFLAGS)
1283 if test -n "$CFLAGS"; then
1284     AC_MSG_RESULT([$CFLAGS])
1285     x_CFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_CFLAGS=[\#]
1290 AC_MSG_CHECKING(for explicit CXXFLAGS)
1291 if test -n "$CXXFLAGS"; then
1292     AC_MSG_RESULT([$CXXFLAGS])
1293     x_CXXFLAGS=
1294 else
1295     AC_MSG_RESULT(no)
1296     x_CXXFLAGS=[\#]
1298 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1299 if test -n "$OBJCFLAGS"; then
1300     AC_MSG_RESULT([$OBJCFLAGS])
1301     x_OBJCFLAGS=
1302 else
1303     AC_MSG_RESULT(no)
1304     x_OBJCFLAGS=[\#]
1306 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1307 if test -n "$OBJCXXFLAGS"; then
1308     AC_MSG_RESULT([$OBJCXXFLAGS])
1309     x_OBJCXXFLAGS=
1310 else
1311     AC_MSG_RESULT(no)
1312     x_OBJCXXFLAGS=[\#]
1314 AC_MSG_CHECKING(for explicit LDFLAGS)
1315 if test -n "$LDFLAGS"; then
1316     AC_MSG_RESULT([$LDFLAGS])
1317     x_LDFLAGS=
1318 else
1319     AC_MSG_RESULT(no)
1320     x_LDFLAGS=[\#]
1322 AC_SUBST(AFLAGS)
1323 AC_SUBST(CFLAGS)
1324 AC_SUBST(CXXFLAGS)
1325 AC_SUBST(OBJCFLAGS)
1326 AC_SUBST(OBJCXXFLAGS)
1327 AC_SUBST(LDFLAGS)
1328 AC_SUBST(x_AFLAGS)
1329 AC_SUBST(x_CFLAGS)
1330 AC_SUBST(x_CXXFLAGS)
1331 AC_SUBST(x_OBJCFLAGS)
1332 AC_SUBST(x_OBJCXXFLAGS)
1333 AC_SUBST(x_LDFLAGS)
1335 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1336 my_original_CFLAGS=$CFLAGS
1337 my_original_CXXFLAGS=$CXXFLAGS
1338 my_original_CPPFLAGS=$CPPFLAGS
1340 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1341 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1342 dnl AC_PROG_CC internally.
1343 if test "$_os" != "WINNT"; then
1344     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1345     save_CFLAGS=$CFLAGS
1346     AC_PROG_CC
1347     CFLAGS=$save_CFLAGS
1348     if test -z "$CC_BASE"; then
1349         CC_BASE=`first_arg_basename "$CC"`
1350     fi
1353 if test "$_os" != "WINNT"; then
1354     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1355 else
1356     ENDIANNESS=little
1358 AC_SUBST(ENDIANNESS)
1360 if test "$usable_dlapi" != no; then
1361     AC_DEFINE([HAVE_DLAPI])
1362     if test "$test_unix_dlapi" != no; then
1363         save_LIBS="$LIBS"
1364         AC_SEARCH_LIBS([dlsym], [dl],
1365             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1366             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1367         LIBS="$save_LIBS"
1368         AC_DEFINE([HAVE_UNIX_DLAPI])
1369     fi
1371 AC_SUBST(UNIX_DLAPI_LIBS)
1373 # Check for a (GNU) backtrace implementation
1374 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1375 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1376 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1377     save_LIBS="$LIBS"
1378     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1379         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1380         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1381     LIBS="$save_LIBS"
1383 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1384     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1387 dnl ===================================================================
1388 dnl Sanity checks for Emscripten SDK setup
1389 dnl ===================================================================
1391 EMSCRIPTEN_MIN_MAJOR=2
1392 EMSCRIPTEN_MIN_MINOR=0
1393 EMSCRIPTEN_MIN_TINY=31
1394 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1396 if test "$_os" = "Emscripten"; then
1397     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1398     EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1399     EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1400     EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1401     EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1402     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1404     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1405     if test $? -eq 0; then
1406         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1407     else
1408         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1409     fi
1411     EMSCRIPTEN_ERROR=0
1412     if ! which emconfigure >/dev/null 2>&1; then
1413         AC_MSG_WARN([emconfigure must be in your \$PATH])
1414         EMSCRIPTEN_ERROR=1
1415     fi
1416     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1417         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1418         EMSCRIPTEN_ERROR=1
1419     fi
1420     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1421     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1422         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1423         EMSCRIPTEN_ERROR=1
1424     fi
1425     if test $EMSCRIPTEN_ERROR -ne 0; then
1426         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1427     fi
1429 AC_SUBST(EMSDK_FILE_PACKAGER)
1431 ###############################################################################
1432 # Extensions switches --enable/--disable
1433 ###############################################################################
1434 # By default these should be enabled unless having extra dependencies.
1435 # If there is extra dependency over configure options then the enable should
1436 # be automagic based on whether the requiring feature is enabled or not.
1437 # All this options change anything only with --enable-extension-integration.
1439 # The name of this option and its help string makes it sound as if
1440 # extensions are built anyway, just not integrated in the installer,
1441 # if you use --disable-extension-integration. Is that really the
1442 # case?
1444 AC_ARG_ENABLE(ios-simulator,
1445     AS_HELP_STRING([--enable-ios-simulator],
1446         [build for iOS simulator])
1449 libo_FUZZ_ARG_ENABLE(extension-integration,
1450     AS_HELP_STRING([--disable-extension-integration],
1451         [Disable integration of the built extensions in the installer of the
1452          product. Use this switch to disable the integration.])
1455 AC_ARG_ENABLE(avmedia,
1456     AS_HELP_STRING([--disable-avmedia],
1457         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1458 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1460 AC_ARG_ENABLE(database-connectivity,
1461     AS_HELP_STRING([--disable-database-connectivity],
1462         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1465 # This doesn't mean not building (or "integrating") extensions
1466 # (although it probably should; i.e. it should imply
1467 # --disable-extension-integration I guess), it means not supporting
1468 # any extension mechanism at all
1469 libo_FUZZ_ARG_ENABLE(extensions,
1470     AS_HELP_STRING([--disable-extensions],
1471         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1474 AC_ARG_ENABLE(scripting,
1475     AS_HELP_STRING([--disable-scripting],
1476         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1477 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1479 # This is mainly for Android and iOS, but could potentially be used in some
1480 # special case otherwise, too, so factored out as a separate setting
1482 AC_ARG_ENABLE(dynamic-loading,
1483     AS_HELP_STRING([--disable-dynamic-loading],
1484         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1487 libo_FUZZ_ARG_ENABLE(report-builder,
1488     AS_HELP_STRING([--disable-report-builder],
1489         [Disable the Report Builder.])
1492 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1493     AS_HELP_STRING([--enable-ext-wiki-publisher],
1494         [Enable the Wiki Publisher extension.])
1497 libo_FUZZ_ARG_ENABLE(lpsolve,
1498     AS_HELP_STRING([--disable-lpsolve],
1499         [Disable compilation of the lp solve solver ])
1501 libo_FUZZ_ARG_ENABLE(coinmp,
1502     AS_HELP_STRING([--disable-coinmp],
1503         [Disable compilation of the CoinMP solver ])
1506 libo_FUZZ_ARG_ENABLE(pdfimport,
1507     AS_HELP_STRING([--disable-pdfimport],
1508         [Disable building the PDF import feature.])
1511 libo_FUZZ_ARG_ENABLE(pdfium,
1512     AS_HELP_STRING([--disable-pdfium],
1513         [Disable building PDFium. Results in unsecure PDF signature verification.])
1516 libo_FUZZ_ARG_ENABLE(skia,
1517     AS_HELP_STRING([--disable-skia],
1518         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1521 ###############################################################################
1523 dnl ---------- *** ----------
1525 libo_FUZZ_ARG_ENABLE(mergelibs,
1526     AS_HELP_STRING([--enable-mergelibs],
1527         [Merge several of the smaller libraries into one big, "merged", one.])
1530 libo_FUZZ_ARG_ENABLE(breakpad,
1531     AS_HELP_STRING([--enable-breakpad],
1532         [Enables breakpad for crash reporting.])
1535 libo_FUZZ_ARG_ENABLE(crashdump,
1536     AS_HELP_STRING([--disable-crashdump],
1537         [Disable dump.ini and dump-file, when --enable-breakpad])
1540 AC_ARG_ENABLE(fetch-external,
1541     AS_HELP_STRING([--disable-fetch-external],
1542         [Disables fetching external tarballs from web sources.])
1545 AC_ARG_ENABLE(fuzzers,
1546     AS_HELP_STRING([--enable-fuzzers],
1547         [Enables building libfuzzer targets for fuzz testing.])
1550 libo_FUZZ_ARG_ENABLE(pch,
1551     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1552         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1553          Using 'system' will include only external headers, 'base' will add also headers
1554          from base modules, 'normal' will also add all headers except from the module built,
1555          'full' will use all suitable headers even from a module itself.])
1558 libo_FUZZ_ARG_ENABLE(epm,
1559     AS_HELP_STRING([--enable-epm],
1560         [LibreOffice includes self-packaging code, that requires epm, however epm is
1561          useless for large scale package building.])
1564 libo_FUZZ_ARG_ENABLE(odk,
1565     AS_HELP_STRING([--enable-odk],
1566         [Enable building the Office Development Kit, the part that extensions need to build against])
1569 AC_ARG_ENABLE(mpl-subset,
1570     AS_HELP_STRING([--enable-mpl-subset],
1571         [Don't compile any pieces which are not MPL or more liberally licensed])
1574 libo_FUZZ_ARG_ENABLE(evolution2,
1575     AS_HELP_STRING([--enable-evolution2],
1576         [Allows the built-in evolution 2 addressbook connectivity build to be
1577          enabled.])
1580 AC_ARG_ENABLE(avahi,
1581     AS_HELP_STRING([--enable-avahi],
1582         [Determines whether to use Avahi to advertise Impress to remote controls.])
1585 libo_FUZZ_ARG_ENABLE(werror,
1586     AS_HELP_STRING([--enable-werror],
1587         [Turn warnings to errors. (Has no effect in modules where the treating
1588          of warnings as errors is disabled explicitly.)]),
1591 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1592     AS_HELP_STRING([--enable-assert-always-abort],
1593         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1596 libo_FUZZ_ARG_ENABLE(dbgutil,
1597     AS_HELP_STRING([--enable-dbgutil],
1598         [Provide debugging support from --enable-debug and include additional debugging
1599          utilities such as object counting or more expensive checks.
1600          This is the recommended option for developers.
1601          Note that this makes the build ABI incompatible, it is not possible to mix object
1602          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1604 libo_FUZZ_ARG_ENABLE(debug,
1605     AS_HELP_STRING([--enable-debug],
1606         [Include debugging information, disable compiler optimization and inlining plus
1607          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1609 libo_FUZZ_ARG_ENABLE(split-debug,
1610     AS_HELP_STRING([--disable-split-debug],
1611         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1612          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1614 libo_FUZZ_ARG_ENABLE(gdb-index,
1615     AS_HELP_STRING([--disable-gdb-index],
1616         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1617          The feature requires a linker that supports the --gdb-index option.]))
1619 libo_FUZZ_ARG_ENABLE(sal-log,
1620     AS_HELP_STRING([--enable-sal-log],
1621         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1623 libo_FUZZ_ARG_ENABLE(symbols,
1624     AS_HELP_STRING([--enable-symbols],
1625         [Generate debug information.
1626          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1627          otherwise. It is possible to explicitly specify gbuild build targets
1628          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1629          everything in the directory; there is no ordering, more specific overrides
1630          more general, and disabling takes precedence).
1631          Example: --enable-symbols="all -sw/ -Library_sc".]))
1633 libo_FUZZ_ARG_ENABLE(optimized,
1634     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1635         [Whether to compile with optimization flags.
1636          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1637          otherwise. Using 'debug' will try to use only optimizations that should
1638          not interfere with debugging. For Emscripten we default to optimized (-O1)
1639          debug build, as otherwise binaries become too large.]))
1641 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1642     AS_HELP_STRING([--disable-runtime-optimizations],
1643         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1644          JVM JIT) that are known to interact badly with certain dynamic analysis
1645          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1646          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1647          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1649 AC_ARG_WITH(valgrind,
1650     AS_HELP_STRING([--with-valgrind],
1651         [Make availability of Valgrind headers a hard requirement.]))
1653 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1654     AS_HELP_STRING([--enable-compiler-plugins],
1655         [Enable compiler plugins that will perform additional checks during
1656          building. Enabled automatically by --enable-dbgutil.
1657          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1658 COMPILER_PLUGINS_DEBUG=
1659 if test "$enable_compiler_plugins" = debug; then
1660     enable_compiler_plugins=yes
1661     COMPILER_PLUGINS_DEBUG=TRUE
1664 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1665     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1666         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1667          relevant in the --disable-compiler-plugins case.]))
1669 libo_FUZZ_ARG_ENABLE(ooenv,
1670     AS_HELP_STRING([--enable-ooenv],
1671         [Enable ooenv for the instdir installation.]))
1673 AC_ARG_ENABLE(lto,
1674     AS_HELP_STRING([--enable-lto],
1675         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1676          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1677          linker.)]))
1679 AC_ARG_ENABLE(python,
1680     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1681         [Enables or disables Python support at run-time.
1682          Also specifies what Python to use at build-time.
1683          'fully-internal' even forces the internal version for uses of Python
1684          during the build.
1685          On macOS the only choices are
1686          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1687          ]))
1689 libo_FUZZ_ARG_ENABLE(gtk3,
1690     AS_HELP_STRING([--disable-gtk3],
1691         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1692 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1694 AC_ARG_ENABLE(gtk4,
1695     AS_HELP_STRING([--enable-gtk4],
1696         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
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(gtk3_kde5,
1760     AS_HELP_STRING([--enable-gtk3-kde5],
1761         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1762          platforms where Gtk3, Qt5 and Plasma is available.]),
1765 AC_ARG_ENABLE(gen,
1766     AS_HELP_STRING([--enable-gen],
1767         [To select the gen backend in case of --disable-dynamic-loading.
1768          Per default auto-enabled when X11 is used.]),
1769 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1771 AC_ARG_ENABLE(gui,
1772     AS_HELP_STRING([--disable-gui],
1773         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1774 ,enable_gui=yes)
1776 libo_FUZZ_ARG_ENABLE(randr,
1777     AS_HELP_STRING([--disable-randr],
1778         [Disable RandR support in the vcl project.]),
1779 ,test "${enable_randr+set}" = set || enable_randr=yes)
1781 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1782     AS_HELP_STRING([--disable-gstreamer-1-0],
1783         [Disable building with the gstreamer 1.0 avmedia backend.]),
1784 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1786 libo_FUZZ_ARG_ENABLE([eot],
1787     [AS_HELP_STRING([--enable-eot],
1788         [Enable support for Embedded OpenType fonts.])],
1789 ,test "${enable_eot+set}" = set || enable_eot=no)
1791 libo_FUZZ_ARG_ENABLE(cve-tests,
1792     AS_HELP_STRING([--disable-cve-tests],
1793         [Prevent CVE tests to be executed]),
1796 AC_ARG_ENABLE(build-opensymbol,
1797     AS_HELP_STRING([--enable-build-opensymbol],
1798         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1799          fontforge installed.]),
1802 AC_ARG_ENABLE(dependency-tracking,
1803     AS_HELP_STRING([--enable-dependency-tracking],
1804         [Do not reject slow dependency extractors.])[
1805   --disable-dependency-tracking
1806                           Disables generation of dependency information.
1807                           Speed up one-time builds.],
1810 AC_ARG_ENABLE(icecream,
1811     AS_HELP_STRING([--enable-icecream],
1812         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1813          It defaults to /opt/icecream for the location of the icecream gcc/g++
1814          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1817 AC_ARG_ENABLE(ld,
1818     AS_HELP_STRING([--enable-ld=<linker>],
1819         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1820          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1821          If <linker> contains any ':', the part before the first ':' is used as the value of
1822          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1823          needed for Clang 12).]),
1826 libo_FUZZ_ARG_ENABLE(cups,
1827     AS_HELP_STRING([--disable-cups],
1828         [Do not build cups support.])
1831 AC_ARG_ENABLE(ccache,
1832     AS_HELP_STRING([--disable-ccache],
1833         [Do not try to use ccache automatically.
1834          By default we will try to detect if ccache is available; in that case if
1835          CC/CXX are not yet set, and --enable-icecream is not given, we
1836          attempt to use ccache. --disable-ccache disables ccache completely.
1837          Additionally ccache's depend mode is enabled if possible,
1838          use --enable-ccache=nodepend to enable ccache without depend mode.
1842 AC_ARG_ENABLE(z7-debug,
1843     AS_HELP_STRING([--enable-z7-debug],
1844         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1845          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1846          Enabled by default if ccache is detected.]))
1848 libo_FUZZ_ARG_ENABLE(online-update,
1849     AS_HELP_STRING([--enable-online-update],
1850         [Enable the online update service that will check for new versions of
1851          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1852          If the value is "mar", the experimental Mozilla-like update will be
1853          enabled instead of the traditional update mechanism.]),
1856 AC_ARG_WITH(update-config,
1857     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1858                    [Path to the update config ini file]))
1860 libo_FUZZ_ARG_ENABLE(extension-update,
1861     AS_HELP_STRING([--disable-extension-update],
1862         [Disable possibility to update installed extensions.]),
1865 libo_FUZZ_ARG_ENABLE(release-build,
1866     AS_HELP_STRING([--enable-release-build],
1867         [Enable release build. Note that the "release build" choice is orthogonal to
1868          whether symbols are present, debug info is generated, or optimization
1869          is done.
1870          See http://wiki.documentfoundation.org/Development/DevBuild]),
1873 AC_ARG_ENABLE(windows-build-signing,
1874     AS_HELP_STRING([--enable-windows-build-signing],
1875         [Enable signing of windows binaries (*.exe, *.dll)]),
1878 AC_ARG_ENABLE(silent-msi,
1879     AS_HELP_STRING([--enable-silent-msi],
1880         [Enable MSI with LIMITUI=1 (silent install).]),
1883 AC_ARG_ENABLE(macosx-code-signing,
1884     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1885         [Sign executables, dylibs, frameworks and the app bundle. If you
1886          don't provide an identity the first suitable certificate
1887          in your keychain is used.]),
1890 AC_ARG_ENABLE(macosx-package-signing,
1891     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1892         [Create a .pkg suitable for uploading to the Mac App Store and sign
1893          it. If you don't provide an identity the first suitable certificate
1894          in your keychain is used.]),
1897 AC_ARG_ENABLE(macosx-sandbox,
1898     AS_HELP_STRING([--enable-macosx-sandbox],
1899         [Make the app bundle run in a sandbox. Requires code signing.
1900          Is required by apps distributed in the Mac App Store, and implies
1901          adherence to App Store rules.]),
1904 AC_ARG_WITH(macosx-bundle-identifier,
1905     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1906         [Define the macOS bundle identifier. Default is the somewhat weird
1907          org.libreoffice.script ("script", huh?).]),
1908 ,with_macosx_bundle_identifier=org.libreoffice.script)
1910 AC_ARG_WITH(macosx-provisioning-profile,
1911     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1912         [Specify the path to a provisioning profile to use]),
1915 AC_ARG_WITH(product-name,
1916     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1917         [Define the product name. Default is AC_PACKAGE_NAME.]),
1918 ,with_product_name=$PRODUCTNAME)
1920 libo_FUZZ_ARG_ENABLE(community-flavor,
1921     AS_HELP_STRING([--disable-community-flavor],
1922         [Disable the Community branding.]),
1925 AC_ARG_WITH(package-version,
1926     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1927         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1930 libo_FUZZ_ARG_ENABLE(readonly-installset,
1931     AS_HELP_STRING([--enable-readonly-installset],
1932         [Prevents any attempts by LibreOffice to write into its installation. That means
1933          at least that no "system-wide" extensions can be added. Partly experimental work in
1934          progress, probably not fully implemented. Always enabled for macOS.]),
1937 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1938     AS_HELP_STRING([--disable-mariadb-sdbc],
1939         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1942 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1943     AS_HELP_STRING([--disable-postgresql-sdbc],
1944         [Disable the build of the PostgreSQL-SDBC driver.])
1947 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1948     AS_HELP_STRING([--disable-lotuswordpro],
1949         [Disable the build of the Lotus Word Pro filter.]),
1950 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1952 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1953     AS_HELP_STRING([--disable-firebird-sdbc],
1954         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1955 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1957 AC_ARG_ENABLE(bogus-pkg-config,
1958     AS_HELP_STRING([--enable-bogus-pkg-config],
1959         [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.]),
1962 AC_ARG_ENABLE(openssl,
1963     AS_HELP_STRING([--disable-openssl],
1964         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1965          components will use NSS. Work in progress,
1966          use only if you are hacking on it.]),
1967 ,enable_openssl=yes)
1969 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1970     AS_HELP_STRING([--enable-cipher-openssl-backend],
1971         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1972          Requires --enable-openssl.]))
1974 AC_ARG_ENABLE(nss,
1975     AS_HELP_STRING([--disable-nss],
1976         [Disable using NSS. If disabled,
1977          components will use openssl. Work in progress,
1978          use only if you are hacking on it.]),
1979 ,enable_nss=yes)
1981 AC_ARG_ENABLE(library-bin-tar,
1982     AS_HELP_STRING([--enable-library-bin-tar],
1983         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1984         Some libraries can save their build result in a tarball
1985         stored in TARFILE_LOCATION. That binary tarball is
1986         uniquely identified by the source tarball,
1987         the content of the config_host.mk file and the content
1988         of the top-level directory in core for that library
1989         If this option is enabled, then if such a tarfile exist, it will be untarred
1990         instead of the source tarfile, and the build step will be skipped for that
1991         library.
1992         If a proper tarfile does not exist, then the normal source-based
1993         build is done for that library and a proper binary tarfile is created
1994         for the next time.]),
1997 AC_ARG_ENABLE(dconf,
1998     AS_HELP_STRING([--disable-dconf],
1999         [Disable the dconf configuration backend (enabled by default where
2000          available).]))
2002 libo_FUZZ_ARG_ENABLE(formula-logger,
2003     AS_HELP_STRING(
2004         [--enable-formula-logger],
2005         [Enable formula logger for logging formula calculation flow in Calc.]
2006     )
2009 AC_ARG_ENABLE(ldap,
2010     AS_HELP_STRING([--disable-ldap],
2011         [Disable LDAP support.]),
2012 ,enable_ldap=yes)
2014 AC_ARG_ENABLE(opencl,
2015     AS_HELP_STRING([--disable-opencl],
2016         [Disable OpenCL support.]),
2017 ,enable_opencl=yes)
2019 libo_FUZZ_ARG_ENABLE(librelogo,
2020     AS_HELP_STRING([--disable-librelogo],
2021         [Do not build LibreLogo.]),
2022 ,enable_librelogo=yes)
2024 AC_ARG_ENABLE(wasm-strip,
2025     AS_HELP_STRING([--enable-wasm-strip],
2026         [Strip the static build like for WASM/emscripten platform.]),
2029 AC_ARG_WITH(main-module,
2030     AS_HELP_STRING([--with-main-module=<writer/calc>],
2031         [Specify which main module to build for wasm.
2032         Default value is 'writer'.]),
2035 AC_ARG_ENABLE(wasm-exceptions,
2036     AS_HELP_STRING([--enable-wasm-exceptions],
2037         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2038         matter of fact, this is currently not finished by any implementation)
2039         (see https://webassembly.org/roadmap/ for the current state]),
2042 AC_ARG_ENABLE(xmlhelp,
2043     AS_HELP_STRING([--disable-xmlhelp],
2044         [Disable XML help support]),
2045 ,enable_xmlhelp=yes)
2047 AC_ARG_ENABLE(customtarget-components,
2048     AS_HELP_STRING([--enable-customtarget-components],
2049         [Generates the static UNO object constructor mapping from the build.]))
2051 AC_ARG_ENABLE(float_device_pixel,
2052     AS_HELP_STRING([--enable-float-device-pixel],
2053                    [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2056 dnl ===================================================================
2057 dnl Optional Packages (--with/without-)
2058 dnl ===================================================================
2060 AC_ARG_WITH(gcc-home,
2061     AS_HELP_STRING([--with-gcc-home],
2062         [Specify the location of gcc/g++ manually. This can be used in conjunction
2063          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2064          non-default path.]),
2067 AC_ARG_WITH(gnu-patch,
2068     AS_HELP_STRING([--with-gnu-patch],
2069         [Specify location of GNU patch on Solaris or FreeBSD.]),
2072 AC_ARG_WITH(build-platform-configure-options,
2073     AS_HELP_STRING([--with-build-platform-configure-options],
2074         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2077 AC_ARG_WITH(gnu-cp,
2078     AS_HELP_STRING([--with-gnu-cp],
2079         [Specify location of GNU cp on Solaris or FreeBSD.]),
2082 AC_ARG_WITH(external-tar,
2083     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2084         [Specify an absolute path of where to find (and store) tarfiles.]),
2085     TARFILE_LOCATION=$withval ,
2088 AC_ARG_WITH(referenced-git,
2089     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2090         [Specify another checkout directory to reference. This makes use of
2091                  git submodule update --reference, and saves a lot of diskspace
2092                  when having multiple trees side-by-side.]),
2093     GIT_REFERENCE_SRC=$withval ,
2096 AC_ARG_WITH(linked-git,
2097     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2098         [Specify a directory where the repositories of submodules are located.
2099          This uses a method similar to git-new-workdir to get submodules.]),
2100     GIT_LINK_SRC=$withval ,
2103 AC_ARG_WITH(galleries,
2104     AS_HELP_STRING([--with-galleries],
2105         [Specify how galleries should be built. It is possible either to
2106          build these internally from source ("build"),
2107          or to disable them ("no")]),
2110 AC_ARG_WITH(theme,
2111     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2112         [Choose which themes to include. By default those themes with an '*' are included.
2113          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2114          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2115          *elementary, *elementary_svg,
2116          *karasa_jaga, *karasa_jaga_svg,
2117          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2118          *sukapura, *sukapura_svg.]),
2121 libo_FUZZ_ARG_WITH(helppack-integration,
2122     AS_HELP_STRING([--without-helppack-integration],
2123         [It will not integrate the helppacks to the installer
2124          of the product. Please use this switch to use the online help
2125          or separate help packages.]),
2128 libo_FUZZ_ARG_WITH(fonts,
2129     AS_HELP_STRING([--without-fonts],
2130         [LibreOffice includes some third-party fonts to provide a reliable basis for
2131          help content, templates, samples, etc. When these fonts are already
2132          known to be available on the system then you should use this option.]),
2135 AC_ARG_WITH(epm,
2136     AS_HELP_STRING([--with-epm],
2137         [Decides which epm to use. Default is to use the one from the system if
2138          one is built. When either this is not there or you say =internal epm
2139          will be built.]),
2142 AC_ARG_WITH(package-format,
2143     AS_HELP_STRING([--with-package-format],
2144         [Specify package format(s) for LibreOffice installation sets. The
2145          implicit --without-package-format leads to no installation sets being
2146          generated. Possible values: aix, archive, bsd, deb, dmg,
2147          installed, msi, pkg, and rpm.
2148          Example: --with-package-format='deb rpm']),
2151 AC_ARG_WITH(tls,
2152     AS_HELP_STRING([--with-tls],
2153         [Decides which TLS/SSL and cryptographic implementations to use for
2154          LibreOffice's code. Notice that this doesn't apply for depending
2155          libraries like "curl", for example. Default is to use NSS
2156          although OpenSSL is also possible. Notice that selecting NSS restricts
2157          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2158          restrict by now the usage of NSS in LO's code. Possible values:
2159          openssl, nss. Example: --with-tls="nss"]),
2162 AC_ARG_WITH(system-libs,
2163     AS_HELP_STRING([--with-system-libs],
2164         [Use libraries already on system -- enables all --with-system-* flags.]),
2167 AC_ARG_WITH(system-bzip2,
2168     AS_HELP_STRING([--with-system-bzip2],
2169         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2170     [with_system_bzip2="$with_system_libs"])
2172 AC_ARG_WITH(system-headers,
2173     AS_HELP_STRING([--with-system-headers],
2174         [Use headers already on system -- enables all --with-system-* flags for
2175          external packages whose headers are the only entities used i.e.
2176          boost/odbc/sane-header(s).]),,
2177     [with_system_headers="$with_system_libs"])
2179 AC_ARG_WITH(system-jars,
2180     AS_HELP_STRING([--without-system-jars],
2181         [When building with --with-system-libs, also the needed jars are expected
2182          on the system. Use this to disable that]),,
2183     [with_system_jars="$with_system_libs"])
2185 AC_ARG_WITH(system-cairo,
2186     AS_HELP_STRING([--with-system-cairo],
2187         [Use cairo libraries already on system.  Happens automatically for
2188          (implicit) --enable-gtk3.]))
2190 AC_ARG_WITH(system-epoxy,
2191     AS_HELP_STRING([--with-system-epoxy],
2192         [Use epoxy libraries already on system.  Happens automatically for
2193          (implicit) --enable-gtk3.]),,
2194        [with_system_epoxy="$with_system_libs"])
2196 AC_ARG_WITH(myspell-dicts,
2197     AS_HELP_STRING([--with-myspell-dicts],
2198         [Adds myspell dictionaries to the LibreOffice installation set]),
2201 AC_ARG_WITH(system-dicts,
2202     AS_HELP_STRING([--without-system-dicts],
2203         [Do not use dictionaries from system paths.]),
2206 AC_ARG_WITH(external-dict-dir,
2207     AS_HELP_STRING([--with-external-dict-dir],
2208         [Specify external dictionary dir.]),
2211 AC_ARG_WITH(external-hyph-dir,
2212     AS_HELP_STRING([--with-external-hyph-dir],
2213         [Specify external hyphenation pattern dir.]),
2216 AC_ARG_WITH(external-thes-dir,
2217     AS_HELP_STRING([--with-external-thes-dir],
2218         [Specify external thesaurus dir.]),
2221 AC_ARG_WITH(system-zlib,
2222     AS_HELP_STRING([--with-system-zlib],
2223         [Use zlib already on system.]),,
2224     [with_system_zlib=auto])
2226 AC_ARG_WITH(system-jpeg,
2227     AS_HELP_STRING([--with-system-jpeg],
2228         [Use jpeg already on system.]),,
2229     [with_system_jpeg="$with_system_libs"])
2231 AC_ARG_WITH(system-expat,
2232     AS_HELP_STRING([--with-system-expat],
2233         [Use expat already on system.]),,
2234     [with_system_expat="$with_system_libs"])
2236 AC_ARG_WITH(system-libxml,
2237     AS_HELP_STRING([--with-system-libxml],
2238         [Use libxml/libxslt already on system.]),,
2239     [with_system_libxml=auto])
2241 AC_ARG_WITH(system-openldap,
2242     AS_HELP_STRING([--with-system-openldap],
2243         [Use the OpenLDAP LDAP SDK already on system.]),,
2244     [with_system_openldap="$with_system_libs"])
2246 libo_FUZZ_ARG_ENABLE(poppler,
2247     AS_HELP_STRING([--disable-poppler],
2248         [Disable building Poppler.])
2251 AC_ARG_WITH(system-poppler,
2252     AS_HELP_STRING([--with-system-poppler],
2253         [Use system poppler (only needed for PDF import).]),,
2254     [with_system_poppler="$with_system_libs"])
2256 AC_ARG_WITH(system-abseil,
2257     AS_HELP_STRING([--with-system-abseil],
2258         [Use the abseil libraries already on system.]),,
2259     [with_system_abseil="$with_system_libs"])
2261 AC_ARG_WITH(system-openjpeg,
2262     AS_HELP_STRING([--with-system-openjpeg],
2263         [Use the OpenJPEG library already on system.]),,
2264     [with_system_openjpeg="$with_system_libs"])
2266 libo_FUZZ_ARG_ENABLE(gpgmepp,
2267     AS_HELP_STRING([--disable-gpgmepp],
2268         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2271 AC_ARG_WITH(system-gpgmepp,
2272     AS_HELP_STRING([--with-system-gpgmepp],
2273         [Use gpgmepp already on system]),,
2274     [with_system_gpgmepp="$with_system_libs"])
2276 AC_ARG_WITH(system-mariadb,
2277     AS_HELP_STRING([--with-system-mariadb],
2278         [Use MariaDB/MySQL libraries already on system.]),,
2279     [with_system_mariadb="$with_system_libs"])
2281 AC_ARG_ENABLE(bundle-mariadb,
2282     AS_HELP_STRING([--enable-bundle-mariadb],
2283         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2286 AC_ARG_WITH(system-postgresql,
2287     AS_HELP_STRING([--with-system-postgresql],
2288         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2289          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2290     [with_system_postgresql="$with_system_libs"])
2292 AC_ARG_WITH(libpq-path,
2293     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2294         [Use this PostgreSQL C interface (libpq) installation for building
2295          the PostgreSQL-SDBC extension.]),
2298 AC_ARG_WITH(system-firebird,
2299     AS_HELP_STRING([--with-system-firebird],
2300         [Use Firebird libraries already on system, for building the Firebird-SDBC
2301          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2302     [with_system_firebird="$with_system_libs"])
2304 AC_ARG_WITH(system-libtommath,
2305             AS_HELP_STRING([--with-system-libtommath],
2306                            [Use libtommath already on system]),,
2307             [with_system_libtommath="$with_system_libs"])
2309 AC_ARG_WITH(system-hsqldb,
2310     AS_HELP_STRING([--with-system-hsqldb],
2311         [Use hsqldb already on system.]))
2313 AC_ARG_WITH(hsqldb-jar,
2314     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2315         [Specify path to jarfile manually.]),
2316     HSQLDB_JAR=$withval)
2318 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2319     AS_HELP_STRING([--disable-scripting-beanshell],
2320         [Disable support for scripts in BeanShell.]),
2324 AC_ARG_WITH(system-beanshell,
2325     AS_HELP_STRING([--with-system-beanshell],
2326         [Use beanshell already on system.]),,
2327     [with_system_beanshell="$with_system_jars"])
2329 AC_ARG_WITH(beanshell-jar,
2330     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2331         [Specify path to jarfile manually.]),
2332     BSH_JAR=$withval)
2334 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2335     AS_HELP_STRING([--disable-scripting-javascript],
2336         [Disable support for scripts in JavaScript.]),
2340 AC_ARG_WITH(system-rhino,
2341     AS_HELP_STRING([--with-system-rhino],
2342         [Use rhino already on system.]),,)
2343 #    [with_system_rhino="$with_system_jars"])
2344 # Above is not used as we have different debug interface
2345 # patched into internal rhino. This code needs to be fixed
2346 # before we can enable it by default.
2348 AC_ARG_WITH(rhino-jar,
2349     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2350         [Specify path to jarfile manually.]),
2351     RHINO_JAR=$withval)
2353 AC_ARG_WITH(system-jfreereport,
2354     AS_HELP_STRING([--with-system-jfreereport],
2355         [Use JFreeReport already on system.]),,
2356     [with_system_jfreereport="$with_system_jars"])
2358 AC_ARG_WITH(sac-jar,
2359     AS_HELP_STRING([--with-sac-jar=JARFILE],
2360         [Specify path to jarfile manually.]),
2361     SAC_JAR=$withval)
2363 AC_ARG_WITH(libxml-jar,
2364     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2365         [Specify path to jarfile manually.]),
2366     LIBXML_JAR=$withval)
2368 AC_ARG_WITH(flute-jar,
2369     AS_HELP_STRING([--with-flute-jar=JARFILE],
2370         [Specify path to jarfile manually.]),
2371     FLUTE_JAR=$withval)
2373 AC_ARG_WITH(jfreereport-jar,
2374     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2375         [Specify path to jarfile manually.]),
2376     JFREEREPORT_JAR=$withval)
2378 AC_ARG_WITH(liblayout-jar,
2379     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2380         [Specify path to jarfile manually.]),
2381     LIBLAYOUT_JAR=$withval)
2383 AC_ARG_WITH(libloader-jar,
2384     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2385         [Specify path to jarfile manually.]),
2386     LIBLOADER_JAR=$withval)
2388 AC_ARG_WITH(libformula-jar,
2389     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2390         [Specify path to jarfile manually.]),
2391     LIBFORMULA_JAR=$withval)
2393 AC_ARG_WITH(librepository-jar,
2394     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2395         [Specify path to jarfile manually.]),
2396     LIBREPOSITORY_JAR=$withval)
2398 AC_ARG_WITH(libfonts-jar,
2399     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2400         [Specify path to jarfile manually.]),
2401     LIBFONTS_JAR=$withval)
2403 AC_ARG_WITH(libserializer-jar,
2404     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2405         [Specify path to jarfile manually.]),
2406     LIBSERIALIZER_JAR=$withval)
2408 AC_ARG_WITH(libbase-jar,
2409     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2410         [Specify path to jarfile manually.]),
2411     LIBBASE_JAR=$withval)
2413 AC_ARG_WITH(system-odbc,
2414     AS_HELP_STRING([--with-system-odbc],
2415         [Use the odbc headers already on system.]),,
2416     [with_system_odbc="auto"])
2418 AC_ARG_WITH(system-sane,
2419     AS_HELP_STRING([--with-system-sane],
2420         [Use sane.h already on system.]),,
2421     [with_system_sane="$with_system_headers"])
2423 AC_ARG_WITH(system-bluez,
2424     AS_HELP_STRING([--with-system-bluez],
2425         [Use bluetooth.h already on system.]),,
2426     [with_system_bluez="$with_system_headers"])
2428 AC_ARG_WITH(system-boost,
2429     AS_HELP_STRING([--with-system-boost],
2430         [Use boost already on system.]),,
2431     [with_system_boost="$with_system_headers"])
2433 AC_ARG_WITH(system-dragonbox,
2434     AS_HELP_STRING([--with-system-dragonbox],
2435         [Use dragonbox already on system.]),,
2436     [with_system_dragonbox="$with_system_headers"])
2438 AC_ARG_WITH(system-libfixmath,
2439     AS_HELP_STRING([--with-system-libfixmath],
2440         [Use libfixmath already on system.]),,
2441     [with_system_libfixmath="$with_system_libs"])
2443 AC_ARG_WITH(system-glm,
2444     AS_HELP_STRING([--with-system-glm],
2445         [Use glm already on system.]),,
2446     [with_system_glm="$with_system_headers"])
2448 AC_ARG_WITH(system-hunspell,
2449     AS_HELP_STRING([--with-system-hunspell],
2450         [Use libhunspell already on system.]),,
2451     [with_system_hunspell="$with_system_libs"])
2453 libo_FUZZ_ARG_ENABLE(zxing,
2454     AS_HELP_STRING([--disable-zxing],
2455        [Disable use of zxing external library.]))
2457 AC_ARG_WITH(system-zxing,
2458     AS_HELP_STRING([--with-system-zxing],
2459         [Use libzxing already on system.]),,
2460     [with_system_zxing="$with_system_libs"])
2462 AC_ARG_WITH(system-box2d,
2463     AS_HELP_STRING([--with-system-box2d],
2464         [Use box2d already on system.]),,
2465     [with_system_box2d="$with_system_libs"])
2467 AC_ARG_WITH(system-mythes,
2468     AS_HELP_STRING([--with-system-mythes],
2469         [Use mythes already on system.]),,
2470     [with_system_mythes="$with_system_libs"])
2472 AC_ARG_WITH(system-altlinuxhyph,
2473     AS_HELP_STRING([--with-system-altlinuxhyph],
2474         [Use ALTLinuxhyph already on system.]),,
2475     [with_system_altlinuxhyph="$with_system_libs"])
2477 AC_ARG_WITH(system-lpsolve,
2478     AS_HELP_STRING([--with-system-lpsolve],
2479         [Use lpsolve already on system.]),,
2480     [with_system_lpsolve="$with_system_libs"])
2482 AC_ARG_WITH(system-coinmp,
2483     AS_HELP_STRING([--with-system-coinmp],
2484         [Use CoinMP already on system.]),,
2485     [with_system_coinmp="$with_system_libs"])
2487 AC_ARG_WITH(system-liblangtag,
2488     AS_HELP_STRING([--with-system-liblangtag],
2489         [Use liblangtag library already on system.]),,
2490     [with_system_liblangtag="$with_system_libs"])
2492 AC_ARG_WITH(system-lockfile,
2493     AS_HELP_STRING([--with-system-lockfile[=file]],
2494         [Detect a system lockfile program or use the \$file argument.]))
2496 AC_ARG_WITH(webdav,
2497     AS_HELP_STRING([--without-webdav],
2498         [Disable WebDAV support in the UCB.]))
2500 AC_ARG_WITH(linker-hash-style,
2501     AS_HELP_STRING([--with-linker-hash-style],
2502         [Use linker with --hash-style=<style> when linking shared objects.
2503          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2504          if supported on the build system, and "sysv" otherwise.]))
2506 AC_ARG_WITH(jdk-home,
2507     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2508         [If you have installed JDK 9 or later on your system please supply the
2509          path here. Note that this is not the location of the java command but the
2510          location of the entire distribution. In case of cross-compiling, this
2511          is the JDK of the host os. Use --with-build-platform-configure-options
2512          to point to a different build platform JDK.]),
2515 AC_ARG_WITH(help,
2516     AS_HELP_STRING([--with-help],
2517         [Enable the build of help. There is a special parameter "common" that
2518          can be used to bundle only the common part, .e.g help-specific icons.
2519          This is useful when you build the helpcontent separately.])
2520     [
2521                           Usage:     --with-help    build the old local help
2522                                  --without-help     no local help (default)
2523                                  --with-help=html   build the new HTML local help
2524                                  --with-help=online build the new HTML online help
2525     ],
2528 AC_ARG_WITH(omindex,
2529    AS_HELP_STRING([--with-omindex],
2530         [Enable the support of xapian-omega index for online help.])
2531    [
2532                          Usage: --with-omindex=server prepare the pages for omindex
2533                                 but let xapian-omega be built in server.
2534                                 --with-omindex=noxap do not prepare online pages
2535                                 for xapian-omega
2536   ],
2539 libo_FUZZ_ARG_WITH(java,
2540     AS_HELP_STRING([--with-java=<java command>],
2541         [Specify the name of the Java interpreter command. Typically "java"
2542          which is the default.
2544          To build without support for Java components, applets, accessibility
2545          or the XML filters written in Java, use --without-java or --with-java=no.]),
2546     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2547     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2550 AC_ARG_WITH(jvm-path,
2551     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2552         [Use a specific JVM search path at runtime.
2553          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2556 AC_ARG_WITH(ant-home,
2557     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2558         [If you have installed Apache Ant on your system, please supply the path here.
2559          Note that this is not the location of the Ant binary but the location
2560          of the entire distribution.]),
2563 AC_ARG_WITH(symbol-config,
2564     AS_HELP_STRING([--with-symbol-config],
2565         [Configuration for the crashreport symbol upload]),
2566         [],
2567         [with_symbol_config=no])
2569 AC_ARG_WITH(export-validation,
2570     AS_HELP_STRING([--without-export-validation],
2571         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2572 ,with_export_validation=auto)
2574 AC_ARG_WITH(bffvalidator,
2575     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2576         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2577          Requires installed Microsoft Office Binary File Format Validator.
2578          Note: export-validation (--with-export-validation) is required to be turned on.
2579          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2580 ,with_bffvalidator=no)
2582 libo_FUZZ_ARG_WITH(junit,
2583     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2584         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2585          --without-junit disables those tests. Not relevant in the --without-java case.]),
2586 ,with_junit=yes)
2588 AC_ARG_WITH(hamcrest,
2589     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2590         [Specifies the hamcrest jar file to use for JUnit-based tests.
2591          --without-junit disables those tests. Not relevant in the --without-java case.]),
2592 ,with_hamcrest=yes)
2594 AC_ARG_WITH(perl-home,
2595     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2596         [If you have installed Perl 5 Distribution, on your system, please
2597          supply the path here. Note that this is not the location of the Perl
2598          binary but the location of the entire distribution.]),
2601 libo_FUZZ_ARG_WITH(doxygen,
2602     AS_HELP_STRING(
2603         [--with-doxygen=<absolute path to doxygen executable>],
2604         [Specifies the doxygen executable to use when generating ODK C/C++
2605          documentation. --without-doxygen disables generation of ODK C/C++
2606          documentation. Not relevant in the --disable-odk case.]),
2607 ,with_doxygen=yes)
2609 AC_ARG_WITH(visual-studio,
2610     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2611         [Specify which Visual Studio version to use in case several are
2612          installed. Currently 2019 (default) and 2022 are supported.]),
2615 AC_ARG_WITH(windows-sdk,
2616     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2617         [Specify which Windows SDK, or "Windows Kit", version to use
2618          in case the one that came with the selected Visual Studio
2619          is not what you want for some reason. Note that not all compiler/SDK
2620          combinations are supported. The intent is that this option should not
2621          be needed.]),
2624 AC_ARG_WITH(lang,
2625     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2626         [Use this option to build LibreOffice with additional UI language support.
2627          English (US) is always included by default.
2628          Separate multiple languages with space.
2629          For all languages, use --with-lang=ALL.]),
2632 AC_ARG_WITH(locales,
2633     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2634         [Use this option to limit the locale information built in.
2635          Separate multiple locales with space.
2636          Very experimental and might well break stuff.
2637          Just a desperate measure to shrink code and data size.
2638          By default all the locales available is included.
2639          Just works with --disable-dynloading. Defaults to "ALL".
2640          This option is completely unrelated to --with-lang.])
2641     [
2642                           Affects also our character encoding conversion
2643                           tables for encodings mainly targeted for a
2644                           particular locale, like EUC-CN and EUC-TW for
2645                           zh, ISO-2022-JP for ja.
2647                           Affects also our add-on break iterator data for
2648                           some languages.
2650                           For the default, all locales, don't use this switch at all.
2651                           Specifying just the language part of a locale means all matching
2652                           locales will be included.
2653     ],
2656 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2657 libo_FUZZ_ARG_WITH(krb5,
2658     AS_HELP_STRING([--with-krb5],
2659         [Enable MIT Kerberos 5 support in modules that support it.
2660          By default automatically enabled on platforms
2661          where a good system Kerberos 5 is available.]),
2664 libo_FUZZ_ARG_WITH(gssapi,
2665     AS_HELP_STRING([--with-gssapi],
2666         [Enable GSSAPI support in modules that support it.
2667          By default automatically enabled on platforms
2668          where a good system GSSAPI is available.]),
2671 libo_FUZZ_ARG_WITH(lxml,
2672     AS_HELP_STRING([--without-lxml],
2673         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2674          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2675          report widget classes and ids.]),
2678 libo_FUZZ_ARG_WITH(latest-c++,
2679     AS_HELP_STRING([--with-latest-c++],
2680         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2681          published standard.]),,
2682         [with_latest_c__=no])
2684 dnl ===================================================================
2685 dnl Branding
2686 dnl ===================================================================
2688 AC_ARG_WITH(branding,
2689     AS_HELP_STRING([--with-branding=/path/to/images],
2690         [Use given path to retrieve branding images set.])
2691     [
2692                           Search for intro.png about.svg and logo.svg.
2693                           If any is missing, default ones will be used instead.
2695                           Search also progress.conf for progress
2696                           settings on intro screen :
2698                           PROGRESSBARCOLOR="255,255,255" Set color of
2699                           progress bar. Comma separated RGB decimal values.
2700                           PROGRESSSIZE="407,6" Set size of progress bar.
2701                           Comma separated decimal values (width, height).
2702                           PROGRESSPOSITION="61,317" Set position of progress
2703                           bar from left,top. Comma separated decimal values.
2704                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2705                           bar frame. Comma separated RGB decimal values.
2706                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2707                           bar text. Comma separated RGB decimal values.
2708                           PROGRESSTEXTBASELINE="287" Set vertical position of
2709                           progress bar text from top. Decimal value.
2711                           Default values will be used if not found.
2712     ],
2716 AC_ARG_WITH(extra-buildid,
2717     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2718         [Show addition build identification in about dialog.]),
2722 AC_ARG_WITH(vendor,
2723     AS_HELP_STRING([--with-vendor="John the Builder"],
2724         [Set vendor of the build.]),
2727 AC_ARG_WITH(privacy-policy-url,
2728     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2729         [The URL to your privacy policy (needed when
2730          enabling online-update or crashreporting via breakpad)]),
2731         [if test "x$with_privacy_policy_url" = "xyes"; then
2732             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2733          elif test "x$with_privacy_policy_url" = "xno"; then
2734             with_privacy_policy_url="undefined"
2735          fi]
2736 ,[with_privacy_policy_url="undefined"])
2738 AC_ARG_WITH(android-package-name,
2739     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2740         [Set Android package name of the build.]),
2743 AC_ARG_WITH(compat-oowrappers,
2744     AS_HELP_STRING([--with-compat-oowrappers],
2745         [Install oo* wrappers in parallel with
2746          lo* ones to keep backward compatibility.
2747          Has effect only with make distro-pack-install]),
2750 AC_ARG_WITH(os-version,
2751     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2752         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2755 AC_ARG_WITH(parallelism,
2756     AS_HELP_STRING([--with-parallelism],
2757         [Number of jobs to run simultaneously during build. Parallel builds can
2758         save a lot of time on multi-cpu machines. Defaults to the number of
2759         CPUs on the machine, unless you configure --enable-icecream - then to
2760         40.]),
2763 AC_ARG_WITH(all-tarballs,
2764     AS_HELP_STRING([--with-all-tarballs],
2765         [Download all external tarballs unconditionally]))
2767 AC_ARG_WITH(gdrive-client-id,
2768     AS_HELP_STRING([--with-gdrive-client-id],
2769         [Provides the client id of the application for OAuth2 authentication
2770         on Google Drive. If either this or --with-gdrive-client-secret is
2771         empty, the feature will be disabled]),
2774 AC_ARG_WITH(gdrive-client-secret,
2775     AS_HELP_STRING([--with-gdrive-client-secret],
2776         [Provides the client secret of the application for OAuth2
2777         authentication on Google Drive. If either this or
2778         --with-gdrive-client-id is empty, the feature will be disabled]),
2781 AC_ARG_WITH(alfresco-cloud-client-id,
2782     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2783         [Provides the client id of the application for OAuth2 authentication
2784         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2785         empty, the feature will be disabled]),
2788 AC_ARG_WITH(alfresco-cloud-client-secret,
2789     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2790         [Provides the client secret of the application for OAuth2
2791         authentication on Alfresco Cloud. If either this or
2792         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2795 AC_ARG_WITH(onedrive-client-id,
2796     AS_HELP_STRING([--with-onedrive-client-id],
2797         [Provides the client id of the application for OAuth2 authentication
2798         on OneDrive. If either this or --with-onedrive-client-secret is
2799         empty, the feature will be disabled]),
2802 AC_ARG_WITH(onedrive-client-secret,
2803     AS_HELP_STRING([--with-onedrive-client-secret],
2804         [Provides the client secret of the application for OAuth2
2805         authentication on OneDrive. If either this or
2806         --with-onedrive-client-id is empty, the feature will be disabled]),
2808 dnl ===================================================================
2809 dnl Do we want to use pre-build binary tarball for recompile
2810 dnl ===================================================================
2812 if test "$enable_library_bin_tar" = "yes" ; then
2813     USE_LIBRARY_BIN_TAR=TRUE
2814 else
2815     USE_LIBRARY_BIN_TAR=
2817 AC_SUBST(USE_LIBRARY_BIN_TAR)
2819 dnl ===================================================================
2820 dnl Test whether build target is Release Build
2821 dnl ===================================================================
2822 AC_MSG_CHECKING([whether build target is Release Build])
2823 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2824     AC_MSG_RESULT([no])
2825     ENABLE_RELEASE_BUILD=
2826     GET_TASK_ALLOW_ENTITLEMENT='
2827         <!-- We want to be able to debug a hardened process when not building for release -->
2828         <key>com.apple.security.get-task-allow</key>
2829         <true/>'
2830 else
2831     AC_MSG_RESULT([yes])
2832     ENABLE_RELEASE_BUILD=TRUE
2833     GET_TASK_ALLOW_ENTITLEMENT=''
2835 AC_SUBST(ENABLE_RELEASE_BUILD)
2836 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2838 AC_MSG_CHECKING([whether to build a Community flavor])
2839 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2840     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2841     AC_MSG_RESULT([yes])
2842 else
2843     AC_MSG_RESULT([no])
2846 dnl ===================================================================
2847 dnl Test whether to sign Windows Build
2848 dnl ===================================================================
2849 AC_MSG_CHECKING([whether to sign windows build])
2850 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2851     AC_MSG_RESULT([yes])
2852     WINDOWS_BUILD_SIGNING="TRUE"
2853 else
2854     AC_MSG_RESULT([no])
2855     WINDOWS_BUILD_SIGNING="FALSE"
2857 AC_SUBST(WINDOWS_BUILD_SIGNING)
2859 dnl ===================================================================
2860 dnl MacOSX build and runtime environment options
2861 dnl ===================================================================
2863 AC_ARG_WITH(macosx-version-min-required,
2864     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2865         [set the minimum OS version needed to run the built LibreOffice])
2866     [
2867                           e. g.: --with-macosx-version-min-required=10.14
2868     ],
2871 dnl ===================================================================
2872 dnl Check for incompatible options set by fuzzing, and reset those
2873 dnl automatically to working combinations
2874 dnl ===================================================================
2876 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2877         "$enable_dbus" != "$enable_avahi"; then
2878     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2879     enable_avahi=$enable_dbus
2882 add_lopath_after ()
2884     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2885         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2886     fi
2889 add_lopath_before ()
2891     local IFS=${P_SEP}
2892     local path_cleanup
2893     local dir
2894     for dir in $LO_PATH ; do
2895         if test "$dir" != "$1" ; then
2896             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2897         fi
2898     done
2899     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2902 dnl ===================================================================
2903 dnl check for required programs (grep, awk, sed, bash)
2904 dnl ===================================================================
2906 pathmunge ()
2908     local new_path
2909     if test -n "$1"; then
2910         if test "$build_os" = "cygwin"; then
2911             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2912                 PathFormat "$1"
2913                 new_path=`cygpath -sm "$formatted_path"`
2914             else
2915                 PathFormat "$1"
2916                 new_path=`cygpath -u "$formatted_path"`
2917             fi
2918         else
2919             new_path="$1"
2920         fi
2921         if test "$2" = "after"; then
2922             add_lopath_after "$new_path"
2923         else
2924             add_lopath_before "$new_path"
2925         fi
2926     fi
2929 AC_PROG_AWK
2930 AC_PATH_PROG( AWK, $AWK)
2931 if test -z "$AWK"; then
2932     AC_MSG_ERROR([install awk to run this script])
2935 AC_PATH_PROG(BASH, bash)
2936 if test -z "$BASH"; then
2937     AC_MSG_ERROR([bash not found in \$PATH])
2939 AC_SUBST(BASH)
2941 # prefer parallel compression tools, if available
2942 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2943 if test -z "$COMPRESSIONTOOL"; then
2944     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2945     if test -z "$COMPRESSIONTOOL"; then
2946         AC_MSG_ERROR([gzip not found in \$PATH])
2947     fi
2949 AC_SUBST(COMPRESSIONTOOL)
2951 # use GNU parallel for packaging, if available
2952 AC_PATH_PROG(GNUPARALLEL, parallel)
2953 AC_SUBST(GNUPARALLEL)
2955 AC_MSG_CHECKING([for GNU or BSD tar])
2956 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2957     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2958     if test $? -eq 0;  then
2959         GNUTAR=$a
2960         break
2961     fi
2962 done
2963 AC_MSG_RESULT($GNUTAR)
2964 if test -z "$GNUTAR"; then
2965     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2967 AC_SUBST(GNUTAR)
2969 AC_MSG_CHECKING([for tar's option to strip components])
2970 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2971 if test $? -eq 0; then
2972     STRIP_COMPONENTS="--strip-components"
2973 else
2974     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2975     if test $? -eq 0; then
2976         STRIP_COMPONENTS="--strip-path"
2977     else
2978         STRIP_COMPONENTS="unsupported"
2979     fi
2981 AC_MSG_RESULT($STRIP_COMPONENTS)
2982 if test x$STRIP_COMPONENTS = xunsupported; then
2983     AC_MSG_ERROR([you need a tar that is able to strip components.])
2985 AC_SUBST(STRIP_COMPONENTS)
2987 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2988 dnl desktop OSes from "mobile" ones.
2990 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2991 dnl In other words, that when building for an OS that is not a
2992 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2994 dnl Note the direction of the implication; there is no assumption that
2995 dnl cross-compiling would imply a non-desktop OS.
2997 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2998     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2999     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3000     if test "$_os" != Emscripten; then
3001         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3002     fi
3005 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3006 # also work with the default gtk3 plugin.
3007 if test "$enable_wasm_strip" = "yes"; then
3008     enable_avmedia=no
3009     enable_cmis=no
3010     enable_coinmp=no
3011     enable_cups=no
3012     test "$_os" = Emscripten && enable_curl=no
3013     enable_database_connectivity=no
3014     enable_dbus=no
3015     enable_dconf=no
3016     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3017     enable_extension_integration=no
3018     enable_extensions=no
3019     enable_extension_update=no
3020     enable_gio=no
3021     enable_gpgmepp=no
3022     enable_ldap=no
3023     enable_lotuswordpro=no
3024     enable_lpsolve=no
3025     enable_nss=no
3026     enable_odk=no
3027     enable_online_update=no
3028     enable_opencl=no
3029     enable_pdfimport=no
3030     enable_randr=no
3031     enable_report_builder=no
3032     enable_scripting=no
3033     enable_sdremote_bluetooth=no
3034     enable_skia=no
3035     enable_xmlhelp=no
3036     enable_zxing=no
3037     test_libepubgen=no
3038     test_libcdr=no
3039     test_libcmis=no
3040     test_libetonyek=no
3041     test_libfreehand=no
3042     test_libmspub=no
3043     test_libpagemaker=no
3044     test_libqxp=no
3045     test_libvisio=no
3046     test_libzmf=no
3047     test_webdav=no
3048     with_galleries=no
3049     with_webdav=no
3050     with_x=no
3052     test "${with_fonts+set}" = set || with_fonts=yes
3053     test "${with_locales+set}" = set || with_locales=en
3055     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3056     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3057     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3058     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3059 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3060     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3061     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3062     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3063     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3064 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3065     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3066     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3067     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3068     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3069     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3070     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3071     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3074 EMSCRIPTEN_NEH_MAJOR=3
3075 EMSCRIPTEN_NEH_MINOR=1
3076 EMSCRIPTEN_NEH_TINY=3
3077 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3079 if test "$enable_wasm_exceptions" = yes; then
3080     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3081     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3082     if test $? -ne 0; then
3083         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3084     else
3085         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3086     fi
3087     ENABLE_WASM_EXCEPTIONS=TRUE
3089 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3091 # Whether to build "avmedia" functionality or not.
3093 if test "$enable_avmedia" = yes; then
3094     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3095     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3096 else
3097     test_gstreamer_1_0=no
3100 # Decide whether to build database connectivity stuff (including Base) or not.
3101 if test "$enable_database_connectivity" != no; then
3102     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3103     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3104 else
3105     if test "$_os" = iOS; then
3106         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3107     fi
3108     disable_database_connectivity_dependencies
3111 if test -z "$enable_extensions"; then
3112     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3113     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3114         enable_extensions=yes
3115     fi
3118 DISABLE_SCRIPTING=''
3119 if test "$enable_scripting" = yes; then
3120     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3121     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3122 else
3123     DISABLE_SCRIPTING='TRUE'
3124     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3127 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3128     # Disable dynamic_loading always for iOS and Android
3129     enable_dynamic_loading=no
3130 elif test -z "$enable_dynamic_loading"; then
3131     # Otherwise enable it unless specifically disabled
3132     enable_dynamic_loading=yes
3135 DISABLE_DYNLOADING=''
3136 if test "$enable_dynamic_loading" = yes; then
3137     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3138 else
3139     DISABLE_DYNLOADING='TRUE'
3140     if test $_os != iOS -a $_os != Android; then
3141         enable_database_connectivity=no
3142         enable_nss=no
3143         enable_odk=no
3144         enable_python=no
3145         enable_skia=no
3146         with_java=no
3147     fi
3149 AC_SUBST(DISABLE_DYNLOADING)
3151 ENABLE_CUSTOMTARGET_COMPONENTS=
3152 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3153     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3154     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3155         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3156     fi
3158 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3160 if test "$enable_extensions" = yes; then
3161     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3162     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3163 else
3164     enable_extension_integration=no
3165     enable_extension_update=no
3168 # remember SYSBASE value
3169 AC_SUBST(SYSBASE)
3171 dnl ===================================================================
3172 dnl  Sort out various gallery compilation options
3173 dnl ===================================================================
3174 WITH_GALLERY_BUILD=TRUE
3175 AC_MSG_CHECKING([how to build and package galleries])
3176 if test -n "${with_galleries}"; then
3177     if test "$with_galleries" = "build"; then
3178         if test "$enable_database_connectivity" = no; then
3179             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3180         fi
3181         AC_MSG_RESULT([build from source images internally])
3182     elif test "$with_galleries" = "no"; then
3183         WITH_GALLERY_BUILD=
3184         AC_MSG_RESULT([disable non-internal gallery build])
3185     else
3186         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3187     fi
3188 else
3189     if test $_os != iOS -a $_os != Android; then
3190         AC_MSG_RESULT([internal src images for desktop])
3191     else
3192         WITH_GALLERY_BUILD=
3193         AC_MSG_RESULT([disable src image build])
3194     fi
3196 AC_SUBST(WITH_GALLERY_BUILD)
3198 dnl ===================================================================
3199 dnl  Checks if ccache is available
3200 dnl ===================================================================
3201 CCACHE_DEPEND_MODE=
3202 if test "$enable_ccache" = "no"; then
3203     CCACHE=""
3204 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3205     case "%$CC%$CXX%" in
3206     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3207     # assume that's good then
3208     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3209         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3210         CCACHE_DEPEND_MODE=1
3211         ;;
3212     *)
3213         # try to use our own ccache if it is available and CCACHE was not already defined
3214         if test -z "$CCACHE"; then
3215             if test "$_os" = "WINNT"; then
3216                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3217             fi
3218             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3219                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3220             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3221                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3222             fi
3223         fi
3224         AC_PATH_PROG([CCACHE],[ccache],[not found])
3225         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3226             CCACHE=`win_short_path_for_make "$CCACHE"`
3227             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3228             rm -f conftest.txt
3229             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3230             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3231             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3232                 AC_MSG_RESULT(yes)
3233             else
3234                 AC_MSG_RESULT(no)
3235                 CCACHE="not found"
3236             fi
3237             rm -f conftest.txt
3238         fi
3239         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3240             # on windows/VC perhaps sccache is around?
3241             case "%$CC%$CXX%" in
3242             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3243             # assume that's good then
3244             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3245                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3246                 CCACHE_DEPEND_MODE=1
3247                 SCCACHE=1
3248                 ;;
3249             *)
3250                 # for sharing code below, reuse CCACHE env var
3251                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3252                 if test "$CCACHE" != "not found"; then
3253                     CCACHE=`win_short_path_for_make "$CCACHE"`
3254                     SCCACHE=1
3255                     CCACHE_DEPEND_MODE=1
3256                 fi
3257                 ;;
3258             esac
3259         fi
3260         if test "$CCACHE" = "not found"; then
3261             CCACHE=""
3262         fi
3263         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3264             CCACHE_DEPEND_MODE=1
3265             # Need to check for ccache version: otherwise prevents
3266             # caching of the results (like "-x objective-c++" for Mac)
3267             if test $_os = Darwin -o $_os = iOS; then
3268                 # Check ccache version
3269                 AC_MSG_CHECKING([whether version of ccache is suitable])
3270                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3271                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3272                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3273                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3274                 else
3275                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3276                     CCACHE=""
3277                     CCACHE_DEPEND_MODE=
3278                 fi
3279             fi
3280         fi
3281         ;;
3282     esac
3283 else
3284     CCACHE=""
3286 if test "$enable_ccache" = "nodepend"; then
3287     CCACHE_DEPEND_MODE=""
3289 AC_SUBST(CCACHE_DEPEND_MODE)
3291 # sccache defaults are good enough
3292 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3293     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3294     # -p works with both 4.2 and 4.4
3295     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3296     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3297     if test "$ccache_size" = ""; then
3298         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3299         if test "$ccache_size" = ""; then
3300             ccache_size=0
3301         fi
3302         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3303         if test $ccache_size -lt 1024; then
3304             CCACHE=""
3305             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3306             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3307         else
3308             # warn that ccache may be too small for debug build
3309             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3310             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3311         fi
3312     else
3313         if test $ccache_size -lt 5; then
3314             #warn that ccache may be too small for debug build
3315             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3316             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3317         fi
3318     fi
3321 ENABLE_Z7_DEBUG=
3322 if test "$enable_z7_debug" != no; then
3323     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3324         ENABLE_Z7_DEBUG=TRUE
3325     fi
3326 else
3327     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3328     add_warning "ccache will not work with --disable-z7-debug"
3330 AC_SUBST(ENABLE_Z7_DEBUG)
3332 dnl ===================================================================
3333 dnl  Checks for C compiler,
3334 dnl  The check for the C++ compiler is later on.
3335 dnl ===================================================================
3336 if test "$_os" != "WINNT"; then
3337     GCC_HOME_SET="true"
3338     AC_MSG_CHECKING([gcc home])
3339     if test -z "$with_gcc_home"; then
3340         if test "$enable_icecream" = "yes"; then
3341             if test -d "/usr/lib/icecc/bin"; then
3342                 GCC_HOME="/usr/lib/icecc/"
3343             elif test -d "/usr/libexec/icecc/bin"; then
3344                 GCC_HOME="/usr/libexec/icecc/"
3345             elif test -d "/opt/icecream/bin"; then
3346                 GCC_HOME="/opt/icecream/"
3347             else
3348                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3350             fi
3351         else
3352             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3353             GCC_HOME_SET="false"
3354         fi
3355     else
3356         GCC_HOME="$with_gcc_home"
3357     fi
3358     AC_MSG_RESULT($GCC_HOME)
3359     AC_SUBST(GCC_HOME)
3361     if test "$GCC_HOME_SET" = "true"; then
3362         if test -z "$CC"; then
3363             CC="$GCC_HOME/bin/gcc"
3364             CC_BASE="gcc"
3365         fi
3366         if test -z "$CXX"; then
3367             CXX="$GCC_HOME/bin/g++"
3368             CXX_BASE="g++"
3369         fi
3370     fi
3373 COMPATH=`dirname "$CC"`
3374 if test "$COMPATH" = "."; then
3375     AC_PATH_PROGS(COMPATH, $CC)
3376     dnl double square bracket to get single because of M4 quote...
3377     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3379 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3381 dnl ===================================================================
3382 dnl Java support
3383 dnl ===================================================================
3384 AC_MSG_CHECKING([whether to build with Java support])
3385 if test "$with_java" != "no"; then
3386     if test "$DISABLE_SCRIPTING" = TRUE; then
3387         AC_MSG_RESULT([no, overridden by --disable-scripting])
3388         ENABLE_JAVA=""
3389         with_java=no
3390     else
3391         AC_MSG_RESULT([yes])
3392         ENABLE_JAVA="TRUE"
3393         AC_DEFINE(HAVE_FEATURE_JAVA)
3394     fi
3395 else
3396     AC_MSG_RESULT([no])
3397     ENABLE_JAVA=""
3400 AC_SUBST(ENABLE_JAVA)
3402 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3404 dnl ENABLE_JAVA="" indicate no Java support at all
3406 dnl ===================================================================
3407 dnl Check macOS SDK and compiler
3408 dnl ===================================================================
3410 if test $_os = Darwin; then
3412     # The SDK in the currently selected Xcode should be found.
3414     AC_MSG_CHECKING([what macOS SDK to use])
3415     for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3416         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3417         if test -d "$MACOSX_SDK_PATH"; then
3418             break
3419         else
3420             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3421             if test -d "$MACOSX_SDK_PATH"; then
3422                 break
3423             fi
3424         fi
3425     done
3426     if test ! -d "$MACOSX_SDK_PATH"; then
3427         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3428     fi
3430     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3431     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion) 
3432     case $macosx_sdk in
3433     10.13)
3434         MACOSX_SDK_VERSION=101300
3435         ;;
3436     10.14)
3437         MACOSX_SDK_VERSION=101400
3438         ;;
3439     10.15)
3440         MACOSX_SDK_VERSION=101500
3441         ;;
3442     11.0)
3443         MACOSX_SDK_VERSION=110000
3444         ;;
3445     11.1)
3446         MACOSX_SDK_VERSION=110100
3447         ;;
3448     11.3)
3449         MACOSX_SDK_VERSION=110300
3450         ;;
3451     12.0)
3452         MACOSX_SDK_VERSION=120000
3453         ;;
3454     12.1)
3455         MACOSX_SDK_VERSION=120100
3456         ;;
3457     12.3)
3458         MACOSX_SDK_VERSION=120300
3459         ;;
3460     *)
3461         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3462         ;;
3463     esac
3465     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3466         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3467     fi
3469     if test "$with_macosx_version_min_required" = "" ; then
3470         if test "$host_cpu" = x86_64; then
3471             with_macosx_version_min_required="10.14";
3472         else
3473             with_macosx_version_min_required="11.0";
3474         fi
3475     fi
3477     # export this so that "xcrun" invocations later return matching values
3478     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3479     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3480     export DEVELOPER_DIR
3481     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3482     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3484     AC_MSG_CHECKING([whether Xcode is new enough])
3485     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3486     my_xcode_ver2=${my_xcode_ver1#Xcode }
3487     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3488     if test "$my_xcode_ver3" -ge 1205; then
3489         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3490     else
3491         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3492     fi
3494     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3495     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3497     case "$with_macosx_version_min_required" in
3498     10.14)
3499         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3500         ;;
3501     10.15)
3502         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3503         ;;
3504     10.16)
3505         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3506         ;;
3507     11.0)
3508         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3509         ;;
3510     11.1)
3511         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3512         ;;
3513     11.3)
3514         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3515         ;;
3516     12.0)
3517         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3518         ;;
3519     12.1)
3520         MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3521         ;;
3522     12.3)
3523         MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3524         ;;
3525     *)
3526         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.14--12.3])
3527         ;;
3528     esac
3530     LIBTOOL=/usr/bin/libtool
3531     INSTALL_NAME_TOOL=install_name_tool
3532     if test -z "$save_CC"; then
3533         stdlib=-stdlib=libc++
3535         AC_MSG_CHECKING([what C compiler to use])
3536         CC="`xcrun -find clang`"
3537         CC_BASE=`first_arg_basename "$CC"`
3538         if test "$host_cpu" = x86_64; then
3539             CC+=" -target x86_64-apple-macos"
3540         else
3541             CC+=" -target arm64-apple-macos"
3542         fi
3543         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3544         AC_MSG_RESULT([$CC])
3546         AC_MSG_CHECKING([what C++ compiler to use])
3547         CXX="`xcrun -find clang++`"
3548         CXX_BASE=`first_arg_basename "$CXX"`
3549         if test "$host_cpu" = x86_64; then
3550             CXX+=" -target x86_64-apple-macos"
3551         else
3552             CXX+=" -target arm64-apple-macos"
3553         fi
3554         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3555         AC_MSG_RESULT([$CXX])
3557         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3558         AR=`xcrun -find ar`
3559         NM=`xcrun -find nm`
3560         STRIP=`xcrun -find strip`
3561         LIBTOOL=`xcrun -find libtool`
3562         RANLIB=`xcrun -find ranlib`
3563     fi
3565     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3566     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3567         AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3568     else
3569         AC_MSG_RESULT([ok])
3570     fi
3571     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3573     AC_MSG_CHECKING([whether to do code signing])
3575     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3576         AC_MSG_RESULT([no])
3577     else
3578         if test "$enable_macosx_code_signing" = yes; then
3579             # By default use the first suitable certificate (?).
3581             # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3582             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3583             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3584             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3585             # "Developer ID Application" one.
3586             identity="Developer ID Application:"
3587         else
3588             identity=$enable_macosx_code_signing
3589         fi
3590         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3591         if test -n "$identity"; then
3592             MACOSX_CODESIGNING_IDENTITY=$identity
3593             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3594             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3595         else
3596             AC_MSG_ERROR([cannot determine identity to use])
3597         fi
3598     fi
3600     AC_MSG_CHECKING([whether to create a Mac App Store package])
3602     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3603         AC_MSG_RESULT([no])
3604     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3605         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3606     else
3607         if test "$enable_macosx_package_signing" = yes; then
3608             # By default use the first suitable certificate.
3609             # It should be a "3rd Party Mac Developer Installer" one
3610             identity="3rd Party Mac Developer Installer:"
3611         else
3612             identity=$enable_macosx_package_signing
3613         fi
3614         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3615         if test -n "$identity"; then
3616             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3617             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3618             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3619         else
3620             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3621         fi
3622     fi
3624     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3625         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3626     fi
3628     AC_MSG_CHECKING([whether to sandbox the application])
3630     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3631         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3632     elif test "$enable_macosx_sandbox" = yes; then
3633         ENABLE_MACOSX_SANDBOX=TRUE
3634         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3635         AC_MSG_RESULT([yes])
3636     else
3637         AC_MSG_RESULT([no])
3638     fi
3640     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3641     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3642     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3644     if test -n "$with_macosx_provisioning_profile" ; then
3645         if test ! -f "$with_macosx_provisioning_profile"; then
3646             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3647         else
3648             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3649             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3650                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3651                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3652                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3653         fi
3654     fi
3656 AC_SUBST(MACOSX_SDK_PATH)
3657 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3658 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3659 AC_SUBST(INSTALL_NAME_TOOL)
3660 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3661 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3662 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3663 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3664 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3665 AC_SUBST(MACOSX_PROVISIONING_INFO)
3666 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3667 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3668 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3670 dnl ===================================================================
3671 dnl Check iOS SDK and compiler
3672 dnl ===================================================================
3674 if test $_os = iOS; then
3675     AC_MSG_CHECKING([what iOS SDK to use])
3676     current_sdk_ver=16.0
3677     older_sdk_vers="15.6"
3678     if test "$enable_ios_simulator" = "yes"; then
3679         platform=iPhoneSimulator
3680         versionmin=-mios-simulator-version-min=14.5
3681     else
3682         platform=iPhoneOS
3683         versionmin=-miphoneos-version-min=14.5
3684     fi
3685     xcode_developer=`xcode-select -print-path`
3687     for sdkver in $current_sdk_ver $older_sdk_vers; do
3688         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3689         if test -d $t; then
3690             sysroot=$t
3691             break
3692         fi
3693     done
3695     if test -z "$sysroot"; then
3696         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3697     fi
3699     AC_MSG_RESULT($sysroot)
3701     stdlib="-stdlib=libc++"
3703     AC_MSG_CHECKING([what C compiler to use])
3704     CC="`xcrun -find clang`"
3705     CC_BASE=`first_arg_basename "$CC"`
3706     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3707     AC_MSG_RESULT([$CC])
3709     AC_MSG_CHECKING([what C++ compiler to use])
3710     CXX="`xcrun -find clang++`"
3711     CXX_BASE=`first_arg_basename "$CXX"`
3712     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3713     AC_MSG_RESULT([$CXX])
3715     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3716     AR=`xcrun -find ar`
3717     NM=`xcrun -find nm`
3718     STRIP=`xcrun -find strip`
3719     LIBTOOL=`xcrun -find libtool`
3720     RANLIB=`xcrun -find ranlib`
3723 AC_MSG_CHECKING([whether to treat the installation as read-only])
3725 if test $_os = Darwin; then
3726     enable_readonly_installset=yes
3727 elif test "$enable_extensions" != yes; then
3728     enable_readonly_installset=yes
3730 if test "$enable_readonly_installset" = yes; then
3731     AC_MSG_RESULT([yes])
3732     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3733 else
3734     AC_MSG_RESULT([no])
3737 dnl ===================================================================
3738 dnl Structure of install set
3739 dnl ===================================================================
3741 if test $_os = Darwin; then
3742     LIBO_BIN_FOLDER=MacOS
3743     LIBO_ETC_FOLDER=Resources
3744     LIBO_LIBEXEC_FOLDER=MacOS
3745     LIBO_LIB_FOLDER=Frameworks
3746     LIBO_LIB_PYUNO_FOLDER=Resources
3747     LIBO_SHARE_FOLDER=Resources
3748     LIBO_SHARE_HELP_FOLDER=Resources/help
3749     LIBO_SHARE_JAVA_FOLDER=Resources/java
3750     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3751     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3752     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3753     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3754     LIBO_URE_BIN_FOLDER=MacOS
3755     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3756     LIBO_URE_LIB_FOLDER=Frameworks
3757     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3758     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3759 elif test $_os = WINNT; then
3760     LIBO_BIN_FOLDER=program
3761     LIBO_ETC_FOLDER=program
3762     LIBO_LIBEXEC_FOLDER=program
3763     LIBO_LIB_FOLDER=program
3764     LIBO_LIB_PYUNO_FOLDER=program
3765     LIBO_SHARE_FOLDER=share
3766     LIBO_SHARE_HELP_FOLDER=help
3767     LIBO_SHARE_JAVA_FOLDER=program/classes
3768     LIBO_SHARE_PRESETS_FOLDER=presets
3769     LIBO_SHARE_READMES_FOLDER=readmes
3770     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3771     LIBO_SHARE_SHELL_FOLDER=program/shell
3772     LIBO_URE_BIN_FOLDER=program
3773     LIBO_URE_ETC_FOLDER=program
3774     LIBO_URE_LIB_FOLDER=program
3775     LIBO_URE_MISC_FOLDER=program
3776     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3777 else
3778     LIBO_BIN_FOLDER=program
3779     LIBO_ETC_FOLDER=program
3780     LIBO_LIBEXEC_FOLDER=program
3781     LIBO_LIB_FOLDER=program
3782     LIBO_LIB_PYUNO_FOLDER=program
3783     LIBO_SHARE_FOLDER=share
3784     LIBO_SHARE_HELP_FOLDER=help
3785     LIBO_SHARE_JAVA_FOLDER=program/classes
3786     LIBO_SHARE_PRESETS_FOLDER=presets
3787     LIBO_SHARE_READMES_FOLDER=readmes
3788     if test "$enable_fuzzers" != yes; then
3789         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3790     else
3791         LIBO_SHARE_RESOURCE_FOLDER=resource
3792     fi
3793     LIBO_SHARE_SHELL_FOLDER=program/shell
3794     LIBO_URE_BIN_FOLDER=program
3795     LIBO_URE_ETC_FOLDER=program
3796     LIBO_URE_LIB_FOLDER=program
3797     LIBO_URE_MISC_FOLDER=program
3798     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3800 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3801 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3802 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3803 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3804 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3805 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3806 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3807 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3808 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3809 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3810 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3811 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3812 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3813 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3814 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3815 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3817 # Not all of them needed in config_host.mk, add more if need arises
3818 AC_SUBST(LIBO_BIN_FOLDER)
3819 AC_SUBST(LIBO_ETC_FOLDER)
3820 AC_SUBST(LIBO_LIB_FOLDER)
3821 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3822 AC_SUBST(LIBO_SHARE_FOLDER)
3823 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3824 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3825 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3826 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3827 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3828 AC_SUBST(LIBO_URE_BIN_FOLDER)
3829 AC_SUBST(LIBO_URE_ETC_FOLDER)
3830 AC_SUBST(LIBO_URE_LIB_FOLDER)
3831 AC_SUBST(LIBO_URE_MISC_FOLDER)
3832 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3834 dnl ===================================================================
3835 dnl Windows specific tests and stuff
3836 dnl ===================================================================
3838 reg_get_value()
3840     # Return value: $regvalue
3841     unset regvalue
3843     if test "$build_os" = "wsl"; then
3844         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3845         return
3846     fi
3848     local _regentry="/proc/registry${1}/${2}"
3849     if test -f "$_regentry"; then
3850         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3851         # Registry keys read via /proc/registry* are always \0 terminated!
3852         local _regvalue=$(tr -d '\0' < "$_regentry")
3853         if test $? -eq 0; then
3854             regvalue=$_regvalue
3855         fi
3856     fi
3859 # Get a value from the 32-bit side of the Registry
3860 reg_get_value_32()
3862     reg_get_value "32" "$1"
3865 # Get a value from the 64-bit side of the Registry
3866 reg_get_value_64()
3868     reg_get_value "64" "$1"
3871 reg_list_values()
3873     # Return value: $reglist
3874     unset reglist
3876     if test "$build_os" = "wsl"; then
3877         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3878         return
3879     fi
3881     reglist=$(ls "/proc/registry${1}/${2}")
3884 # List values from the 32-bit side of the Registry
3885 reg_list_values_32()
3887     reg_list_values "32" "$1"
3890 # List values from the 64-bit side of the Registry
3891 reg_list_values_64()
3893     reg_list_values "64" "$1"
3896 case "$host_os" in
3897 cygwin*|wsl*)
3898     COM=MSC
3899     OS=WNT
3900     RTL_OS=Windows
3901     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3902         P_SEP=";"
3903     else
3904         P_SEP=:
3905     fi
3906     case "$host_cpu" in
3907     x86_64)
3908         CPUNAME=X86_64
3909         RTL_ARCH=X86_64
3910         PLATFORMID=windows_x86_64
3911         WINDOWS_X64=1
3912         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3913         WIN_HOST_ARCH="x64"
3914         WIN_MULTI_ARCH="x86"
3915         WIN_HOST_BITS=64
3916         ;;
3917     i*86)
3918         CPUNAME=INTEL
3919         RTL_ARCH=x86
3920         PLATFORMID=windows_x86
3921         WIN_HOST_ARCH="x86"
3922         WIN_HOST_BITS=32
3923         WIN_OTHER_ARCH="x64"
3924         ;;
3925     aarch64)
3926         CPUNAME=AARCH64
3927         RTL_ARCH=AARCH64
3928         PLATFORMID=windows_aarch64
3929         WINDOWS_X64=1
3930         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3931         WIN_HOST_ARCH="arm64"
3932         WIN_HOST_BITS=64
3933         with_ucrt_dir=no
3934         ;;
3935     *)
3936         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3937         ;;
3938     esac
3940     case "$build_cpu" in
3941     x86_64) WIN_BUILD_ARCH="x64" ;;
3942     i*86) WIN_BUILD_ARCH="x86" ;;
3943     aarch64) WIN_BUILD_ARCH="arm64" ;;
3944     *)
3945         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3946         ;;
3947     esac
3949     SCPDEFS="$SCPDEFS -D_MSC_VER"
3950     ;;
3951 esac
3953 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3954 # other-arch won't, but wouldn't break the build (x64 on x86).
3955 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3956     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3960 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3961     # To allow building Windows multi-arch releases without cross-tooling
3962     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3963         cross_compiling="yes"
3964     fi
3967 if test "$cross_compiling" = "yes"; then
3968     export CROSS_COMPILING=TRUE
3969     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3970         ENABLE_WASM_STRIP=TRUE
3971     fi
3972     if test "$_os" = "Emscripten"; then
3973         if test "$with_main_module" = "calc"; then
3974             ENABLE_WASM_STRIP_WRITER=TRUE
3975         else
3976             ENABLE_WASM_STRIP_CALC=TRUE
3977         fi
3978     fi
3979 else
3980     CROSS_COMPILING=
3981     BUILD_TYPE="$BUILD_TYPE NATIVE"
3983 AC_SUBST(CROSS_COMPILING)
3984 AC_SUBST(ENABLE_WASM_STRIP)
3985 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3986 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3988 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3989 # NOTE: must _not_ be used for bundled external libraries!
3990 ISYSTEM=
3991 if test "$GCC" = "yes"; then
3992     AC_MSG_CHECKING( for -isystem )
3993     save_CFLAGS=$CFLAGS
3994     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3995     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3996     CFLAGS=$save_CFLAGS
3997     if test -n "$ISYSTEM"; then
3998         AC_MSG_RESULT(yes)
3999     else
4000         AC_MSG_RESULT(no)
4001     fi
4003 if test -z "$ISYSTEM"; then
4004     # fall back to using -I
4005     ISYSTEM=-I
4007 AC_SUBST(ISYSTEM)
4009 dnl ===================================================================
4010 dnl  Check which Visual Studio compiler is used
4011 dnl ===================================================================
4013 map_vs_year_to_version()
4015     # Return value: $vsversion
4017     unset vsversion
4019     case $1 in
4020     2019)
4021         vsversion=16;;
4022     2022)
4023         vsversion=17;;
4024     2022preview)
4025         vsversion=17.4;;
4026     *)
4027         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4028     esac
4031 vs_versions_to_check()
4033     # Args: $1 (optional) : versions to check, in the order of preference
4034     # Return value: $vsversions
4036     unset vsversions
4038     if test -n "$1"; then
4039         map_vs_year_to_version "$1"
4040         vsversions=$vsversion
4041     else
4042         # Default version is 2019
4043         vsversions="16"
4044     fi
4047 win_get_env_from_vsvars32bat()
4049     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4050     # Also seems to be located in another directory under the same name: vsvars32.bat
4051     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4052     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4053     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4054     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4055     local result
4056     if test "$build_os" = "wsl"; then
4057         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4058     else
4059         chmod +x $WRAPPERBATCHFILEPATH
4060         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4061     fi
4062     rm -f $WRAPPERBATCHFILEPATH
4063     printf '%s' "$result"
4066 find_ucrt()
4068     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4069     if test -n "$regvalue"; then
4070         PathFormat "$regvalue"
4071         UCRTSDKDIR=$formatted_path_unix
4072         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4073         UCRTVERSION=$regvalue
4074         # Rest if not exist
4075         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4076           UCRTSDKDIR=
4077         fi
4078     fi
4079     if test -z "$UCRTSDKDIR"; then
4080         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4081         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4082         if test -f "$ide_env_file"; then
4083             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4084             UCRTSDKDIR=$formatted_path
4085             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4086             dnl Hack needed at least by tml:
4087             if test "$UCRTVERSION" = 10.0.15063.0 \
4088                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4089                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4090             then
4091                 UCRTVERSION=10.0.14393.0
4092             fi
4093         else
4094           AC_MSG_ERROR([No UCRT found])
4095         fi
4096     fi
4099 find_msvc()
4101     # Find Visual C++
4102     # Args: $1 (optional) : The VS version year
4103     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4105     unset vctest vctoolset vcnumwithdot vcbuildnumber
4107     vs_versions_to_check "$1"
4108     if test "$build_os" = wsl; then
4109         vswhere="$PROGRAMFILESX86"
4110         if test -z "$vswhere"; then
4111             vswhere="c:\\Program Files (x86)"
4112         fi
4113     else
4114         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4115     fi
4116     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4117     PathFormat "$vswhere"
4118     vswhere=$formatted_path_unix
4119     for ver in $vsversions; do
4120         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4121         if test -z "$vswhereoutput"; then
4122             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4123         fi
4124         # Fall back to all MS products (this includes VC++ Build Tools)
4125         if ! test -n "$vswhereoutput"; then
4126             AC_MSG_CHECKING([VC++ Build Tools and similar])
4127             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4128         fi
4129         if test -n "$vswhereoutput"; then
4130             PathFormat "$vswhereoutput"
4131             vctest=$formatted_path_unix
4132             break
4133         fi
4134     done
4136     if test -n "$vctest"; then
4137         vcnumwithdot="$ver"
4138         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4139             vcnumwithdot=$vcnumwithdot.0
4140         fi
4141         case "$vcnumwithdot" in
4142         16.0)
4143             vcyear=2019
4144             vctoolset=v142
4145             ;;
4146         17.0 | 17.4)
4147             vcyear=2022
4148             vctoolset=v143
4149             ;;
4150         esac
4151         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4153     fi
4156 test_cl_exe()
4158     AC_MSG_CHECKING([$1 compiler])
4160     CL_EXE_PATH="$2/cl.exe"
4162     if test ! -f "$CL_EXE_PATH"; then
4163         if test "$1" = "multi-arch"; then
4164             AC_MSG_WARN([no compiler (cl.exe) in $2])
4165             return 1
4166         else
4167             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4168         fi
4169     fi
4171     dnl ===========================================================
4172     dnl  Check for the corresponding mspdb*.dll
4173     dnl ===========================================================
4175     # MSVC 15.0 has libraries from 14.0?
4176     mspdbnum="140"
4178     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4179         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4180     fi
4182     # The compiles has to find its shared libraries
4183     OLD_PATH="$PATH"
4184     TEMP_PATH=`cygpath -d "$2"`
4185     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4187     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4188         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4189     fi
4191     PATH="$OLD_PATH"
4193     AC_MSG_RESULT([$CL_EXE_PATH])
4196 SOLARINC=
4197 MSBUILD_PATH=
4198 DEVENV=
4199 if test "$_os" = "WINNT"; then
4200     AC_MSG_CHECKING([Visual C++])
4201     find_msvc "$with_visual_studio"
4202     if test -z "$vctest"; then
4203         if test -n "$with_visual_studio"; then
4204             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4205         else
4206             AC_MSG_ERROR([no Visual Studio installation found])
4207         fi
4208     fi
4209     AC_MSG_RESULT([])
4211     VC_PRODUCT_DIR="$vctest/VC"
4212     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4214     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4215     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4216         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4217         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4218         if test $? -ne 0; then
4219             WIN_MULTI_ARCH=""
4220             WIN_OTHER_ARCH=""
4221         fi
4222     fi
4224     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4225         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4226         test_cl_exe "build" "$MSVC_BUILD_PATH"
4227     fi
4229     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4230         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4231         test_cl_exe "host" "$MSVC_HOST_PATH"
4232     else
4233         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4234     fi
4236     AC_MSG_CHECKING([for short pathname of VC product directory])
4237     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4238     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4240     UCRTSDKDIR=
4241     UCRTVERSION=
4243     AC_MSG_CHECKING([for UCRT location])
4244     find_ucrt
4245     # find_ucrt errors out if it doesn't find it
4246     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4247     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4248     ucrtincpath_formatted=$formatted_path
4249     # SOLARINC is used for external modules and must be set too.
4250     # And no, it's not sufficient to set SOLARINC only, as configure
4251     # itself doesn't honour it.
4252     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4253     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4254     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4255     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4257     AC_SUBST(UCRTSDKDIR)
4258     AC_SUBST(UCRTVERSION)
4260     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4261     # Find the proper version of MSBuild.exe to use based on the VS version
4262     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4263     if test -z "$regvalue" ; then
4264         if test "$WIN_BUILD_ARCH" != "x64"; then
4265             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4266         else
4267             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4268         fi
4269     fi
4270     if test -d "$regvalue" ; then
4271         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4272         AC_MSG_RESULT([$regvalue])
4273     else
4274         AC_MSG_ERROR([MSBuild.exe location not found])
4275     fi
4277     # Find the version of devenv.exe
4278     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4279     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4280     DEVENV_unix=$(cygpath -u "$DEVENV")
4281     if test ! -e "$DEVENV_unix"; then
4282         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4283     fi
4285     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4286     dnl needed when building CLR code:
4287     if test -z "$MSVC_CXX"; then
4288         # This gives us a posix path with 8.3 filename restrictions
4289         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4290     fi
4292     if test -z "$CC"; then
4293         CC=$MSVC_CXX
4294         CC_BASE=`first_arg_basename "$CC"`
4295     fi
4296     if test -z "$CXX"; then
4297         CXX=$MSVC_CXX
4298         CXX_BASE=`first_arg_basename "$CXX"`
4299     fi
4301     if test -n "$CC"; then
4302         # Remove /cl.exe from CC case insensitive
4303         AC_MSG_NOTICE([found Visual C++ $vcyear])
4305         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4306         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4308         PathFormat "$COMPATH"
4309         COMPATH=`win_short_path_for_make "$formatted_path"`
4311         VCVER=$vcnumwithdot
4312         VCTOOLSET=$vctoolset
4314         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4315         # are always "better", we list them in reverse chronological order.
4317         case "$vcnumwithdot" in
4318         16.0 | 17.0 | 17.4)
4319             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4320             ;;
4321         esac
4323         # The expectation is that --with-windows-sdk should not need to be used
4324         if test -n "$with_windows_sdk"; then
4325             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4326             *" "$with_windows_sdk" "*)
4327                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4328                 ;;
4329             *)
4330                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4331                 ;;
4332             esac
4333         fi
4335         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4336         ac_objext=obj
4337         ac_exeext=exe
4339     else
4340         AC_MSG_ERROR([Visual C++ not found after all, huh])
4341     fi
4343     # ERROR if VS version < 16.5
4344     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4345     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4346         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4347         // between Visual Studio versions and _MSC_VER:
4348         #if _MSC_VER < 1925
4349         #error
4350         #endif
4351     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4353     # WARN if VS version < 16.10
4354     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4355     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4356         #if _MSC_VER < 1929
4357         #error
4358         #endif
4359     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4361     if test $vs2019_recommended_version = yes; then
4362         AC_MSG_RESULT([yes])
4363     else
4364         AC_MSG_WARN([no])
4365         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."
4366     fi
4368     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4369     # version of the Explorer extension (and maybe other small
4370     # bits, too) needed when installing a 32-bit LibreOffice on a
4371     # 64-bit OS. The 64-bit Explorer extension is a feature that
4372     # has been present since long in OOo. Don't confuse it with
4373     # building LibreOffice itself as 64-bit code.
4375     BUILD_X64=
4376     CXX_X64_BINARY=
4378     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4379         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4380         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4381              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4382         then
4383             BUILD_X64=TRUE
4384             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4385             AC_MSG_RESULT([found])
4386         else
4387             AC_MSG_RESULT([not found])
4388             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4389         fi
4390     elif test "$WIN_HOST_ARCH" = "x64"; then
4391         CXX_X64_BINARY=$CXX
4392     fi
4393     AC_SUBST(BUILD_X64)
4395     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4396     AC_SUBST(CXX_X64_BINARY)
4398     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4399     # needed to support TWAIN scan on both 32- and 64-bit systems
4401     case "$WIN_HOST_ARCH" in
4402     x64)
4403         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4404         if test -n "$CXX_X86_BINARY"; then
4405             BUILD_X86=TRUE
4406             AC_MSG_RESULT([preset])
4407         elif test -n "$WIN_MULTI_ARCH"; then
4408             BUILD_X86=TRUE
4409             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4410             AC_MSG_RESULT([found])
4411         else
4412             AC_MSG_RESULT([not found])
4413             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4414         fi
4415         ;;
4416     x86)
4417         BUILD_X86=TRUE
4418         CXX_X86_BINARY=$MSVC_CXX
4419         ;;
4420     esac
4421     AC_SUBST(BUILD_X86)
4422     AC_SUBST(CXX_X86_BINARY)
4424 AC_SUBST(VCVER)
4425 AC_SUBST(VCTOOLSET)
4426 AC_SUBST(DEVENV)
4427 AC_SUBST(MSVC_CXX)
4429 COM_IS_CLANG=
4430 AC_MSG_CHECKING([whether the compiler is actually Clang])
4431 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4432     #ifndef __clang__
4433     you lose
4434     #endif
4435     int foo=42;
4436     ]])],
4437     [AC_MSG_RESULT([yes])
4438      COM_IS_CLANG=TRUE],
4439     [AC_MSG_RESULT([no])])
4440 AC_SUBST(COM_IS_CLANG)
4442 CLANGVER=
4443 if test "$COM_IS_CLANG" = TRUE; then
4444     AC_MSG_CHECKING([whether Clang is new enough])
4445     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4446         #if !defined __apple_build_version__
4447         #error
4448         #endif
4449         ]])],
4450         [my_apple_clang=yes],[my_apple_clang=])
4451     if test "$my_apple_clang" = yes; then
4452         AC_MSG_RESULT([assumed yes (Apple Clang)])
4453     elif test "$_os" = Emscripten; then
4454         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4455     else
4456         if test "$_os" = WINNT; then
4457             dnl In which case, assume clang-cl:
4458             my_args="/EP /TC"
4459         else
4460             my_args="-E -P"
4461         fi
4462         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4463         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4464         CLANGVER=`echo $clang_version \
4465             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4466         if test "$CLANGVER" -ge 80001; then
4467             AC_MSG_RESULT([yes ($clang_version)])
4468         else
4469             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4470         fi
4471         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4472         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4473     fi
4476 SHOWINCLUDES_PREFIX=
4477 if test "$_os" = WINNT; then
4478     dnl We need to guess the prefix of the -showIncludes output, it can be
4479     dnl localized
4480     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4481     echo "#include <stdlib.h>" > conftest.c
4482     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4483         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4484     rm -f conftest.c conftest.obj
4485     if test -z "$SHOWINCLUDES_PREFIX"; then
4486         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4487     else
4488         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4489     fi
4491 AC_SUBST(SHOWINCLUDES_PREFIX)
4494 # prefix C with ccache if needed
4496 if test "$CCACHE" != ""; then
4497     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4499     AC_LANG_PUSH([C])
4500     save_CFLAGS=$CFLAGS
4501     CFLAGS="$CFLAGS --ccache-skip -O2"
4502     # msvc does not fail on unknown options, check stdout
4503     if test "$COM" = MSC; then
4504         CFLAGS="$CFLAGS -nologo"
4505     fi
4506     save_ac_c_werror_flag=$ac_c_werror_flag
4507     ac_c_werror_flag=yes
4508     dnl an empty program will do, we're checking the compiler flags
4509     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4510                       [use_ccache=yes], [use_ccache=no])
4511     CFLAGS=$save_CFLAGS
4512     ac_c_werror_flag=$save_ac_c_werror_flag
4513     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4514         AC_MSG_RESULT([yes])
4515     else
4516         CC="$CCACHE $CC"
4517         CC_BASE="ccache $CC_BASE"
4518         AC_MSG_RESULT([no])
4519     fi
4520     AC_LANG_POP([C])
4523 # ===================================================================
4524 # check various GCC options that Clang does not support now but maybe
4525 # will somewhen in the future, check them even for GCC, so that the
4526 # flags are set
4527 # ===================================================================
4529 HAVE_GCC_GGDB2=
4530 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4531     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4532     save_CFLAGS=$CFLAGS
4533     CFLAGS="$CFLAGS -Werror -ggdb2"
4534     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4535     CFLAGS=$save_CFLAGS
4536     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4537         AC_MSG_RESULT([yes])
4538     else
4539         AC_MSG_RESULT([no])
4540     fi
4542     if test "$host_cpu" = "m68k"; then
4543         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4544         save_CFLAGS=$CFLAGS
4545         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4546         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4547         CFLAGS=$save_CFLAGS
4548         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4549             AC_MSG_RESULT([yes])
4550         else
4551             AC_MSG_ERROR([no])
4552         fi
4553     fi
4555 AC_SUBST(HAVE_GCC_GGDB2)
4557 dnl ===================================================================
4558 dnl  Test the gcc version
4559 dnl ===================================================================
4560 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4561     AC_MSG_CHECKING([the GCC version])
4562     _gcc_version=`$CC -dumpfullversion`
4563     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4564         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4565     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4567     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4569     if test "$gcc_full_version" -lt 70000; then
4570         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4571     fi
4572 else
4573     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4574     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4575     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4576     # (which reports itself as GCC 4.2.1).
4577     GCC_VERSION=
4579 AC_SUBST(GCC_VERSION)
4581 dnl Set the ENABLE_DBGUTIL variable
4582 dnl ===================================================================
4583 AC_MSG_CHECKING([whether to build with additional debug utilities])
4584 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4585     ENABLE_DBGUTIL="TRUE"
4586     # this is an extra var so it can have different default on different MSVC
4587     # versions (in case there are version specific problems with it)
4588     MSVC_USE_DEBUG_RUNTIME="TRUE"
4590     AC_MSG_RESULT([yes])
4591     # cppunit and graphite expose STL in public headers
4592     if test "$with_system_cppunit" = "yes"; then
4593         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4594     else
4595         with_system_cppunit=no
4596     fi
4597     if test "$with_system_graphite" = "yes"; then
4598         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4599     else
4600         with_system_graphite=no
4601     fi
4602     if test "$with_system_orcus" = "yes"; then
4603         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4604     else
4605         with_system_orcus=no
4606     fi
4607     if test "$with_system_libcmis" = "yes"; then
4608         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4609     else
4610         with_system_libcmis=no
4611     fi
4612     if test "$with_system_hunspell" = "yes"; then
4613         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4614     else
4615         with_system_hunspell=no
4616     fi
4617     if test "$with_system_gpgmepp" = "yes"; then
4618         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4619     else
4620         with_system_gpgmepp=no
4621     fi
4622     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4623     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4624     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4625     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4626     # of those two is using the system variant:
4627     if test "$with_system_libnumbertext" = "yes"; then
4628         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4629     else
4630         with_system_libnumbertext=no
4631     fi
4632     if test "$with_system_libwps" = "yes"; then
4633         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4634     else
4635         with_system_libwps=no
4636     fi
4637 else
4638     ENABLE_DBGUTIL=""
4639     MSVC_USE_DEBUG_RUNTIME=""
4640     AC_MSG_RESULT([no])
4642 AC_SUBST(ENABLE_DBGUTIL)
4643 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4645 dnl Set the ENABLE_DEBUG variable.
4646 dnl ===================================================================
4647 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4648     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4650 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4651     if test -z "$libo_fuzzed_enable_debug"; then
4652         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4653     else
4654         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4655         enable_debug=yes
4656     fi
4659 AC_MSG_CHECKING([whether to do a debug build])
4660 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4661     ENABLE_DEBUG="TRUE"
4662     if test -n "$ENABLE_DBGUTIL" ; then
4663         AC_MSG_RESULT([yes (dbgutil)])
4664     else
4665         AC_MSG_RESULT([yes])
4666     fi
4667 else
4668     ENABLE_DEBUG=""
4669     AC_MSG_RESULT([no])
4671 AC_SUBST(ENABLE_DEBUG)
4673 dnl ===================================================================
4674 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4675 dnl This is done only after compiler checks (need to know if Clang is
4676 dnl used, for different defaults) and after checking if a debug build
4677 dnl is wanted (non-debug builds get the default linker if not explicitly
4678 dnl specified otherwise).
4679 dnl All checks for linker features/options should come after this.
4680 dnl ===================================================================
4681 check_use_ld()
4683     use_ld=-fuse-ld=${1%%:*}
4684     use_ld_path=${1#*:}
4685     if test "$use_ld_path" != "$1"; then
4686         if test "$COM_IS_CLANG" = TRUE; then
4687             if test "$CLANGVER" -ge 120000; then
4688                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4689             else
4690                 use_ld="-fuse-ld=${use_ld_path}"
4691             fi
4692         else
4693             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4694             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4695             # pickup the alternative linker, when called by libtool for linking.
4696             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4697             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4698         fi
4699     fi
4700     use_ld_fail_if_error=$2
4701     use_ld_ok=
4702     AC_MSG_CHECKING([for $use_ld linker support])
4703     use_ld_ldflags_save="$LDFLAGS"
4704     LDFLAGS="$LDFLAGS $use_ld"
4705     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4706 #include <stdio.h>
4707         ],[
4708 printf ("hello world\n");
4709         ])], USE_LD=$use_ld, [])
4710     if test -n "$USE_LD"; then
4711         AC_MSG_RESULT( yes )
4712         use_ld_ok=yes
4713     else
4714         if test -n "$use_ld_fail_if_error"; then
4715             AC_MSG_ERROR( no )
4716         else
4717             AC_MSG_RESULT( no )
4718         fi
4719     fi
4720     if test -n "$use_ld_ok"; then
4721         dnl keep the value of LDFLAGS
4722         return 0
4723     fi
4724     LDFLAGS="$use_ld_ldflags_save"
4725     return 1
4727 USE_LD=
4728 if test "$enable_ld" != "no"; then
4729     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4730         if test -n "$enable_ld"; then
4731             check_use_ld "$enable_ld" fail_if_error
4732         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4733             dnl non-debug builds default to the default linker
4734             true
4735         elif test -n "$COM_IS_CLANG"; then
4736             check_use_ld lld
4737             if test $? -ne 0; then
4738                 check_use_ld gold
4739                 if test $? -ne 0; then
4740                     check_use_ld mold
4741                 fi
4742             fi
4743         else
4744             # For gcc first try gold, new versions also support lld/mold.
4745             check_use_ld gold
4746             if test $? -ne 0; then
4747                 check_use_ld lld
4748                 if test $? -ne 0; then
4749                     check_use_ld mold
4750                 fi
4751             fi
4752         fi
4753         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4754         rm conftest.out
4755         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4756         if test -z "$ld_used"; then
4757             ld_used="unknown"
4758         fi
4759         AC_MSG_CHECKING([for linker that is used])
4760         AC_MSG_RESULT([$ld_used])
4761         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4762             if echo "$ld_used" | grep -q "^GNU ld"; then
4763                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4764                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4765             fi
4766         fi
4767     else
4768         if test "$enable_ld" = "yes"; then
4769             AC_MSG_ERROR([--enable-ld not supported])
4770         fi
4771     fi
4773 AC_SUBST(USE_LD)
4774 AC_SUBST(LD)
4776 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4777 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4778     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4779     bsymbolic_functions_ldflags_save=$LDFLAGS
4780     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4781     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4782 #include <stdio.h>
4783         ],[
4784 printf ("hello world\n");
4785         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4786     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4787         AC_MSG_RESULT( found )
4788     else
4789         AC_MSG_RESULT( not found )
4790     fi
4791     LDFLAGS=$bsymbolic_functions_ldflags_save
4793 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4795 LD_GC_SECTIONS=
4796 if test "$GCC" = "yes"; then
4797     for flag in "--gc-sections" "-dead_strip"; do
4798         AC_MSG_CHECKING([for $flag linker support])
4799         ldflags_save=$LDFLAGS
4800         LDFLAGS="$LDFLAGS -Wl,$flag"
4801         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4802 #include <stdio.h>
4803             ],[
4804 printf ("hello world\n");
4805             ])],[
4806             LD_GC_SECTIONS="-Wl,$flag"
4807             AC_MSG_RESULT( found )
4808             ], [
4809             AC_MSG_RESULT( not found )
4810             ])
4811         LDFLAGS=$ldflags_save
4812         if test -n "$LD_GC_SECTIONS"; then
4813             break
4814         fi
4815     done
4817 AC_SUBST(LD_GC_SECTIONS)
4819 HAVE_EXTERNAL_DWARF=
4820 if test "$enable_split_debug" != no; then
4821     use_split_debug=
4822     if test -n "$ENABLE_LTO"; then
4823         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4824     elif test "$enable_split_debug" = yes; then
4825         use_split_debug=1
4826     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4827     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4828         use_split_debug=1
4829     fi
4830     if test -n "$use_split_debug"; then
4831         if test "$_os" = "Emscripten"; then
4832             TEST_CC_FLAG=-gseparate-dwarf
4833         else
4834             TEST_CC_FLAG=-gsplit-dwarf
4835         fi
4836         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4837         save_CFLAGS=$CFLAGS
4838         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4839         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4840         CFLAGS=$save_CFLAGS
4841         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4842             AC_MSG_RESULT([yes])
4843         else
4844             if test "$enable_split_debug" = yes; then
4845                 AC_MSG_ERROR([no])
4846             else
4847                 AC_MSG_RESULT([no])
4848             fi
4849         fi
4850     fi
4851     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4852         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4853         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4854     fi
4856 AC_SUBST(HAVE_EXTERNAL_DWARF)
4858 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4859 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4860 save_CFLAGS=$CFLAGS
4861 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4862 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4863 CFLAGS=$save_CFLAGS
4864 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4865     AC_MSG_RESULT([yes])
4866 else
4867     AC_MSG_RESULT([no])
4869 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4871 ENABLE_GDB_INDEX=
4872 if test "$enable_gdb_index" != "no"; then
4873     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4874     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4875         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4876         save_CFLAGS=$CFLAGS
4877         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4878         have_ggnu_pubnames=
4879         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4880         if test "$have_ggnu_pubnames" != "TRUE"; then
4881             if test "$enable_gdb_index" = "yes"; then
4882                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4883             else
4884                 AC_MSG_RESULT( no )
4885             fi
4886         else
4887             AC_MSG_RESULT( yes )
4888             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4889             ldflags_save=$LDFLAGS
4890             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4891             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4892 #include <stdio.h>
4893                 ],[
4894 printf ("hello world\n");
4895                 ])], ENABLE_GDB_INDEX=TRUE, [])
4896             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4897                 AC_MSG_RESULT( yes )
4898             else
4899                 if test "$enable_gdb_index" = "yes"; then
4900                     AC_MSG_ERROR( no )
4901                 else
4902                     AC_MSG_RESULT( no )
4903                 fi
4904             fi
4905             LDFLAGS=$ldflags_save
4906         fi
4907         CFLAGS=$save_CFLAGS
4908         fi
4909     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4910         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4911         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4912     fi
4914 AC_SUBST(ENABLE_GDB_INDEX)
4916 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4917     enable_sal_log=yes
4919 if test "$enable_sal_log" = yes; then
4920     ENABLE_SAL_LOG=TRUE
4922 AC_SUBST(ENABLE_SAL_LOG)
4924 dnl Check for enable symbols option
4925 dnl ===================================================================
4926 AC_MSG_CHECKING([whether to generate debug information])
4927 if test -z "$enable_symbols"; then
4928     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4929         enable_symbols=yes
4930     else
4931         enable_symbols=no
4932     fi
4934 if test "$enable_symbols" = yes; then
4935     ENABLE_SYMBOLS_FOR=all
4936     AC_MSG_RESULT([yes])
4937 elif test "$enable_symbols" = no; then
4938     ENABLE_SYMBOLS_FOR=
4939     AC_MSG_RESULT([no])
4940 else
4941     # Selective debuginfo.
4942     ENABLE_SYMBOLS_FOR="$enable_symbols"
4943     AC_MSG_RESULT([for "$enable_symbols"])
4945 AC_SUBST(ENABLE_SYMBOLS_FOR)
4947 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4948     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4949     AC_MSG_CHECKING([whether enough memory is available for linking])
4950     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4951     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4952     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4953         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4954     else
4955         AC_MSG_RESULT([yes])
4956     fi
4959 ENABLE_OPTIMIZED=
4960 ENABLE_OPTIMIZED_DEBUG=
4961 AC_MSG_CHECKING([whether to compile with optimization flags])
4962 if test -z "$enable_optimized"; then
4963     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4964         enable_optimized=no
4965     else
4966         enable_optimized=yes
4967     fi
4969 if test "$enable_optimized" = yes; then
4970     ENABLE_OPTIMIZED=TRUE
4971     AC_MSG_RESULT([yes])
4972 elif test "$enable_optimized" = debug; then
4973     ENABLE_OPTIMIZED_DEBUG=TRUE
4974     AC_MSG_RESULT([yes (debug)])
4975     HAVE_GCC_OG=
4976     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4977         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4978         save_CFLAGS=$CFLAGS
4979         CFLAGS="$CFLAGS -Werror -Og"
4980         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4981         CFLAGS=$save_CFLAGS
4982         if test "$HAVE_GCC_OG" = "TRUE"; then
4983             AC_MSG_RESULT([yes])
4984         else
4985             AC_MSG_RESULT([no])
4986         fi
4987     fi
4988     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4989         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4990     fi
4991 else
4992     AC_MSG_RESULT([no])
4994 AC_SUBST(ENABLE_OPTIMIZED)
4995 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4998 # determine CPUNAME, OS, ...
5000 case "$host_os" in
5002 aix*)
5003     COM=GCC
5004     CPUNAME=POWERPC
5005     OS=AIX
5006     RTL_OS=AIX
5007     RTL_ARCH=PowerPC
5008     PLATFORMID=aix_powerpc
5009     P_SEP=:
5010     ;;
5012 cygwin*|wsl*)
5013     # Already handled
5014     ;;
5016 darwin*)
5017     COM=GCC
5018     OS=MACOSX
5019     RTL_OS=MacOSX
5020     P_SEP=:
5022     case "$host_cpu" in
5023     aarch64|arm64)
5024         if test "$enable_ios_simulator" = "yes"; then
5025             OS=iOS
5026         else
5027             CPUNAME=AARCH64
5028             RTL_ARCH=AARCH64
5029             PLATFORMID=macosx_aarch64
5030         fi
5031         ;;
5032     x86_64)
5033         if test "$enable_ios_simulator" = "yes"; then
5034             OS=iOS
5035         fi
5036         CPUNAME=X86_64
5037         RTL_ARCH=X86_64
5038         PLATFORMID=macosx_x86_64
5039         ;;
5040     *)
5041         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5042         ;;
5043     esac
5044     ;;
5046 ios*)
5047     COM=GCC
5048     OS=iOS
5049     RTL_OS=iOS
5050     P_SEP=:
5052     case "$host_cpu" in
5053     aarch64|arm64)
5054         if test "$enable_ios_simulator" = "yes"; then
5055             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5056         fi
5057         ;;
5058     *)
5059         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5060         ;;
5061     esac
5062     CPUNAME=AARCH64
5063     RTL_ARCH=AARCH64
5064     PLATFORMID=ios_arm64
5065     ;;
5067 dragonfly*)
5068     COM=GCC
5069     OS=DRAGONFLY
5070     RTL_OS=DragonFly
5071     P_SEP=:
5073     case "$host_cpu" in
5074     i*86)
5075         CPUNAME=INTEL
5076         RTL_ARCH=x86
5077         PLATFORMID=dragonfly_x86
5078         ;;
5079     x86_64)
5080         CPUNAME=X86_64
5081         RTL_ARCH=X86_64
5082         PLATFORMID=dragonfly_x86_64
5083         ;;
5084     *)
5085         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5086         ;;
5087     esac
5088     ;;
5090 freebsd*)
5091     COM=GCC
5092     RTL_OS=FreeBSD
5093     OS=FREEBSD
5094     P_SEP=:
5096     case "$host_cpu" in
5097     aarch64)
5098         CPUNAME=AARCH64
5099         PLATFORMID=freebsd_aarch64
5100         RTL_ARCH=AARCH64
5101         ;;
5102     i*86)
5103         CPUNAME=INTEL
5104         RTL_ARCH=x86
5105         PLATFORMID=freebsd_x86
5106         ;;
5107     x86_64|amd64)
5108         CPUNAME=X86_64
5109         RTL_ARCH=X86_64
5110         PLATFORMID=freebsd_x86_64
5111         ;;
5112     powerpc64)
5113         CPUNAME=POWERPC64
5114         RTL_ARCH=PowerPC_64
5115         PLATFORMID=freebsd_powerpc64
5116         ;;
5117     powerpc|powerpcspe)
5118         CPUNAME=POWERPC
5119         RTL_ARCH=PowerPC
5120         PLATFORMID=freebsd_powerpc
5121         ;;
5122     *)
5123         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5124         ;;
5125     esac
5126     ;;
5128 haiku*)
5129     COM=GCC
5130     GUIBASE=haiku
5131     RTL_OS=Haiku
5132     OS=HAIKU
5133     P_SEP=:
5135     case "$host_cpu" in
5136     i*86)
5137         CPUNAME=INTEL
5138         RTL_ARCH=x86
5139         PLATFORMID=haiku_x86
5140         ;;
5141     x86_64|amd64)
5142         CPUNAME=X86_64
5143         RTL_ARCH=X86_64
5144         PLATFORMID=haiku_x86_64
5145         ;;
5146     *)
5147         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5148         ;;
5149     esac
5150     ;;
5152 kfreebsd*)
5153     COM=GCC
5154     OS=LINUX
5155     RTL_OS=kFreeBSD
5156     P_SEP=:
5158     case "$host_cpu" in
5160     i*86)
5161         CPUNAME=INTEL
5162         RTL_ARCH=x86
5163         PLATFORMID=kfreebsd_x86
5164         ;;
5165     x86_64)
5166         CPUNAME=X86_64
5167         RTL_ARCH=X86_64
5168         PLATFORMID=kfreebsd_x86_64
5169         ;;
5170     *)
5171         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5172         ;;
5173     esac
5174     ;;
5176 linux-gnu*|linux-musl*)
5177     COM=GCC
5178     OS=LINUX
5179     RTL_OS=Linux
5180     P_SEP=:
5182     case "$host_cpu" in
5184     aarch64)
5185         CPUNAME=AARCH64
5186         PLATFORMID=linux_aarch64
5187         RTL_ARCH=AARCH64
5188         EPM_FLAGS="-a arm64"
5189         ;;
5190     alpha)
5191         CPUNAME=AXP
5192         RTL_ARCH=ALPHA
5193         PLATFORMID=linux_alpha
5194         ;;
5195     arm*)
5196         CPUNAME=ARM
5197         EPM_FLAGS="-a arm"
5198         RTL_ARCH=ARM_EABI
5199         PLATFORMID=linux_arm_eabi
5200         case "$host_cpu" in
5201         arm*-linux)
5202             RTL_ARCH=ARM_OABI
5203             PLATFORMID=linux_arm_oabi
5204             ;;
5205         esac
5206         ;;
5207     hppa)
5208         CPUNAME=HPPA
5209         RTL_ARCH=HPPA
5210         EPM_FLAGS="-a hppa"
5211         PLATFORMID=linux_hppa
5212         ;;
5213     i*86)
5214         CPUNAME=INTEL
5215         RTL_ARCH=x86
5216         PLATFORMID=linux_x86
5217         ;;
5218     ia64)
5219         CPUNAME=IA64
5220         RTL_ARCH=IA64
5221         PLATFORMID=linux_ia64
5222         ;;
5223     mips)
5224         CPUNAME=MIPS
5225         RTL_ARCH=MIPS_EB
5226         EPM_FLAGS="-a mips"
5227         PLATFORMID=linux_mips_eb
5228         ;;
5229     mips64)
5230         CPUNAME=MIPS64
5231         RTL_ARCH=MIPS64_EB
5232         EPM_FLAGS="-a mips64"
5233         PLATFORMID=linux_mips64_eb
5234         ;;
5235     mips64el)
5236         CPUNAME=MIPS64
5237         RTL_ARCH=MIPS64_EL
5238         EPM_FLAGS="-a mips64el"
5239         PLATFORMID=linux_mips64_el
5240         ;;
5241     mipsel)
5242         CPUNAME=MIPS
5243         RTL_ARCH=MIPS_EL
5244         EPM_FLAGS="-a mipsel"
5245         PLATFORMID=linux_mips_el
5246         ;;
5247     m68k)
5248         CPUNAME=M68K
5249         RTL_ARCH=M68K
5250         PLATFORMID=linux_m68k
5251         ;;
5252     powerpc)
5253         CPUNAME=POWERPC
5254         RTL_ARCH=PowerPC
5255         PLATFORMID=linux_powerpc
5256         ;;
5257     powerpc64)
5258         CPUNAME=POWERPC64
5259         RTL_ARCH=PowerPC_64
5260         PLATFORMID=linux_powerpc64
5261         ;;
5262     powerpc64le)
5263         CPUNAME=POWERPC64
5264         RTL_ARCH=PowerPC_64_LE
5265         PLATFORMID=linux_powerpc64_le
5266         ;;
5267     sparc)
5268         CPUNAME=SPARC
5269         RTL_ARCH=SPARC
5270         PLATFORMID=linux_sparc
5271         ;;
5272     sparc64)
5273         CPUNAME=SPARC64
5274         RTL_ARCH=SPARC64
5275         PLATFORMID=linux_sparc64
5276         ;;
5277     s390)
5278         CPUNAME=S390
5279         RTL_ARCH=S390
5280         PLATFORMID=linux_s390
5281         ;;
5282     s390x)
5283         CPUNAME=S390X
5284         RTL_ARCH=S390x
5285         PLATFORMID=linux_s390x
5286         ;;
5287     x86_64)
5288         CPUNAME=X86_64
5289         RTL_ARCH=X86_64
5290         PLATFORMID=linux_x86_64
5291         ;;
5292     loongarch64)
5293         CPUNAME=LOONGARCH64
5294         RTL_ARCH=LOONGARCH64
5295         PLATFORMID=linux_loongarch64
5296         ;;
5297     *)
5298         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5299         ;;
5300     esac
5301     ;;
5303 linux-android*)
5304     COM=GCC
5305     OS=ANDROID
5306     RTL_OS=Android
5307     P_SEP=:
5309     case "$host_cpu" in
5311     arm|armel)
5312         CPUNAME=ARM
5313         RTL_ARCH=ARM_EABI
5314         PLATFORMID=android_arm_eabi
5315         ;;
5316     aarch64)
5317         CPUNAME=AARCH64
5318         RTL_ARCH=AARCH64
5319         PLATFORMID=android_aarch64
5320         ;;
5321     i*86)
5322         CPUNAME=INTEL
5323         RTL_ARCH=x86
5324         PLATFORMID=android_x86
5325         ;;
5326     x86_64)
5327         CPUNAME=X86_64
5328         RTL_ARCH=X86_64
5329         PLATFORMID=android_x86_64
5330         ;;
5331     *)
5332         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5333         ;;
5334     esac
5335     ;;
5337 *netbsd*)
5338     COM=GCC
5339     OS=NETBSD
5340     RTL_OS=NetBSD
5341     P_SEP=:
5343     case "$host_cpu" in
5344     i*86)
5345         CPUNAME=INTEL
5346         RTL_ARCH=x86
5347         PLATFORMID=netbsd_x86
5348         ;;
5349     powerpc)
5350         CPUNAME=POWERPC
5351         RTL_ARCH=PowerPC
5352         PLATFORMID=netbsd_powerpc
5353         ;;
5354     sparc)
5355         CPUNAME=SPARC
5356         RTL_ARCH=SPARC
5357         PLATFORMID=netbsd_sparc
5358         ;;
5359     x86_64)
5360         CPUNAME=X86_64
5361         RTL_ARCH=X86_64
5362         PLATFORMID=netbsd_x86_64
5363         ;;
5364     *)
5365         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5366         ;;
5367     esac
5368     ;;
5370 openbsd*)
5371     COM=GCC
5372     OS=OPENBSD
5373     RTL_OS=OpenBSD
5374     P_SEP=:
5376     case "$host_cpu" in
5377     i*86)
5378         CPUNAME=INTEL
5379         RTL_ARCH=x86
5380         PLATFORMID=openbsd_x86
5381         ;;
5382     x86_64)
5383         CPUNAME=X86_64
5384         RTL_ARCH=X86_64
5385         PLATFORMID=openbsd_x86_64
5386         ;;
5387     *)
5388         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5389         ;;
5390     esac
5391     SOLARINC="$SOLARINC -I/usr/local/include"
5392     ;;
5394 solaris*)
5395     COM=GCC
5396     OS=SOLARIS
5397     RTL_OS=Solaris
5398     P_SEP=:
5400     case "$host_cpu" in
5401     i*86)
5402         CPUNAME=INTEL
5403         RTL_ARCH=x86
5404         PLATFORMID=solaris_x86
5405         ;;
5406     sparc)
5407         CPUNAME=SPARC
5408         RTL_ARCH=SPARC
5409         PLATFORMID=solaris_sparc
5410         ;;
5411     sparc64)
5412         CPUNAME=SPARC64
5413         RTL_ARCH=SPARC64
5414         PLATFORMID=solaris_sparc64
5415         ;;
5416     *)
5417         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5418         ;;
5419     esac
5420     SOLARINC="$SOLARINC -I/usr/local/include"
5421     ;;
5423 emscripten*)
5424     COM=GCC
5425     OS=EMSCRIPTEN
5426     RTL_OS=Emscripten
5427     P_SEP=:
5429     case "$host_cpu" in
5430     wasm32|wasm64)
5431         ;;
5432     *)
5433         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5434         ;;
5435     esac
5436     CPUNAME=INTEL
5437     RTL_ARCH=x86
5438     PLATFORMID=linux_x86
5439     ;;
5442     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5443     ;;
5444 esac
5446 DISABLE_GUI=""
5447 if test "$enable_gui" = "no"; then
5448     if test "$using_x11" != yes; then
5449         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5450     fi
5451     USING_X11=
5452     DISABLE_GUI=TRUE
5453     test_epoxy=no
5454 else
5455     AC_DEFINE(HAVE_FEATURE_UI)
5457 AC_SUBST(DISABLE_GUI)
5459 if test "$with_x" = "no"; then
5460     USING_X11=
5463 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5464     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5467 if test "$using_x11" = yes; then
5468     if test "$USING_X11" = TRUE; then
5469         AC_DEFINE(USING_X11)
5470     else
5471         disable_x11_tests
5472         if test "$DISABLE_DYNLOADING" = TRUE; then
5473             test_qt5=yes
5474         fi
5475     fi
5476 else
5477     if test "$USING_X11" = TRUE; then
5478         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5479     fi
5482 WORKDIR="${BUILDDIR}/workdir"
5483 INSTDIR="${BUILDDIR}/instdir"
5484 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5485 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5486 AC_SUBST(COM)
5487 AC_SUBST(CPUNAME)
5488 AC_SUBST(RTL_OS)
5489 AC_SUBST(RTL_ARCH)
5490 AC_SUBST(EPM_FLAGS)
5491 AC_SUBST(USING_X11)
5492 AC_SUBST([INSTDIR])
5493 AC_SUBST([INSTROOT])
5494 AC_SUBST([INSTROOTBASE])
5495 AC_SUBST(OS)
5496 AC_SUBST(P_SEP)
5497 AC_SUBST(WORKDIR)
5498 AC_SUBST(PLATFORMID)
5499 AC_SUBST(WINDOWS_X64)
5500 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5501 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5503 if test "$OS" = WNT -a "$COM" = MSC; then
5504     case "$CPUNAME" in
5505     INTEL) CPPU_ENV=msci ;;
5506     X86_64) CPPU_ENV=mscx ;;
5507     AARCH64) CPPU_ENV=msca ;;
5508     *)
5509         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5510         ;;
5511     esac
5512 else
5513     CPPU_ENV=gcc3
5515 AC_SUBST(CPPU_ENV)
5517 dnl ===================================================================
5518 dnl Test which package format to use
5519 dnl ===================================================================
5520 AC_MSG_CHECKING([which package format to use])
5521 if test -n "$with_package_format" -a "$with_package_format" != no; then
5522     for i in $with_package_format; do
5523         case "$i" in
5524         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5525             ;;
5526         *)
5527             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5528 aix - AIX software distribution
5529 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5530 deb - Debian software distribution
5531 pkg - Solaris software distribution
5532 rpm - RedHat software distribution
5534 LibreOffice additionally supports:
5535 archive - .tar.gz or .zip
5536 dmg - macOS .dmg
5537 installed - installation tree
5538 msi - Windows .msi
5539         ])
5540             ;;
5541         esac
5542     done
5543     # fakeroot is needed to ensure correct file ownerships/permissions
5544     # inside deb packages and tar archives created on Linux and Solaris.
5545     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5546         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5547         if test "$FAKEROOT" = "no"; then
5548             AC_MSG_ERROR(
5549                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5550         fi
5551     fi
5552     PKGFORMAT="$with_package_format"
5553     AC_MSG_RESULT([$PKGFORMAT])
5554 else
5555     PKGFORMAT=
5556     AC_MSG_RESULT([none])
5558 AC_SUBST(PKGFORMAT)
5560 dnl ===================================================================
5561 dnl handle help related options
5563 dnl If you change help related options, please update README.help
5564 dnl ===================================================================
5566 ENABLE_HTMLHELP=
5567 HELP_OMINDEX_PAGE=
5568 HELP_ONLINE=
5569 WITH_HELPPACKS=
5571 AC_MSG_CHECKING([which help to build])
5572 if test -n "$with_help" -a "$with_help" != "no"; then
5573     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5574     BUILD_TYPE="$BUILD_TYPE HELP"
5575     case "$with_help" in
5576     "html")
5577         ENABLE_HTMLHELP=TRUE
5578         WITH_HELPPACKS=TRUE
5579         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5580         AC_MSG_RESULT([HTML (local)])
5581         ;;
5582     "online")
5583         ENABLE_HTMLHELP=TRUE
5584         HELP_ONLINE=TRUE
5585         AC_MSG_RESULT([HTML (online)])
5586         ;;
5587     yes)
5588         WITH_HELPPACKS=TRUE
5589         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5590         AC_MSG_RESULT([XML (local)])
5591         ;;
5592     *)
5593         AC_MSG_ERROR([Unknown --with-help=$with_help])
5594         ;;
5595     esac
5596 else
5597     AC_MSG_RESULT([no])
5600 AC_MSG_CHECKING([if we need to build the help index tooling])
5601 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5602     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5603     test_clucene=yes
5604     AC_MSG_RESULT([yes])
5605 else
5606     AC_MSG_RESULT([no])
5609 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5610 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5611     if test "$HELP_ONLINE" != TRUE; then
5612         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5613     fi
5614     case "$with_omindex" in
5615     "server")
5616         HELP_OMINDEX_PAGE=TRUE
5617         AC_MSG_RESULT([SERVER])
5618         ;;
5619     "noxap")
5620         AC_MSG_RESULT([NOXAP])
5621         ;;
5622     *)
5623         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5624         ;;
5625     esac
5626 else
5627     AC_MSG_RESULT([no])
5630 AC_MSG_CHECKING([whether to include the XML-help support])
5631 if test "$enable_xmlhelp" = yes; then
5632     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5633     test_clucene=yes
5634     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5635     AC_MSG_RESULT([yes])
5636 else
5637     if test "$with_help" = yes; then
5638         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5639     fi
5640     AC_MSG_RESULT([no])
5643 dnl Test whether to integrate helppacks into the product's installer
5644 AC_MSG_CHECKING([for helppack integration])
5645 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5646     AC_MSG_RESULT([no integration])
5647 else
5648     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5649     AC_MSG_RESULT([integration])
5652 AC_SUBST([ENABLE_HTMLHELP])
5653 AC_SUBST([HELP_OMINDEX_PAGE])
5654 AC_SUBST([HELP_ONLINE])
5655 # WITH_HELPPACKS is used only in configure
5657 dnl ===================================================================
5658 dnl Set up a different compiler to produce tools to run on the build
5659 dnl machine when doing cross-compilation
5660 dnl ===================================================================
5662 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5663 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5664 if test "$cross_compiling" = "yes"; then
5665     AC_MSG_CHECKING([for BUILD platform configuration])
5666     echo
5667     rm -rf CONF-FOR-BUILD config_build.mk
5668     mkdir CONF-FOR-BUILD
5669     # Here must be listed all files needed when running the configure script. In particular, also
5670     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5671     # keep them in the same order as there.
5672     (cd $SRC_ROOT && tar cf - \
5673         config.guess \
5674         bin/get_config_variables \
5675         solenv/bin/getcompver.awk \
5676         solenv/inc/langlist.mk \
5677         download.lst \
5678         config_host.mk.in \
5679         config_host_lang.mk.in \
5680         Makefile.in \
5681         lo.xcent.in \
5682         bin/bffvalidator.sh.in \
5683         bin/odfvalidator.sh.in \
5684         bin/officeotron.sh.in \
5685         hardened_runtime.xcent.in \
5686         instsetoo_native/util/openoffice.lst.in \
5687         config_host/*.in \
5688         sysui/desktop/macosx/Info.plist.in \
5689         .vscode/vs-code-template.code-workspace.in \
5690         solenv/lockfile/autoconf.h.in \
5691         ) \
5692     | (cd CONF-FOR-BUILD && tar xf -)
5693     cp configure CONF-FOR-BUILD
5694     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5695     (
5696     unset COM USING_X11 OS CPUNAME
5697     unset CC CXX SYSBASE CFLAGS
5698     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5699     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5700     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5701     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5702     if test -n "$CC_FOR_BUILD"; then
5703         export CC="$CC_FOR_BUILD"
5704         CC_BASE=`first_arg_basename "$CC"`
5705     fi
5706     if test -n "$CXX_FOR_BUILD"; then
5707         export CXX="$CXX_FOR_BUILD"
5708         CXX_BASE=`first_arg_basename "$CXX"`
5709     fi
5710     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5711     cd CONF-FOR-BUILD
5713     # Handle host configuration, which affects the cross-toolset too
5714     sub_conf_opts=""
5715     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5716     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5717     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5718     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5719     if test -n "$ENABLE_JAVA"; then
5720         case "$_os" in
5721         Android)
5722             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5723             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5724             ;;
5725         *)
5726             if test -z "$with_jdk_home"; then
5727                 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.])
5728             fi
5729             ;;
5730         esac
5731     else
5732         sub_conf_opts="$sub_conf_opts --without-java"
5733     fi
5734     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5735     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5736     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5737     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5738     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5739     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5740     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5741     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5742     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5743     if test "$_os" = "Emscripten"; then
5744         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5745         if test "${with_main_module+set}" = set; then
5746             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5747         else
5748             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5749         fi
5750     fi
5752     # Don't bother having configure look for stuff not needed for the build platform anyway
5753     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5754     sub_conf_defaults=" \
5755         --build="$build_alias" \
5756         --disable-cairo-canvas \
5757         --disable-cups \
5758         --disable-customtarget-components \
5759         --disable-firebird-sdbc \
5760         --disable-gpgmepp \
5761         --disable-gstreamer-1-0 \
5762         --disable-gtk3 \
5763         --disable-gtk4 \
5764         --disable-libcmis \
5765         --disable-mariadb-sdbc \
5766         --disable-nss \
5767         --disable-online-update \
5768         --disable-opencl \
5769         --disable-pdfimport \
5770         --disable-postgresql-sdbc \
5771         --disable-skia \
5772         --disable-xmlhelp \
5773         --enable-dynamic-loading \
5774         --enable-icecream="$enable_icecream" \
5775         --without-doxygen \
5776         --without-webdav \
5777         --without-x \
5778         --with-tls=openssl \
5780     # single quotes added for better readability in case of spaces
5781     echo "    Running CONF-FOR-BUILD/configure" \
5782         $sub_conf_defaults \
5783         --with-parallelism="'$with_parallelism'" \
5784         --with-theme="'$with_theme'" \
5785         --with-vendor="'$with_vendor'" \
5786         $sub_conf_opts \
5787         $with_build_platform_configure_options \
5788         --srcdir=$srcdir
5790     ./configure \
5791         $sub_conf_defaults \
5792         --with-parallelism="$with_parallelism" \
5793         --with-theme="$with_theme" \
5794         "--with-vendor=$with_vendor" \
5795         $sub_conf_opts \
5796         $with_build_platform_configure_options \
5797         --srcdir=$srcdir \
5798         2>&1 | sed -e 's/^/    /'
5799     if test [${PIPESTATUS[0]}] -ne 0; then
5800         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5801     fi
5803     # filter permitted build targets
5804     PERMITTED_BUILD_TARGETS="
5805         AVMEDIA
5806         BOOST
5807         CAIRO
5808         CLUCENE
5809         CURL
5810         DBCONNECTIVITY
5811         DESKTOP
5812         DRAGONBOX
5813         DYNLOADING
5814         EPOXY
5815         EXPAT
5816         GLM
5817         GRAPHITE
5818         HARFBUZZ
5819         HELPTOOLS
5820         ICU
5821         LCMS2
5822         LIBJPEG_TURBO
5823         LIBLANGTAG
5824         LibO
5825         LIBFFI
5826         LIBPN
5827         LIBTIFF
5828         LIBWEBP
5829         LIBXML2
5830         LIBXSLT
5831         MDDS
5832         NATIVE
5833         OPENSSL
5834         ORCUS
5835         PYTHON
5836         SCRIPTING
5837         ZLIB
5839     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5840     # newlined lists, to use grep as a filter
5841     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5842     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5843     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5844     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5846     cp config_host.mk ../config_build.mk
5847     cp config_host_lang.mk ../config_build_lang.mk
5848     mv config.log ../config.Build.log
5849     mkdir -p ../config_build
5850     mv config_host/*.h ../config_build
5851     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5853     # all these will get a _FOR_BUILD postfix
5854     DIRECT_FOR_BUILD_SETTINGS="
5855         CC
5856         CPPU_ENV
5857         CXX
5858         ILIB
5859         JAVA_HOME
5860         JAVAIFLAGS
5861         JDK
5862         JDK_SECURITYMANAGER_DISALLOWED
5863         LIBO_BIN_FOLDER
5864         LIBO_LIB_FOLDER
5865         LIBO_URE_LIB_FOLDER
5866         LIBO_URE_MISC_FOLDER
5867         OS
5868         SDKDIRNAME
5869         SYSTEM_LIBXML
5870         SYSTEM_LIBXSLT
5872     # these overwrite host config with build config
5873     OVERWRITING_SETTINGS="
5874         ANT
5875         ANT_HOME
5876         ANT_LIB
5877         JAVA_CLASSPATH_NOT_SET
5878         JAVA_SOURCE_VER
5879         JAVA_TARGET_VER
5880         JAVACFLAGS
5881         JAVACOMPILER
5882         JAVADOC
5883         JAVADOCISGJDOC
5884         LOCKFILE
5885         SYSTEM_GENBRK
5886         SYSTEM_GENCCODE
5887         SYSTEM_GENCMN
5889     # these need some special handling
5890     EXTRA_HANDLED_SETTINGS="
5891         INSTDIR
5892         INSTROOT
5893         PATH
5894         WORKDIR
5896     OLD_PATH=$PATH
5897     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5898     BUILD_PATH=$PATH
5899     PATH=$OLD_PATH
5901     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5902     echo "$line" >>build-config
5904     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5905         VV='$'$V
5906         VV=`eval "echo $VV"`
5907         if test -n "$VV"; then
5908             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5909             echo "$line" >>build-config
5910         fi
5911     done
5913     for V in $OVERWRITING_SETTINGS; do
5914         VV='$'$V
5915         VV=`eval "echo $VV"`
5916         if test -n "$VV"; then
5917             line=${V}='${'${V}:-$VV'}'
5918             echo "$line" >>build-config
5919         fi
5920     done
5922     for V in INSTDIR INSTROOT WORKDIR; do
5923         VV='$'$V
5924         VV=`eval "echo $VV"`
5925         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5926         if test -n "$VV"; then
5927             line="${V}_FOR_BUILD='$VV'"
5928             echo "$line" >>build-config
5929         fi
5930     done
5932     )
5933     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5934     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])
5935     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5936              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5938     eval `cat CONF-FOR-BUILD/build-config`
5940     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5942     rm -rf CONF-FOR-BUILD
5943 else
5944     OS_FOR_BUILD="$OS"
5945     CC_FOR_BUILD="$CC"
5946     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5947     CXX_FOR_BUILD="$CXX"
5948     INSTDIR_FOR_BUILD="$INSTDIR"
5949     INSTROOT_FOR_BUILD="$INSTROOT"
5950     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5951     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5952     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5953     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5954     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5955     WORKDIR_FOR_BUILD="$WORKDIR"
5957 AC_SUBST(OS_FOR_BUILD)
5958 AC_SUBST(INSTDIR_FOR_BUILD)
5959 AC_SUBST(INSTROOT_FOR_BUILD)
5960 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5961 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5962 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5963 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5964 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5965 AC_SUBST(WORKDIR_FOR_BUILD)
5966 AC_SUBST(CC_FOR_BUILD)
5967 AC_SUBST(CXX_FOR_BUILD)
5968 AC_SUBST(CPPU_ENV_FOR_BUILD)
5970 dnl ===================================================================
5971 dnl Check for lockfile deps
5972 dnl ===================================================================
5973 if test -z "$CROSS_COMPILING"; then
5974     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5975     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5976     AC_MSG_CHECKING([which lockfile binary to use])
5977     case "$with_system_lockfile" in
5978     yes)
5979         AC_MSG_RESULT([external])
5980         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5981         ;;
5982     no)
5983         AC_MSG_RESULT([internal])
5984         ;;
5985     *)
5986         if test -x "$with_system_lockfile"; then
5987             LOCKFILE="$with_system_lockfile"
5988         else
5989             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5990         fi
5991         AC_MSG_RESULT([$with_system_lockfile])
5992         ;;
5993     esac
5996 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5997     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6000 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6001 AC_CHECK_FUNCS([utime utimes])
6002 AC_SUBST(LOCKFILE)
6004 dnl ===================================================================
6005 dnl Check for syslog header
6006 dnl ===================================================================
6007 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6009 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6010 dnl ===================================================================
6011 AC_MSG_CHECKING([whether to turn warnings to errors])
6012 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6013     ENABLE_WERROR="TRUE"
6014     PYTHONWARNINGS="error"
6015     AC_MSG_RESULT([yes])
6016 else
6017     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6018         ENABLE_WERROR="TRUE"
6019         PYTHONWARNINGS="error"
6020         AC_MSG_RESULT([yes])
6021     else
6022         AC_MSG_RESULT([no])
6023     fi
6025 AC_SUBST(ENABLE_WERROR)
6026 AC_SUBST(PYTHONWARNINGS)
6028 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6029 dnl ===================================================================
6030 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6031 if test -z "$enable_assert_always_abort"; then
6032    if test "$ENABLE_DEBUG" = TRUE; then
6033        enable_assert_always_abort=yes
6034    else
6035        enable_assert_always_abort=no
6036    fi
6038 if test "$enable_assert_always_abort" = "yes"; then
6039     ASSERT_ALWAYS_ABORT="TRUE"
6040     AC_MSG_RESULT([yes])
6041 else
6042     ASSERT_ALWAYS_ABORT="FALSE"
6043     AC_MSG_RESULT([no])
6045 AC_SUBST(ASSERT_ALWAYS_ABORT)
6047 # Determine whether to use ooenv for the instdir installation
6048 # ===================================================================
6049 if test $_os != "WINNT" -a $_os != "Darwin"; then
6050     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6051     if test -z "$enable_ooenv"; then
6052         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6053             enable_ooenv=yes
6054         else
6055             enable_ooenv=no
6056         fi
6057     fi
6058     if test "$enable_ooenv" = "no"; then
6059         AC_MSG_RESULT([no])
6060     else
6061         ENABLE_OOENV="TRUE"
6062         AC_MSG_RESULT([yes])
6063     fi
6065 AC_SUBST(ENABLE_OOENV)
6067 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6068     if test "$enable_qt5" = "no"; then
6069         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6070     else
6071         enable_qt5=yes
6072     fi
6075 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6076 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6077     AC_MSG_RESULT([yes])
6078     ENABLE_PAGEIN=TRUE
6079     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6080 else
6081     AC_MSG_RESULT([no])
6083 AC_SUBST(ENABLE_PAGEIN)
6085 dnl ===================================================================
6086 dnl check for cups support
6087 dnl ===================================================================
6089 AC_MSG_CHECKING([whether to enable CUPS support])
6090 if test "$test_cups" = yes -a "$enable_cups" != no; then
6091     ENABLE_CUPS=TRUE
6092     AC_MSG_RESULT([yes])
6094     AC_MSG_CHECKING([whether cups support is present])
6095     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6096     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6097     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6098         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6099     fi
6100 else
6101     AC_MSG_RESULT([no])
6104 AC_SUBST(ENABLE_CUPS)
6106 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6108 dnl whether to find & fetch external tarballs?
6109 dnl ===================================================================
6110 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6111    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6112        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6113    else
6114        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6115    fi
6117 if test -z "$TARFILE_LOCATION"; then
6118     if test -d "$SRC_ROOT/src" ; then
6119         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6120         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6121     fi
6122     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6123 else
6124     AbsolutePath "$TARFILE_LOCATION"
6125     PathFormat "${absolute_path}"
6126     TARFILE_LOCATION="${formatted_path_unix}"
6128 AC_SUBST(TARFILE_LOCATION)
6130 AC_MSG_CHECKING([whether we want to fetch tarballs])
6131 if test "$enable_fetch_external" != "no"; then
6132     if test "$with_all_tarballs" = "yes"; then
6133         AC_MSG_RESULT([yes, all of them])
6134         DO_FETCH_TARBALLS="ALL"
6135     else
6136         AC_MSG_RESULT([yes, if we use them])
6137         DO_FETCH_TARBALLS="TRUE"
6138     fi
6139 else
6140     AC_MSG_RESULT([no])
6141     DO_FETCH_TARBALLS=
6143 AC_SUBST(DO_FETCH_TARBALLS)
6145 dnl Test whether to include MySpell dictionaries
6146 dnl ===================================================================
6147 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6148 if test "$with_myspell_dicts" = "yes"; then
6149     AC_MSG_RESULT([yes])
6150     WITH_MYSPELL_DICTS=TRUE
6151     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6152     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6153 else
6154     AC_MSG_RESULT([no])
6155     WITH_MYSPELL_DICTS=
6157 AC_SUBST(WITH_MYSPELL_DICTS)
6159 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6160 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6161     if test "$with_system_dicts" = yes; then
6162         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6163     fi
6164     with_system_dicts=no
6167 AC_MSG_CHECKING([whether to use dicts from external paths])
6168 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6169     AC_MSG_RESULT([yes])
6170     SYSTEM_DICTS=TRUE
6171     AC_MSG_CHECKING([for spelling dictionary directory])
6172     if test -n "$with_external_dict_dir"; then
6173         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6174     else
6175         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6176         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6177             DICT_SYSTEM_DIR=file:///usr/share/myspell
6178         fi
6179     fi
6180     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6181     AC_MSG_CHECKING([for hyphenation patterns directory])
6182     if test -n "$with_external_hyph_dir"; then
6183         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6184     else
6185         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6186     fi
6187     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6188     AC_MSG_CHECKING([for thesaurus directory])
6189     if test -n "$with_external_thes_dir"; then
6190         THES_SYSTEM_DIR=file://$with_external_thes_dir
6191     else
6192         THES_SYSTEM_DIR=file:///usr/share/mythes
6193     fi
6194     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6195 else
6196     AC_MSG_RESULT([no])
6197     SYSTEM_DICTS=
6199 AC_SUBST(SYSTEM_DICTS)
6200 AC_SUBST(DICT_SYSTEM_DIR)
6201 AC_SUBST(HYPH_SYSTEM_DIR)
6202 AC_SUBST(THES_SYSTEM_DIR)
6204 dnl ===================================================================
6205 dnl Precompiled headers.
6206 ENABLE_PCH=""
6207 AC_MSG_CHECKING([whether to enable pch feature])
6208 if test -z "$enable_pch"; then
6209     if test "$_os" = "WINNT"; then
6210         # Enabled by default on Windows.
6211         enable_pch=yes
6212         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6213         if test -z "$enable_ccache" -a "$SCCACHE"; then
6214             CCACHE=""
6215         fi
6216     else
6217         enable_pch=no
6218     fi
6220 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6221     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6223 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6224     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6226 if test "$enable_pch" = "system"; then
6227     ENABLE_PCH="1"
6228     AC_MSG_RESULT([yes (system headers)])
6229 elif test "$enable_pch" = "base"; then
6230     ENABLE_PCH="2"
6231     AC_MSG_RESULT([yes (system and base headers)])
6232 elif test "$enable_pch" = "normal"; then
6233     ENABLE_PCH="3"
6234     AC_MSG_RESULT([yes (normal)])
6235 elif test "$enable_pch" = "full"; then
6236     ENABLE_PCH="4"
6237     AC_MSG_RESULT([yes (full)])
6238 elif test "$enable_pch" = "yes"; then
6239     # Pick a suitable default.
6240     if test "$GCC" = "yes"; then
6241         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6242         # while making the PCHs larger and rebuilds more likely.
6243         ENABLE_PCH="2"
6244         AC_MSG_RESULT([yes (system and base headers)])
6245     else
6246         # With MSVC the highest level makes a significant difference,
6247         # and it was the default when there used to be no PCH levels.
6248         ENABLE_PCH="4"
6249         AC_MSG_RESULT([yes (full)])
6250     fi
6251 elif test "$enable_pch" = "no"; then
6252     AC_MSG_RESULT([no])
6253 else
6254     AC_MSG_ERROR([Unknown value for --enable-pch])
6256 AC_SUBST(ENABLE_PCH)
6257 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6258 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6259     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6260     if test "$CCACHE_BIN" != "not found"; then
6261         AC_MSG_CHECKING([ccache version])
6262         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6263         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6264         AC_MSG_RESULT([$CCACHE_VERSION])
6265         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6266         if test "$CCACHE_NUMVER" -gt "030701"; then
6267             AC_MSG_RESULT([yes])
6268         else
6269             AC_MSG_RESULT([no (not newer than 3.7.1)])
6270             CCACHE_DEPEND_MODE=
6271         fi
6272     fi
6275 PCH_INSTANTIATE_TEMPLATES=
6276 if test -n "$ENABLE_PCH"; then
6277     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6278     save_CFLAGS=$CFLAGS
6279     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6280     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6281     CFLAGS=$save_CFLAGS
6282     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6283         AC_MSG_RESULT(yes)
6284     else
6285         AC_MSG_RESULT(no)
6286     fi
6288 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6290 BUILDING_PCH_WITH_OBJ=
6291 if test -n "$ENABLE_PCH"; then
6292     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6293     save_CFLAGS=$CFLAGS
6294     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6295     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6296     CFLAGS=$save_CFLAGS
6297     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6298         AC_MSG_RESULT(yes)
6299     else
6300         AC_MSG_RESULT(no)
6301     fi
6303 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6305 PCH_CODEGEN=
6306 PCH_NO_CODEGEN=
6307 fpch_prefix=
6308 if test "$COM" = MSC; then
6309     fpch_prefix="-Xclang "
6311 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6312     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6313     save_CFLAGS=$CFLAGS
6314     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6315     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6316         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6317     CFLAGS=$save_CFLAGS
6318     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6319     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6320         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6321     CFLAGS=$save_CFLAGS
6322     if test -n "$PCH_CODEGEN"; then
6323         AC_MSG_RESULT(yes)
6324     else
6325         AC_MSG_RESULT(no)
6326     fi
6328 AC_SUBST(PCH_CODEGEN)
6329 AC_SUBST(PCH_NO_CODEGEN)
6330 PCH_DEBUGINFO=
6331 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6332     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6333     save_CFLAGS=$CFLAGS
6334     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6335     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6336     CFLAGS=$save_CFLAGS
6337     if test -n "$PCH_DEBUGINFO"; then
6338         AC_MSG_RESULT(yes)
6339     else
6340         AC_MSG_RESULT(no)
6341     fi
6343 AC_SUBST(PCH_DEBUGINFO)
6345 TAB=`printf '\t'`
6347 AC_MSG_CHECKING([the GNU Make version])
6348 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6349 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6350 if test "$_make_longver" -ge "038200"; then
6351     AC_MSG_RESULT([$GNUMAKE $_make_version])
6352 else
6353     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6356 # find if gnumake support file function
6357 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6358 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6359 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6360     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6362 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6363 \$(file >test.txt,Success )
6365 .PHONY: all
6366 all:
6367 <TAB>@cat test.txt
6370 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6371 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6372     HAVE_GNUMAKE_FILE_FUNC=TRUE
6373     AC_MSG_RESULT([yes])
6374 else
6375     AC_MSG_RESULT([no])
6377 rm -rf $TESTGMAKEFILEFUNC
6378 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6380 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6381 STALE_MAKE=
6382 if test "$_make_ver_check" = ""; then
6383    STALE_MAKE=TRUE
6386 HAVE_LD_HASH_STYLE=FALSE
6387 WITH_LINKER_HASH_STYLE=
6388 AC_MSG_CHECKING([for --hash-style gcc linker support])
6389 if test "$GCC" = "yes"; then
6390     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6391         hash_styles="gnu sysv"
6392     elif test "$with_linker_hash_style" = "no"; then
6393         hash_styles=
6394     else
6395         hash_styles="$with_linker_hash_style"
6396     fi
6398     for hash_style in $hash_styles; do
6399         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6400         hash_style_ldflags_save=$LDFLAGS
6401         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6403         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6404             [
6405 #include <stdio.h>
6406             ],[
6407 printf ("");
6408             ])],
6409             [
6410                   HAVE_LD_HASH_STYLE=TRUE
6411                   WITH_LINKER_HASH_STYLE=$hash_style
6412             ],
6413             [HAVE_LD_HASH_STYLE=FALSE],
6414             [HAVE_LD_HASH_STYLE=FALSE])
6415         LDFLAGS=$hash_style_ldflags_save
6416     done
6418     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6419         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6420     else
6421         AC_MSG_RESULT( no )
6422     fi
6423     LDFLAGS=$hash_style_ldflags_save
6424 else
6425     AC_MSG_RESULT( no )
6427 AC_SUBST(HAVE_LD_HASH_STYLE)
6428 AC_SUBST(WITH_LINKER_HASH_STYLE)
6430 dnl ===================================================================
6431 dnl Check whether there's a Perl version available.
6432 dnl ===================================================================
6433 if test -z "$with_perl_home"; then
6434     AC_PATH_PROG(PERL, perl)
6435 else
6436     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6437     _perl_path="$with_perl_home/bin/perl"
6438     if test -x "$_perl_path"; then
6439         PERL=$_perl_path
6440     else
6441         AC_MSG_ERROR([$_perl_path not found])
6442     fi
6445 dnl ===================================================================
6446 dnl Testing for Perl version 5 or greater.
6447 dnl $] is the Perl version variable, it is returned as an integer
6448 dnl ===================================================================
6449 if test "$PERL"; then
6450     AC_MSG_CHECKING([the Perl version])
6451     ${PERL} -e "exit($]);"
6452     _perl_version=$?
6453     if test "$_perl_version" -lt 5; then
6454         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6455     fi
6456     AC_MSG_RESULT([Perl $_perl_version])
6457 else
6458     AC_MSG_ERROR([Perl not found, install Perl 5])
6461 dnl ===================================================================
6462 dnl Testing for required Perl modules
6463 dnl ===================================================================
6465 AC_MSG_CHECKING([for required Perl modules])
6466 perl_use_string="use Cwd ; use Digest::MD5"
6467 if test "$_os" = "WINNT"; then
6468     if test -n "$PKGFORMAT"; then
6469         for i in $PKGFORMAT; do
6470             case "$i" in
6471             msi)
6472                 # for getting fonts versions to use in MSI
6473                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6474                 ;;
6475             esac
6476         done
6477     fi
6479 if test "$with_system_hsqldb" = "yes"; then
6480     perl_use_string="$perl_use_string ; use Archive::Zip"
6482 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6483     # OpenSSL needs that to build
6484     perl_use_string="$perl_use_string ; use FindBin"
6486 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6487     AC_MSG_RESULT([all modules found])
6488 else
6489     AC_MSG_RESULT([failed to find some modules])
6490     # Find out which modules are missing.
6491     for i in $perl_use_string; do
6492         if test "$i" != "use" -a "$i" != ";"; then
6493             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6494                 missing_perl_modules="$missing_perl_modules $i"
6495             fi
6496         fi
6497     done
6498     AC_MSG_ERROR([
6499     The missing Perl modules are: $missing_perl_modules
6500     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6503 dnl ===================================================================
6504 dnl Check for pkg-config
6505 dnl ===================================================================
6506 if test "$_os" != "WINNT"; then
6507     PKG_PROG_PKG_CONFIG
6509 AC_SUBST(PKG_CONFIG)
6510 AC_SUBST(PKG_CONFIG_PATH)
6511 AC_SUBST(PKG_CONFIG_LIBDIR)
6513 if test "$_os" != "WINNT"; then
6515     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6516     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6517     # explicitly. Or put /path/to/compiler in PATH yourself.
6519     toolprefix=gcc
6520     if test "$COM_IS_CLANG" = "TRUE"; then
6521         toolprefix=llvm
6522     fi
6523     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6524     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6525     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6526     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6527     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6528     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6530 AC_SUBST(AR)
6531 AC_SUBST(NM)
6532 AC_SUBST(OBJDUMP)
6533 AC_SUBST(RANLIB)
6534 AC_SUBST(READELF)
6535 AC_SUBST(STRIP)
6537 dnl ===================================================================
6538 dnl pkg-config checks on macOS
6539 dnl ===================================================================
6541 if test $_os = Darwin; then
6542     AC_MSG_CHECKING([for bogus pkg-config])
6543     if test -n "$PKG_CONFIG"; then
6544         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6545             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6546         else
6547             if test "$enable_bogus_pkg_config" = "yes"; then
6548                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6549             else
6550                 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.])
6551             fi
6552         fi
6553     else
6554         AC_MSG_RESULT([no, good])
6555     fi
6558 find_csc()
6560     # Return value: $csctest
6562     unset csctest
6564     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6565     if test -n "$regvalue"; then
6566         csctest=$regvalue
6567         return
6568     fi
6571 find_al()
6573     # Return value: $altest
6575     unset altest
6577     # We need this check to detect 4.6.1 or above.
6578     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6579         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6580         PathFormat "$regvalue"
6581         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6582             altest=$regvalue
6583             return
6584         fi
6585     done
6587     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6588     for x in $reglist; do
6589         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6590         PathFormat "$regvalue"
6591         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6592             altest=$regvalue
6593             return
6594         fi
6595     done
6598 find_dotnetsdk46()
6600     unset frametest
6602     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6603         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6604         if test -n "$regvalue"; then
6605             frametest=$regvalue
6606             return
6607         fi
6608     done
6611 find_winsdk_version()
6613     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6614     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6616     unset winsdktest winsdkbinsubdir winsdklibsubdir
6618     case "$1" in
6619     8.0|8.0A)
6620         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6621         if test -n "$regvalue"; then
6622             winsdktest=$regvalue
6623             winsdklibsubdir=win8
6624             return
6625         fi
6626         ;;
6627     8.1|8.1A)
6628         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6629         if test -n "$regvalue"; then
6630             winsdktest=$regvalue
6631             winsdklibsubdir=winv6.3
6632             return
6633         fi
6634         ;;
6635     10.0)
6636         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6637         if test -n "$regvalue"; then
6638             winsdktest=$regvalue
6639             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6640             if test -n "$regvalue"; then
6641                 winsdkbinsubdir="$regvalue".0
6642                 winsdklibsubdir=$winsdkbinsubdir
6643                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6644                 local tmppath_unix=$(cygpath -u "$tmppath")
6645                 # test exist the SDK path
6646                 if test -d "$tmppath_unix"; then
6647                    # when path is convertible to a short path then path is okay
6648                    cygpath -d "$tmppath" >/dev/null 2>&1
6649                    if test $? -ne 0; then
6650                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6651                    fi
6652                 else
6653                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6654                 fi
6655             fi
6656             return
6657         fi
6658         ;;
6659     esac
6662 find_winsdk()
6664     # Return value: From find_winsdk_version
6666     unset winsdktest
6668     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6669         find_winsdk_version $ver
6670         if test -n "$winsdktest"; then
6671             return
6672         fi
6673     done
6676 find_msms()
6678     # Return value: $msmdir
6680     AC_MSG_CHECKING([for MSVC merge modules directory])
6681     local my_msm_files
6682     local my_msm_dir
6684     dnl Order my_msm_files in increasing order. Then check the directories returned
6685     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6686     dnl the result will be the highest MSM version found in the highest directory.
6688     case "$VCVER" in
6689         16.0 | 17.0 | 17.4)
6690         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm Microsoft_VC143_CRT_x86.msm ${my_msm_files}"
6691         ;;
6692     esac
6693     for f in $my_msm_files; do
6694         echo "$as_me:$LINENO: searching for $f" >&5
6695     done
6697     msmdir=
6698     case "$VCVER" in
6699     16.0 | 17.0 | 17.4)
6700         for f in ${my_msm_files}; do
6701             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6702                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6703                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6704                 if test -e "$my_msm_dir${f}"; then
6705                     msmdir=$my_msm_dir
6706                 fi
6707             done
6708         done
6709         ;;
6710     esac
6712     if test -n "$msmdir"; then
6713         msmdir=`cygpath -m "$msmdir"`
6714         AC_MSG_RESULT([$msmdir])
6715     else
6716         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6717             AC_MSG_FAILURE([not found])
6718         else
6719             AC_MSG_WARN([not found (check config.log)])
6720             add_warning "MSM none of ${my_msm_files} found"
6721         fi
6722     fi
6725 find_msvc_x64_dlls()
6727     # Return value: $msvcdllpath, $msvcdlls
6729     AC_MSG_CHECKING([for MSVC x64 DLL path])
6731     dnl Order crtver in increasing order. Then check the directories returned by
6732     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6733     dnl the result will be the highest CRT version found in the highest directory.
6735     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6736     case "$VCVER" in
6737     16.0 | 17.0 | 17.4)
6738         for crtver in 141 142 143; do
6739             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6740                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6741                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6742                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6743                 fi
6744             done
6745         done
6746         ;;
6747     esac
6748     AC_MSG_RESULT([$msvcdllpath])
6749     AC_MSG_CHECKING([for MSVC x64 DLLs])
6750     msvcdlls="msvcp140.dll vcruntime140.dll"
6751     for dll in $msvcdlls; do
6752         if ! test -f "$msvcdllpath/$dll"; then
6753             AC_MSG_FAILURE([missing $dll])
6754         fi
6755     done
6756     AC_MSG_RESULT([found all ($msvcdlls)])
6759 dnl =========================================
6760 dnl Check for the Windows  SDK.
6761 dnl =========================================
6762 if test "$_os" = "WINNT"; then
6763     AC_MSG_CHECKING([for Windows SDK])
6764     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6765         find_winsdk
6766         WINDOWS_SDK_HOME=$winsdktest
6768         # normalize if found
6769         if test -n "$WINDOWS_SDK_HOME"; then
6770             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6771             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6772         fi
6774         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6775     fi
6777     if test -n "$WINDOWS_SDK_HOME"; then
6778         # Remove a possible trailing backslash
6779         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6781         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6782              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6783              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6784             have_windows_sdk_headers=yes
6785         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6786              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6787              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6788             have_windows_sdk_headers=yes
6789         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6790              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6791              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6792             have_windows_sdk_headers=yes
6793         else
6794             have_windows_sdk_headers=no
6795         fi
6797         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6798             have_windows_sdk_libs=yes
6799         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6800             have_windows_sdk_libs=yes
6801         else
6802             have_windows_sdk_libs=no
6803         fi
6805         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6806             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6807 the  Windows SDK are installed.])
6808         fi
6809     fi
6811     if test -z "$WINDOWS_SDK_HOME"; then
6812         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6813     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6814         WINDOWS_SDK_VERSION=80
6815         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6816     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6817         WINDOWS_SDK_VERSION=81
6818         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6819     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6820         WINDOWS_SDK_VERSION=10
6821         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6822     else
6823         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6824     fi
6825     PathFormat "$WINDOWS_SDK_HOME"
6826     WINDOWS_SDK_HOME="$formatted_path"
6827     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6828     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6829         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6830         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6831             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6832         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6833             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6834         fi
6835     fi
6837     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6838     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6839     dnl but not in v8.0), so allow this to be overridden with a
6840     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6841     dnl and configuration error if no WiLangId.vbs is found would arguably be
6842     dnl better, but I do not know under which conditions exactly it is needed by
6843     dnl msiglobal.pm:
6844     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6845         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6846         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6847         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6848             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6849             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6850         fi
6851         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6852             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6853             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6854         fi
6855         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6856             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6857             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6858         fi
6859     fi
6860     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6861         if test -n "$with_package_format" -a "$with_package_format" != no; then
6862             for i in "$with_package_format"; do
6863                 if test "$i" = "msi"; then
6864                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6865                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6866                     fi
6867                 fi
6868             done
6869         fi
6870     fi
6872 AC_SUBST(WINDOWS_SDK_HOME)
6873 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6874 AC_SUBST(WINDOWS_SDK_VERSION)
6875 AC_SUBST(WINDOWS_SDK_WILANGID)
6877 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6878     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6879     dnl dir, it also determines that dir's path w/o an arch segment if any,
6880     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6881     AC_MSG_CHECKING([for midl.exe])
6883     find_winsdk
6884     PathFormat "$winsdktest"
6885     winsdktest_unix="$formatted_path_unix"
6887     if test -n "$winsdkbinsubdir" \
6888         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6889     then
6890         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6891         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6892     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6893         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6894         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6895     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6896         MIDL_PATH=$winsdktest/Bin
6897         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6898     fi
6899     PathFormat "$MIDL_PATH"
6900     if test ! -f "$formatted_path_unix/midl.exe"; then
6901         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6902     else
6903         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6904     fi
6906     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6907     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6909     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6910          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6911          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6912          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6913     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6914          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6915          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6916          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6917     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6918          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6919          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6920          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6921     else
6922         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6923     fi
6925     dnl Check csc.exe
6926     AC_MSG_CHECKING([for csc.exe])
6927     find_csc
6928     PathFormat "$csctest"
6929     csctest_unix="$formatted_path_unix"
6930     if test -f "$csctest_unix/csc.exe"; then
6931         CSC_PATH="$csctest"
6932     fi
6933     if test ! -f "$csctest_unix/csc.exe"; then
6934         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6935     else
6936         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6937     fi
6939     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6941     dnl Check al.exe
6942     AC_MSG_CHECKING([for al.exe])
6943     if test -n "$winsdkbinsubdir" \
6944         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6945     then
6946         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6947     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6948         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6949     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6950         AL_PATH="$winsdktest/Bin"
6951     fi
6953     if test -z "$AL_PATH"; then
6954         find_al
6955         PathFormat "$altest"
6956         altest_unix="$formatted_path_unix"
6957         if test -f "$altest_unix/bin/al.exe"; then
6958             AL_PATH="$altest/bin"
6959         elif test -f "$altest_unix/al.exe"; then
6960             AL_PATH="$altest"
6961         fi
6962     fi
6963     PathFormat "$AL_PATH"
6964     if test ! -f "$formatted_path_unix/al.exe"; then
6965         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6966     else
6967         AC_MSG_RESULT([$AL_PATH/al.exe])
6968     fi
6970     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6972     dnl Check mscoree.lib / .NET Framework dir
6973     AC_MSG_CHECKING(.NET Framework)
6974     find_dotnetsdk46
6975     PathFormat "$frametest"
6976     frametest="$formatted_path_unix"
6977     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6978         DOTNET_FRAMEWORK_HOME="$frametest"
6979     else
6980         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6981             DOTNET_FRAMEWORK_HOME="$winsdktest"
6982         fi
6983     fi
6984     PathFormat "$DOTNET_FRAMEWORK_HOME"
6985     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
6986         AC_MSG_ERROR([mscoree.lib not found])
6987     fi
6988     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6990     PathFormat "$MIDL_PATH"
6991     MIDL_PATH="$formatted_path"
6993     PathFormat "$AL_PATH"
6994     AL_PATH="$formatted_path"
6996     PathFormat "$DOTNET_FRAMEWORK_HOME"
6997     DOTNET_FRAMEWORK_HOME="$formatted_path"
6999     PathFormat "$CSC_PATH"
7000     CSC_PATH="$formatted_path"
7003 dnl ===================================================================
7004 dnl Testing for C++ compiler and version...
7005 dnl ===================================================================
7007 if test "$_os" != "WINNT"; then
7008     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7009     save_CXXFLAGS=$CXXFLAGS
7010     AC_PROG_CXX
7011     CXXFLAGS=$save_CXXFLAGS
7012     if test -z "$CXX_BASE"; then
7013         CXX_BASE=`first_arg_basename "$CXX"`
7014     fi
7017 dnl check for GNU C++ compiler version
7018 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7019     AC_MSG_CHECKING([the GNU C++ compiler version])
7021     _gpp_version=`$CXX -dumpversion`
7022     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7024     if test "$_gpp_majmin" -lt "700"; then
7025         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7026     else
7027         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7028     fi
7030     dnl see https://code.google.com/p/android/issues/detail?id=41770
7031         glibcxx_threads=no
7032         AC_LANG_PUSH([C++])
7033         AC_REQUIRE_CPP
7034         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7035         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7036             #include <bits/c++config.h>]],[[
7037             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7038             && !defined(_GLIBCXX__PTHREADS) \
7039             && !defined(_GLIBCXX_HAS_GTHREADS)
7040             choke me
7041             #endif
7042         ]])],[AC_MSG_RESULT([yes])
7043         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7044         AC_LANG_POP([C++])
7045         if test $glibcxx_threads = yes; then
7046             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7047         fi
7049 AC_SUBST(BOOST_CXXFLAGS)
7052 # prefx CXX with ccache if needed
7054 if test "$CCACHE" != ""; then
7055     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7056     AC_LANG_PUSH([C++])
7057     save_CXXFLAGS=$CXXFLAGS
7058     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7059     # msvc does not fail on unknown options, check stdout
7060     if test "$COM" = MSC; then
7061         CXXFLAGS="$CXXFLAGS -nologo"
7062     fi
7063     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7064     ac_cxx_werror_flag=yes
7065     dnl an empty program will do, we're checking the compiler flags
7066     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7067                       [use_ccache=yes], [use_ccache=no])
7068     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7069         AC_MSG_RESULT([yes])
7070     else
7071         CXX="$CCACHE $CXX"
7072         CXX_BASE="ccache $CXX_BASE"
7073         AC_MSG_RESULT([no])
7074     fi
7075     CXXFLAGS=$save_CXXFLAGS
7076     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7077     AC_LANG_POP([C++])
7080 dnl ===================================================================
7081 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7082 dnl ===================================================================
7084 if test "$_os" != "WINNT"; then
7085     AC_PROG_CXXCPP
7087     dnl Check whether there's a C pre-processor.
7088     AC_PROG_CPP
7092 dnl ===================================================================
7093 dnl Find integral type sizes and alignments
7094 dnl ===================================================================
7096 if test "$_os" != "WINNT"; then
7098     AC_CHECK_SIZEOF(long)
7099     AC_CHECK_SIZEOF(short)
7100     AC_CHECK_SIZEOF(int)
7101     AC_CHECK_SIZEOF(long long)
7102     AC_CHECK_SIZEOF(double)
7103     AC_CHECK_SIZEOF(void*)
7104     AC_CHECK_SIZEOF(size_t)
7106     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7107     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7108     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7109     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7110     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7111     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7113     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7114     m4_pattern_allow([AC_CHECK_ALIGNOF])
7115     m4_ifdef([AC_CHECK_ALIGNOF],
7116         [
7117             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7118             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7119             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7120             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7121         ],
7122         [
7123             case "$_os-$host_cpu" in
7124             Linux-i686)
7125                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7126                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7127                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7128                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7129                 ;;
7130             Linux-x86_64)
7131                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7132                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7133                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7134                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7135                 ;;
7136             *)
7137                 if test -z "$ac_cv_alignof_short" -o \
7138                         -z "$ac_cv_alignof_int" -o \
7139                         -z "$ac_cv_alignof_long" -o \
7140                         -z "$ac_cv_alignof_double"; then
7141                    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.])
7142                 fi
7143                 ;;
7144             esac
7145         ])
7147     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7148     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7149     if test $ac_cv_sizeof_long -eq 8; then
7150         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7151     elif test $ac_cv_sizeof_double -eq 8; then
7152         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7153     else
7154         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7155     fi
7157     dnl Check for large file support
7158     AC_SYS_LARGEFILE
7159     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7160         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7161     fi
7162     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7163         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7164     fi
7165 else
7166     # Hardcode for MSVC
7167     SAL_TYPES_SIZEOFSHORT=2
7168     SAL_TYPES_SIZEOFINT=4
7169     SAL_TYPES_SIZEOFLONG=4
7170     SAL_TYPES_SIZEOFLONGLONG=8
7171     if test $WIN_HOST_BITS -eq 32; then
7172         SAL_TYPES_SIZEOFPOINTER=4
7173         SIZEOF_SIZE_T=4
7174     else
7175         SAL_TYPES_SIZEOFPOINTER=8
7176         SIZEOF_SIZE_T=8
7177     fi
7178     SAL_TYPES_ALIGNMENT2=2
7179     SAL_TYPES_ALIGNMENT4=4
7180     SAL_TYPES_ALIGNMENT8=8
7181     LFS_CFLAGS=''
7183 AC_SUBST(LFS_CFLAGS)
7184 AC_SUBST(SIZEOF_SIZE_T)
7186 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7187 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7188 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7189 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7190 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7191 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7192 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7193 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7195 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7196 AC_MSG_CHECKING([whether jumbo sheets are supported])
7197 if test "$_os" != "WINNT"; then
7198     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7199         AC_MSG_RESULT([yes])
7200         ENABLE_JUMBO_SHEETS=TRUE
7201         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7202     else
7203         AC_MSG_RESULT([no])
7204     fi
7205 else
7206     if test $WIN_HOST_BITS -gt 32; then
7207         # 64bit windows is special-cased for tools::Long because long is 32bit
7208         AC_MSG_RESULT([yes])
7209         ENABLE_JUMBO_SHEETS=TRUE
7210         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7211     else
7212         AC_MSG_RESULT([no])
7213     fi
7215 AC_SUBST(ENABLE_JUMBO_SHEETS)
7217 dnl ===================================================================
7218 dnl Check whether to enable runtime optimizations
7219 dnl ===================================================================
7220 ENABLE_RUNTIME_OPTIMIZATIONS=
7221 AC_MSG_CHECKING([whether to enable runtime optimizations])
7222 if test -z "$enable_runtime_optimizations"; then
7223     for i in $CC; do
7224         case $i in
7225         -fsanitize=*)
7226             enable_runtime_optimizations=no
7227             break
7228             ;;
7229         esac
7230     done
7232 if test "$enable_runtime_optimizations" != no; then
7233     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7234     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7235     AC_MSG_RESULT([yes])
7236 else
7237     AC_MSG_RESULT([no])
7239 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7241 dnl ===================================================================
7242 dnl Check if valgrind headers are available
7243 dnl ===================================================================
7244 ENABLE_VALGRIND=
7245 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7246     prev_cppflags=$CPPFLAGS
7247     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7248     # or where does it come from?
7249     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7250     AC_CHECK_HEADER([valgrind/valgrind.h],
7251         [ENABLE_VALGRIND=TRUE])
7252     CPPFLAGS=$prev_cppflags
7254 AC_SUBST([ENABLE_VALGRIND])
7255 if test -z "$ENABLE_VALGRIND"; then
7256     if test "$with_valgrind" = yes; then
7257         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7258     fi
7259     VALGRIND_CFLAGS=
7261 AC_SUBST([VALGRIND_CFLAGS])
7264 dnl ===================================================================
7265 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7266 dnl ===================================================================
7268 # We need at least the sys/sdt.h include header.
7269 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7270 if test "$SDT_H_FOUND" = "TRUE"; then
7271     # Found sys/sdt.h header, now make sure the c++ compiler works.
7272     # Old g++ versions had problems with probes in constructors/destructors.
7273     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7274     AC_LANG_PUSH([C++])
7275     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7276     #include <sys/sdt.h>
7277     class ProbeClass
7278     {
7279     private:
7280       int& ref;
7281       const char *name;
7283     public:
7284       ProbeClass(int& v, const char *n) : ref(v), name(n)
7285       {
7286         DTRACE_PROBE2(_test_, cons, name, ref);
7287       }
7289       void method(int min)
7290       {
7291         DTRACE_PROBE3(_test_, meth, name, ref, min);
7292         ref -= min;
7293       }
7295       ~ProbeClass()
7296       {
7297         DTRACE_PROBE2(_test_, dest, name, ref);
7298       }
7299     };
7300     ]],[[
7301     int i = 64;
7302     DTRACE_PROBE1(_test_, call, i);
7303     ProbeClass inst = ProbeClass(i, "call");
7304     inst.method(24);
7305     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7306           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7307     AC_LANG_POP([C++])
7309 AC_CONFIG_HEADERS([config_host/config_probes.h])
7311 dnl ===================================================================
7312 dnl GCC features
7313 dnl ===================================================================
7314 HAVE_GCC_STACK_CLASH_PROTECTION=
7315 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7316     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7317     save_CFLAGS=$CFLAGS
7318     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7319     AC_LINK_IFELSE(
7320         [AC_LANG_PROGRAM(, [[return 0;]])],
7321         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7322         [AC_MSG_RESULT([no])])
7323     CFLAGS=$save_CFLAGS
7325     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7326     save_CFLAGS=$CFLAGS
7327     CFLAGS="$CFLAGS -Werror -mno-avx"
7328     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7329     CFLAGS=$save_CFLAGS
7330     if test "$HAVE_GCC_AVX" = "TRUE"; then
7331         AC_MSG_RESULT([yes])
7332     else
7333         AC_MSG_RESULT([no])
7334     fi
7336     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7337     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7338     int v = 0;
7339     if (__sync_add_and_fetch(&v, 1) != 1 ||
7340         __sync_sub_and_fetch(&v, 1) != 0)
7341         return 1;
7342     __sync_synchronize();
7343     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7344         v != 1)
7345         return 1;
7346     return 0;
7347 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7348     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7349         AC_MSG_RESULT([yes])
7350         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7351     else
7352         AC_MSG_RESULT([no])
7353     fi
7355     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7356     AC_LANG_PUSH([C++])
7357     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7358             #include <cstddef>
7359             #include <cxxabi.h>
7360             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7361         ])], [
7362             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7363             AC_MSG_RESULT([yes])
7364         ], [AC_MSG_RESULT([no])])
7365     AC_LANG_POP([C++])
7367     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7368     AC_LANG_PUSH([C++])
7369     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7370             #include <cstddef>
7371             #include <cxxabi.h>
7372             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7373         ])], [
7374             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7375             AC_MSG_RESULT([yes])
7376         ], [AC_MSG_RESULT([no])])
7377     AC_LANG_POP([C++])
7379     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7380     AC_LANG_PUSH([C++])
7381     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7382             #include <cxxabi.h>
7383             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7384         ])], [
7385             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7386             AC_MSG_RESULT([yes])
7387         ], [AC_MSG_RESULT([no])])
7388     AC_LANG_POP([C++])
7390     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7391     AC_LANG_PUSH([C++])
7392     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393             #include <cstddef>
7394             #include <cxxabi.h>
7395             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7396         ])], [
7397             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7398             AC_MSG_RESULT([yes])
7399         ], [AC_MSG_RESULT([no])])
7400     AC_LANG_POP([C++])
7402     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7403     AC_LANG_PUSH([C++])
7404     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7405             #include <cstddef>
7406             #include <cxxabi.h>
7407             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7408         ])], [
7409             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7410             AC_MSG_RESULT([yes])
7411         ], [AC_MSG_RESULT([no])])
7412     AC_LANG_POP([C++])
7414     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7415     AC_LANG_PUSH([C++])
7416     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7417             #include <cxxabi.h>
7418             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7419         ])], [
7420             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7421             AC_MSG_RESULT([yes])
7422         ], [AC_MSG_RESULT([no])])
7423     AC_LANG_POP([C++])
7425     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7426     AC_LANG_PUSH([C++])
7427     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7428             #include <cxxabi.h>
7429             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7430         ])], [
7431             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7432             AC_MSG_RESULT([yes])
7433         ], [AC_MSG_RESULT([no])])
7434     AC_LANG_POP([C++])
7436     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7437     AC_LANG_PUSH([C++])
7438     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7439             #include <cxxabi.h>
7440             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7441         ])], [
7442             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7443             AC_MSG_RESULT([yes])
7444         ], [AC_MSG_RESULT([no])])
7445     AC_LANG_POP([C++])
7447     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7448     AC_LANG_PUSH([C++])
7449     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7450             #include <cstddef>
7451             #include <cxxabi.h>
7452             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7453         ])], [
7454             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7455             AC_MSG_RESULT([yes])
7456         ], [AC_MSG_RESULT([no])])
7457     AC_LANG_POP([C++])
7459     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7460     AC_LANG_PUSH([C++])
7461     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7462             #include <cstddef>
7463             #include <cxxabi.h>
7464             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7465         ])], [
7466             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7467             AC_MSG_RESULT([yes])
7468         ], [AC_MSG_RESULT([no])])
7469     AC_LANG_POP([C++])
7472 AC_SUBST(HAVE_GCC_AVX)
7473 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7474 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7476 dnl ===================================================================
7477 dnl Identify the C++ library
7478 dnl ===================================================================
7480 AC_MSG_CHECKING([what the C++ library is])
7481 HAVE_LIBSTDCPP=
7482 HAVE_LIBCPP=
7483 AC_LANG_PUSH([C++])
7484 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7485 #include <utility>
7486 #ifndef __GLIBCXX__
7487 foo bar
7488 #endif
7489 ]])],
7490     [CPP_LIBRARY=GLIBCXX
7491      cpp_library_name="GNU libstdc++"
7492      HAVE_LIBSTDCPP=TRUE
7493     ],
7494     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7495 #include <utility>
7496 #ifndef _LIBCPP_VERSION
7497 foo bar
7498 #endif
7499 ]])],
7500     [CPP_LIBRARY=LIBCPP
7501      cpp_library_name="LLVM libc++"
7502      AC_DEFINE([HAVE_LIBCPP])
7503      HAVE_LIBCPP=TRUE
7504     ],
7505     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7506 #include <utility>
7507 #ifndef _MSC_VER
7508 foo bar
7509 #endif
7510 ]])],
7511     [CPP_LIBRARY=MSVCRT
7512      cpp_library_name="Microsoft"
7513     ],
7514     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7515 AC_MSG_RESULT([$cpp_library_name])
7516 AC_LANG_POP([C++])
7517 AC_SUBST([HAVE_LIBSTDCPP])
7518 AC_SUBST([HAVE_LIBCPP])
7520 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7521 then
7522     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7523     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7524     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7525     # although there will be backwards compatibility).
7526     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7527     # and there would be undefined references to debug functions.
7528     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7529     # So check if debug mode can be used and disable or downgrade it to assertions
7530     # if needed.
7531     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7532     AC_LANG_PUSH([C++])
7533     libcpp_debug_links=
7534     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7535 #define _LIBCPP_DEBUG 0 // only assertions
7536 #include <vector>
7537 int main()
7539     std::vector<int> v;
7540     v.push_back( 1 );
7541     return v[ 3 ];
7543 ]])], [libcpp_debug_links=1])
7544     if test -n "$libcpp_debug_links"; then
7545         # we can use at least assertions, check if debug mode works
7546         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7547 #define _LIBCPP_DEBUG 1 // debug mode
7548 #include <string>
7549 #include <vector>
7550 int foo(const std::vector<int>& v) { return *v.begin(); }
7551 int main()
7553     std::vector<int> v;
7554     v.push_back( 1 );
7555     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7556     return (foo(v) + s.size()) != 0 ? 0 : 1;
7558 ]])],
7559         [AC_MSG_RESULT(yes)
7560          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7561         ],
7562         [AC_MSG_RESULT(no, using only assertions)
7563          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7564         ]
7565         )
7566     else
7567         AC_MSG_RESULT(no)
7568     fi
7569     AC_LANG_POP([C++])
7571 AC_SUBST([LIBCPP_DEBUG])
7573 dnl ===================================================================
7574 dnl Check for gperf
7575 dnl ===================================================================
7576 AC_PATH_PROG(GPERF, gperf)
7577 if test -z "$GPERF"; then
7578     AC_MSG_ERROR([gperf not found but needed. Install it.])
7580 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7581     GPERF=`cygpath -m $GPERF`
7583 AC_MSG_CHECKING([whether gperf is new enough])
7584 my_gperf_ver1=$($GPERF --version | head -n 1)
7585 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7586 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7587 if test "$my_gperf_ver3" -ge 301; then
7588     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7589 else
7590     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7592 AC_SUBST(GPERF)
7594 dnl ===================================================================
7595 dnl Check for system libcmis
7596 dnl ===================================================================
7597 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7599 dnl ===================================================================
7600 dnl C++11
7601 dnl ===================================================================
7603 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7604 CXXFLAGS_CXX11=
7605 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7606     if test "$with_latest_c__" = yes; then
7607         CXXFLAGS_CXX11=-std:c++latest
7608     else
7609         CXXFLAGS_CXX11=-std:c++17
7610     fi
7611     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7612 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7613     my_flags='-std=c++17 -std=c++1z'
7614     if test "$with_latest_c__" = yes; then
7615         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7616     fi
7617     for flag in $my_flags; do
7618         if test "$COM" = MSC; then
7619             flag="-Xclang $flag"
7620         fi
7621         save_CXXFLAGS=$CXXFLAGS
7622         CXXFLAGS="$CXXFLAGS $flag -Werror"
7623         if test "$SYSTEM_LIBCMIS" = TRUE; then
7624             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7625         fi
7626         AC_LANG_PUSH([C++])
7627         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7628             #include <algorithm>
7629             #include <functional>
7630             #include <vector>
7632             #if defined SYSTEM_LIBCMIS
7633             // See ucb/source/ucp/cmis/auth_provider.hxx:
7634             #if !defined __clang__
7635             #pragma GCC diagnostic push
7636             #pragma GCC diagnostic ignored "-Wdeprecated"
7637             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7638             #endif
7639             #include <libcmis/libcmis.hxx>
7640             #if !defined __clang__
7641             #pragma GCC diagnostic pop
7642             #endif
7643             #endif
7645             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7646                 std::sort(v.begin(), v.end(), fn);
7647             }
7648             ]])],[CXXFLAGS_CXX11=$flag])
7649         AC_LANG_POP([C++])
7650         CXXFLAGS=$save_CXXFLAGS
7651         if test -n "$CXXFLAGS_CXX11"; then
7652             break
7653         fi
7654     done
7656 if test -n "$CXXFLAGS_CXX11"; then
7657     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7658 else
7659     AC_MSG_ERROR(no)
7661 AC_SUBST(CXXFLAGS_CXX11)
7663 if test "$GCC" = "yes"; then
7664     save_CXXFLAGS=$CXXFLAGS
7665     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7666     CHECK_L_ATOMIC
7667     CXXFLAGS=$save_CXXFLAGS
7668     AC_SUBST(ATOMIC_LIB)
7671 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7672 save_CXXFLAGS=$CXXFLAGS
7673 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7674 AC_LANG_PUSH([C++])
7676 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7677 #include <stddef.h>
7679 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7681 namespace
7683         struct b
7684         {
7685                 int i;
7686                 int j;
7687         };
7689 ]], [[
7690 struct a
7692         int i;
7693         int j;
7695 a thinga[]={{0,0}, {1,1}};
7696 b thingb[]={{0,0}, {1,1}};
7697 size_t i = sizeof(sal_n_array_size(thinga));
7698 size_t j = sizeof(sal_n_array_size(thingb));
7699 return !(i != 0 && j != 0);
7701     ], [ AC_MSG_RESULT(yes) ],
7702     [ AC_MSG_ERROR(no)])
7703 AC_LANG_POP([C++])
7704 CXXFLAGS=$save_CXXFLAGS
7706 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7707 if test "$GCC" = yes; then
7708     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7709     AC_LANG_PUSH([C++])
7710     save_CXXFLAGS=$CXXFLAGS
7711     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7712     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7713     CXXFLAGS=$save_CXXFLAGS
7714     AC_LANG_POP([C++])
7715     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7716         AC_MSG_RESULT([yes])
7717     else
7718         AC_MSG_RESULT([no])
7719     fi
7721 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7723 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7724 AC_LANG_PUSH([C++])
7725 save_CXXFLAGS=$CXXFLAGS
7726 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7727 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7728         #include <algorithm>
7729         #include <initializer_list>
7730         #include <vector>
7731         template<typename T> class S {
7732         private:
7733             std::vector<T> v_;
7734         public:
7735             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7736         };
7737         constinit S<int> s{3, 2, 1};
7738     ])], [
7739         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7740         AC_MSG_RESULT([yes])
7741     ], [AC_MSG_RESULT([no])])
7742 CXXFLAGS=$save_CXXFLAGS
7743 AC_LANG_POP([C++])
7745 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7746 AC_LANG_PUSH([C++])
7747 save_CXXFLAGS=$CXXFLAGS
7748 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7749 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7750         #include <span>
7751         #include <type_traits>
7752         // Don't check size_type directly, as it was called index_type before P1872R0:
7753         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7754     ])], [
7755         AC_DEFINE([HAVE_CPP_SPAN],[1])
7756         AC_MSG_RESULT([yes])
7757     ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7759 AC_LANG_POP([C++])
7761 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7762 AC_LANG_PUSH([C++])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7766         struct S1 { S1(S1 &&); };
7767         struct S2: S1 {};
7768         S1 f(S2 s) { return s; }
7769     ])], [
7770         AC_DEFINE([HAVE_P1155R3],[1])
7771         AC_MSG_RESULT([yes])
7772     ], [AC_MSG_RESULT([no])])
7773 CXXFLAGS=$save_CXXFLAGS
7774 AC_LANG_POP([C++])
7776 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7777 HAVE_CXX20_ATOMIC_REF=
7778 AC_LANG_PUSH([C++])
7779 save_CXXFLAGS=$CXXFLAGS
7780 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7781 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7782         #include <atomic>
7783         int x;
7784         std::atomic_ref<int> y(x);
7785     ])], [
7786         HAVE_CXX20_ATOMIC_REF=TRUE
7787         AC_MSG_RESULT([yes])
7788     ], [AC_MSG_RESULT([no])])
7789 CXXFLAGS=$save_CXXFLAGS
7790 AC_LANG_POP([C++])
7791 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7793 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7794 dnl which is included in -Wextra anyway):
7795 HAVE_WDEPRECATED_COPY_DTOR=
7796 if test "$GCC" = yes; then
7797     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7798     AC_LANG_PUSH([C++])
7799     save_CXXFLAGS=$CXXFLAGS
7800     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7801     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7802             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7803             AC_MSG_RESULT([yes])
7804         ], [AC_MSG_RESULT([no])])
7805     CXXFLAGS=$save_CXXFLAGS
7806     AC_LANG_POP([C++])
7808 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7810 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7811 dnl uninitialized warning for code like
7813 dnl   OString f();
7814 dnl   boost::optional<OString> * g(bool b) {
7815 dnl       boost::optional<OString> o;
7816 dnl       if (b) o = f();
7817 dnl       return new boost::optional<OString>(o);
7818 dnl   }
7820 dnl (as is e.g. present, in a slightly more elaborate form, in
7821 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7822 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7823 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7824 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7825     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7826     AC_LANG_PUSH([C++])
7827     save_CXXFLAGS=$CXXFLAGS
7828     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7829     if test "$ENABLE_OPTIMIZED" = TRUE; then
7830         CXXFLAGS="$CXXFLAGS -O2"
7831     else
7832         CXXFLAGS="$CXXFLAGS -O0"
7833     fi
7834     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7835             #include <new>
7836             void f1(int);
7837             struct S1 {
7838                 ~S1() { f1(n); }
7839                 int n = 0;
7840             };
7841             struct S2 {
7842                 S2() {}
7843                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7844                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7845                 void set(S1 s) {
7846                     new (stg) S1(s);
7847                     init = true;
7848                 }
7849                 bool init = false;
7850                 char stg[sizeof (S1)];
7851             } ;
7852             S1 f2();
7853             S2 * f3(bool b) {
7854                 S2 o;
7855                 if (b) o.set(f2());
7856                 return new S2(o);
7857             }
7858         ]])], [AC_MSG_RESULT([no])], [
7859             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7860             AC_MSG_RESULT([yes])
7861         ])
7862     CXXFLAGS=$save_CXXFLAGS
7863     AC_LANG_POP([C++])
7865 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7867 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7868 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7869 dnl hits us e.g. with GCC 10 and --enable-optimized at
7871 dnl   In file included from include/rtl/string.hxx:49,
7872 dnl                    from include/rtl/ustring.hxx:43,
7873 dnl                    from include/osl/file.hxx:35,
7874 dnl                    from include/codemaker/global.hxx:28,
7875 dnl                    from include/codemaker/options.hxx:23,
7876 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7877 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7878 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,
7879 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,
7880 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,
7881 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7882 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7883 dnl      78 |         memcpy( buffer, data, length );
7884 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7885 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7886 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7887     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7888     AC_LANG_PUSH([C++])
7889     save_CXXFLAGS=$CXXFLAGS
7890     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7891     if test "$ENABLE_OPTIMIZED" = TRUE; then
7892         CXXFLAGS="$CXXFLAGS -O2"
7893     else
7894         CXXFLAGS="$CXXFLAGS -O0"
7895     fi
7896     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7897     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7898             void fill(char const * begin, char const * end, char c);
7899             struct q {
7900                 char ids[4];
7901                 char username[6];
7902             };
7903             void test(q & c) {
7904                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7905                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7906             }
7907         ]])], [AC_MSG_RESULT([no])], [
7908             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7909             AC_MSG_RESULT([yes])
7910         ])
7911     CXXFLAGS=$save_CXXFLAGS
7912     AC_LANG_POP([C++])
7914 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7916 HAVE_DLLEXPORTINLINES=
7917 if test "$_os" = "WINNT"; then
7918     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7919     AC_LANG_PUSH([C++])
7920     save_CXXFLAGS=$CXXFLAGS
7921     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7922     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7923             HAVE_DLLEXPORTINLINES=TRUE
7924             AC_MSG_RESULT([yes])
7925         ], [AC_MSG_RESULT([no])])
7926     CXXFLAGS=$save_CXXFLAGS
7927     AC_LANG_POP([C++])
7929 AC_SUBST([HAVE_DLLEXPORTINLINES])
7931 dnl ===================================================================
7932 dnl CPU Intrinsics support - SSE, AVX
7933 dnl ===================================================================
7935 CXXFLAGS_INTRINSICS_SSE2=
7936 CXXFLAGS_INTRINSICS_SSSE3=
7937 CXXFLAGS_INTRINSICS_SSE41=
7938 CXXFLAGS_INTRINSICS_SSE42=
7939 CXXFLAGS_INTRINSICS_AVX=
7940 CXXFLAGS_INTRINSICS_AVX2=
7941 CXXFLAGS_INTRINSICS_AVX512=
7942 CXXFLAGS_INTRINSICS_AVX512F=
7943 CXXFLAGS_INTRINSICS_F16C=
7944 CXXFLAGS_INTRINSICS_FMA=
7946 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7947     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7948     flag_sse2=-msse2
7949     flag_ssse3=-mssse3
7950     flag_sse41=-msse4.1
7951     flag_sse42=-msse4.2
7952     flag_avx=-mavx
7953     flag_avx2=-mavx2
7954     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7955     flag_avx512f=-mavx512f
7956     flag_f16c=-mf16c
7957     flag_fma=-mfma
7958 else
7959     # With MSVC using -arch is in fact not necessary for being able
7960     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7961     # even if compiled with -arch:AVX, the -arch option really only affects
7962     # instructions generated for C/C++ code.
7963     # So use the matching same (or lower) -arch options, but only in order
7964     # to generate the best matching instructions for the C++ code surrounding
7965     # the intrinsics.
7966     # SSE2 is the default for x86/x64, so no need to specify the option.
7967     flag_sse2=
7968     # No specific options for these, use the next lower.
7969     flag_ssse3="$flag_sse2"
7970     flag_sse41="$flag_sse2"
7971     flag_sse42="$flag_sse2"
7972     flag_avx=-arch:AVX
7973     flag_avx2=-arch:AVX2
7974     flag_avx512=-arch:AVX512
7975     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7976     flag_avx512f=-arch:AVX2
7977     # No MSVC options for these.
7978     flag_f16c="$flag_sse2"
7979     flag_fma="$flag_sse2"
7982 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7983 AC_LANG_PUSH([C++])
7984 save_CXXFLAGS=$CXXFLAGS
7985 CXXFLAGS="$CXXFLAGS $flag_sse2"
7986 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7987     #include <emmintrin.h>
7988     int main () {
7989         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7990         c = _mm_xor_si128 (a, b);
7991         return 0;
7992     }
7993     ])],
7994     [can_compile_sse2=yes],
7995     [can_compile_sse2=no])
7996 AC_LANG_POP([C++])
7997 CXXFLAGS=$save_CXXFLAGS
7998 AC_MSG_RESULT([${can_compile_sse2}])
7999 if test "${can_compile_sse2}" = "yes" ; then
8000     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8003 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8004 AC_LANG_PUSH([C++])
8005 save_CXXFLAGS=$CXXFLAGS
8006 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8007 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8008     #include <tmmintrin.h>
8009     int main () {
8010         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8011         c = _mm_maddubs_epi16 (a, b);
8012         return 0;
8013     }
8014     ])],
8015     [can_compile_ssse3=yes],
8016     [can_compile_ssse3=no])
8017 AC_LANG_POP([C++])
8018 CXXFLAGS=$save_CXXFLAGS
8019 AC_MSG_RESULT([${can_compile_ssse3}])
8020 if test "${can_compile_ssse3}" = "yes" ; then
8021     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8024 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8025 AC_LANG_PUSH([C++])
8026 save_CXXFLAGS=$CXXFLAGS
8027 CXXFLAGS="$CXXFLAGS $flag_sse41"
8028 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8029     #include <smmintrin.h>
8030     int main () {
8031         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8032         c = _mm_cmpeq_epi64 (a, b);
8033         return 0;
8034     }
8035     ])],
8036     [can_compile_sse41=yes],
8037     [can_compile_sse41=no])
8038 AC_LANG_POP([C++])
8039 CXXFLAGS=$save_CXXFLAGS
8040 AC_MSG_RESULT([${can_compile_sse41}])
8041 if test "${can_compile_sse41}" = "yes" ; then
8042     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8045 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8046 AC_LANG_PUSH([C++])
8047 save_CXXFLAGS=$CXXFLAGS
8048 CXXFLAGS="$CXXFLAGS $flag_sse42"
8049 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8050     #include <nmmintrin.h>
8051     int main () {
8052         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8053         c = _mm_cmpgt_epi64 (a, b);
8054         return 0;
8055     }
8056     ])],
8057     [can_compile_sse42=yes],
8058     [can_compile_sse42=no])
8059 AC_LANG_POP([C++])
8060 CXXFLAGS=$save_CXXFLAGS
8061 AC_MSG_RESULT([${can_compile_sse42}])
8062 if test "${can_compile_sse42}" = "yes" ; then
8063     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8066 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8067 AC_LANG_PUSH([C++])
8068 save_CXXFLAGS=$CXXFLAGS
8069 CXXFLAGS="$CXXFLAGS $flag_avx"
8070 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8071     #include <immintrin.h>
8072     int main () {
8073         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8074         c = _mm256_xor_ps(a, b);
8075         return 0;
8076     }
8077     ])],
8078     [can_compile_avx=yes],
8079     [can_compile_avx=no])
8080 AC_LANG_POP([C++])
8081 CXXFLAGS=$save_CXXFLAGS
8082 AC_MSG_RESULT([${can_compile_avx}])
8083 if test "${can_compile_avx}" = "yes" ; then
8084     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8087 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8088 AC_LANG_PUSH([C++])
8089 save_CXXFLAGS=$CXXFLAGS
8090 CXXFLAGS="$CXXFLAGS $flag_avx2"
8091 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8092     #include <immintrin.h>
8093     int main () {
8094         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8095         c = _mm256_maddubs_epi16(a, b);
8096         return 0;
8097     }
8098     ])],
8099     [can_compile_avx2=yes],
8100     [can_compile_avx2=no])
8101 AC_LANG_POP([C++])
8102 CXXFLAGS=$save_CXXFLAGS
8103 AC_MSG_RESULT([${can_compile_avx2}])
8104 if test "${can_compile_avx2}" = "yes" ; then
8105     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8108 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8109 AC_LANG_PUSH([C++])
8110 save_CXXFLAGS=$CXXFLAGS
8111 CXXFLAGS="$CXXFLAGS $flag_avx512"
8112 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8113     #include <immintrin.h>
8114     int main () {
8115         __m512i a = _mm512_loadu_si512(0);
8116         __m512d v1 = _mm512_load_pd(0);
8117         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8118         __m512d v2 = _mm512_abs_pd(v1);
8119         return 0;
8120     }
8121     ])],
8122     [can_compile_avx512=yes],
8123     [can_compile_avx512=no])
8124 AC_LANG_POP([C++])
8125 CXXFLAGS=$save_CXXFLAGS
8126 AC_MSG_RESULT([${can_compile_avx512}])
8127 if test "${can_compile_avx512}" = "yes" ; then
8128     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8129     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8132 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8133 AC_LANG_PUSH([C++])
8134 save_CXXFLAGS=$CXXFLAGS
8135 CXXFLAGS="$CXXFLAGS $flag_f16c"
8136 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8137     #include <immintrin.h>
8138     int main () {
8139         __m128i a = _mm_set1_epi32 (0);
8140         __m128 c;
8141         c = _mm_cvtph_ps(a);
8142         return 0;
8143     }
8144     ])],
8145     [can_compile_f16c=yes],
8146     [can_compile_f16c=no])
8147 AC_LANG_POP([C++])
8148 CXXFLAGS=$save_CXXFLAGS
8149 AC_MSG_RESULT([${can_compile_f16c}])
8150 if test "${can_compile_f16c}" = "yes" ; then
8151     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8154 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8155 AC_LANG_PUSH([C++])
8156 save_CXXFLAGS=$CXXFLAGS
8157 CXXFLAGS="$CXXFLAGS $flag_fma"
8158 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8159     #include <immintrin.h>
8160     int main () {
8161         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8162         d = _mm256_fmadd_ps(a, b, c);
8163         return 0;
8164     }
8165     ])],
8166     [can_compile_fma=yes],
8167     [can_compile_fma=no])
8168 AC_LANG_POP([C++])
8169 CXXFLAGS=$save_CXXFLAGS
8170 AC_MSG_RESULT([${can_compile_fma}])
8171 if test "${can_compile_fma}" = "yes" ; then
8172     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8175 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8176 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8177 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8178 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8179 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8180 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8181 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8182 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8183 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8184 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8186 dnl ===================================================================
8187 dnl system stl sanity tests
8188 dnl ===================================================================
8189 if test "$_os" != "WINNT"; then
8191     AC_LANG_PUSH([C++])
8193     save_CPPFLAGS="$CPPFLAGS"
8194     if test -n "$MACOSX_SDK_PATH"; then
8195         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8196     fi
8198     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8199     # only.
8200     if test "$CPP_LIBRARY" = GLIBCXX; then
8201         dnl gcc#19664, gcc#22482, rhbz#162935
8202         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8203         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8204         AC_MSG_RESULT([$stlvisok])
8205         if test "$stlvisok" = "no"; then
8206             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8207         fi
8208     fi
8210     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8211     # when we don't make any dynamic libraries?
8212     if test "$DISABLE_DYNLOADING" = ""; then
8213         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8214         cat > conftestlib1.cc <<_ACEOF
8215 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8216 struct S2: S1<int> { virtual ~S2(); };
8217 S2::~S2() {}
8218 _ACEOF
8219         cat > conftestlib2.cc <<_ACEOF
8220 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8221 struct S2: S1<int> { virtual ~S2(); };
8222 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8223 _ACEOF
8224         gccvisinlineshiddenok=yes
8225         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8226             gccvisinlineshiddenok=no
8227         else
8228             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8229             dnl known to not work with -z defs (unsetting which makes the test
8230             dnl moot, though):
8231             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8232             if test "$COM_IS_CLANG" = TRUE; then
8233                 for i in $CXX $CXXFLAGS; do
8234                     case $i in
8235                     -fsanitize=*)
8236                         my_linkflagsnoundefs=
8237                         break
8238                         ;;
8239                     esac
8240                 done
8241             fi
8242             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8243                 gccvisinlineshiddenok=no
8244             fi
8245         fi
8247         rm -fr libconftest*
8248         AC_MSG_RESULT([$gccvisinlineshiddenok])
8249         if test "$gccvisinlineshiddenok" = "no"; then
8250             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8251         fi
8252     fi
8254    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8255     cat >visibility.cxx <<_ACEOF
8256 #pragma GCC visibility push(hidden)
8257 struct __attribute__ ((visibility ("default"))) TestStruct {
8258   static void Init();
8260 __attribute__ ((visibility ("default"))) void TestFunc() {
8261   TestStruct::Init();
8263 _ACEOF
8264     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8265         gccvisbroken=yes
8266     else
8267         case "$host_cpu" in
8268         i?86|x86_64)
8269             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8270                 gccvisbroken=no
8271             else
8272                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8273                     gccvisbroken=no
8274                 else
8275                     gccvisbroken=yes
8276                 fi
8277             fi
8278             ;;
8279         *)
8280             gccvisbroken=no
8281             ;;
8282         esac
8283     fi
8284     rm -f visibility.s visibility.cxx
8286     AC_MSG_RESULT([$gccvisbroken])
8287     if test "$gccvisbroken" = "yes"; then
8288         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8289     fi
8291     CPPFLAGS="$save_CPPFLAGS"
8293     AC_MSG_CHECKING([if CET endbranch is recognized])
8294 cat > endbr.s <<_ACEOF
8295 endbr32
8296 _ACEOF
8297     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8298     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8299         AC_MSG_RESULT([yes])
8300         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8301     else
8302         AC_MSG_RESULT([no])
8303     fi
8304     rm -f endbr.s endbr.o
8305     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8307     AC_LANG_POP([C++])
8310 dnl ===================================================================
8311 dnl  Clang++ tests
8312 dnl ===================================================================
8314 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8315 if test "$GCC" = "yes"; then
8316     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8317     AC_LANG_PUSH([C++])
8318     save_CXXFLAGS=$CXXFLAGS
8319     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8320     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8321     CXXFLAGS=$save_CXXFLAGS
8322     AC_LANG_POP([C++])
8323     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8324         AC_MSG_RESULT([yes])
8325     else
8326         AC_MSG_RESULT([no])
8327     fi
8329 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8331 dnl ===================================================================
8332 dnl Compiler plugins
8333 dnl ===================================================================
8335 COMPILER_PLUGINS=
8336 # currently only Clang
8338 if test "$COM_IS_CLANG" != "TRUE"; then
8339     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8340         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8341         enable_compiler_plugins=no
8342     fi
8345 COMPILER_PLUGINS_COM_IS_CLANG=
8346 if test "$COM_IS_CLANG" = "TRUE"; then
8347     if test -n "$enable_compiler_plugins"; then
8348         compiler_plugins="$enable_compiler_plugins"
8349     elif test -n "$ENABLE_DBGUTIL"; then
8350         compiler_plugins=test
8351     else
8352         compiler_plugins=no
8353     fi
8354     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8355         if test "$CLANGVER" -lt 120001; then
8356             if test "$compiler_plugins" = yes; then
8357                 AC_MSG_ERROR(
8358                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8359             else
8360                 compiler_plugins=no
8361             fi
8362         fi
8363     fi
8364     if test "$compiler_plugins" != "no"; then
8365         dnl The prefix where Clang resides, override to where Clang resides if
8366         dnl using a source build:
8367         if test -z "$CLANGDIR"; then
8368             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8369         fi
8370         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8371         if test -z "$COMPILER_PLUGINS_CXX"; then
8372             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8373         fi
8374         clangbindir=$CLANGDIR/bin
8375         if test "$build_os" = "cygwin"; then
8376             clangbindir=$(cygpath -u "$clangbindir")
8377         fi
8378         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8379         if test -n "$LLVM_CONFIG"; then
8380             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8381             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8382             if test -z "$CLANGLIBDIR"; then
8383                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8384             fi
8385             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8386             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8387             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8388             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8389                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8390             fi
8391             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8392             clangobjdir=$($LLVM_CONFIG --obj-root)
8393             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8394                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8395             fi
8396         fi
8397         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8398         AC_LANG_PUSH([C++])
8399         save_CXX=$CXX
8400         save_CXXCPP=$CXXCPP
8401         save_CPPFLAGS=$CPPFLAGS
8402         save_CXXFLAGS=$CXXFLAGS
8403         save_LDFLAGS=$LDFLAGS
8404         save_LIBS=$LIBS
8405         CXX=$COMPILER_PLUGINS_CXX
8406         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8407         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8408         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8409         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8410             [COMPILER_PLUGINS=TRUE],
8411             [
8412             if test "$compiler_plugins" = "yes"; then
8413                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8414             else
8415                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8416                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8417             fi
8418             ])
8419         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8420         dnl comment in compilerplugins/Makefile-clang.mk:
8421         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8422             LDFLAGS=""
8423             AC_MSG_CHECKING([for clang libraries to use])
8424             if test -z "$CLANGTOOLLIBS"; then
8425                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8426                 AC_LINK_IFELSE([
8427                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8428                         [[ clang::FullSourceLoc().dump(); ]])
8429                 ],[CLANGTOOLLIBS="$LIBS"],[])
8430             fi
8431             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8432             dnl list of individual -lclang* (but note that that list can become outdated over time,
8433             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8434             dnl needs to include -lclangSupport now"):
8435             if test -z "$CLANGTOOLLIBS"; then
8436                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8437  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8438                 AC_LINK_IFELSE([
8439                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8440                         [[ clang::FullSourceLoc().dump(); ]])
8441                 ],[CLANGTOOLLIBS="$LIBS"],[])
8442             fi
8443             AC_MSG_RESULT([$CLANGTOOLLIBS])
8444             if test -z "$CLANGTOOLLIBS"; then
8445                 if test "$compiler_plugins" = "yes"; then
8446                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8447                 else
8448                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8449                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8450                 fi
8451                 COMPILER_PLUGINS=
8452             fi
8453             if test -n "$COMPILER_PLUGINS"; then
8454                 if test -z "$CLANGSYSINCLUDE"; then
8455                     if test -n "$LLVM_CONFIG"; then
8456                         # Path to the clang system headers (no idea if there's a better way to get it).
8457                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8458                     fi
8459                 fi
8460             fi
8461         fi
8462         CXX=$save_CXX
8463         CXXCPP=$save_CXXCPP
8464         CPPFLAGS=$save_CPPFLAGS
8465         CXXFLAGS=$save_CXXFLAGS
8466         LDFLAGS=$save_LDFLAGS
8467         LIBS="$save_LIBS"
8468         AC_LANG_POP([C++])
8470         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8471         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8472             #ifndef __clang__
8473             you lose
8474             #endif
8475             int foo=42;
8476             ]])],
8477             [AC_MSG_RESULT([yes])
8478              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8479             [AC_MSG_RESULT([no])])
8480         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8481     fi
8482 else
8483     if test "$enable_compiler_plugins" = "yes"; then
8484         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8485     fi
8487 COMPILER_PLUGINS_ANALYZER_PCH=
8488 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8489     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8491 AC_SUBST(COMPILER_PLUGINS)
8492 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8493 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8494 AC_SUBST(COMPILER_PLUGINS_CXX)
8495 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8496 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8497 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8498 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8499 AC_SUBST(CLANGDIR)
8500 AC_SUBST(CLANGLIBDIR)
8501 AC_SUBST(CLANGTOOLLIBS)
8502 AC_SUBST(CLANGSYSINCLUDE)
8504 # Plugin to help linker.
8505 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8506 # This makes --enable-lto build with clang work.
8507 AC_SUBST(LD_PLUGIN)
8509 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8510 AC_SUBST(HAVE_POSIX_FALLOCATE)
8512 JITC_PROCESSOR_TYPE=""
8513 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8514     # IBMs JDK needs this...
8515     JITC_PROCESSOR_TYPE=6
8516     export JITC_PROCESSOR_TYPE
8518 AC_SUBST([JITC_PROCESSOR_TYPE])
8520 # Misc Windows Stuff
8521 AC_ARG_WITH(ucrt-dir,
8522     AS_HELP_STRING([--with-ucrt-dir],
8523         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8524         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8525         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8526             Windows6.1-KB2999226-x64.msu
8527             Windows6.1-KB2999226-x86.msu
8528             Windows8.1-KB2999226-x64.msu
8529             Windows8.1-KB2999226-x86.msu
8530             Windows8-RT-KB2999226-x64.msu
8531             Windows8-RT-KB2999226-x86.msu
8532         A zip archive including those files is available from Microsoft site:
8533         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8536 UCRT_REDISTDIR="$with_ucrt_dir"
8537 if test $_os = "WINNT"; then
8538     find_msvc_x64_dlls
8539     for i in $PKGFORMAT; do
8540         if test "$i" = msi; then
8541             find_msms
8542             break
8543         fi
8544     done
8545     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8546     MSVC_DLLS="$msvcdlls"
8547     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8548     # MSVC 15.3 changed it to VC141
8549     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8550         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8551     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8552         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8553     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8554         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8555     else
8556         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8557     fi
8559     if test "$UCRT_REDISTDIR" = "no"; then
8560         dnl explicitly disabled
8561         UCRT_REDISTDIR=""
8562     else
8563         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8564                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8565                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8566                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8567                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8568                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8569             UCRT_REDISTDIR=""
8570             if test -n "$PKGFORMAT"; then
8571                for i in $PKGFORMAT; do
8572                    case "$i" in
8573                    msi)
8574                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8575                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8576                        ;;
8577                    esac
8578                done
8579             fi
8580         fi
8581     fi
8584 AC_SUBST(UCRT_REDISTDIR)
8585 AC_SUBST(MSVC_DLL_PATH)
8586 AC_SUBST(MSVC_DLLS)
8587 AC_SUBST(MSM_PATH)
8590 dnl ===================================================================
8591 dnl Checks for Java
8592 dnl ===================================================================
8593 if test "$ENABLE_JAVA" != ""; then
8595     # Windows-specific tests
8596     if test "$build_os" = "cygwin"; then
8597         if test -z "$with_jdk_home"; then
8598             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8599             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8600             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8601             if test -n "$regvalue"; then
8602                 ver=$regvalue
8603                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8604                 with_jdk_home=$regvalue
8605             fi
8606             howfound="found automatically"
8607         else
8608             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8609             howfound="you passed"
8610         fi
8612         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8613             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8614         fi
8615     fi
8617     # 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.
8618     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8619     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8620         with_jdk_home=`/usr/libexec/java_home`
8621     fi
8623     JAVA_HOME=; export JAVA_HOME
8624     if test -z "$with_jdk_home"; then
8625         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8626     else
8627         _java_path="$with_jdk_home/bin/$with_java"
8628         dnl Check if there is a Java interpreter at all.
8629         if test -x "$_java_path"; then
8630             JAVAINTERPRETER=$_java_path
8631         else
8632             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8633         fi
8634     fi
8636     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8637     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8638     dnl loaded by java to run JunitTests:
8639     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8640         shortjdkhome=`cygpath -d "$with_jdk_home"`
8641         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
8642             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8643             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8644         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
8645             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8646             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8647         fi
8649         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8650             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8651         fi
8652         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8653     elif test "$cross_compiling" != "yes"; then
8654         case $CPUNAME in
8655             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64)
8656                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8657                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8658                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8659                 fi
8660                 ;;
8661             *) # assumption: everything else 32-bit
8662                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8663                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8664                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8665                 fi
8666                 ;;
8667         esac
8668     fi
8671 dnl ===================================================================
8672 dnl Checks for JDK.
8673 dnl ===================================================================
8675 # Whether all the complexity here actually is needed any more or not, no idea.
8677 JDK_SECURITYMANAGER_DISALLOWED=
8678 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8679     _gij_longver=0
8680     AC_MSG_CHECKING([the installed JDK])
8681     if test -n "$JAVAINTERPRETER"; then
8682         dnl java -version sends output to stderr!
8683         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8684             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8685         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8686             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8687         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8688             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8689         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8690             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8691         else
8692             JDK=sun
8694             dnl Sun JDK specific tests
8695             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8696             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8698             if test "$_jdk_ver" -lt 10900; then
8699                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8700             fi
8701             if test "$_jdk_ver" -gt 10900; then
8702                 JAVA_CLASSPATH_NOT_SET=TRUE
8703             fi
8704             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8705             dnl completely removed in some Java version > 18 (see
8706             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8707             if test "$_jdk_ver" -ge 180000; then
8708                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8709             fi
8711             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8712             if test "$_os" = "WINNT"; then
8713                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8714             fi
8715             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8717             # set to limit VM usage for JunitTests
8718             JAVAIFLAGS=-Xmx64M
8719             # set to limit VM usage for javac
8720             JAVACFLAGS=-J-Xmx128M
8721         fi
8722     else
8723         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8724     fi
8725 else
8726     if test -z "$ENABLE_JAVA"; then
8727         dnl Java disabled
8728         JAVA_HOME=
8729         export JAVA_HOME
8730     elif test "$cross_compiling" = "yes"; then
8731         # Just assume compatibility of build and host JDK
8732         JDK=$JDK_FOR_BUILD
8733         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8734     fi
8737 dnl ===================================================================
8738 dnl Checks for javac
8739 dnl ===================================================================
8740 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8741     javacompiler="javac"
8742     : ${JAVA_SOURCE_VER=8}
8743     : ${JAVA_TARGET_VER=8}
8744     if test -z "$with_jdk_home"; then
8745         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8746     else
8747         _javac_path="$with_jdk_home/bin/$javacompiler"
8748         dnl Check if there is a Java compiler at all.
8749         if test -x "$_javac_path"; then
8750             JAVACOMPILER=$_javac_path
8751         fi
8752     fi
8753     if test -z "$JAVACOMPILER"; then
8754         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8755     fi
8756     if test "$build_os" = "cygwin"; then
8757         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8758             JAVACOMPILER="${JAVACOMPILER}.exe"
8759         fi
8760         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8761     fi
8764 dnl ===================================================================
8765 dnl Checks for javadoc
8766 dnl ===================================================================
8767 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8768     if test -z "$with_jdk_home"; then
8769         AC_PATH_PROG(JAVADOC, javadoc)
8770     else
8771         _javadoc_path="$with_jdk_home/bin/javadoc"
8772         dnl Check if there is a javadoc at all.
8773         if test -x "$_javadoc_path"; then
8774             JAVADOC=$_javadoc_path
8775         else
8776             AC_PATH_PROG(JAVADOC, javadoc)
8777         fi
8778     fi
8779     if test -z "$JAVADOC"; then
8780         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8781     fi
8782     if test "$build_os" = "cygwin"; then
8783         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8784             JAVADOC="${JAVADOC}.exe"
8785         fi
8786         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8787     fi
8789     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8790     JAVADOCISGJDOC="yes"
8791     fi
8793 AC_SUBST(JAVADOC)
8794 AC_SUBST(JAVADOCISGJDOC)
8796 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8797     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8798     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8799         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8800            # try to recover first by looking whether we have an alternative
8801            # system as in Debian or newer SuSEs where following /usr/bin/javac
8802            # over /etc/alternatives/javac leads to the right bindir where we
8803            # just need to strip a bit away to get a valid JAVA_HOME
8804            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8805         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8806             # maybe only one level of symlink (e.g. on Mac)
8807             JAVA_HOME=$(readlink $JAVACOMPILER)
8808             if test "$(dirname $JAVA_HOME)" = "."; then
8809                 # we've got no path to trim back
8810                 JAVA_HOME=""
8811             fi
8812         else
8813             # else warn
8814             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8815             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8816             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8817             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8818         fi
8819         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8820         if test "$JAVA_HOME" != "/usr"; then
8821             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8822                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8823                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8824                 dnl Tiger already returns a JDK path...
8825                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8826             else
8827                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8828                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8829                 dnl that checks which version to run
8830                 if test -f "$JAVA_HOME"; then
8831                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8832                 fi
8833             fi
8834         fi
8835     fi
8836     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8838     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8839     if test -z "$JAVA_HOME"; then
8840         if test "x$with_jdk_home" = "x"; then
8841             cat > findhome.java <<_ACEOF
8842 [import java.io.File;
8844 class findhome
8846     public static void main(String args[])
8847     {
8848         String jrelocation = System.getProperty("java.home");
8849         File jre = new File(jrelocation);
8850         System.out.println(jre.getParent());
8851     }
8853 _ACEOF
8854             AC_MSG_CHECKING([if javac works])
8855             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8856             AC_TRY_EVAL(javac_cmd)
8857             if test $? = 0 -a -f ./findhome.class; then
8858                 AC_MSG_RESULT([javac works])
8859             else
8860                 echo "configure: javac test failed" >&5
8861                 cat findhome.java >&5
8862                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8863             fi
8864             AC_MSG_CHECKING([if gij knows its java.home])
8865             JAVA_HOME=`$JAVAINTERPRETER findhome`
8866             if test $? = 0 -a "$JAVA_HOME" != ""; then
8867                 AC_MSG_RESULT([$JAVA_HOME])
8868             else
8869                 echo "configure: java test failed" >&5
8870                 cat findhome.java >&5
8871                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8872             fi
8873             # clean-up after ourselves
8874             rm -f ./findhome.java ./findhome.class
8875         else
8876             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8877         fi
8878     fi
8880     # now check if $JAVA_HOME is really valid
8881     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8882         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8883             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8884             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8885             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8886             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8887             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8888             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8889         fi
8890     fi
8891     PathFormat "$JAVA_HOME"
8892     JAVA_HOME="$formatted_path"
8895 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8896     "$_os" != Darwin
8897 then
8898     AC_MSG_CHECKING([for JAWT lib])
8899     if test "$_os" = WINNT; then
8900         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8901         JAWTLIB=jawt.lib
8902     else
8903         case "$host_cpu" in
8904         arm*)
8905             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8906             JAVA_ARCH=$my_java_arch
8907             ;;
8908         i*86)
8909             my_java_arch=i386
8910             ;;
8911         m68k)
8912             my_java_arch=m68k
8913             ;;
8914         powerpc)
8915             my_java_arch=ppc
8916             ;;
8917         powerpc64)
8918             my_java_arch=ppc64
8919             ;;
8920         powerpc64le)
8921             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8922             JAVA_ARCH=$my_java_arch
8923             ;;
8924         sparc64)
8925             my_java_arch=sparcv9
8926             ;;
8927         x86_64)
8928             my_java_arch=amd64
8929             ;;
8930         *)
8931             my_java_arch=$host_cpu
8932             ;;
8933         esac
8934         # This is where JDK9 puts the library
8935         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8936             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8937         else
8938             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8939         fi
8940         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8941     fi
8942     AC_MSG_RESULT([$JAWTLIB])
8944 AC_SUBST(JAWTLIB)
8946 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8947     case "$host_os" in
8949     aix*)
8950         JAVAINC="-I$JAVA_HOME/include"
8951         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8952         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8953         ;;
8955     cygwin*|wsl*)
8956         JAVAINC="-I$JAVA_HOME/include/win32"
8957         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8958         ;;
8960     darwin*)
8961         if test -d "$JAVA_HOME/include/darwin"; then
8962             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8963         else
8964             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8965         fi
8966         ;;
8968     dragonfly*)
8969         JAVAINC="-I$JAVA_HOME/include"
8970         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8971         ;;
8973     freebsd*)
8974         JAVAINC="-I$JAVA_HOME/include"
8975         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8976         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8977         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8978         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8979         ;;
8981     k*bsd*-gnu*)
8982         JAVAINC="-I$JAVA_HOME/include"
8983         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8984         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8985         ;;
8987     linux-gnu*)
8988         JAVAINC="-I$JAVA_HOME/include"
8989         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8990         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8991         ;;
8993     *netbsd*)
8994         JAVAINC="-I$JAVA_HOME/include"
8995         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8996         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8997        ;;
8999     openbsd*)
9000         JAVAINC="-I$JAVA_HOME/include"
9001         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9002         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9003         ;;
9005     solaris*)
9006         JAVAINC="-I$JAVA_HOME/include"
9007         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9008         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9009         ;;
9010     esac
9012 SOLARINC="$SOLARINC $JAVAINC"
9014 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9015     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9016     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9017     JDK_FOR_BUILD=$JDK
9018     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9021 AC_SUBST(JAVACFLAGS)
9022 AC_SUBST(JAVACOMPILER)
9023 AC_SUBST(JAVAINTERPRETER)
9024 AC_SUBST(JAVAIFLAGS)
9025 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9026 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
9027 AC_SUBST(JAVA_HOME)
9028 AC_SUBST(JAVA_HOME_FOR_BUILD)
9029 AC_SUBST(JDK)
9030 AC_SUBST(JDK_FOR_BUILD)
9031 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9032 AC_SUBST(JAVA_SOURCE_VER)
9033 AC_SUBST(JAVA_TARGET_VER)
9036 dnl ===================================================================
9037 dnl Export file validation
9038 dnl ===================================================================
9039 AC_MSG_CHECKING([whether to enable export file validation])
9040 if test "$with_export_validation" != "no"; then
9041     if test -z "$ENABLE_JAVA"; then
9042         if test "$with_export_validation" = "yes"; then
9043             AC_MSG_ERROR([requested, but Java is disabled])
9044         else
9045             AC_MSG_RESULT([no, as Java is disabled])
9046         fi
9047     elif ! test -d "${SRC_ROOT}/schema"; then
9048         if test "$with_export_validation" = "yes"; then
9049             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9050         else
9051             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9052         fi
9053     else
9054         AC_MSG_RESULT([yes])
9055         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9057         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9058         if test -z "$ODFVALIDATOR"; then
9059             # remember to download the ODF toolkit with validator later
9060             AC_MSG_NOTICE([no odfvalidator found, will download it])
9061             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9062             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9064             # and fetch name of odfvalidator jar name from download.lst
9065             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9066             AC_SUBST(ODFVALIDATOR_JAR)
9068             if test -z "$ODFVALIDATOR_JAR"; then
9069                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9070             fi
9071         fi
9072         if test "$build_os" = "cygwin"; then
9073             # In case of Cygwin it will be executed from Windows,
9074             # so we need to run bash and absolute path to validator
9075             # so instead of "odfvalidator" it will be
9076             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9077             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9078         else
9079             ODFVALIDATOR="sh $ODFVALIDATOR"
9080         fi
9081         AC_SUBST(ODFVALIDATOR)
9084         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9085         if test -z "$OFFICEOTRON"; then
9086             # remember to download the officeotron with validator later
9087             AC_MSG_NOTICE([no officeotron found, will download it])
9088             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9089             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9091             # and fetch name of officeotron jar name from download.lst
9092             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9093             AC_SUBST(OFFICEOTRON_JAR)
9095             if test -z "$OFFICEOTRON_JAR"; then
9096                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9097             fi
9098         else
9099             # check version of existing officeotron
9100             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9101             if test 0"$OFFICEOTRON_VER" -lt 704; then
9102                 AC_MSG_ERROR([officeotron too old])
9103             fi
9104         fi
9105         if test "$build_os" = "cygwin"; then
9106             # In case of Cygwin it will be executed from Windows,
9107             # so we need to run bash and absolute path to validator
9108             # so instead of "odfvalidator" it will be
9109             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9110             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9111         else
9112             OFFICEOTRON="sh $OFFICEOTRON"
9113         fi
9114     fi
9115     AC_SUBST(OFFICEOTRON)
9116 else
9117     AC_MSG_RESULT([no])
9120 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9121 if test "$with_bffvalidator" != "no"; then
9122     AC_DEFINE(HAVE_BFFVALIDATOR)
9124     if test "$with_export_validation" = "no"; then
9125         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9126     fi
9128     if test "$with_bffvalidator" = "yes"; then
9129         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9130     else
9131         BFFVALIDATOR="$with_bffvalidator"
9132     fi
9134     if test "$build_os" = "cygwin"; then
9135         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9136             AC_MSG_RESULT($BFFVALIDATOR)
9137         else
9138             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9139         fi
9140     elif test -n "$BFFVALIDATOR"; then
9141         # We are not in Cygwin but need to run Windows binary with wine
9142         AC_PATH_PROGS(WINE, wine)
9144         # so swap in a shell wrapper that converts paths transparently
9145         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9146         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9147         AC_SUBST(BFFVALIDATOR_EXE)
9148         AC_MSG_RESULT($BFFVALIDATOR)
9149     else
9150         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9151     fi
9152     AC_SUBST(BFFVALIDATOR)
9153 else
9154     AC_MSG_RESULT([no])
9157 dnl ===================================================================
9158 dnl Check for epm (not needed for Windows)
9159 dnl ===================================================================
9160 AC_MSG_CHECKING([whether to enable EPM for packing])
9161 if test "$enable_epm" = "yes"; then
9162     AC_MSG_RESULT([yes])
9163     if test "$_os" != "WINNT"; then
9164         if test $_os = Darwin; then
9165             EPM=internal
9166         elif test -n "$with_epm"; then
9167             EPM=$with_epm
9168         else
9169             AC_PATH_PROG(EPM, epm, no)
9170         fi
9171         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9172             AC_MSG_NOTICE([EPM will be built.])
9173             BUILD_TYPE="$BUILD_TYPE EPM"
9174             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9175         else
9176             # Gentoo has some epm which is something different...
9177             AC_MSG_CHECKING([whether the found epm is the right epm])
9178             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9179                 AC_MSG_RESULT([yes])
9180             else
9181                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9182             fi
9183             AC_MSG_CHECKING([epm version])
9184             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9185             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9186                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9187                 AC_MSG_RESULT([OK, >= 3.7])
9188             else
9189                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9190                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9191             fi
9192         fi
9193     fi
9195     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9196         AC_MSG_CHECKING([for rpm])
9197         for a in "$RPM" rpmbuild rpm; do
9198             $a --usage >/dev/null 2> /dev/null
9199             if test $? -eq 0; then
9200                 RPM=$a
9201                 break
9202             else
9203                 $a --version >/dev/null 2> /dev/null
9204                 if test $? -eq 0; then
9205                     RPM=$a
9206                     break
9207                 fi
9208             fi
9209         done
9210         if test -z "$RPM"; then
9211             AC_MSG_ERROR([not found])
9212         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9213             RPM_PATH=`which $RPM`
9214             AC_MSG_RESULT([$RPM_PATH])
9215             SCPDEFS="$SCPDEFS -DWITH_RPM"
9216         else
9217             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9218         fi
9219     fi
9220     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9221         AC_PATH_PROG(DPKG, dpkg, no)
9222         if test "$DPKG" = "no"; then
9223             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9224         fi
9225     fi
9226     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9227        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9228         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9229             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9230                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9231                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9232                     AC_MSG_RESULT([yes])
9233                 else
9234                     AC_MSG_RESULT([no])
9235                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9236                         _pt="rpm"
9237                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9238                         add_warning "the rpms will need to be installed with --nodeps"
9239                     else
9240                         _pt="pkg"
9241                     fi
9242                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9243                     add_warning "the ${_pt}s will not be relocatable"
9244                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9245                                  relocation will work, you need to patch your epm with the
9246                                  patch in epm/epm-3.7.patch or build with
9247                                  --with-epm=internal which will build a suitable epm])
9248                 fi
9249             fi
9250         fi
9251     fi
9252     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9253         AC_PATH_PROG(PKGMK, pkgmk, no)
9254         if test "$PKGMK" = "no"; then
9255             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9256         fi
9257     fi
9258     AC_SUBST(RPM)
9259     AC_SUBST(DPKG)
9260     AC_SUBST(PKGMK)
9261 else
9262     for i in $PKGFORMAT; do
9263         case "$i" in
9264         aix | bsd | deb | pkg | rpm | native | portable)
9265             AC_MSG_ERROR(
9266                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9267             ;;
9268         esac
9269     done
9270     AC_MSG_RESULT([no])
9271     EPM=NO
9273 AC_SUBST(EPM)
9275 ENABLE_LWP=
9276 if test "$enable_lotuswordpro" = "yes"; then
9277     ENABLE_LWP="TRUE"
9279 AC_SUBST(ENABLE_LWP)
9281 dnl ===================================================================
9282 dnl Check for building ODK
9283 dnl ===================================================================
9284 AC_MSG_CHECKING([whether to build the ODK])
9285 if test "$enable_odk" = yes; then
9286     if test "$DISABLE_DYNLOADING" = TRUE; then
9287         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9288     fi
9289     AC_MSG_RESULT([yes])
9290     BUILD_TYPE="$BUILD_TYPE ODK"
9291 else
9292     AC_MSG_RESULT([no])
9295 if test "$enable_odk" != yes; then
9296     unset DOXYGEN
9297 else
9298     if test "$with_doxygen" = no; then
9299         AC_MSG_CHECKING([for doxygen])
9300         unset DOXYGEN
9301         AC_MSG_RESULT([no])
9302     else
9303         if test "$with_doxygen" = yes; then
9304             AC_PATH_PROG([DOXYGEN], [doxygen])
9305             if test -z "$DOXYGEN"; then
9306                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9307             fi
9308             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9309                 if ! dot -V 2>/dev/null; then
9310                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9311                 fi
9312             fi
9313         else
9314             AC_MSG_CHECKING([for doxygen])
9315             DOXYGEN=$with_doxygen
9316             AC_MSG_RESULT([$DOXYGEN])
9317         fi
9318         if test -n "$DOXYGEN"; then
9319             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9320             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9321             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9322                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9323             fi
9324         fi
9325     fi
9327 AC_SUBST([DOXYGEN])
9329 dnl ==================================================================
9330 dnl libfuzzer
9331 dnl ==================================================================
9332 AC_MSG_CHECKING([whether to enable fuzzers])
9333 if test "$enable_fuzzers" != yes; then
9334     AC_MSG_RESULT([no])
9335 else
9336     if test -z $LIB_FUZZING_ENGINE; then
9337       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9338     fi
9339     AC_MSG_RESULT([yes])
9340     ENABLE_FUZZERS="TRUE"
9341     AC_DEFINE([ENABLE_FUZZERS],1)
9342     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9343     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9345 AC_SUBST(LIB_FUZZING_ENGINE)
9347 dnl ===================================================================
9348 dnl Check for system zlib
9349 dnl ===================================================================
9350 if test "$with_system_zlib" = "auto"; then
9351     case "$_os" in
9352     WINNT)
9353         with_system_zlib="$with_system_libs"
9354         ;;
9355     *)
9356         if test "$enable_fuzzers" != "yes"; then
9357             with_system_zlib=yes
9358         else
9359             with_system_zlib=no
9360         fi
9361         ;;
9362     esac
9365 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9366 dnl and has no pkg-config for it at least on some tinderboxes,
9367 dnl so leaving that out for now
9368 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9369 AC_MSG_CHECKING([which zlib to use])
9370 if test "$with_system_zlib" = "yes"; then
9371     AC_MSG_RESULT([external])
9372     SYSTEM_ZLIB=TRUE
9373     AC_CHECK_HEADER(zlib.h, [],
9374         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9375     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9376         [AC_MSG_ERROR(zlib not found or functional)], [])
9377 else
9378     AC_MSG_RESULT([internal])
9379     SYSTEM_ZLIB=
9380     BUILD_TYPE="$BUILD_TYPE ZLIB"
9381     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9382     if test "$COM" = "MSC"; then
9383         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9384     else
9385         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9386     fi
9388 AC_SUBST(ZLIB_CFLAGS)
9389 AC_SUBST(ZLIB_LIBS)
9390 AC_SUBST(SYSTEM_ZLIB)
9392 dnl ===================================================================
9393 dnl Check for system jpeg
9394 dnl ===================================================================
9395 AC_MSG_CHECKING([which libjpeg to use])
9396 if test "$with_system_jpeg" = "yes"; then
9397     AC_MSG_RESULT([external])
9398     SYSTEM_LIBJPEG=TRUE
9399     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9400         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9401     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9402         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9403 else
9404     SYSTEM_LIBJPEG=
9405     AC_MSG_RESULT([internal, libjpeg-turbo])
9406     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9408     case "$host_cpu" in
9409     x86_64 | amd64 | i*86 | x86 | ia32)
9410         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9411         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9412             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9413                 NASM="$LODE_HOME/opt/bin/nasm"
9414             elif test -x "/opt/lo/bin/nasm"; then
9415                 NASM="/opt/lo/bin/nasm"
9416             fi
9417         fi
9419         if test -n "$NASM"; then
9420             AC_MSG_CHECKING([for object file format of host system])
9421             case "$host_os" in
9422               cygwin* | mingw* | pw32* | wsl*)
9423                 case "$host_cpu" in
9424                   x86_64)
9425                     objfmt='Win64-COFF'
9426                     ;;
9427                   *)
9428                     objfmt='Win32-COFF'
9429                     ;;
9430                 esac
9431               ;;
9432               msdosdjgpp* | go32*)
9433                 objfmt='COFF'
9434               ;;
9435               os2-emx*) # not tested
9436                 objfmt='MSOMF' # obj
9437               ;;
9438               linux*coff* | linux*oldld*)
9439                 objfmt='COFF' # ???
9440               ;;
9441               linux*aout*)
9442                 objfmt='a.out'
9443               ;;
9444               linux*)
9445                 case "$host_cpu" in
9446                   x86_64)
9447                     objfmt='ELF64'
9448                     ;;
9449                   *)
9450                     objfmt='ELF'
9451                     ;;
9452                 esac
9453               ;;
9454               kfreebsd* | freebsd* | netbsd* | openbsd*)
9455                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9456                   objfmt='BSD-a.out'
9457                 else
9458                   case "$host_cpu" in
9459                     x86_64 | amd64)
9460                       objfmt='ELF64'
9461                       ;;
9462                     *)
9463                       objfmt='ELF'
9464                       ;;
9465                   esac
9466                 fi
9467               ;;
9468               solaris* | sunos* | sysv* | sco*)
9469                 case "$host_cpu" in
9470                   x86_64)
9471                     objfmt='ELF64'
9472                     ;;
9473                   *)
9474                     objfmt='ELF'
9475                     ;;
9476                 esac
9477               ;;
9478               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9479                 case "$host_cpu" in
9480                   x86_64)
9481                     objfmt='Mach-O64'
9482                     ;;
9483                   *)
9484                     objfmt='Mach-O'
9485                     ;;
9486                 esac
9487               ;;
9488               *)
9489                 objfmt='ELF ?'
9490               ;;
9491             esac
9493             AC_MSG_RESULT([$objfmt])
9494             if test "$objfmt" = 'ELF ?'; then
9495               objfmt='ELF'
9496               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9497             fi
9499             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9500             case "$objfmt" in
9501               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9502               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9503               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9504               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9505               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9506               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9507               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9508               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9509               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9510               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9511               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9512             esac
9513             AC_MSG_RESULT([$NAFLAGS])
9515             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9516             cat > conftest.asm << EOF
9517             [%line __oline__ "configure"
9518                     section .text
9519                     global  _main,main
9520             _main:
9521             main:   xor     eax,eax
9522                     ret
9523             ]
9525             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9526             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9527               AC_MSG_RESULT(yes)
9528             else
9529               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9530               cat conftest.asm >&AS_MESSAGE_LOG_FD
9531               rm -rf conftest*
9532               AC_MSG_RESULT(no)
9533               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9534               NASM=""
9535             fi
9537         fi
9539         if test -z "$NASM"; then
9540 cat << _EOS
9541 ****************************************************************************
9542 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9543 To get one please:
9545 _EOS
9546             if test "$build_os" = "cygwin"; then
9547 cat << _EOS
9548 install a pre-compiled binary for Win32
9550 mkdir -p /opt/lo/bin
9551 cd /opt/lo/bin
9552 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9553 chmod +x nasm
9555 or get and install one from http://www.nasm.us/
9557 Then re-run autogen.sh
9559 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9560 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9562 _EOS
9563             else
9564 cat << _EOS
9565 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9567 _EOS
9568             fi
9569             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9570             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9571         fi
9572       ;;
9573     esac
9576 AC_SUBST(NASM)
9577 AC_SUBST(NAFLAGS)
9578 AC_SUBST(LIBJPEG_CFLAGS)
9579 AC_SUBST(LIBJPEG_LIBS)
9580 AC_SUBST(SYSTEM_LIBJPEG)
9582 dnl ===================================================================
9583 dnl Check for system clucene
9584 dnl ===================================================================
9585 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9586 if test "$SYSTEM_CLUCENE" = TRUE; then
9587     AC_LANG_PUSH([C++])
9588     save_CXXFLAGS=$CXXFLAGS
9589     save_CPPFLAGS=$CPPFLAGS
9590     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9591     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9592     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9593     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9594     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9595                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9596     CXXFLAGS=$save_CXXFLAGS
9597     CPPFLAGS=$save_CPPFLAGS
9598     AC_LANG_POP([C++])
9599     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9602 dnl ===================================================================
9603 dnl Check for system expat
9604 dnl ===================================================================
9605 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9607 dnl ===================================================================
9608 dnl Check for system xmlsec
9609 dnl ===================================================================
9610 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9612 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9613 if test "$enable_eot" = "yes"; then
9614     ENABLE_EOT="TRUE"
9615     AC_DEFINE([ENABLE_EOT])
9616     AC_MSG_RESULT([yes])
9618     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9619 else
9620     ENABLE_EOT=
9621     AC_MSG_RESULT([no])
9623 AC_SUBST([ENABLE_EOT])
9625 dnl ===================================================================
9626 dnl Check for DLP libs
9627 dnl ===================================================================
9628 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9629 AS_IF([test "$COM" = "MSC"],
9630       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9631       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9633 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9634 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9636 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9638 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9640 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9641 AS_IF([test "$COM" = "MSC"],
9642       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9643       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9645 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9646 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9648 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9650 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9651 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9653 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9655 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9657 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9659 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9660 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9662 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9663 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9665 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9667 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9668 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9670 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9672 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9674 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9676 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9678 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9679 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9681 dnl ===================================================================
9682 dnl Check for system lcms2
9683 dnl ===================================================================
9684 if test "$with_system_lcms2" != "yes"; then
9685     SYSTEM_LCMS2=
9687 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9688 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9689 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9690 if test "$GCC" = "yes"; then
9691     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9693 if test "$COM" = "MSC"; then # override the above
9694     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9697 dnl ===================================================================
9698 dnl Check for system cppunit
9699 dnl ===================================================================
9700 if test "$_os" != "Android" ; then
9701     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9704 dnl ===================================================================
9705 dnl Check whether freetype is available
9707 dnl FreeType has 3 different kinds of versions
9708 dnl * release, like 2.4.10
9709 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9710 dnl * soname
9711 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9713 dnl 9.9.3 is 2.2.0
9714 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9715 dnl ===================================================================
9716 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9717 if test "x$ac_config_site_64bit_host" = xYES; then
9718     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9719 else
9720     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9722 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9724 # ===================================================================
9725 # Check for system libxslt
9726 # to prevent incompatibilities between internal libxml2 and external libxslt,
9727 # or vice versa, use with_system_libxml here
9728 # ===================================================================
9729 if test "$with_system_libxml" = "auto"; then
9730     case "$_os" in
9731     WINNT|iOS|Android)
9732         with_system_libxml="$with_system_libs"
9733         ;;
9734     Emscripten)
9735         with_system_libxml=no
9736         ;;
9737     *)
9738         if test "$enable_fuzzers" != "yes"; then
9739             with_system_libxml=yes
9740         else
9741             with_system_libxml=no
9742         fi
9743         ;;
9744     esac
9747 AC_MSG_CHECKING([which libxslt to use])
9748 if test "$with_system_libxml" = "yes"; then
9749     AC_MSG_RESULT([external])
9750     SYSTEM_LIBXSLT=TRUE
9751     if test "$_os" = "Darwin"; then
9752         dnl make sure to use SDK path
9753         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9754         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9755         dnl omit -L/usr/lib
9756         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9757         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9758     else
9759         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9760         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9761         FilterLibs "${LIBXSLT_LIBS}"
9762         LIBXSLT_LIBS="${filteredlibs}"
9763         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9764         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9765         FilterLibs "${LIBEXSLT_LIBS}"
9766         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9767     fi
9769     dnl Check for xsltproc
9770     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9771     if test "$XSLTPROC" = "no"; then
9772         AC_MSG_ERROR([xsltproc is required])
9773     fi
9774 else
9775     AC_MSG_RESULT([internal])
9776     SYSTEM_LIBXSLT=
9777     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9779 AC_SUBST(SYSTEM_LIBXSLT)
9780 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9781     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9783 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9785 AC_SUBST(LIBEXSLT_CFLAGS)
9786 AC_SUBST(LIBEXSLT_LIBS)
9787 AC_SUBST(LIBXSLT_CFLAGS)
9788 AC_SUBST(LIBXSLT_LIBS)
9789 AC_SUBST(XSLTPROC)
9791 # ===================================================================
9792 # Check for system libxml
9793 # ===================================================================
9794 AC_MSG_CHECKING([which libxml to use])
9795 if test "$with_system_libxml" = "yes"; then
9796     AC_MSG_RESULT([external])
9797     SYSTEM_LIBXML=TRUE
9798     if test "$_os" = "Darwin"; then
9799         dnl make sure to use SDK path
9800         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9801         dnl omit -L/usr/lib
9802         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9803     elif test $_os = iOS; then
9804         dnl make sure to use SDK path
9805         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9806         LIBXML_CFLAGS="-I$usr/include/libxml2"
9807         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9808     else
9809         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9810         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9811         FilterLibs "${LIBXML_LIBS}"
9812         LIBXML_LIBS="${filteredlibs}"
9813     fi
9815     dnl Check for xmllint
9816     AC_PATH_PROG(XMLLINT, xmllint, no)
9817     if test "$XMLLINT" = "no"; then
9818         AC_MSG_ERROR([xmllint is required])
9819     fi
9820 else
9821     AC_MSG_RESULT([internal])
9822     SYSTEM_LIBXML=
9823     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9824     if test "$COM" = "MSC"; then
9825         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9826     fi
9827     if test "$COM" = "MSC"; then
9828         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9829     else
9830         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9831         if test "$DISABLE_DYNLOADING" = TRUE; then
9832             LIBXML_LIBS="$LIBXML_LIBS -lm"
9833         fi
9834     fi
9835     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9837 AC_SUBST(SYSTEM_LIBXML)
9838 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9839     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9841 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9842 AC_SUBST(LIBXML_CFLAGS)
9843 AC_SUBST(LIBXML_LIBS)
9844 AC_SUBST(XMLLINT)
9846 # =====================================================================
9847 # Checking for a Python interpreter with version >= 3.3.
9848 # Optionally user can pass an option to configure, i. e.
9849 # ./configure PYTHON=/usr/bin/python
9850 # =====================================================================
9851 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9852     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9853     # unless PYTHON is defined as above which allows 'system'
9854     enable_python=internal
9856 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9857     if test -n "$PYTHON"; then
9858         PYTHON_FOR_BUILD=$PYTHON
9859     else
9860         # This allows a lack of system python with no error, we use internal one in that case.
9861         AM_PATH_PYTHON([3.3],, [:])
9862         # Clean PYTHON_VERSION checked below if cross-compiling
9863         PYTHON_VERSION=""
9864         if test "$PYTHON" != ":"; then
9865             PYTHON_FOR_BUILD=$PYTHON
9866         fi
9867     fi
9870 # Checks for Python to use for Pyuno
9871 AC_MSG_CHECKING([which Python to use for Pyuno])
9872 case "$enable_python" in
9873 no|disable)
9874     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9875         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9876         # requirement from the choice whether to include Python stuff in the installer, but why
9877         # bother?
9878         AC_MSG_ERROR([Python is required at build time.])
9879     fi
9880     enable_python=no
9881     AC_MSG_RESULT([none])
9882     ;;
9883 ""|yes|auto)
9884     if test "$DISABLE_SCRIPTING" = TRUE; then
9885         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9886             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9887         fi
9888         AC_MSG_RESULT([none, overridden by --disable-scripting])
9889         enable_python=no
9890     elif test $build_os = cygwin -o $build_os = wsl; then
9891         dnl When building on Windows we don't attempt to use any installed
9892         dnl "system"  Python.
9893         AC_MSG_RESULT([fully internal])
9894         enable_python=internal
9895     elif test "$cross_compiling" = yes; then
9896         AC_MSG_RESULT([system])
9897         enable_python=system
9898     else
9899         # Unset variables set by the above AM_PATH_PYTHON so that
9900         # we actually do check anew.
9901         AC_MSG_RESULT([])
9902         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
9903         AM_PATH_PYTHON([3.3],, [:])
9904         AC_MSG_CHECKING([which Python to use for Pyuno])
9905         if test "$PYTHON" = ":"; then
9906             if test -z "$PYTHON_FOR_BUILD"; then
9907                 AC_MSG_RESULT([fully internal])
9908             else
9909                 AC_MSG_RESULT([internal])
9910             fi
9911             enable_python=internal
9912         else
9913             AC_MSG_RESULT([system])
9914             enable_python=system
9915         fi
9916     fi
9917     ;;
9918 internal)
9919     AC_MSG_RESULT([internal])
9920     ;;
9921 fully-internal)
9922     AC_MSG_RESULT([fully internal])
9923     enable_python=internal
9924     ;;
9925 system)
9926     AC_MSG_RESULT([system])
9927     if test "$_os" = Darwin -a -z "$PYTHON"; then
9928         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9929     fi
9930     ;;
9932     AC_MSG_ERROR([Incorrect --enable-python option])
9933     ;;
9934 esac
9936 if test $enable_python != no; then
9937     BUILD_TYPE="$BUILD_TYPE PYUNO"
9940 if test $enable_python = system; then
9941     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9942         # Fallback: Accept these in the environment, or as set above
9943         # for MacOSX.
9944         :
9945     elif test "$cross_compiling" != yes; then
9946         # Unset variables set by the above AM_PATH_PYTHON so that
9947         # we actually do check anew.
9948         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
9949         # This causes an error if no python command is found
9950         AM_PATH_PYTHON([3.3])
9951         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9952         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9953         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9954         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9955         if test -z "$PKG_CONFIG"; then
9956             PYTHON_CFLAGS="-I$python_include"
9957             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9958         elif $PKG_CONFIG --exists python-$python_version-embed; then
9959             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9960             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9961         elif $PKG_CONFIG --exists python-$python_version; then
9962             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9963             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9964         else
9965             PYTHON_CFLAGS="-I$python_include"
9966             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9967         fi
9968         FilterLibs "${PYTHON_LIBS}"
9969         PYTHON_LIBS="${filteredlibs}"
9970     else
9971         dnl How to find out the cross-compilation Python installation path?
9972         AC_MSG_CHECKING([for python version])
9973         AS_IF([test -n "$PYTHON_VERSION"],
9974               [AC_MSG_RESULT([$PYTHON_VERSION])],
9975               [AC_MSG_RESULT([not found])
9976                AC_MSG_ERROR([no usable python found])])
9977         test -n "$PYTHON_CFLAGS" && break
9978     fi
9980     dnl Check if the headers really work
9981     save_CPPFLAGS="$CPPFLAGS"
9982     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9983     AC_CHECK_HEADER(Python.h)
9984     CPPFLAGS="$save_CPPFLAGS"
9986     # let the PYTHON_FOR_BUILD match the same python installation that
9987     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9988     # better for PythonTests.
9989     PYTHON_FOR_BUILD=$PYTHON
9992 if test "$with_lxml" != no; then
9993     if test -z "$PYTHON_FOR_BUILD"; then
9994         case $build_os in
9995             cygwin)
9996                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9997                 ;;
9998             *)
9999                 if test "$cross_compiling" != yes ; then
10000                     BUILD_TYPE="$BUILD_TYPE LXML"
10001                 fi
10002                 ;;
10003         esac
10004     else
10005         AC_MSG_CHECKING([for python lxml])
10006         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10007             AC_MSG_RESULT([yes])
10008         else
10009             case $build_os in
10010                 cygwin)
10011                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10012                     ;;
10013                 *)
10014                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10015                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10016                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10017                         else
10018                             BUILD_TYPE="$BUILD_TYPE LXML"
10019                             AC_MSG_RESULT([no, using internal lxml])
10020                         fi
10021                     else
10022                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10023                     fi
10024                     ;;
10025             esac
10026         fi
10027     fi
10030 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10031     SYSTEM_PYTHON=
10032     PYTHON_VERSION_MAJOR=3
10033     PYTHON_VERSION_MINOR=8
10034     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.15
10035     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10036         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10037     fi
10038     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10040     # Embedded Python dies without Home set
10041     if test "$HOME" = ""; then
10042         export HOME=""
10043     fi
10046 dnl By now enable_python should be "system", "internal" or "no"
10047 case $enable_python in
10048 system)
10049     SYSTEM_PYTHON=TRUE
10051     if test "x$ac_cv_header_Python_h" != "xyes"; then
10052        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10053     fi
10055     AC_LANG_PUSH(C)
10056     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10057     AC_MSG_CHECKING([for correct python library version])
10058        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10059 #include <Python.h>
10061 int main(int argc, char **argv) {
10062    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10063    else return 1;
10065        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10066     AC_LANG_POP(C)
10068     dnl FIXME Check if the Python library can be linked with, too?
10069     ;;
10071 internal)
10072     BUILD_TYPE="$BUILD_TYPE PYTHON"
10073     if test "$OS" = LINUX -o "$OS" = WNT ; then
10074         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10075     fi
10076     ;;
10078     DISABLE_PYTHON=TRUE
10079     SYSTEM_PYTHON=
10080     ;;
10082     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10083     ;;
10084 esac
10086 AC_SUBST(DISABLE_PYTHON)
10087 AC_SUBST(SYSTEM_PYTHON)
10088 AC_SUBST(PYTHON_CFLAGS)
10089 AC_SUBST(PYTHON_FOR_BUILD)
10090 AC_SUBST(PYTHON_LIBS)
10091 AC_SUBST(PYTHON_VERSION)
10092 AC_SUBST(PYTHON_VERSION_MAJOR)
10093 AC_SUBST(PYTHON_VERSION_MINOR)
10095 AC_MSG_CHECKING([whether to build LibreLogo])
10096 case "$enable_python" in
10097 no|disable)
10098     AC_MSG_RESULT([no; Python disabled])
10099     ;;
10101     if test "${enable_librelogo}" = "no"; then
10102         AC_MSG_RESULT([no])
10103     else
10104         AC_MSG_RESULT([yes])
10105         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10106         AC_DEFINE([ENABLE_LIBRELOGO],1)
10107     fi
10108     ;;
10109 esac
10110 AC_SUBST(ENABLE_LIBRELOGO)
10112 ENABLE_MARIADBC=
10113 MARIADBC_MAJOR=1
10114 MARIADBC_MINOR=0
10115 MARIADBC_MICRO=2
10116 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10117 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10118     ENABLE_MARIADBC=TRUE
10119     AC_MSG_RESULT([yes])
10120     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10121 else
10122     AC_MSG_RESULT([no])
10124 AC_SUBST(ENABLE_MARIADBC)
10125 AC_SUBST(MARIADBC_MAJOR)
10126 AC_SUBST(MARIADBC_MINOR)
10127 AC_SUBST(MARIADBC_MICRO)
10129 if test "$ENABLE_MARIADBC" = "TRUE"; then
10130     dnl ===================================================================
10131     dnl Check for system MariaDB
10132     dnl ===================================================================
10133     AC_MSG_CHECKING([which MariaDB to use])
10134     if test "$with_system_mariadb" = "yes"; then
10135         AC_MSG_RESULT([external])
10136         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10137         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10138         if test -z "$MARIADBCONFIG"; then
10139             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10140             if test -z "$MARIADBCONFIG"; then
10141                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10142                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10143             fi
10144         fi
10145         AC_MSG_CHECKING([MariaDB version])
10146         MARIADB_VERSION=`$MARIADBCONFIG --version`
10147         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10148         if test "$MARIADB_MAJOR" -ge "5"; then
10149             AC_MSG_RESULT([OK])
10150         else
10151             AC_MSG_ERROR([too old, use 5.0.x or later])
10152         fi
10153         AC_MSG_CHECKING([for MariaDB Client library])
10154         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10155         if test "$COM_IS_CLANG" = TRUE; then
10156             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10157         fi
10158         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10159         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10160         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10161         dnl linux32:
10162         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10163             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10164             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10165                 | sed -e 's|/lib64/|/lib/|')
10166         fi
10167         FilterLibs "${MARIADB_LIBS}"
10168         MARIADB_LIBS="${filteredlibs}"
10169         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10170         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10171         if test "$enable_bundle_mariadb" = "yes"; then
10172             AC_MSG_RESULT([yes])
10173             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10174             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10176 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10178 /g' | grep -E '(mysqlclient|mariadb)')
10179             if test "$_os" = "Darwin"; then
10180                 LIBMARIADB=${LIBMARIADB}.dylib
10181             elif test "$_os" = "WINNT"; then
10182                 LIBMARIADB=${LIBMARIADB}.dll
10183             else
10184                 LIBMARIADB=${LIBMARIADB}.so
10185             fi
10186             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10187             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10188             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10189                 AC_MSG_RESULT([found.])
10190                 PathFormat "$LIBMARIADB_PATH"
10191                 LIBMARIADB_PATH="$formatted_path"
10192             else
10193                 AC_MSG_ERROR([not found.])
10194             fi
10195         else
10196             AC_MSG_RESULT([no])
10197             BUNDLE_MARIADB_CONNECTOR_C=
10198         fi
10199     else
10200         AC_MSG_RESULT([internal])
10201         SYSTEM_MARIADB_CONNECTOR_C=
10202         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10203         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10204         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10205     fi
10207     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10208     AC_SUBST(MARIADB_CFLAGS)
10209     AC_SUBST(MARIADB_LIBS)
10210     AC_SUBST(LIBMARIADB)
10211     AC_SUBST(LIBMARIADB_PATH)
10212     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10215 dnl ===================================================================
10216 dnl Check for system hsqldb
10217 dnl ===================================================================
10218 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10219     AC_MSG_CHECKING([which hsqldb to use])
10220     if test "$with_system_hsqldb" = "yes"; then
10221         AC_MSG_RESULT([external])
10222         SYSTEM_HSQLDB=TRUE
10223         if test -z $HSQLDB_JAR; then
10224             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10225         fi
10226         if ! test -f $HSQLDB_JAR; then
10227                AC_MSG_ERROR(hsqldb.jar not found.)
10228         fi
10229         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10230         export HSQLDB_JAR
10231         if $PERL -e \
10232            'use Archive::Zip;
10233             my $file = "$ENV{'HSQLDB_JAR'}";
10234             my $zip = Archive::Zip->new( $file );
10235             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10236             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10237             {
10238                 push @l, split(/\n/, $mf);
10239                 foreach my $line (@l)
10240                 {
10241                     if ($line =~ m/Specification-Version:/)
10242                     {
10243                         ($t, $version) = split (/:/,$line);
10244                         $version =~ s/^\s//;
10245                         ($a, $b, $c, $d) = split (/\./,$version);
10246                         if ($c == "0" && $d > "8")
10247                         {
10248                             exit 0;
10249                         }
10250                         else
10251                         {
10252                             exit 1;
10253                         }
10254                     }
10255                 }
10256             }
10257             else
10258             {
10259                 exit 1;
10260             }'; then
10261             AC_MSG_RESULT([yes])
10262         else
10263             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10264         fi
10265     else
10266         AC_MSG_RESULT([internal])
10267         SYSTEM_HSQLDB=
10268         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10269         NEED_ANT=TRUE
10270     fi
10271 else
10272     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10273         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10274     fi
10276 AC_SUBST(SYSTEM_HSQLDB)
10277 AC_SUBST(HSQLDB_JAR)
10279 dnl ===================================================================
10280 dnl Check for PostgreSQL stuff
10281 dnl ===================================================================
10282 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10283 if test "x$enable_postgresql_sdbc" != "xno"; then
10284     AC_MSG_RESULT([yes])
10285     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10287     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10288         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10289     fi
10290     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10291         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10292     fi
10294     postgres_interface=""
10295     if test "$with_system_postgresql" = "yes"; then
10296         postgres_interface="external PostgreSQL"
10297         SYSTEM_POSTGRESQL=TRUE
10298         if test "$_os" = Darwin; then
10299             supp_path=''
10300             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10301                 pg_supp_path="$P_SEP$d$pg_supp_path"
10302             done
10303         fi
10304         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10305         if test -n "$PGCONFIG"; then
10306             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10307             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10308         else
10309             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10310               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10311               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10312             ],[
10313               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10314             ])
10315         fi
10316         FilterLibs "${POSTGRESQL_LIB}"
10317         POSTGRESQL_LIB="${filteredlibs}"
10318     else
10319         # if/when anything else than PostgreSQL uses Kerberos,
10320         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10321         WITH_KRB5=
10322         WITH_GSSAPI=
10323         case "$_os" in
10324         Darwin)
10325             # macOS has system MIT Kerberos 5 since 10.4
10326             if test "$with_krb5" != "no"; then
10327                 WITH_KRB5=TRUE
10328                 save_LIBS=$LIBS
10329                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10330                 # that the libraries where these functions are located on macOS will change, is it?
10331                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10332                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10333                 KRB5_LIBS=$LIBS
10334                 LIBS=$save_LIBS
10335                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10336                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10337                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10338                 LIBS=$save_LIBS
10339             fi
10340             if test "$with_gssapi" != "no"; then
10341                 WITH_GSSAPI=TRUE
10342                 save_LIBS=$LIBS
10343                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10344                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10345                 GSSAPI_LIBS=$LIBS
10346                 LIBS=$save_LIBS
10347             fi
10348             ;;
10349         WINNT)
10350             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10351                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10352             fi
10353             ;;
10354         Linux|GNU|*BSD|DragonFly)
10355             if test "$with_krb5" != "no"; then
10356                 WITH_KRB5=TRUE
10357                 save_LIBS=$LIBS
10358                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10359                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10360                 KRB5_LIBS=$LIBS
10361                 LIBS=$save_LIBS
10362                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10363                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10364                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10365                 LIBS=$save_LIBS
10366             fi
10367             if test "$with_gssapi" != "no"; then
10368                 WITH_GSSAPI=TRUE
10369                 save_LIBS=$LIBS
10370                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10371                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10372                 GSSAPI_LIBS=$LIBS
10373                 LIBS=$save_LIBS
10374             fi
10375             ;;
10376         *)
10377             if test "$with_krb5" = "yes"; then
10378                 WITH_KRB5=TRUE
10379                 save_LIBS=$LIBS
10380                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10381                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10382                 KRB5_LIBS=$LIBS
10383                 LIBS=$save_LIBS
10384                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10385                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10386                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10387                 LIBS=$save_LIBS
10388             fi
10389             if test "$with_gssapi" = "yes"; then
10390                 WITH_GSSAPI=TRUE
10391                 save_LIBS=$LIBS
10392                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10393                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10394                 LIBS=$save_LIBS
10395                 GSSAPI_LIBS=$LIBS
10396             fi
10397         esac
10399         if test -n "$with_libpq_path"; then
10400             SYSTEM_POSTGRESQL=TRUE
10401             postgres_interface="external libpq"
10402             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10403             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10404         else
10405             SYSTEM_POSTGRESQL=
10406             postgres_interface="internal"
10407             POSTGRESQL_LIB=""
10408             POSTGRESQL_INC="%OVERRIDE_ME%"
10409             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10410         fi
10411     fi
10413     AC_MSG_CHECKING([PostgreSQL C interface])
10414     AC_MSG_RESULT([$postgres_interface])
10416     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10417         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10418         save_CFLAGS=$CFLAGS
10419         save_CPPFLAGS=$CPPFLAGS
10420         save_LIBS=$LIBS
10421         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10422         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10423         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10424         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10425             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10426         CFLAGS=$save_CFLAGS
10427         CPPFLAGS=$save_CPPFLAGS
10428         LIBS=$save_LIBS
10429     fi
10430     BUILD_POSTGRESQL_SDBC=TRUE
10431 else
10432     AC_MSG_RESULT([no])
10434 AC_SUBST(WITH_KRB5)
10435 AC_SUBST(WITH_GSSAPI)
10436 AC_SUBST(GSSAPI_LIBS)
10437 AC_SUBST(KRB5_LIBS)
10438 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10439 AC_SUBST(SYSTEM_POSTGRESQL)
10440 AC_SUBST(POSTGRESQL_INC)
10441 AC_SUBST(POSTGRESQL_LIB)
10443 dnl ===================================================================
10444 dnl Check for Firebird stuff
10445 dnl ===================================================================
10446 ENABLE_FIREBIRD_SDBC=
10447 if test "$enable_firebird_sdbc" = "yes" ; then
10448     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10450     dnl ===================================================================
10451     dnl Check for system Firebird
10452     dnl ===================================================================
10453     AC_MSG_CHECKING([which Firebird to use])
10454     if test "$with_system_firebird" = "yes"; then
10455         AC_MSG_RESULT([external])
10456         SYSTEM_FIREBIRD=TRUE
10457         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10458         if test -z "$FIREBIRDCONFIG"; then
10459             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10460             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10461                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10462             ])
10463             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10464         else
10465             AC_MSG_NOTICE([fb_config found])
10466             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10467             AC_MSG_CHECKING([for Firebird Client library])
10468             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10469             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10470             FilterLibs "${FIREBIRD_LIBS}"
10471             FIREBIRD_LIBS="${filteredlibs}"
10472         fi
10473         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10474         AC_MSG_CHECKING([Firebird version])
10475         if test -n "${FIREBIRD_VERSION}"; then
10476             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10477             if test "$FIREBIRD_MAJOR" -ge "3"; then
10478                 AC_MSG_RESULT([OK])
10479             else
10480                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10481             fi
10482         else
10483             save_CFLAGS="${CFLAGS}"
10484             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10485             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10486 #if defined(FB_API_VER) && FB_API_VER == 30
10487 int fb_api_is_30(void) { return 0; }
10488 #else
10489 #error "Wrong Firebird API version"
10490 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10491             CFLAGS="$save_CFLAGS"
10492         fi
10493         ENABLE_FIREBIRD_SDBC=TRUE
10494         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10495     elif test "$enable_database_connectivity" = no; then
10496         AC_MSG_RESULT([none])
10497     elif test "$cross_compiling" = "yes"; then
10498         AC_MSG_RESULT([none])
10499     else
10500         dnl Embedded Firebird has version 3.0
10501         dnl We need libatomic_ops for any non X86/X64 system
10502         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10503             dnl ===================================================================
10504             dnl Check for system libatomic_ops
10505             dnl ===================================================================
10506             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10507             if test "$with_system_libatomic_ops" = "yes"; then
10508                 SYSTEM_LIBATOMIC_OPS=TRUE
10509                 AC_CHECK_HEADERS(atomic_ops.h, [],
10510                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10511             else
10512                 SYSTEM_LIBATOMIC_OPS=
10513                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10514                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10515                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10516             fi
10517         fi
10519         AC_MSG_RESULT([internal])
10520         SYSTEM_FIREBIRD=
10521         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10522         FIREBIRD_LIBS="-lfbclient"
10524         if test "$with_system_libtommath" = "yes"; then
10525             SYSTEM_LIBTOMMATH=TRUE
10526             dnl check for tommath presence
10527             save_LIBS=$LIBS
10528             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10529             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10530             LIBS=$save_LIBS
10531         else
10532             SYSTEM_LIBTOMMATH=
10533             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10534             LIBTOMMATH_LIBS="-ltommath"
10535             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10536         fi
10538         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10539         ENABLE_FIREBIRD_SDBC=TRUE
10540         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10541     fi
10543 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10544 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10545 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10546 AC_SUBST(LIBATOMIC_OPS_LIBS)
10547 AC_SUBST(SYSTEM_FIREBIRD)
10548 AC_SUBST(FIREBIRD_CFLAGS)
10549 AC_SUBST(FIREBIRD_LIBS)
10550 AC_SUBST(SYSTEM_LIBTOMMATH)
10551 AC_SUBST(LIBTOMMATH_CFLAGS)
10552 AC_SUBST(LIBTOMMATH_LIBS)
10554 dnl ===================================================================
10555 dnl Check for system curl
10556 dnl ===================================================================
10557 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10559 dnl ===================================================================
10560 dnl Check for system boost
10561 dnl ===================================================================
10562 AC_MSG_CHECKING([which boost to use])
10563 if test "$with_system_boost" = "yes"; then
10564     AC_MSG_RESULT([external])
10565     SYSTEM_BOOST=TRUE
10566     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10567     AX_BOOST_DATE_TIME
10568     AX_BOOST_FILESYSTEM
10569     AX_BOOST_IOSTREAMS
10570     AX_BOOST_LOCALE
10571     AC_LANG_PUSH([C++])
10572     save_CXXFLAGS=$CXXFLAGS
10573     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10574     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10575        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10576     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10577        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10578     CXXFLAGS=$save_CXXFLAGS
10579     AC_LANG_POP([C++])
10580     # this is in m4/ax_boost_base.m4
10581     FilterLibs "${BOOST_LDFLAGS}"
10582     BOOST_LDFLAGS="${filteredlibs}"
10583 else
10584     AC_MSG_RESULT([internal])
10585     BUILD_TYPE="$BUILD_TYPE BOOST"
10586     SYSTEM_BOOST=
10587     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10588         # use warning-suppressing wrapper headers
10589         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10590     else
10591         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10592     fi
10594 AC_SUBST(SYSTEM_BOOST)
10596 dnl ===================================================================
10597 dnl Check for system mdds
10598 dnl ===================================================================
10599 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10600 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10602 dnl ===================================================================
10603 dnl Check for system dragonbox
10604 dnl ===================================================================
10605 AC_MSG_CHECKING([which dragonbox to use])
10606 if test "$with_system_dragonbox" = "yes"; then
10607     AC_MSG_RESULT([external])
10608     SYSTEM_DRAGONBOX=TRUE
10609     AC_LANG_PUSH([C++])
10610     save_CPPFLAGS=$CPPFLAGS
10611     # This is where upstream installs to, unfortunately no .pc or so...
10612     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10613     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10614     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10615        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10616     AC_LANG_POP([C++])
10617     CPPFLAGS=$save_CPPFLAGS
10618 else
10619     AC_MSG_RESULT([internal])
10620     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10621     SYSTEM_DRAGONBOX=
10623 AC_SUBST([SYSTEM_DRAGONBOX])
10624 AC_SUBST([DRAGONBOX_CFLAGS])
10626 dnl ===================================================================
10627 dnl Check for system libfixmath
10628 dnl ===================================================================
10629 AC_MSG_CHECKING([which libfixmath to use])
10630 if test "$with_system_libfixmath" = "yes"; then
10631     AC_MSG_RESULT([external])
10632     SYSTEM_LIBFIXMATH=TRUE
10633     AC_LANG_PUSH([C++])
10634     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10635        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10636     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10637     AC_LANG_POP([C++])
10638 else
10639     AC_MSG_RESULT([internal])
10640     SYSTEM_LIBFIXMATH=
10642 AC_SUBST([SYSTEM_LIBFIXMATH])
10644 dnl ===================================================================
10645 dnl Check for system glm
10646 dnl ===================================================================
10647 AC_MSG_CHECKING([which glm to use])
10648 if test "$with_system_glm" = "yes"; then
10649     AC_MSG_RESULT([external])
10650     SYSTEM_GLM=TRUE
10651     AC_LANG_PUSH([C++])
10652     AC_CHECK_HEADER([glm/glm.hpp], [],
10653        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10654     AC_LANG_POP([C++])
10655 else
10656     AC_MSG_RESULT([internal])
10657     BUILD_TYPE="$BUILD_TYPE GLM"
10658     SYSTEM_GLM=
10659     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10661 AC_SUBST([GLM_CFLAGS])
10662 AC_SUBST([SYSTEM_GLM])
10664 dnl ===================================================================
10665 dnl Check for system odbc
10666 dnl ===================================================================
10667 AC_MSG_CHECKING([which odbc headers to use])
10668 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
10669     AC_MSG_RESULT([external])
10670     SYSTEM_ODBC_HEADERS=TRUE
10672     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10673         save_CPPFLAGS=$CPPFLAGS
10674         find_winsdk
10675         PathFormat "$winsdktest"
10676         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"
10677         AC_CHECK_HEADER(sqlext.h, [],
10678             [AC_MSG_ERROR(odbc not found. install odbc)],
10679             [#include <windows.h>])
10680         CPPFLAGS=$save_CPPFLAGS
10681     else
10682         AC_CHECK_HEADER(sqlext.h, [],
10683             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10684     fi
10685 elif test "$enable_database_connectivity" = no; then
10686     AC_MSG_RESULT([none])
10687 else
10688     AC_MSG_RESULT([internal])
10689     SYSTEM_ODBC_HEADERS=
10691 AC_SUBST(SYSTEM_ODBC_HEADERS)
10693 dnl ===================================================================
10694 dnl Check for system NSS
10695 dnl ===================================================================
10696 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10697     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10698     AC_DEFINE(HAVE_FEATURE_NSS)
10699     ENABLE_NSS=TRUE
10700 elif test $_os != iOS ; then
10701     with_tls=openssl
10703 AC_SUBST(ENABLE_NSS)
10705 dnl ===================================================================
10706 dnl Enable LDAP support
10707 dnl ===================================================================
10709 if test "$test_openldap" = yes; then
10710     AC_MSG_CHECKING([whether to enable LDAP support])
10711     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10712         AC_MSG_RESULT([yes])
10713         ENABLE_LDAP=TRUE
10714     else
10715         if test "$enable_ldap" != "yes"; then
10716             AC_MSG_RESULT([no])
10717         else
10718             AC_MSG_RESULT([no (needs NSS or system openldap)])
10719         fi
10720     fi
10722 dnl ===================================================================
10723 dnl Check for system openldap
10724 dnl ===================================================================
10726     if test "$ENABLE_LDAP" = TRUE; then
10727         AC_MSG_CHECKING([which openldap library to use])
10728         if test "$with_system_openldap" = yes; then
10729             AC_MSG_RESULT([external])
10730             SYSTEM_OPENLDAP=TRUE
10731             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10732             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10733             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10734         else
10735             AC_MSG_RESULT([internal])
10736             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10737         fi
10738     fi
10741 AC_SUBST(ENABLE_LDAP)
10742 AC_SUBST(SYSTEM_OPENLDAP)
10744 dnl ===================================================================
10745 dnl Check for TLS/SSL and cryptographic implementation to use
10746 dnl ===================================================================
10747 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10748 if test -n "$with_tls"; then
10749     case $with_tls in
10750     openssl)
10751         AC_DEFINE(USE_TLS_OPENSSL)
10752         TLS=OPENSSL
10753         AC_MSG_RESULT([$TLS])
10755         if test "$enable_openssl" != "yes"; then
10756             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10757         fi
10759         # warn that OpenSSL has been selected but not all TLS code has this option
10760         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10761         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10762         ;;
10763     nss)
10764         AC_DEFINE(USE_TLS_NSS)
10765         TLS=NSS
10766         AC_MSG_RESULT([$TLS])
10767         ;;
10768     no)
10769         AC_MSG_RESULT([none])
10770         AC_MSG_WARN([Skipping TLS/SSL])
10771         ;;
10772     *)
10773         AC_MSG_RESULT([])
10774         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10775 openssl - OpenSSL
10776 nss - Mozilla's Network Security Services (NSS)
10777     ])
10778         ;;
10779     esac
10780 else
10781     # default to using NSS, it results in smaller oox lib
10782     AC_DEFINE(USE_TLS_NSS)
10783     TLS=NSS
10784     AC_MSG_RESULT([$TLS])
10786 AC_SUBST(TLS)
10788 dnl ===================================================================
10789 dnl Check for system sane
10790 dnl ===================================================================
10791 AC_MSG_CHECKING([which sane header to use])
10792 if test "$with_system_sane" = "yes"; then
10793     AC_MSG_RESULT([external])
10794     AC_CHECK_HEADER(sane/sane.h, [],
10795       [AC_MSG_ERROR(sane not found. install sane)], [])
10796 else
10797     AC_MSG_RESULT([internal])
10798     BUILD_TYPE="$BUILD_TYPE SANE"
10801 dnl ===================================================================
10802 dnl Check for system icu
10803 dnl ===================================================================
10804 ICU_MAJOR=72
10805 ICU_MINOR=1
10806 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10807 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10808 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10809 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10810 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10811 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10812 if test "$SYSTEM_ICU" = TRUE; then
10813     AC_LANG_PUSH([C++])
10814     AC_MSG_CHECKING([for unicode/rbbi.h])
10815     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10816     AC_LANG_POP([C++])
10818     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10819     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10820     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10822     if test "$ICU_MAJOR" -ge 50; then
10823         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10824         ICU_MINOR=
10825     fi
10827     if test "$CROSS_COMPILING" != TRUE; then
10828         # using the system icu tools can lead to version confusion, use the
10829         # ones from the build environment when cross-compiling
10830         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10831         if test -z "$SYSTEM_GENBRK"; then
10832             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10833         fi
10834         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10835         if test -z "$SYSTEM_GENCCODE"; then
10836             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10837         fi
10838         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10839         if test -z "$SYSTEM_GENCMN"; then
10840             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10841         fi
10842         if test "$ICU_MAJOR" -lt 49; then
10843             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10844             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10845             ICU_RECLASSIFIED_HEBREW_LETTER=
10846         fi
10847     fi
10849 if test "$ICU_MAJOR" -ge "59"; then
10850     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10851     # with -std=c++11 but not all external libraries can be built with that,
10852     # for those use a bit-compatible typedef uint16_t UChar; see
10853     # icu/source/common/unicode/umachine.h
10854     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10855 else
10856     ICU_UCHAR_TYPE=""
10858 AC_SUBST(SYSTEM_GENBRK)
10859 AC_SUBST(SYSTEM_GENCCODE)
10860 AC_SUBST(SYSTEM_GENCMN)
10861 AC_SUBST(ICU_MAJOR)
10862 AC_SUBST(ICU_MINOR)
10863 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10864 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10865 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10866 AC_SUBST(ICU_UCHAR_TYPE)
10868 dnl ==================================================================
10869 dnl Breakpad
10870 dnl ==================================================================
10871 DEFAULT_CRASHDUMP_VALUE="true"
10872 AC_MSG_CHECKING([whether to enable breakpad])
10873 if test "$enable_breakpad" != yes; then
10874     AC_MSG_RESULT([no])
10875 else
10876     AC_MSG_RESULT([yes])
10877     ENABLE_BREAKPAD="TRUE"
10878     AC_DEFINE(ENABLE_BREAKPAD)
10879     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10880     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10882     AC_MSG_CHECKING([for disable crash dump])
10883     if test "$enable_crashdump" = no; then
10884         DEFAULT_CRASHDUMP_VALUE="false"
10885         AC_MSG_RESULT([yes])
10886     else
10887        AC_MSG_RESULT([no])
10888     fi
10890     AC_MSG_CHECKING([for crashreport config])
10891     if test "$with_symbol_config" = "no"; then
10892         BREAKPAD_SYMBOL_CONFIG="invalid"
10893         AC_MSG_RESULT([no])
10894     else
10895         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10896         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10897         AC_MSG_RESULT([yes])
10898     fi
10899     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10901 AC_SUBST(ENABLE_BREAKPAD)
10902 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10904 dnl ===================================================================
10905 dnl Orcus
10906 dnl ===================================================================
10907 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10908 if test "$with_system_orcus" != "yes"; then
10909     if test "$SYSTEM_BOOST" = "TRUE"; then
10910         dnl Link with Boost.System
10911         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10912         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10913         dnl in documentation has no effect.
10914         AX_BOOST_SYSTEM
10915     fi
10917 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10918 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10919 AC_SUBST([BOOST_SYSTEM_LIB])
10920 AC_SUBST(SYSTEM_LIBORCUS)
10922 dnl ===================================================================
10923 dnl HarfBuzz
10924 dnl ===================================================================
10926 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10927 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10928 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10930 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10931 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10932 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.6.0])
10934 if test "$COM" = "MSC"; then # override the above
10935     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10936     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10939 if test "$with_system_harfbuzz" = "yes"; then
10940     if test "$with_system_graphite" = "no"; then
10941         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10942     fi
10943     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10944     save_LIBS="$LIBS"
10945     save_CFLAGS="$CFLAGS"
10946     LIBS="$LIBS $HARFBUZZ_LIBS"
10947     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10948     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10949     LIBS="$save_LIBS"
10950     CFLAGS="$save_CFLAGS"
10951 else
10952     if test "$with_system_graphite" = "yes"; then
10953         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10954     fi
10957 if test "$USING_X11" = TRUE; then
10958     AC_PATH_X
10959     AC_PATH_XTRA
10960     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10962     if test -z "$x_includes"; then
10963         x_includes="default_x_includes"
10964     fi
10965     if test -z "$x_libraries"; then
10966         x_libraries="default_x_libraries"
10967     fi
10968     CFLAGS="$CFLAGS $X_CFLAGS"
10969     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10970     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10971 else
10972     x_includes="no_x_includes"
10973     x_libraries="no_x_libraries"
10976 if test "$USING_X11" = TRUE; then
10977     dnl ===================================================================
10978     dnl Check for extension headers
10979     dnl ===================================================================
10980     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10981      [#include <X11/extensions/shape.h>])
10983     # vcl needs ICE and SM
10984     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10985     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10986         [AC_MSG_ERROR(ICE library not found)])
10987     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10988     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10989         [AC_MSG_ERROR(SM library not found)])
10992 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10993     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10994     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10997 dnl ===================================================================
10998 dnl Check for system Xrender
10999 dnl ===================================================================
11000 AC_MSG_CHECKING([whether to use Xrender])
11001 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11002     AC_MSG_RESULT([yes])
11003     PKG_CHECK_MODULES(XRENDER, xrender)
11004     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11005     FilterLibs "${XRENDER_LIBS}"
11006     XRENDER_LIBS="${filteredlibs}"
11007     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11008       [AC_MSG_ERROR(libXrender not found or functional)], [])
11009     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11010       [AC_MSG_ERROR(Xrender not found. install X)], [])
11011 else
11012     AC_MSG_RESULT([no])
11014 AC_SUBST(XRENDER_CFLAGS)
11015 AC_SUBST(XRENDER_LIBS)
11017 dnl ===================================================================
11018 dnl Check for XRandr
11019 dnl ===================================================================
11020 AC_MSG_CHECKING([whether to enable RandR support])
11021 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11022     AC_MSG_RESULT([yes])
11023     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11024     if test "$ENABLE_RANDR" != "TRUE"; then
11025         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11026                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11027         XRANDR_CFLAGS=" "
11028         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11029           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11030         XRANDR_LIBS="-lXrandr "
11031         ENABLE_RANDR="TRUE"
11032     fi
11033     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11034     FilterLibs "${XRANDR_LIBS}"
11035     XRANDR_LIBS="${filteredlibs}"
11036 else
11037     ENABLE_RANDR=""
11038     AC_MSG_RESULT([no])
11040 AC_SUBST(XRANDR_CFLAGS)
11041 AC_SUBST(XRANDR_LIBS)
11042 AC_SUBST(ENABLE_RANDR)
11044 if test -z "$with_webdav"; then
11045     with_webdav=$test_webdav
11048 AC_MSG_CHECKING([for WebDAV support])
11049 case "$with_webdav" in
11051     AC_MSG_RESULT([no])
11052     WITH_WEBDAV=""
11053     ;;
11055     AC_MSG_RESULT([yes])
11056     # curl is already mandatory (almost) and checked elsewhere
11057     if test "$enable_curl" = "no"; then
11058         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11059     fi
11060     WITH_WEBDAV=TRUE
11061     ;;
11062 esac
11063 AC_SUBST(WITH_WEBDAV)
11065 dnl ===================================================================
11066 dnl Check for disabling cve_tests
11067 dnl ===================================================================
11068 AC_MSG_CHECKING([whether to execute CVE tests])
11069 # If not explicitly enabled or disabled, default
11070 if test -z "$enable_cve_tests"; then
11071     case "$OS" in
11072     WNT)
11073         # Default cves off for Windows with its wild and wonderful
11074         # variety of AV software kicking in and panicking
11075         enable_cve_tests=no
11076         ;;
11077     *)
11078         # otherwise yes
11079         enable_cve_tests=yes
11080         ;;
11081     esac
11083 if test "$enable_cve_tests" = "no"; then
11084     AC_MSG_RESULT([no])
11085     DISABLE_CVE_TESTS=TRUE
11086     AC_SUBST(DISABLE_CVE_TESTS)
11087 else
11088     AC_MSG_RESULT([yes])
11091 dnl ===================================================================
11092 dnl Check for system openssl
11093 dnl ===================================================================
11094 ENABLE_OPENSSL=
11095 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11096 if test "$enable_openssl" = "yes"; then
11097     AC_MSG_RESULT([no])
11098     ENABLE_OPENSSL=TRUE
11099     if test "$_os" = Darwin ; then
11100         # OpenSSL is deprecated when building for 10.7 or later.
11101         #
11102         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11103         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11105         with_system_openssl=no
11106         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11107     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11108             && test "$with_system_openssl" != "no"; then
11109         with_system_openssl=yes
11110         SYSTEM_OPENSSL=TRUE
11111         OPENSSL_CFLAGS=
11112         OPENSSL_LIBS="-lssl -lcrypto"
11113     else
11114         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11115     fi
11116     if test "$with_system_openssl" = "yes"; then
11117         AC_MSG_CHECKING([whether openssl supports SHA512])
11118         AC_LANG_PUSH([C])
11119         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11120             SHA512_CTX context;
11121 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11122         AC_LANG_POP(C)
11123     fi
11124 else
11125     AC_MSG_RESULT([yes])
11127     # warn that although OpenSSL is disabled, system libraries may depend on it
11128     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11129     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11132 AC_SUBST([ENABLE_OPENSSL])
11134 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11135     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11136         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11137         enable_cipher_openssl_backend=no
11138     else
11139         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11140     fi
11142 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11143 ENABLE_CIPHER_OPENSSL_BACKEND=
11144 if test "$enable_cipher_openssl_backend" = yes; then
11145     AC_MSG_RESULT([yes])
11146     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11147 else
11148     AC_MSG_RESULT([no])
11150 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11152 dnl ===================================================================
11153 dnl Select the crypto backends used by LO
11154 dnl ===================================================================
11156 if test "$build_crypto" = yes; then
11157     if test "$OS" = WNT; then
11158         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11159         AC_DEFINE([USE_CRYPTO_MSCAPI])
11160     elif test "$ENABLE_NSS" = TRUE; then
11161         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11162         AC_DEFINE([USE_CRYPTO_NSS])
11163     fi
11166 dnl ===================================================================
11167 dnl Check for system redland
11168 dnl ===================================================================
11169 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11170 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11171 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11172 if test "$with_system_redland" = "yes"; then
11173     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11174             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11175 else
11176     RAPTOR_MAJOR="0"
11177     RASQAL_MAJOR="3"
11178     REDLAND_MAJOR="0"
11180 AC_SUBST(RAPTOR_MAJOR)
11181 AC_SUBST(RASQAL_MAJOR)
11182 AC_SUBST(REDLAND_MAJOR)
11184 dnl ===================================================================
11185 dnl Check for system hunspell
11186 dnl ===================================================================
11187 AC_MSG_CHECKING([which libhunspell to use])
11188 if test "$with_system_hunspell" = "yes"; then
11189     AC_MSG_RESULT([external])
11190     SYSTEM_HUNSPELL=TRUE
11191     AC_LANG_PUSH([C++])
11192     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11193     if test "$HUNSPELL_PC" != "TRUE"; then
11194         AC_CHECK_HEADER(hunspell.hxx, [],
11195             [
11196             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11197             [AC_MSG_ERROR(hunspell headers not found.)], [])
11198             ], [])
11199         AC_CHECK_LIB([hunspell], [main], [:],
11200            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11201         HUNSPELL_LIBS=-lhunspell
11202     fi
11203     AC_LANG_POP([C++])
11204     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11205     FilterLibs "${HUNSPELL_LIBS}"
11206     HUNSPELL_LIBS="${filteredlibs}"
11207 else
11208     AC_MSG_RESULT([internal])
11209     SYSTEM_HUNSPELL=
11210     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11211     if test "$COM" = "MSC"; then
11212         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11213     else
11214         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11215     fi
11216     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11218 AC_SUBST(SYSTEM_HUNSPELL)
11219 AC_SUBST(HUNSPELL_CFLAGS)
11220 AC_SUBST(HUNSPELL_LIBS)
11222 dnl ===================================================================
11223 dnl Check for system zxing
11224 dnl ===================================================================
11225 AC_MSG_CHECKING([whether to use zxing])
11226 if test "$enable_zxing" = "no"; then
11227     AC_MSG_RESULT([no])
11228     ENABLE_ZXING=
11229     SYSTEM_ZXING=
11230 else
11231     AC_MSG_RESULT([yes])
11232     ENABLE_ZXING=TRUE
11233     AC_MSG_CHECKING([which libzxing to use])
11234     if test "$with_system_zxing" = "yes"; then
11235         AC_MSG_RESULT([external])
11236         SYSTEM_ZXING=TRUE
11237         ZXING_CFLAGS=
11238         AC_LANG_PUSH([C++])
11239         save_CXXFLAGS=$CXXFLAGS
11240         save_IFS=$IFS
11241         IFS=$P_SEP
11242         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11243             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11244             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11245             dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11246             dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11247             dnl unsetting IFS."):
11248             IFS=$save_IFS
11249             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11250             dnl ignore them here:
11251             if test -z "$i"; then
11252                 continue
11253             fi
11254             dnl TODO: White space in $i would cause problems:
11255             CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11256             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11257                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11258         done
11259         CXXFLAGS=$save_CXXFLAGS
11260         if test -z "$ZXING_CFLAGS"; then
11261             AC_MSG_ERROR(zxing headers not found.)
11262         fi
11263         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11264             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11265             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11266         AC_LANG_POP([C++])
11267         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11268         FilterLibs "${ZXING_LIBS}"
11269         ZXING_LIBS="${filteredlibs}"
11270     else
11271         AC_MSG_RESULT([internal])
11272         SYSTEM_ZXING=
11273         BUILD_TYPE="$BUILD_TYPE ZXING"
11274     fi
11275     if test "$ENABLE_ZXING" = TRUE; then
11276         AC_DEFINE(ENABLE_ZXING)
11277     fi
11279 AC_SUBST(SYSTEM_ZXING)
11280 AC_SUBST(ENABLE_ZXING)
11281 AC_SUBST(ZXING_CFLAGS)
11282 AC_SUBST(ZXING_LIBS)
11284 dnl ===================================================================
11285 dnl Check for system box2d
11286 dnl ===================================================================
11287 AC_MSG_CHECKING([which box2d to use])
11288 if test "$with_system_box2d" = "yes"; then
11289     AC_MSG_RESULT([external])
11290     SYSTEM_BOX2D=TRUE
11291     AC_LANG_PUSH([C++])
11292     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11293         [BOX2D_H_FOUND='FALSE'])
11294     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11295         _BOX2D_LIB=box2d
11296         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11297     else
11298         # fail this. there's no other alternative to check when we are here.
11299         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11300             [AC_MSG_ERROR(box2d headers not found.)])
11301         _BOX2D_LIB=Box2D
11302         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11303     fi
11304     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11305         [ AC_MSG_ERROR(box2d library not found.) ], [])
11306     BOX2D_LIBS=-l$_BOX2D_LIB
11307     AC_LANG_POP([C++])
11308     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11309     FilterLibs "${BOX2D_LIBS}"
11310     BOX2D_LIBS="${filteredlibs}"
11311 else
11312     AC_MSG_RESULT([internal])
11313     SYSTEM_BOX2D=
11314     BUILD_TYPE="$BUILD_TYPE BOX2D"
11316 AC_SUBST(SYSTEM_BOX2D)
11317 AC_SUBST(BOX2D_CFLAGS)
11318 AC_SUBST(BOX2D_LIBS)
11320 dnl ===================================================================
11321 dnl Checking for altlinuxhyph
11322 dnl ===================================================================
11323 AC_MSG_CHECKING([which altlinuxhyph to use])
11324 if test "$with_system_altlinuxhyph" = "yes"; then
11325     AC_MSG_RESULT([external])
11326     SYSTEM_HYPH=TRUE
11327     AC_CHECK_HEADER(hyphen.h, [],
11328        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11329     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11330        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11331        [#include <hyphen.h>])
11332     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11333         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11334     if test -z "$HYPHEN_LIB"; then
11335         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11336            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11337     fi
11338     if test -z "$HYPHEN_LIB"; then
11339         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11340            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11341     fi
11342 else
11343     AC_MSG_RESULT([internal])
11344     SYSTEM_HYPH=
11345     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11346     if test "$COM" = "MSC"; then
11347         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11348     else
11349         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11350     fi
11352 AC_SUBST(SYSTEM_HYPH)
11353 AC_SUBST(HYPHEN_LIB)
11355 dnl ===================================================================
11356 dnl Checking for mythes
11357 dnl ===================================================================
11358 AC_MSG_CHECKING([which mythes to use])
11359 if test "$with_system_mythes" = "yes"; then
11360     AC_MSG_RESULT([external])
11361     SYSTEM_MYTHES=TRUE
11362     AC_LANG_PUSH([C++])
11363     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11364     if test "$MYTHES_PKGCONFIG" = "no"; then
11365         AC_CHECK_HEADER(mythes.hxx, [],
11366             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11367         AC_CHECK_LIB([mythes-1.2], [main], [:],
11368             [ MYTHES_FOUND=no], [])
11369     if test "$MYTHES_FOUND" = "no"; then
11370         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11371                 [ MYTHES_FOUND=no], [])
11372     fi
11373     if test "$MYTHES_FOUND" = "no"; then
11374         AC_MSG_ERROR([mythes library not found!.])
11375     fi
11376     fi
11377     AC_LANG_POP([C++])
11378     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11379     FilterLibs "${MYTHES_LIBS}"
11380     MYTHES_LIBS="${filteredlibs}"
11381 else
11382     AC_MSG_RESULT([internal])
11383     SYSTEM_MYTHES=
11384     BUILD_TYPE="$BUILD_TYPE MYTHES"
11385     if test "$COM" = "MSC"; then
11386         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11387     else
11388         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11389     fi
11391 AC_SUBST(SYSTEM_MYTHES)
11392 AC_SUBST(MYTHES_CFLAGS)
11393 AC_SUBST(MYTHES_LIBS)
11395 dnl ===================================================================
11396 dnl How should we build the linear programming solver ?
11397 dnl ===================================================================
11399 ENABLE_COINMP=
11400 AC_MSG_CHECKING([whether to build with CoinMP])
11401 if test "$enable_coinmp" != "no"; then
11402     ENABLE_COINMP=TRUE
11403     AC_MSG_RESULT([yes])
11404     if test "$with_system_coinmp" = "yes"; then
11405         SYSTEM_COINMP=TRUE
11406         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11407         FilterLibs "${COINMP_LIBS}"
11408         COINMP_LIBS="${filteredlibs}"
11409     else
11410         BUILD_TYPE="$BUILD_TYPE COINMP"
11411     fi
11412 else
11413     AC_MSG_RESULT([no])
11415 AC_SUBST(ENABLE_COINMP)
11416 AC_SUBST(SYSTEM_COINMP)
11417 AC_SUBST(COINMP_CFLAGS)
11418 AC_SUBST(COINMP_LIBS)
11420 ENABLE_LPSOLVE=
11421 AC_MSG_CHECKING([whether to build with lpsolve])
11422 if test "$enable_lpsolve" != "no"; then
11423     ENABLE_LPSOLVE=TRUE
11424     AC_MSG_RESULT([yes])
11425 else
11426     AC_MSG_RESULT([no])
11428 AC_SUBST(ENABLE_LPSOLVE)
11430 if test "$ENABLE_LPSOLVE" = TRUE; then
11431     AC_MSG_CHECKING([which lpsolve to use])
11432     if test "$with_system_lpsolve" = "yes"; then
11433         AC_MSG_RESULT([external])
11434         SYSTEM_LPSOLVE=TRUE
11435         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11436            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11437         save_LIBS=$LIBS
11438         # some systems need this. Like Ubuntu...
11439         AC_CHECK_LIB(m, floor)
11440         AC_CHECK_LIB(dl, dlopen)
11441         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11442             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11443         LIBS=$save_LIBS
11444     else
11445         AC_MSG_RESULT([internal])
11446         SYSTEM_LPSOLVE=
11447         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11448     fi
11450 AC_SUBST(SYSTEM_LPSOLVE)
11452 dnl ===================================================================
11453 dnl Checking for libexttextcat
11454 dnl ===================================================================
11455 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11456 if test "$with_system_libexttextcat" = "yes"; then
11457     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11459 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11461 dnl ===================================================================
11462 dnl Checking for libnumbertext
11463 dnl ===================================================================
11464 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11465 if test "$with_system_libnumbertext" = "yes"; then
11466     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11467     SYSTEM_LIBNUMBERTEXT=YES
11468 else
11469     SYSTEM_LIBNUMBERTEXT=
11471 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11472 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11474 dnl ***************************************
11475 dnl testing libc version for Linux...
11476 dnl ***************************************
11477 if test "$_os" = "Linux"; then
11478     AC_MSG_CHECKING([whether the libc is recent enough])
11479     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11480     #include <features.h>
11481     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11482     #error glibc >= 2.1 is required
11483     #endif
11484     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11487 dnl =========================================
11488 dnl Check for uuidgen
11489 dnl =========================================
11490 if test "$_os" = "WINNT"; then
11491     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11492     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11493     UUIDGEN=uuidgen.exe
11494     AC_SUBST(UUIDGEN)
11495 else
11496     AC_PATH_PROG([UUIDGEN], [uuidgen])
11497     if test -z "$UUIDGEN"; then
11498         AC_MSG_WARN([uuid is needed for building installation sets])
11499     fi
11502 dnl ***************************************
11503 dnl Checking for bison and flex
11504 dnl ***************************************
11505 AC_PATH_PROG(BISON, bison)
11506 if test -z "$BISON"; then
11507     AC_MSG_ERROR([no bison found in \$PATH, install it])
11508 else
11509     AC_MSG_CHECKING([the bison version])
11510     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11511     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11512     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11513     dnl cause
11514     dnl
11515     dnl   idlc/source/parser.y:222:15: error: externally available entity 'YYSTYPE' is not previously declared in an included file (if it is only used in this translation unit, put it in an unnamed namespace; otherwise, provide a declaration of it in an included file) [loplugin:external]
11516     dnl   typedef union YYSTYPE
11517     dnl           ~~~~~~^~~~~~~
11518     dnl
11519     dnl while at least 3.4.1 is know to be good:
11520     if test "$COMPILER_PLUGINS" = TRUE; then
11521         if test "$_bison_longver" -lt 2004; then
11522             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11523         fi
11524     else
11525         if test "$_bison_longver" -lt 2000; then
11526             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11527         fi
11528     fi
11530 AC_SUBST([BISON])
11532 AC_PATH_PROG(FLEX, flex)
11533 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11534     FLEX=`cygpath -m $FLEX`
11536 if test -z "$FLEX"; then
11537     AC_MSG_ERROR([no flex found in \$PATH, install it])
11538 else
11539     AC_MSG_CHECKING([the flex version])
11540     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11541     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11542         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11543     fi
11545 AC_SUBST([FLEX])
11547 AC_PATH_PROG(DIFF, diff)
11548 if test -z "$DIFF"; then
11549     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11551 AC_SUBST([DIFF])
11553 AC_PATH_PROG(UNIQ, uniq)
11554 if test -z "$UNIQ"; then
11555     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11557 AC_SUBST([UNIQ])
11559 dnl ***************************************
11560 dnl Checking for patch
11561 dnl ***************************************
11562 AC_PATH_PROG(PATCH, patch)
11563 if test -z "$PATCH"; then
11564     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11567 dnl On Solaris or macOS, check if --with-gnu-patch was used
11568 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11569     if test -z "$with_gnu_patch"; then
11570         GNUPATCH=$PATCH
11571     else
11572         if test -x "$with_gnu_patch"; then
11573             GNUPATCH=$with_gnu_patch
11574         else
11575             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11576         fi
11577     fi
11579     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11580     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11581         AC_MSG_RESULT([yes])
11582     else
11583         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11584     fi
11585 else
11586     GNUPATCH=$PATCH
11589 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11590     GNUPATCH=`cygpath -m $GNUPATCH`
11593 dnl We also need to check for --with-gnu-cp
11595 if test -z "$with_gnu_cp"; then
11596     # check the place where the good stuff is hidden on Solaris...
11597     if test -x /usr/gnu/bin/cp; then
11598         GNUCP=/usr/gnu/bin/cp
11599     else
11600         AC_PATH_PROGS(GNUCP, gnucp cp)
11601     fi
11602     if test -z $GNUCP; then
11603         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11604     fi
11605 else
11606     if test -x "$with_gnu_cp"; then
11607         GNUCP=$with_gnu_cp
11608     else
11609         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11610     fi
11613 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11614     GNUCP=`cygpath -m $GNUCP`
11617 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11618 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11619     AC_MSG_RESULT([yes])
11620 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11621     AC_MSG_RESULT([yes])
11622 else
11623     case "$build_os" in
11624     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11625         x_GNUCP=[\#]
11626         GNUCP=''
11627         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11628         ;;
11629     *)
11630         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11631         ;;
11632     esac
11635 AC_SUBST(GNUPATCH)
11636 AC_SUBST(GNUCP)
11637 AC_SUBST(x_GNUCP)
11639 dnl ***************************************
11640 dnl testing assembler path
11641 dnl ***************************************
11642 ML_EXE=""
11643 if test "$_os" = "WINNT"; then
11644     case "$WIN_HOST_ARCH" in
11645     x86) assembler=ml.exe ;;
11646     x64) assembler=ml64.exe ;;
11647     arm64) assembler=armasm64.exe ;;
11648     esac
11650     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11651     if test -f "$MSVC_HOST_PATH/$assembler"; then
11652         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11653         AC_MSG_RESULT([$ML_EXE])
11654     else
11655         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11656     fi
11659 AC_SUBST(ML_EXE)
11661 dnl ===================================================================
11662 dnl We need zip and unzip
11663 dnl ===================================================================
11664 AC_PATH_PROG(ZIP, zip)
11665 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11666 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11667     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],,)
11670 AC_PATH_PROG(UNZIP, unzip)
11671 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11673 dnl ===================================================================
11674 dnl Zip must be a specific type for different build types.
11675 dnl ===================================================================
11676 if test $build_os = cygwin; then
11677     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11678         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11679     fi
11682 dnl ===================================================================
11683 dnl We need touch with -h option support.
11684 dnl ===================================================================
11685 AC_PATH_PROG(TOUCH, touch)
11686 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11687 touch "$WARNINGS_FILE"
11688 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11689     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],,)
11692 dnl ===================================================================
11693 dnl Check for system epoxy
11694 dnl ===================================================================
11695 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11696 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11698 dnl ===================================================================
11699 dnl Set vcl option: coordinate device in double or sal_Int32
11700 dnl ===================================================================
11702 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11703 if test "$enable_float_device_pixel" = yes; then
11704     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11705     AC_MSG_RESULT([double])
11706 else
11707     AC_MSG_RESULT([sal_Int32])
11710 dnl ===================================================================
11711 dnl Show which vclplugs will be built.
11712 dnl ===================================================================
11713 R=""
11715 libo_ENABLE_VCLPLUG([gen])
11716 libo_ENABLE_VCLPLUG([gtk3])
11717 libo_ENABLE_VCLPLUG([gtk3_kde5])
11718 libo_ENABLE_VCLPLUG([gtk4])
11719 libo_ENABLE_VCLPLUG([kf5])
11720 libo_ENABLE_VCLPLUG([qt5])
11721 libo_ENABLE_VCLPLUG([qt6])
11723 if test "$_os" = "WINNT"; then
11724     R="$R win"
11725 elif test "$_os" = "Darwin"; then
11726     R="$R osx"
11727 elif test "$_os" = "iOS"; then
11728     R="ios"
11729 elif test "$_os" = Android; then
11730     R="android"
11733 build_vcl_plugins="$R"
11734 if test -z "$build_vcl_plugins"; then
11735     build_vcl_plugins=" none"
11737 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11738 VCL_PLUGIN_INFO=$R
11739 AC_SUBST([VCL_PLUGIN_INFO])
11741 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11742     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11745 dnl ===================================================================
11746 dnl Check for GTK libraries
11747 dnl ===================================================================
11749 GTK3_CFLAGS=""
11750 GTK3_LIBS=""
11751 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11752     if test "$with_system_cairo" = no; then
11753         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11754     fi
11755     : ${with_system_cairo:=yes}
11756     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)
11757     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11758     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11759     FilterLibs "${GTK3_LIBS}"
11760     GTK3_LIBS="${filteredlibs}"
11762     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11763     if test "$with_system_epoxy" != "yes"; then
11764         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11765         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11766                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11767     fi
11769 AC_SUBST(GTK3_LIBS)
11770 AC_SUBST(GTK3_CFLAGS)
11772 GTK4_CFLAGS=""
11773 GTK4_LIBS=""
11774 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11775     if test "$with_system_cairo" = no; then
11776         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11777     fi
11778     : ${with_system_cairo:=yes}
11779     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11780     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11781     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11782     FilterLibs "${GTK4_LIBS}"
11783     GTK4_LIBS="${filteredlibs}"
11785     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11786     if test "$with_system_epoxy" != "yes"; then
11787         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11788         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11789                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11790     fi
11792 AC_SUBST(GTK4_LIBS)
11793 AC_SUBST(GTK4_CFLAGS)
11795 if test "$enable_introspection" = yes; then
11796     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11797         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11798     else
11799         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11800     fi
11803 dnl ===================================================================
11804 dnl check for dbus support
11805 dnl ===================================================================
11806 ENABLE_DBUS=""
11807 DBUS_CFLAGS=""
11808 DBUS_LIBS=""
11809 DBUS_GLIB_CFLAGS=""
11810 DBUS_GLIB_LIBS=""
11811 DBUS_HAVE_GLIB=""
11813 if test "$enable_dbus" = "no"; then
11814     test_dbus=no
11817 AC_MSG_CHECKING([whether to enable DBUS support])
11818 if test "$test_dbus" = "yes"; then
11819     ENABLE_DBUS="TRUE"
11820     AC_MSG_RESULT([yes])
11821     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11822     AC_DEFINE(ENABLE_DBUS)
11823     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11824     FilterLibs "${DBUS_LIBS}"
11825     DBUS_LIBS="${filteredlibs}"
11827     # Glib is needed for BluetoothServer
11828     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11829     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11830         [
11831             DBUS_HAVE_GLIB="TRUE"
11832             AC_DEFINE(DBUS_HAVE_GLIB,1)
11833         ],
11834         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11835     )
11836 else
11837     AC_MSG_RESULT([no])
11840 AC_SUBST(ENABLE_DBUS)
11841 AC_SUBST(DBUS_CFLAGS)
11842 AC_SUBST(DBUS_LIBS)
11843 AC_SUBST(DBUS_GLIB_CFLAGS)
11844 AC_SUBST(DBUS_GLIB_LIBS)
11845 AC_SUBST(DBUS_HAVE_GLIB)
11847 AC_MSG_CHECKING([whether to enable Impress remote control])
11848 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11849     AC_MSG_RESULT([yes])
11850     ENABLE_SDREMOTE=TRUE
11851     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11852         <true/>"
11853     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11855     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11856         # The Bluetooth code doesn't compile with macOS SDK 10.15
11857         if test "$enable_sdremote_bluetooth" = yes; then
11858             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11859         fi
11860         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11861         enable_sdremote_bluetooth=no
11862     fi
11863     # If not explicitly enabled or disabled, default
11864     if test -z "$enable_sdremote_bluetooth"; then
11865         case "$OS" in
11866         LINUX|MACOSX|WNT)
11867             # Default to yes for these
11868             enable_sdremote_bluetooth=yes
11869             ;;
11870         *)
11871             # otherwise no
11872             enable_sdremote_bluetooth=no
11873             ;;
11874         esac
11875     fi
11876     # $enable_sdremote_bluetooth is guaranteed non-empty now
11878     if test "$enable_sdremote_bluetooth" != "no"; then
11879         if test "$OS" = "LINUX"; then
11880             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11881                 AC_MSG_RESULT([yes])
11882                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11883                 dnl ===================================================================
11884                 dnl Check for system bluez
11885                 dnl ===================================================================
11886                 AC_MSG_CHECKING([which Bluetooth header to use])
11887                 if test "$with_system_bluez" = "yes"; then
11888                     AC_MSG_RESULT([external])
11889                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11890                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11891                     SYSTEM_BLUEZ=TRUE
11892                 else
11893                     AC_MSG_RESULT([internal])
11894                     SYSTEM_BLUEZ=
11895                 fi
11896             else
11897                 AC_MSG_RESULT([no, dbus disabled])
11898                 ENABLE_SDREMOTE_BLUETOOTH=
11899                 SYSTEM_BLUEZ=
11900             fi
11901         else
11902             AC_MSG_RESULT([yes])
11903             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11904             SYSTEM_BLUEZ=
11905             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11906         <key>com.apple.security.device.bluetooth</key>
11907         <true/>"
11908         fi
11909     else
11910         AC_MSG_RESULT([no])
11911         ENABLE_SDREMOTE_BLUETOOTH=
11912         SYSTEM_BLUEZ=
11913     fi
11914 else
11915     ENABLE_SDREMOTE=
11916     SYSTEM_BLUEZ=
11917     AC_MSG_RESULT([no])
11919 AC_SUBST(ENABLE_SDREMOTE)
11920 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11921 AC_SUBST(SDREMOTE_ENTITLEMENT)
11922 AC_SUBST(SYSTEM_BLUEZ)
11924 dnl ===================================================================
11925 dnl Check whether to enable GIO support
11926 dnl ===================================================================
11927 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11928     AC_MSG_CHECKING([whether to enable GIO support])
11929     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11930         dnl Need at least 2.26 for the dbus support.
11931         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11932                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11933         if test "$ENABLE_GIO" = "TRUE"; then
11934             AC_DEFINE(ENABLE_GIO)
11935             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11936             FilterLibs "${GIO_LIBS}"
11937             GIO_LIBS="${filteredlibs}"
11938         fi
11939     else
11940         AC_MSG_RESULT([no])
11941     fi
11943 AC_SUBST(ENABLE_GIO)
11944 AC_SUBST(GIO_CFLAGS)
11945 AC_SUBST(GIO_LIBS)
11948 dnl ===================================================================
11950 SPLIT_APP_MODULES=""
11951 if test "$enable_split_app_modules" = "yes"; then
11952     SPLIT_APP_MODULES="TRUE"
11954 AC_SUBST(SPLIT_APP_MODULES)
11956 SPLIT_OPT_FEATURES=""
11957 if test "$enable_split_opt_features" = "yes"; then
11958     SPLIT_OPT_FEATURES="TRUE"
11960 AC_SUBST(SPLIT_OPT_FEATURES)
11962 dnl ===================================================================
11963 dnl Check whether the GStreamer libraries are available.
11964 dnl ===================================================================
11966 ENABLE_GSTREAMER_1_0=""
11968 if test "$test_gstreamer_1_0" = yes; then
11970     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11971     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11972         ENABLE_GSTREAMER_1_0="TRUE"
11973         AC_MSG_RESULT([yes])
11974         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11975         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11976         FilterLibs "${GSTREAMER_1_0_LIBS}"
11977         GSTREAMER_1_0_LIBS="${filteredlibs}"
11978         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11979     else
11980         AC_MSG_RESULT([no])
11981     fi
11983 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11984 AC_SUBST(GSTREAMER_1_0_LIBS)
11985 AC_SUBST(ENABLE_GSTREAMER_1_0)
11987 ENABLE_OPENGL_TRANSITIONS=
11988 ENABLE_OPENGL_CANVAS=
11989 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11990    : # disable
11991 elif test "$_os" = "Darwin"; then
11992     # We use frameworks on macOS, no need for detail checks
11993     ENABLE_OPENGL_TRANSITIONS=TRUE
11994     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11995     ENABLE_OPENGL_CANVAS=TRUE
11996 elif test $_os = WINNT; then
11997     ENABLE_OPENGL_TRANSITIONS=TRUE
11998     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11999     ENABLE_OPENGL_CANVAS=TRUE
12000 else
12001     if test "$USING_X11" = TRUE; then
12002         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12003         ENABLE_OPENGL_TRANSITIONS=TRUE
12004         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12005         ENABLE_OPENGL_CANVAS=TRUE
12006     fi
12009 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12010 AC_SUBST(ENABLE_OPENGL_CANVAS)
12012 dnl =================================================
12013 dnl Check whether to build with OpenCL support.
12014 dnl =================================================
12016 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12017     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12018     # platform (optional at run-time, used through clew).
12019     BUILD_TYPE="$BUILD_TYPE OPENCL"
12020     AC_DEFINE(HAVE_FEATURE_OPENCL)
12023 dnl =================================================
12024 dnl Check whether to build with dconf support.
12025 dnl =================================================
12027 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12028     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12029         if test "$enable_dconf" = yes; then
12030             AC_MSG_ERROR([dconf not found])
12031         else
12032             enable_dconf=no
12033         fi])
12035 AC_MSG_CHECKING([whether to enable dconf])
12036 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12037     DCONF_CFLAGS=
12038     DCONF_LIBS=
12039     ENABLE_DCONF=
12040     AC_MSG_RESULT([no])
12041 else
12042     ENABLE_DCONF=TRUE
12043     AC_DEFINE(ENABLE_DCONF)
12044     AC_MSG_RESULT([yes])
12046 AC_SUBST([DCONF_CFLAGS])
12047 AC_SUBST([DCONF_LIBS])
12048 AC_SUBST([ENABLE_DCONF])
12050 # pdf import?
12051 AC_MSG_CHECKING([whether to build the PDF import feature])
12052 ENABLE_PDFIMPORT=
12053 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12054     AC_MSG_RESULT([yes])
12055     ENABLE_PDFIMPORT=TRUE
12056     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12057 else
12058     AC_MSG_RESULT([no])
12061 # Pdfium?
12062 AC_MSG_CHECKING([whether to build PDFium])
12063 ENABLE_PDFIUM=
12064 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12065     AC_MSG_RESULT([yes])
12066     ENABLE_PDFIUM=TRUE
12067     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12068 else
12069     AC_MSG_RESULT([no])
12071 AC_SUBST(ENABLE_PDFIUM)
12073 if test "$ENABLE_PDFIUM" = "TRUE"; then
12074     AC_MSG_CHECKING([which OpenJPEG library to use])
12075     if test "$with_system_openjpeg" = "yes"; then
12076         SYSTEM_OPENJPEG2=TRUE
12077         AC_MSG_RESULT([external])
12078         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12079         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12080         FilterLibs "${OPENJPEG2_LIBS}"
12081         OPENJPEG2_LIBS="${filteredlibs}"
12082     else
12083         SYSTEM_OPENJPEG2=FALSE
12084         AC_MSG_RESULT([internal])
12085     fi
12087     AC_MSG_CHECKING([which Abseil library to use])
12088     if test "$with_system_abseil" = "yes"; then
12089         AC_MSG_RESULT([external])
12090         SYSTEM_ABSEIL=TRUE
12091         AC_LANG_PUSH([C++])
12092         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12093                         [AC_MSG_ERROR(abseil headers not found.)], [])
12094         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12095                         [AC_MSG_ERROR(abseil headers not found.)], [])
12096         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12097                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12098         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12099                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12100         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12101         AC_LANG_POP([C++])
12102         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12103         FilterLibs "${ABSEIL_LIBS}"
12104         ABSEIL_LIBS="${filteredlibs}"
12105     else
12106         AC_MSG_RESULT([internal])
12107     fi
12109 AC_SUBST(SYSTEM_OPENJPEG2)
12110 AC_SUBST(SYSTEM_ABSEIL)
12111 AC_SUBST(ABSEIL_CFLAGS)
12112 AC_SUBST(ABSEIL_LIBS)
12114 dnl ===================================================================
12115 dnl Check for poppler
12116 dnl ===================================================================
12117 ENABLE_POPPLER=
12118 AC_MSG_CHECKING([whether to build Poppler])
12119 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12120     AC_MSG_RESULT([yes])
12121     ENABLE_POPPLER=TRUE
12122     AC_DEFINE(HAVE_FEATURE_POPPLER)
12123 else
12124     AC_MSG_RESULT([no])
12126 AC_SUBST(ENABLE_POPPLER)
12128 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12129     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12132 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12133     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12136 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12137     dnl ===================================================================
12138     dnl Check for system poppler
12139     dnl ===================================================================
12140     AC_MSG_CHECKING([which PDF import poppler to use])
12141     if test "$with_system_poppler" = "yes"; then
12142         AC_MSG_RESULT([external])
12143         SYSTEM_POPPLER=TRUE
12144         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12145         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12146         FilterLibs "${POPPLER_LIBS}"
12147         POPPLER_LIBS="${filteredlibs}"
12148     else
12149         AC_MSG_RESULT([internal])
12150         SYSTEM_POPPLER=
12151         BUILD_TYPE="$BUILD_TYPE POPPLER"
12152     fi
12153     AC_DEFINE([ENABLE_PDFIMPORT],1)
12155 AC_SUBST(ENABLE_PDFIMPORT)
12156 AC_SUBST(SYSTEM_POPPLER)
12157 AC_SUBST(POPPLER_CFLAGS)
12158 AC_SUBST(POPPLER_LIBS)
12160 # Skia?
12161 ENABLE_SKIA=
12162 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12163     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12164     if test "$SYSTEM_FREETYPE" = TRUE; then
12165         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12166             [skia_freetype_ok=yes],
12167             [skia_freetype_ok=no])
12168     else # internal is ok
12169         skia_freetype_ok=yes
12170     fi
12171     AC_MSG_CHECKING([whether to build Skia])
12172     if test "$skia_freetype_ok" = "yes"; then
12173         if test "$enable_skia" = "debug"; then
12174             AC_MSG_RESULT([yes (debug)])
12175             ENABLE_SKIA_DEBUG=TRUE
12176         else
12177             AC_MSG_RESULT([yes])
12178             ENABLE_SKIA_DEBUG=
12179         fi
12180         ENABLE_SKIA=TRUE
12181         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12182                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12183         fi
12185         AC_DEFINE(HAVE_FEATURE_SKIA)
12186         BUILD_TYPE="$BUILD_TYPE SKIA"
12188         if test "$OS" = "MACOSX"; then
12189             AC_DEFINE(SK_SUPPORT_GPU,1)
12190             AC_DEFINE(SK_METAL,1)
12191             SKIA_GPU=METAL
12192             AC_SUBST(SKIA_GPU)
12193         else
12194             AC_DEFINE(SK_SUPPORT_GPU,1)
12195             AC_DEFINE(SK_VULKAN,1)
12196             SKIA_GPU=VULKAN
12197             AC_SUBST(SKIA_GPU)
12198         fi
12200         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12201             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12202             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12203         fi
12204     else
12205         AC_MSG_RESULT([no (freetype too old)])
12206         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12207     fi
12209 else
12210     AC_MSG_CHECKING([whether to build Skia])
12211     AC_MSG_RESULT([no])
12213 AC_SUBST(ENABLE_SKIA)
12214 AC_SUBST(ENABLE_SKIA_DEBUG)
12216 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12217 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12218 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12219 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12220 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12221 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12222 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12223 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12224 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12225 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12226 HAVE_LO_CLANG_DLLEXPORTINLINES=
12228 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12229     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12230         AC_MSG_CHECKING([for Clang])
12231         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12232     else
12233         if test "$_os" = "WINNT"; then
12234             AC_MSG_CHECKING([for clang-cl])
12235             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12236                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12237             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12238                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12239             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12240                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12241             fi
12242             if test -n "$LO_CLANG_CC"; then
12243                 dnl explicitly set -m32/-m64
12244                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12245                 LO_CLANG_CXX="$LO_CLANG_CC"
12246                 AC_MSG_RESULT([$LO_CLANG_CC])
12247             else
12248                 AC_MSG_RESULT([no])
12249             fi
12251             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12252             echo "#include <stdlib.h>" > conftest.c
12253             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12254                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12255             rm -f conftest.c conftest.obj
12256             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12257                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12258             else
12259                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12260             fi
12261         else
12262             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12263             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12264         fi
12265     fi
12266     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12267         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12268         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12269         if test "$clang2_ver" -lt 50002; then
12270             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12271             LO_CLANG_CC=
12272             LO_CLANG_CXX=
12273         fi
12274     fi
12275     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12276         save_CXX="$CXX"
12277         CXX="$LO_CLANG_CXX"
12278         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12279         AC_LANG_PUSH([C++])
12280         save_CXXFLAGS=$CXXFLAGS
12281         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12282         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12283                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12284                 AC_MSG_RESULT([yes])
12285             ], [AC_MSG_RESULT([no])])
12286         CXXFLAGS=$save_CXXFLAGS
12287         AC_LANG_POP([C++])
12288         CXX="$save_CXX"
12289         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12290             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.])
12291         fi
12292     fi
12293     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12294         # Skia is the default on Windows and Mac, so hard-require Clang.
12295         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12296         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12297             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12298         else
12299             AC_MSG_WARN([Clang compiler not found.])
12300         fi
12301     else
12303         save_CXX="$CXX"
12304         CXX="$LO_CLANG_CXX"
12305         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12306         flag_sse2=-msse2
12307         flag_ssse3=-mssse3
12308         flag_sse41=-msse4.1
12309         flag_sse42=-msse4.2
12310         flag_avx=-mavx
12311         flag_avx2=-mavx2
12312         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12313         flag_avx512f=-mavx512f
12314         flag_f16c=-mf16c
12315         flag_fma=-mfma
12317         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12318         AC_LANG_PUSH([C++])
12319         save_CXXFLAGS=$CXXFLAGS
12320         CXXFLAGS="$CXXFLAGS $flag_sse2"
12321         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12322             #include <emmintrin.h>
12323             int main () {
12324                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12325                 c = _mm_xor_si128 (a, b);
12326                 return 0;
12327             }
12328             ])],
12329             [can_compile_sse2=yes],
12330             [can_compile_sse2=no])
12331         AC_LANG_POP([C++])
12332         CXXFLAGS=$save_CXXFLAGS
12333         AC_MSG_RESULT([${can_compile_sse2}])
12334         if test "${can_compile_sse2}" = "yes" ; then
12335             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12336         fi
12338         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12339         AC_LANG_PUSH([C++])
12340         save_CXXFLAGS=$CXXFLAGS
12341         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12342         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12343             #include <tmmintrin.h>
12344             int main () {
12345                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12346                 c = _mm_maddubs_epi16 (a, b);
12347                 return 0;
12348             }
12349             ])],
12350             [can_compile_ssse3=yes],
12351             [can_compile_ssse3=no])
12352         AC_LANG_POP([C++])
12353         CXXFLAGS=$save_CXXFLAGS
12354         AC_MSG_RESULT([${can_compile_ssse3}])
12355         if test "${can_compile_ssse3}" = "yes" ; then
12356             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12357         fi
12359         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12360         AC_LANG_PUSH([C++])
12361         save_CXXFLAGS=$CXXFLAGS
12362         CXXFLAGS="$CXXFLAGS $flag_sse41"
12363         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12364             #include <smmintrin.h>
12365             int main () {
12366                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12367                 c = _mm_cmpeq_epi64 (a, b);
12368                 return 0;
12369             }
12370             ])],
12371             [can_compile_sse41=yes],
12372             [can_compile_sse41=no])
12373         AC_LANG_POP([C++])
12374         CXXFLAGS=$save_CXXFLAGS
12375         AC_MSG_RESULT([${can_compile_sse41}])
12376         if test "${can_compile_sse41}" = "yes" ; then
12377             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12378         fi
12380         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12381         AC_LANG_PUSH([C++])
12382         save_CXXFLAGS=$CXXFLAGS
12383         CXXFLAGS="$CXXFLAGS $flag_sse42"
12384         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12385             #include <nmmintrin.h>
12386             int main () {
12387                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12388                 c = _mm_cmpgt_epi64 (a, b);
12389                 return 0;
12390             }
12391             ])],
12392             [can_compile_sse42=yes],
12393             [can_compile_sse42=no])
12394         AC_LANG_POP([C++])
12395         CXXFLAGS=$save_CXXFLAGS
12396         AC_MSG_RESULT([${can_compile_sse42}])
12397         if test "${can_compile_sse42}" = "yes" ; then
12398             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12399         fi
12401         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12402         AC_LANG_PUSH([C++])
12403         save_CXXFLAGS=$CXXFLAGS
12404         CXXFLAGS="$CXXFLAGS $flag_avx"
12405         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12406             #include <immintrin.h>
12407             int main () {
12408                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12409                 c = _mm256_xor_ps(a, b);
12410                 return 0;
12411             }
12412             ])],
12413             [can_compile_avx=yes],
12414             [can_compile_avx=no])
12415         AC_LANG_POP([C++])
12416         CXXFLAGS=$save_CXXFLAGS
12417         AC_MSG_RESULT([${can_compile_avx}])
12418         if test "${can_compile_avx}" = "yes" ; then
12419             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12420         fi
12422         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12423         AC_LANG_PUSH([C++])
12424         save_CXXFLAGS=$CXXFLAGS
12425         CXXFLAGS="$CXXFLAGS $flag_avx2"
12426         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12427             #include <immintrin.h>
12428             int main () {
12429                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12430                 c = _mm256_maddubs_epi16(a, b);
12431                 return 0;
12432             }
12433             ])],
12434             [can_compile_avx2=yes],
12435             [can_compile_avx2=no])
12436         AC_LANG_POP([C++])
12437         CXXFLAGS=$save_CXXFLAGS
12438         AC_MSG_RESULT([${can_compile_avx2}])
12439         if test "${can_compile_avx2}" = "yes" ; then
12440             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12441         fi
12443         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12444         AC_LANG_PUSH([C++])
12445         save_CXXFLAGS=$CXXFLAGS
12446         CXXFLAGS="$CXXFLAGS $flag_avx512"
12447         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12448             #include <immintrin.h>
12449             int main () {
12450                 __m512i a = _mm512_loadu_si512(0);
12451                 __m512d v1 = _mm512_load_pd(0);
12452                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12453                 __m512d v2 = _mm512_abs_pd(v1);
12454                 return 0;
12455             }
12456             ])],
12457             [can_compile_avx512=yes],
12458             [can_compile_avx512=no])
12459         AC_LANG_POP([C++])
12460         CXXFLAGS=$save_CXXFLAGS
12461         AC_MSG_RESULT([${can_compile_avx512}])
12462         if test "${can_compile_avx512}" = "yes" ; then
12463             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12464             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12465         fi
12467         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12468         AC_LANG_PUSH([C++])
12469         save_CXXFLAGS=$CXXFLAGS
12470         CXXFLAGS="$CXXFLAGS $flag_f16c"
12471         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12472             #include <immintrin.h>
12473             int main () {
12474                 __m128i a = _mm_set1_epi32 (0);
12475                 __m128 c;
12476                 c = _mm_cvtph_ps(a);
12477                 return 0;
12478             }
12479             ])],
12480             [can_compile_f16c=yes],
12481             [can_compile_f16c=no])
12482         AC_LANG_POP([C++])
12483         CXXFLAGS=$save_CXXFLAGS
12484         AC_MSG_RESULT([${can_compile_f16c}])
12485         if test "${can_compile_f16c}" = "yes" ; then
12486             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12487         fi
12489         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12490         AC_LANG_PUSH([C++])
12491         save_CXXFLAGS=$CXXFLAGS
12492         CXXFLAGS="$CXXFLAGS $flag_fma"
12493         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12494             #include <immintrin.h>
12495             int main () {
12496                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12497                 d = _mm256_fmadd_ps(a, b, c);
12498                 return 0;
12499             }
12500             ])],
12501             [can_compile_fma=yes],
12502             [can_compile_fma=no])
12503         AC_LANG_POP([C++])
12504         CXXFLAGS=$save_CXXFLAGS
12505         AC_MSG_RESULT([${can_compile_fma}])
12506         if test "${can_compile_fma}" = "yes" ; then
12507             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12508         fi
12510         CXX="$save_CXX"
12511     fi
12514 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12516 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12517     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12518     AC_LANG_PUSH([C])
12519     save_CC="$CC"
12520     CC="$LO_CLANG_CC"
12521     save_CFLAGS=$CFLAGS
12522     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12523     dnl an empty program will do, we're checking the compiler flags
12524     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12525                       [use_ccache=yes], [use_ccache=no])
12526     CFLAGS=$save_CFLAGS
12527     CC=$save_CC
12528     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12529         AC_MSG_RESULT([yes])
12530     else
12531         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12532         AC_MSG_RESULT([no])
12533     fi
12534     AC_LANG_POP([C])
12536     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12537     AC_LANG_PUSH([C++])
12538     save_CXX="$CXX"
12539     CXX="$LO_CLANG_CXX"
12540     save_CXXFLAGS=$CXXFLAGS
12541     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12542     dnl an empty program will do, we're checking the compiler flags
12543     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12544                       [use_ccache=yes], [use_ccache=no])
12545     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12546         AC_MSG_RESULT([yes])
12547     else
12548         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12549         AC_MSG_RESULT([no])
12550     fi
12551     CXXFLAGS=$save_CXXFLAGS
12552     CXX=$save_CXX
12553     AC_LANG_POP([C++])
12556 AC_SUBST(LO_CLANG_CC)
12557 AC_SUBST(LO_CLANG_CXX)
12558 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12559 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12560 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12561 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12562 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12563 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12564 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12565 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12566 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12567 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12568 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12569 AC_SUBST(CLANG_USE_LD)
12570 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12572 SYSTEM_GPGMEPP=
12574 AC_MSG_CHECKING([whether to enable gpgmepp])
12575 if test "$enable_gpgmepp" = no; then
12576     AC_MSG_RESULT([no])
12577 elif test "$enable_mpl_subset" = "yes"; then
12578     AC_MSG_RESULT([no (MPL only])
12579 elif test "$enable_fuzzers" = "yes"; then
12580     AC_MSG_RESULT([no (oss-fuzz)])
12581 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12582     AC_MSG_RESULT([yes])
12583     dnl ===================================================================
12584     dnl Check for system gpgme
12585     dnl ===================================================================
12586     AC_MSG_CHECKING([which gpgmepp to use])
12587     if test "$with_system_gpgmepp" = "yes"; then
12588         AC_MSG_RESULT([external])
12589         SYSTEM_GPGMEPP=TRUE
12591         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12592         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12593             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12594         AC_CHECK_HEADER(gpgme.h, [],
12595             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12596         AC_CHECK_LIB(gpgmepp, main, [],
12597             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12598         GPGMEPP_LIBS=-lgpgmepp
12599     else
12600         AC_MSG_RESULT([internal])
12601         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12603         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12604         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12605         if test "$_os" != "WINNT"; then
12606             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12607             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12608         fi
12609     fi
12610     ENABLE_GPGMEPP=TRUE
12611     AC_DEFINE([HAVE_FEATURE_GPGME])
12612     AC_PATH_PROG(GPG, gpg)
12613     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12614     # so let's exclude that manually for the moment
12615     if test -n "$GPG" -a "$_os" != "WINNT"; then
12616         # make sure we not only have a working gpgme, but a full working
12617         # gpg installation to run OpenPGP signature verification
12618         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12619     fi
12620     if test "$_os" = "Linux"; then
12621       uid=`id -u`
12622       AC_MSG_CHECKING([for /run/user/$uid])
12623       if test -d /run/user/$uid; then
12624         AC_MSG_RESULT([yes])
12625         AC_PATH_PROG(GPGCONF, gpgconf)
12627         # Older versions of gpgconf are not working as expected, since
12628         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12629         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12630         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12631         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12632         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12633         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12634         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12635           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12636           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12637           if $GPGCONF --dump-options > /dev/null ; then
12638             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12639               AC_MSG_RESULT([yes])
12640               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12641               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12642             else
12643               AC_MSG_RESULT([no])
12644             fi
12645           else
12646             AC_MSG_RESULT([no. missing or broken gpgconf?])
12647           fi
12648         else
12649           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12650         fi
12651       else
12652         AC_MSG_RESULT([no])
12653      fi
12654    fi
12655 else
12656     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12658 AC_SUBST(ENABLE_GPGMEPP)
12659 AC_SUBST(SYSTEM_GPGMEPP)
12660 AC_SUBST(GPG_ERROR_CFLAGS)
12661 AC_SUBST(GPG_ERROR_LIBS)
12662 AC_SUBST(LIBASSUAN_CFLAGS)
12663 AC_SUBST(LIBASSUAN_LIBS)
12664 AC_SUBST(GPGMEPP_CFLAGS)
12665 AC_SUBST(GPGMEPP_LIBS)
12667 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12668 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12669     AC_MSG_RESULT([yes])
12670     ENABLE_MEDIAWIKI=TRUE
12671     BUILD_TYPE="$BUILD_TYPE XSLTML"
12672     if test  "x$with_java" = "xno"; then
12673         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12674     fi
12675 else
12676     AC_MSG_RESULT([no])
12677     ENABLE_MEDIAWIKI=
12678     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12680 AC_SUBST(ENABLE_MEDIAWIKI)
12682 AC_MSG_CHECKING([whether to build the Report Builder])
12683 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12684     AC_MSG_RESULT([yes])
12685     ENABLE_REPORTBUILDER=TRUE
12686     AC_MSG_CHECKING([which jfreereport libs to use])
12687     if test "$with_system_jfreereport" = "yes"; then
12688         SYSTEM_JFREEREPORT=TRUE
12689         AC_MSG_RESULT([external])
12690         if test -z $SAC_JAR; then
12691             SAC_JAR=/usr/share/java/sac.jar
12692         fi
12693         if ! test -f $SAC_JAR; then
12694              AC_MSG_ERROR(sac.jar not found.)
12695         fi
12697         if test -z $LIBXML_JAR; then
12698             if test -f /usr/share/java/libxml-1.0.0.jar; then
12699                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12700             elif test -f /usr/share/java/libxml.jar; then
12701                 LIBXML_JAR=/usr/share/java/libxml.jar
12702             else
12703                 AC_MSG_ERROR(libxml.jar replacement not found.)
12704             fi
12705         elif ! test -f $LIBXML_JAR; then
12706             AC_MSG_ERROR(libxml.jar not found.)
12707         fi
12709         if test -z $FLUTE_JAR; then
12710             if test -f /usr/share/java/flute-1.3.0.jar; then
12711                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12712             elif test -f /usr/share/java/flute.jar; then
12713                 FLUTE_JAR=/usr/share/java/flute.jar
12714             else
12715                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12716             fi
12717         elif ! test -f $FLUTE_JAR; then
12718             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12719         fi
12721         if test -z $JFREEREPORT_JAR; then
12722             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12723                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12724             elif test -f /usr/share/java/flow-engine.jar; then
12725                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12726             else
12727                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12728             fi
12729         elif ! test -f  $JFREEREPORT_JAR; then
12730                 AC_MSG_ERROR(jfreereport.jar not found.)
12731         fi
12733         if test -z $LIBLAYOUT_JAR; then
12734             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12735                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12736             elif test -f /usr/share/java/liblayout.jar; then
12737                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12738             else
12739                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12740             fi
12741         elif ! test -f $LIBLAYOUT_JAR; then
12742                 AC_MSG_ERROR(liblayout.jar not found.)
12743         fi
12745         if test -z $LIBLOADER_JAR; then
12746             if test -f /usr/share/java/libloader-1.0.0.jar; then
12747                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12748             elif test -f /usr/share/java/libloader.jar; then
12749                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12750             else
12751                 AC_MSG_ERROR(libloader.jar replacement not found.)
12752             fi
12753         elif ! test -f  $LIBLOADER_JAR; then
12754             AC_MSG_ERROR(libloader.jar not found.)
12755         fi
12757         if test -z $LIBFORMULA_JAR; then
12758             if test -f /usr/share/java/libformula-0.2.0.jar; then
12759                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12760             elif test -f /usr/share/java/libformula.jar; then
12761                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12762             else
12763                 AC_MSG_ERROR(libformula.jar replacement not found.)
12764             fi
12765         elif ! test -f $LIBFORMULA_JAR; then
12766                 AC_MSG_ERROR(libformula.jar not found.)
12767         fi
12769         if test -z $LIBREPOSITORY_JAR; then
12770             if test -f /usr/share/java/librepository-1.0.0.jar; then
12771                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12772             elif test -f /usr/share/java/librepository.jar; then
12773                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12774             else
12775                 AC_MSG_ERROR(librepository.jar replacement not found.)
12776             fi
12777         elif ! test -f $LIBREPOSITORY_JAR; then
12778             AC_MSG_ERROR(librepository.jar not found.)
12779         fi
12781         if test -z $LIBFONTS_JAR; then
12782             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12783                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12784             elif test -f /usr/share/java/libfonts.jar; then
12785                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12786             else
12787                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12788             fi
12789         elif ! test -f $LIBFONTS_JAR; then
12790                 AC_MSG_ERROR(libfonts.jar not found.)
12791         fi
12793         if test -z $LIBSERIALIZER_JAR; then
12794             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12795                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12796             elif test -f /usr/share/java/libserializer.jar; then
12797                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12798             else
12799                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12800             fi
12801         elif ! test -f $LIBSERIALIZER_JAR; then
12802                 AC_MSG_ERROR(libserializer.jar not found.)
12803         fi
12805         if test -z $LIBBASE_JAR; then
12806             if test -f /usr/share/java/libbase-1.0.0.jar; then
12807                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12808             elif test -f /usr/share/java/libbase.jar; then
12809                 LIBBASE_JAR=/usr/share/java/libbase.jar
12810             else
12811                 AC_MSG_ERROR(libbase.jar replacement not found.)
12812             fi
12813         elif ! test -f $LIBBASE_JAR; then
12814             AC_MSG_ERROR(libbase.jar not found.)
12815         fi
12817     else
12818         AC_MSG_RESULT([internal])
12819         SYSTEM_JFREEREPORT=
12820         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12821         NEED_ANT=TRUE
12822     fi
12823 else
12824     AC_MSG_RESULT([no])
12825     ENABLE_REPORTBUILDER=
12826     SYSTEM_JFREEREPORT=
12828 AC_SUBST(ENABLE_REPORTBUILDER)
12829 AC_SUBST(SYSTEM_JFREEREPORT)
12830 AC_SUBST(SAC_JAR)
12831 AC_SUBST(LIBXML_JAR)
12832 AC_SUBST(FLUTE_JAR)
12833 AC_SUBST(JFREEREPORT_JAR)
12834 AC_SUBST(LIBBASE_JAR)
12835 AC_SUBST(LIBLAYOUT_JAR)
12836 AC_SUBST(LIBLOADER_JAR)
12837 AC_SUBST(LIBFORMULA_JAR)
12838 AC_SUBST(LIBREPOSITORY_JAR)
12839 AC_SUBST(LIBFONTS_JAR)
12840 AC_SUBST(LIBSERIALIZER_JAR)
12842 # scripting provider for BeanShell?
12843 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12844 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12845     AC_MSG_RESULT([yes])
12846     ENABLE_SCRIPTING_BEANSHELL=TRUE
12848     dnl ===================================================================
12849     dnl Check for system beanshell
12850     dnl ===================================================================
12851     AC_MSG_CHECKING([which beanshell to use])
12852     if test "$with_system_beanshell" = "yes"; then
12853         AC_MSG_RESULT([external])
12854         SYSTEM_BSH=TRUE
12855         if test -z $BSH_JAR; then
12856             BSH_JAR=/usr/share/java/bsh.jar
12857         fi
12858         if ! test -f $BSH_JAR; then
12859             AC_MSG_ERROR(bsh.jar not found.)
12860         fi
12861     else
12862         AC_MSG_RESULT([internal])
12863         SYSTEM_BSH=
12864         BUILD_TYPE="$BUILD_TYPE BSH"
12865     fi
12866 else
12867     AC_MSG_RESULT([no])
12868     ENABLE_SCRIPTING_BEANSHELL=
12869     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12871 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12872 AC_SUBST(SYSTEM_BSH)
12873 AC_SUBST(BSH_JAR)
12875 # scripting provider for JavaScript?
12876 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12877 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12878     AC_MSG_RESULT([yes])
12879     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12881     dnl ===================================================================
12882     dnl Check for system rhino
12883     dnl ===================================================================
12884     AC_MSG_CHECKING([which rhino to use])
12885     if test "$with_system_rhino" = "yes"; then
12886         AC_MSG_RESULT([external])
12887         SYSTEM_RHINO=TRUE
12888         if test -z $RHINO_JAR; then
12889             RHINO_JAR=/usr/share/java/js.jar
12890         fi
12891         if ! test -f $RHINO_JAR; then
12892             AC_MSG_ERROR(js.jar not found.)
12893         fi
12894     else
12895         AC_MSG_RESULT([internal])
12896         SYSTEM_RHINO=
12897         BUILD_TYPE="$BUILD_TYPE RHINO"
12898         NEED_ANT=TRUE
12899     fi
12900 else
12901     AC_MSG_RESULT([no])
12902     ENABLE_SCRIPTING_JAVASCRIPT=
12903     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12905 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12906 AC_SUBST(SYSTEM_RHINO)
12907 AC_SUBST(RHINO_JAR)
12909 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12910 # paths should be added to library search path. So lets put all 64-bit
12911 # platforms there.
12912 supports_multilib=
12913 case "$host_cpu" in
12914 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64)
12915     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12916         supports_multilib="yes"
12917     fi
12918     ;;
12920     ;;
12921 esac
12923 dnl ===================================================================
12924 dnl QT5 Integration
12925 dnl ===================================================================
12927 QT5_CFLAGS=""
12928 QT5_LIBS=""
12929 QMAKE5="qmake"
12930 MOC5="moc"
12931 QT5_GOBJECT_CFLAGS=""
12932 QT5_GOBJECT_LIBS=""
12933 QT5_HAVE_GOBJECT=""
12934 QT5_PLATFORMS_SRCDIR=""
12935 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12936         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12937         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12938 then
12939     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12940     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12942     if test -n "$supports_multilib"; then
12943         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12944     fi
12946     qt5_test_include="QtWidgets/qapplication.h"
12947     if test "$_os" = "Emscripten"; then
12948         qt5_test_library="libQt5Widgets.a"
12949     else
12950         qt5_test_library="libQt5Widgets.so"
12951     fi
12953     dnl Check for qmake5
12954     if test -n "$QT5DIR"; then
12955         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12956     else
12957         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12958     fi
12959     if test "$QMAKE5" = "no"; then
12960         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12961     else
12962         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12963         if test -z "$qmake5_test_ver"; then
12964             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12965         fi
12966         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12967         qt5_minimal_minor="6"
12968         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12969             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12970         else
12971             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12972         fi
12973     fi
12975     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12976     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12977     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12978     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12980     AC_MSG_CHECKING([for Qt5 headers])
12981     qt5_incdir="no"
12982     for inc_dir in $qt5_incdirs; do
12983         if test -r "$inc_dir/$qt5_test_include"; then
12984             qt5_incdir="$inc_dir"
12985             break
12986         fi
12987     done
12988     AC_MSG_RESULT([$qt5_incdir])
12989     if test "x$qt5_incdir" = "xno"; then
12990         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12991     fi
12992     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12993     AC_LANG_PUSH([C++])
12994     save_CPPFLAGS=$CPPFLAGS
12995     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12996     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12997         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12998     CPPFLAGS=$save_CPPFLAGS
12999     AC_LANG_POP([C++])
13001     AC_MSG_CHECKING([for Qt5 libraries])
13002     qt5_libdir="no"
13003     for lib_dir in $qt5_libdirs; do
13004         if test -r "$lib_dir/$qt5_test_library"; then
13005             qt5_libdir="$lib_dir"
13006             break
13007         fi
13008     done
13009     AC_MSG_RESULT([$qt5_libdir])
13010     if test "x$qt5_libdir" = "xno"; then
13011         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13012     fi
13014     if test "$_os" = "Emscripten"; then
13015         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13016             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13017         fi
13018         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13019             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13020         fi
13022         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13023         if ! test -x "$EMSDK_LLVM_NM"; then
13024             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13025         fi
13026         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13027             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13028         fi
13029         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13030         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13031             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13032         fi
13033         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13034             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13035         fi
13036     fi
13038     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13039     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13040     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13041     if test "$_os" = "Emscripten"; then
13042         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13043     fi
13045     if test "$USING_X11" = TRUE; then
13046         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13047         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13048             QT5_HAVE_XCB_ICCCM=1
13049             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13050         ],[
13051             AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
13052             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13053         ])
13054         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13055         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13056         QT5_USING_X11=1
13057         AC_DEFINE(QT5_USING_X11)
13058     fi
13060     dnl Check for Meta Object Compiler
13062     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13063     if test "$MOC5" = "no"; then
13064         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13065 the root of your Qt installation by exporting QT5DIR before running "configure".])
13066     fi
13068     if test "$test_gstreamer_1_0" = yes; then
13069         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13070                 QT5_HAVE_GOBJECT=1
13071                 AC_DEFINE(QT5_HAVE_GOBJECT)
13072             ],
13073             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13074         )
13075     fi
13077 AC_SUBST(QT5_CFLAGS)
13078 AC_SUBST(QT5_LIBS)
13079 AC_SUBST(MOC5)
13080 AC_SUBST(QT5_GOBJECT_CFLAGS)
13081 AC_SUBST(QT5_GOBJECT_LIBS)
13082 AC_SUBST(QT5_HAVE_GOBJECT)
13083 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13085 dnl ===================================================================
13086 dnl QT6 Integration
13087 dnl ===================================================================
13089 QT6_CFLAGS=""
13090 QT6_LIBS=""
13091 QMAKE6="qmake"
13092 MOC6="moc"
13093 QT6_PLATFORMS_SRCDIR=""
13094 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13095 then
13096     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13097     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13099     if test -n "$supports_multilib"; then
13100         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13101     fi
13103     qt6_test_include="QtWidgets/qapplication.h"
13104     if test "$_os" = "Emscripten"; then
13105         qt6_test_library="libQt6Widgets.a"
13106     else
13107         qt6_test_library="libQt6Widgets.so"
13108     fi
13110     dnl Check for qmake6
13111     if test -n "$QT6DIR"; then
13112         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13113     else
13114         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13115     fi
13116     if test "$QMAKE6" = "no"; then
13117         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13118     else
13119         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13120         if test -z "$qmake6_test_ver"; then
13121             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13122         fi
13123         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13124     fi
13126     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13127     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13128     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13129     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13131     AC_MSG_CHECKING([for Qt6 headers])
13132     qt6_incdir="no"
13133     for inc_dir in $qt6_incdirs; do
13134         if test -r "$inc_dir/$qt6_test_include"; then
13135             qt6_incdir="$inc_dir"
13136             break
13137         fi
13138     done
13139     AC_MSG_RESULT([$qt6_incdir])
13140     if test "x$qt6_incdir" = "xno"; then
13141         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13142     fi
13143     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13144     AC_LANG_PUSH([C++])
13145     save_CPPFLAGS=$CPPFLAGS
13146     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13147     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13148         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13149     CPPFLAGS=$save_CPPFLAGS
13150     AC_LANG_POP([C++])
13152     AC_MSG_CHECKING([for Qt6 libraries])
13153     qt6_libdir="no"
13154     for lib_dir in $qt6_libdirs; do
13155         if test -r "$lib_dir/$qt6_test_library"; then
13156             qt6_libdir="$lib_dir"
13157             break
13158         fi
13159     done
13160     AC_MSG_RESULT([$qt6_libdir])
13161     if test "x$qt6_libdir" = "xno"; then
13162         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13163     fi
13165     if test "$_os" = "Emscripten"; then
13166         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13167             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13168         fi
13169         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13170             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13171         fi
13172     fi
13174     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13175     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13176     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13177     if test "$_os" = "Emscripten"; then
13178         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13179     fi
13181     if test "$USING_X11" = TRUE; then
13182         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13183         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13184         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13185         QT6_USING_X11=1
13186         AC_DEFINE(QT6_USING_X11)
13187     fi
13189     dnl Check for Meta Object Compiler
13191     for lib_dir in $qt6_libdirs; do
13192         if test -z "$qt6_libexec_dirs"; then
13193             qt6_libexec_dirs="$lib_dir/libexec"
13194         else
13195             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13196         fi
13197     done
13198     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13199     if test "$MOC6" = "no"; then
13200         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13201 the root of your Qt installation by exporting QT6DIR before running "configure".])
13202     fi
13204 AC_SUBST(QT6_CFLAGS)
13205 AC_SUBST(QT6_LIBS)
13206 AC_SUBST(MOC6)
13207 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13209 dnl ===================================================================
13210 dnl KF5 Integration
13211 dnl ===================================================================
13213 KF5_CFLAGS=""
13214 KF5_LIBS=""
13215 KF5_CONFIG="kf5-config"
13216 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13217         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13218 then
13219     if test "$OS" = "HAIKU"; then
13220         haiku_arch="`echo $RTL_ARCH | tr X x`"
13221         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13222         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13223     fi
13225     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13226     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13227     if test -n "$supports_multilib"; then
13228         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13229     fi
13231     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13232     kf5_test_library="libKF5KIOFileWidgets.so"
13233     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13235     dnl kf5 KDE4 support compatibility installed
13236     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13237     if test "$KF5_CONFIG" != "no"; then
13238         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13239         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13240     fi
13242     dnl Check for KF5 headers
13243     AC_MSG_CHECKING([for KF5 headers])
13244     kf5_incdir="no"
13245     for kf5_check in $kf5_incdirs; do
13246         if test -r "$kf5_check/$kf5_test_include"; then
13247             kf5_incdir="$kf5_check/KF5"
13248             break
13249         fi
13250     done
13251     AC_MSG_RESULT([$kf5_incdir])
13252     if test "x$kf5_incdir" = "xno"; then
13253         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13254     fi
13256     dnl Check for KF5 libraries
13257     AC_MSG_CHECKING([for KF5 libraries])
13258     kf5_libdir="no"
13259     for kf5_check in $kf5_libdirs; do
13260         if test -r "$kf5_check/$kf5_test_library"; then
13261             kf5_libdir="$kf5_check"
13262             break
13263         fi
13264     done
13266     AC_MSG_RESULT([$kf5_libdir])
13267     if test "x$kf5_libdir" = "xno"; then
13268         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13269     fi
13271     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"
13272     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13273     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13275     if test "$USING_X11" = TRUE; then
13276         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13277     fi
13279     AC_LANG_PUSH([C++])
13280     save_CXXFLAGS=$CXXFLAGS
13281     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13282     AC_MSG_CHECKING([whether KDE is >= 5.0])
13283        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13284 #include <kcoreaddons_version.h>
13286 int main(int argc, char **argv) {
13287        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13288        else return 1;
13290        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13291     CXXFLAGS=$save_CXXFLAGS
13292     AC_LANG_POP([C++])
13294 AC_SUBST(KF5_CFLAGS)
13295 AC_SUBST(KF5_LIBS)
13297 dnl ===================================================================
13298 dnl Test whether to include Evolution 2 support
13299 dnl ===================================================================
13300 AC_MSG_CHECKING([whether to enable evolution 2 support])
13301 if test "$enable_evolution2" = yes; then
13302     AC_MSG_RESULT([yes])
13303     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13304     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13305     FilterLibs "${GOBJECT_LIBS}"
13306     GOBJECT_LIBS="${filteredlibs}"
13307     ENABLE_EVOAB2="TRUE"
13308 else
13309     AC_MSG_RESULT([no])
13311 AC_SUBST(ENABLE_EVOAB2)
13312 AC_SUBST(GOBJECT_CFLAGS)
13313 AC_SUBST(GOBJECT_LIBS)
13315 dnl ===================================================================
13316 dnl Test which themes to include
13317 dnl ===================================================================
13318 AC_MSG_CHECKING([which themes to include])
13319 # if none given use default subset of available themes
13320 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13321     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_svg"
13324 WITH_THEMES=""
13325 if test "x$with_theme" != "xno"; then
13326     for theme in $with_theme; do
13327         case $theme in
13328         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_svg) real_theme="$theme" ;;
13329         default) real_theme=colibre ;;
13330         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13331         esac
13332         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13333     done
13335 AC_MSG_RESULT([$WITH_THEMES])
13336 AC_SUBST([WITH_THEMES])
13337 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13338 for theme in $with_theme; do
13339     case $theme in
13340     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13341     *) ;;
13342     esac
13343 done
13345 ###############################################################################
13346 # Extensions checking
13347 ###############################################################################
13348 AC_MSG_CHECKING([for extensions integration])
13349 if test "x$enable_extension_integration" != "xno"; then
13350     WITH_EXTENSION_INTEGRATION=TRUE
13351     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13352     AC_MSG_RESULT([yes, use integration])
13353 else
13354     WITH_EXTENSION_INTEGRATION=
13355     AC_MSG_RESULT([no, do not integrate])
13357 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13359 dnl Should any extra extensions be included?
13360 dnl There are standalone tests for each of these below.
13361 WITH_EXTRA_EXTENSIONS=
13362 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13364 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13365 if test "x$with_java" != "xno"; then
13366     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13369 AC_MSG_CHECKING([whether to build opens___.ttf])
13370 if test "$enable_build_opensymbol" = "yes"; then
13371     AC_MSG_RESULT([yes])
13372     AC_PATH_PROG(FONTFORGE, fontforge)
13373     if test -z "$FONTFORGE"; then
13374         AC_MSG_ERROR([fontforge not installed])
13375     fi
13376 else
13377     AC_MSG_RESULT([no])
13378     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13380 AC_SUBST(FONTFORGE)
13382 dnl ===================================================================
13383 dnl Test whether to include fonts
13384 dnl ===================================================================
13385 AC_MSG_CHECKING([whether to include third-party fonts])
13386 if test "$with_fonts" != "no"; then
13387     AC_MSG_RESULT([yes])
13388     WITH_FONTS=TRUE
13389     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13390     AC_DEFINE(HAVE_MORE_FONTS)
13391 else
13392     AC_MSG_RESULT([no])
13393     WITH_FONTS=
13394     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13396 AC_SUBST(WITH_FONTS)
13399 dnl ===================================================================
13400 dnl Test whether to enable online update service
13401 dnl ===================================================================
13402 AC_MSG_CHECKING([whether to enable online update])
13403 ENABLE_ONLINE_UPDATE=
13404 ENABLE_ONLINE_UPDATE_MAR=
13405 UPDATE_CONFIG=
13406 if test "$enable_online_update" = ""; then
13407     AC_MSG_RESULT([no])
13408 else
13409     if test "$enable_online_update" = "mar"; then
13410         AC_MSG_RESULT([yes - MAR-based online update])
13411         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13412         if test "$with_update_config" = ""; then
13413             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13414         fi
13415         UPDATE_CONFIG="$with_update_config"
13416         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13417     elif test "$enable_online_update" = "yes"; then
13418         AC_MSG_RESULT([yes])
13419         ENABLE_ONLINE_UPDATE="TRUE"
13420     else
13421         AC_MSG_RESULT([no])
13422     fi
13424 AC_SUBST(ENABLE_ONLINE_UPDATE)
13425 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13426 AC_SUBST(UPDATE_CONFIG)
13429 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13430 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13431     if test "x$with_privacy_policy_url" = "xundefined"; then
13432         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13433     fi
13435 AC_SUBST(PRIVACY_POLICY_URL)
13436 dnl ===================================================================
13437 dnl Test whether we need bzip2
13438 dnl ===================================================================
13439 SYSTEM_BZIP2=
13440 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13441     AC_MSG_CHECKING([whether to use system bzip2])
13442     if test "$with_system_bzip2" = yes; then
13443         SYSTEM_BZIP2=TRUE
13444         AC_MSG_RESULT([yes])
13445         PKG_CHECK_MODULES(BZIP2, bzip2)
13446         FilterLibs "${BZIP2_LIBS}"
13447         BZIP2_LIBS="${filteredlibs}"
13448     else
13449         AC_MSG_RESULT([no])
13450         BUILD_TYPE="$BUILD_TYPE BZIP2"
13451     fi
13453 AC_SUBST(SYSTEM_BZIP2)
13454 AC_SUBST(BZIP2_CFLAGS)
13455 AC_SUBST(BZIP2_LIBS)
13457 dnl ===================================================================
13458 dnl Test whether to enable extension update
13459 dnl ===================================================================
13460 AC_MSG_CHECKING([whether to enable extension update])
13461 ENABLE_EXTENSION_UPDATE=
13462 if test "x$enable_extension_update" = "xno"; then
13463     AC_MSG_RESULT([no])
13464 else
13465     AC_MSG_RESULT([yes])
13466     ENABLE_EXTENSION_UPDATE="TRUE"
13467     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13468     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13470 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13473 dnl ===================================================================
13474 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13475 dnl ===================================================================
13476 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13477 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13478     AC_MSG_RESULT([no])
13479     ENABLE_SILENT_MSI=
13480 else
13481     AC_MSG_RESULT([yes])
13482     ENABLE_SILENT_MSI=TRUE
13483     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13485 AC_SUBST(ENABLE_SILENT_MSI)
13487 AC_MSG_CHECKING([whether and how to use Xinerama])
13488 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13489     if test "$x_libraries" = "default_x_libraries"; then
13490         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13491         if test "x$XINERAMALIB" = x; then
13492            XINERAMALIB="/usr/lib"
13493         fi
13494     else
13495         XINERAMALIB="$x_libraries"
13496     fi
13497     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13498         # we have both versions, let the user decide but use the dynamic one
13499         # per default
13500         USE_XINERAMA=TRUE
13501         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13502             XINERAMA_LINK=dynamic
13503         else
13504             XINERAMA_LINK=static
13505         fi
13506     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13507         # we have only the dynamic version
13508         USE_XINERAMA=TRUE
13509         XINERAMA_LINK=dynamic
13510     elif test -e "$XINERAMALIB/libXinerama.a"; then
13511         # static version
13512         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13513             USE_XINERAMA=TRUE
13514             XINERAMA_LINK=static
13515         else
13516             USE_XINERAMA=
13517             XINERAMA_LINK=none
13518         fi
13519     else
13520         # no Xinerama
13521         USE_XINERAMA=
13522         XINERAMA_LINK=none
13523     fi
13524     if test "$USE_XINERAMA" = "TRUE"; then
13525         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13526         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13527             [AC_MSG_ERROR(Xinerama header not found.)], [])
13528         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13529         if test "x$XEXTLIB" = x; then
13530            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13531         fi
13532         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13533         if test "$_os" = "FreeBSD"; then
13534             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13535         fi
13536         if test "$_os" = "Linux"; then
13537             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13538         fi
13539         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13540             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13541     else
13542         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13543     fi
13544 else
13545     USE_XINERAMA=
13546     XINERAMA_LINK=none
13547     AC_MSG_RESULT([no])
13549 AC_SUBST(USE_XINERAMA)
13550 AC_SUBST(XINERAMA_LINK)
13552 dnl ===================================================================
13553 dnl Test whether to build cairo or rely on the system version
13554 dnl ===================================================================
13556 if test "$test_cairo" = "yes"; then
13557     AC_MSG_CHECKING([whether to use the system cairo])
13559     : ${with_system_cairo:=$with_system_libs}
13560     if test "$with_system_cairo" = "yes"; then
13561         SYSTEM_CAIRO=TRUE
13562         AC_MSG_RESULT([yes])
13564         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13565         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13566         FilterLibs "${CAIRO_LIBS}"
13567         CAIRO_LIBS="${filteredlibs}"
13569         if test "$test_xrender" = "yes"; then
13570             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13571             AC_LANG_PUSH([C])
13572             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13573 #ifdef PictStandardA8
13574 #else
13575       return fail;
13576 #endif
13577 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13579             AC_LANG_POP([C])
13580         fi
13581     else
13582         AC_MSG_RESULT([no])
13583         BUILD_TYPE="$BUILD_TYPE CAIRO"
13584     fi
13586     if test "$enable_cairo_canvas" != no; then
13587         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13588         ENABLE_CAIRO_CANVAS=TRUE
13589     fi
13592 AC_SUBST(CAIRO_CFLAGS)
13593 AC_SUBST(CAIRO_LIBS)
13594 AC_SUBST(ENABLE_CAIRO_CANVAS)
13595 AC_SUBST(SYSTEM_CAIRO)
13597 dnl ===================================================================
13598 dnl Test whether to use avahi
13599 dnl ===================================================================
13600 if test "$_os" = "WINNT"; then
13601     # Windows uses bundled mDNSResponder
13602     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13603 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13604     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13605                       [ENABLE_AVAHI="TRUE"])
13606     AC_DEFINE(HAVE_FEATURE_AVAHI)
13607     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13608     FilterLibs "${AVAHI_LIBS}"
13609     AVAHI_LIBS="${filteredlibs}"
13612 AC_SUBST(ENABLE_AVAHI)
13613 AC_SUBST(AVAHI_CFLAGS)
13614 AC_SUBST(AVAHI_LIBS)
13616 dnl ===================================================================
13617 dnl Test whether to use liblangtag
13618 dnl ===================================================================
13619 SYSTEM_LIBLANGTAG=
13620 AC_MSG_CHECKING([whether to use system liblangtag])
13621 if test "$with_system_liblangtag" = yes; then
13622     SYSTEM_LIBLANGTAG=TRUE
13623     AC_MSG_RESULT([yes])
13624     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13625     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13626     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13627     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13628     FilterLibs "${LIBLANGTAG_LIBS}"
13629     LIBLANGTAG_LIBS="${filteredlibs}"
13630 else
13631     SYSTEM_LIBLANGTAG=
13632     AC_MSG_RESULT([no])
13633     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13634     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13635     if test "$COM" = "MSC"; then
13636         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13637     else
13638         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13639     fi
13641 AC_SUBST(SYSTEM_LIBLANGTAG)
13642 AC_SUBST(LIBLANGTAG_CFLAGS)
13643 AC_SUBST(LIBLANGTAG_LIBS)
13645 dnl ===================================================================
13646 dnl Test whether to build libpng or rely on the system version
13647 dnl ===================================================================
13649 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13650 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13651 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13653 dnl ===================================================================
13654 dnl Test whether to build libtiff or rely on the system version
13655 dnl ===================================================================
13657 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13659 dnl ===================================================================
13660 dnl Test whether to build libwebp or rely on the system version
13661 dnl ===================================================================
13663 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13665 dnl ===================================================================
13666 dnl Check for runtime JVM search path
13667 dnl ===================================================================
13668 if test "$ENABLE_JAVA" != ""; then
13669     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13670     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13671         AC_MSG_RESULT([yes])
13672         if ! test -d "$with_jvm_path"; then
13673             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13674         fi
13675         if ! test -d "$with_jvm_path"jvm; then
13676             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13677         fi
13678         JVM_ONE_PATH_CHECK="$with_jvm_path"
13679         AC_SUBST(JVM_ONE_PATH_CHECK)
13680     else
13681         AC_MSG_RESULT([no])
13682     fi
13685 dnl ===================================================================
13686 dnl Test for the presence of Ant and that it works
13687 dnl ===================================================================
13689 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13690     ANT_HOME=; export ANT_HOME
13691     WITH_ANT_HOME=; export WITH_ANT_HOME
13692     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13693         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13694             if test "$_os" = "WINNT"; then
13695                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13696             else
13697                 with_ant_home="$LODE_HOME/opt/ant"
13698             fi
13699         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13700             with_ant_home="$LODE_HOME/opt/ant"
13701         fi
13702     fi
13703     if test -z "$with_ant_home"; then
13704         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13705     else
13706         if test "$_os" = "WINNT"; then
13707             # AC_PATH_PROGS needs unix path
13708             with_ant_home=`cygpath -u "$with_ant_home"`
13709         fi
13710         AbsolutePath "$with_ant_home"
13711         with_ant_home=$absolute_path
13712         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13713         WITH_ANT_HOME=$with_ant_home
13714         ANT_HOME=$with_ant_home
13715     fi
13717     if test -z "$ANT"; then
13718         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13719     else
13720         # resolve relative or absolute symlink
13721         while test -h "$ANT"; do
13722             a_cwd=`pwd`
13723             a_basename=`basename "$ANT"`
13724             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13725             cd "`dirname "$ANT"`"
13726             cd "`dirname "$a_script"`"
13727             ANT="`pwd`"/"`basename "$a_script"`"
13728             cd "$a_cwd"
13729         done
13731         AC_MSG_CHECKING([if $ANT works])
13732         mkdir -p conftest.dir
13733         a_cwd=$(pwd)
13734         cd conftest.dir
13735         cat > conftest.java << EOF
13736         public class conftest {
13737             int testmethod(int a, int b) {
13738                     return a + b;
13739             }
13740         }
13743         cat > conftest.xml << EOF
13744         <project name="conftest" default="conftest">
13745         <target name="conftest">
13746             <javac srcdir="." includes="conftest.java">
13747             </javac>
13748         </target>
13749         </project>
13752         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13753         if test $? = 0 -a -f ./conftest.class; then
13754             AC_MSG_RESULT([Ant works])
13755             if test -z "$WITH_ANT_HOME"; then
13756                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13757                 if test -z "$ANT_HOME"; then
13758                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13759                 fi
13760             else
13761                 ANT_HOME="$WITH_ANT_HOME"
13762             fi
13763         else
13764             echo "configure: Ant test failed" >&5
13765             cat conftest.java >&5
13766             cat conftest.xml >&5
13767             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13768         fi
13769         cd "$a_cwd"
13770         rm -fr conftest.dir
13771     fi
13772     if test -z "$ANT_HOME"; then
13773         ANT_HOME="NO_ANT_HOME"
13774     else
13775         PathFormat "$ANT_HOME"
13776         ANT_HOME="$formatted_path"
13777         PathFormat "$ANT"
13778         ANT="$formatted_path"
13779     fi
13781     dnl Checking for ant.jar
13782     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13783         AC_MSG_CHECKING([Ant lib directory])
13784         if test -f $ANT_HOME/lib/ant.jar; then
13785             ANT_LIB="$ANT_HOME/lib"
13786         else
13787             if test -f $ANT_HOME/ant.jar; then
13788                 ANT_LIB="$ANT_HOME"
13789             else
13790                 if test -f /usr/share/java/ant.jar; then
13791                     ANT_LIB=/usr/share/java
13792                 else
13793                     if test -f /usr/share/ant-core/lib/ant.jar; then
13794                         ANT_LIB=/usr/share/ant-core/lib
13795                     else
13796                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13797                             ANT_LIB="$ANT_HOME/lib/ant"
13798                         else
13799                             if test -f /usr/share/lib/ant/ant.jar; then
13800                                 ANT_LIB=/usr/share/lib/ant
13801                             else
13802                                 AC_MSG_ERROR([Ant libraries not found!])
13803                             fi
13804                         fi
13805                     fi
13806                 fi
13807             fi
13808         fi
13809         PathFormat "$ANT_LIB"
13810         ANT_LIB="$formatted_path"
13811         AC_MSG_RESULT([Ant lib directory found.])
13812     fi
13814     ant_minver=1.6.0
13815     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13817     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13818     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13819     ant_version_major=`echo $ant_version | cut -d. -f1`
13820     ant_version_minor=`echo $ant_version | cut -d. -f2`
13821     echo "configure: ant_version $ant_version " >&5
13822     echo "configure: ant_version_major $ant_version_major " >&5
13823     echo "configure: ant_version_minor $ant_version_minor " >&5
13824     if test "$ant_version_major" -ge "2"; then
13825         AC_MSG_RESULT([yes, $ant_version])
13826     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13827         AC_MSG_RESULT([yes, $ant_version])
13828     else
13829         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13830     fi
13832     rm -f conftest* core core.* *.core
13834 AC_SUBST(ANT)
13835 AC_SUBST(ANT_HOME)
13836 AC_SUBST(ANT_LIB)
13838 OOO_JUNIT_JAR=
13839 HAMCREST_JAR=
13840 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13841     AC_MSG_CHECKING([for JUnit 4])
13842     if test "$with_junit" = "yes"; then
13843         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13844             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13845         elif test -e /usr/share/java/junit4.jar; then
13846             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13847         else
13848            if test -e /usr/share/lib/java/junit.jar; then
13849               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13850            else
13851               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13852            fi
13853         fi
13854     else
13855         OOO_JUNIT_JAR=$with_junit
13856     fi
13857     if test "$_os" = "WINNT"; then
13858         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13859     fi
13860     printf 'import org.junit.Before;' > conftest.java
13861     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13862         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13863     else
13864         AC_MSG_ERROR(
13865 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13866  specify its pathname via --with-junit=..., or disable it via --without-junit])
13867     fi
13868     rm -f conftest.class conftest.java
13869     if test $OOO_JUNIT_JAR != ""; then
13870         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13871     fi
13873     AC_MSG_CHECKING([for included Hamcrest])
13874     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13875     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13876         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13877     else
13878         AC_MSG_RESULT([Not included])
13879         AC_MSG_CHECKING([for standalone hamcrest jar.])
13880         if test "$with_hamcrest" = "yes"; then
13881             if test -e /usr/share/lib/java/hamcrest.jar; then
13882                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13883             elif test -e /usr/share/java/hamcrest/core.jar; then
13884                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13885             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13886                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13887             else
13888                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13889             fi
13890         else
13891             HAMCREST_JAR=$with_hamcrest
13892         fi
13893         if test "$_os" = "WINNT"; then
13894             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13895         fi
13896         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13897             AC_MSG_RESULT([$HAMCREST_JAR])
13898         else
13899             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),
13900                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13901         fi
13902     fi
13903     rm -f conftest.class conftest.java
13905 AC_SUBST(OOO_JUNIT_JAR)
13906 AC_SUBST(HAMCREST_JAR)
13909 AC_SUBST(SCPDEFS)
13912 # check for wget and curl
13914 WGET=
13915 CURL=
13917 if test "$enable_fetch_external" != "no"; then
13919 CURL=`which curl 2>/dev/null`
13921 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13922     # wget new enough?
13923     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13924     if test $? -eq 0; then
13925         WGET=$i
13926         break
13927     fi
13928 done
13930 if test -z "$WGET" -a -z "$CURL"; then
13931     AC_MSG_ERROR([neither wget nor curl found!])
13936 AC_SUBST(WGET)
13937 AC_SUBST(CURL)
13940 # check for sha256sum
13942 SHA256SUM=
13944 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13945     eval "$i -a 256 --version" > /dev/null 2>&1
13946     ret=$?
13947     if test $ret -eq 0; then
13948         SHA256SUM="$i -a 256"
13949         break
13950     fi
13951 done
13953 if test -z "$SHA256SUM"; then
13954     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13955         eval "$i --version" > /dev/null 2>&1
13956         ret=$?
13957         if test $ret -eq 0; then
13958             SHA256SUM=$i
13959             break
13960         fi
13961     done
13964 if test -z "$SHA256SUM"; then
13965     AC_MSG_ERROR([no sha256sum found!])
13968 AC_SUBST(SHA256SUM)
13970 dnl ===================================================================
13971 dnl Dealing with l10n options
13972 dnl ===================================================================
13973 AC_MSG_CHECKING([which languages to be built])
13974 # get list of all languages
13975 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13976 # the sed command does the following:
13977 #   + if a line ends with a backslash, append the next line to it
13978 #   + adds " on the beginning of the value (after =)
13979 #   + adds " at the end of the value
13980 #   + removes en-US; we want to put it on the beginning
13981 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13982 [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)]
13983 ALL_LANGS="en-US $completelangiso"
13984 # check the configured localizations
13985 WITH_LANG="$with_lang"
13987 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13988 # (Norwegian is "nb" and "nn".)
13989 if test "$WITH_LANG" = "no"; then
13990     WITH_LANG=
13993 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13994     AC_MSG_RESULT([en-US])
13995 else
13996     AC_MSG_RESULT([$WITH_LANG])
13997     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13998     if test -z "$MSGFMT"; then
13999         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14000             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14001         elif test -x "/opt/lo/bin/msgfmt"; then
14002             MSGFMT="/opt/lo/bin/msgfmt"
14003         else
14004             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14005             if test -z "$MSGFMT"; then
14006                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14007             fi
14008         fi
14009     fi
14010     if test -z "$MSGUNIQ"; then
14011         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14012             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14013         elif test -x "/opt/lo/bin/msguniq"; then
14014             MSGUNIQ="/opt/lo/bin/msguniq"
14015         else
14016             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14017             if test -z "$MSGUNIQ"; then
14018                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14019             fi
14020         fi
14021     fi
14023 AC_SUBST(MSGFMT)
14024 AC_SUBST(MSGUNIQ)
14025 # check that the list is valid
14026 for lang in $WITH_LANG; do
14027     test "$lang" = "ALL" && continue
14028     # need to check for the exact string, so add space before and after the list of all languages
14029     for vl in $ALL_LANGS; do
14030         if test "$vl" = "$lang"; then
14031            break
14032         fi
14033     done
14034     if test "$vl" != "$lang"; then
14035         # if you're reading this - you prolly quoted your languages remove the quotes ...
14036         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14037     fi
14038 done
14039 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14040     echo $WITH_LANG | grep -q en-US
14041     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14043 # list with substituted ALL
14044 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14045 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14046 test "$WITH_LANG" = "en-US" && WITH_LANG=
14047 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14048     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14049     ALL_LANGS=`echo $ALL_LANGS qtz`
14051 AC_SUBST(ALL_LANGS)
14052 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14053 AC_SUBST(WITH_LANG)
14054 AC_SUBST(WITH_LANG_LIST)
14055 AC_SUBST(GIT_NEEDED_SUBMODULES)
14057 WITH_POOR_HELP_LOCALIZATIONS=
14058 if test -d "$SRC_ROOT/translations/source"; then
14059     for l in `ls -1 $SRC_ROOT/translations/source`; do
14060         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14061             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14062         fi
14063     done
14065 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14067 if test -n "$with_locales" -a "$with_locales" != ALL; then
14068     WITH_LOCALES="$with_locales"
14070     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14071     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14072     # config_host/config_locales.h.in
14073     for locale in $WITH_LOCALES; do
14074         lang=${locale%_*}
14076         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14078         case $lang in
14079         hi|mr*ne)
14080             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14081             ;;
14082         bg|ru)
14083             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14084             ;;
14085         esac
14086     done
14087 else
14088     AC_DEFINE(WITH_LOCALE_ALL)
14090 AC_SUBST(WITH_LOCALES)
14092 dnl git submodule update --reference
14093 dnl ===================================================================
14094 if test -n "${GIT_REFERENCE_SRC}"; then
14095     for repo in ${GIT_NEEDED_SUBMODULES}; do
14096         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14097             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14098         fi
14099     done
14101 AC_SUBST(GIT_REFERENCE_SRC)
14103 dnl git submodules linked dirs
14104 dnl ===================================================================
14105 if test -n "${GIT_LINK_SRC}"; then
14106     for repo in ${GIT_NEEDED_SUBMODULES}; do
14107         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14108             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14109         fi
14110     done
14112 AC_SUBST(GIT_LINK_SRC)
14114 dnl branding
14115 dnl ===================================================================
14116 AC_MSG_CHECKING([for alternative branding images directory])
14117 # initialize mapped arrays
14118 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14119 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14121 if test -z "$with_branding" -o "$with_branding" = "no"; then
14122     AC_MSG_RESULT([none])
14123     DEFAULT_BRAND_IMAGES="$brand_files"
14124 else
14125     if ! test -d $with_branding ; then
14126         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14127     else
14128         AC_MSG_RESULT([$with_branding])
14129         CUSTOM_BRAND_DIR="$with_branding"
14130         for lfile in $brand_files
14131         do
14132             if ! test -f $with_branding/$lfile ; then
14133                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14134                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14135             else
14136                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14137             fi
14138         done
14139         check_for_progress="yes"
14140     fi
14142 AC_SUBST([BRAND_INTRO_IMAGES])
14143 AC_SUBST([CUSTOM_BRAND_DIR])
14144 AC_SUBST([CUSTOM_BRAND_IMAGES])
14145 AC_SUBST([DEFAULT_BRAND_IMAGES])
14148 AC_MSG_CHECKING([for 'intro' progress settings])
14149 PROGRESSBARCOLOR=
14150 PROGRESSSIZE=
14151 PROGRESSPOSITION=
14152 PROGRESSFRAMECOLOR=
14153 PROGRESSTEXTCOLOR=
14154 PROGRESSTEXTBASELINE=
14156 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14157     source "$with_branding/progress.conf"
14158     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14159 else
14160     AC_MSG_RESULT([none])
14163 AC_SUBST(PROGRESSBARCOLOR)
14164 AC_SUBST(PROGRESSSIZE)
14165 AC_SUBST(PROGRESSPOSITION)
14166 AC_SUBST(PROGRESSFRAMECOLOR)
14167 AC_SUBST(PROGRESSTEXTCOLOR)
14168 AC_SUBST(PROGRESSTEXTBASELINE)
14171 dnl ===================================================================
14172 dnl Custom build version
14173 dnl ===================================================================
14174 AC_MSG_CHECKING([for extra build ID])
14175 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14176     EXTRA_BUILDID="$with_extra_buildid"
14178 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14179 if test -n "$EXTRA_BUILDID" ; then
14180     AC_MSG_RESULT([$EXTRA_BUILDID])
14181 else
14182     AC_MSG_RESULT([not set])
14184 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14186 OOO_VENDOR=
14187 AC_MSG_CHECKING([for vendor])
14188 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14189     OOO_VENDOR="$USERNAME"
14191     if test -z "$OOO_VENDOR"; then
14192         OOO_VENDOR="$USER"
14193     fi
14195     if test -z "$OOO_VENDOR"; then
14196         OOO_VENDOR="`id -u -n`"
14197     fi
14199     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14200 else
14201     OOO_VENDOR="$with_vendor"
14202     AC_MSG_RESULT([$OOO_VENDOR])
14204 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14205 AC_SUBST(OOO_VENDOR)
14207 if test "$_os" = "Android" ; then
14208     ANDROID_PACKAGE_NAME=
14209     AC_MSG_CHECKING([for Android package name])
14210     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14211         if test -n "$ENABLE_DEBUG"; then
14212             # Default to the package name that makes ndk-gdb happy.
14213             ANDROID_PACKAGE_NAME="org.libreoffice"
14214         else
14215             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14216         fi
14218         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14219     else
14220         ANDROID_PACKAGE_NAME="$with_android_package_name"
14221         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14222     fi
14223     AC_SUBST(ANDROID_PACKAGE_NAME)
14226 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14227 if test "$with_compat_oowrappers" = "yes"; then
14228     WITH_COMPAT_OOWRAPPERS=TRUE
14229     AC_MSG_RESULT(yes)
14230 else
14231     WITH_COMPAT_OOWRAPPERS=
14232     AC_MSG_RESULT(no)
14234 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14236 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14237 AC_MSG_CHECKING([for install dirname])
14238 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14239     INSTALLDIRNAME="$with_install_dirname"
14241 AC_MSG_RESULT([$INSTALLDIRNAME])
14242 AC_SUBST(INSTALLDIRNAME)
14244 AC_MSG_CHECKING([for prefix])
14245 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14246 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14247 PREFIXDIR="$prefix"
14248 AC_MSG_RESULT([$PREFIXDIR])
14249 AC_SUBST(PREFIXDIR)
14251 LIBDIR=[$(eval echo $(eval echo $libdir))]
14252 AC_SUBST(LIBDIR)
14254 DATADIR=[$(eval echo $(eval echo $datadir))]
14255 AC_SUBST(DATADIR)
14257 MANDIR=[$(eval echo $(eval echo $mandir))]
14258 AC_SUBST(MANDIR)
14260 DOCDIR=[$(eval echo $(eval echo $docdir))]
14261 AC_SUBST(DOCDIR)
14263 BINDIR=[$(eval echo $(eval echo $bindir))]
14264 AC_SUBST(BINDIR)
14266 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14267 AC_SUBST(INSTALLDIR)
14269 TESTINSTALLDIR="${BUILDDIR}/test-install"
14270 AC_SUBST(TESTINSTALLDIR)
14273 # ===================================================================
14274 # OAuth2 id and secrets
14275 # ===================================================================
14277 AC_MSG_CHECKING([for Google Drive client id and secret])
14278 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14279     AC_MSG_RESULT([not set])
14280     GDRIVE_CLIENT_ID="\"\""
14281     GDRIVE_CLIENT_SECRET="\"\""
14282 else
14283     AC_MSG_RESULT([set])
14284     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14285     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14287 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14288 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14290 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14291 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14292     AC_MSG_RESULT([not set])
14293     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14294     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14295 else
14296     AC_MSG_RESULT([set])
14297     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14298     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14300 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14301 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14303 AC_MSG_CHECKING([for OneDrive client id and secret])
14304 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14305     AC_MSG_RESULT([not set])
14306     ONEDRIVE_CLIENT_ID="\"\""
14307     ONEDRIVE_CLIENT_SECRET="\"\""
14308 else
14309     AC_MSG_RESULT([set])
14310     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14311     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14313 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14314 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14317 dnl ===================================================================
14318 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14319 dnl --enable-dependency-tracking configure option
14320 dnl ===================================================================
14321 AC_MSG_CHECKING([whether to enable dependency tracking])
14322 if test "$enable_dependency_tracking" = "no"; then
14323     nodep=TRUE
14324     AC_MSG_RESULT([no])
14325 else
14326     AC_MSG_RESULT([yes])
14328 AC_SUBST(nodep)
14330 dnl ===================================================================
14331 dnl Number of CPUs to use during the build
14332 dnl ===================================================================
14333 AC_MSG_CHECKING([for number of processors to use])
14334 # plain --with-parallelism is just the default
14335 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14336     if test "$with_parallelism" = "no"; then
14337         PARALLELISM=0
14338     else
14339         PARALLELISM=$with_parallelism
14340     fi
14341 else
14342     if test "$enable_icecream" = "yes"; then
14343         PARALLELISM="40"
14344     else
14345         case `uname -s` in
14347         Darwin|FreeBSD|NetBSD|OpenBSD)
14348             PARALLELISM=`sysctl -n hw.ncpu`
14349             ;;
14351         Linux)
14352             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14353         ;;
14354         # what else than above does profit here *and* has /proc?
14355         *)
14356             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14357             ;;
14358         esac
14360         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14361         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14362     fi
14365 if test $PARALLELISM -eq 0; then
14366     AC_MSG_RESULT([explicit make -j option needed])
14367 else
14368     AC_MSG_RESULT([$PARALLELISM])
14370 AC_SUBST(PARALLELISM)
14373 # Set up ILIB for MSVC build
14375 ILIB1=
14376 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14377     ILIB="."
14378     if test -n "$JAVA_HOME"; then
14379         ILIB="$ILIB;$JAVA_HOME/lib"
14380     fi
14381     ILIB1=-link
14382     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14383     ILIB="$ILIB;$formatted_path"
14384     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14385     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14386     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14387     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14388         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14389         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14390     fi
14391     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14392     ucrtlibpath_formatted=$formatted_path
14393     ILIB="$ILIB;$ucrtlibpath_formatted"
14394     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14395     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14396         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14397         ILIB="$ILIB;$formatted_path"
14398     else
14399         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14400         ILIB="$ILIB;$formatted_path"
14401     fi
14403     if test "$cross_compiling" != "yes"; then
14404         ILIB_FOR_BUILD="$ILIB"
14405     fi
14407 AC_SUBST(ILIB)
14408 AC_SUBST(ILIB_FOR_BUILD)
14410 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14411 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14412 dnl from consteval constructor initializing const variable",
14413 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14414 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14415 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14416 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14417 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14418 dnl constructor in ternary expression (/std:c++latest)", or
14419 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14420 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14421 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14422 dnl && "Ptr must be a pointer to Val type!"' failed.":
14423 AC_LANG_PUSH([C++])
14424 save_CXX=$CXX
14425 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14426     CXX="env LIB=$ILIB $CXX"
14428 save_CXXFLAGS=$CXXFLAGS
14429 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14430 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14431         struct S {
14432             consteval S() { i = 1; }
14433             int i = 0;
14434         };
14435         S const s;
14437         struct S1 { consteval S1(int) {} };
14438         struct S2 {
14439             S1 x;
14440             S2(): x(0) {}
14441         };
14443         struct S3 {
14444             consteval S3() {}
14445             union {
14446                 int a;
14447                 unsigned b = 0;
14448             };
14449         };
14450         void f() { S3(); }
14452         struct S4 { consteval S4() = default; };
14453         void f4(bool b) { b ? S4() : S4(); }
14455         struct S5 {
14456             consteval S5() { c = 0; }
14457             char * f() { return &c; }
14458             union {
14459                 char c;
14460                 int i;
14461             };
14462         };
14463         auto s5 = S5().f();
14464     ], [
14465         return (s.i == 1) ? 0 : 1;
14466     ])], [
14467         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14468         AC_MSG_RESULT([yes])
14469     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14470 CXX=$save_CXX
14471 CXXFLAGS=$save_CXXFLAGS
14472 AC_LANG_POP([C++])
14474 # ===================================================================
14475 # Creating bigger shared library to link against
14476 # ===================================================================
14477 AC_MSG_CHECKING([whether to create huge library])
14478 MERGELIBS=
14480 if test $_os = iOS -o $_os = Android; then
14481     # Never any point in mergelibs for these as we build just static
14482     # libraries anyway...
14483     enable_mergelibs=no
14486 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14487     if test $_os != Linux -a $_os != WINNT; then
14488         add_warning "--enable-mergelibs is not tested for this platform"
14489     fi
14490     MERGELIBS="TRUE"
14491     AC_MSG_RESULT([yes])
14492     AC_DEFINE(ENABLE_MERGELIBS)
14493 else
14494     AC_MSG_RESULT([no])
14496 AC_SUBST([MERGELIBS])
14498 dnl ===================================================================
14499 dnl icerun is a wrapper that stops us spawning tens of processes
14500 dnl locally - for tools that can't be executed on the compile cluster
14501 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14502 dnl ===================================================================
14503 AC_MSG_CHECKING([whether to use icerun wrapper])
14504 ICECREAM_RUN=
14505 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14506     ICECREAM_RUN=icerun
14507     AC_MSG_RESULT([yes])
14508 else
14509     AC_MSG_RESULT([no])
14511 AC_SUBST(ICECREAM_RUN)
14513 dnl ===================================================================
14514 dnl Setup the ICECC_VERSION for the build the same way it was set for
14515 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14516 dnl ===================================================================
14517 x_ICECC_VERSION=[\#]
14518 if test -n "$ICECC_VERSION" ; then
14519     x_ICECC_VERSION=
14521 AC_SUBST(x_ICECC_VERSION)
14522 AC_SUBST(ICECC_VERSION)
14524 dnl ===================================================================
14526 AC_MSG_CHECKING([MPL subset])
14527 MPL_SUBSET=
14529 if test "$enable_mpl_subset" = "yes"; then
14530     warn_report=false
14531     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14532         warn_report=true
14533     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14534         warn_report=true
14535     fi
14536     if test "$warn_report" = "true"; then
14537         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14538     fi
14539     if test "x$enable_postgresql_sdbc" != "xno"; then
14540         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14541     fi
14542     if test "$enable_lotuswordpro" = "yes"; then
14543         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14544     fi
14545     if test -n "$ENABLE_POPPLER"; then
14546         if test "x$SYSTEM_POPPLER" = "x"; then
14547             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14548         fi
14549     fi
14550     # cf. m4/libo_check_extension.m4
14551     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14552         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14553     fi
14554     for theme in $WITH_THEMES; do
14555         case $theme in
14556         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14557             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14558         *) : ;;
14559         esac
14560     done
14562     ENABLE_OPENGL_TRANSITIONS=
14564     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14565         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14566     fi
14568     MPL_SUBSET="TRUE"
14569     AC_DEFINE(MPL_HAVE_SUBSET)
14570     AC_MSG_RESULT([only])
14571 else
14572     AC_MSG_RESULT([no restrictions])
14574 AC_SUBST(MPL_SUBSET)
14576 dnl ===================================================================
14578 AC_MSG_CHECKING([formula logger])
14579 ENABLE_FORMULA_LOGGER=
14581 if test "x$enable_formula_logger" = "xyes"; then
14582     AC_MSG_RESULT([yes])
14583     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14584     ENABLE_FORMULA_LOGGER=TRUE
14585 elif test -n "$ENABLE_DBGUTIL" ; then
14586     AC_MSG_RESULT([yes])
14587     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14588     ENABLE_FORMULA_LOGGER=TRUE
14589 else
14590     AC_MSG_RESULT([no])
14593 AC_SUBST(ENABLE_FORMULA_LOGGER)
14595 dnl ===================================================================
14596 dnl Checking for active Antivirus software.
14597 dnl ===================================================================
14599 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14600     AC_MSG_CHECKING([for active Antivirus software])
14601     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14602     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14603     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14604         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14605             AC_MSG_RESULT([found])
14606             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14607             echo $EICAR_STRING > $SRC_ROOT/eicar
14608             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14609             rm $SRC_ROOT/eicar
14610             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14611                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14612             fi
14613             echo $EICAR_STRING > $BUILDDIR/eicar
14614             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14615             rm $BUILDDIR/eicar
14616             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14617                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14618             fi
14619             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"
14620         else
14621             AC_MSG_RESULT([not found])
14622         fi
14623     else
14624         AC_MSG_RESULT([n/a])
14625     fi
14628 dnl ===================================================================
14629 dnl Setting up the environment.
14630 dnl ===================================================================
14631 AC_MSG_NOTICE([setting up the build environment variables...])
14633 AC_SUBST(COMPATH)
14635 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14636     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14637         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14638         ATL_INCLUDE="$COMPATH/atlmfc/include"
14639     elif test -d "$COMPATH/atlmfc/lib"; then
14640         ATL_LIB="$COMPATH/atlmfc/lib"
14641         ATL_INCLUDE="$COMPATH/atlmfc/include"
14642     else
14643         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14644         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14645     fi
14646     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14647     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14648     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14651 if test "$build_os" = "cygwin"; then
14652     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14653     PathFormat "/usr/bin/find.exe"
14654     FIND="$formatted_path"
14655     PathFormat "/usr/bin/sort.exe"
14656     SORT="$formatted_path"
14657     PathFormat "/usr/bin/grep.exe"
14658     WIN_GREP="$formatted_path"
14659     PathFormat "/usr/bin/ls.exe"
14660     WIN_LS="$formatted_path"
14661     PathFormat "/usr/bin/touch.exe"
14662     WIN_TOUCH="$formatted_path"
14663 else
14664     FIND=find
14665     SORT=sort
14668 AC_SUBST(ATL_INCLUDE)
14669 AC_SUBST(ATL_LIB)
14670 AC_SUBST(FIND)
14671 AC_SUBST(SORT)
14672 AC_SUBST(WIN_GREP)
14673 AC_SUBST(WIN_LS)
14674 AC_SUBST(WIN_TOUCH)
14676 AC_SUBST(BUILD_TYPE)
14678 AC_SUBST(SOLARINC)
14680 PathFormat "$PERL"
14681 PERL="$formatted_path"
14682 AC_SUBST(PERL)
14684 if test -n "$TMPDIR"; then
14685     TEMP_DIRECTORY="$TMPDIR"
14686 else
14687     TEMP_DIRECTORY="/tmp"
14689 if test "$build_os" = "cygwin"; then
14690     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14692 AC_SUBST(TEMP_DIRECTORY)
14694 # setup the PATH for the environment
14695 if test -n "$LO_PATH_FOR_BUILD"; then
14696     LO_PATH="$LO_PATH_FOR_BUILD"
14697     case "$host_os" in
14698     cygwin*|wsl*)
14699         pathmunge "$MSVC_HOST_PATH" "before"
14700         ;;
14701     esac
14702 else
14703     LO_PATH="$PATH"
14705     case "$host_os" in
14707     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14708         if test "$ENABLE_JAVA" != ""; then
14709             pathmunge "$JAVA_HOME/bin" "after"
14710         fi
14711         ;;
14713     cygwin*|wsl*)
14714         # Win32 make needs native paths
14715         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14716             LO_PATH=`cygpath -p -m "$PATH"`
14717         fi
14718         if test "$WIN_BUILD_ARCH" = "x64"; then
14719             # needed for msi packaging
14720             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14721         fi
14722         # .NET 4.6 and higher don't have bin directory
14723         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14724             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14725         fi
14726         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14727         pathmunge "$CSC_PATH" "before"
14728         pathmunge "$MIDL_PATH" "before"
14729         pathmunge "$AL_PATH" "before"
14730         pathmunge "$MSVC_MULTI_PATH" "before"
14731         pathmunge "$MSVC_BUILD_PATH" "before"
14732         if test -n "$MSBUILD_PATH" ; then
14733             pathmunge "$MSBUILD_PATH" "before"
14734         fi
14735         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14736         if test "$ENABLE_JAVA" != ""; then
14737             if test -d "$JAVA_HOME/jre/bin/client"; then
14738                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14739             fi
14740             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14741                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14742             fi
14743             pathmunge "$JAVA_HOME/bin" "before"
14744         fi
14745         pathmunge "$MSVC_HOST_PATH" "before"
14746         ;;
14748     solaris*)
14749         pathmunge "/usr/css/bin" "before"
14750         if test "$ENABLE_JAVA" != ""; then
14751             pathmunge "$JAVA_HOME/bin" "after"
14752         fi
14753         ;;
14754     esac
14757 AC_SUBST(LO_PATH)
14759 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14760 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14761     x_LO_ELFCHECK_ALLOWLIST=
14762 else
14763     x_LO_ELFCHECK_ALLOWLIST=[\#]
14765 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14766 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14768 libo_FUZZ_SUMMARY
14770 # Generate a configuration sha256 we can use for deps
14771 if test -f config_host.mk; then
14772     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14774 if test -f config_host_lang.mk; then
14775     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14778 CFLAGS=$my_original_CFLAGS
14779 CXXFLAGS=$my_original_CXXFLAGS
14780 CPPFLAGS=$my_original_CPPFLAGS
14782 AC_CONFIG_LINKS([include:include])
14784 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14785 # BUILD platform configuration] - otherwise breaks cross building
14786 AC_CONFIG_FILES([config_host.mk
14787                  config_host_lang.mk
14788                  Makefile
14789                  lo.xcent
14790                  bin/bffvalidator.sh
14791                  bin/odfvalidator.sh
14792                  bin/officeotron.sh
14793                  hardened_runtime.xcent
14794                  instsetoo_native/util/openoffice.lst
14795                  sysui/desktop/macosx/Info.plist
14796                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14797 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14798 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14799 AC_CONFIG_HEADERS([config_host/config_clang.h])
14800 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14801 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14802 AC_CONFIG_HEADERS([config_host/config_eot.h])
14803 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14804 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14805 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14806 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14807 AC_CONFIG_HEADERS([config_host/config_features.h])
14808 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14809 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14810 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14811 AC_CONFIG_HEADERS([config_host/config_folders.h])
14812 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14813 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14814 AC_CONFIG_HEADERS([config_host/config_gio.h])
14815 AC_CONFIG_HEADERS([config_host/config_global.h])
14816 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14817 AC_CONFIG_HEADERS([config_host/config_java.h])
14818 AC_CONFIG_HEADERS([config_host/config_langs.h])
14819 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14820 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14821 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14822 AC_CONFIG_HEADERS([config_host/config_locales.h])
14823 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14824 AC_CONFIG_HEADERS([config_host/config_oox.h])
14825 AC_CONFIG_HEADERS([config_host/config_options.h])
14826 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14827 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14828 AC_CONFIG_HEADERS([config_host/config_skia.h])
14829 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14830 AC_CONFIG_HEADERS([config_host/config_validation.h])
14831 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14832 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14833 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14834 AC_CONFIG_HEADERS([config_host/config_version.h])
14835 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14836 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14837 AC_CONFIG_HEADERS([config_host/config_python.h])
14838 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14839 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14840 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14841 AC_OUTPUT
14843 if test "$CROSS_COMPILING" = TRUE; then
14844     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14847 # touch the config timestamp file
14848 if test ! -f config_host.mk.stamp; then
14849     echo > config_host.mk.stamp
14850 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14851     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14852 else
14853     echo > config_host.mk.stamp
14856 # touch the config lang timestamp file
14857 if test ! -f config_host_lang.mk.stamp; then
14858     echo > config_host_lang.mk.stamp
14859 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14860     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14861 else
14862     echo > config_host_lang.mk.stamp
14866 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14867         -a "$build_os" = "cygwin"; then
14869 cat << _EOS
14870 ****************************************************************************
14871 WARNING:
14872 Your make version is known to be horribly slow, and hard to debug
14873 problems with. To get a reasonably functional make please do:
14875 to install a pre-compiled binary make for Win32
14877  mkdir -p /opt/lo/bin
14878  cd /opt/lo/bin
14879  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14880  cp make-4.2.1-msvc.exe make
14881  chmod +x make
14883 to install from source:
14884 place yourself in a working directory of you choice.
14886  git clone git://git.savannah.gnu.org/make.git
14888  [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"]
14889  set PATH=%PATH%;C:\Cygwin\bin
14890  [or Cygwin64, if that is what you have]
14891  cd path-to-make-repo-you-cloned-above
14892  build_w32.bat --without-guile
14894 should result in a WinRel/gnumake.exe.
14895 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14897 Then re-run autogen.sh
14899 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14900 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14902 _EOS
14903 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14904     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14909 cat << _EOF
14910 ****************************************************************************
14912 To show information on various make targets and make flags, run:
14913 $GNUMAKE help
14915 To just build, run:
14916 $GNUMAKE
14918 _EOF
14920 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14921     cat << _EOF
14922 After the build has finished successfully, you can immediately run what you built using the command:
14923 _EOF
14925     if test $_os = Darwin; then
14926         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14927     else
14928         echo instdir/program/soffice
14929     fi
14930     cat << _EOF
14932 If you want to run the unit tests, run:
14933 $GNUMAKE check
14935 _EOF
14938 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14939     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14940     cat "$WARNINGS_FILE_FOR_BUILD"
14941     echo
14944 if test -s "$WARNINGS_FILE"; then
14945     echo "HOST config ($WARNINGS_FILE)"
14946     cat "$WARNINGS_FILE"
14949 # Remove unneeded emconfigure artifacts
14950 rm -f a.out a.wasm a.out.js a.out.wasm
14952 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: