calc: on editing invalidation of view with different zoom is wrong
[LibreOffice.git] / configure.ac
blob25eb99556fe295e74ef201758a36497be779139d
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([Collabora Office],[23.05.6.1],[],[],[https://collaboraoffice.com/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     # Convert to unix path, mkdir would treat c:/path as a relative path.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
209     test ! -e "$rel" && mkdir -p "$rel"
210     if test -d "$rel" ; then
211         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212         absolute_path="$(pwd)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
228         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
235     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
242 dnl from themselves
244 mac_sanitize_path()
246     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249     mac_git_path=`which git 2>/dev/null`
250     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251         mac_path="$mac_path:`dirname $mac_git_path`"
252     fi
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255     mac_gpg_path=`which gpg 2>/dev/null`
256     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257         mac_path="$mac_path:`dirname $mac_gpg_path`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset mac_gpg_path
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284     eval local MIN_MINOR="\$${1}_${2}_MINOR"
285     eval local MIN_TINY="\$${1}_${2}_TINY"
286     eval local CUR_MAJOR="\$${1}_MAJOR"
287     eval local CUR_MINOR="\$${1}_MINOR"
288     eval local CUR_TINY="\$${1}_TINY"
289     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 echo ""
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308     ac_cv_host="x86_64-pc-wsl"
309     ac_cv_host_cpu="x86_64"
310     ac_cv_host_os="wsl"
311     ac_cv_build="$ac_cv_host"
312     ac_cv_build_cpu="$ac_cv_host_cpu"
313     ac_cv_build_os="$ac_cv_host_os"
315     # Emulation of Cygwin's cygpath command for WSL.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
349         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352             if test -n "$opt_u"; then
353                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
398         # Nothing special with these file names, just arbitrary ones picked to test with
399         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403         # At least on my machine for instance this file does have an 8.3 name
404         cygpath -d /mnt/c/windows/WindowsUpdate.log
405         # But for instance this one doesn't
406         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407         cygpath -ws /mnt/c/windows/WindowsUpdate.log
408         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409         cygpath -ms /mnt/c/windows/WindowsUpdate.log
411         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
414         exit 0
415     fi
417     if test -z "$WSL_LO_HELPER"; then
418         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452     PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455     PRODUCTNAME="${PRODUCTNAME}Dev"
456     PRODUCTNAME=AC_PACKAGE_NAME
458 AC_MSG_RESULT([$PRODUCTNAME])
459 AC_SUBST(PRODUCTNAME)
460 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
461 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
463 dnl ===================================================================
464 dnl Our version is defined by the AC_INIT() at the top of this script.
465 dnl ===================================================================
467 AC_MSG_CHECKING([for package version])
468 if test -n "$with_package_version" -a "$with_package_version" != no; then
469     PACKAGE_VERSION="$with_package_version"
471 AC_MSG_RESULT([$PACKAGE_VERSION])
473 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
475 LIBO_VERSION_MAJOR=$1
476 LIBO_VERSION_MINOR=$2
477 LIBO_VERSION_MICRO=$3
478 LIBO_VERSION_PATCH=$4
480 LIBO_VERSION_SUFFIX=$5
482 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
483 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
484 # they get undoubled before actually passed to sed.
485 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
486 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
487 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
488 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
490 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
491 # three non-negative integers. Please find more information about CFBundleVersion at
492 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
494 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
495 # of at most three non-negative integers. Please find more information about
496 # CFBundleShortVersionString at
497 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
499 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
500 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
502 AC_SUBST(LIBO_VERSION_MAJOR)
503 AC_SUBST(LIBO_VERSION_MINOR)
504 AC_SUBST(LIBO_VERSION_MICRO)
505 AC_SUBST(LIBO_VERSION_PATCH)
506 AC_SUBST(LIBO_VERSION_SUFFIX)
507 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
508 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
509 AC_SUBST(MACOSX_BUNDLE_VERSION)
511 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
512 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
513 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
514 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
516 LIBO_THIS_YEAR=`date +%Y`
517 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
519 # replace backslashes, to get a valid c++ string
520 config_args=$(echo $ac_configure_args | tr '\\' '/')
521 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
523 dnl ===================================================================
524 dnl Product version
525 dnl ===================================================================
526 AC_MSG_CHECKING([for product version])
527 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
528 AC_MSG_RESULT([$PRODUCTVERSION])
529 AC_SUBST(PRODUCTVERSION)
531 AC_PROG_EGREP
532 # AC_PROG_EGREP doesn't set GREP on all systems as well
533 AC_PATH_PROG(GREP, grep)
535 BUILDDIR=`pwd`
536 cd $srcdir
537 SRC_ROOT=`pwd`
538 cd $BUILDDIR
539 x_Cygwin=[\#]
541 dnl ======================================
542 dnl Required GObject introspection version
543 dnl ======================================
544 INTROSPECTION_REQUIRED_VERSION=1.32.0
546 dnl ===================================================================
547 dnl Search all the common names for GNU Make
548 dnl ===================================================================
549 AC_MSG_CHECKING([for GNU Make])
551 # try to use our own make if it is available and GNUMAKE was not already defined
552 if test -z "$GNUMAKE"; then
553     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
554         GNUMAKE="$LODE_HOME/opt/bin/make"
555     elif test -x "/opt/lo/bin/make"; then
556         GNUMAKE="/opt/lo/bin/make"
557     fi
560 GNUMAKE_WIN_NATIVE=
561 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
562     if test -n "$a"; then
563         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
564         if test $? -eq 0;  then
565             if test "$build_os" = "cygwin"; then
566                 if test -n "$($a -v | grep 'Built for Windows')" ; then
567                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
568                     GNUMAKE_WIN_NATIVE="TRUE"
569                 else
570                     GNUMAKE=`which $a`
571                 fi
572             else
573                 GNUMAKE=`which $a`
574             fi
575             break
576         fi
577     fi
578 done
579 AC_MSG_RESULT($GNUMAKE)
580 if test -z "$GNUMAKE"; then
581     AC_MSG_ERROR([not found. install GNU Make.])
582 else
583     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
584         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
585     fi
588 win_short_path_for_make()
590     local short_path="$1"
591     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
592         cygpath -sm "$short_path"
593     else
594         cygpath -u "$(cygpath -d "$short_path")"
595     fi
599 if test "$build_os" = "cygwin"; then
600     PathFormat "$SRC_ROOT"
601     SRC_ROOT="$formatted_path"
602     PathFormat "$BUILDDIR"
603     BUILDDIR="$formatted_path"
604     x_Cygwin=
605     AC_MSG_CHECKING(for explicit COMSPEC)
606     if test -z "$COMSPEC"; then
607         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
608     else
609         AC_MSG_RESULT([found: $COMSPEC])
610     fi
613 AC_SUBST(SRC_ROOT)
614 AC_SUBST(BUILDDIR)
615 AC_SUBST(x_Cygwin)
616 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
617 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
618 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
620 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
621     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
624 # need sed in os checks...
625 AC_PATH_PROGS(SED, sed)
626 if test -z "$SED"; then
627     AC_MSG_ERROR([install sed to run this script])
630 # Set the ENABLE_LTO variable
631 # ===================================================================
632 AC_MSG_CHECKING([whether to use link-time optimization])
633 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
634     ENABLE_LTO="TRUE"
635     AC_MSG_RESULT([yes])
636 else
637     ENABLE_LTO=""
638     AC_MSG_RESULT([no])
640 AC_SUBST(ENABLE_LTO)
642 AC_ARG_ENABLE(fuzz-options,
643     AS_HELP_STRING([--enable-fuzz-options],
644         [Randomly enable or disable each of those configurable options
645          that are supposed to be freely selectable without interdependencies,
646          or where bad interaction from interdependencies is automatically avoided.])
649 dnl ===================================================================
650 dnl When building for Android, --with-android-ndk,
651 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
652 dnl mandatory
653 dnl ===================================================================
655 AC_ARG_WITH(android-ndk,
656     AS_HELP_STRING([--with-android-ndk],
657         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
660 AC_ARG_WITH(android-ndk-toolchain-version,
661     AS_HELP_STRING([--with-android-ndk-toolchain-version],
662         [Specify which toolchain version to use, of those present in the
663         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
664         with_android_ndk_toolchain_version=clang5.0)
666 AC_ARG_WITH(android-sdk,
667     AS_HELP_STRING([--with-android-sdk],
668         [Specify location of the Android SDK. Mandatory when building for Android.]),
671 AC_ARG_WITH(android-api-level,
672     AS_HELP_STRING([--with-android-api-level],
673         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
676 ANDROID_NDK_DIR=
677 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
678     with_android_ndk="$SRC_ROOT/external/android-ndk"
680 if test -n "$with_android_ndk"; then
681     eval ANDROID_NDK_DIR=$with_android_ndk
683     # Set up a lot of pre-canned defaults
685     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
686         if test ! -f $ANDROID_NDK_DIR/source.properties; then
687             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
688         fi
689         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
690     else
691         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
692     fi
693     if test -z "$ANDROID_NDK_VERSION";  then
694         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
695     fi
696     case $ANDROID_NDK_VERSION in
697     r9*|r10*)
698         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
699         ;;
700     11.1.*|12.1.*|13.1.*|14.1.*)
701         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
702         ;;
703     16.*|17.*|18.*|19.*|20.*)
704         ;;
705     *)
706         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
707         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
708         ;;
709     esac
711     ANDROID_API_LEVEL=16
712     if test -n "$with_android_api_level" ; then
713         ANDROID_API_LEVEL="$with_android_api_level"
714     fi
716     android_cpu=$host_cpu
717     if test $host_cpu = arm; then
718         android_platform_prefix=arm-linux-androideabi
719         android_gnu_prefix=$android_platform_prefix
720         LLVM_TRIPLE=armv7a-linux-androideabi
721         ANDROID_APP_ABI=armeabi-v7a
722         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
723     elif test $host_cpu = aarch64; then
724         android_platform_prefix=aarch64-linux-android
725         android_gnu_prefix=$android_platform_prefix
726         LLVM_TRIPLE=$android_platform_prefix
727         # minimum android version that supports aarch64
728         if test "$ANDROID_API_LEVEL" -lt "21" ; then
729             ANDROID_API_LEVEL=21
730         fi
731         ANDROID_APP_ABI=arm64-v8a
732     elif test $host_cpu = x86_64; then
733         android_platform_prefix=x86_64-linux-android
734         android_gnu_prefix=$android_platform_prefix
735         LLVM_TRIPLE=$android_platform_prefix
736         # minimum android version that supports x86_64
737         ANDROID_API_LEVEL=21
738         ANDROID_APP_ABI=x86_64
739     else
740         # host_cpu is something like "i386" or "i686" I guess, NDK uses
741         # "x86" in some contexts
742         android_cpu=x86
743         android_platform_prefix=$android_cpu
744         android_gnu_prefix=i686-linux-android
745         LLVM_TRIPLE=$android_gnu_prefix
746         ANDROID_APP_ABI=x86
747     fi
749     case "$with_android_ndk_toolchain_version" in
750     clang5.0)
751         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
752         ;;
753     *)
754         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
755     esac
757     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
759     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
760     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
761     # manage to link the (app-specific) single huge .so that is built for the app in
762     # android/source/ if there is debug information in a significant part of the object files.
763     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
764     # all objects have been built with debug information.)
765     case $build_os in
766     linux-gnu*)
767         android_HOST_TAG=linux-x86_64
768         ;;
769     darwin*)
770         android_HOST_TAG=darwin-x86_64
771         ;;
772     *)
773         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
774         # ndk would also support windows and windows-x86_64
775         ;;
776     esac
777     android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
778     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
779     dnl TODO: NSS build uses it...
780     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
781     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
783     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
784     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
785     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
786     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
787     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
789     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
790     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
791     if test "$ENABLE_LTO" = TRUE; then
792         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
793         # $CC and $CXX when building external libraries
794         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
795     fi
797     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
799     if test -z "$CC"; then
800         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
801         CC_BASE="clang"
802     fi
803     if test -z "$CXX"; then
804         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
805         CXX_BASE="clang++"
806     fi
808 AC_SUBST(ANDROID_NDK_DIR)
809 AC_SUBST(ANDROID_APP_ABI)
810 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
812 dnl ===================================================================
813 dnl --with-android-sdk
814 dnl ===================================================================
815 ANDROID_SDK_DIR=
816 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
817     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
819 if test -n "$with_android_sdk"; then
820     eval ANDROID_SDK_DIR=$with_android_sdk
821     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
823 AC_SUBST(ANDROID_SDK_DIR)
825 AC_ARG_ENABLE([android-lok],
826     AS_HELP_STRING([--enable-android-lok],
827         [The Android app from the android/ subdir needs several tweaks all
828          over the place that break the LOK when used in the Online-based
829          Android app.  This switch indicates that the intent of this build is
830          actually the Online-based, non-modified LOK.])
832 ENABLE_ANDROID_LOK=
833 if test -n "$ANDROID_NDK_DIR" ; then
834     if test "$enable_android_lok" = yes; then
835         ENABLE_ANDROID_LOK=TRUE
836         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
837         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
838     else
839         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
840     fi
842 AC_SUBST([ENABLE_ANDROID_LOK])
844 libo_FUZZ_ARG_ENABLE([android-editing],
845     AS_HELP_STRING([--enable-android-editing],
846         [Enable the experimental editing feature on Android.])
848 ENABLE_ANDROID_EDITING=
849 if test "$enable_android_editing" = yes; then
850     ENABLE_ANDROID_EDITING=TRUE
852 AC_SUBST([ENABLE_ANDROID_EDITING])
854 disable_database_connectivity_dependencies()
856     enable_evolution2=no
857     enable_firebird_sdbc=no
858     enable_mariadb_sdbc=no
859     enable_postgresql_sdbc=no
860     enable_report_builder=no
863 # ===================================================================
865 # Start initial platform setup
867 # The using_* variables reflect platform support and should not be
868 # changed after the "End initial platform setup" block.
869 # This is also true for most test_* variables.
870 # ===================================================================
871 build_crypto=yes
872 test_clucene=no
873 test_gdb_index=no
874 test_openldap=yes
875 test_split_debug=no
876 test_webdav=yes
877 usable_dlapi=yes
879 # There is currently just iOS not using salplug, so this explicitly enables it.
880 # must: using_freetype_fontconfig
881 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
882 # must: using_x11
884 # Default values, as such probably valid just for Linux, set
885 # differently below just for Mac OSX, but at least better than
886 # hardcoding these as we used to do. Much of this is duplicated also
887 # in solenv for old build system and for gbuild, ideally we should
888 # perhaps define stuff like this only here in configure.ac?
890 LINKFLAGSSHL="-shared"
891 PICSWITCH="-fpic"
892 DLLPOST=".so"
894 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
896 INSTROOTBASESUFFIX=
897 INSTROOTCONTENTSUFFIX=
898 SDKDIRNAME=sdk
900 HOST_PLATFORM="$host"
902 host_cpu_for_clang="$host_cpu"
904 case "$host_os" in
906 solaris*)
907     using_freetype_fontconfig=yes
908     using_x11=yes
909     build_skia=yes
910     _os=SunOS
912     dnl ===========================================================
913     dnl Check whether we're using Solaris 10 - SPARC or Intel.
914     dnl ===========================================================
915     AC_MSG_CHECKING([the Solaris operating system release])
916     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
917     if test "$_os_release" -lt "10"; then
918         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
919     else
920         AC_MSG_RESULT([ok ($_os_release)])
921     fi
923     dnl Check whether we're using a SPARC or i386 processor
924     AC_MSG_CHECKING([the processor type])
925     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
926         AC_MSG_RESULT([ok ($host_cpu)])
927     else
928         AC_MSG_ERROR([only SPARC and i386 processors are supported])
929     fi
930     ;;
932 linux-gnu*|k*bsd*-gnu*|linux-musl*)
933     using_freetype_fontconfig=yes
934     using_x11=yes
935     build_skia=yes
936     test_gdb_index=yes
937     test_split_debug=yes
938     if test "$enable_fuzzers" = yes; then
939         test_system_freetype=no
940     fi
941     _os=Linux
942     ;;
944 gnu)
945     using_freetype_fontconfig=yes
946     using_x11=no
947     _os=GNU
948      ;;
950 cygwin*|wsl*)
951     # When building on Windows normally with MSVC under Cygwin,
952     # configure thinks that the host platform (the platform the
953     # built code will run on) is Cygwin, even if it obviously is
954     # Windows, which in Autoconf terminology is called
955     # "mingw32". (Which is misleading as MinGW is the name of the
956     # tool-chain, not an operating system.)
958     # Somewhat confusing, yes. But this configure script doesn't
959     # look at $host etc that much, it mostly uses its own $_os
960     # variable, set here in this case statement.
962     using_freetype_fontconfig=no
963     using_x11=no
964     test_unix_dlapi=no
965     test_openldap=no
966     enable_pagein=no
967     build_skia=yes
968     _os=WINNT
970     DLLPOST=".dll"
971     LINKFLAGSNOUNDEFS=
973     if test "$host_cpu" = "aarch64"; then
974         build_skia=no
975         enable_gpgmepp=no
976         enable_coinmp=no
977         enable_firebird_sdbc=no
978     fi
979     ;;
981 darwin*) # macOS
982     using_freetype_fontconfig=no
983     using_x11=no
984     build_skia=yes
985     enable_pagein=no
986     if test -n "$LODE_HOME" ; then
987         mac_sanitize_path
988         AC_MSG_NOTICE([sanitized the PATH to $PATH])
989     fi
990     _os=Darwin
991     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
992     INSTROOTCONTENTSUFFIX=/Contents
993     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
994     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
995     LINKFLAGSSHL="-dynamiclib"
997     # -fPIC is default
998     PICSWITCH=""
1000     DLLPOST=".dylib"
1002     # -undefined error is the default
1003     LINKFLAGSNOUNDEFS=""
1004     case "$host_cpu" in
1005     aarch64|arm64)
1006         # Apple's Clang uses "arm64"
1007         host_cpu_for_clang=arm64
1008     esac
1011 ios*) # iOS
1012     using_freetype_fontconfig=no
1013     using_x11=no
1014     build_crypto=no
1015     test_libcmis=no
1016     test_openldap=no
1017     test_webdav=no
1018     if test -n "$LODE_HOME" ; then
1019         mac_sanitize_path
1020         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1021     fi
1022     enable_gpgmepp=no
1023     _os=iOS
1024     enable_mpl_subset=yes
1025     enable_lotuswordpro=no
1026     disable_database_connectivity_dependencies
1027     enable_coinmp=no
1028     enable_lpsolve=no
1029     enable_extension_integration=no
1030     enable_xmlhelp=no
1031     with_ppds=no
1032     if test "$enable_ios_simulator" = "yes"; then
1033         host=x86_64-apple-darwin
1034     fi
1035     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1036     LINKFLAGSSHL="-dynamiclib"
1038     # -fPIC is default
1039     PICSWITCH=""
1041     DLLPOST=".dylib"
1043     # -undefined error is the default
1044     LINKFLAGSNOUNDEFS=""
1046     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1047     # part, so use aarch64-apple-darwin for now.
1048     HOST_PLATFORM=aarch64-apple-darwin
1050     # Apple's Clang uses "arm64"
1051     host_cpu_for_clang=arm64
1054 freebsd*)
1055     using_freetype_fontconfig=yes
1056     using_x11=yes
1057     build_skia=yes
1058     AC_MSG_CHECKING([the FreeBSD operating system release])
1059     if test -n "$with_os_version"; then
1060         OSVERSION="$with_os_version"
1061     else
1062         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1063     fi
1064     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1065     AC_MSG_CHECKING([which thread library to use])
1066     if test "$OSVERSION" -lt "500016"; then
1067         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1068         PTHREAD_LIBS="-pthread"
1069     elif test "$OSVERSION" -lt "502102"; then
1070         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1071         PTHREAD_LIBS="-lc_r"
1072     else
1073         PTHREAD_CFLAGS=""
1074         PTHREAD_LIBS="-pthread"
1075     fi
1076     AC_MSG_RESULT([$PTHREAD_LIBS])
1077     _os=FreeBSD
1078     ;;
1080 *netbsd*)
1081     using_freetype_fontconfig=yes
1082     using_x11=yes
1083     test_gtk3_kde5=no
1084     build_skia=yes
1085     PTHREAD_LIBS="-pthread -lpthread"
1086     _os=NetBSD
1087     ;;
1089 aix*)
1090     using_freetype_fontconfig=yes
1091     using_x11=yes
1092     test_randr=no
1093     test_gstreamer_1_0=no
1094     PTHREAD_LIBS=-pthread
1095     _os=AIX
1096     ;;
1098 openbsd*)
1099     using_freetype_fontconfig=yes
1100     using_x11=yes
1101     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1102     PTHREAD_LIBS="-pthread"
1103     _os=OpenBSD
1104     ;;
1106 dragonfly*)
1107     using_freetype_fontconfig=yes
1108     using_x11=yes
1109     build_skia=yes
1110     PTHREAD_LIBS="-pthread"
1111     _os=DragonFly
1112     ;;
1114 linux-android*)
1115     # API exists, but seems not really usable since Android 7 AFAIK
1116     usable_dlapi=no
1117     using_freetype_fontconfig=yes
1118     using_headless_plugin=no
1119     using_x11=no
1120     build_crypto=no
1121     test_openldap=no
1122     test_system_freetype=no
1123     test_webdav=no
1124     disable_database_connectivity_dependencies
1125     enable_lotuswordpro=no
1126     enable_mpl_subset=yes
1127     enable_cairo_canvas=no
1128     enable_coinmp=yes
1129     enable_lpsolve=no
1130     enable_odk=no
1131     enable_python=no
1132     enable_xmlhelp=no
1133     _os=Android
1134     ;;
1136 haiku*)
1137     using_freetype_fontconfig=yes
1138     using_x11=no
1139     test_gtk3=no
1140     test_gtk3_kde5=no
1141     test_kf5=yes
1142     enable_odk=no
1143     enable_coinmp=no
1144     enable_pdfium=no
1145     enable_sdremote=no
1146     enable_postgresql_sdbc=no
1147     enable_firebird_sdbc=no
1148     _os=Haiku
1149     ;;
1151 emscripten)
1152     # API currently just exists in headers, not code
1153     usable_dlapi=no
1154     using_freetype_fontconfig=yes
1155     using_x11=yes
1156     test_openldap=no
1157     test_qt5=yes
1158     test_split_debug=yes
1159     test_system_freetype=no
1160     enable_compiler_plugins=no
1161     enable_customtarget_components=yes
1162     enable_split_debug=yes
1163     enable_wasm_strip=yes
1164     with_system_zlib=no
1165     with_theme="colibre"
1166     _os=Emscripten
1167     ;;
1170     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1171     ;;
1172 esac
1174 AC_SUBST(HOST_PLATFORM)
1176 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1177     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1180 # Set defaults, if not set by platform
1181 test "${test_cups+set}" = set || test_cups="$using_x11"
1182 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1183 test "${test_gen+set}" = set || test_gen="$using_x11"
1184 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1185 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1186 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1187 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1188 # don't handle test_qt5, so it can disable test_kf5 later
1189 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1190 test "${test_randr+set}" = set || test_randr="$using_x11"
1191 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1192 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1194 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1195 # Make sure fontconfig and freetype test both either system or not
1196 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1197 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1199 # convenience / platform overriding "fixes"
1200 # Don't sort!
1201 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1202 test "$test_kf5" = yes && test_qt5=yes
1203 test "$test_gtk3" != yes && enable_gtk3=no
1204 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1205 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1206 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1208 # Keep in sync with the above $using_x11 depending test default list
1209 disable_x11_tests()
1211     test_cups=no
1212     test_dbus=no
1213     test_gen=no
1214     test_gstreamer_1_0=no
1215     test_gtk3_kde5=no
1216     test_gtk3=no
1217     test_gtk4=no
1218     test_kf5=no
1219     test_qt5=no
1220     test_qt6=no
1221     test_randr=no
1222     test_xrender=no
1225 test "$using_x11" = yes && USING_X11=TRUE
1227 if test "$using_freetype_fontconfig" = yes; then
1228     USE_HEADLESS_CODE=TRUE
1229     if test "$using_headless_plugin" = yes; then
1230         AC_DEFINE(ENABLE_HEADLESS)
1231         ENABLE_HEADLESS=TRUE
1232     fi
1233 else
1234     test_fontconfig=no
1235     test_freetype=no
1238 AC_SUBST(ENABLE_HEADLESS)
1239 AC_SUBST(USE_HEADLESS_CODE)
1241 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1242 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1243 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1244 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1246 # ===================================================================
1248 # End initial platform setup
1250 # ===================================================================
1252 if test "$_os" = "Android" ; then
1253     # Verify that the NDK and SDK options are proper
1254     if test -z "$with_android_ndk"; then
1255         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1256     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1257         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1258     fi
1260     if test -z "$ANDROID_SDK_DIR"; then
1261         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1262     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1263         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1264     fi
1267 if test "$_os" = "AIX"; then
1268     AC_PATH_PROG(GAWK, gawk)
1269     if test -z "$GAWK"; then
1270         AC_MSG_ERROR([gawk not found in \$PATH])
1271     fi
1274 AC_SUBST(SDKDIRNAME)
1276 AC_SUBST(PTHREAD_CFLAGS)
1277 AC_SUBST(PTHREAD_LIBS)
1279 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1280 # By default use the ones specified by our build system,
1281 # but explicit override is possible.
1282 AC_MSG_CHECKING(for explicit AFLAGS)
1283 if test -n "$AFLAGS"; then
1284     AC_MSG_RESULT([$AFLAGS])
1285     x_AFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_AFLAGS=[\#]
1290 AC_MSG_CHECKING(for explicit CFLAGS)
1291 if test -n "$CFLAGS"; then
1292     AC_MSG_RESULT([$CFLAGS])
1293     x_CFLAGS=
1294 else
1295     AC_MSG_RESULT(no)
1296     x_CFLAGS=[\#]
1298 AC_MSG_CHECKING(for explicit CXXFLAGS)
1299 if test -n "$CXXFLAGS"; then
1300     AC_MSG_RESULT([$CXXFLAGS])
1301     x_CXXFLAGS=
1302 else
1303     AC_MSG_RESULT(no)
1304     x_CXXFLAGS=[\#]
1306 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1307 if test -n "$OBJCFLAGS"; then
1308     AC_MSG_RESULT([$OBJCFLAGS])
1309     x_OBJCFLAGS=
1310 else
1311     AC_MSG_RESULT(no)
1312     x_OBJCFLAGS=[\#]
1314 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1315 if test -n "$OBJCXXFLAGS"; then
1316     AC_MSG_RESULT([$OBJCXXFLAGS])
1317     x_OBJCXXFLAGS=
1318 else
1319     AC_MSG_RESULT(no)
1320     x_OBJCXXFLAGS=[\#]
1322 AC_MSG_CHECKING(for explicit LDFLAGS)
1323 if test -n "$LDFLAGS"; then
1324     AC_MSG_RESULT([$LDFLAGS])
1325     x_LDFLAGS=
1326 else
1327     AC_MSG_RESULT(no)
1328     x_LDFLAGS=[\#]
1330 AC_SUBST(AFLAGS)
1331 AC_SUBST(CFLAGS)
1332 AC_SUBST(CXXFLAGS)
1333 AC_SUBST(OBJCFLAGS)
1334 AC_SUBST(OBJCXXFLAGS)
1335 AC_SUBST(LDFLAGS)
1336 AC_SUBST(x_AFLAGS)
1337 AC_SUBST(x_CFLAGS)
1338 AC_SUBST(x_CXXFLAGS)
1339 AC_SUBST(x_OBJCFLAGS)
1340 AC_SUBST(x_OBJCXXFLAGS)
1341 AC_SUBST(x_LDFLAGS)
1343 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1344 my_original_CFLAGS=$CFLAGS
1345 my_original_CXXFLAGS=$CXXFLAGS
1346 my_original_CPPFLAGS=$CPPFLAGS
1348 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1349 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1350 dnl AC_PROG_CC internally.
1351 if test "$_os" != "WINNT"; then
1352     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1353     save_CFLAGS=$CFLAGS
1354     AC_PROG_CC
1355     CFLAGS=$save_CFLAGS
1356     if test -z "$CC_BASE"; then
1357         CC_BASE=`first_arg_basename "$CC"`
1358     fi
1361 if test "$_os" != "WINNT"; then
1362     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1363 else
1364     ENDIANNESS=little
1366 AC_SUBST(ENDIANNESS)
1368 if test "$usable_dlapi" != no; then
1369     AC_DEFINE([HAVE_DLAPI])
1370     if test "$test_unix_dlapi" != no; then
1371         save_LIBS="$LIBS"
1372         AC_SEARCH_LIBS([dlsym], [dl],
1373             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1374             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1375         LIBS="$save_LIBS"
1376         AC_DEFINE([HAVE_UNIX_DLAPI])
1377     fi
1379 AC_SUBST(UNIX_DLAPI_LIBS)
1381 # Check for a (GNU) backtrace implementation
1382 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1383 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1384 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1385     save_LIBS="$LIBS"
1386     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1387         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1388         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1389     LIBS="$save_LIBS"
1391 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1392     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1395 dnl ===================================================================
1396 dnl Sanity checks for Emscripten SDK setup
1397 dnl ===================================================================
1399 EMSCRIPTEN_MIN_MAJOR=2
1400 EMSCRIPTEN_MIN_MINOR=0
1401 EMSCRIPTEN_MIN_TINY=31
1402 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1404 if test "$_os" = "Emscripten"; then
1405     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1406     AS_IF([test -z "$EMSDK"],
1407           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1408     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1409     if test -f "$EMSCRIPTEN_VERSION_H"; then
1410         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1411         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1412         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1413     else
1414         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1415         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1416         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1417         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1418     fi
1420     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1422     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1423     if test $? -eq 0; then
1424         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1425     else
1426         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1427     fi
1429     EMSCRIPTEN_ERROR=0
1430     if ! which emconfigure >/dev/null 2>&1; then
1431         AC_MSG_WARN([emconfigure must be in your \$PATH])
1432         EMSCRIPTEN_ERROR=1
1433     fi
1434     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1435         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1436         EMSCRIPTEN_ERROR=1
1437     fi
1438     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1439     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1440         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1441         EMSCRIPTEN_ERROR=1
1442     fi
1443     if test $EMSCRIPTEN_ERROR -ne 0; then
1444         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1445     fi
1447 AC_SUBST(EMSDK_FILE_PACKAGER)
1449 ###############################################################################
1450 # Extensions switches --enable/--disable
1451 ###############################################################################
1452 # By default these should be enabled unless having extra dependencies.
1453 # If there is extra dependency over configure options then the enable should
1454 # be automagic based on whether the requiring feature is enabled or not.
1455 # All this options change anything only with --enable-extension-integration.
1457 # The name of this option and its help string makes it sound as if
1458 # extensions are built anyway, just not integrated in the installer,
1459 # if you use --disable-extension-integration. Is that really the
1460 # case?
1462 AC_ARG_ENABLE(ios-simulator,
1463     AS_HELP_STRING([--enable-ios-simulator],
1464         [build for iOS simulator])
1467 libo_FUZZ_ARG_ENABLE(extension-integration,
1468     AS_HELP_STRING([--disable-extension-integration],
1469         [Disable integration of the built extensions in the installer of the
1470          product. Use this switch to disable the integration.])
1473 AC_ARG_ENABLE(avmedia,
1474     AS_HELP_STRING([--disable-avmedia],
1475         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1476 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1478 AC_ARG_ENABLE(database-connectivity,
1479     AS_HELP_STRING([--disable-database-connectivity],
1480         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1483 # This doesn't mean not building (or "integrating") extensions
1484 # (although it probably should; i.e. it should imply
1485 # --disable-extension-integration I guess), it means not supporting
1486 # any extension mechanism at all
1487 libo_FUZZ_ARG_ENABLE(extensions,
1488     AS_HELP_STRING([--disable-extensions],
1489         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1492 AC_ARG_ENABLE(scripting,
1493     AS_HELP_STRING([--disable-scripting],
1494         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1495 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1497 # This is mainly for Android and iOS, but could potentially be used in some
1498 # special case otherwise, too, so factored out as a separate setting
1500 AC_ARG_ENABLE(dynamic-loading,
1501     AS_HELP_STRING([--disable-dynamic-loading],
1502         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1505 libo_FUZZ_ARG_ENABLE(report-builder,
1506     AS_HELP_STRING([--disable-report-builder],
1507         [Disable the Report Builder.])
1510 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1511     AS_HELP_STRING([--enable-ext-wiki-publisher],
1512         [Enable the Wiki Publisher extension.])
1515 libo_FUZZ_ARG_ENABLE(lpsolve,
1516     AS_HELP_STRING([--disable-lpsolve],
1517         [Disable compilation of the lp solve solver ])
1519 libo_FUZZ_ARG_ENABLE(coinmp,
1520     AS_HELP_STRING([--disable-coinmp],
1521         [Disable compilation of the CoinMP solver ])
1524 libo_FUZZ_ARG_ENABLE(pdfimport,
1525     AS_HELP_STRING([--disable-pdfimport],
1526         [Disable building the PDF import feature.])
1529 libo_FUZZ_ARG_ENABLE(pdfium,
1530     AS_HELP_STRING([--disable-pdfium],
1531         [Disable building PDFium. Results in unsecure PDF signature verification.])
1534 libo_FUZZ_ARG_ENABLE(skia,
1535     AS_HELP_STRING([--disable-skia],
1536         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1539 ###############################################################################
1541 dnl ---------- *** ----------
1543 libo_FUZZ_ARG_ENABLE(mergelibs,
1544     AS_HELP_STRING([--enable-mergelibs],
1545         [Merge several of the smaller libraries into one big, "merged", one.])
1548 libo_FUZZ_ARG_ENABLE(breakpad,
1549     AS_HELP_STRING([--enable-breakpad],
1550         [Enables breakpad for crash reporting.])
1553 libo_FUZZ_ARG_ENABLE(crashdump,
1554     AS_HELP_STRING([--disable-crashdump],
1555         [Disable dump.ini and dump-file, when --enable-breakpad])
1558 AC_ARG_ENABLE(fetch-external,
1559     AS_HELP_STRING([--disable-fetch-external],
1560         [Disables fetching external tarballs from web sources.])
1563 AC_ARG_ENABLE(fuzzers,
1564     AS_HELP_STRING([--enable-fuzzers],
1565         [Enables building libfuzzer targets for fuzz testing.])
1568 libo_FUZZ_ARG_ENABLE(pch,
1569     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1570         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1571          Using 'system' will include only external headers, 'base' will add also headers
1572          from base modules, 'normal' will also add all headers except from the module built,
1573          'full' will use all suitable headers even from a module itself.])
1576 libo_FUZZ_ARG_ENABLE(epm,
1577     AS_HELP_STRING([--enable-epm],
1578         [LibreOffice includes self-packaging code, that requires epm, however epm is
1579          useless for large scale package building.])
1582 libo_FUZZ_ARG_ENABLE(odk,
1583     AS_HELP_STRING([--enable-odk],
1584         [Enable building the Office Development Kit, the part that extensions need to build against])
1587 AC_ARG_ENABLE(mpl-subset,
1588     AS_HELP_STRING([--enable-mpl-subset],
1589         [Don't compile any pieces which are not MPL or more liberally licensed])
1592 libo_FUZZ_ARG_ENABLE(evolution2,
1593     AS_HELP_STRING([--enable-evolution2],
1594         [Allows the built-in evolution 2 addressbook connectivity build to be
1595          enabled.])
1598 AC_ARG_ENABLE(avahi,
1599     AS_HELP_STRING([--enable-avahi],
1600         [Determines whether to use Avahi to advertise Impress to remote controls.])
1603 libo_FUZZ_ARG_ENABLE(werror,
1604     AS_HELP_STRING([--enable-werror],
1605         [Turn warnings to errors. (Has no effect in modules where the treating
1606          of warnings as errors is disabled explicitly.)]),
1609 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1610     AS_HELP_STRING([--enable-assert-always-abort],
1611         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1614 libo_FUZZ_ARG_ENABLE(dbgutil,
1615     AS_HELP_STRING([--enable-dbgutil],
1616         [Provide debugging support from --enable-debug and include additional debugging
1617          utilities such as object counting or more expensive checks.
1618          This is the recommended option for developers.
1619          Note that this makes the build ABI incompatible, it is not possible to mix object
1620          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1622 libo_FUZZ_ARG_ENABLE(debug,
1623     AS_HELP_STRING([--enable-debug],
1624         [Include debugging information, disable compiler optimization and inlining plus
1625          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1627 libo_FUZZ_ARG_ENABLE(split-debug,
1628     AS_HELP_STRING([--disable-split-debug],
1629         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1630          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1632 libo_FUZZ_ARG_ENABLE(gdb-index,
1633     AS_HELP_STRING([--disable-gdb-index],
1634         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1635          The feature requires a linker that supports the --gdb-index option.]))
1637 libo_FUZZ_ARG_ENABLE(sal-log,
1638     AS_HELP_STRING([--enable-sal-log],
1639         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1641 libo_FUZZ_ARG_ENABLE(symbols,
1642     AS_HELP_STRING([--enable-symbols],
1643         [Generate debug information.
1644          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1645          otherwise. It is possible to explicitly specify gbuild build targets
1646          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1647          everything in the directory; there is no ordering, more specific overrides
1648          more general, and disabling takes precedence).
1649          Example: --enable-symbols="all -sw/ -Library_sc".]))
1651 libo_FUZZ_ARG_ENABLE(optimized,
1652     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1653         [Whether to compile with optimization flags.
1654          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1655          otherwise. Using 'debug' will try to use only optimizations that should
1656          not interfere with debugging. For Emscripten we default to optimized (-O1)
1657          debug build, as otherwise binaries become too large.]))
1659 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1660     AS_HELP_STRING([--disable-runtime-optimizations],
1661         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1662          JVM JIT) that are known to interact badly with certain dynamic analysis
1663          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1664          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1665          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1667 AC_ARG_WITH(valgrind,
1668     AS_HELP_STRING([--with-valgrind],
1669         [Make availability of Valgrind headers a hard requirement.]))
1671 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1672     AS_HELP_STRING([--enable-compiler-plugins],
1673         [Enable compiler plugins that will perform additional checks during
1674          building. Enabled automatically by --enable-dbgutil.
1675          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1676 COMPILER_PLUGINS_DEBUG=
1677 if test "$enable_compiler_plugins" = debug; then
1678     enable_compiler_plugins=yes
1679     COMPILER_PLUGINS_DEBUG=TRUE
1682 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1683     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1684         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1685          relevant in the --disable-compiler-plugins case.]))
1687 libo_FUZZ_ARG_ENABLE(ooenv,
1688     AS_HELP_STRING([--enable-ooenv],
1689         [Enable ooenv for the instdir installation.]))
1691 AC_ARG_ENABLE(lto,
1692     AS_HELP_STRING([--enable-lto],
1693         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1694          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1695          linker.)]))
1697 AC_ARG_ENABLE(python,
1698     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1699         [Enables or disables Python support at run-time.
1700          Also specifies what Python to use at build-time.
1701          'fully-internal' even forces the internal version for uses of Python
1702          during the build.
1703          On macOS the only choices are
1704          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1705          ]))
1707 libo_FUZZ_ARG_ENABLE(gtk3,
1708     AS_HELP_STRING([--disable-gtk3],
1709         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1710 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1712 AC_ARG_ENABLE(gtk4,
1713     AS_HELP_STRING([--enable-gtk4],
1714         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1716 AC_ARG_ENABLE(introspection,
1717     AS_HELP_STRING([--enable-introspection],
1718         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1719          Linux distributions.)]))
1721 AC_ARG_ENABLE(split-app-modules,
1722     AS_HELP_STRING([--enable-split-app-modules],
1723         [Split file lists for app modules, e.g. base, calc.
1724          Has effect only with make distro-pack-install]),
1727 AC_ARG_ENABLE(split-opt-features,
1728     AS_HELP_STRING([--enable-split-opt-features],
1729         [Split file lists for some optional features, e.g. pyuno, testtool.
1730          Has effect only with make distro-pack-install]),
1733 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1734     AS_HELP_STRING([--disable-cairo-canvas],
1735         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1738 libo_FUZZ_ARG_ENABLE(dbus,
1739     AS_HELP_STRING([--disable-dbus],
1740         [Determines whether to enable features that depend on dbus.
1741          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1742 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1744 libo_FUZZ_ARG_ENABLE(sdremote,
1745     AS_HELP_STRING([--disable-sdremote],
1746         [Determines whether to enable Impress remote control (i.e. the server component).]),
1747 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1749 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1750     AS_HELP_STRING([--disable-sdremote-bluetooth],
1751         [Determines whether to build sdremote with bluetooth support.
1752          Requires dbus on Linux.]))
1754 libo_FUZZ_ARG_ENABLE(gio,
1755     AS_HELP_STRING([--disable-gio],
1756         [Determines whether to use the GIO support.]),
1757 ,test "${enable_gio+set}" = set || enable_gio=yes)
1759 AC_ARG_ENABLE(qt5,
1760     AS_HELP_STRING([--enable-qt5],
1761         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1762          available.]),
1765 AC_ARG_ENABLE(qt6,
1766     AS_HELP_STRING([--enable-qt6],
1767         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1768          available.]),
1771 AC_ARG_ENABLE(kf5,
1772     AS_HELP_STRING([--enable-kf5],
1773         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1774          KF5 are available.]),
1777 AC_ARG_ENABLE(gtk3_kde5,
1778     AS_HELP_STRING([--enable-gtk3-kde5],
1779         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1780          platforms where Gtk3, Qt5 and Plasma is available.]),
1783 AC_ARG_ENABLE(gen,
1784     AS_HELP_STRING([--enable-gen],
1785         [To select the gen backend in case of --disable-dynamic-loading.
1786          Per default auto-enabled when X11 is used.]),
1787 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1789 AC_ARG_ENABLE(gui,
1790     AS_HELP_STRING([--disable-gui],
1791         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1792 ,enable_gui=yes)
1794 libo_FUZZ_ARG_ENABLE(randr,
1795     AS_HELP_STRING([--disable-randr],
1796         [Disable RandR support in the vcl project.]),
1797 ,test "${enable_randr+set}" = set || enable_randr=yes)
1799 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1800     AS_HELP_STRING([--disable-gstreamer-1-0],
1801         [Disable building with the gstreamer 1.0 avmedia backend.]),
1802 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1804 libo_FUZZ_ARG_ENABLE([eot],
1805     [AS_HELP_STRING([--enable-eot],
1806         [Enable support for Embedded OpenType fonts.])],
1807 ,test "${enable_eot+set}" = set || enable_eot=no)
1809 libo_FUZZ_ARG_ENABLE(cve-tests,
1810     AS_HELP_STRING([--disable-cve-tests],
1811         [Prevent CVE tests to be executed]),
1814 AC_ARG_ENABLE(build-opensymbol,
1815     AS_HELP_STRING([--enable-build-opensymbol],
1816         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1817          fontforge installed.]),
1820 AC_ARG_ENABLE(dependency-tracking,
1821     AS_HELP_STRING([--enable-dependency-tracking],
1822         [Do not reject slow dependency extractors.])[
1823   --disable-dependency-tracking
1824                           Disables generation of dependency information.
1825                           Speed up one-time builds.],
1828 AC_ARG_ENABLE(icecream,
1829     AS_HELP_STRING([--enable-icecream],
1830         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1831          It defaults to /opt/icecream for the location of the icecream gcc/g++
1832          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1835 AC_ARG_ENABLE(ld,
1836     AS_HELP_STRING([--enable-ld=<linker>],
1837         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1838          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1839          If <linker> contains any ':', the part before the first ':' is used as the value of
1840          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1841          needed for Clang 12).]),
1844 libo_FUZZ_ARG_ENABLE(cups,
1845     AS_HELP_STRING([--disable-cups],
1846         [Do not build cups support.])
1849 AC_ARG_ENABLE(ccache,
1850     AS_HELP_STRING([--disable-ccache],
1851         [Do not try to use ccache automatically.
1852          By default we will try to detect if ccache is available; in that case if
1853          CC/CXX are not yet set, and --enable-icecream is not given, we
1854          attempt to use ccache. --disable-ccache disables ccache completely.
1855          Additionally ccache's depend mode is enabled if possible,
1856          use --enable-ccache=nodepend to enable ccache without depend mode.
1860 AC_ARG_ENABLE(z7-debug,
1861     AS_HELP_STRING([--enable-z7-debug],
1862         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1863          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1864          Enabled by default if ccache is detected.]))
1866 libo_FUZZ_ARG_ENABLE(online-update,
1867     AS_HELP_STRING([--enable-online-update],
1868         [Enable the online update service that will check for new versions of
1869          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1870          If the value is "mar", the experimental Mozilla-like update will be
1871          enabled instead of the traditional update mechanism.]),
1874 AC_ARG_WITH(update-config,
1875     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1876                    [Path to the update config ini file]))
1878 libo_FUZZ_ARG_ENABLE(extension-update,
1879     AS_HELP_STRING([--disable-extension-update],
1880         [Disable possibility to update installed extensions.]),
1883 libo_FUZZ_ARG_ENABLE(release-build,
1884     AS_HELP_STRING([--enable-release-build],
1885         [Enable release build. Note that the "release build" choice is orthogonal to
1886          whether symbols are present, debug info is generated, or optimization
1887          is done.
1888          See http://wiki.documentfoundation.org/Development/DevBuild]),
1891 AC_ARG_ENABLE(windows-build-signing,
1892     AS_HELP_STRING([--enable-windows-build-signing],
1893         [Enable signing of windows binaries (*.exe, *.dll)]),
1896 AC_ARG_ENABLE(silent-msi,
1897     AS_HELP_STRING([--enable-silent-msi],
1898         [Enable MSI with LIMITUI=1 (silent install).]),
1901 AC_ARG_ENABLE(macosx-code-signing,
1902     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1903         [Sign executables, dylibs, frameworks and the app bundle. If you
1904          don't provide an identity the first suitable certificate
1905          in your keychain is used.]),
1908 AC_ARG_ENABLE(macosx-package-signing,
1909     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1910         [Create a .pkg suitable for uploading to the Mac App Store and sign
1911          it. If you don't provide an identity the first suitable certificate
1912          in your keychain is used.]),
1915 AC_ARG_ENABLE(macosx-sandbox,
1916     AS_HELP_STRING([--enable-macosx-sandbox],
1917         [Make the app bundle run in a sandbox. Requires code signing.
1918          Is required by apps distributed in the Mac App Store, and implies
1919          adherence to App Store rules.]),
1922 AC_ARG_WITH(macosx-bundle-identifier,
1923     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1924         [Define the macOS bundle identifier. Default is the somewhat weird
1925          org.libreoffice.script ("script", huh?).]),
1926 ,with_macosx_bundle_identifier=org.libreoffice.script)
1928 AC_ARG_WITH(macosx-provisioning-profile,
1929     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1930         [Specify the path to a provisioning profile to use]),
1933 AC_ARG_WITH(product-name,
1934     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1935         [Define the product name. Default is AC_PACKAGE_NAME.]),
1936 ,with_product_name=$PRODUCTNAME)
1938 libo_FUZZ_ARG_ENABLE(community-flavor,
1939     AS_HELP_STRING([--disable-community-flavor],
1940         [Disable the Community branding.]),
1943 AC_ARG_WITH(package-version,
1944     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1945         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1948 libo_FUZZ_ARG_ENABLE(readonly-installset,
1949     AS_HELP_STRING([--enable-readonly-installset],
1950         [Prevents any attempts by LibreOffice to write into its installation. That means
1951          at least that no "system-wide" extensions can be added. Partly experimental work in
1952          progress, probably not fully implemented. Always enabled for macOS.]),
1955 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1956     AS_HELP_STRING([--disable-mariadb-sdbc],
1957         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1960 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1961     AS_HELP_STRING([--disable-postgresql-sdbc],
1962         [Disable the build of the PostgreSQL-SDBC driver.])
1965 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1966     AS_HELP_STRING([--disable-lotuswordpro],
1967         [Disable the build of the Lotus Word Pro filter.]),
1968 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1970 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1971     AS_HELP_STRING([--disable-firebird-sdbc],
1972         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1973 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1975 AC_ARG_ENABLE(bogus-pkg-config,
1976     AS_HELP_STRING([--enable-bogus-pkg-config],
1977         [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.]),
1980 AC_ARG_ENABLE(openssl,
1981     AS_HELP_STRING([--disable-openssl],
1982         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1983          components will use NSS. Work in progress,
1984          use only if you are hacking on it.]),
1985 ,enable_openssl=yes)
1987 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1988     AS_HELP_STRING([--enable-cipher-openssl-backend],
1989         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1990          Requires --enable-openssl.]))
1992 AC_ARG_ENABLE(nss,
1993     AS_HELP_STRING([--disable-nss],
1994         [Disable using NSS. If disabled,
1995          components will use openssl. Work in progress,
1996          use only if you are hacking on it.]),
1997 ,enable_nss=yes)
1999 AC_ARG_ENABLE(library-bin-tar,
2000     AS_HELP_STRING([--enable-library-bin-tar],
2001         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2002         Some libraries can save their build result in a tarball
2003         stored in TARFILE_LOCATION. That binary tarball is
2004         uniquely identified by the source tarball,
2005         the content of the config_host.mk file and the content
2006         of the top-level directory in core for that library
2007         If this option is enabled, then if such a tarfile exist, it will be untarred
2008         instead of the source tarfile, and the build step will be skipped for that
2009         library.
2010         If a proper tarfile does not exist, then the normal source-based
2011         build is done for that library and a proper binary tarfile is created
2012         for the next time.]),
2015 AC_ARG_ENABLE(dconf,
2016     AS_HELP_STRING([--disable-dconf],
2017         [Disable the dconf configuration backend (enabled by default where
2018          available).]))
2020 libo_FUZZ_ARG_ENABLE(formula-logger,
2021     AS_HELP_STRING(
2022         [--enable-formula-logger],
2023         [Enable formula logger for logging formula calculation flow in Calc.]
2024     )
2027 AC_ARG_ENABLE(ldap,
2028     AS_HELP_STRING([--disable-ldap],
2029         [Disable LDAP support.]),
2030 ,enable_ldap=yes)
2032 AC_ARG_ENABLE(opencl,
2033     AS_HELP_STRING([--disable-opencl],
2034         [Disable OpenCL support.]),
2035 ,enable_opencl=yes)
2037 libo_FUZZ_ARG_ENABLE(librelogo,
2038     AS_HELP_STRING([--disable-librelogo],
2039         [Do not build LibreLogo.]),
2040 ,enable_librelogo=yes)
2042 AC_ARG_ENABLE(wasm-strip,
2043     AS_HELP_STRING([--enable-wasm-strip],
2044         [Strip the static build like for WASM/emscripten platform.]),
2047 AC_ARG_WITH(main-module,
2048     AS_HELP_STRING([--with-main-module=<writer/calc>],
2049         [Specify which main module to build for wasm.
2050         Default value is 'writer'.]),
2053 AC_ARG_ENABLE(wasm-exceptions,
2054     AS_HELP_STRING([--enable-wasm-exceptions],
2055         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2056         matter of fact, this is currently not finished by any implementation)
2057         (see https://webassembly.org/roadmap/ for the current state]),
2060 AC_ARG_ENABLE(xmlhelp,
2061     AS_HELP_STRING([--disable-xmlhelp],
2062         [Disable XML help support]),
2063 ,enable_xmlhelp=yes)
2065 AC_ARG_ENABLE(customtarget-components,
2066     AS_HELP_STRING([--enable-customtarget-components],
2067         [Generates the static UNO object constructor mapping from the build.]))
2069 AC_ARG_ENABLE(float_device_pixel,
2070     AS_HELP_STRING([--enable-float-device-pixel],
2071                    [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2074 dnl ===================================================================
2075 dnl Optional Packages (--with/without-)
2076 dnl ===================================================================
2078 AC_ARG_WITH(gcc-home,
2079     AS_HELP_STRING([--with-gcc-home],
2080         [Specify the location of gcc/g++ manually. This can be used in conjunction
2081          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2082          non-default path.]),
2085 AC_ARG_WITH(gnu-patch,
2086     AS_HELP_STRING([--with-gnu-patch],
2087         [Specify location of GNU patch on Solaris or FreeBSD.]),
2090 AC_ARG_WITH(build-platform-configure-options,
2091     AS_HELP_STRING([--with-build-platform-configure-options],
2092         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2095 AC_ARG_WITH(gnu-cp,
2096     AS_HELP_STRING([--with-gnu-cp],
2097         [Specify location of GNU cp on Solaris or FreeBSD.]),
2100 AC_ARG_WITH(external-tar,
2101     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2102         [Specify an absolute path of where to find (and store) tarfiles.]),
2103     TARFILE_LOCATION=$withval ,
2106 AC_ARG_WITH(referenced-git,
2107     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2108         [Specify another checkout directory to reference. This makes use of
2109                  git submodule update --reference, and saves a lot of diskspace
2110                  when having multiple trees side-by-side.]),
2111     GIT_REFERENCE_SRC=$withval ,
2114 AC_ARG_WITH(linked-git,
2115     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2116         [Specify a directory where the repositories of submodules are located.
2117          This uses a method similar to git-new-workdir to get submodules.]),
2118     GIT_LINK_SRC=$withval ,
2121 AC_ARG_WITH(galleries,
2122     AS_HELP_STRING([--with-galleries],
2123         [Specify how galleries should be built. It is possible either to
2124          build these internally from source ("build"),
2125          or to disable them ("no")]),
2128 AC_ARG_WITH(templates,
2129     AS_HELP_STRING([--with-templates],
2130         [Specify we build with or without template files. It is possible either to
2131          build with templates ("yes"),
2132          or to disable them ("no")]),
2135 AC_ARG_WITH(theme,
2136     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2137         [Choose which themes to include. By default those themes with an '*' are included.
2138          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2139          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2140          *elementary, *elementary_svg,
2141          *karasa_jaga, *karasa_jaga_svg,
2142          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2143          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2146 libo_FUZZ_ARG_WITH(helppack-integration,
2147     AS_HELP_STRING([--without-helppack-integration],
2148         [It will not integrate the helppacks to the installer
2149          of the product. Please use this switch to use the online help
2150          or separate help packages.]),
2153 libo_FUZZ_ARG_WITH(fonts,
2154     AS_HELP_STRING([--without-fonts],
2155         [LibreOffice includes some third-party fonts to provide a reliable basis for
2156          help content, templates, samples, etc. When these fonts are already
2157          known to be available on the system then you should use this option.]),
2160 AC_ARG_ENABLE(noto-font,
2161     AS_HELP_STRING([--enable-noto-font],
2162         [Add more Google Noto fonts.]),
2165 AC_ARG_WITH(epm,
2166     AS_HELP_STRING([--with-epm],
2167         [Decides which epm to use. Default is to use the one from the system if
2168          one is built. When either this is not there or you say =internal epm
2169          will be built.]),
2172 AC_ARG_WITH(package-format,
2173     AS_HELP_STRING([--with-package-format],
2174         [Specify package format(s) for LibreOffice installation sets. The
2175          implicit --without-package-format leads to no installation sets being
2176          generated. Possible values: aix, archive, bsd, deb, dmg,
2177          installed, msi, pkg, and rpm.
2178          Example: --with-package-format='deb rpm']),
2181 AC_ARG_WITH(tls,
2182     AS_HELP_STRING([--with-tls],
2183         [Decides which TLS/SSL and cryptographic implementations to use for
2184          LibreOffice's code. Default is to use NSS although OpenSSL is also
2185          possible. Notice that selecting NSS restricts the usage of OpenSSL
2186          in LO's code but selecting OpenSSL doesn't restrict by now the
2187          usage of NSS in LO's code. Possible values: openssl, nss.
2188          Example: --with-tls="nss"]),
2191 AC_ARG_WITH(system-libs,
2192     AS_HELP_STRING([--with-system-libs],
2193         [Use libraries already on system -- enables all --with-system-* flags.]),
2196 AC_ARG_WITH(system-bzip2,
2197     AS_HELP_STRING([--with-system-bzip2],
2198         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2199     [with_system_bzip2="$with_system_libs"])
2201 AC_ARG_WITH(system-headers,
2202     AS_HELP_STRING([--with-system-headers],
2203         [Use headers already on system -- enables all --with-system-* flags for
2204          external packages whose headers are the only entities used i.e.
2205          boost/odbc/sane-header(s).]),,
2206     [with_system_headers="$with_system_libs"])
2208 AC_ARG_WITH(system-jars,
2209     AS_HELP_STRING([--without-system-jars],
2210         [When building with --with-system-libs, also the needed jars are expected
2211          on the system. Use this to disable that]),,
2212     [with_system_jars="$with_system_libs"])
2214 AC_ARG_WITH(system-cairo,
2215     AS_HELP_STRING([--with-system-cairo],
2216         [Use cairo libraries already on system.  Happens automatically for
2217          (implicit) --enable-gtk3.]))
2219 AC_ARG_WITH(system-epoxy,
2220     AS_HELP_STRING([--with-system-epoxy],
2221         [Use epoxy libraries already on system.  Happens automatically for
2222          (implicit) --enable-gtk3.]),,
2223        [with_system_epoxy="$with_system_libs"])
2225 AC_ARG_WITH(myspell-dicts,
2226     AS_HELP_STRING([--with-myspell-dicts],
2227         [Adds myspell dictionaries to the LibreOffice installation set]),
2230 AC_ARG_WITH(system-dicts,
2231     AS_HELP_STRING([--without-system-dicts],
2232         [Do not use dictionaries from system paths.]),
2235 AC_ARG_WITH(external-dict-dir,
2236     AS_HELP_STRING([--with-external-dict-dir],
2237         [Specify external dictionary dir.]),
2240 AC_ARG_WITH(external-hyph-dir,
2241     AS_HELP_STRING([--with-external-hyph-dir],
2242         [Specify external hyphenation pattern dir.]),
2245 AC_ARG_WITH(external-thes-dir,
2246     AS_HELP_STRING([--with-external-thes-dir],
2247         [Specify external thesaurus dir.]),
2250 AC_ARG_WITH(system-zlib,
2251     AS_HELP_STRING([--with-system-zlib],
2252         [Use zlib already on system.]),,
2253     [with_system_zlib=auto])
2255 AC_ARG_WITH(system-jpeg,
2256     AS_HELP_STRING([--with-system-jpeg],
2257         [Use jpeg already on system.]),,
2258     [with_system_jpeg="$with_system_libs"])
2260 AC_ARG_WITH(system-expat,
2261     AS_HELP_STRING([--with-system-expat],
2262         [Use expat already on system.]),,
2263     [with_system_expat="$with_system_libs"])
2265 AC_ARG_WITH(system-libxml,
2266     AS_HELP_STRING([--with-system-libxml],
2267         [Use libxml/libxslt already on system.]),,
2268     [with_system_libxml=auto])
2270 AC_ARG_WITH(system-openldap,
2271     AS_HELP_STRING([--with-system-openldap],
2272         [Use the OpenLDAP LDAP SDK already on system.]),,
2273     [with_system_openldap="$with_system_libs"])
2275 libo_FUZZ_ARG_ENABLE(poppler,
2276     AS_HELP_STRING([--disable-poppler],
2277         [Disable building Poppler.])
2280 AC_ARG_WITH(system-poppler,
2281     AS_HELP_STRING([--with-system-poppler],
2282         [Use system poppler (only needed for PDF import).]),,
2283     [with_system_poppler="$with_system_libs"])
2285 AC_ARG_WITH(system-abseil,
2286     AS_HELP_STRING([--with-system-abseil],
2287         [Use the abseil libraries already on system.]),,
2288     [with_system_abseil="$with_system_libs"])
2290 AC_ARG_WITH(system-openjpeg,
2291     AS_HELP_STRING([--with-system-openjpeg],
2292         [Use the OpenJPEG library already on system.]),,
2293     [with_system_openjpeg="$with_system_libs"])
2295 libo_FUZZ_ARG_ENABLE(gpgmepp,
2296     AS_HELP_STRING([--disable-gpgmepp],
2297         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2300 AC_ARG_WITH(system-gpgmepp,
2301     AS_HELP_STRING([--with-system-gpgmepp],
2302         [Use gpgmepp already on system]),,
2303     [with_system_gpgmepp="$with_system_libs"])
2305 AC_ARG_WITH(system-mariadb,
2306     AS_HELP_STRING([--with-system-mariadb],
2307         [Use MariaDB/MySQL libraries already on system.]),,
2308     [with_system_mariadb="$with_system_libs"])
2310 AC_ARG_ENABLE(bundle-mariadb,
2311     AS_HELP_STRING([--enable-bundle-mariadb],
2312         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2315 AC_ARG_WITH(system-postgresql,
2316     AS_HELP_STRING([--with-system-postgresql],
2317         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2318          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2319     [with_system_postgresql="$with_system_libs"])
2321 AC_ARG_WITH(libpq-path,
2322     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2323         [Use this PostgreSQL C interface (libpq) installation for building
2324          the PostgreSQL-SDBC extension.]),
2327 AC_ARG_WITH(system-firebird,
2328     AS_HELP_STRING([--with-system-firebird],
2329         [Use Firebird libraries already on system, for building the Firebird-SDBC
2330          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2331     [with_system_firebird="$with_system_libs"])
2333 AC_ARG_WITH(system-libtommath,
2334             AS_HELP_STRING([--with-system-libtommath],
2335                            [Use libtommath already on system]),,
2336             [with_system_libtommath="$with_system_libs"])
2338 AC_ARG_WITH(system-hsqldb,
2339     AS_HELP_STRING([--with-system-hsqldb],
2340         [Use hsqldb already on system.]))
2342 AC_ARG_WITH(hsqldb-jar,
2343     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2344         [Specify path to jarfile manually.]),
2345     HSQLDB_JAR=$withval)
2347 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2348     AS_HELP_STRING([--disable-scripting-beanshell],
2349         [Disable support for scripts in BeanShell.]),
2353 AC_ARG_WITH(system-beanshell,
2354     AS_HELP_STRING([--with-system-beanshell],
2355         [Use beanshell already on system.]),,
2356     [with_system_beanshell="$with_system_jars"])
2358 AC_ARG_WITH(beanshell-jar,
2359     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2360         [Specify path to jarfile manually.]),
2361     BSH_JAR=$withval)
2363 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2364     AS_HELP_STRING([--disable-scripting-javascript],
2365         [Disable support for scripts in JavaScript.]),
2369 AC_ARG_WITH(system-rhino,
2370     AS_HELP_STRING([--with-system-rhino],
2371         [Use rhino already on system.]),,)
2372 #    [with_system_rhino="$with_system_jars"])
2373 # Above is not used as we have different debug interface
2374 # patched into internal rhino. This code needs to be fixed
2375 # before we can enable it by default.
2377 AC_ARG_WITH(rhino-jar,
2378     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2379         [Specify path to jarfile manually.]),
2380     RHINO_JAR=$withval)
2382 AC_ARG_WITH(system-jfreereport,
2383     AS_HELP_STRING([--with-system-jfreereport],
2384         [Use JFreeReport already on system.]),,
2385     [with_system_jfreereport="$with_system_jars"])
2387 AC_ARG_WITH(sac-jar,
2388     AS_HELP_STRING([--with-sac-jar=JARFILE],
2389         [Specify path to jarfile manually.]),
2390     SAC_JAR=$withval)
2392 AC_ARG_WITH(libxml-jar,
2393     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2394         [Specify path to jarfile manually.]),
2395     LIBXML_JAR=$withval)
2397 AC_ARG_WITH(flute-jar,
2398     AS_HELP_STRING([--with-flute-jar=JARFILE],
2399         [Specify path to jarfile manually.]),
2400     FLUTE_JAR=$withval)
2402 AC_ARG_WITH(jfreereport-jar,
2403     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2404         [Specify path to jarfile manually.]),
2405     JFREEREPORT_JAR=$withval)
2407 AC_ARG_WITH(liblayout-jar,
2408     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2409         [Specify path to jarfile manually.]),
2410     LIBLAYOUT_JAR=$withval)
2412 AC_ARG_WITH(libloader-jar,
2413     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2414         [Specify path to jarfile manually.]),
2415     LIBLOADER_JAR=$withval)
2417 AC_ARG_WITH(libformula-jar,
2418     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2419         [Specify path to jarfile manually.]),
2420     LIBFORMULA_JAR=$withval)
2422 AC_ARG_WITH(librepository-jar,
2423     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2424         [Specify path to jarfile manually.]),
2425     LIBREPOSITORY_JAR=$withval)
2427 AC_ARG_WITH(libfonts-jar,
2428     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2429         [Specify path to jarfile manually.]),
2430     LIBFONTS_JAR=$withval)
2432 AC_ARG_WITH(libserializer-jar,
2433     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2434         [Specify path to jarfile manually.]),
2435     LIBSERIALIZER_JAR=$withval)
2437 AC_ARG_WITH(libbase-jar,
2438     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2439         [Specify path to jarfile manually.]),
2440     LIBBASE_JAR=$withval)
2442 AC_ARG_WITH(system-odbc,
2443     AS_HELP_STRING([--with-system-odbc],
2444         [Use the odbc headers already on system.]),,
2445     [with_system_odbc="auto"])
2447 AC_ARG_WITH(system-sane,
2448     AS_HELP_STRING([--with-system-sane],
2449         [Use sane.h already on system.]),,
2450     [with_system_sane="$with_system_headers"])
2452 AC_ARG_WITH(system-bluez,
2453     AS_HELP_STRING([--with-system-bluez],
2454         [Use bluetooth.h already on system.]),,
2455     [with_system_bluez="$with_system_headers"])
2457 AC_ARG_WITH(system-boost,
2458     AS_HELP_STRING([--with-system-boost],
2459         [Use boost already on system.]),,
2460     [with_system_boost="$with_system_headers"])
2462 AC_ARG_WITH(system-dragonbox,
2463     AS_HELP_STRING([--with-system-dragonbox],
2464         [Use dragonbox already on system.]),,
2465     [with_system_dragonbox="$with_system_headers"])
2467 AC_ARG_WITH(system-libfixmath,
2468     AS_HELP_STRING([--with-system-libfixmath],
2469         [Use libfixmath already on system.]),,
2470     [with_system_libfixmath="$with_system_libs"])
2472 AC_ARG_WITH(system-glm,
2473     AS_HELP_STRING([--with-system-glm],
2474         [Use glm already on system.]),,
2475     [with_system_glm="$with_system_headers"])
2477 AC_ARG_WITH(system-hunspell,
2478     AS_HELP_STRING([--with-system-hunspell],
2479         [Use libhunspell already on system.]),,
2480     [with_system_hunspell="$with_system_libs"])
2482 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2483     AS_HELP_STRING([--enable-cairo-rgba],
2484         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2486 libo_FUZZ_ARG_ENABLE(zxing,
2487     AS_HELP_STRING([--disable-zxing],
2488        [Disable use of zxing external library.]))
2490 AC_ARG_WITH(system-zxing,
2491     AS_HELP_STRING([--with-system-zxing],
2492         [Use libzxing already on system.]),,
2493     [with_system_zxing="$with_system_libs"])
2495 AC_ARG_WITH(system-box2d,
2496     AS_HELP_STRING([--with-system-box2d],
2497         [Use box2d already on system.]),,
2498     [with_system_box2d="$with_system_libs"])
2500 AC_ARG_WITH(system-mythes,
2501     AS_HELP_STRING([--with-system-mythes],
2502         [Use mythes already on system.]),,
2503     [with_system_mythes="$with_system_libs"])
2505 AC_ARG_WITH(system-altlinuxhyph,
2506     AS_HELP_STRING([--with-system-altlinuxhyph],
2507         [Use ALTLinuxhyph already on system.]),,
2508     [with_system_altlinuxhyph="$with_system_libs"])
2510 AC_ARG_WITH(system-lpsolve,
2511     AS_HELP_STRING([--with-system-lpsolve],
2512         [Use lpsolve already on system.]),,
2513     [with_system_lpsolve="$with_system_libs"])
2515 AC_ARG_WITH(system-coinmp,
2516     AS_HELP_STRING([--with-system-coinmp],
2517         [Use CoinMP already on system.]),,
2518     [with_system_coinmp="$with_system_libs"])
2520 AC_ARG_WITH(system-liblangtag,
2521     AS_HELP_STRING([--with-system-liblangtag],
2522         [Use liblangtag library already on system.]),,
2523     [with_system_liblangtag="$with_system_libs"])
2525 AC_ARG_WITH(system-lockfile,
2526     AS_HELP_STRING([--with-system-lockfile[=file]],
2527         [Detect a system lockfile program or use the \$file argument.]))
2529 AC_ARG_WITH(webdav,
2530     AS_HELP_STRING([--without-webdav],
2531         [Disable WebDAV support in the UCB.]))
2533 AC_ARG_WITH(linker-hash-style,
2534     AS_HELP_STRING([--with-linker-hash-style],
2535         [Use linker with --hash-style=<style> when linking shared objects.
2536          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2537          if supported on the build system, and "sysv" otherwise.]))
2539 AC_ARG_WITH(jdk-home,
2540     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2541         [If you have installed JDK 9 or later on your system please supply the
2542          path here. Note that this is not the location of the java command but the
2543          location of the entire distribution. In case of cross-compiling, this
2544          is the JDK of the host os. Use --with-build-platform-configure-options
2545          to point to a different build platform JDK.]),
2548 AC_ARG_WITH(help,
2549     AS_HELP_STRING([--with-help],
2550         [Enable the build of help. There is a special parameter "common" that
2551          can be used to bundle only the common part, .e.g help-specific icons.
2552          This is useful when you build the helpcontent separately.])
2553     [
2554                           Usage:     --with-help    build the old local help
2555                                  --without-help     no local help (default)
2556                                  --with-help=html   build the new HTML local help
2557                                  --with-help=online build the new HTML online help
2558     ],
2561 AC_ARG_WITH(omindex,
2562    AS_HELP_STRING([--with-omindex],
2563         [Enable the support of xapian-omega index for online help.])
2564    [
2565                          Usage: --with-omindex=server prepare the pages for omindex
2566                                 but let xapian-omega be built in server.
2567                                 --with-omindex=noxap do not prepare online pages
2568                                 for xapian-omega
2569   ],
2572 libo_FUZZ_ARG_WITH(java,
2573     AS_HELP_STRING([--with-java=<java command>],
2574         [Specify the name of the Java interpreter command. Typically "java"
2575          which is the default.
2577          To build without support for Java components, applets, accessibility
2578          or the XML filters written in Java, use --without-java or --with-java=no.]),
2579     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2580     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2583 AC_ARG_WITH(jvm-path,
2584     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2585         [Use a specific JVM search path at runtime.
2586          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2589 AC_ARG_WITH(ant-home,
2590     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2591         [If you have installed Apache Ant on your system, please supply the path here.
2592          Note that this is not the location of the Ant binary but the location
2593          of the entire distribution.]),
2596 AC_ARG_WITH(symbol-config,
2597     AS_HELP_STRING([--with-symbol-config],
2598         [Configuration for the crashreport symbol upload]),
2599         [],
2600         [with_symbol_config=no])
2602 AC_ARG_WITH(export-validation,
2603     AS_HELP_STRING([--without-export-validation],
2604         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2605 ,with_export_validation=auto)
2607 AC_ARG_WITH(bffvalidator,
2608     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2609         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2610          Requires installed Microsoft Office Binary File Format Validator.
2611          Note: export-validation (--with-export-validation) is required to be turned on.
2612          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2613 ,with_bffvalidator=no)
2615 libo_FUZZ_ARG_WITH(junit,
2616     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2617         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2618          --without-junit disables those tests. Not relevant in the --without-java case.]),
2619 ,with_junit=yes)
2621 AC_ARG_WITH(hamcrest,
2622     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2623         [Specifies the hamcrest jar file to use for JUnit-based tests.
2624          --without-junit disables those tests. Not relevant in the --without-java case.]),
2625 ,with_hamcrest=yes)
2627 AC_ARG_WITH(perl-home,
2628     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2629         [If you have installed Perl 5 Distribution, on your system, please
2630          supply the path here. Note that this is not the location of the Perl
2631          binary but the location of the entire distribution.]),
2634 libo_FUZZ_ARG_WITH(doxygen,
2635     AS_HELP_STRING(
2636         [--with-doxygen=<absolute path to doxygen executable>],
2637         [Specifies the doxygen executable to use when generating ODK C/C++
2638          documentation. --without-doxygen disables generation of ODK C/C++
2639          documentation. Not relevant in the --disable-odk case.]),
2640 ,with_doxygen=yes)
2642 AC_ARG_WITH(visual-studio,
2643     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2644         [Specify which Visual Studio version to use in case several are
2645          installed. Currently 2019 (default) and 2022 are supported.]),
2648 AC_ARG_WITH(windows-sdk,
2649     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2650         [Specify which Windows SDK, or "Windows Kit", version to use
2651          in case the one that came with the selected Visual Studio
2652          is not what you want for some reason. Note that not all compiler/SDK
2653          combinations are supported. The intent is that this option should not
2654          be needed.]),
2657 AC_ARG_WITH(lang,
2658     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2659         [Use this option to build LibreOffice with additional UI language support.
2660          English (US) is always included by default.
2661          Separate multiple languages with space.
2662          For all languages, use --with-lang=ALL.]),
2665 AC_ARG_WITH(locales,
2666     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2667         [Use this option to limit the locale information built in.
2668          Separate multiple locales with space.
2669          Very experimental and might well break stuff.
2670          Just a desperate measure to shrink code and data size.
2671          By default all the locales available is included.
2672          Just works with --disable-dynloading. Defaults to "ALL".
2673          This option is completely unrelated to --with-lang.])
2674     [
2675                           Affects also our character encoding conversion
2676                           tables for encodings mainly targeted for a
2677                           particular locale, like EUC-CN and EUC-TW for
2678                           zh, ISO-2022-JP for ja.
2680                           Affects also our add-on break iterator data for
2681                           some languages.
2683                           For the default, all locales, don't use this switch at all.
2684                           Specifying just the language part of a locale means all matching
2685                           locales will be included.
2686     ],
2689 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2690 libo_FUZZ_ARG_WITH(krb5,
2691     AS_HELP_STRING([--with-krb5],
2692         [Enable MIT Kerberos 5 support in modules that support it.
2693          By default automatically enabled on platforms
2694          where a good system Kerberos 5 is available.]),
2697 libo_FUZZ_ARG_WITH(gssapi,
2698     AS_HELP_STRING([--with-gssapi],
2699         [Enable GSSAPI support in modules that support it.
2700          By default automatically enabled on platforms
2701          where a good system GSSAPI is available.]),
2704 libo_FUZZ_ARG_WITH(lxml,
2705     AS_HELP_STRING([--without-lxml],
2706         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2707          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2708          report widget classes and ids.]),
2711 libo_FUZZ_ARG_WITH(latest-c++,
2712     AS_HELP_STRING([--with-latest-c++],
2713         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2714          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2715         [with_latest_c__=no])
2717 AC_ARG_WITH(gtk3-build,
2718     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2719         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2720          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2722 dnl ===================================================================
2723 dnl Branding
2724 dnl ===================================================================
2726 AC_ARG_WITH(branding,
2727     AS_HELP_STRING([--with-branding=/path/to/images],
2728         [Use given path to retrieve branding images set.])
2729     [
2730                           Search for intro.png about.svg and logo.svg.
2731                           If any is missing, default ones will be used instead.
2733                           Search also progress.conf for progress
2734                           settings on intro screen :
2736                           PROGRESSBARCOLOR="255,255,255" Set color of
2737                           progress bar. Comma separated RGB decimal values.
2738                           PROGRESSSIZE="407,6" Set size of progress bar.
2739                           Comma separated decimal values (width, height).
2740                           PROGRESSPOSITION="61,317" Set position of progress
2741                           bar from left,top. Comma separated decimal values.
2742                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2743                           bar frame. Comma separated RGB decimal values.
2744                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2745                           bar text. Comma separated RGB decimal values.
2746                           PROGRESSTEXTBASELINE="287" Set vertical position of
2747                           progress bar text from top. Decimal value.
2749                           Default values will be used if not found.
2750     ],
2754 AC_ARG_WITH(extra-buildid,
2755     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2756         [Show addition build identification in about dialog.]),
2760 AC_ARG_WITH(vendor,
2761     AS_HELP_STRING([--with-vendor="John the Builder"],
2762         [Set vendor of the build.]),
2765 AC_ARG_WITH(privacy-policy-url,
2766     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2767         [The URL to your privacy policy (needed when
2768          enabling online-update or crashreporting via breakpad)]),
2769         [if test "x$with_privacy_policy_url" = "xyes"; then
2770             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2771          elif test "x$with_privacy_policy_url" = "xno"; then
2772             with_privacy_policy_url="undefined"
2773          fi]
2774 ,[with_privacy_policy_url="undefined"])
2776 AC_ARG_WITH(android-package-name,
2777     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2778         [Set Android package name of the build.]),
2781 AC_ARG_WITH(compat-oowrappers,
2782     AS_HELP_STRING([--with-compat-oowrappers],
2783         [Install oo* wrappers in parallel with
2784          lo* ones to keep backward compatibility.
2785          Has effect only with make distro-pack-install]),
2788 AC_ARG_WITH(os-version,
2789     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2790         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2793 AC_ARG_WITH(parallelism,
2794     AS_HELP_STRING([--with-parallelism],
2795         [Number of jobs to run simultaneously during build. Parallel builds can
2796         save a lot of time on multi-cpu machines. Defaults to the number of
2797         CPUs on the machine, unless you configure --enable-icecream - then to
2798         40.]),
2801 AC_ARG_WITH(all-tarballs,
2802     AS_HELP_STRING([--with-all-tarballs],
2803         [Download all external tarballs unconditionally]))
2805 AC_ARG_WITH(gdrive-client-id,
2806     AS_HELP_STRING([--with-gdrive-client-id],
2807         [Provides the client id of the application for OAuth2 authentication
2808         on Google Drive. If either this or --with-gdrive-client-secret is
2809         empty, the feature will be disabled]),
2812 AC_ARG_WITH(gdrive-client-secret,
2813     AS_HELP_STRING([--with-gdrive-client-secret],
2814         [Provides the client secret of the application for OAuth2
2815         authentication on Google Drive. If either this or
2816         --with-gdrive-client-id is empty, the feature will be disabled]),
2819 AC_ARG_WITH(alfresco-cloud-client-id,
2820     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2821         [Provides the client id of the application for OAuth2 authentication
2822         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2823         empty, the feature will be disabled]),
2826 AC_ARG_WITH(alfresco-cloud-client-secret,
2827     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2828         [Provides the client secret of the application for OAuth2
2829         authentication on Alfresco Cloud. If either this or
2830         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2833 AC_ARG_WITH(onedrive-client-id,
2834     AS_HELP_STRING([--with-onedrive-client-id],
2835         [Provides the client id of the application for OAuth2 authentication
2836         on OneDrive. If either this or --with-onedrive-client-secret is
2837         empty, the feature will be disabled]),
2840 AC_ARG_WITH(onedrive-client-secret,
2841     AS_HELP_STRING([--with-onedrive-client-secret],
2842         [Provides the client secret of the application for OAuth2
2843         authentication on OneDrive. If either this or
2844         --with-onedrive-client-id is empty, the feature will be disabled]),
2846 dnl ===================================================================
2847 dnl Do we want to use pre-build binary tarball for recompile
2848 dnl ===================================================================
2850 if test "$enable_library_bin_tar" = "yes" ; then
2851     USE_LIBRARY_BIN_TAR=TRUE
2852 else
2853     USE_LIBRARY_BIN_TAR=
2855 AC_SUBST(USE_LIBRARY_BIN_TAR)
2857 dnl ===================================================================
2858 dnl Test whether build target is Release Build
2859 dnl ===================================================================
2860 AC_MSG_CHECKING([whether build target is Release Build])
2861 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2862     AC_MSG_RESULT([no])
2863     ENABLE_RELEASE_BUILD=
2864     GET_TASK_ALLOW_ENTITLEMENT='
2865         <!-- We want to be able to debug a hardened process when not building for release -->
2866         <key>com.apple.security.get-task-allow</key>
2867         <true/>'
2868 else
2869     AC_MSG_RESULT([yes])
2870     ENABLE_RELEASE_BUILD=TRUE
2871     GET_TASK_ALLOW_ENTITLEMENT=''
2873 AC_SUBST(ENABLE_RELEASE_BUILD)
2874 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2876 AC_MSG_CHECKING([whether to build a Community flavor])
2877 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2878     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2879     AC_MSG_RESULT([yes])
2880 else
2881     AC_MSG_RESULT([no])
2884 dnl ===================================================================
2885 dnl Test whether to sign Windows Build
2886 dnl ===================================================================
2887 AC_MSG_CHECKING([whether to sign windows build])
2888 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2889     AC_MSG_RESULT([yes])
2890     WINDOWS_BUILD_SIGNING="TRUE"
2891 else
2892     AC_MSG_RESULT([no])
2893     WINDOWS_BUILD_SIGNING="FALSE"
2895 AC_SUBST(WINDOWS_BUILD_SIGNING)
2897 dnl ===================================================================
2898 dnl MacOSX build and runtime environment options
2899 dnl ===================================================================
2901 AC_ARG_WITH(macosx-version-min-required,
2902     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2903         [set the minimum OS version needed to run the built LibreOffice])
2904     [
2905                           e. g.: --with-macosx-version-min-required=10.14
2906     ],
2909 dnl ===================================================================
2910 dnl Check for incompatible options set by fuzzing, and reset those
2911 dnl automatically to working combinations
2912 dnl ===================================================================
2914 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2915         "$enable_dbus" != "$enable_avahi"; then
2916     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2917     enable_avahi=$enable_dbus
2920 add_lopath_after ()
2922     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2923         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2924     fi
2927 add_lopath_before ()
2929     local IFS=${P_SEP}
2930     local path_cleanup
2931     local dir
2932     for dir in $LO_PATH ; do
2933         if test "$dir" != "$1" ; then
2934             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2935         fi
2936     done
2937     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2940 dnl ===================================================================
2941 dnl check for required programs (grep, awk, sed, bash)
2942 dnl ===================================================================
2944 pathmunge ()
2946     local new_path
2947     if test -n "$1"; then
2948         if test "$build_os" = "cygwin"; then
2949             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2950                 PathFormat "$1"
2951                 new_path=`cygpath -sm "$formatted_path"`
2952             else
2953                 PathFormat "$1"
2954                 new_path=`cygpath -u "$formatted_path"`
2955             fi
2956         else
2957             new_path="$1"
2958         fi
2959         if test "$2" = "after"; then
2960             add_lopath_after "$new_path"
2961         else
2962             add_lopath_before "$new_path"
2963         fi
2964     fi
2967 AC_PROG_AWK
2968 AC_PATH_PROG( AWK, $AWK)
2969 if test -z "$AWK"; then
2970     AC_MSG_ERROR([install awk to run this script])
2973 AC_PATH_PROG(BASH, bash)
2974 if test -z "$BASH"; then
2975     AC_MSG_ERROR([bash not found in \$PATH])
2977 AC_SUBST(BASH)
2979 # prefer parallel compression tools, if available
2980 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2981 if test -z "$COMPRESSIONTOOL"; then
2982     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2983     if test -z "$COMPRESSIONTOOL"; then
2984         AC_MSG_ERROR([gzip not found in \$PATH])
2985     fi
2987 AC_SUBST(COMPRESSIONTOOL)
2989 AC_MSG_CHECKING([for GNU or BSD tar])
2990 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2991     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2992     if test $? -eq 0;  then
2993         GNUTAR=$a
2994         break
2995     fi
2996 done
2997 AC_MSG_RESULT($GNUTAR)
2998 if test -z "$GNUTAR"; then
2999     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3001 AC_SUBST(GNUTAR)
3003 AC_MSG_CHECKING([for tar's option to strip components])
3004 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3005 if test $? -eq 0; then
3006     STRIP_COMPONENTS="--strip-components"
3007 else
3008     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3009     if test $? -eq 0; then
3010         STRIP_COMPONENTS="--strip-path"
3011     else
3012         STRIP_COMPONENTS="unsupported"
3013     fi
3015 AC_MSG_RESULT($STRIP_COMPONENTS)
3016 if test x$STRIP_COMPONENTS = xunsupported; then
3017     AC_MSG_ERROR([you need a tar that is able to strip components.])
3019 AC_SUBST(STRIP_COMPONENTS)
3021 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3022 dnl desktop OSes from "mobile" ones.
3024 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3025 dnl In other words, that when building for an OS that is not a
3026 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3028 dnl Note the direction of the implication; there is no assumption that
3029 dnl cross-compiling would imply a non-desktop OS.
3031 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3032     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3033     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3034     if test "$_os" != Emscripten; then
3035         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3036     fi
3039 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3040 # also work with the default gtk3 plugin.
3041 if test "$enable_wasm_strip" = "yes"; then
3042     enable_avmedia=no
3043     enable_cmis=no
3044     enable_coinmp=no
3045     enable_cups=no
3046     test "$_os" = Emscripten && enable_curl=no
3047     enable_database_connectivity=no
3048     enable_dbus=no
3049     enable_dconf=no
3050     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3051     enable_extension_integration=no
3052     enable_extensions=no
3053     enable_extension_update=no
3054     enable_gio=no
3055     enable_gpgmepp=no
3056     enable_ldap=no
3057     enable_lotuswordpro=no
3058     enable_lpsolve=no
3059     enable_nss=no
3060     enable_odk=no
3061     enable_online_update=no
3062     enable_opencl=no
3063     enable_pdfimport=no
3064     enable_randr=no
3065     enable_report_builder=no
3066     enable_scripting=no
3067     enable_sdremote_bluetooth=no
3068     enable_skia=no
3069     enable_xmlhelp=no
3070     enable_zxing=no
3071     test_libepubgen=no
3072     test_libcdr=no
3073     test_libcmis=no
3074     test_libetonyek=no
3075     test_libfreehand=no
3076     test_libmspub=no
3077     test_libpagemaker=no
3078     test_libqxp=no
3079     test_libvisio=no
3080     test_libzmf=no
3081     test_webdav=no
3082     with_galleries=no
3083     with_templates=no
3084     with_webdav=no
3085     with_x=no
3087     test "${with_fonts+set}" = set || with_fonts=yes
3088     test "${with_locales+set}" = set || with_locales=en
3090     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3091     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3092     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3093     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3094 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3095     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3096     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3097     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3098     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3099 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3100     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3101     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3102     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3103     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3104     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3105     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3106     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3107     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3110 EMSCRIPTEN_NEH_MAJOR=3
3111 EMSCRIPTEN_NEH_MINOR=1
3112 EMSCRIPTEN_NEH_TINY=3
3113 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3115 if test "$enable_wasm_exceptions" = yes; then
3116     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3117     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3118     if test $? -ne 0; then
3119         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3120     else
3121         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3122     fi
3123     ENABLE_WASM_EXCEPTIONS=TRUE
3125 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3127 # Whether to build "avmedia" functionality or not.
3129 if test "$enable_avmedia" = yes; then
3130     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3131     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3132 else
3133     test_gstreamer_1_0=no
3136 # Decide whether to build database connectivity stuff (including Base) or not.
3137 if test "$enable_database_connectivity" != no; then
3138     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3139     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3140 else
3141     if test "$_os" = iOS; then
3142         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3143     fi
3144     disable_database_connectivity_dependencies
3147 if test -z "$enable_extensions"; then
3148     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3149     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3150         enable_extensions=yes
3151     fi
3154 DISABLE_SCRIPTING=''
3155 if test "$enable_scripting" = yes; then
3156     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3157     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3158 else
3159     DISABLE_SCRIPTING='TRUE'
3160     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3163 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3164     # Disable dynamic_loading always for iOS and Android
3165     enable_dynamic_loading=no
3166 elif test -z "$enable_dynamic_loading"; then
3167     # Otherwise enable it unless specifically disabled
3168     enable_dynamic_loading=yes
3171 DISABLE_DYNLOADING=''
3172 if test "$enable_dynamic_loading" = yes; then
3173     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3174 else
3175     DISABLE_DYNLOADING='TRUE'
3176     if test $_os != iOS -a $_os != Android; then
3177         enable_database_connectivity=no
3178         enable_nss=no
3179         enable_odk=no
3180         enable_python=no
3181         enable_skia=no
3182         with_java=no
3183     fi
3185 AC_SUBST(DISABLE_DYNLOADING)
3187 ENABLE_CUSTOMTARGET_COMPONENTS=
3188 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3189     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3190     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3191         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3192     fi
3194 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3196 if test "$enable_extensions" = yes; then
3197     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3198     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3199 else
3200     enable_extension_integration=no
3201     enable_extension_update=no
3204 # remember SYSBASE value
3205 AC_SUBST(SYSBASE)
3207 dnl ===================================================================
3208 dnl  Sort out various gallery compilation options
3209 dnl ===================================================================
3210 WITH_GALLERY_BUILD=TRUE
3211 AC_MSG_CHECKING([how to build and package galleries])
3212 if test -n "${with_galleries}"; then
3213     if test "$with_galleries" = "build"; then
3214         if test "$enable_database_connectivity" = no; then
3215             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3216         fi
3217         AC_MSG_RESULT([build from source images internally])
3218     elif test "$with_galleries" = "no"; then
3219         WITH_GALLERY_BUILD=
3220         AC_MSG_RESULT([disable non-internal gallery build])
3221     else
3222         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3223     fi
3224 else
3225     if test $_os != iOS -a $_os != Android; then
3226         AC_MSG_RESULT([internal src images for desktop])
3227     else
3228         WITH_GALLERY_BUILD=
3229         AC_MSG_RESULT([disable src image build])
3230     fi
3232 AC_SUBST(WITH_GALLERY_BUILD)
3234 dnl ===================================================================
3235 dnl  Sort out various templates compilation options
3236 dnl ===================================================================
3237 WITH_TEMPLATES=TRUE
3238 AC_MSG_CHECKING([build with or without template files])
3239 if test -n "${with_templates}"; then
3240     if test "$with_templates" = "yes"; then
3241         AC_MSG_RESULT([enable all templates])
3242     elif test "$with_templates" = "no"; then
3243         WITH_TEMPLATES=
3244         AC_MSG_RESULT([disable non-internal templates])
3245     else
3246         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3247     fi
3248 else
3249     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3250         AC_MSG_RESULT([enable all templates])
3251     else
3252         WITH_TEMPLATES=
3253         AC_MSG_RESULT([disable non-internal templates])
3254     fi
3256 AC_SUBST(WITH_TEMPLATES)
3258 dnl ===================================================================
3259 dnl  Checks if ccache is available
3260 dnl ===================================================================
3261 CCACHE_DEPEND_MODE=
3262 if test "$enable_ccache" = "no"; then
3263     CCACHE=""
3264 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3265     case "%$CC%$CXX%" in
3266     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3267     # assume that's good then
3268     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3269         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3270         CCACHE_DEPEND_MODE=1
3271         ;;
3272     *)
3273         # try to use our own ccache if it is available and CCACHE was not already defined
3274         if test -z "$CCACHE"; then
3275             if test "$_os" = "WINNT"; then
3276                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3277             fi
3278             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3279                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3280             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3281                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3282             fi
3283         fi
3284         AC_PATH_PROG([CCACHE],[ccache],[not found])
3285         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3286             CCACHE=`win_short_path_for_make "$CCACHE"`
3287             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3288             rm -f conftest.txt
3289             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3290             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3291             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3292                 AC_MSG_RESULT(yes)
3293             else
3294                 AC_MSG_RESULT(no)
3295                 CCACHE="not found"
3296             fi
3297             rm -f conftest.txt
3298         fi
3299         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3300             # on windows/VC perhaps sccache is around?
3301             case "%$CC%$CXX%" in
3302             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3303             # assume that's good then
3304             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3305                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3306                 CCACHE_DEPEND_MODE=1
3307                 SCCACHE=1
3308                 ;;
3309             *)
3310                 # for sharing code below, reuse CCACHE env var
3311                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3312                 if test "$CCACHE" != "not found"; then
3313                     CCACHE=`win_short_path_for_make "$CCACHE"`
3314                     SCCACHE=1
3315                     CCACHE_DEPEND_MODE=1
3316                 fi
3317                 ;;
3318             esac
3319         fi
3320         if test "$CCACHE" = "not found"; then
3321             CCACHE=""
3322         fi
3323         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3324             CCACHE_DEPEND_MODE=1
3325             # Need to check for ccache version: otherwise prevents
3326             # caching of the results (like "-x objective-c++" for Mac)
3327             if test $_os = Darwin -o $_os = iOS; then
3328                 # Check ccache version
3329                 AC_MSG_CHECKING([whether version of ccache is suitable])
3330                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3331                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3332                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3333                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3334                 else
3335                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3336                     CCACHE=""
3337                     CCACHE_DEPEND_MODE=
3338                 fi
3339             fi
3340         fi
3341         ;;
3342     esac
3343 else
3344     CCACHE=""
3346 if test "$enable_ccache" = "nodepend"; then
3347     CCACHE_DEPEND_MODE=""
3349 AC_SUBST(CCACHE_DEPEND_MODE)
3351 # sccache defaults are good enough
3352 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3353     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3354     # or (...) max_size = 20.0 G
3355     # -p works with both 4.2 and 4.4
3356     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3357     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3358     if test "$ccache_size" = ""; then
3359         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3360         if test "$ccache_size" = ""; then
3361             ccache_size=0
3362         fi
3363         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3364         if test $ccache_size -lt 1024; then
3365             CCACHE=""
3366             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3367             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3368         else
3369             # warn that ccache may be too small for debug build
3370             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3371             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3372         fi
3373     else
3374         if test $ccache_size -lt 5; then
3375             #warn that ccache may be too small for debug build
3376             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3377             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3378         fi
3379     fi
3382 ENABLE_Z7_DEBUG=
3383 if test "$enable_z7_debug" != no; then
3384     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3385         ENABLE_Z7_DEBUG=TRUE
3386     fi
3387 else
3388     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3389     add_warning "ccache will not work with --disable-z7-debug"
3391 AC_SUBST(ENABLE_Z7_DEBUG)
3393 dnl ===================================================================
3394 dnl  Checks for C compiler,
3395 dnl  The check for the C++ compiler is later on.
3396 dnl ===================================================================
3397 if test "$_os" != "WINNT"; then
3398     GCC_HOME_SET="true"
3399     AC_MSG_CHECKING([gcc home])
3400     if test -z "$with_gcc_home"; then
3401         if test "$enable_icecream" = "yes"; then
3402             if test -d "/usr/lib/icecc/bin"; then
3403                 GCC_HOME="/usr/lib/icecc/"
3404             elif test -d "/usr/libexec/icecc/bin"; then
3405                 GCC_HOME="/usr/libexec/icecc/"
3406             elif test -d "/opt/icecream/bin"; then
3407                 GCC_HOME="/opt/icecream/"
3408             else
3409                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3411             fi
3412         else
3413             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3414             GCC_HOME_SET="false"
3415         fi
3416     else
3417         GCC_HOME="$with_gcc_home"
3418     fi
3419     AC_MSG_RESULT($GCC_HOME)
3420     AC_SUBST(GCC_HOME)
3422     if test "$GCC_HOME_SET" = "true"; then
3423         if test -z "$CC"; then
3424             CC="$GCC_HOME/bin/gcc"
3425             CC_BASE="gcc"
3426         fi
3427         if test -z "$CXX"; then
3428             CXX="$GCC_HOME/bin/g++"
3429             CXX_BASE="g++"
3430         fi
3431     fi
3434 COMPATH=`dirname "$CC"`
3435 if test "$COMPATH" = "."; then
3436     AC_PATH_PROGS(COMPATH, $CC)
3437     dnl double square bracket to get single because of M4 quote...
3438     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3440 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3442 dnl ===================================================================
3443 dnl Java support
3444 dnl ===================================================================
3445 AC_MSG_CHECKING([whether to build with Java support])
3446 if test "$with_java" != "no"; then
3447     if test "$DISABLE_SCRIPTING" = TRUE; then
3448         AC_MSG_RESULT([no, overridden by --disable-scripting])
3449         ENABLE_JAVA=""
3450         with_java=no
3451     else
3452         AC_MSG_RESULT([yes])
3453         ENABLE_JAVA="TRUE"
3454         AC_DEFINE(HAVE_FEATURE_JAVA)
3455     fi
3456 else
3457     AC_MSG_RESULT([no])
3458     ENABLE_JAVA=""
3461 AC_SUBST(ENABLE_JAVA)
3463 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3465 dnl ENABLE_JAVA="" indicate no Java support at all
3467 dnl ===================================================================
3468 dnl Check macOS SDK and compiler
3469 dnl ===================================================================
3471 if test $_os = Darwin; then
3473     # The SDK in the currently selected Xcode should be found.
3475     AC_MSG_CHECKING([what macOS SDK to use])
3476     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3477     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3478     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3479     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3480     # problems that existed in the PPC days with target versions not being respected or random
3481     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3482     # SDK version is enough, no need to do both...
3483     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3484     if test ! -d "$MACOSX_SDK_PATH"; then
3485         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3486     fi
3487     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3488     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3489     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3490     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3491     # 10.10.2 is 101002
3492     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3493     # correct version in case such an old SDK is specified, it will be rejected later anyway
3494     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3495     if test $MACOSX_SDK_VERSION -lt 101400; then
3496         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14])
3497     fi
3498     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3499         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3500     fi
3501     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3503     AC_MSG_CHECKING([what minimum version of macOS to require])
3504     if test "$with_macosx_version_min_required" = "" ; then
3505         if test "$host_cpu" = x86_64; then
3506             with_macosx_version_min_required="10.14";
3507         else
3508             with_macosx_version_min_required="11.0";
3509         fi
3510     fi
3511     # see same notes about MACOSX_SDK_VERSION above
3512     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3513     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101400; then
3514         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.14])
3515     fi
3516     AC_MSG_RESULT([$with_macosx_version_min_required])
3518     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3519     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3520         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3521     else
3522         AC_MSG_RESULT([yes])
3523     fi
3525     # export this so that "xcrun" invocations later return matching values
3526     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3527     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3528     export DEVELOPER_DIR
3529     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3530     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3532     AC_MSG_CHECKING([whether Xcode is new enough])
3533     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3534     my_xcode_ver2=${my_xcode_ver1#Xcode }
3535     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3536     if test "$my_xcode_ver3" -ge 1205; then
3537         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3538         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3539             if test "$my_xcode_ver3" -ge 1600; then
3540                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3541                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3542                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3543             fi
3544             if test "$my_xcode_ver3" -ge 1500; then
3545                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3546                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3547                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3548                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3549                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3550                 x_LDFLAGS=
3551             fi
3552         fi
3553     else
3554         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3555     fi
3557     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3558     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3560     LIBTOOL=/usr/bin/libtool
3561     INSTALL_NAME_TOOL=install_name_tool
3562     if test -z "$save_CC"; then
3563         stdlib=-stdlib=libc++
3565         AC_MSG_CHECKING([what C compiler to use])
3566         CC="`xcrun -find clang`"
3567         CC_BASE=`first_arg_basename "$CC"`
3568         if test "$host_cpu" = x86_64; then
3569             CC+=" -target x86_64-apple-macos"
3570         else
3571             CC+=" -target arm64-apple-macos"
3572         fi
3573         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3574         AC_MSG_RESULT([$CC])
3576         AC_MSG_CHECKING([what C++ compiler to use])
3577         CXX="`xcrun -find clang++`"
3578         CXX_BASE=`first_arg_basename "$CXX"`
3579         if test "$host_cpu" = x86_64; then
3580             CXX+=" -target x86_64-apple-macos"
3581         else
3582             CXX+=" -target arm64-apple-macos"
3583         fi
3584         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3585         AC_MSG_RESULT([$CXX])
3587         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3588         AR=`xcrun -find ar`
3589         NM=`xcrun -find nm`
3590         STRIP=`xcrun -find strip`
3591         LIBTOOL=`xcrun -find libtool`
3592         RANLIB=`xcrun -find ranlib`
3593     fi
3595     AC_MSG_CHECKING([whether to do code signing])
3597     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3598         AC_MSG_RESULT([no])
3599     else
3600         if test "$enable_macosx_code_signing" = yes; then
3601             # By default use the first suitable certificate (?).
3603             # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3604             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3605             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3606             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3607             # "Developer ID Application" one.
3608             identity="Developer ID Application:"
3609         else
3610             identity=$enable_macosx_code_signing
3611         fi
3612         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3613         if test -n "$identity"; then
3614             MACOSX_CODESIGNING_IDENTITY=$identity
3615             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3616             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3617         else
3618             AC_MSG_ERROR([cannot determine identity to use])
3619         fi
3620     fi
3622     AC_MSG_CHECKING([whether to create a Mac App Store package])
3624     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3625         AC_MSG_RESULT([no])
3626     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3627         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3628     else
3629         if test "$enable_macosx_package_signing" = yes; then
3630             # By default use the first suitable certificate.
3631             # It should be a "3rd Party Mac Developer Installer" one
3632             identity="3rd Party Mac Developer Installer:"
3633         else
3634             identity=$enable_macosx_package_signing
3635         fi
3636         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3637         if test -n "$identity"; then
3638             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3639             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3640             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3641         else
3642             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3643         fi
3644     fi
3646     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3647         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3648     fi
3650     AC_MSG_CHECKING([whether to sandbox the application])
3652     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3653         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3654     elif test "$enable_macosx_sandbox" = yes; then
3655         ENABLE_MACOSX_SANDBOX=TRUE
3656         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3657         AC_MSG_RESULT([yes])
3658     else
3659         AC_MSG_RESULT([no])
3660     fi
3662     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3663     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3664     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3666     if test -n "$with_macosx_provisioning_profile" ; then
3667         if test ! -f "$with_macosx_provisioning_profile"; then
3668             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3669         else
3670             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3671             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3672                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3673                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3674                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3675         fi
3676     fi
3678 AC_SUBST(MACOSX_SDK_PATH)
3679 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3680 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3681 AC_SUBST(INSTALL_NAME_TOOL)
3682 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3683 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3684 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3685 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3686 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3687 AC_SUBST(MACOSX_PROVISIONING_INFO)
3688 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3689 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3690 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3692 dnl ===================================================================
3693 dnl Check iOS SDK and compiler
3694 dnl ===================================================================
3696 if test $_os = iOS; then
3697     AC_MSG_CHECKING([what iOS SDK to use])
3699     if test "$enable_ios_simulator" = "yes"; then
3700         platformlc=iphonesimulator
3701         versionmin=-mios-simulator-version-min=14.5
3702     else
3703         platformlc=iphoneos
3704         versionmin=-miphoneos-version-min=14.5
3705     fi
3707     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3709     if ! test -d "$sysroot"; then
3710         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3711     fi
3713     AC_MSG_RESULT($sysroot)
3715     stdlib="-stdlib=libc++"
3717     AC_MSG_CHECKING([what C compiler to use])
3718     CC="`xcrun -find clang`"
3719     CC_BASE=`first_arg_basename "$CC"`
3720     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3721     AC_MSG_RESULT([$CC])
3723     AC_MSG_CHECKING([what C++ compiler to use])
3724     CXX="`xcrun -find clang++`"
3725     CXX_BASE=`first_arg_basename "$CXX"`
3726     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3727     AC_MSG_RESULT([$CXX])
3729     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3730     AR=`xcrun -find ar`
3731     NM=`xcrun -find nm`
3732     STRIP=`xcrun -find strip`
3733     LIBTOOL=`xcrun -find libtool`
3734     RANLIB=`xcrun -find ranlib`
3737 AC_MSG_CHECKING([whether to treat the installation as read-only])
3739 if test $_os = Darwin; then
3740     enable_readonly_installset=yes
3741 elif test "$enable_extensions" != yes; then
3742     enable_readonly_installset=yes
3744 if test "$enable_readonly_installset" = yes; then
3745     AC_MSG_RESULT([yes])
3746     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3747 else
3748     AC_MSG_RESULT([no])
3751 dnl ===================================================================
3752 dnl Structure of install set
3753 dnl ===================================================================
3755 if test $_os = Darwin; then
3756     LIBO_BIN_FOLDER=MacOS
3757     LIBO_ETC_FOLDER=Resources
3758     LIBO_LIBEXEC_FOLDER=MacOS
3759     LIBO_LIB_FOLDER=Frameworks
3760     LIBO_LIB_PYUNO_FOLDER=Resources
3761     LIBO_SHARE_FOLDER=Resources
3762     LIBO_SHARE_HELP_FOLDER=Resources/help
3763     LIBO_SHARE_JAVA_FOLDER=Resources/java
3764     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3765     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3766     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3767     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3768     LIBO_URE_BIN_FOLDER=MacOS
3769     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3770     LIBO_URE_LIB_FOLDER=Frameworks
3771     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3772     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3773 elif test $_os = WINNT; then
3774     LIBO_BIN_FOLDER=program
3775     LIBO_ETC_FOLDER=program
3776     LIBO_LIBEXEC_FOLDER=program
3777     LIBO_LIB_FOLDER=program
3778     LIBO_LIB_PYUNO_FOLDER=program
3779     LIBO_SHARE_FOLDER=share
3780     LIBO_SHARE_HELP_FOLDER=help
3781     LIBO_SHARE_JAVA_FOLDER=program/classes
3782     LIBO_SHARE_PRESETS_FOLDER=presets
3783     LIBO_SHARE_READMES_FOLDER=readmes
3784     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3785     LIBO_SHARE_SHELL_FOLDER=program/shell
3786     LIBO_URE_BIN_FOLDER=program
3787     LIBO_URE_ETC_FOLDER=program
3788     LIBO_URE_LIB_FOLDER=program
3789     LIBO_URE_MISC_FOLDER=program
3790     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3791 else
3792     LIBO_BIN_FOLDER=program
3793     LIBO_ETC_FOLDER=program
3794     LIBO_LIBEXEC_FOLDER=program
3795     LIBO_LIB_FOLDER=program
3796     LIBO_LIB_PYUNO_FOLDER=program
3797     LIBO_SHARE_FOLDER=share
3798     LIBO_SHARE_HELP_FOLDER=help
3799     LIBO_SHARE_JAVA_FOLDER=program/classes
3800     LIBO_SHARE_PRESETS_FOLDER=presets
3801     LIBO_SHARE_READMES_FOLDER=readmes
3802     if test "$enable_fuzzers" != yes; then
3803         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3804     else
3805         LIBO_SHARE_RESOURCE_FOLDER=resource
3806     fi
3807     LIBO_SHARE_SHELL_FOLDER=program/shell
3808     LIBO_URE_BIN_FOLDER=program
3809     LIBO_URE_ETC_FOLDER=program
3810     LIBO_URE_LIB_FOLDER=program
3811     LIBO_URE_MISC_FOLDER=program
3812     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3814 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3815 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3816 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3817 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3818 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3819 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3820 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3821 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3822 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3823 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3824 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3825 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3826 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3827 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3828 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3829 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3831 # Not all of them needed in config_host.mk, add more if need arises
3832 AC_SUBST(LIBO_BIN_FOLDER)
3833 AC_SUBST(LIBO_ETC_FOLDER)
3834 AC_SUBST(LIBO_LIB_FOLDER)
3835 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3836 AC_SUBST(LIBO_SHARE_FOLDER)
3837 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3838 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3839 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3840 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3841 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3842 AC_SUBST(LIBO_URE_BIN_FOLDER)
3843 AC_SUBST(LIBO_URE_ETC_FOLDER)
3844 AC_SUBST(LIBO_URE_LIB_FOLDER)
3845 AC_SUBST(LIBO_URE_MISC_FOLDER)
3846 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3848 dnl ===================================================================
3849 dnl Windows specific tests and stuff
3850 dnl ===================================================================
3852 reg_get_value()
3854     # Return value: $regvalue
3855     unset regvalue
3857     if test "$build_os" = "wsl"; then
3858         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3859         return
3860     fi
3862     local _regentry="/proc/registry${1}/${2}"
3863     if test -f "$_regentry"; then
3864         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3865         # Registry keys read via /proc/registry* are always \0 terminated!
3866         local _regvalue=$(tr -d '\0' < "$_regentry")
3867         if test $? -eq 0; then
3868             regvalue=$_regvalue
3869         fi
3870     fi
3873 # Get a value from the 32-bit side of the Registry
3874 reg_get_value_32()
3876     reg_get_value "32" "$1"
3879 # Get a value from the 64-bit side of the Registry
3880 reg_get_value_64()
3882     reg_get_value "64" "$1"
3885 reg_list_values()
3887     # Return value: $reglist
3888     unset reglist
3890     if test "$build_os" = "wsl"; then
3891         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3892         return
3893     fi
3895     reglist=$(ls "/proc/registry${1}/${2}")
3898 # List values from the 32-bit side of the Registry
3899 reg_list_values_32()
3901     reg_list_values "32" "$1"
3904 # List values from the 64-bit side of the Registry
3905 reg_list_values_64()
3907     reg_list_values "64" "$1"
3910 case "$host_os" in
3911 cygwin*|wsl*)
3912     COM=MSC
3913     OS=WNT
3914     RTL_OS=Windows
3915     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3916         P_SEP=";"
3917     else
3918         P_SEP=:
3919     fi
3920     case "$host_cpu" in
3921     x86_64)
3922         CPUNAME=X86_64
3923         RTL_ARCH=X86_64
3924         PLATFORMID=windows_x86_64
3925         WINDOWS_X64=1
3926         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3927         WIN_HOST_ARCH="x64"
3928         WIN_MULTI_ARCH="x86"
3929         WIN_HOST_BITS=64
3930         ;;
3931     i*86)
3932         CPUNAME=INTEL
3933         RTL_ARCH=x86
3934         PLATFORMID=windows_x86
3935         WIN_HOST_ARCH="x86"
3936         WIN_HOST_BITS=32
3937         WIN_OTHER_ARCH="x64"
3938         ;;
3939     aarch64)
3940         CPUNAME=AARCH64
3941         RTL_ARCH=AARCH64
3942         PLATFORMID=windows_aarch64
3943         WINDOWS_X64=1
3944         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3945         WIN_HOST_ARCH="arm64"
3946         WIN_HOST_BITS=64
3947         with_ucrt_dir=no
3948         ;;
3949     *)
3950         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3951         ;;
3952     esac
3954     case "$build_cpu" in
3955     x86_64) WIN_BUILD_ARCH="x64" ;;
3956     i*86) WIN_BUILD_ARCH="x86" ;;
3957     aarch64) WIN_BUILD_ARCH="arm64" ;;
3958     *)
3959         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3960         ;;
3961     esac
3963     SCPDEFS="$SCPDEFS -D_MSC_VER"
3964     ;;
3965 esac
3967 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3968 # other-arch won't, but wouldn't break the build (x64 on x86).
3969 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3970     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3974 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3975     # To allow building Windows multi-arch releases without cross-tooling
3976     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3977         cross_compiling="yes"
3978     fi
3981 if test "$cross_compiling" = "yes"; then
3982     export CROSS_COMPILING=TRUE
3983     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3984         ENABLE_WASM_STRIP=TRUE
3985     fi
3986     if test "$_os" = "Emscripten"; then
3987         if test "$with_main_module" = "calc"; then
3988             ENABLE_WASM_STRIP_WRITER=TRUE
3989         elif test "$with_main_module" = "writer"; then
3990             ENABLE_WASM_STRIP_CALC=TRUE
3991         fi
3992     fi
3993 else
3994     CROSS_COMPILING=
3995     BUILD_TYPE="$BUILD_TYPE NATIVE"
3997 AC_SUBST(CROSS_COMPILING)
3998 AC_SUBST(ENABLE_WASM_STRIP)
3999 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4000 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4002 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4003 # NOTE: must _not_ be used for bundled external libraries!
4004 ISYSTEM=
4005 if test "$GCC" = "yes"; then
4006     AC_MSG_CHECKING( for -isystem )
4007     save_CFLAGS=$CFLAGS
4008     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4009     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4010     CFLAGS=$save_CFLAGS
4011     if test -n "$ISYSTEM"; then
4012         AC_MSG_RESULT(yes)
4013     else
4014         AC_MSG_RESULT(no)
4015     fi
4017 if test -z "$ISYSTEM"; then
4018     # fall back to using -I
4019     ISYSTEM=-I
4021 AC_SUBST(ISYSTEM)
4023 dnl ===================================================================
4024 dnl  Check which Visual Studio compiler is used
4025 dnl ===================================================================
4027 map_vs_year_to_version()
4029     # Return value: $vsversion
4031     unset vsversion
4033     case $1 in
4034     2019)
4035         vsversion=16;;
4036     2022)
4037         vsversion=17;;
4038     2022preview)
4039         vsversion=17.4;;
4040     *)
4041         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4042     esac
4045 vs_versions_to_check()
4047     # Args: $1 (optional) : versions to check, in the order of preference
4048     # Return value: $vsversions
4050     unset vsversions
4052     if test -n "$1"; then
4053         map_vs_year_to_version "$1"
4054         vsversions=$vsversion
4055     else
4056         # Default version is 2019
4057         vsversions="16"
4058     fi
4061 win_get_env_from_vsvars32bat()
4063     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4064     # Also seems to be located in another directory under the same name: vsvars32.bat
4065     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4066     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4067     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4068     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4069     local result
4070     if test "$build_os" = "wsl"; then
4071         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4072     else
4073         chmod +x $WRAPPERBATCHFILEPATH
4074         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4075     fi
4076     rm -f $WRAPPERBATCHFILEPATH
4077     printf '%s' "$result"
4080 find_ucrt()
4082     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4083     if test -n "$regvalue"; then
4084         PathFormat "$regvalue"
4085         UCRTSDKDIR=$formatted_path_unix
4086         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4087         UCRTVERSION=$regvalue
4088         # Rest if not exist
4089         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4090           UCRTSDKDIR=
4091         fi
4092     fi
4093     if test -z "$UCRTSDKDIR"; then
4094         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4095         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4096         if test -f "$ide_env_file"; then
4097             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4098             UCRTSDKDIR=$formatted_path
4099             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4100             dnl Hack needed at least by tml:
4101             if test "$UCRTVERSION" = 10.0.15063.0 \
4102                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4103                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4104             then
4105                 UCRTVERSION=10.0.14393.0
4106             fi
4107         else
4108           AC_MSG_ERROR([No UCRT found])
4109         fi
4110     fi
4113 find_msvc()
4115     # Find Visual C++
4116     # Args: $1 (optional) : The VS version year
4117     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4119     unset vctest vctoolset vcnumwithdot vcbuildnumber
4121     vs_versions_to_check "$1"
4122     if test "$build_os" = wsl; then
4123         vswhere="$PROGRAMFILESX86"
4124         if test -z "$vswhere"; then
4125             vswhere="c:\\Program Files (x86)"
4126         fi
4127     else
4128         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4129     fi
4130     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4131     PathFormat "$vswhere"
4132     vswhere=$formatted_path_unix
4133     for ver in $vsversions; do
4134         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4135         if test -z "$vswhereoutput"; then
4136             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4137         fi
4138         # Fall back to all MS products (this includes VC++ Build Tools)
4139         if ! test -n "$vswhereoutput"; then
4140             AC_MSG_CHECKING([VC++ Build Tools and similar])
4141             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4142         fi
4143         if test -n "$vswhereoutput"; then
4144             PathFormat "$vswhereoutput"
4145             vctest=$formatted_path_unix
4146             break
4147         fi
4148     done
4150     if test -n "$vctest"; then
4151         vcnumwithdot="$ver"
4152         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4153             vcnumwithdot=$vcnumwithdot.0
4154         fi
4155         case "$vcnumwithdot" in
4156         16.0)
4157             vcyear=2019
4158             vctoolset=v142
4159             ;;
4160         17.0 | 17.4)
4161             vcyear=2022
4162             vctoolset=v143
4163             ;;
4164         esac
4165         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4167     fi
4170 test_cl_exe()
4172     AC_MSG_CHECKING([$1 compiler])
4174     CL_EXE_PATH="$2/cl.exe"
4176     if test ! -f "$CL_EXE_PATH"; then
4177         if test "$1" = "multi-arch"; then
4178             AC_MSG_WARN([no compiler (cl.exe) in $2])
4179             return 1
4180         else
4181             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4182         fi
4183     fi
4185     dnl ===========================================================
4186     dnl  Check for the corresponding mspdb*.dll
4187     dnl ===========================================================
4189     # MSVC 15.0 has libraries from 14.0?
4190     mspdbnum="140"
4192     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4193         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4194     fi
4196     # The compiles has to find its shared libraries
4197     OLD_PATH="$PATH"
4198     TEMP_PATH=`cygpath -d "$2"`
4199     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4201     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4202         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4203     fi
4205     PATH="$OLD_PATH"
4207     AC_MSG_RESULT([$CL_EXE_PATH])
4210 SOLARINC=
4211 MSBUILD_PATH=
4212 DEVENV=
4213 if test "$_os" = "WINNT"; then
4214     AC_MSG_CHECKING([Visual C++])
4215     find_msvc "$with_visual_studio"
4216     if test -z "$vctest"; then
4217         if test -n "$with_visual_studio"; then
4218             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4219         else
4220             AC_MSG_ERROR([no Visual Studio installation found])
4221         fi
4222     fi
4223     AC_MSG_RESULT([])
4225     VC_PRODUCT_DIR="$vctest/VC"
4226     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4228     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4229     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4230         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4231         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4232         if test $? -ne 0; then
4233             WIN_MULTI_ARCH=""
4234             WIN_OTHER_ARCH=""
4235         fi
4236     fi
4238     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4239         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4240         test_cl_exe "build" "$MSVC_BUILD_PATH"
4241     fi
4243     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4244         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4245         test_cl_exe "host" "$MSVC_HOST_PATH"
4246     else
4247         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4248     fi
4250     AC_MSG_CHECKING([for short pathname of VC product directory])
4251     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4252     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4254     UCRTSDKDIR=
4255     UCRTVERSION=
4257     AC_MSG_CHECKING([for UCRT location])
4258     find_ucrt
4259     # find_ucrt errors out if it doesn't find it
4260     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4261     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4262     ucrtincpath_formatted=$formatted_path
4263     # SOLARINC is used for external modules and must be set too.
4264     # And no, it's not sufficient to set SOLARINC only, as configure
4265     # itself doesn't honour it.
4266     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4267     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4268     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4269     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4271     AC_SUBST(UCRTSDKDIR)
4272     AC_SUBST(UCRTVERSION)
4274     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4275     # Find the proper version of MSBuild.exe to use based on the VS version
4276     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4277     if test -z "$regvalue" ; then
4278         if test "$WIN_BUILD_ARCH" != "x64"; then
4279             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4280         else
4281             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4282         fi
4283     fi
4284     if test -d "$regvalue" ; then
4285         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4286         AC_MSG_RESULT([$regvalue])
4287     else
4288         AC_MSG_ERROR([MSBuild.exe location not found])
4289     fi
4291     # Find the version of devenv.exe
4292     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4293     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4294     DEVENV_unix=$(cygpath -u "$DEVENV")
4295     if test ! -e "$DEVENV_unix"; then
4296         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4297     fi
4299     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4300     dnl needed when building CLR code:
4301     if test -z "$MSVC_CXX"; then
4302         # This gives us a posix path with 8.3 filename restrictions
4303         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4304     fi
4306     if test -z "$CC"; then
4307         CC=$MSVC_CXX
4308         CC_BASE=`first_arg_basename "$CC"`
4309     fi
4310     if test -z "$CXX"; then
4311         CXX=$MSVC_CXX
4312         CXX_BASE=`first_arg_basename "$CXX"`
4313     fi
4315     if test -n "$CC"; then
4316         # Remove /cl.exe from CC case insensitive
4317         AC_MSG_NOTICE([found Visual C++ $vcyear])
4319         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4320         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4322         PathFormat "$COMPATH"
4323         COMPATH=`win_short_path_for_make "$formatted_path"`
4325         VCVER=$vcnumwithdot
4326         VCTOOLSET=$vctoolset
4328         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4329         # are always "better", we list them in reverse chronological order.
4331         case "$vcnumwithdot" in
4332         16.0 | 17.0 | 17.4)
4333             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4334             ;;
4335         esac
4337         # The expectation is that --with-windows-sdk should not need to be used
4338         if test -n "$with_windows_sdk"; then
4339             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4340             *" "$with_windows_sdk" "*)
4341                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4342                 ;;
4343             *)
4344                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4345                 ;;
4346             esac
4347         fi
4349         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4350         ac_objext=obj
4351         ac_exeext=exe
4353     else
4354         AC_MSG_ERROR([Visual C++ not found after all, huh])
4355     fi
4357     # ERROR if VS version < 16.5
4358     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4359     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4360         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4361         // between Visual Studio versions and _MSC_VER:
4362         #if _MSC_VER < 1925
4363         #error
4364         #endif
4365     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4367     # WARN if VS version < 16.10
4368     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4369     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4370         #if _MSC_VER < 1929
4371         #error
4372         #endif
4373     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4375     if test $vs2019_recommended_version = yes; then
4376         AC_MSG_RESULT([yes])
4377     else
4378         AC_MSG_WARN([no])
4379         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."
4380     fi
4382     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4383     # version of the Explorer extension (and maybe other small
4384     # bits, too) needed when installing a 32-bit LibreOffice on a
4385     # 64-bit OS. The 64-bit Explorer extension is a feature that
4386     # has been present since long in OOo. Don't confuse it with
4387     # building LibreOffice itself as 64-bit code.
4389     BUILD_X64=
4390     CXX_X64_BINARY=
4392     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4393         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4394         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4395              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4396         then
4397             BUILD_X64=TRUE
4398             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4399             AC_MSG_RESULT([found])
4400         else
4401             AC_MSG_RESULT([not found])
4402             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4403         fi
4404     elif test "$WIN_HOST_ARCH" = "x64"; then
4405         CXX_X64_BINARY=$CXX
4406     fi
4407     AC_SUBST(BUILD_X64)
4409     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4410     AC_SUBST(CXX_X64_BINARY)
4412     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4413     # needed to support TWAIN scan on both 32- and 64-bit systems
4415     case "$WIN_HOST_ARCH" in
4416     x64)
4417         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4418         if test -n "$CXX_X86_BINARY"; then
4419             BUILD_X86=TRUE
4420             AC_MSG_RESULT([preset])
4421         elif test -n "$WIN_MULTI_ARCH"; then
4422             BUILD_X86=TRUE
4423             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4424             AC_MSG_RESULT([found])
4425         else
4426             AC_MSG_RESULT([not found])
4427             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4428         fi
4429         ;;
4430     x86)
4431         BUILD_X86=TRUE
4432         CXX_X86_BINARY=$MSVC_CXX
4433         ;;
4434     esac
4435     AC_SUBST(BUILD_X86)
4436     AC_SUBST(CXX_X86_BINARY)
4438 AC_SUBST(VCVER)
4439 AC_SUBST(VCTOOLSET)
4440 AC_SUBST(DEVENV)
4441 AC_SUBST(MSVC_CXX)
4443 COM_IS_CLANG=
4444 AC_MSG_CHECKING([whether the compiler is actually Clang])
4445 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4446     #ifndef __clang__
4447     you lose
4448     #endif
4449     int foo=42;
4450     ]])],
4451     [AC_MSG_RESULT([yes])
4452      COM_IS_CLANG=TRUE],
4453     [AC_MSG_RESULT([no])])
4454 AC_SUBST(COM_IS_CLANG)
4456 CLANGVER=
4457 if test "$COM_IS_CLANG" = TRUE; then
4458     AC_MSG_CHECKING([whether Clang is new enough])
4459     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4460         #if !defined __apple_build_version__
4461         #error
4462         #endif
4463         ]])],
4464         [my_apple_clang=yes],[my_apple_clang=])
4465     if test "$my_apple_clang" = yes; then
4466         AC_MSG_RESULT([assumed yes (Apple Clang)])
4467     elif test "$_os" = Emscripten; then
4468         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4469     else
4470         if test "$_os" = WINNT; then
4471             dnl In which case, assume clang-cl:
4472             my_args="/EP /TC"
4473         else
4474             my_args="-E -P"
4475         fi
4476         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4477         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4478         CLANGVER=`echo $clang_version \
4479             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4480         if test "$CLANGVER" -ge 80001; then
4481             AC_MSG_RESULT([yes ($clang_version)])
4482         else
4483             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4484         fi
4485         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4486         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4487     fi
4490 SHOWINCLUDES_PREFIX=
4491 if test "$_os" = WINNT; then
4492     dnl We need to guess the prefix of the -showIncludes output, it can be
4493     dnl localized
4494     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4495     echo "#include <stdlib.h>" > conftest.c
4496     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4497         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4498     rm -f conftest.c conftest.obj
4499     if test -z "$SHOWINCLUDES_PREFIX"; then
4500         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4501     else
4502         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4503     fi
4505 AC_SUBST(SHOWINCLUDES_PREFIX)
4508 # prefix C with ccache if needed
4510 if test "$CCACHE" != ""; then
4511     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4513     AC_LANG_PUSH([C])
4514     save_CFLAGS=$CFLAGS
4515     CFLAGS="$CFLAGS --ccache-skip -O2"
4516     # msvc does not fail on unknown options, check stdout
4517     if test "$COM" = MSC; then
4518         CFLAGS="$CFLAGS -nologo"
4519     fi
4520     save_ac_c_werror_flag=$ac_c_werror_flag
4521     ac_c_werror_flag=yes
4522     dnl an empty program will do, we're checking the compiler flags
4523     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4524                       [use_ccache=yes], [use_ccache=no])
4525     CFLAGS=$save_CFLAGS
4526     ac_c_werror_flag=$save_ac_c_werror_flag
4527     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4528         AC_MSG_RESULT([yes])
4529     else
4530         CC="$CCACHE $CC"
4531         CC_BASE="ccache $CC_BASE"
4532         AC_MSG_RESULT([no])
4533     fi
4534     AC_LANG_POP([C])
4537 # ===================================================================
4538 # check various GCC options that Clang does not support now but maybe
4539 # will somewhen in the future, check them even for GCC, so that the
4540 # flags are set
4541 # ===================================================================
4543 HAVE_GCC_GGDB2=
4544 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4545     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4546     save_CFLAGS=$CFLAGS
4547     CFLAGS="$CFLAGS -Werror -ggdb2"
4548     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4549     CFLAGS=$save_CFLAGS
4550     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4551         AC_MSG_RESULT([yes])
4552     else
4553         AC_MSG_RESULT([no])
4554     fi
4556     if test "$host_cpu" = "m68k"; then
4557         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4558         save_CFLAGS=$CFLAGS
4559         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4560         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4561         CFLAGS=$save_CFLAGS
4562         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4563             AC_MSG_RESULT([yes])
4564         else
4565             AC_MSG_ERROR([no])
4566         fi
4567     fi
4569 AC_SUBST(HAVE_GCC_GGDB2)
4571 dnl ===================================================================
4572 dnl  Test the gcc version
4573 dnl ===================================================================
4574 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4575     AC_MSG_CHECKING([the GCC version])
4576     _gcc_version=`$CC -dumpfullversion`
4577     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4578         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4579     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4581     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4583     if test "$gcc_full_version" -lt 70000; then
4584         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4585     fi
4586 else
4587     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4588     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4589     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4590     # (which reports itself as GCC 4.2.1).
4591     GCC_VERSION=
4593 AC_SUBST(GCC_VERSION)
4595 dnl Set the ENABLE_DBGUTIL variable
4596 dnl ===================================================================
4597 AC_MSG_CHECKING([whether to build with additional debug utilities])
4598 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4599     ENABLE_DBGUTIL="TRUE"
4600     # this is an extra var so it can have different default on different MSVC
4601     # versions (in case there are version specific problems with it)
4602     MSVC_USE_DEBUG_RUNTIME="TRUE"
4604     AC_MSG_RESULT([yes])
4605     # cppunit and graphite expose STL in public headers
4606     if test "$with_system_cppunit" = "yes"; then
4607         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4608     else
4609         with_system_cppunit=no
4610     fi
4611     if test "$with_system_graphite" = "yes"; then
4612         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4613     else
4614         with_system_graphite=no
4615     fi
4616     if test "$with_system_orcus" = "yes"; then
4617         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4618     else
4619         with_system_orcus=no
4620     fi
4621     if test "$with_system_libcmis" = "yes"; then
4622         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4623     else
4624         with_system_libcmis=no
4625     fi
4626     if test "$with_system_hunspell" = "yes"; then
4627         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4628     else
4629         with_system_hunspell=no
4630     fi
4631     if test "$with_system_gpgmepp" = "yes"; then
4632         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4633     else
4634         with_system_gpgmepp=no
4635     fi
4636     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4637     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4638     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4639     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4640     # of those two is using the system variant:
4641     if test "$with_system_libnumbertext" = "yes"; then
4642         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4643     else
4644         with_system_libnumbertext=no
4645     fi
4646     if test "$with_system_libwps" = "yes"; then
4647         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4648     else
4649         with_system_libwps=no
4650     fi
4651 else
4652     ENABLE_DBGUTIL=""
4653     MSVC_USE_DEBUG_RUNTIME=""
4654     AC_MSG_RESULT([no])
4656 AC_SUBST(ENABLE_DBGUTIL)
4657 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4659 dnl Set the ENABLE_DEBUG variable.
4660 dnl ===================================================================
4661 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4662     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4664 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4665     if test -z "$libo_fuzzed_enable_debug"; then
4666         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4667     else
4668         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4669         enable_debug=yes
4670     fi
4673 AC_MSG_CHECKING([whether to do a debug build])
4674 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4675     ENABLE_DEBUG="TRUE"
4676     if test -n "$ENABLE_DBGUTIL" ; then
4677         AC_MSG_RESULT([yes (dbgutil)])
4678     else
4679         AC_MSG_RESULT([yes])
4680     fi
4681 else
4682     ENABLE_DEBUG=""
4683     AC_MSG_RESULT([no])
4685 AC_SUBST(ENABLE_DEBUG)
4687 dnl ===================================================================
4688 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4689 dnl This is done only after compiler checks (need to know if Clang is
4690 dnl used, for different defaults) and after checking if a debug build
4691 dnl is wanted (non-debug builds get the default linker if not explicitly
4692 dnl specified otherwise).
4693 dnl All checks for linker features/options should come after this.
4694 dnl ===================================================================
4695 check_use_ld()
4697     use_ld=-fuse-ld=${1%%:*}
4698     use_ld_path=${1#*:}
4699     if test "$use_ld_path" != "$1"; then
4700         if test "$COM_IS_CLANG" = TRUE; then
4701             if test "$CLANGVER" -ge 120000; then
4702                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4703             else
4704                 use_ld="-fuse-ld=${use_ld_path}"
4705             fi
4706         else
4707             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4708             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4709             # pickup the alternative linker, when called by libtool for linking.
4710             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4711             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4712         fi
4713     fi
4714     use_ld_fail_if_error=$2
4715     use_ld_ok=
4716     AC_MSG_CHECKING([for $use_ld linker support])
4717     use_ld_ldflags_save="$LDFLAGS"
4718     LDFLAGS="$LDFLAGS $use_ld"
4719     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4720 #include <stdio.h>
4721         ],[
4722 printf ("hello world\n");
4723         ])], USE_LD=$use_ld, [])
4724     if test -n "$USE_LD"; then
4725         AC_MSG_RESULT( yes )
4726         use_ld_ok=yes
4727     else
4728         if test -n "$use_ld_fail_if_error"; then
4729             AC_MSG_ERROR( no )
4730         else
4731             AC_MSG_RESULT( no )
4732         fi
4733     fi
4734     if test -n "$use_ld_ok"; then
4735         dnl keep the value of LDFLAGS
4736         return 0
4737     fi
4738     LDFLAGS="$use_ld_ldflags_save"
4739     return 1
4741 USE_LD=
4742 if test "$enable_ld" != "no"; then
4743     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4744         if test -n "$enable_ld"; then
4745             check_use_ld "$enable_ld" fail_if_error
4746         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4747             dnl non-debug builds default to the default linker
4748             true
4749         elif test -n "$COM_IS_CLANG"; then
4750             check_use_ld lld
4751             if test $? -ne 0; then
4752                 check_use_ld gold
4753                 if test $? -ne 0; then
4754                     check_use_ld mold
4755                 fi
4756             fi
4757         else
4758             # For gcc first try gold, new versions also support lld/mold.
4759             check_use_ld gold
4760             if test $? -ne 0; then
4761                 check_use_ld lld
4762                 if test $? -ne 0; then
4763                     check_use_ld mold
4764                 fi
4765             fi
4766         fi
4767         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4768         rm conftest.out
4769         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4770         if test -z "$ld_used"; then
4771             ld_used="unknown"
4772         fi
4773         AC_MSG_CHECKING([for linker that is used])
4774         AC_MSG_RESULT([$ld_used])
4775         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4776             if echo "$ld_used" | grep -q "^GNU ld"; then
4777                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4778                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4779             fi
4780         fi
4781     else
4782         if test "$enable_ld" = "yes"; then
4783             AC_MSG_ERROR([--enable-ld not supported])
4784         fi
4785     fi
4787 AC_SUBST(USE_LD)
4788 AC_SUBST(LD)
4790 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4791 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4792     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4793     bsymbolic_functions_ldflags_save=$LDFLAGS
4794     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4795     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4796 #include <stdio.h>
4797         ],[
4798 printf ("hello world\n");
4799         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4800     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4801         AC_MSG_RESULT( found )
4802     else
4803         AC_MSG_RESULT( not found )
4804     fi
4805     LDFLAGS=$bsymbolic_functions_ldflags_save
4807 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4809 LD_GC_SECTIONS=
4810 if test "$GCC" = "yes"; then
4811     for flag in "--gc-sections" "-dead_strip"; do
4812         AC_MSG_CHECKING([for $flag linker support])
4813         ldflags_save=$LDFLAGS
4814         LDFLAGS="$LDFLAGS -Wl,$flag"
4815         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4816 #include <stdio.h>
4817             ],[
4818 printf ("hello world\n");
4819             ])],[
4820             LD_GC_SECTIONS="-Wl,$flag"
4821             AC_MSG_RESULT( found )
4822             ], [
4823             AC_MSG_RESULT( not found )
4824             ])
4825         LDFLAGS=$ldflags_save
4826         if test -n "$LD_GC_SECTIONS"; then
4827             break
4828         fi
4829     done
4831 AC_SUBST(LD_GC_SECTIONS)
4833 HAVE_EXTERNAL_DWARF=
4834 if test "$enable_split_debug" != no; then
4835     use_split_debug=
4836     if test -n "$ENABLE_LTO"; then
4837         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4838     elif test "$enable_split_debug" = yes; then
4839         use_split_debug=1
4840     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4841     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4842         use_split_debug=1
4843     fi
4844     if test -n "$use_split_debug"; then
4845         if test "$_os" = "Emscripten"; then
4846             TEST_CC_FLAG=-gseparate-dwarf
4847         else
4848             TEST_CC_FLAG=-gsplit-dwarf
4849         fi
4850         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4851         save_CFLAGS=$CFLAGS
4852         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4853         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4854         CFLAGS=$save_CFLAGS
4855         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4856             AC_MSG_RESULT([yes])
4857         else
4858             if test "$enable_split_debug" = yes; then
4859                 AC_MSG_ERROR([no])
4860             else
4861                 AC_MSG_RESULT([no])
4862             fi
4863         fi
4864     fi
4865     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4866         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4867         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4868     fi
4870 AC_SUBST(HAVE_EXTERNAL_DWARF)
4872 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4873 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4874 save_CFLAGS=$CFLAGS
4875 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4876 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4877 CFLAGS=$save_CFLAGS
4878 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4879     AC_MSG_RESULT([yes])
4880 else
4881     AC_MSG_RESULT([no])
4883 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4885 ENABLE_GDB_INDEX=
4886 if test "$enable_gdb_index" != "no"; then
4887     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4888     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4889         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4890         save_CFLAGS=$CFLAGS
4891         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4892         have_ggnu_pubnames=
4893         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4894         if test "$have_ggnu_pubnames" != "TRUE"; then
4895             if test "$enable_gdb_index" = "yes"; then
4896                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4897             else
4898                 AC_MSG_RESULT( no )
4899             fi
4900         else
4901             AC_MSG_RESULT( yes )
4902             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4903             ldflags_save=$LDFLAGS
4904             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4905             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4906 #include <stdio.h>
4907                 ],[
4908 printf ("hello world\n");
4909                 ])], ENABLE_GDB_INDEX=TRUE, [])
4910             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4911                 AC_MSG_RESULT( yes )
4912             else
4913                 if test "$enable_gdb_index" = "yes"; then
4914                     AC_MSG_ERROR( no )
4915                 else
4916                     AC_MSG_RESULT( no )
4917                 fi
4918             fi
4919             LDFLAGS=$ldflags_save
4920         fi
4921         CFLAGS=$save_CFLAGS
4922         fi
4923     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4924         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4925         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4926     fi
4928 AC_SUBST(ENABLE_GDB_INDEX)
4930 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4931     enable_sal_log=yes
4933 if test "$enable_sal_log" = yes; then
4934     ENABLE_SAL_LOG=TRUE
4936 AC_SUBST(ENABLE_SAL_LOG)
4938 dnl Check for enable symbols option
4939 dnl ===================================================================
4940 AC_MSG_CHECKING([whether to generate debug information])
4941 if test -z "$enable_symbols"; then
4942     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4943         enable_symbols=yes
4944     else
4945         enable_symbols=no
4946     fi
4948 if test "$enable_symbols" = yes; then
4949     ENABLE_SYMBOLS_FOR=all
4950     AC_MSG_RESULT([yes])
4951 elif test "$enable_symbols" = no; then
4952     ENABLE_SYMBOLS_FOR=
4953     AC_MSG_RESULT([no])
4954 else
4955     # Selective debuginfo.
4956     ENABLE_SYMBOLS_FOR="$enable_symbols"
4957     AC_MSG_RESULT([for "$enable_symbols"])
4959 AC_SUBST(ENABLE_SYMBOLS_FOR)
4960 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4961     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4962     AC_MSG_CHECKING([whether enough memory is available for linking])
4963     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4964     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4965     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4966         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4967     else
4968         AC_MSG_RESULT([yes])
4969     fi
4972 ENABLE_OPTIMIZED=
4973 ENABLE_OPTIMIZED_DEBUG=
4974 AC_MSG_CHECKING([whether to compile with optimization flags])
4975 if test -z "$enable_optimized"; then
4976     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4977         enable_optimized=no
4978     else
4979         enable_optimized=yes
4980     fi
4982 if test "$enable_optimized" = yes; then
4983     ENABLE_OPTIMIZED=TRUE
4984     AC_MSG_RESULT([yes])
4985 elif test "$enable_optimized" = debug; then
4986     ENABLE_OPTIMIZED_DEBUG=TRUE
4987     AC_MSG_RESULT([yes (debug)])
4988     HAVE_GCC_OG=
4989     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4990         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4991         save_CFLAGS=$CFLAGS
4992         CFLAGS="$CFLAGS -Werror -Og"
4993         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4994         CFLAGS=$save_CFLAGS
4995         if test "$HAVE_GCC_OG" = "TRUE"; then
4996             AC_MSG_RESULT([yes])
4997         else
4998             AC_MSG_RESULT([no])
4999         fi
5000     fi
5001     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5002         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5003     fi
5004 else
5005     AC_MSG_RESULT([no])
5007 AC_SUBST(ENABLE_OPTIMIZED)
5008 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5011 # determine CPUNAME, OS, ...
5013 case "$host_os" in
5015 aix*)
5016     COM=GCC
5017     CPUNAME=POWERPC
5018     OS=AIX
5019     RTL_OS=AIX
5020     RTL_ARCH=PowerPC
5021     PLATFORMID=aix_powerpc
5022     P_SEP=:
5023     ;;
5025 cygwin*|wsl*)
5026     # Already handled
5027     ;;
5029 darwin*)
5030     COM=GCC
5031     OS=MACOSX
5032     RTL_OS=MacOSX
5033     P_SEP=:
5035     case "$host_cpu" in
5036     aarch64|arm64)
5037         if test "$enable_ios_simulator" = "yes"; then
5038             OS=iOS
5039         else
5040             CPUNAME=AARCH64
5041             RTL_ARCH=AARCH64
5042             PLATFORMID=macosx_aarch64
5043         fi
5044         ;;
5045     x86_64)
5046         if test "$enable_ios_simulator" = "yes"; then
5047             OS=iOS
5048         fi
5049         CPUNAME=X86_64
5050         RTL_ARCH=X86_64
5051         PLATFORMID=macosx_x86_64
5052         ;;
5053     *)
5054         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5055         ;;
5056     esac
5057     ;;
5059 ios*)
5060     COM=GCC
5061     OS=iOS
5062     RTL_OS=iOS
5063     P_SEP=:
5065     case "$host_cpu" in
5066     aarch64|arm64)
5067         if test "$enable_ios_simulator" = "yes"; then
5068             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5069         fi
5070         ;;
5071     *)
5072         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5073         ;;
5074     esac
5075     CPUNAME=AARCH64
5076     RTL_ARCH=AARCH64
5077     PLATFORMID=ios_arm64
5078     ;;
5080 dragonfly*)
5081     COM=GCC
5082     OS=DRAGONFLY
5083     RTL_OS=DragonFly
5084     P_SEP=:
5086     case "$host_cpu" in
5087     i*86)
5088         CPUNAME=INTEL
5089         RTL_ARCH=x86
5090         PLATFORMID=dragonfly_x86
5091         ;;
5092     x86_64)
5093         CPUNAME=X86_64
5094         RTL_ARCH=X86_64
5095         PLATFORMID=dragonfly_x86_64
5096         ;;
5097     *)
5098         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5099         ;;
5100     esac
5101     ;;
5103 freebsd*)
5104     COM=GCC
5105     RTL_OS=FreeBSD
5106     OS=FREEBSD
5107     P_SEP=:
5109     case "$host_cpu" in
5110     aarch64)
5111         CPUNAME=AARCH64
5112         PLATFORMID=freebsd_aarch64
5113         RTL_ARCH=AARCH64
5114         ;;
5115     i*86)
5116         CPUNAME=INTEL
5117         RTL_ARCH=x86
5118         PLATFORMID=freebsd_x86
5119         ;;
5120     x86_64|amd64)
5121         CPUNAME=X86_64
5122         RTL_ARCH=X86_64
5123         PLATFORMID=freebsd_x86_64
5124         ;;
5125     powerpc64)
5126         CPUNAME=POWERPC64
5127         RTL_ARCH=PowerPC_64
5128         PLATFORMID=freebsd_powerpc64
5129         ;;
5130     powerpc|powerpcspe)
5131         CPUNAME=POWERPC
5132         RTL_ARCH=PowerPC
5133         PLATFORMID=freebsd_powerpc
5134         ;;
5135     *)
5136         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5137         ;;
5138     esac
5139     ;;
5141 haiku*)
5142     COM=GCC
5143     GUIBASE=haiku
5144     RTL_OS=Haiku
5145     OS=HAIKU
5146     P_SEP=:
5148     case "$host_cpu" in
5149     i*86)
5150         CPUNAME=INTEL
5151         RTL_ARCH=x86
5152         PLATFORMID=haiku_x86
5153         ;;
5154     x86_64|amd64)
5155         CPUNAME=X86_64
5156         RTL_ARCH=X86_64
5157         PLATFORMID=haiku_x86_64
5158         ;;
5159     *)
5160         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5161         ;;
5162     esac
5163     ;;
5165 kfreebsd*)
5166     COM=GCC
5167     OS=LINUX
5168     RTL_OS=kFreeBSD
5169     P_SEP=:
5171     case "$host_cpu" in
5173     i*86)
5174         CPUNAME=INTEL
5175         RTL_ARCH=x86
5176         PLATFORMID=kfreebsd_x86
5177         ;;
5178     x86_64)
5179         CPUNAME=X86_64
5180         RTL_ARCH=X86_64
5181         PLATFORMID=kfreebsd_x86_64
5182         ;;
5183     *)
5184         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5185         ;;
5186     esac
5187     ;;
5189 linux-gnu*|linux-musl*)
5190     COM=GCC
5191     OS=LINUX
5192     RTL_OS=Linux
5193     P_SEP=:
5195     case "$host_cpu" in
5197     aarch64)
5198         CPUNAME=AARCH64
5199         PLATFORMID=linux_aarch64
5200         RTL_ARCH=AARCH64
5201         EPM_FLAGS="-a arm64"
5202         ;;
5203     alpha)
5204         CPUNAME=AXP
5205         RTL_ARCH=ALPHA
5206         PLATFORMID=linux_alpha
5207         ;;
5208     arm*)
5209         CPUNAME=ARM
5210         EPM_FLAGS="-a arm"
5211         RTL_ARCH=ARM_EABI
5212         PLATFORMID=linux_arm_eabi
5213         case "$host_cpu" in
5214         arm*-linux)
5215             RTL_ARCH=ARM_OABI
5216             PLATFORMID=linux_arm_oabi
5217             ;;
5218         esac
5219         ;;
5220     hppa)
5221         CPUNAME=HPPA
5222         RTL_ARCH=HPPA
5223         EPM_FLAGS="-a hppa"
5224         PLATFORMID=linux_hppa
5225         ;;
5226     i*86)
5227         CPUNAME=INTEL
5228         RTL_ARCH=x86
5229         PLATFORMID=linux_x86
5230         ;;
5231     ia64)
5232         CPUNAME=IA64
5233         RTL_ARCH=IA64
5234         PLATFORMID=linux_ia64
5235         ;;
5236     mips)
5237         CPUNAME=MIPS
5238         RTL_ARCH=MIPS_EB
5239         EPM_FLAGS="-a mips"
5240         PLATFORMID=linux_mips_eb
5241         ;;
5242     mips64)
5243         CPUNAME=MIPS64
5244         RTL_ARCH=MIPS64_EB
5245         EPM_FLAGS="-a mips64"
5246         PLATFORMID=linux_mips64_eb
5247         ;;
5248     mips64el)
5249         CPUNAME=MIPS64
5250         RTL_ARCH=MIPS64_EL
5251         EPM_FLAGS="-a mips64el"
5252         PLATFORMID=linux_mips64_el
5253         ;;
5254     mipsel)
5255         CPUNAME=MIPS
5256         RTL_ARCH=MIPS_EL
5257         EPM_FLAGS="-a mipsel"
5258         PLATFORMID=linux_mips_el
5259         ;;
5260     riscv64)
5261         CPUNAME=RISCV64
5262         RTL_ARCH=RISCV64
5263         EPM_FLAGS="-a riscv64"
5264         PLATFORMID=linux_riscv64
5265         ;;
5266     m68k)
5267         CPUNAME=M68K
5268         RTL_ARCH=M68K
5269         PLATFORMID=linux_m68k
5270         ;;
5271     powerpc)
5272         CPUNAME=POWERPC
5273         RTL_ARCH=PowerPC
5274         PLATFORMID=linux_powerpc
5275         ;;
5276     powerpc64)
5277         CPUNAME=POWERPC64
5278         RTL_ARCH=PowerPC_64
5279         PLATFORMID=linux_powerpc64
5280         ;;
5281     powerpc64le)
5282         CPUNAME=POWERPC64
5283         RTL_ARCH=PowerPC_64_LE
5284         PLATFORMID=linux_powerpc64_le
5285         ;;
5286     sparc)
5287         CPUNAME=SPARC
5288         RTL_ARCH=SPARC
5289         PLATFORMID=linux_sparc
5290         ;;
5291     sparc64)
5292         CPUNAME=SPARC64
5293         RTL_ARCH=SPARC64
5294         PLATFORMID=linux_sparc64
5295         ;;
5296     s390)
5297         CPUNAME=S390
5298         RTL_ARCH=S390
5299         PLATFORMID=linux_s390
5300         ;;
5301     s390x)
5302         CPUNAME=S390X
5303         RTL_ARCH=S390x
5304         PLATFORMID=linux_s390x
5305         ;;
5306     x86_64)
5307         CPUNAME=X86_64
5308         RTL_ARCH=X86_64
5309         PLATFORMID=linux_x86_64
5310         ;;
5311     loongarch64)
5312         CPUNAME=LOONGARCH64
5313         RTL_ARCH=LOONGARCH64
5314         PLATFORMID=linux_loongarch64
5315         ;;
5316     *)
5317         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5318         ;;
5319     esac
5320     ;;
5322 linux-android*)
5323     COM=GCC
5324     OS=ANDROID
5325     RTL_OS=Android
5326     P_SEP=:
5328     case "$host_cpu" in
5330     arm|armel)
5331         CPUNAME=ARM
5332         RTL_ARCH=ARM_EABI
5333         PLATFORMID=android_arm_eabi
5334         ;;
5335     aarch64)
5336         CPUNAME=AARCH64
5337         RTL_ARCH=AARCH64
5338         PLATFORMID=android_aarch64
5339         ;;
5340     i*86)
5341         CPUNAME=INTEL
5342         RTL_ARCH=x86
5343         PLATFORMID=android_x86
5344         ;;
5345     x86_64)
5346         CPUNAME=X86_64
5347         RTL_ARCH=X86_64
5348         PLATFORMID=android_x86_64
5349         ;;
5350     *)
5351         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5352         ;;
5353     esac
5354     ;;
5356 *netbsd*)
5357     COM=GCC
5358     OS=NETBSD
5359     RTL_OS=NetBSD
5360     P_SEP=:
5362     case "$host_cpu" in
5363     i*86)
5364         CPUNAME=INTEL
5365         RTL_ARCH=x86
5366         PLATFORMID=netbsd_x86
5367         ;;
5368     powerpc)
5369         CPUNAME=POWERPC
5370         RTL_ARCH=PowerPC
5371         PLATFORMID=netbsd_powerpc
5372         ;;
5373     sparc)
5374         CPUNAME=SPARC
5375         RTL_ARCH=SPARC
5376         PLATFORMID=netbsd_sparc
5377         ;;
5378     x86_64)
5379         CPUNAME=X86_64
5380         RTL_ARCH=X86_64
5381         PLATFORMID=netbsd_x86_64
5382         ;;
5383     *)
5384         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5385         ;;
5386     esac
5387     ;;
5389 openbsd*)
5390     COM=GCC
5391     OS=OPENBSD
5392     RTL_OS=OpenBSD
5393     P_SEP=:
5395     case "$host_cpu" in
5396     i*86)
5397         CPUNAME=INTEL
5398         RTL_ARCH=x86
5399         PLATFORMID=openbsd_x86
5400         ;;
5401     x86_64)
5402         CPUNAME=X86_64
5403         RTL_ARCH=X86_64
5404         PLATFORMID=openbsd_x86_64
5405         ;;
5406     *)
5407         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5408         ;;
5409     esac
5410     SOLARINC="$SOLARINC -I/usr/local/include"
5411     ;;
5413 solaris*)
5414     COM=GCC
5415     OS=SOLARIS
5416     RTL_OS=Solaris
5417     P_SEP=:
5419     case "$host_cpu" in
5420     i*86)
5421         CPUNAME=INTEL
5422         RTL_ARCH=x86
5423         PLATFORMID=solaris_x86
5424         ;;
5425     sparc)
5426         CPUNAME=SPARC
5427         RTL_ARCH=SPARC
5428         PLATFORMID=solaris_sparc
5429         ;;
5430     sparc64)
5431         CPUNAME=SPARC64
5432         RTL_ARCH=SPARC64
5433         PLATFORMID=solaris_sparc64
5434         ;;
5435     *)
5436         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5437         ;;
5438     esac
5439     SOLARINC="$SOLARINC -I/usr/local/include"
5440     ;;
5442 emscripten*)
5443     COM=GCC
5444     OS=EMSCRIPTEN
5445     RTL_OS=Emscripten
5446     P_SEP=:
5448     case "$host_cpu" in
5449     wasm32|wasm64)
5450         ;;
5451     *)
5452         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5453         ;;
5454     esac
5455     CPUNAME=INTEL
5456     RTL_ARCH=x86
5457     PLATFORMID=linux_x86
5458     ;;
5461     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5462     ;;
5463 esac
5465 DISABLE_GUI=""
5466 if test "$enable_gui" = "no"; then
5467     if test "$using_x11" != yes; then
5468         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5469     fi
5470     USING_X11=
5471     DISABLE_GUI=TRUE
5472     test_epoxy=no
5473 else
5474     AC_DEFINE(HAVE_FEATURE_UI)
5476 AC_SUBST(DISABLE_GUI)
5478 if test "$with_x" = "no"; then
5479     USING_X11=
5482 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5483     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5486 if test "$using_x11" = yes; then
5487     if test "$USING_X11" = TRUE; then
5488         AC_DEFINE(USING_X11)
5489     else
5490         disable_x11_tests
5491         if test "$DISABLE_DYNLOADING" = TRUE; then
5492             test_qt5=yes
5493         fi
5494     fi
5495 else
5496     if test "$USING_X11" = TRUE; then
5497         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5498     fi
5501 WORKDIR="${BUILDDIR}/workdir"
5502 INSTDIR="${BUILDDIR}/instdir"
5503 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5504 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5505 AC_SUBST(COM)
5506 AC_SUBST(CPUNAME)
5507 AC_SUBST(RTL_OS)
5508 AC_SUBST(RTL_ARCH)
5509 AC_SUBST(EPM_FLAGS)
5510 AC_SUBST(USING_X11)
5511 AC_SUBST([INSTDIR])
5512 AC_SUBST([INSTROOT])
5513 AC_SUBST([INSTROOTBASE])
5514 AC_SUBST(OS)
5515 AC_SUBST(P_SEP)
5516 AC_SUBST(WORKDIR)
5517 AC_SUBST(PLATFORMID)
5518 AC_SUBST(WINDOWS_X64)
5519 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5520 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5522 if test "$OS" = WNT -a "$COM" = MSC; then
5523     case "$CPUNAME" in
5524     INTEL) CPPU_ENV=msci ;;
5525     X86_64) CPPU_ENV=mscx ;;
5526     AARCH64) CPPU_ENV=msca ;;
5527     *)
5528         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5529         ;;
5530     esac
5531 else
5532     CPPU_ENV=gcc3
5534 AC_SUBST(CPPU_ENV)
5536 dnl ===================================================================
5537 dnl Test which package format to use
5538 dnl ===================================================================
5539 AC_MSG_CHECKING([which package format to use])
5540 if test -n "$with_package_format" -a "$with_package_format" != no; then
5541     for i in $with_package_format; do
5542         case "$i" in
5543         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5544             ;;
5545         *)
5546             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5547 aix - AIX software distribution
5548 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5549 deb - Debian software distribution
5550 pkg - Solaris software distribution
5551 rpm - RedHat software distribution
5553 LibreOffice additionally supports:
5554 archive - .tar.gz or .zip
5555 dmg - macOS .dmg
5556 installed - installation tree
5557 msi - Windows .msi
5558         ])
5559             ;;
5560         esac
5561     done
5562     # fakeroot is needed to ensure correct file ownerships/permissions
5563     # inside deb packages and tar archives created on Linux and Solaris.
5564     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5565         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5566         if test "$FAKEROOT" = "no"; then
5567             AC_MSG_ERROR(
5568                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5569         fi
5570     fi
5571     PKGFORMAT="$with_package_format"
5572     AC_MSG_RESULT([$PKGFORMAT])
5573 else
5574     PKGFORMAT=
5575     AC_MSG_RESULT([none])
5577 AC_SUBST(PKGFORMAT)
5579 dnl ===================================================================
5580 dnl handle help related options
5582 dnl If you change help related options, please update README.help
5583 dnl ===================================================================
5585 ENABLE_HTMLHELP=
5586 HELP_OMINDEX_PAGE=
5587 HELP_ONLINE=
5588 WITH_HELPPACKS=
5590 AC_MSG_CHECKING([which help to build])
5591 if test -n "$with_help" -a "$with_help" != "no"; then
5592     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5593     BUILD_TYPE="$BUILD_TYPE HELP"
5594     case "$with_help" in
5595     "html")
5596         ENABLE_HTMLHELP=TRUE
5597         WITH_HELPPACKS=TRUE
5598         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5599         AC_MSG_RESULT([HTML (local)])
5600         ;;
5601     "online")
5602         ENABLE_HTMLHELP=TRUE
5603         HELP_ONLINE=TRUE
5604         AC_MSG_RESULT([HTML (online)])
5605         ;;
5606     yes)
5607         WITH_HELPPACKS=TRUE
5608         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5609         AC_MSG_RESULT([XML (local)])
5610         ;;
5611     *)
5612         AC_MSG_ERROR([Unknown --with-help=$with_help])
5613         ;;
5614     esac
5615 else
5616     AC_MSG_RESULT([no])
5619 AC_MSG_CHECKING([if we need to build the help index tooling])
5620 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5621     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5622     test_clucene=yes
5623     AC_MSG_RESULT([yes])
5624 else
5625     AC_MSG_RESULT([no])
5628 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5629 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5630     if test "$HELP_ONLINE" != TRUE; then
5631         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5632     fi
5633     case "$with_omindex" in
5634     "server")
5635         HELP_OMINDEX_PAGE=TRUE
5636         AC_MSG_RESULT([SERVER])
5637         ;;
5638     "noxap")
5639         AC_MSG_RESULT([NOXAP])
5640         ;;
5641     *)
5642         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5643         ;;
5644     esac
5645 else
5646     AC_MSG_RESULT([no])
5649 AC_MSG_CHECKING([whether to include the XML-help support])
5650 if test "$enable_xmlhelp" = yes; then
5651     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5652     test_clucene=yes
5653     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5654     AC_MSG_RESULT([yes])
5655 else
5656     if test "$with_help" = yes; then
5657         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5658     fi
5659     AC_MSG_RESULT([no])
5662 dnl Test whether to integrate helppacks into the product's installer
5663 AC_MSG_CHECKING([for helppack integration])
5664 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5665     AC_MSG_RESULT([no integration])
5666 else
5667     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5668     AC_MSG_RESULT([integration])
5671 AC_SUBST([ENABLE_HTMLHELP])
5672 AC_SUBST([HELP_OMINDEX_PAGE])
5673 AC_SUBST([HELP_ONLINE])
5674 # WITH_HELPPACKS is used only in configure
5676 dnl ===================================================================
5677 dnl Set up a different compiler to produce tools to run on the build
5678 dnl machine when doing cross-compilation
5679 dnl ===================================================================
5681 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5682 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5683 if test "$cross_compiling" = "yes"; then
5684     AC_MSG_CHECKING([for BUILD platform configuration])
5685     echo
5686     rm -rf CONF-FOR-BUILD config_build.mk
5687     mkdir CONF-FOR-BUILD
5688     # Here must be listed all files needed when running the configure script. In particular, also
5689     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5690     # keep them in the same order as there.
5691     (cd $SRC_ROOT && tar cf - \
5692         config.guess \
5693         bin/get_config_variables \
5694         solenv/bin/getcompver.awk \
5695         solenv/inc/langlist.mk \
5696         download.lst \
5697         config_host.mk.in \
5698         config_host_lang.mk.in \
5699         Makefile.in \
5700         lo.xcent.in \
5701         bin/bffvalidator.sh.in \
5702         bin/odfvalidator.sh.in \
5703         bin/officeotron.sh.in \
5704         hardened_runtime.xcent.in \
5705         instsetoo_native/util/openoffice.lst.in \
5706         config_host/*.in \
5707         sysui/desktop/macosx/Info.plist.in \
5708         .vscode/vs-code-template.code-workspace.in \
5709         solenv/lockfile/autoconf.h.in \
5710         ) \
5711     | (cd CONF-FOR-BUILD && tar xf -)
5712     cp configure CONF-FOR-BUILD
5713     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5714     (
5715     unset COM USING_X11 OS CPUNAME
5716     unset CC CXX SYSBASE CFLAGS
5717     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5718     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5719     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5720     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5721     if test -n "$CC_FOR_BUILD"; then
5722         export CC="$CC_FOR_BUILD"
5723         CC_BASE=`first_arg_basename "$CC"`
5724     fi
5725     if test -n "$CXX_FOR_BUILD"; then
5726         export CXX="$CXX_FOR_BUILD"
5727         CXX_BASE=`first_arg_basename "$CXX"`
5728     fi
5729     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5730     cd CONF-FOR-BUILD
5732     # Handle host configuration, which affects the cross-toolset too
5733     sub_conf_opts=""
5734     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5735     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5736     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5737     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5738     if test -n "$ENABLE_JAVA"; then
5739         case "$_os" in
5740         Android)
5741             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5742             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5743             ;;
5744         *)
5745             if test -z "$with_jdk_home"; then
5746                 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.])
5747             fi
5748             ;;
5749         esac
5750     else
5751         sub_conf_opts="$sub_conf_opts --without-java"
5752     fi
5753     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5754     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5755     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5756     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5757     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5758     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5759     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5760     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5761     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5762     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5763     if test "$_os" = "Emscripten"; then
5764         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5765         if test "${with_main_module+set}" = set; then
5766             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5767         else
5768             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5769         fi
5770     fi
5772     # Don't bother having configure look for stuff not needed for the build platform anyway
5773     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5774     sub_conf_defaults=" \
5775         --build="$build_alias" \
5776         --disable-cairo-canvas \
5777         --disable-cups \
5778         --disable-customtarget-components \
5779         --disable-firebird-sdbc \
5780         --disable-gpgmepp \
5781         --disable-gstreamer-1-0 \
5782         --disable-gtk3 \
5783         --disable-gtk4 \
5784         --disable-libcmis \
5785         --disable-mariadb-sdbc \
5786         --disable-nss \
5787         --disable-online-update \
5788         --disable-opencl \
5789         --disable-pdfimport \
5790         --disable-postgresql-sdbc \
5791         --disable-skia \
5792         --disable-xmlhelp \
5793         --enable-dynamic-loading \
5794         --enable-icecream="$enable_icecream" \
5795         --without-doxygen \
5796         --without-webdav \
5797         --without-x \
5798         --with-tls=openssl \
5800     # single quotes added for better readability in case of spaces
5801     echo "    Running CONF-FOR-BUILD/configure" \
5802         $sub_conf_defaults \
5803         --with-parallelism="'$with_parallelism'" \
5804         --with-theme="'$with_theme'" \
5805         --with-vendor="'$with_vendor'" \
5806         $sub_conf_opts \
5807         $with_build_platform_configure_options \
5808         --srcdir=$srcdir
5810     ./configure \
5811         $sub_conf_defaults \
5812         --with-parallelism="$with_parallelism" \
5813         --with-theme="$with_theme" \
5814         "--with-vendor=$with_vendor" \
5815         $sub_conf_opts \
5816         $with_build_platform_configure_options \
5817         --srcdir=$srcdir \
5818         2>&1 | sed -e 's/^/    /'
5819     if test [${PIPESTATUS[0]}] -ne 0; then
5820         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5821     fi
5823     # filter permitted build targets
5824     PERMITTED_BUILD_TARGETS="
5825         AVMEDIA
5826         BOOST
5827         CAIRO
5828         CLUCENE
5829         CURL
5830         DBCONNECTIVITY
5831         DESKTOP
5832         DRAGONBOX
5833         DYNLOADING
5834         EPOXY
5835         EXPAT
5836         GLM
5837         GRAPHITE
5838         HARFBUZZ
5839         HELPTOOLS
5840         ICU
5841         LCMS2
5842         LIBJPEG_TURBO
5843         LIBLANGTAG
5844         LibO
5845         LIBFFI
5846         LIBPN
5847         LIBTIFF
5848         LIBWEBP
5849         LIBXML2
5850         LIBXSLT
5851         MDDS
5852         NATIVE
5853         OPENSSL
5854         ORCUS
5855         PYTHON
5856         SCRIPTING
5857         ZLIB
5859     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5860     # newlined lists, to use grep as a filter
5861     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5862     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5863     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5864     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5866     cp config_host.mk ../config_build.mk
5867     cp config_host_lang.mk ../config_build_lang.mk
5868     mv config.log ../config.Build.log
5869     mkdir -p ../config_build
5870     mv config_host/*.h ../config_build
5871     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5873     # all these will get a _FOR_BUILD postfix
5874     DIRECT_FOR_BUILD_SETTINGS="
5875         CC
5876         CPPU_ENV
5877         CXX
5878         ILIB
5879         JAVA_HOME
5880         JAVAIFLAGS
5881         JDK
5882         JDK_SECURITYMANAGER_DISALLOWED
5883         LIBO_BIN_FOLDER
5884         LIBO_LIB_FOLDER
5885         LIBO_URE_LIB_FOLDER
5886         LIBO_URE_MISC_FOLDER
5887         OS
5888         SDKDIRNAME
5889         SYSTEM_LIBXML
5890         SYSTEM_LIBXSLT
5892     # these overwrite host config with build config
5893     OVERWRITING_SETTINGS="
5894         ANT
5895         ANT_HOME
5896         ANT_LIB
5897         JAVA_CLASSPATH_NOT_SET
5898         JAVA_SOURCE_VER
5899         JAVA_TARGET_VER
5900         JAVACFLAGS
5901         JAVACOMPILER
5902         JAVADOC
5903         JAVADOCISGJDOC
5904         LOCKFILE
5905         SYSTEM_GENBRK
5906         SYSTEM_GENCCODE
5907         SYSTEM_GENCMN
5909     # these need some special handling
5910     EXTRA_HANDLED_SETTINGS="
5911         INSTDIR
5912         INSTROOT
5913         PATH
5914         WORKDIR
5916     OLD_PATH=$PATH
5917     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5918     BUILD_PATH=$PATH
5919     PATH=$OLD_PATH
5921     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5922     echo "$line" >>build-config
5924     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5925         VV='$'$V
5926         VV=`eval "echo $VV"`
5927         if test -n "$VV"; then
5928             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5929             echo "$line" >>build-config
5930         fi
5931     done
5933     for V in $OVERWRITING_SETTINGS; do
5934         VV='$'$V
5935         VV=`eval "echo $VV"`
5936         if test -n "$VV"; then
5937             line=${V}='${'${V}:-$VV'}'
5938             echo "$line" >>build-config
5939         fi
5940     done
5942     for V in INSTDIR INSTROOT WORKDIR; do
5943         VV='$'$V
5944         VV=`eval "echo $VV"`
5945         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5946         if test -n "$VV"; then
5947             line="${V}_FOR_BUILD='$VV'"
5948             echo "$line" >>build-config
5949         fi
5950     done
5952     )
5953     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5954     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])
5955     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5956              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5958     eval `cat CONF-FOR-BUILD/build-config`
5960     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5962     rm -rf CONF-FOR-BUILD
5963 else
5964     OS_FOR_BUILD="$OS"
5965     CC_FOR_BUILD="$CC"
5966     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5967     CXX_FOR_BUILD="$CXX"
5968     INSTDIR_FOR_BUILD="$INSTDIR"
5969     INSTROOT_FOR_BUILD="$INSTROOT"
5970     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5971     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5972     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5973     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5974     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5975     WORKDIR_FOR_BUILD="$WORKDIR"
5977 AC_SUBST(OS_FOR_BUILD)
5978 AC_SUBST(INSTDIR_FOR_BUILD)
5979 AC_SUBST(INSTROOT_FOR_BUILD)
5980 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5981 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5982 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5983 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5984 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5985 AC_SUBST(WORKDIR_FOR_BUILD)
5986 AC_SUBST(CC_FOR_BUILD)
5987 AC_SUBST(CXX_FOR_BUILD)
5988 AC_SUBST(CPPU_ENV_FOR_BUILD)
5990 dnl ===================================================================
5991 dnl Check for lockfile deps
5992 dnl ===================================================================
5993 if test -z "$CROSS_COMPILING"; then
5994     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5995     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5996     AC_MSG_CHECKING([which lockfile binary to use])
5997     case "$with_system_lockfile" in
5998     yes)
5999         AC_MSG_RESULT([external])
6000         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6001         ;;
6002     no)
6003         AC_MSG_RESULT([internal])
6004         ;;
6005     *)
6006         if test -x "$with_system_lockfile"; then
6007             LOCKFILE="$with_system_lockfile"
6008         else
6009             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6010         fi
6011         AC_MSG_RESULT([$with_system_lockfile])
6012         ;;
6013     esac
6016 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6017     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6020 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6021 AC_CHECK_FUNCS([utime utimes])
6022 AC_SUBST(LOCKFILE)
6024 dnl ===================================================================
6025 dnl Check for syslog header
6026 dnl ===================================================================
6027 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6029 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6030 dnl ===================================================================
6031 AC_MSG_CHECKING([whether to turn warnings to errors])
6032 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6033     ENABLE_WERROR="TRUE"
6034     PYTHONWARNINGS="error"
6035     AC_MSG_RESULT([yes])
6036 else
6037     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6038         ENABLE_WERROR="TRUE"
6039         PYTHONWARNINGS="error"
6040         AC_MSG_RESULT([yes])
6041     else
6042         AC_MSG_RESULT([no])
6043     fi
6045 AC_SUBST(ENABLE_WERROR)
6046 AC_SUBST(PYTHONWARNINGS)
6048 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6049 dnl ===================================================================
6050 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6051 if test -z "$enable_assert_always_abort"; then
6052    if test "$ENABLE_DEBUG" = TRUE; then
6053        enable_assert_always_abort=yes
6054    else
6055        enable_assert_always_abort=no
6056    fi
6058 if test "$enable_assert_always_abort" = "yes"; then
6059     ASSERT_ALWAYS_ABORT="TRUE"
6060     AC_MSG_RESULT([yes])
6061 else
6062     ASSERT_ALWAYS_ABORT="FALSE"
6063     AC_MSG_RESULT([no])
6065 AC_SUBST(ASSERT_ALWAYS_ABORT)
6067 # Determine whether to use ooenv for the instdir installation
6068 # ===================================================================
6069 if test $_os != "WINNT" -a $_os != "Darwin"; then
6070     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6071     if test -z "$enable_ooenv"; then
6072         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6073             enable_ooenv=yes
6074         else
6075             enable_ooenv=no
6076         fi
6077     fi
6078     if test "$enable_ooenv" = "no"; then
6079         AC_MSG_RESULT([no])
6080     else
6081         ENABLE_OOENV="TRUE"
6082         AC_MSG_RESULT([yes])
6083     fi
6085 AC_SUBST(ENABLE_OOENV)
6087 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6088     if test "$enable_qt5" = "no"; then
6089         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6090     else
6091         enable_qt5=yes
6092     fi
6095 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6096 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6097     AC_MSG_RESULT([yes])
6098     ENABLE_PAGEIN=TRUE
6099     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6100 else
6101     AC_MSG_RESULT([no])
6103 AC_SUBST(ENABLE_PAGEIN)
6105 dnl ===================================================================
6106 dnl check for cups support
6107 dnl ===================================================================
6109 AC_MSG_CHECKING([whether to enable CUPS support])
6110 if test "$test_cups" = yes -a "$enable_cups" != no; then
6111     ENABLE_CUPS=TRUE
6112     AC_MSG_RESULT([yes])
6114     AC_MSG_CHECKING([whether cups support is present])
6115     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6116     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6117     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6118         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6119     fi
6120 else
6121     AC_MSG_RESULT([no])
6124 AC_SUBST(ENABLE_CUPS)
6126 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6128 dnl whether to find & fetch external tarballs?
6129 dnl ===================================================================
6130 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6131    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6132        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6133    else
6134        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6135    fi
6137 if test -z "$TARFILE_LOCATION"; then
6138     if test -d "$SRC_ROOT/src" ; then
6139         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6140         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6141     fi
6142     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6143 else
6144     AbsolutePath "$TARFILE_LOCATION"
6145     PathFormat "${absolute_path}"
6146     TARFILE_LOCATION="${formatted_path_unix}"
6148 AC_SUBST(TARFILE_LOCATION)
6150 AC_MSG_CHECKING([whether we want to fetch tarballs])
6151 if test "$enable_fetch_external" != "no"; then
6152     if test "$with_all_tarballs" = "yes"; then
6153         AC_MSG_RESULT([yes, all of them])
6154         DO_FETCH_TARBALLS="ALL"
6155     else
6156         AC_MSG_RESULT([yes, if we use them])
6157         DO_FETCH_TARBALLS="TRUE"
6158     fi
6159 else
6160     AC_MSG_RESULT([no])
6161     DO_FETCH_TARBALLS=
6163 AC_SUBST(DO_FETCH_TARBALLS)
6165 dnl Test whether to include MySpell dictionaries
6166 dnl ===================================================================
6167 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6168 if test "$with_myspell_dicts" = "yes"; then
6169     AC_MSG_RESULT([yes])
6170     WITH_MYSPELL_DICTS=TRUE
6171     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6172     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6173 else
6174     AC_MSG_RESULT([no])
6175     WITH_MYSPELL_DICTS=
6177 AC_SUBST(WITH_MYSPELL_DICTS)
6179 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6180 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6181     if test "$with_system_dicts" = yes; then
6182         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6183     fi
6184     with_system_dicts=no
6187 AC_MSG_CHECKING([whether to use dicts from external paths])
6188 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6189     AC_MSG_RESULT([yes])
6190     SYSTEM_DICTS=TRUE
6191     AC_MSG_CHECKING([for spelling dictionary directory])
6192     if test -n "$with_external_dict_dir"; then
6193         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6194     else
6195         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6196         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6197             DICT_SYSTEM_DIR=file:///usr/share/myspell
6198         fi
6199     fi
6200     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6201     AC_MSG_CHECKING([for hyphenation patterns directory])
6202     if test -n "$with_external_hyph_dir"; then
6203         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6204     else
6205         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6206     fi
6207     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6208     AC_MSG_CHECKING([for thesaurus directory])
6209     if test -n "$with_external_thes_dir"; then
6210         THES_SYSTEM_DIR=file://$with_external_thes_dir
6211     else
6212         THES_SYSTEM_DIR=file:///usr/share/mythes
6213     fi
6214     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6215 else
6216     AC_MSG_RESULT([no])
6217     SYSTEM_DICTS=
6219 AC_SUBST(SYSTEM_DICTS)
6220 AC_SUBST(DICT_SYSTEM_DIR)
6221 AC_SUBST(HYPH_SYSTEM_DIR)
6222 AC_SUBST(THES_SYSTEM_DIR)
6224 dnl ===================================================================
6225 dnl Precompiled headers.
6226 ENABLE_PCH=""
6227 AC_MSG_CHECKING([whether to enable pch feature])
6228 if test -z "$enable_pch"; then
6229     if test "$_os" = "WINNT"; then
6230         # Enabled by default on Windows.
6231         enable_pch=yes
6232         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6233         if test -z "$enable_ccache" -a "$SCCACHE"; then
6234             CCACHE=""
6235         fi
6236     else
6237         enable_pch=no
6238     fi
6240 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6241     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6243 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6244     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6246 if test "$enable_pch" = "system"; then
6247     ENABLE_PCH="1"
6248     AC_MSG_RESULT([yes (system headers)])
6249 elif test "$enable_pch" = "base"; then
6250     ENABLE_PCH="2"
6251     AC_MSG_RESULT([yes (system and base headers)])
6252 elif test "$enable_pch" = "normal"; then
6253     ENABLE_PCH="3"
6254     AC_MSG_RESULT([yes (normal)])
6255 elif test "$enable_pch" = "full"; then
6256     ENABLE_PCH="4"
6257     AC_MSG_RESULT([yes (full)])
6258 elif test "$enable_pch" = "yes"; then
6259     # Pick a suitable default.
6260     if test "$GCC" = "yes"; then
6261         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6262         # while making the PCHs larger and rebuilds more likely.
6263         ENABLE_PCH="2"
6264         AC_MSG_RESULT([yes (system and base headers)])
6265     else
6266         # With MSVC the highest level makes a significant difference,
6267         # and it was the default when there used to be no PCH levels.
6268         ENABLE_PCH="4"
6269         AC_MSG_RESULT([yes (full)])
6270     fi
6271 elif test "$enable_pch" = "no"; then
6272     AC_MSG_RESULT([no])
6273 else
6274     AC_MSG_ERROR([Unknown value for --enable-pch])
6276 AC_SUBST(ENABLE_PCH)
6277 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6278 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6279     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6280     if test "$CCACHE_BIN" != "not found"; then
6281         AC_MSG_CHECKING([ccache version])
6282         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6283         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6284         AC_MSG_RESULT([$CCACHE_VERSION])
6285         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6286         if test "$CCACHE_NUMVER" -gt "030701"; then
6287             AC_MSG_RESULT([yes])
6288         else
6289             AC_MSG_RESULT([no (not newer than 3.7.1)])
6290             CCACHE_DEPEND_MODE=
6291         fi
6292     fi
6295 PCH_INSTANTIATE_TEMPLATES=
6296 if test -n "$ENABLE_PCH"; then
6297     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6298     save_CFLAGS=$CFLAGS
6299     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6300     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6301     CFLAGS=$save_CFLAGS
6302     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6303         AC_MSG_RESULT(yes)
6304     else
6305         AC_MSG_RESULT(no)
6306     fi
6308 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6310 BUILDING_PCH_WITH_OBJ=
6311 if test -n "$ENABLE_PCH"; then
6312     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6313     save_CFLAGS=$CFLAGS
6314     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6315     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6316     CFLAGS=$save_CFLAGS
6317     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6318         AC_MSG_RESULT(yes)
6319     else
6320         AC_MSG_RESULT(no)
6321     fi
6323 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6325 PCH_CODEGEN=
6326 PCH_NO_CODEGEN=
6327 fpch_prefix=
6328 if test "$COM" = MSC; then
6329     fpch_prefix="-Xclang "
6331 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6332     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6333     save_CFLAGS=$CFLAGS
6334     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6335     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6336         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6337     CFLAGS=$save_CFLAGS
6338     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6339     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6340         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6341     CFLAGS=$save_CFLAGS
6342     if test -n "$PCH_CODEGEN"; then
6343         AC_MSG_RESULT(yes)
6344     else
6345         AC_MSG_RESULT(no)
6346     fi
6348 AC_SUBST(PCH_CODEGEN)
6349 AC_SUBST(PCH_NO_CODEGEN)
6350 PCH_DEBUGINFO=
6351 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6352     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6353     save_CFLAGS=$CFLAGS
6354     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6355     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6356     CFLAGS=$save_CFLAGS
6357     if test -n "$PCH_DEBUGINFO"; then
6358         AC_MSG_RESULT(yes)
6359     else
6360         AC_MSG_RESULT(no)
6361     fi
6363 AC_SUBST(PCH_DEBUGINFO)
6365 TAB=`printf '\t'`
6367 AC_MSG_CHECKING([the GNU Make version])
6368 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6369 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6370 if test "$_make_longver" -ge "040000"; then
6371     AC_MSG_RESULT([$GNUMAKE $_make_version])
6372 else
6373     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6376 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6377 STALE_MAKE=
6378 if test "$_make_ver_check" = ""; then
6379    STALE_MAKE=TRUE
6382 HAVE_LD_HASH_STYLE=FALSE
6383 WITH_LINKER_HASH_STYLE=
6384 AC_MSG_CHECKING([for --hash-style gcc linker support])
6385 if test "$GCC" = "yes"; then
6386     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6387         hash_styles="gnu sysv"
6388     elif test "$with_linker_hash_style" = "no"; then
6389         hash_styles=
6390     else
6391         hash_styles="$with_linker_hash_style"
6392     fi
6394     for hash_style in $hash_styles; do
6395         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6396         hash_style_ldflags_save=$LDFLAGS
6397         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6399         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6400             [
6401 #include <stdio.h>
6402             ],[
6403 printf ("");
6404             ])],
6405             [
6406                   HAVE_LD_HASH_STYLE=TRUE
6407                   WITH_LINKER_HASH_STYLE=$hash_style
6408             ],
6409             [HAVE_LD_HASH_STYLE=FALSE],
6410             [HAVE_LD_HASH_STYLE=FALSE])
6411         LDFLAGS=$hash_style_ldflags_save
6412     done
6414     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6415         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6416     else
6417         AC_MSG_RESULT( no )
6418     fi
6419     LDFLAGS=$hash_style_ldflags_save
6420 else
6421     AC_MSG_RESULT( no )
6423 AC_SUBST(HAVE_LD_HASH_STYLE)
6424 AC_SUBST(WITH_LINKER_HASH_STYLE)
6426 dnl ===================================================================
6427 dnl Check whether there's a Perl version available.
6428 dnl ===================================================================
6429 if test -z "$with_perl_home"; then
6430     AC_PATH_PROG(PERL, perl)
6431 else
6432     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6433     _perl_path="$with_perl_home/bin/perl"
6434     if test -x "$_perl_path"; then
6435         PERL=$_perl_path
6436     else
6437         AC_MSG_ERROR([$_perl_path not found])
6438     fi
6441 dnl ===================================================================
6442 dnl Testing for Perl version 5 or greater.
6443 dnl $] is the Perl version variable, it is returned as an integer
6444 dnl ===================================================================
6445 if test "$PERL"; then
6446     AC_MSG_CHECKING([the Perl version])
6447     ${PERL} -e "exit($]);"
6448     _perl_version=$?
6449     if test "$_perl_version" -lt 5; then
6450         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6451     fi
6452     AC_MSG_RESULT([Perl $_perl_version])
6453 else
6454     AC_MSG_ERROR([Perl not found, install Perl 5])
6457 dnl ===================================================================
6458 dnl Testing for required Perl modules
6459 dnl ===================================================================
6461 AC_MSG_CHECKING([for required Perl modules])
6462 perl_use_string="use Cwd ; use Digest::MD5"
6463 if test "$_os" = "WINNT"; then
6464     if test -n "$PKGFORMAT"; then
6465         for i in $PKGFORMAT; do
6466             case "$i" in
6467             msi)
6468                 # for getting fonts versions to use in MSI
6469                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6470                 ;;
6471             esac
6472         done
6473     fi
6475 if test "$with_system_hsqldb" = "yes"; then
6476     perl_use_string="$perl_use_string ; use Archive::Zip"
6478 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6479     # OpenSSL needs that to build
6480     perl_use_string="$perl_use_string ; use FindBin"
6482 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6483     AC_MSG_RESULT([all modules found])
6484 else
6485     AC_MSG_RESULT([failed to find some modules])
6486     # Find out which modules are missing.
6487     for i in $perl_use_string; do
6488         if test "$i" != "use" -a "$i" != ";"; then
6489             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6490                 missing_perl_modules="$missing_perl_modules $i"
6491             fi
6492         fi
6493     done
6494     AC_MSG_ERROR([
6495     The missing Perl modules are: $missing_perl_modules
6496     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6499 dnl ===================================================================
6500 dnl Check for pkg-config
6501 dnl ===================================================================
6502 if test "$_os" != "WINNT"; then
6503     PKG_PROG_PKG_CONFIG
6505 AC_SUBST(PKG_CONFIG)
6506 AC_SUBST(PKG_CONFIG_PATH)
6507 AC_SUBST(PKG_CONFIG_LIBDIR)
6509 if test "$_os" != "WINNT"; then
6511     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6512     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6513     # explicitly. Or put /path/to/compiler in PATH yourself.
6515     toolprefix=gcc
6516     if test "$COM_IS_CLANG" = "TRUE"; then
6517         toolprefix=llvm
6518     fi
6519     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6520     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6521     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6522     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6523     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6524     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6526 AC_SUBST(AR)
6527 AC_SUBST(NM)
6528 AC_SUBST(OBJDUMP)
6529 AC_SUBST(RANLIB)
6530 AC_SUBST(READELF)
6531 AC_SUBST(STRIP)
6533 dnl ===================================================================
6534 dnl pkg-config checks on macOS
6535 dnl ===================================================================
6537 if test $_os = Darwin; then
6538     AC_MSG_CHECKING([for bogus pkg-config])
6539     if test -n "$PKG_CONFIG"; then
6540         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6541             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6542         else
6543             if test "$enable_bogus_pkg_config" = "yes"; then
6544                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6545             else
6546                 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.])
6547             fi
6548         fi
6549     else
6550         AC_MSG_RESULT([no, good])
6551     fi
6554 find_csc()
6556     # Return value: $csctest
6558     unset csctest
6560     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6561     if test -n "$regvalue"; then
6562         csctest=$regvalue
6563         return
6564     fi
6567 find_al()
6569     # Return value: $altest
6571     unset altest
6573     # We need this check to detect 4.6.1 or above.
6574     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6575         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6576         PathFormat "$regvalue"
6577         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6578             altest=$regvalue
6579             return
6580         fi
6581     done
6583     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6584     for x in $reglist; do
6585         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6586         PathFormat "$regvalue"
6587         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6588             altest=$regvalue
6589             return
6590         fi
6591     done
6594 find_dotnetsdk46()
6596     unset frametest
6598     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6599         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6600         if test -n "$regvalue"; then
6601             frametest=$regvalue
6602             return
6603         fi
6604     done
6607 find_winsdk_version()
6609     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6610     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6612     unset winsdktest winsdkbinsubdir winsdklibsubdir
6614     case "$1" in
6615     8.0|8.0A)
6616         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6617         if test -n "$regvalue"; then
6618             winsdktest=$regvalue
6619             winsdklibsubdir=win8
6620             return
6621         fi
6622         ;;
6623     8.1|8.1A)
6624         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6625         if test -n "$regvalue"; then
6626             winsdktest=$regvalue
6627             winsdklibsubdir=winv6.3
6628             return
6629         fi
6630         ;;
6631     10.0)
6632         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6633         if test -n "$regvalue"; then
6634             winsdktest=$regvalue
6635             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6636             if test -n "$regvalue"; then
6637                 winsdkbinsubdir="$regvalue".0
6638                 winsdklibsubdir=$winsdkbinsubdir
6639                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6640                 local tmppath_unix=$(cygpath -u "$tmppath")
6641                 # test exist the SDK path
6642                 if test -d "$tmppath_unix"; then
6643                    # when path is convertible to a short path then path is okay
6644                    cygpath -d "$tmppath" >/dev/null 2>&1
6645                    if test $? -ne 0; then
6646                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6647                    fi
6648                 else
6649                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6650                 fi
6651             fi
6652             return
6653         fi
6654         ;;
6655     esac
6658 find_winsdk()
6660     # Return value: From find_winsdk_version
6662     unset winsdktest
6664     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6665         find_winsdk_version $ver
6666         if test -n "$winsdktest"; then
6667             return
6668         fi
6669     done
6672 find_msms()
6674     # Return value: $msmdir
6675     local version="$1"
6677     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6678     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6679     local my_msm_dir
6681     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6683     msmdir=
6684     case "$VCVER" in
6685     16.0 | 17.0 | 17.4)
6686         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6687             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6688             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6689             if test -e "$my_msm_dir${my_msm_file}"; then
6690                 msmdir=$my_msm_dir
6691             fi
6692         done
6693         ;;
6694     esac
6696     if test -n "$msmdir"; then
6697         msmdir=`cygpath -m "$msmdir"`
6698         AC_MSG_RESULT([$msmdir])
6699     else
6700         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6701             AC_MSG_FAILURE([not found])
6702         else
6703             AC_MSG_WARN([not found (check config.log)])
6704             add_warning "MSM ${my_msm_file} not found"
6705         fi
6706     fi
6709 find_msvc_x64_dlls()
6711     # Return value: $msvcdllpath, $msvcdlls
6713     AC_MSG_CHECKING([for MSVC x64 DLL path])
6715     dnl Order crtver in increasing order. Then check the directories returned by
6716     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6717     dnl the result will be the highest CRT version found in the highest directory.
6719     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6720     case "$VCVER" in
6721     16.0 | 17.0 | 17.4)
6722         for crtver in 141 142 143; do
6723             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6724                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6725                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6726                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6727                 fi
6728             done
6729         done
6730         ;;
6731     esac
6732     AC_MSG_RESULT([$msvcdllpath])
6733     AC_MSG_CHECKING([for MSVC x64 DLLs])
6734     msvcdlls="msvcp140.dll vcruntime140.dll"
6735     for dll in $msvcdlls; do
6736         if ! test -f "$msvcdllpath/$dll"; then
6737             AC_MSG_FAILURE([missing $dll])
6738         fi
6739     done
6740     AC_MSG_RESULT([found all ($msvcdlls)])
6743 dnl =========================================
6744 dnl Check for the Windows  SDK.
6745 dnl =========================================
6746 if test "$_os" = "WINNT"; then
6747     AC_MSG_CHECKING([for Windows SDK])
6748     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6749         find_winsdk
6750         WINDOWS_SDK_HOME=$winsdktest
6752         # normalize if found
6753         if test -n "$WINDOWS_SDK_HOME"; then
6754             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6755             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6756         fi
6758         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6759     fi
6761     if test -n "$WINDOWS_SDK_HOME"; then
6762         # Remove a possible trailing backslash
6763         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6765         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6766              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6767              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6768             have_windows_sdk_headers=yes
6769         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6770              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6771              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6772             have_windows_sdk_headers=yes
6773         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6774              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6775              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6776             have_windows_sdk_headers=yes
6777         else
6778             have_windows_sdk_headers=no
6779         fi
6781         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6782             have_windows_sdk_libs=yes
6783         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6784             have_windows_sdk_libs=yes
6785         else
6786             have_windows_sdk_libs=no
6787         fi
6789         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6790             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6791 the  Windows SDK are installed.])
6792         fi
6793     fi
6795     if test -z "$WINDOWS_SDK_HOME"; then
6796         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6797     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6798         WINDOWS_SDK_VERSION=80
6799         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6800     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6801         WINDOWS_SDK_VERSION=81
6802         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6803     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6804         WINDOWS_SDK_VERSION=10
6805         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6806     else
6807         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6808     fi
6809     PathFormat "$WINDOWS_SDK_HOME"
6810     WINDOWS_SDK_HOME="$formatted_path"
6811     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6812     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6813         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6814         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6815             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6816         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6817             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6818         fi
6819     fi
6821     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6822     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6823     dnl but not in v8.0), so allow this to be overridden with a
6824     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6825     dnl and configuration error if no WiLangId.vbs is found would arguably be
6826     dnl better, but I do not know under which conditions exactly it is needed by
6827     dnl msiglobal.pm:
6828     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6829         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6830         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6831         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6832             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6833             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6834         fi
6835         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6836             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6837             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6838         fi
6839         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6840             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6841             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6842         fi
6843     fi
6844     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6845         if test -n "$with_package_format" -a "$with_package_format" != no; then
6846             for i in "$with_package_format"; do
6847                 if test "$i" = "msi"; then
6848                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6849                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6850                     fi
6851                 fi
6852             done
6853         fi
6854     fi
6856 AC_SUBST(WINDOWS_SDK_HOME)
6857 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6858 AC_SUBST(WINDOWS_SDK_VERSION)
6859 AC_SUBST(WINDOWS_SDK_WILANGID)
6861 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6862     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6863     dnl dir, it also determines that dir's path w/o an arch segment if any,
6864     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6865     AC_MSG_CHECKING([for midl.exe])
6867     find_winsdk
6868     PathFormat "$winsdktest"
6869     winsdktest_unix="$formatted_path_unix"
6871     if test -n "$winsdkbinsubdir" \
6872         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6873     then
6874         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6875         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6876     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6877         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6878         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6879     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6880         MIDL_PATH=$winsdktest/Bin
6881         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6882     fi
6883     PathFormat "$MIDL_PATH"
6884     if test ! -f "$formatted_path_unix/midl.exe"; then
6885         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6886     else
6887         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6888     fi
6890     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6891     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6893     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6894          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6895          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6896          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6897     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6898          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6899          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6900          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6901     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6902          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6903          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6904          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6905     else
6906         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6907     fi
6909     dnl Check csc.exe
6910     AC_MSG_CHECKING([for csc.exe])
6911     find_csc
6912     PathFormat "$csctest"
6913     csctest_unix="$formatted_path_unix"
6914     if test -f "$csctest_unix/csc.exe"; then
6915         CSC_PATH="$csctest"
6916     fi
6917     if test ! -f "$csctest_unix/csc.exe"; then
6918         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6919     else
6920         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6921     fi
6923     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6925     dnl Check al.exe
6926     AC_MSG_CHECKING([for al.exe])
6927     if test -n "$winsdkbinsubdir" \
6928         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6929     then
6930         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6931     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6932         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6933     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6934         AL_PATH="$winsdktest/Bin"
6935     fi
6937     if test -z "$AL_PATH"; then
6938         find_al
6939         PathFormat "$altest"
6940         altest_unix="$formatted_path_unix"
6941         if test -f "$altest_unix/bin/al.exe"; then
6942             AL_PATH="$altest/bin"
6943         elif test -f "$altest_unix/al.exe"; then
6944             AL_PATH="$altest"
6945         fi
6946     fi
6947     PathFormat "$AL_PATH"
6948     if test ! -f "$formatted_path_unix/al.exe"; then
6949         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6950     else
6951         AC_MSG_RESULT([$AL_PATH/al.exe])
6952     fi
6954     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6956     dnl Check mscoree.lib / .NET Framework dir
6957     AC_MSG_CHECKING(.NET Framework)
6958     find_dotnetsdk46
6959     PathFormat "$frametest"
6960     frametest="$formatted_path_unix"
6961     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6962         DOTNET_FRAMEWORK_HOME="$frametest"
6963     else
6964         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6965             DOTNET_FRAMEWORK_HOME="$winsdktest"
6966         fi
6967     fi
6968     PathFormat "$DOTNET_FRAMEWORK_HOME"
6969     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
6970         AC_MSG_ERROR([mscoree.lib not found])
6971     fi
6972     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6974     PathFormat "$MIDL_PATH"
6975     MIDL_PATH="$formatted_path"
6977     PathFormat "$AL_PATH"
6978     AL_PATH="$formatted_path"
6980     PathFormat "$DOTNET_FRAMEWORK_HOME"
6981     DOTNET_FRAMEWORK_HOME="$formatted_path"
6983     PathFormat "$CSC_PATH"
6984     CSC_PATH="$formatted_path"
6987 dnl ===================================================================
6988 dnl Testing for C++ compiler and version...
6989 dnl ===================================================================
6991 if test "$_os" != "WINNT"; then
6992     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6993     save_CXXFLAGS=$CXXFLAGS
6994     AC_PROG_CXX
6995     CXXFLAGS=$save_CXXFLAGS
6996     if test -z "$CXX_BASE"; then
6997         CXX_BASE=`first_arg_basename "$CXX"`
6998     fi
7001 dnl check for GNU C++ compiler version
7002 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7003     AC_MSG_CHECKING([the GNU C++ compiler version])
7005     _gpp_version=`$CXX -dumpversion`
7006     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7008     if test "$_gpp_majmin" -lt "700"; then
7009         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7010     else
7011         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7012     fi
7014     dnl see https://code.google.com/p/android/issues/detail?id=41770
7015         glibcxx_threads=no
7016         AC_LANG_PUSH([C++])
7017         AC_REQUIRE_CPP
7018         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7019         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7020             #include <bits/c++config.h>]],[[
7021             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7022             && !defined(_GLIBCXX__PTHREADS) \
7023             && !defined(_GLIBCXX_HAS_GTHREADS)
7024             choke me
7025             #endif
7026         ]])],[AC_MSG_RESULT([yes])
7027         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7028         AC_LANG_POP([C++])
7029         if test $glibcxx_threads = yes; then
7030             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7031         fi
7033 AC_SUBST(BOOST_CXXFLAGS)
7036 # prefx CXX with ccache if needed
7038 if test "$CCACHE" != ""; then
7039     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7040     AC_LANG_PUSH([C++])
7041     save_CXXFLAGS=$CXXFLAGS
7042     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7043     # msvc does not fail on unknown options, check stdout
7044     if test "$COM" = MSC; then
7045         CXXFLAGS="$CXXFLAGS -nologo"
7046     fi
7047     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7048     ac_cxx_werror_flag=yes
7049     dnl an empty program will do, we're checking the compiler flags
7050     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7051                       [use_ccache=yes], [use_ccache=no])
7052     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7053         AC_MSG_RESULT([yes])
7054     else
7055         CXX="$CCACHE $CXX"
7056         CXX_BASE="ccache $CXX_BASE"
7057         AC_MSG_RESULT([no])
7058     fi
7059     CXXFLAGS=$save_CXXFLAGS
7060     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7061     AC_LANG_POP([C++])
7064 dnl ===================================================================
7065 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7066 dnl ===================================================================
7068 if test "$_os" != "WINNT"; then
7069     AC_PROG_CXXCPP
7071     dnl Check whether there's a C pre-processor.
7072     AC_PROG_CPP
7076 dnl ===================================================================
7077 dnl Find integral type sizes and alignments
7078 dnl ===================================================================
7080 if test "$_os" != "WINNT"; then
7082     AC_CHECK_SIZEOF(long)
7083     AC_CHECK_SIZEOF(short)
7084     AC_CHECK_SIZEOF(int)
7085     AC_CHECK_SIZEOF(long long)
7086     AC_CHECK_SIZEOF(double)
7087     AC_CHECK_SIZEOF(void*)
7088     AC_CHECK_SIZEOF(size_t)
7090     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7091     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7092     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7093     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7094     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7095     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7097     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7098     m4_pattern_allow([AC_CHECK_ALIGNOF])
7099     m4_ifdef([AC_CHECK_ALIGNOF],
7100         [
7101             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7102             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7103             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7104             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7105         ],
7106         [
7107             case "$_os-$host_cpu" in
7108             Linux-i686)
7109                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7110                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7111                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7112                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7113                 ;;
7114             Linux-x86_64)
7115                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7116                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7117                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7118                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7119                 ;;
7120             *)
7121                 if test -z "$ac_cv_alignof_short" -o \
7122                         -z "$ac_cv_alignof_int" -o \
7123                         -z "$ac_cv_alignof_long" -o \
7124                         -z "$ac_cv_alignof_double"; then
7125                    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.])
7126                 fi
7127                 ;;
7128             esac
7129         ])
7131     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7132     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7133     if test $ac_cv_sizeof_long -eq 8; then
7134         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7135     elif test $ac_cv_sizeof_double -eq 8; then
7136         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7137     else
7138         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7139     fi
7141     dnl Check for large file support
7142     AC_SYS_LARGEFILE
7143     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7144         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7145     fi
7146     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7147         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7148     fi
7149 else
7150     # Hardcode for MSVC
7151     SAL_TYPES_SIZEOFSHORT=2
7152     SAL_TYPES_SIZEOFINT=4
7153     SAL_TYPES_SIZEOFLONG=4
7154     SAL_TYPES_SIZEOFLONGLONG=8
7155     if test $WIN_HOST_BITS -eq 32; then
7156         SAL_TYPES_SIZEOFPOINTER=4
7157         SIZEOF_SIZE_T=4
7158     else
7159         SAL_TYPES_SIZEOFPOINTER=8
7160         SIZEOF_SIZE_T=8
7161     fi
7162     SAL_TYPES_ALIGNMENT2=2
7163     SAL_TYPES_ALIGNMENT4=4
7164     SAL_TYPES_ALIGNMENT8=8
7165     LFS_CFLAGS=''
7167 AC_SUBST(LFS_CFLAGS)
7168 AC_SUBST(SIZEOF_SIZE_T)
7170 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7171 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7172 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7173 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7174 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7175 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7176 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7177 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7179 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7180 AC_MSG_CHECKING([whether jumbo sheets are supported])
7181 if test "$_os" != "WINNT"; then
7182     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7183         AC_MSG_RESULT([yes])
7184         ENABLE_JUMBO_SHEETS=TRUE
7185         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7186     else
7187         AC_MSG_RESULT([no])
7188     fi
7189 else
7190     if test $WIN_HOST_BITS -gt 32; then
7191         # 64bit windows is special-cased for tools::Long because long is 32bit
7192         AC_MSG_RESULT([yes])
7193         ENABLE_JUMBO_SHEETS=TRUE
7194         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7195     else
7196         AC_MSG_RESULT([no])
7197     fi
7199 AC_SUBST(ENABLE_JUMBO_SHEETS)
7201 dnl ===================================================================
7202 dnl Check whether to enable runtime optimizations
7203 dnl ===================================================================
7204 ENABLE_RUNTIME_OPTIMIZATIONS=
7205 AC_MSG_CHECKING([whether to enable runtime optimizations])
7206 if test -z "$enable_runtime_optimizations"; then
7207     for i in $CC; do
7208         case $i in
7209         -fsanitize=*)
7210             enable_runtime_optimizations=no
7211             break
7212             ;;
7213         esac
7214     done
7216 if test "$enable_runtime_optimizations" != no; then
7217     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7218     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7219     AC_MSG_RESULT([yes])
7220 else
7221     AC_MSG_RESULT([no])
7223 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7225 dnl ===================================================================
7226 dnl Check if valgrind headers are available
7227 dnl ===================================================================
7228 ENABLE_VALGRIND=
7229 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7230     prev_cppflags=$CPPFLAGS
7231     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7232     # or where does it come from?
7233     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7234     AC_CHECK_HEADER([valgrind/valgrind.h],
7235         [ENABLE_VALGRIND=TRUE])
7236     CPPFLAGS=$prev_cppflags
7238 AC_SUBST([ENABLE_VALGRIND])
7239 if test -z "$ENABLE_VALGRIND"; then
7240     if test "$with_valgrind" = yes; then
7241         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7242     fi
7243     VALGRIND_CFLAGS=
7245 AC_SUBST([VALGRIND_CFLAGS])
7248 dnl ===================================================================
7249 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7250 dnl ===================================================================
7252 # We need at least the sys/sdt.h include header.
7253 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7254 if test "$SDT_H_FOUND" = "TRUE"; then
7255     # Found sys/sdt.h header, now make sure the c++ compiler works.
7256     # Old g++ versions had problems with probes in constructors/destructors.
7257     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7258     AC_LANG_PUSH([C++])
7259     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7260     #include <sys/sdt.h>
7261     class ProbeClass
7262     {
7263     private:
7264       int& ref;
7265       const char *name;
7267     public:
7268       ProbeClass(int& v, const char *n) : ref(v), name(n)
7269       {
7270         DTRACE_PROBE2(_test_, cons, name, ref);
7271       }
7273       void method(int min)
7274       {
7275         DTRACE_PROBE3(_test_, meth, name, ref, min);
7276         ref -= min;
7277       }
7279       ~ProbeClass()
7280       {
7281         DTRACE_PROBE2(_test_, dest, name, ref);
7282       }
7283     };
7284     ]],[[
7285     int i = 64;
7286     DTRACE_PROBE1(_test_, call, i);
7287     ProbeClass inst = ProbeClass(i, "call");
7288     inst.method(24);
7289     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7290           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7291     AC_LANG_POP([C++])
7293 AC_CONFIG_HEADERS([config_host/config_probes.h])
7295 dnl ===================================================================
7296 dnl GCC features
7297 dnl ===================================================================
7298 HAVE_GCC_STACK_CLASH_PROTECTION=
7299 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7300     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7301     save_CFLAGS=$CFLAGS
7302     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7303     AC_LINK_IFELSE(
7304         [AC_LANG_PROGRAM(, [[return 0;]])],
7305         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7306         [AC_MSG_RESULT([no])])
7307     CFLAGS=$save_CFLAGS
7309     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7310     save_CFLAGS=$CFLAGS
7311     CFLAGS="$CFLAGS -Werror -mno-avx"
7312     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7313     CFLAGS=$save_CFLAGS
7314     if test "$HAVE_GCC_AVX" = "TRUE"; then
7315         AC_MSG_RESULT([yes])
7316     else
7317         AC_MSG_RESULT([no])
7318     fi
7320     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7321     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7322     int v = 0;
7323     if (__sync_add_and_fetch(&v, 1) != 1 ||
7324         __sync_sub_and_fetch(&v, 1) != 0)
7325         return 1;
7326     __sync_synchronize();
7327     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7328         v != 1)
7329         return 1;
7330     return 0;
7331 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7332     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7333         AC_MSG_RESULT([yes])
7334         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7335     else
7336         AC_MSG_RESULT([no])
7337     fi
7339     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7340     AC_LANG_PUSH([C++])
7341     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7342             #include <cstddef>
7343             #include <cxxabi.h>
7344             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7345         ])], [
7346             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7347             AC_MSG_RESULT([yes])
7348         ], [AC_MSG_RESULT([no])])
7349     AC_LANG_POP([C++])
7351     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7352     AC_LANG_PUSH([C++])
7353     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7354             #include <cstddef>
7355             #include <cxxabi.h>
7356             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7357         ])], [
7358             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7359             AC_MSG_RESULT([yes])
7360         ], [AC_MSG_RESULT([no])])
7361     AC_LANG_POP([C++])
7363     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7364     AC_LANG_PUSH([C++])
7365     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7366             #include <cxxabi.h>
7367             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7368         ])], [
7369             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7370             AC_MSG_RESULT([yes])
7371         ], [AC_MSG_RESULT([no])])
7372     AC_LANG_POP([C++])
7374     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7375     AC_LANG_PUSH([C++])
7376     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7377             #include <cstddef>
7378             #include <cxxabi.h>
7379             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7380         ])], [
7381             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7382             AC_MSG_RESULT([yes])
7383         ], [AC_MSG_RESULT([no])])
7384     AC_LANG_POP([C++])
7386     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7387     AC_LANG_PUSH([C++])
7388     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7389             #include <cstddef>
7390             #include <cxxabi.h>
7391             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7392         ])], [
7393             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7394             AC_MSG_RESULT([yes])
7395         ], [AC_MSG_RESULT([no])])
7396     AC_LANG_POP([C++])
7398     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7399     AC_LANG_PUSH([C++])
7400     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7401             #include <cxxabi.h>
7402             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7403         ])], [
7404             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7405             AC_MSG_RESULT([yes])
7406         ], [AC_MSG_RESULT([no])])
7407     AC_LANG_POP([C++])
7409     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7410     AC_LANG_PUSH([C++])
7411     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7412             #include <cxxabi.h>
7413             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7414         ])], [
7415             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7416             AC_MSG_RESULT([yes])
7417         ], [AC_MSG_RESULT([no])])
7418     AC_LANG_POP([C++])
7420     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7421     AC_LANG_PUSH([C++])
7422     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7423             #include <cxxabi.h>
7424             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7425         ])], [
7426             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7427             AC_MSG_RESULT([yes])
7428         ], [AC_MSG_RESULT([no])])
7429     AC_LANG_POP([C++])
7431     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7432     AC_LANG_PUSH([C++])
7433     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7434             #include <cstddef>
7435             #include <cxxabi.h>
7436             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7437         ])], [
7438             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7439             AC_MSG_RESULT([yes])
7440         ], [AC_MSG_RESULT([no])])
7441     AC_LANG_POP([C++])
7443     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7444     AC_LANG_PUSH([C++])
7445     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7446             #include <cstddef>
7447             #include <cxxabi.h>
7448             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7449         ])], [
7450             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7451             AC_MSG_RESULT([yes])
7452         ], [AC_MSG_RESULT([no])])
7453     AC_LANG_POP([C++])
7456 AC_SUBST(HAVE_GCC_AVX)
7457 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7458 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7460 dnl ===================================================================
7461 dnl Identify the C++ library
7462 dnl ===================================================================
7464 AC_MSG_CHECKING([what the C++ library is])
7465 HAVE_LIBSTDCPP=
7466 HAVE_LIBCPP=
7467 AC_LANG_PUSH([C++])
7468 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7469 #include <utility>
7470 #ifndef __GLIBCXX__
7471 foo bar
7472 #endif
7473 ]])],
7474     [CPP_LIBRARY=GLIBCXX
7475      cpp_library_name="GNU libstdc++"
7476      HAVE_LIBSTDCPP=TRUE
7477     ],
7478     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7479 #include <utility>
7480 #ifndef _LIBCPP_VERSION
7481 foo bar
7482 #endif
7483 ]])],
7484     [CPP_LIBRARY=LIBCPP
7485      cpp_library_name="LLVM libc++"
7486      AC_DEFINE([HAVE_LIBCPP])
7487      HAVE_LIBCPP=TRUE
7488     ],
7489     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7490 #include <utility>
7491 #ifndef _MSC_VER
7492 foo bar
7493 #endif
7494 ]])],
7495     [CPP_LIBRARY=MSVCRT
7496      cpp_library_name="Microsoft"
7497     ],
7498     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7499 AC_MSG_RESULT([$cpp_library_name])
7500 AC_LANG_POP([C++])
7501 AC_SUBST([HAVE_LIBSTDCPP])
7502 AC_SUBST([HAVE_LIBCPP])
7504 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7505 then
7506     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7507     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7508     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7509     # although there will be backwards compatibility).
7510     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7511     # and there would be undefined references to debug functions.
7512     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7513     # So check if debug mode can be used and disable or downgrade it to assertions
7514     # if needed.
7515     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7516     AC_LANG_PUSH([C++])
7517     libcpp_debug_links=
7518     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7519 #define _LIBCPP_DEBUG 0 // only assertions
7520 #include <vector>
7521 int main()
7523     std::vector<int> v;
7524     v.push_back( 1 );
7525     return v[ 3 ];
7527 ]])], [libcpp_debug_links=1])
7528     if test -n "$libcpp_debug_links"; then
7529         # we can use at least assertions, check if debug mode works
7530         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7531 #define _LIBCPP_DEBUG 1 // debug mode
7532 #include <string>
7533 #include <vector>
7534 int foo(const std::vector<int>& v) { return *v.begin(); }
7535 int main()
7537     std::vector<int> v;
7538     v.push_back( 1 );
7539     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7540     return (foo(v) + s.size()) != 0 ? 0 : 1;
7542 ]])],
7543         [AC_MSG_RESULT(yes)
7544          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7545         ],
7546         [AC_MSG_RESULT(no, using only assertions)
7547          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7548         ]
7549         )
7550     else
7551         AC_MSG_RESULT(no)
7552     fi
7553     AC_LANG_POP([C++])
7555 AC_SUBST([LIBCPP_DEBUG])
7557 dnl ===================================================================
7558 dnl Check for gperf
7559 dnl ===================================================================
7560 AC_PATH_PROG(GPERF, gperf)
7561 if test -z "$GPERF"; then
7562     AC_MSG_ERROR([gperf not found but needed. Install it.])
7564 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7565     GPERF=`cygpath -m $GPERF`
7567 AC_MSG_CHECKING([whether gperf is new enough])
7568 my_gperf_ver1=$($GPERF --version | head -n 1)
7569 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7570 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7571 if test "$my_gperf_ver3" -ge 301; then
7572     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7573 else
7574     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7576 AC_SUBST(GPERF)
7578 dnl ===================================================================
7579 dnl Check for system libcmis
7580 dnl ===================================================================
7581 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7583 dnl ===================================================================
7584 dnl C++11
7585 dnl ===================================================================
7587 if test -z "${CXXFLAGS_CXX11+x}"; then
7588     AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7589     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7590         if test "$with_latest_c__" = yes; then
7591             CXXFLAGS_CXX11=-std:c++latest
7592         else
7593             CXXFLAGS_CXX11=-std:c++17
7594         fi
7595         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7596     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7597         my_flags='-std=c++17 -std=c++1z'
7598         if test "$with_latest_c__" = yes; then
7599             my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7600         fi
7601         for flag in $my_flags; do
7602             if test "$COM" = MSC; then
7603                 flag="-Xclang $flag"
7604             fi
7605             save_CXXFLAGS=$CXXFLAGS
7606             CXXFLAGS="$CXXFLAGS $flag -Werror"
7607             AC_LANG_PUSH([C++])
7608             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7609                 #include <algorithm>
7610                 #include <functional>
7611                 #include <vector>
7613                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7614                     std::sort(v.begin(), v.end(), fn);
7615                 }
7616                 ]])],[CXXFLAGS_CXX11=$flag])
7617             AC_LANG_POP([C++])
7618             CXXFLAGS=$save_CXXFLAGS
7619             if test -n "$CXXFLAGS_CXX11"; then
7620                 break
7621             fi
7622         done
7623     fi
7624     if test -n "$CXXFLAGS_CXX11"; then
7625         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7626     else
7627         AC_MSG_ERROR(no)
7628     fi
7630 AC_SUBST(CXXFLAGS_CXX11)
7632 if test "$GCC" = "yes"; then
7633     save_CXXFLAGS=$CXXFLAGS
7634     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7635     CHECK_L_ATOMIC
7636     CXXFLAGS=$save_CXXFLAGS
7637     AC_SUBST(ATOMIC_LIB)
7640 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7641 save_CXXFLAGS=$CXXFLAGS
7642 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7643 AC_LANG_PUSH([C++])
7645 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7646 #include <stddef.h>
7648 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7650 namespace
7652         struct b
7653         {
7654                 int i;
7655                 int j;
7656         };
7658 ]], [[
7659 struct a
7661         int i;
7662         int j;
7664 a thinga[]={{0,0}, {1,1}};
7665 b thingb[]={{0,0}, {1,1}};
7666 size_t i = sizeof(sal_n_array_size(thinga));
7667 size_t j = sizeof(sal_n_array_size(thingb));
7668 return !(i != 0 && j != 0);
7670     ], [ AC_MSG_RESULT(yes) ],
7671     [ AC_MSG_ERROR(no)])
7672 AC_LANG_POP([C++])
7673 CXXFLAGS=$save_CXXFLAGS
7675 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7676 if test "$GCC" = yes; then
7677     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7678     AC_LANG_PUSH([C++])
7679     save_CXXFLAGS=$CXXFLAGS
7680     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7681     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7682     CXXFLAGS=$save_CXXFLAGS
7683     AC_LANG_POP([C++])
7684     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7685         AC_MSG_RESULT([yes])
7686     else
7687         AC_MSG_RESULT([no])
7688     fi
7690 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7692 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7693 AC_LANG_PUSH([C++])
7694 save_CXXFLAGS=$CXXFLAGS
7695 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7696 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7697         #include <algorithm>
7698         #include <initializer_list>
7699         #include <vector>
7700         template<typename T> class S {
7701         private:
7702             std::vector<T> v_;
7703         public:
7704             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7705         };
7706         constinit S<int> s{3, 2, 1};
7707     ])], [
7708         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7709         AC_MSG_RESULT([yes])
7710     ], [AC_MSG_RESULT([no])])
7711 CXXFLAGS=$save_CXXFLAGS
7712 AC_LANG_POP([C++])
7714 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7715 AC_LANG_PUSH([C++])
7716 save_CXXFLAGS=$CXXFLAGS
7717 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7718 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7719         #include <span>
7720         #include <type_traits>
7721         // Don't check size_type directly, as it was called index_type before P1872R0:
7722         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7723     ])], [
7724         AC_DEFINE([HAVE_CPP_SPAN],[1])
7725         AC_MSG_RESULT([yes])
7726     ], [AC_MSG_RESULT([no])])
7727 CXXFLAGS=$save_CXXFLAGS
7728 AC_LANG_POP([C++])
7730 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7731 AC_LANG_PUSH([C++])
7732 save_CXXFLAGS=$CXXFLAGS
7733 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7734 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7735         struct S1 { S1(S1 &&); };
7736         struct S2: S1 {};
7737         S1 f(S2 s) { return s; }
7738     ])], [
7739         AC_DEFINE([HAVE_P1155R3],[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++20 std::atomic_ref])
7746 HAVE_CXX20_ATOMIC_REF=
7747 AC_LANG_PUSH([C++])
7748 save_CXXFLAGS=$CXXFLAGS
7749 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7751         #include <atomic>
7752         int x;
7753         std::atomic_ref<int> y(x);
7754     ])], [
7755         HAVE_CXX20_ATOMIC_REF=TRUE
7756         AC_MSG_RESULT([yes])
7757     ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7759 AC_LANG_POP([C++])
7760 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7762 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7763 dnl which is included in -Wextra anyway):
7764 HAVE_WDEPRECATED_COPY_DTOR=
7765 if test "$GCC" = yes; then
7766     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7767     AC_LANG_PUSH([C++])
7768     save_CXXFLAGS=$CXXFLAGS
7769     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7770     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7771             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7772             AC_MSG_RESULT([yes])
7773         ], [AC_MSG_RESULT([no])])
7774     CXXFLAGS=$save_CXXFLAGS
7775     AC_LANG_POP([C++])
7777 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7779 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7780 dnl uninitialized warning for code like
7782 dnl   OString f();
7783 dnl   boost::optional<OString> * g(bool b) {
7784 dnl       boost::optional<OString> o;
7785 dnl       if (b) o = f();
7786 dnl       return new boost::optional<OString>(o);
7787 dnl   }
7789 dnl (as is e.g. present, in a slightly more elaborate form, in
7790 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7791 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7792 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7793 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7794     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7795     AC_LANG_PUSH([C++])
7796     save_CXXFLAGS=$CXXFLAGS
7797     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7798     if test "$ENABLE_OPTIMIZED" = TRUE; then
7799         CXXFLAGS="$CXXFLAGS -O2"
7800     else
7801         CXXFLAGS="$CXXFLAGS -O0"
7802     fi
7803     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7804             #include <new>
7805             void f1(int);
7806             struct S1 {
7807                 ~S1() { f1(n); }
7808                 int n = 0;
7809             };
7810             struct S2 {
7811                 S2() {}
7812                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7813                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7814                 void set(S1 s) {
7815                     new (stg) S1(s);
7816                     init = true;
7817                 }
7818                 bool init = false;
7819                 char stg[sizeof (S1)];
7820             } ;
7821             S1 f2();
7822             S2 * f3(bool b) {
7823                 S2 o;
7824                 if (b) o.set(f2());
7825                 return new S2(o);
7826             }
7827         ]])], [AC_MSG_RESULT([no])], [
7828             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7829             AC_MSG_RESULT([yes])
7830         ])
7831     CXXFLAGS=$save_CXXFLAGS
7832     AC_LANG_POP([C++])
7834 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7836 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7837 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7838 dnl hits us e.g. with GCC 10 and --enable-optimized at
7840 dnl   In file included from include/rtl/string.hxx:49,
7841 dnl                    from include/rtl/ustring.hxx:43,
7842 dnl                    from include/osl/file.hxx:35,
7843 dnl                    from include/codemaker/global.hxx:28,
7844 dnl                    from include/codemaker/options.hxx:23,
7845 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7846 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7847 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,
7848 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,
7849 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,
7850 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7851 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7852 dnl      78 |         memcpy( buffer, data, length );
7853 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7854 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7855 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7856     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7857     AC_LANG_PUSH([C++])
7858     save_CXXFLAGS=$CXXFLAGS
7859     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7860     if test "$ENABLE_OPTIMIZED" = TRUE; then
7861         CXXFLAGS="$CXXFLAGS -O2"
7862     else
7863         CXXFLAGS="$CXXFLAGS -O0"
7864     fi
7865     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7866     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7867             void fill(char const * begin, char const * end, char c);
7868             struct q {
7869                 char ids[4];
7870                 char username[6];
7871             };
7872             void test(q & c) {
7873                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7874                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7875             }
7876         ]])], [AC_MSG_RESULT([no])], [
7877             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7878             AC_MSG_RESULT([yes])
7879         ])
7880     CXXFLAGS=$save_CXXFLAGS
7881     AC_LANG_POP([C++])
7883 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7885 HAVE_DLLEXPORTINLINES=
7886 if test "$_os" = "WINNT"; then
7887     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7888     AC_LANG_PUSH([C++])
7889     save_CXXFLAGS=$CXXFLAGS
7890     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7891     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7892             HAVE_DLLEXPORTINLINES=TRUE
7893             AC_MSG_RESULT([yes])
7894         ], [AC_MSG_RESULT([no])])
7895     CXXFLAGS=$save_CXXFLAGS
7896     AC_LANG_POP([C++])
7898 AC_SUBST([HAVE_DLLEXPORTINLINES])
7900 dnl ===================================================================
7901 dnl CPU Intrinsics support - SSE, AVX
7902 dnl ===================================================================
7904 CXXFLAGS_INTRINSICS_SSE2=
7905 CXXFLAGS_INTRINSICS_SSSE3=
7906 CXXFLAGS_INTRINSICS_SSE41=
7907 CXXFLAGS_INTRINSICS_SSE42=
7908 CXXFLAGS_INTRINSICS_AVX=
7909 CXXFLAGS_INTRINSICS_AVX2=
7910 CXXFLAGS_INTRINSICS_AVX512=
7911 CXXFLAGS_INTRINSICS_AVX512F=
7912 CXXFLAGS_INTRINSICS_F16C=
7913 CXXFLAGS_INTRINSICS_FMA=
7915 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7916     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7917     flag_sse2=-msse2
7918     flag_ssse3=-mssse3
7919     flag_sse41=-msse4.1
7920     flag_sse42=-msse4.2
7921     flag_avx=-mavx
7922     flag_avx2=-mavx2
7923     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7924     flag_avx512f=-mavx512f
7925     flag_f16c=-mf16c
7926     flag_fma=-mfma
7927 else
7928     # With MSVC using -arch is in fact not necessary for being able
7929     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7930     # even if compiled with -arch:AVX, the -arch option really only affects
7931     # instructions generated for C/C++ code.
7932     # So use the matching same (or lower) -arch options, but only in order
7933     # to generate the best matching instructions for the C++ code surrounding
7934     # the intrinsics.
7935     # SSE2 is the default for x86/x64, so no need to specify the option.
7936     flag_sse2=
7937     # No specific options for these, use the next lower.
7938     flag_ssse3="$flag_sse2"
7939     flag_sse41="$flag_sse2"
7940     flag_sse42="$flag_sse2"
7941     flag_avx=-arch:AVX
7942     flag_avx2=-arch:AVX2
7943     flag_avx512=-arch:AVX512
7944     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7945     flag_avx512f=-arch:AVX2
7946     # No MSVC options for these.
7947     flag_f16c="$flag_sse2"
7948     flag_fma="$flag_sse2"
7951 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7952 AC_LANG_PUSH([C++])
7953 save_CXXFLAGS=$CXXFLAGS
7954 CXXFLAGS="$CXXFLAGS $flag_sse2"
7955 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7956     #include <emmintrin.h>
7957     int main () {
7958         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7959         c = _mm_xor_si128 (a, b);
7960         return 0;
7961     }
7962     ])],
7963     [can_compile_sse2=yes],
7964     [can_compile_sse2=no])
7965 AC_LANG_POP([C++])
7966 CXXFLAGS=$save_CXXFLAGS
7967 AC_MSG_RESULT([${can_compile_sse2}])
7968 if test "${can_compile_sse2}" = "yes" ; then
7969     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7972 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7973 AC_LANG_PUSH([C++])
7974 save_CXXFLAGS=$CXXFLAGS
7975 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7976 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7977     #include <tmmintrin.h>
7978     int main () {
7979         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7980         c = _mm_maddubs_epi16 (a, b);
7981         return 0;
7982     }
7983     ])],
7984     [can_compile_ssse3=yes],
7985     [can_compile_ssse3=no])
7986 AC_LANG_POP([C++])
7987 CXXFLAGS=$save_CXXFLAGS
7988 AC_MSG_RESULT([${can_compile_ssse3}])
7989 if test "${can_compile_ssse3}" = "yes" ; then
7990     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7993 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7994 AC_LANG_PUSH([C++])
7995 save_CXXFLAGS=$CXXFLAGS
7996 CXXFLAGS="$CXXFLAGS $flag_sse41"
7997 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7998     #include <smmintrin.h>
7999     int main () {
8000         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8001         c = _mm_cmpeq_epi64 (a, b);
8002         return 0;
8003     }
8004     ])],
8005     [can_compile_sse41=yes],
8006     [can_compile_sse41=no])
8007 AC_LANG_POP([C++])
8008 CXXFLAGS=$save_CXXFLAGS
8009 AC_MSG_RESULT([${can_compile_sse41}])
8010 if test "${can_compile_sse41}" = "yes" ; then
8011     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8014 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8015 AC_LANG_PUSH([C++])
8016 save_CXXFLAGS=$CXXFLAGS
8017 CXXFLAGS="$CXXFLAGS $flag_sse42"
8018 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8019     #include <nmmintrin.h>
8020     int main () {
8021         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8022         c = _mm_cmpgt_epi64 (a, b);
8023         return 0;
8024     }
8025     ])],
8026     [can_compile_sse42=yes],
8027     [can_compile_sse42=no])
8028 AC_LANG_POP([C++])
8029 CXXFLAGS=$save_CXXFLAGS
8030 AC_MSG_RESULT([${can_compile_sse42}])
8031 if test "${can_compile_sse42}" = "yes" ; then
8032     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8035 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8036 AC_LANG_PUSH([C++])
8037 save_CXXFLAGS=$CXXFLAGS
8038 CXXFLAGS="$CXXFLAGS $flag_avx"
8039 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8040     #include <immintrin.h>
8041     int main () {
8042         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8043         c = _mm256_xor_ps(a, b);
8044         return 0;
8045     }
8046     ])],
8047     [can_compile_avx=yes],
8048     [can_compile_avx=no])
8049 AC_LANG_POP([C++])
8050 CXXFLAGS=$save_CXXFLAGS
8051 AC_MSG_RESULT([${can_compile_avx}])
8052 if test "${can_compile_avx}" = "yes" ; then
8053     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8056 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8057 AC_LANG_PUSH([C++])
8058 save_CXXFLAGS=$CXXFLAGS
8059 CXXFLAGS="$CXXFLAGS $flag_avx2"
8060 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8061     #include <immintrin.h>
8062     int main () {
8063         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8064         c = _mm256_maddubs_epi16(a, b);
8065         return 0;
8066     }
8067     ])],
8068     [can_compile_avx2=yes],
8069     [can_compile_avx2=no])
8070 AC_LANG_POP([C++])
8071 CXXFLAGS=$save_CXXFLAGS
8072 AC_MSG_RESULT([${can_compile_avx2}])
8073 if test "${can_compile_avx2}" = "yes" ; then
8074     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8077 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8078 AC_LANG_PUSH([C++])
8079 save_CXXFLAGS=$CXXFLAGS
8080 CXXFLAGS="$CXXFLAGS $flag_avx512"
8081 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8082     #include <immintrin.h>
8083     int main () {
8084         __m512i a = _mm512_loadu_si512(0);
8085         __m512d v1 = _mm512_load_pd(0);
8086         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8087         __m512d v2 = _mm512_abs_pd(v1);
8088         return 0;
8089     }
8090     ])],
8091     [can_compile_avx512=yes],
8092     [can_compile_avx512=no])
8093 AC_LANG_POP([C++])
8094 CXXFLAGS=$save_CXXFLAGS
8095 AC_MSG_RESULT([${can_compile_avx512}])
8096 if test "${can_compile_avx512}" = "yes" ; then
8097     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8098     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8101 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8102 AC_LANG_PUSH([C++])
8103 save_CXXFLAGS=$CXXFLAGS
8104 CXXFLAGS="$CXXFLAGS $flag_f16c"
8105 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8106     #include <immintrin.h>
8107     int main () {
8108         __m128i a = _mm_set1_epi32 (0);
8109         __m128 c;
8110         c = _mm_cvtph_ps(a);
8111         return 0;
8112     }
8113     ])],
8114     [can_compile_f16c=yes],
8115     [can_compile_f16c=no])
8116 AC_LANG_POP([C++])
8117 CXXFLAGS=$save_CXXFLAGS
8118 AC_MSG_RESULT([${can_compile_f16c}])
8119 if test "${can_compile_f16c}" = "yes" ; then
8120     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8123 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8124 AC_LANG_PUSH([C++])
8125 save_CXXFLAGS=$CXXFLAGS
8126 CXXFLAGS="$CXXFLAGS $flag_fma"
8127 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8128     #include <immintrin.h>
8129     int main () {
8130         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8131         d = _mm256_fmadd_ps(a, b, c);
8132         return 0;
8133     }
8134     ])],
8135     [can_compile_fma=yes],
8136     [can_compile_fma=no])
8137 AC_LANG_POP([C++])
8138 CXXFLAGS=$save_CXXFLAGS
8139 AC_MSG_RESULT([${can_compile_fma}])
8140 if test "${can_compile_fma}" = "yes" ; then
8141     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8144 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8145 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8146 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8147 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8148 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8149 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8150 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8151 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8152 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8153 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8155 dnl ===================================================================
8156 dnl system stl sanity tests
8157 dnl ===================================================================
8158 if test "$_os" != "WINNT"; then
8160     AC_LANG_PUSH([C++])
8162     save_CPPFLAGS="$CPPFLAGS"
8163     if test -n "$MACOSX_SDK_PATH"; then
8164         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8165     fi
8167     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8168     # only.
8169     if test "$CPP_LIBRARY" = GLIBCXX; then
8170         dnl gcc#19664, gcc#22482, rhbz#162935
8171         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8172         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8173         AC_MSG_RESULT([$stlvisok])
8174         if test "$stlvisok" = "no"; then
8175             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8176         fi
8177     fi
8179     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8180     # when we don't make any dynamic libraries?
8181     if test "$DISABLE_DYNLOADING" = ""; then
8182         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8183         cat > conftestlib1.cc <<_ACEOF
8184 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8185 struct S2: S1<int> { virtual ~S2(); };
8186 S2::~S2() {}
8187 _ACEOF
8188         cat > conftestlib2.cc <<_ACEOF
8189 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8190 struct S2: S1<int> { virtual ~S2(); };
8191 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8192 _ACEOF
8193         gccvisinlineshiddenok=yes
8194         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8195             gccvisinlineshiddenok=no
8196         else
8197             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8198             dnl known to not work with -z defs (unsetting which makes the test
8199             dnl moot, though):
8200             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8201             if test "$COM_IS_CLANG" = TRUE; then
8202                 for i in $CXX $CXXFLAGS; do
8203                     case $i in
8204                     -fsanitize=*)
8205                         my_linkflagsnoundefs=
8206                         break
8207                         ;;
8208                     esac
8209                 done
8210             fi
8211             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8212                 gccvisinlineshiddenok=no
8213             fi
8214         fi
8216         rm -fr libconftest*
8217         AC_MSG_RESULT([$gccvisinlineshiddenok])
8218         if test "$gccvisinlineshiddenok" = "no"; then
8219             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8220         fi
8221     fi
8223    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8224     cat >visibility.cxx <<_ACEOF
8225 #pragma GCC visibility push(hidden)
8226 struct __attribute__ ((visibility ("default"))) TestStruct {
8227   static void Init();
8229 __attribute__ ((visibility ("default"))) void TestFunc() {
8230   TestStruct::Init();
8232 _ACEOF
8233     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8234         gccvisbroken=yes
8235     else
8236         case "$host_cpu" in
8237         i?86|x86_64)
8238             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8239                 gccvisbroken=no
8240             else
8241                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8242                     gccvisbroken=no
8243                 else
8244                     gccvisbroken=yes
8245                 fi
8246             fi
8247             ;;
8248         *)
8249             gccvisbroken=no
8250             ;;
8251         esac
8252     fi
8253     rm -f visibility.s visibility.cxx
8255     AC_MSG_RESULT([$gccvisbroken])
8256     if test "$gccvisbroken" = "yes"; then
8257         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8258     fi
8260     CPPFLAGS="$save_CPPFLAGS"
8262     AC_MSG_CHECKING([if CET endbranch is recognized])
8263 cat > endbr.s <<_ACEOF
8264 endbr32
8265 _ACEOF
8266     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8267     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8268         AC_MSG_RESULT([yes])
8269         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8270     else
8271         AC_MSG_RESULT([no])
8272     fi
8273     rm -f endbr.s endbr.o
8274     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8276     AC_LANG_POP([C++])
8279 dnl ===================================================================
8280 dnl  Clang++ tests
8281 dnl ===================================================================
8283 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8284 if test "$GCC" = "yes"; then
8285     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8286     AC_LANG_PUSH([C++])
8287     save_CXXFLAGS=$CXXFLAGS
8288     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8289     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8290     CXXFLAGS=$save_CXXFLAGS
8291     AC_LANG_POP([C++])
8292     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8293         AC_MSG_RESULT([yes])
8294     else
8295         AC_MSG_RESULT([no])
8296     fi
8298 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8300 dnl ===================================================================
8301 dnl Compiler plugins
8302 dnl ===================================================================
8304 COMPILER_PLUGINS=
8305 # currently only Clang
8307 if test "$COM_IS_CLANG" != "TRUE"; then
8308     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8309         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8310         enable_compiler_plugins=no
8311     fi
8314 COMPILER_PLUGINS_COM_IS_CLANG=
8315 if test "$COM_IS_CLANG" = "TRUE"; then
8316     if test -n "$enable_compiler_plugins"; then
8317         compiler_plugins="$enable_compiler_plugins"
8318     elif test -n "$ENABLE_DBGUTIL"; then
8319         compiler_plugins=test
8320     else
8321         compiler_plugins=no
8322     fi
8323     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8324         if test "$CLANGVER" -lt 120001; then
8325             if test "$compiler_plugins" = yes; then
8326                 AC_MSG_ERROR(
8327                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8328             else
8329                 compiler_plugins=no
8330             fi
8331         fi
8332     fi
8333     if test "$compiler_plugins" != "no"; then
8334         dnl The prefix where Clang resides, override to where Clang resides if
8335         dnl using a source build:
8336         if test -z "$CLANGDIR"; then
8337             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8338         fi
8339         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8340         if test -z "$COMPILER_PLUGINS_CXX"; then
8341             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8342         fi
8343         clangbindir=$CLANGDIR/bin
8344         if test "$build_os" = "cygwin"; then
8345             clangbindir=$(cygpath -u "$clangbindir")
8346         fi
8347         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8348         if test -n "$LLVM_CONFIG"; then
8349             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8350             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8351             if test -z "$CLANGLIBDIR"; then
8352                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8353             fi
8354             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8355             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8356             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8357                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8358                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8359                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8360                 fi
8361             fi
8362             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8363             clangobjdir=$($LLVM_CONFIG --obj-root)
8364             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8365                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8366             fi
8367         fi
8368         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8369         AC_LANG_PUSH([C++])
8370         save_CXX=$CXX
8371         save_CXXCPP=$CXXCPP
8372         save_CPPFLAGS=$CPPFLAGS
8373         save_CXXFLAGS=$CXXFLAGS
8374         save_LDFLAGS=$LDFLAGS
8375         save_LIBS=$LIBS
8376         CXX=$COMPILER_PLUGINS_CXX
8377         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8378         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8379         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8380         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8381             [COMPILER_PLUGINS=TRUE],
8382             [
8383             if test "$compiler_plugins" = "yes"; then
8384                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8385             else
8386                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8387                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8388             fi
8389             ])
8390         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8391         dnl comment in compilerplugins/Makefile-clang.mk:
8392         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8393             LDFLAGS=""
8394             AC_MSG_CHECKING([for clang libraries to use])
8395             if test -z "$CLANGTOOLLIBS"; then
8396                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8397                 AC_LINK_IFELSE([
8398                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8399                         [[ clang::FullSourceLoc().dump(); ]])
8400                 ],[CLANGTOOLLIBS="$LIBS"],[])
8401             fi
8402             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8403             dnl list of individual -lclang* (but note that that list can become outdated over time,
8404             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8405             dnl needs to include -lclangSupport now"):
8406             if test -z "$CLANGTOOLLIBS"; then
8407                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8408  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8409                 AC_LINK_IFELSE([
8410                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8411                         [[ clang::FullSourceLoc().dump(); ]])
8412                 ],[CLANGTOOLLIBS="$LIBS"],[])
8413             fi
8414             AC_MSG_RESULT([$CLANGTOOLLIBS])
8415             if test -z "$CLANGTOOLLIBS"; then
8416                 if test "$compiler_plugins" = "yes"; then
8417                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8418                 else
8419                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8420                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8421                 fi
8422                 COMPILER_PLUGINS=
8423             fi
8424             if test -n "$COMPILER_PLUGINS"; then
8425                 if test -z "$CLANGSYSINCLUDE"; then
8426                     if test -n "$LLVM_CONFIG"; then
8427                         # Path to the clang system headers (no idea if there's a better way to get it).
8428                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8429                     fi
8430                 fi
8431             fi
8432         fi
8433         CXX=$save_CXX
8434         CXXCPP=$save_CXXCPP
8435         CPPFLAGS=$save_CPPFLAGS
8436         CXXFLAGS=$save_CXXFLAGS
8437         LDFLAGS=$save_LDFLAGS
8438         LIBS="$save_LIBS"
8439         AC_LANG_POP([C++])
8441         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8442         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8443             #ifndef __clang__
8444             you lose
8445             #endif
8446             int foo=42;
8447             ]])],
8448             [AC_MSG_RESULT([yes])
8449              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8450             [AC_MSG_RESULT([no])])
8451         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8452     fi
8453 else
8454     if test "$enable_compiler_plugins" = "yes"; then
8455         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8456     fi
8458 COMPILER_PLUGINS_ANALYZER_PCH=
8459 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8460     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8462 AC_SUBST(COMPILER_PLUGINS)
8463 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8464 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8465 AC_SUBST(COMPILER_PLUGINS_CXX)
8466 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8467 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8468 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8469 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8470 AC_SUBST(CLANGDIR)
8471 AC_SUBST(CLANGLIBDIR)
8472 AC_SUBST(CLANGTOOLLIBS)
8473 AC_SUBST(CLANGSYSINCLUDE)
8475 # Plugin to help linker.
8476 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8477 # This makes --enable-lto build with clang work.
8478 AC_SUBST(LD_PLUGIN)
8480 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8481 AC_SUBST(HAVE_POSIX_FALLOCATE)
8483 JITC_PROCESSOR_TYPE=""
8484 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8485     # IBMs JDK needs this...
8486     JITC_PROCESSOR_TYPE=6
8487     export JITC_PROCESSOR_TYPE
8489 AC_SUBST([JITC_PROCESSOR_TYPE])
8491 # Misc Windows Stuff
8492 AC_ARG_WITH(ucrt-dir,
8493     AS_HELP_STRING([--with-ucrt-dir],
8494         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8495         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8496         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8497             Windows6.1-KB2999226-x64.msu
8498             Windows6.1-KB2999226-x86.msu
8499             Windows8.1-KB2999226-x64.msu
8500             Windows8.1-KB2999226-x86.msu
8501             Windows8-RT-KB2999226-x64.msu
8502             Windows8-RT-KB2999226-x86.msu
8503         A zip archive including those files is available from Microsoft site:
8504         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8507 UCRT_REDISTDIR="$with_ucrt_dir"
8508 if test $_os = "WINNT"; then
8509     find_msvc_x64_dlls
8510     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8511     MSVC_DLLS="$msvcdlls"
8512     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8513         with_redist=143
8514     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8515         with_redist=142
8516     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8517         with_redist=141
8518     fi
8519     for i in $PKGFORMAT; do
8520         if test "$i" = msi; then
8521             find_msms "$with_redist"
8522             if test -n "$msmdir"; then
8523                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8524                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8525             fi
8526             break
8527         fi
8528     done
8530     if test "$UCRT_REDISTDIR" = "no"; then
8531         dnl explicitly disabled
8532         UCRT_REDISTDIR=""
8533     else
8534         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8535                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8536                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8537                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8538                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8539                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8540             UCRT_REDISTDIR=""
8541             if test -n "$PKGFORMAT"; then
8542                for i in $PKGFORMAT; do
8543                    case "$i" in
8544                    msi)
8545                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8546                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8547                        ;;
8548                    esac
8549                done
8550             fi
8551         fi
8552     fi
8555 AC_SUBST(UCRT_REDISTDIR)
8556 AC_SUBST(MSVC_DLL_PATH)
8557 AC_SUBST(MSVC_DLLS)
8558 AC_SUBST(MSM_PATH)
8561 dnl ===================================================================
8562 dnl Checks for Java
8563 dnl ===================================================================
8564 if test "$ENABLE_JAVA" != ""; then
8566     # Windows-specific tests
8567     if test "$build_os" = "cygwin"; then
8568         if test -z "$with_jdk_home"; then
8569             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8570             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8571             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8572             if test -n "$regvalue"; then
8573                 ver=$regvalue
8574                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8575                 with_jdk_home=$regvalue
8576             fi
8577             howfound="found automatically"
8578         else
8579             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8580             howfound="you passed"
8581         fi
8583         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8584             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])
8585         fi
8586     fi
8588     # 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.
8589     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8590     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8591         with_jdk_home=`/usr/libexec/java_home`
8592     fi
8594     JAVA_HOME=; export JAVA_HOME
8595     if test -z "$with_jdk_home"; then
8596         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8597     else
8598         _java_path="$with_jdk_home/bin/$with_java"
8599         dnl Check if there is a Java interpreter at all.
8600         if test -x "$_java_path"; then
8601             JAVAINTERPRETER=$_java_path
8602         else
8603             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8604         fi
8605     fi
8607     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8608     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8609     dnl loaded by java to run JunitTests:
8610     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8611         shortjdkhome=`cygpath -d "$with_jdk_home"`
8612         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
8613             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8614             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8615         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
8616             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8617             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8618         fi
8620         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8621             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8622         fi
8623         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8624     elif test "$cross_compiling" != "yes"; then
8625         case $CPUNAME in
8626             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8627                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8628                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8629                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8630                 fi
8631                 ;;
8632             *) # assumption: everything else 32-bit
8633                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8634                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8635                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8636                 fi
8637                 ;;
8638         esac
8639     fi
8642 dnl ===================================================================
8643 dnl Checks for JDK.
8644 dnl ===================================================================
8646 # Whether all the complexity here actually is needed any more or not, no idea.
8648 JDK_SECURITYMANAGER_DISALLOWED=
8649 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8650     _gij_longver=0
8651     AC_MSG_CHECKING([the installed JDK])
8652     if test -n "$JAVAINTERPRETER"; then
8653         dnl java -version sends output to stderr!
8654         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8655             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8656         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8657             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8658         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8659             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8660         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8661             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8662         else
8663             JDK=sun
8665             dnl Sun JDK specific tests
8666             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8667             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8669             if test "$_jdk_ver" -lt 10900; then
8670                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8671             fi
8672             if test "$_jdk_ver" -gt 10900; then
8673                 JAVA_CLASSPATH_NOT_SET=TRUE
8674             fi
8675             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8676             dnl completely removed in some Java version > 18 (see
8677             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8678             if test "$_jdk_ver" -ge 180000; then
8679                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8680             fi
8682             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8683             if test "$_os" = "WINNT"; then
8684                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8685             fi
8686             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8688             # set to limit VM usage for JunitTests
8689             JAVAIFLAGS=-Xmx64M
8690             # set to limit VM usage for javac
8691             JAVACFLAGS=-J-Xmx128M
8692         fi
8693     else
8694         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8695     fi
8696 else
8697     if test -z "$ENABLE_JAVA"; then
8698         dnl Java disabled
8699         JAVA_HOME=
8700         export JAVA_HOME
8701     elif test "$cross_compiling" = "yes"; then
8702         # Just assume compatibility of build and host JDK
8703         JDK=$JDK_FOR_BUILD
8704         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8705     fi
8708 dnl ===================================================================
8709 dnl Checks for javac
8710 dnl ===================================================================
8711 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8712     javacompiler="javac"
8713     : ${JAVA_SOURCE_VER=8}
8714     : ${JAVA_TARGET_VER=8}
8715     if test -z "$with_jdk_home"; then
8716         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8717     else
8718         _javac_path="$with_jdk_home/bin/$javacompiler"
8719         dnl Check if there is a Java compiler at all.
8720         if test -x "$_javac_path"; then
8721             JAVACOMPILER=$_javac_path
8722         fi
8723     fi
8724     if test -z "$JAVACOMPILER"; then
8725         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8726     fi
8727     if test "$build_os" = "cygwin"; then
8728         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8729             JAVACOMPILER="${JAVACOMPILER}.exe"
8730         fi
8731         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8732     fi
8735 dnl ===================================================================
8736 dnl Checks for javadoc
8737 dnl ===================================================================
8738 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8739     if test -z "$with_jdk_home"; then
8740         AC_PATH_PROG(JAVADOC, javadoc)
8741     else
8742         _javadoc_path="$with_jdk_home/bin/javadoc"
8743         dnl Check if there is a javadoc at all.
8744         if test -x "$_javadoc_path"; then
8745             JAVADOC=$_javadoc_path
8746         else
8747             AC_PATH_PROG(JAVADOC, javadoc)
8748         fi
8749     fi
8750     if test -z "$JAVADOC"; then
8751         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8752     fi
8753     if test "$build_os" = "cygwin"; then
8754         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8755             JAVADOC="${JAVADOC}.exe"
8756         fi
8757         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8758     fi
8760     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8761     JAVADOCISGJDOC="yes"
8762     fi
8764 AC_SUBST(JAVADOC)
8765 AC_SUBST(JAVADOCISGJDOC)
8767 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8768     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8769     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8770         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8771            # try to recover first by looking whether we have an alternative
8772            # system as in Debian or newer SuSEs where following /usr/bin/javac
8773            # over /etc/alternatives/javac leads to the right bindir where we
8774            # just need to strip a bit away to get a valid JAVA_HOME
8775            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8776         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8777             # maybe only one level of symlink (e.g. on Mac)
8778             JAVA_HOME=$(readlink $JAVACOMPILER)
8779             if test "$(dirname $JAVA_HOME)" = "."; then
8780                 # we've got no path to trim back
8781                 JAVA_HOME=""
8782             fi
8783         else
8784             # else warn
8785             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8786             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8787             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8788             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8789         fi
8790         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8791         if test "$JAVA_HOME" != "/usr"; then
8792             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8793                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8794                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8795                 dnl Tiger already returns a JDK path...
8796                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8797             else
8798                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8799                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8800                 dnl that checks which version to run
8801                 if test -f "$JAVA_HOME"; then
8802                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8803                 fi
8804             fi
8805         fi
8806     fi
8807     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8809     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8810     if test -z "$JAVA_HOME"; then
8811         if test "x$with_jdk_home" = "x"; then
8812             cat > findhome.java <<_ACEOF
8813 [import java.io.File;
8815 class findhome
8817     public static void main(String args[])
8818     {
8819         String jrelocation = System.getProperty("java.home");
8820         File jre = new File(jrelocation);
8821         System.out.println(jre.getParent());
8822     }
8824 _ACEOF
8825             AC_MSG_CHECKING([if javac works])
8826             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8827             AC_TRY_EVAL(javac_cmd)
8828             if test $? = 0 -a -f ./findhome.class; then
8829                 AC_MSG_RESULT([javac works])
8830             else
8831                 echo "configure: javac test failed" >&5
8832                 cat findhome.java >&5
8833                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8834             fi
8835             AC_MSG_CHECKING([if gij knows its java.home])
8836             JAVA_HOME=`$JAVAINTERPRETER findhome`
8837             if test $? = 0 -a "$JAVA_HOME" != ""; then
8838                 AC_MSG_RESULT([$JAVA_HOME])
8839             else
8840                 echo "configure: java test failed" >&5
8841                 cat findhome.java >&5
8842                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8843             fi
8844             # clean-up after ourselves
8845             rm -f ./findhome.java ./findhome.class
8846         else
8847             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8848         fi
8849     fi
8851     # now check if $JAVA_HOME is really valid
8852     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8853         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8854             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8855             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8856             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8857             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8858             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8859             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8860         fi
8861     fi
8862     PathFormat "$JAVA_HOME"
8863     JAVA_HOME="$formatted_path"
8866 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8867     "$_os" != Darwin
8868 then
8869     AC_MSG_CHECKING([for JAWT lib])
8870     if test "$_os" = WINNT; then
8871         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8872         JAWTLIB=jawt.lib
8873     else
8874         case "$host_cpu" in
8875         arm*)
8876             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8877             JAVA_ARCH=$my_java_arch
8878             ;;
8879         i*86)
8880             my_java_arch=i386
8881             ;;
8882         m68k)
8883             my_java_arch=m68k
8884             ;;
8885         powerpc)
8886             my_java_arch=ppc
8887             ;;
8888         powerpc64)
8889             my_java_arch=ppc64
8890             ;;
8891         powerpc64le)
8892             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8893             JAVA_ARCH=$my_java_arch
8894             ;;
8895         sparc64)
8896             my_java_arch=sparcv9
8897             ;;
8898         x86_64)
8899             my_java_arch=amd64
8900             ;;
8901         *)
8902             my_java_arch=$host_cpu
8903             ;;
8904         esac
8905         # This is where JDK9 puts the library
8906         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8907             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8908         else
8909             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8910         fi
8911         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8912     fi
8913     AC_MSG_RESULT([$JAWTLIB])
8915 AC_SUBST(JAWTLIB)
8917 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8918     case "$host_os" in
8920     aix*)
8921         JAVAINC="-I$JAVA_HOME/include"
8922         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8923         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8924         ;;
8926     cygwin*|wsl*)
8927         JAVAINC="-I$JAVA_HOME/include/win32"
8928         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8929         ;;
8931     darwin*)
8932         if test -d "$JAVA_HOME/include/darwin"; then
8933             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8934         else
8935             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8936         fi
8937         ;;
8939     dragonfly*)
8940         JAVAINC="-I$JAVA_HOME/include"
8941         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8942         ;;
8944     freebsd*)
8945         JAVAINC="-I$JAVA_HOME/include"
8946         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8947         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8948         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8949         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8950         ;;
8952     k*bsd*-gnu*)
8953         JAVAINC="-I$JAVA_HOME/include"
8954         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8955         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8956         ;;
8958     linux-gnu*)
8959         JAVAINC="-I$JAVA_HOME/include"
8960         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8961         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8962         ;;
8964     *netbsd*)
8965         JAVAINC="-I$JAVA_HOME/include"
8966         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8967         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8968        ;;
8970     openbsd*)
8971         JAVAINC="-I$JAVA_HOME/include"
8972         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8973         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8974         ;;
8976     solaris*)
8977         JAVAINC="-I$JAVA_HOME/include"
8978         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8979         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8980         ;;
8981     esac
8983 SOLARINC="$SOLARINC $JAVAINC"
8985 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8986     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8987     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8988     JDK_FOR_BUILD=$JDK
8989     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8992 AC_SUBST(JAVACFLAGS)
8993 AC_SUBST(JAVACOMPILER)
8994 AC_SUBST(JAVAINTERPRETER)
8995 AC_SUBST(JAVAIFLAGS)
8996 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8997 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8998 AC_SUBST(JAVA_HOME)
8999 AC_SUBST(JAVA_HOME_FOR_BUILD)
9000 AC_SUBST(JDK)
9001 AC_SUBST(JDK_FOR_BUILD)
9002 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9003 AC_SUBST(JAVA_SOURCE_VER)
9004 AC_SUBST(JAVA_TARGET_VER)
9007 dnl ===================================================================
9008 dnl Export file validation
9009 dnl ===================================================================
9010 AC_MSG_CHECKING([whether to enable export file validation])
9011 if test "$with_export_validation" != "no"; then
9012     if test -z "$ENABLE_JAVA"; then
9013         if test "$with_export_validation" = "yes"; then
9014             AC_MSG_ERROR([requested, but Java is disabled])
9015         else
9016             AC_MSG_RESULT([no, as Java is disabled])
9017         fi
9018     elif ! test -d "${SRC_ROOT}/schema"; then
9019         if test "$with_export_validation" = "yes"; then
9020             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9021         else
9022             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9023         fi
9024     else
9025         AC_MSG_RESULT([yes])
9026         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9028         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9029         if test -z "$ODFVALIDATOR"; then
9030             # remember to download the ODF toolkit with validator later
9031             AC_MSG_NOTICE([no odfvalidator found, will download it])
9032             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9033             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9035             # and fetch name of odfvalidator jar name from download.lst
9036             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9037             AC_SUBST(ODFVALIDATOR_JAR)
9039             if test -z "$ODFVALIDATOR_JAR"; then
9040                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9041             fi
9042         fi
9043         if test "$build_os" = "cygwin"; then
9044             # In case of Cygwin it will be executed from Windows,
9045             # so we need to run bash and absolute path to validator
9046             # so instead of "odfvalidator" it will be
9047             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9048             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9049         else
9050             ODFVALIDATOR="sh $ODFVALIDATOR"
9051         fi
9052         AC_SUBST(ODFVALIDATOR)
9055         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9056         if test -z "$OFFICEOTRON"; then
9057             # remember to download the officeotron with validator later
9058             AC_MSG_NOTICE([no officeotron found, will download it])
9059             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9060             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9062             # and fetch name of officeotron jar name from download.lst
9063             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9064             AC_SUBST(OFFICEOTRON_JAR)
9066             if test -z "$OFFICEOTRON_JAR"; then
9067                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9068             fi
9069         else
9070             # check version of existing officeotron
9071             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9072             if test 0"$OFFICEOTRON_VER" -lt 704; then
9073                 AC_MSG_ERROR([officeotron too old])
9074             fi
9075         fi
9076         if test "$build_os" = "cygwin"; then
9077             # In case of Cygwin it will be executed from Windows,
9078             # so we need to run bash and absolute path to validator
9079             # so instead of "odfvalidator" it will be
9080             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9081             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9082         else
9083             OFFICEOTRON="sh $OFFICEOTRON"
9084         fi
9085     fi
9086     AC_SUBST(OFFICEOTRON)
9087 else
9088     AC_MSG_RESULT([no])
9091 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9092 if test "$with_bffvalidator" != "no"; then
9093     AC_DEFINE(HAVE_BFFVALIDATOR)
9095     if test "$with_export_validation" = "no"; then
9096         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9097     fi
9099     if test "$with_bffvalidator" = "yes"; then
9100         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9101     else
9102         BFFVALIDATOR="$with_bffvalidator"
9103     fi
9105     if test "$build_os" = "cygwin"; then
9106         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9107             AC_MSG_RESULT($BFFVALIDATOR)
9108         else
9109             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9110         fi
9111     elif test -n "$BFFVALIDATOR"; then
9112         # We are not in Cygwin but need to run Windows binary with wine
9113         AC_PATH_PROGS(WINE, wine)
9115         # so swap in a shell wrapper that converts paths transparently
9116         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9117         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9118         AC_SUBST(BFFVALIDATOR_EXE)
9119         AC_MSG_RESULT($BFFVALIDATOR)
9120     else
9121         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9122     fi
9123     AC_SUBST(BFFVALIDATOR)
9124 else
9125     AC_MSG_RESULT([no])
9128 dnl ===================================================================
9129 dnl Check for epm (not needed for Windows)
9130 dnl ===================================================================
9131 AC_MSG_CHECKING([whether to enable EPM for packing])
9132 if test "$enable_epm" = "yes"; then
9133     AC_MSG_RESULT([yes])
9134     if test "$_os" != "WINNT"; then
9135         if test $_os = Darwin; then
9136             EPM=internal
9137         elif test -n "$with_epm"; then
9138             EPM=$with_epm
9139         else
9140             AC_PATH_PROG(EPM, epm, no)
9141         fi
9142         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9143             AC_MSG_NOTICE([EPM will be built.])
9144             BUILD_TYPE="$BUILD_TYPE EPM"
9145             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9146         else
9147             # Gentoo has some epm which is something different...
9148             AC_MSG_CHECKING([whether the found epm is the right epm])
9149             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9150                 AC_MSG_RESULT([yes])
9151             else
9152                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9153             fi
9154             AC_MSG_CHECKING([epm version])
9155             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9156             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9157                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9158                 AC_MSG_RESULT([OK, >= 3.7])
9159             else
9160                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9161                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9162             fi
9163         fi
9164     fi
9166     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9167         AC_MSG_CHECKING([for rpm])
9168         for a in "$RPM" rpmbuild rpm; do
9169             $a --usage >/dev/null 2> /dev/null
9170             if test $? -eq 0; then
9171                 RPM=$a
9172                 break
9173             else
9174                 $a --version >/dev/null 2> /dev/null
9175                 if test $? -eq 0; then
9176                     RPM=$a
9177                     break
9178                 fi
9179             fi
9180         done
9181         if test -z "$RPM"; then
9182             AC_MSG_ERROR([not found])
9183         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9184             RPM_PATH=`which $RPM`
9185             AC_MSG_RESULT([$RPM_PATH])
9186             SCPDEFS="$SCPDEFS -DWITH_RPM"
9187         else
9188             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9189         fi
9190     fi
9191     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9192         AC_PATH_PROG(DPKG, dpkg, no)
9193         if test "$DPKG" = "no"; then
9194             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9195         fi
9196     fi
9197     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9198        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9199         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9200             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9201                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9202                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9203                     AC_MSG_RESULT([yes])
9204                 else
9205                     AC_MSG_RESULT([no])
9206                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9207                         _pt="rpm"
9208                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9209                         add_warning "the rpms will need to be installed with --nodeps"
9210                     else
9211                         _pt="pkg"
9212                     fi
9213                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9214                     add_warning "the ${_pt}s will not be relocatable"
9215                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9216                                  relocation will work, you need to patch your epm with the
9217                                  patch in epm/epm-3.7.patch or build with
9218                                  --with-epm=internal which will build a suitable epm])
9219                 fi
9220             fi
9221         fi
9222     fi
9223     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9224         AC_PATH_PROG(PKGMK, pkgmk, no)
9225         if test "$PKGMK" = "no"; then
9226             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9227         fi
9228     fi
9229     AC_SUBST(RPM)
9230     AC_SUBST(DPKG)
9231     AC_SUBST(PKGMK)
9232 else
9233     for i in $PKGFORMAT; do
9234         case "$i" in
9235         aix | bsd | deb | pkg | rpm | native | portable)
9236             AC_MSG_ERROR(
9237                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9238             ;;
9239         esac
9240     done
9241     AC_MSG_RESULT([no])
9242     EPM=NO
9244 AC_SUBST(EPM)
9246 ENABLE_LWP=
9247 if test "$enable_lotuswordpro" = "yes"; then
9248     ENABLE_LWP="TRUE"
9250 AC_SUBST(ENABLE_LWP)
9252 dnl ===================================================================
9253 dnl Check for building ODK
9254 dnl ===================================================================
9255 AC_MSG_CHECKING([whether to build the ODK])
9256 if test "$enable_odk" = yes; then
9257     if test "$DISABLE_DYNLOADING" = TRUE; then
9258         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9259     fi
9260     AC_MSG_RESULT([yes])
9261     BUILD_TYPE="$BUILD_TYPE ODK"
9262 else
9263     AC_MSG_RESULT([no])
9266 if test "$enable_odk" != yes; then
9267     unset DOXYGEN
9268 else
9269     if test "$with_doxygen" = no; then
9270         AC_MSG_CHECKING([for doxygen])
9271         unset DOXYGEN
9272         AC_MSG_RESULT([no])
9273     else
9274         if test "$with_doxygen" = yes; then
9275             AC_PATH_PROG([DOXYGEN], [doxygen])
9276             if test -z "$DOXYGEN"; then
9277                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9278             fi
9279             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9280                 if ! dot -V 2>/dev/null; then
9281                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9282                 fi
9283             fi
9284         else
9285             AC_MSG_CHECKING([for doxygen])
9286             DOXYGEN=$with_doxygen
9287             AC_MSG_RESULT([$DOXYGEN])
9288         fi
9289         if test -n "$DOXYGEN"; then
9290             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9291             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9292             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9293                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9294             fi
9295         fi
9296     fi
9298 AC_SUBST([DOXYGEN])
9300 dnl ==================================================================
9301 dnl libfuzzer
9302 dnl ==================================================================
9303 AC_MSG_CHECKING([whether to enable fuzzers])
9304 if test "$enable_fuzzers" != yes; then
9305     AC_MSG_RESULT([no])
9306 else
9307     if test -z $LIB_FUZZING_ENGINE; then
9308       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9309     fi
9310     AC_MSG_RESULT([yes])
9311     ENABLE_FUZZERS="TRUE"
9312     AC_DEFINE([ENABLE_FUZZERS],1)
9313     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9314     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9316 AC_SUBST(LIB_FUZZING_ENGINE)
9318 dnl ===================================================================
9319 dnl Check for system zlib
9320 dnl ===================================================================
9321 if test "$with_system_zlib" = "auto"; then
9322     case "$_os" in
9323     WINNT)
9324         with_system_zlib="$with_system_libs"
9325         ;;
9326     *)
9327         if test "$enable_fuzzers" != "yes"; then
9328             with_system_zlib=yes
9329         else
9330             with_system_zlib=no
9331         fi
9332         ;;
9333     esac
9336 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9337 dnl and has no pkg-config for it at least on some tinderboxes,
9338 dnl so leaving that out for now
9339 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9340 AC_MSG_CHECKING([which zlib to use])
9341 if test "$with_system_zlib" = "yes"; then
9342     AC_MSG_RESULT([external])
9343     SYSTEM_ZLIB=TRUE
9344     AC_CHECK_HEADER(zlib.h, [],
9345         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9346     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9347         [AC_MSG_ERROR(zlib not found or functional)], [])
9348 else
9349     AC_MSG_RESULT([internal])
9350     SYSTEM_ZLIB=
9351     BUILD_TYPE="$BUILD_TYPE ZLIB"
9352     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9353     if test "$COM" = "MSC"; then
9354         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9355     else
9356         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9357     fi
9359 AC_SUBST(ZLIB_CFLAGS)
9360 AC_SUBST(ZLIB_LIBS)
9361 AC_SUBST(SYSTEM_ZLIB)
9363 dnl ===================================================================
9364 dnl Check for system jpeg
9365 dnl ===================================================================
9366 AC_MSG_CHECKING([which libjpeg to use])
9367 if test "$with_system_jpeg" = "yes"; then
9368     AC_MSG_RESULT([external])
9369     SYSTEM_LIBJPEG=TRUE
9370     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9371         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9372     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9373         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9374 else
9375     SYSTEM_LIBJPEG=
9376     AC_MSG_RESULT([internal, libjpeg-turbo])
9377     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9379     case "$host_cpu" in
9380     x86_64 | amd64 | i*86 | x86 | ia32)
9381         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9382         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9383             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9384                 NASM="$LODE_HOME/opt/bin/nasm"
9385             elif test -x "/opt/lo/bin/nasm"; then
9386                 NASM="/opt/lo/bin/nasm"
9387             fi
9388         fi
9390         if test -n "$NASM"; then
9391             AC_MSG_CHECKING([for object file format of host system])
9392             case "$host_os" in
9393               cygwin* | mingw* | pw32* | wsl*)
9394                 case "$host_cpu" in
9395                   x86_64)
9396                     objfmt='Win64-COFF'
9397                     ;;
9398                   *)
9399                     objfmt='Win32-COFF'
9400                     ;;
9401                 esac
9402               ;;
9403               msdosdjgpp* | go32*)
9404                 objfmt='COFF'
9405               ;;
9406               os2-emx*) # not tested
9407                 objfmt='MSOMF' # obj
9408               ;;
9409               linux*coff* | linux*oldld*)
9410                 objfmt='COFF' # ???
9411               ;;
9412               linux*aout*)
9413                 objfmt='a.out'
9414               ;;
9415               linux*)
9416                 case "$host_cpu" in
9417                   x86_64)
9418                     objfmt='ELF64'
9419                     ;;
9420                   *)
9421                     objfmt='ELF'
9422                     ;;
9423                 esac
9424               ;;
9425               kfreebsd* | freebsd* | netbsd* | openbsd*)
9426                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9427                   objfmt='BSD-a.out'
9428                 else
9429                   case "$host_cpu" in
9430                     x86_64 | amd64)
9431                       objfmt='ELF64'
9432                       ;;
9433                     *)
9434                       objfmt='ELF'
9435                       ;;
9436                   esac
9437                 fi
9438               ;;
9439               solaris* | sunos* | sysv* | sco*)
9440                 case "$host_cpu" in
9441                   x86_64)
9442                     objfmt='ELF64'
9443                     ;;
9444                   *)
9445                     objfmt='ELF'
9446                     ;;
9447                 esac
9448               ;;
9449               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9450                 case "$host_cpu" in
9451                   x86_64)
9452                     objfmt='Mach-O64'
9453                     ;;
9454                   *)
9455                     objfmt='Mach-O'
9456                     ;;
9457                 esac
9458               ;;
9459               *)
9460                 objfmt='ELF ?'
9461               ;;
9462             esac
9464             AC_MSG_RESULT([$objfmt])
9465             if test "$objfmt" = 'ELF ?'; then
9466               objfmt='ELF'
9467               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9468             fi
9470             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9471             case "$objfmt" in
9472               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9473               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9474               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9475               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9476               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9477               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9478               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9479               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9480               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9481               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9482               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9483             esac
9484             AC_MSG_RESULT([$NAFLAGS])
9486             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9487             cat > conftest.asm << EOF
9488             [%line __oline__ "configure"
9489                     section .text
9490                     global  _main,main
9491             _main:
9492             main:   xor     eax,eax
9493                     ret
9494             ]
9496             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9497             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9498               AC_MSG_RESULT(yes)
9499             else
9500               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9501               cat conftest.asm >&AS_MESSAGE_LOG_FD
9502               rm -rf conftest*
9503               AC_MSG_RESULT(no)
9504               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9505               NASM=""
9506             fi
9508         fi
9510         if test -z "$NASM"; then
9511 cat << _EOS
9512 ****************************************************************************
9513 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9514 To get one please:
9516 _EOS
9517             if test "$build_os" = "cygwin"; then
9518 cat << _EOS
9519 install a pre-compiled binary for Win32
9521 mkdir -p /opt/lo/bin
9522 cd /opt/lo/bin
9523 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9524 chmod +x nasm
9526 or get and install one from http://www.nasm.us/
9528 Then re-run autogen.sh
9530 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9531 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9533 _EOS
9534             else
9535 cat << _EOS
9536 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9538 _EOS
9539             fi
9540             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9541             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9542         fi
9543       ;;
9544     esac
9547 AC_SUBST(NASM)
9548 AC_SUBST(NAFLAGS)
9549 AC_SUBST(LIBJPEG_CFLAGS)
9550 AC_SUBST(LIBJPEG_LIBS)
9551 AC_SUBST(SYSTEM_LIBJPEG)
9553 dnl ===================================================================
9554 dnl Check for system clucene
9555 dnl ===================================================================
9556 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9557 if test "$SYSTEM_CLUCENE" = TRUE; then
9558     AC_LANG_PUSH([C++])
9559     save_CXXFLAGS=$CXXFLAGS
9560     save_CPPFLAGS=$CPPFLAGS
9561     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9562     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9563     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9564     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9565     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9566                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9567     CXXFLAGS=$save_CXXFLAGS
9568     CPPFLAGS=$save_CPPFLAGS
9569     AC_LANG_POP([C++])
9570     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9573 dnl ===================================================================
9574 dnl Check for system expat
9575 dnl ===================================================================
9576 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9578 dnl ===================================================================
9579 dnl Check for system xmlsec
9580 dnl ===================================================================
9581 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9583 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9584 if test "$enable_eot" = "yes"; then
9585     ENABLE_EOT="TRUE"
9586     AC_DEFINE([ENABLE_EOT])
9587     AC_MSG_RESULT([yes])
9589     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9590 else
9591     ENABLE_EOT=
9592     AC_MSG_RESULT([no])
9594 AC_SUBST([ENABLE_EOT])
9596 dnl ===================================================================
9597 dnl Check for DLP libs
9598 dnl ===================================================================
9599 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9600 AS_IF([test "$COM" = "MSC"],
9601       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9602       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9604 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9605 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9607 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9609 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9611 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9612 AS_IF([test "$COM" = "MSC"],
9613       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9614       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9616 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9617 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9619 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9621 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9622 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9624 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9626 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9628 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9630 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9631 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9633 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9634 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9636 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9638 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9639 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9641 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9643 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9645 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9647 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9649 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9650 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9652 dnl ===================================================================
9653 dnl Check for system lcms2
9654 dnl ===================================================================
9655 if test "$with_system_lcms2" != "yes"; then
9656     SYSTEM_LCMS2=
9658 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9659 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9660 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9661 if test "$GCC" = "yes"; then
9662     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9664 if test "$COM" = "MSC"; then # override the above
9665     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9668 dnl ===================================================================
9669 dnl Check for system cppunit
9670 dnl ===================================================================
9671 if test "$_os" != "Android" ; then
9672     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9675 dnl ===================================================================
9676 dnl Check whether freetype is available
9678 dnl FreeType has 3 different kinds of versions
9679 dnl * release, like 2.4.10
9680 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9681 dnl * soname
9682 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9684 dnl 9.9.3 is 2.2.0
9685 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9686 dnl ===================================================================
9687 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9688 if test "x$ac_config_site_64bit_host" = xYES; then
9689     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9690 else
9691     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9693 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9695 # ===================================================================
9696 # Check for system libxslt
9697 # to prevent incompatibilities between internal libxml2 and external libxslt,
9698 # or vice versa, use with_system_libxml here
9699 # ===================================================================
9700 if test "$with_system_libxml" = "auto"; then
9701     case "$_os" in
9702     WINNT|iOS|Android)
9703         with_system_libxml="$with_system_libs"
9704         ;;
9705     Emscripten)
9706         with_system_libxml=no
9707         ;;
9708     *)
9709         if test "$enable_fuzzers" != "yes"; then
9710             with_system_libxml=yes
9711         else
9712             with_system_libxml=no
9713         fi
9714         ;;
9715     esac
9718 AC_MSG_CHECKING([which libxslt to use])
9719 if test "$with_system_libxml" = "yes"; then
9720     AC_MSG_RESULT([external])
9721     SYSTEM_LIBXSLT=TRUE
9722     if test "$_os" = "Darwin"; then
9723         dnl make sure to use SDK path
9724         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9725         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9726         dnl omit -L/usr/lib
9727         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9728         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9729     else
9730         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9731         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9732         FilterLibs "${LIBXSLT_LIBS}"
9733         LIBXSLT_LIBS="${filteredlibs}"
9734         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9735         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9736         FilterLibs "${LIBEXSLT_LIBS}"
9737         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9738     fi
9740     dnl Check for xsltproc
9741     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9742     if test "$XSLTPROC" = "no"; then
9743         AC_MSG_ERROR([xsltproc is required])
9744     fi
9745 else
9746     AC_MSG_RESULT([internal])
9747     SYSTEM_LIBXSLT=
9748     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9750 AC_SUBST(SYSTEM_LIBXSLT)
9751 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9752     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9754 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9756 AC_SUBST(LIBEXSLT_CFLAGS)
9757 AC_SUBST(LIBEXSLT_LIBS)
9758 AC_SUBST(LIBXSLT_CFLAGS)
9759 AC_SUBST(LIBXSLT_LIBS)
9760 AC_SUBST(XSLTPROC)
9762 # ===================================================================
9763 # Check for system libxml
9764 # ===================================================================
9765 AC_MSG_CHECKING([which libxml to use])
9766 if test "$with_system_libxml" = "yes"; then
9767     AC_MSG_RESULT([external])
9768     SYSTEM_LIBXML=TRUE
9769     if test "$_os" = "Darwin"; then
9770         dnl make sure to use SDK path
9771         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9772         dnl omit -L/usr/lib
9773         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9774     elif test $_os = iOS; then
9775         dnl make sure to use SDK path
9776         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9777         LIBXML_CFLAGS="-I$usr/include/libxml2"
9778         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9779     else
9780         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9781         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9782         FilterLibs "${LIBXML_LIBS}"
9783         LIBXML_LIBS="${filteredlibs}"
9784     fi
9786     dnl Check for xmllint
9787     AC_PATH_PROG(XMLLINT, xmllint, no)
9788     if test "$XMLLINT" = "no"; then
9789         AC_MSG_ERROR([xmllint is required])
9790     fi
9791 else
9792     AC_MSG_RESULT([internal])
9793     SYSTEM_LIBXML=
9794     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9795     if test "$COM" = "MSC"; then
9796         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9797     fi
9798     if test "$COM" = "MSC"; then
9799         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9800     else
9801         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9802         if test "$DISABLE_DYNLOADING" = TRUE; then
9803             LIBXML_LIBS="$LIBXML_LIBS -lm"
9804         fi
9805     fi
9806     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9808 AC_SUBST(SYSTEM_LIBXML)
9809 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9810     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9812 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9813 AC_SUBST(LIBXML_CFLAGS)
9814 AC_SUBST(LIBXML_LIBS)
9815 AC_SUBST(XMLLINT)
9817 # =====================================================================
9818 # Checking for a Python interpreter with version >= 3.3.
9819 # Optionally user can pass an option to configure, i. e.
9820 # ./configure PYTHON=/usr/bin/python
9821 # =====================================================================
9822 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9823     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9824     # unless PYTHON is defined as above which allows 'system'
9825     enable_python=internal
9827 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9828     if test -n "$PYTHON"; then
9829         PYTHON_FOR_BUILD=$PYTHON
9830     else
9831         # This allows a lack of system python with no error, we use internal one in that case.
9832         AM_PATH_PYTHON([3.3],, [:])
9833         # Clean PYTHON_VERSION checked below if cross-compiling
9834         PYTHON_VERSION=""
9835         if test "$PYTHON" != ":"; then
9836             PYTHON_FOR_BUILD=$PYTHON
9837         fi
9838     fi
9841 # Checks for Python to use for Pyuno
9842 AC_MSG_CHECKING([which Python to use for Pyuno])
9843 case "$enable_python" in
9844 no|disable)
9845     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9846         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9847         # requirement from the choice whether to include Python stuff in the installer, but why
9848         # bother?
9849         AC_MSG_ERROR([Python is required at build time.])
9850     fi
9851     enable_python=no
9852     AC_MSG_RESULT([none])
9853     ;;
9854 ""|yes|auto)
9855     if test "$DISABLE_SCRIPTING" = TRUE; then
9856         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9857             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9858         fi
9859         AC_MSG_RESULT([none, overridden by --disable-scripting])
9860         enable_python=no
9861     elif test $build_os = cygwin -o $build_os = wsl; then
9862         dnl When building on Windows we don't attempt to use any installed
9863         dnl "system"  Python.
9864         AC_MSG_RESULT([fully internal])
9865         enable_python=internal
9866     elif test "$cross_compiling" = yes; then
9867         AC_MSG_RESULT([system])
9868         enable_python=system
9869     else
9870         # Unset variables set by the above AM_PATH_PYTHON so that
9871         # we actually do check anew.
9872         AC_MSG_RESULT([])
9873         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
9874         AM_PATH_PYTHON([3.3],, [:])
9875         AC_MSG_CHECKING([which Python to use for Pyuno])
9876         if test "$PYTHON" = ":"; then
9877             if test -z "$PYTHON_FOR_BUILD"; then
9878                 AC_MSG_RESULT([fully internal])
9879             else
9880                 AC_MSG_RESULT([internal])
9881             fi
9882             enable_python=internal
9883         else
9884             AC_MSG_RESULT([system])
9885             enable_python=system
9886         fi
9887     fi
9888     ;;
9889 internal)
9890     AC_MSG_RESULT([internal])
9891     ;;
9892 fully-internal)
9893     AC_MSG_RESULT([fully internal])
9894     enable_python=internal
9895     ;;
9896 system)
9897     AC_MSG_RESULT([system])
9898     if test "$_os" = Darwin -a -z "$PYTHON"; then
9899         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9900     fi
9901     ;;
9903     AC_MSG_ERROR([Incorrect --enable-python option])
9904     ;;
9905 esac
9907 if test $enable_python != no; then
9908     BUILD_TYPE="$BUILD_TYPE PYUNO"
9911 if test $enable_python = system; then
9912     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9913         # Fallback: Accept these in the environment, or as set above
9914         # for MacOSX.
9915         :
9916     elif test "$cross_compiling" != yes; then
9917         # Unset variables set by the above AM_PATH_PYTHON so that
9918         # we actually do check anew.
9919         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
9920         # This causes an error if no python command is found
9921         AM_PATH_PYTHON([3.3])
9922         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9923         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9924         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9925         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9926         if test -z "$PKG_CONFIG"; then
9927             PYTHON_CFLAGS="-I$python_include"
9928             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9929         elif $PKG_CONFIG --exists python-$python_version-embed; then
9930             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9931             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9932         elif $PKG_CONFIG --exists python-$python_version; then
9933             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9934             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9935         else
9936             PYTHON_CFLAGS="-I$python_include"
9937             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9938         fi
9939         FilterLibs "${PYTHON_LIBS}"
9940         PYTHON_LIBS="${filteredlibs}"
9941     else
9942         dnl How to find out the cross-compilation Python installation path?
9943         AC_MSG_CHECKING([for python version])
9944         AS_IF([test -n "$PYTHON_VERSION"],
9945               [AC_MSG_RESULT([$PYTHON_VERSION])],
9946               [AC_MSG_RESULT([not found])
9947                AC_MSG_ERROR([no usable python found])])
9948         test -n "$PYTHON_CFLAGS" && break
9949     fi
9951     dnl Check if the headers really work
9952     save_CPPFLAGS="$CPPFLAGS"
9953     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9954     AC_CHECK_HEADER(Python.h)
9955     CPPFLAGS="$save_CPPFLAGS"
9957     # let the PYTHON_FOR_BUILD match the same python installation that
9958     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9959     # better for PythonTests.
9960     PYTHON_FOR_BUILD=$PYTHON
9963 if test "$with_lxml" != no; then
9964     if test -z "$PYTHON_FOR_BUILD"; then
9965         case $build_os in
9966             cygwin)
9967                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9968                 ;;
9969             *)
9970                 if test "$cross_compiling" != yes ; then
9971                     BUILD_TYPE="$BUILD_TYPE LXML"
9972                 fi
9973                 ;;
9974         esac
9975     else
9976         AC_MSG_CHECKING([for python lxml])
9977         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9978             AC_MSG_RESULT([yes])
9979         else
9980             case $build_os in
9981                 cygwin)
9982                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9983                     ;;
9984                 *)
9985                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9986                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9987                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9988                         else
9989                             BUILD_TYPE="$BUILD_TYPE LXML"
9990                             AC_MSG_RESULT([no, using internal lxml])
9991                         fi
9992                     else
9993                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9994                     fi
9995                     ;;
9996             esac
9997         fi
9998     fi
10001 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10002     SYSTEM_PYTHON=
10003     PYTHON_VERSION_MAJOR=3
10004     PYTHON_VERSION_MINOR=8
10005     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10006     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10007         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10008     fi
10009     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10011     # Embedded Python dies without Home set
10012     if test "$HOME" = ""; then
10013         export HOME=""
10014     fi
10017 dnl By now enable_python should be "system", "internal" or "no"
10018 case $enable_python in
10019 system)
10020     SYSTEM_PYTHON=TRUE
10022     if test "x$ac_cv_header_Python_h" != "xyes"; then
10023        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10024     fi
10026     AC_LANG_PUSH(C)
10027     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10028     AC_MSG_CHECKING([for correct python library version])
10029        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10030 #include <Python.h>
10032 int main(int argc, char **argv) {
10033    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10034    else return 1;
10036        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10037     AC_LANG_POP(C)
10039     dnl FIXME Check if the Python library can be linked with, too?
10040     ;;
10042 internal)
10043     BUILD_TYPE="$BUILD_TYPE PYTHON"
10044     if test "$OS" = LINUX -o "$OS" = WNT ; then
10045         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10046     fi
10047     ;;
10049     DISABLE_PYTHON=TRUE
10050     SYSTEM_PYTHON=
10051     ;;
10053     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10054     ;;
10055 esac
10057 AC_SUBST(DISABLE_PYTHON)
10058 AC_SUBST(SYSTEM_PYTHON)
10059 AC_SUBST(PYTHON_CFLAGS)
10060 AC_SUBST(PYTHON_FOR_BUILD)
10061 AC_SUBST(PYTHON_LIBS)
10062 AC_SUBST(PYTHON_VERSION)
10063 AC_SUBST(PYTHON_VERSION_MAJOR)
10064 AC_SUBST(PYTHON_VERSION_MINOR)
10066 AC_MSG_CHECKING([whether to build LibreLogo])
10067 case "$enable_python" in
10068 no|disable)
10069     AC_MSG_RESULT([no; Python disabled])
10070     ;;
10072     if test "${enable_librelogo}" = "no"; then
10073         AC_MSG_RESULT([no])
10074     else
10075         AC_MSG_RESULT([yes])
10076         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10077         AC_DEFINE([ENABLE_LIBRELOGO],1)
10078     fi
10079     ;;
10080 esac
10081 AC_SUBST(ENABLE_LIBRELOGO)
10083 ENABLE_MARIADBC=
10084 MARIADBC_MAJOR=1
10085 MARIADBC_MINOR=0
10086 MARIADBC_MICRO=2
10087 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10088 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10089     ENABLE_MARIADBC=TRUE
10090     AC_MSG_RESULT([yes])
10091     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10092 else
10093     AC_MSG_RESULT([no])
10095 AC_SUBST(ENABLE_MARIADBC)
10096 AC_SUBST(MARIADBC_MAJOR)
10097 AC_SUBST(MARIADBC_MINOR)
10098 AC_SUBST(MARIADBC_MICRO)
10100 if test "$ENABLE_MARIADBC" = "TRUE"; then
10101     dnl ===================================================================
10102     dnl Check for system MariaDB
10103     dnl ===================================================================
10104     AC_MSG_CHECKING([which MariaDB to use])
10105     if test "$with_system_mariadb" = "yes"; then
10106         AC_MSG_RESULT([external])
10107         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10108         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10109         if test -z "$MARIADBCONFIG"; then
10110             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10111             if test -z "$MARIADBCONFIG"; then
10112                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10113                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10114             fi
10115         fi
10116         AC_MSG_CHECKING([MariaDB version])
10117         MARIADB_VERSION=`$MARIADBCONFIG --version`
10118         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10119         if test "$MARIADB_MAJOR" -ge "5"; then
10120             AC_MSG_RESULT([OK])
10121         else
10122             AC_MSG_ERROR([too old, use 5.0.x or later])
10123         fi
10124         AC_MSG_CHECKING([for MariaDB Client library])
10125         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10126         if test "$COM_IS_CLANG" = TRUE; then
10127             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10128         fi
10129         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10130         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10131         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10132         dnl linux32:
10133         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10134             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10135             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10136                 | sed -e 's|/lib64/|/lib/|')
10137         fi
10138         FilterLibs "${MARIADB_LIBS}"
10139         MARIADB_LIBS="${filteredlibs}"
10140         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10141         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10142         if test "$enable_bundle_mariadb" = "yes"; then
10143             AC_MSG_RESULT([yes])
10144             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10145             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10147 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10149 /g' | grep -E '(mysqlclient|mariadb)')
10150             if test "$_os" = "Darwin"; then
10151                 LIBMARIADB=${LIBMARIADB}.dylib
10152             elif test "$_os" = "WINNT"; then
10153                 LIBMARIADB=${LIBMARIADB}.dll
10154             else
10155                 LIBMARIADB=${LIBMARIADB}.so
10156             fi
10157             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10158             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10159             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10160                 AC_MSG_RESULT([found.])
10161                 PathFormat "$LIBMARIADB_PATH"
10162                 LIBMARIADB_PATH="$formatted_path"
10163             else
10164                 AC_MSG_ERROR([not found.])
10165             fi
10166         else
10167             AC_MSG_RESULT([no])
10168             BUNDLE_MARIADB_CONNECTOR_C=
10169         fi
10170     else
10171         AC_MSG_RESULT([internal])
10172         SYSTEM_MARIADB_CONNECTOR_C=
10173         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10174         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10175         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10176     fi
10178     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10179     AC_SUBST(MARIADB_CFLAGS)
10180     AC_SUBST(MARIADB_LIBS)
10181     AC_SUBST(LIBMARIADB)
10182     AC_SUBST(LIBMARIADB_PATH)
10183     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10186 dnl ===================================================================
10187 dnl Check for system hsqldb
10188 dnl ===================================================================
10189 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10190     AC_MSG_CHECKING([which hsqldb to use])
10191     if test "$with_system_hsqldb" = "yes"; then
10192         AC_MSG_RESULT([external])
10193         SYSTEM_HSQLDB=TRUE
10194         if test -z $HSQLDB_JAR; then
10195             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10196         fi
10197         if ! test -f $HSQLDB_JAR; then
10198                AC_MSG_ERROR(hsqldb.jar not found.)
10199         fi
10200         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10201         export HSQLDB_JAR
10202         if $PERL -e \
10203            'use Archive::Zip;
10204             my $file = "$ENV{'HSQLDB_JAR'}";
10205             my $zip = Archive::Zip->new( $file );
10206             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10207             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10208             {
10209                 push @l, split(/\n/, $mf);
10210                 foreach my $line (@l)
10211                 {
10212                     if ($line =~ m/Specification-Version:/)
10213                     {
10214                         ($t, $version) = split (/:/,$line);
10215                         $version =~ s/^\s//;
10216                         ($a, $b, $c, $d) = split (/\./,$version);
10217                         if ($c == "0" && $d > "8")
10218                         {
10219                             exit 0;
10220                         }
10221                         else
10222                         {
10223                             exit 1;
10224                         }
10225                     }
10226                 }
10227             }
10228             else
10229             {
10230                 exit 1;
10231             }'; then
10232             AC_MSG_RESULT([yes])
10233         else
10234             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10235         fi
10236     else
10237         AC_MSG_RESULT([internal])
10238         SYSTEM_HSQLDB=
10239         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10240         NEED_ANT=TRUE
10241     fi
10242 else
10243     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10244         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10245     fi
10247 AC_SUBST(SYSTEM_HSQLDB)
10248 AC_SUBST(HSQLDB_JAR)
10250 dnl ===================================================================
10251 dnl Check for PostgreSQL stuff
10252 dnl ===================================================================
10253 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10254 if test "x$enable_postgresql_sdbc" != "xno"; then
10255     AC_MSG_RESULT([yes])
10256     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10258     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10259         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10260     fi
10261     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10262         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10263     fi
10265     postgres_interface=""
10266     if test "$with_system_postgresql" = "yes"; then
10267         postgres_interface="external PostgreSQL"
10268         SYSTEM_POSTGRESQL=TRUE
10269         if test "$_os" = Darwin; then
10270             supp_path=''
10271             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10272                 pg_supp_path="$P_SEP$d$pg_supp_path"
10273             done
10274         fi
10275         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10276         if test -n "$PGCONFIG"; then
10277             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10278             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10279         else
10280             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10281               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10282               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10283             ],[
10284               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10285             ])
10286         fi
10287         FilterLibs "${POSTGRESQL_LIB}"
10288         POSTGRESQL_LIB="${filteredlibs}"
10289     else
10290         # if/when anything else than PostgreSQL uses Kerberos,
10291         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10292         WITH_KRB5=
10293         WITH_GSSAPI=
10294         case "$_os" in
10295         Darwin)
10296             # macOS has system MIT Kerberos 5 since 10.4
10297             if test "$with_krb5" != "no"; then
10298                 WITH_KRB5=TRUE
10299                 save_LIBS=$LIBS
10300                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10301                 # that the libraries where these functions are located on macOS will change, is it?
10302                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10303                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10304                 KRB5_LIBS=$LIBS
10305                 LIBS=$save_LIBS
10306                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10307                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10308                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10309                 LIBS=$save_LIBS
10310             fi
10311             if test "$with_gssapi" != "no"; then
10312                 WITH_GSSAPI=TRUE
10313                 save_LIBS=$LIBS
10314                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10315                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10316                 GSSAPI_LIBS=$LIBS
10317                 LIBS=$save_LIBS
10318             fi
10319             ;;
10320         WINNT)
10321             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10322                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10323             fi
10324             ;;
10325         Linux|GNU|*BSD|DragonFly)
10326             if test "$with_krb5" != "no"; then
10327                 WITH_KRB5=TRUE
10328                 save_LIBS=$LIBS
10329                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10330                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10331                 KRB5_LIBS=$LIBS
10332                 LIBS=$save_LIBS
10333                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10334                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10335                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10336                 LIBS=$save_LIBS
10337             fi
10338             if test "$with_gssapi" != "no"; then
10339                 WITH_GSSAPI=TRUE
10340                 save_LIBS=$LIBS
10341                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10342                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10343                 GSSAPI_LIBS=$LIBS
10344                 LIBS=$save_LIBS
10345             fi
10346             ;;
10347         *)
10348             if test "$with_krb5" = "yes"; then
10349                 WITH_KRB5=TRUE
10350                 save_LIBS=$LIBS
10351                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10352                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10353                 KRB5_LIBS=$LIBS
10354                 LIBS=$save_LIBS
10355                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10356                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10357                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10358                 LIBS=$save_LIBS
10359             fi
10360             if test "$with_gssapi" = "yes"; then
10361                 WITH_GSSAPI=TRUE
10362                 save_LIBS=$LIBS
10363                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10364                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10365                 LIBS=$save_LIBS
10366                 GSSAPI_LIBS=$LIBS
10367             fi
10368         esac
10370         if test -n "$with_libpq_path"; then
10371             SYSTEM_POSTGRESQL=TRUE
10372             postgres_interface="external libpq"
10373             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10374             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10375         else
10376             SYSTEM_POSTGRESQL=
10377             postgres_interface="internal"
10378             POSTGRESQL_LIB=""
10379             POSTGRESQL_INC="%OVERRIDE_ME%"
10380             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10381         fi
10382     fi
10384     AC_MSG_CHECKING([PostgreSQL C interface])
10385     AC_MSG_RESULT([$postgres_interface])
10387     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10388         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10389         save_CFLAGS=$CFLAGS
10390         save_CPPFLAGS=$CPPFLAGS
10391         save_LIBS=$LIBS
10392         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10393         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10394         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10395         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10396             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10397         CFLAGS=$save_CFLAGS
10398         CPPFLAGS=$save_CPPFLAGS
10399         LIBS=$save_LIBS
10400     fi
10401     BUILD_POSTGRESQL_SDBC=TRUE
10402 else
10403     AC_MSG_RESULT([no])
10405 AC_SUBST(WITH_KRB5)
10406 AC_SUBST(WITH_GSSAPI)
10407 AC_SUBST(GSSAPI_LIBS)
10408 AC_SUBST(KRB5_LIBS)
10409 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10410 AC_SUBST(SYSTEM_POSTGRESQL)
10411 AC_SUBST(POSTGRESQL_INC)
10412 AC_SUBST(POSTGRESQL_LIB)
10414 dnl ===================================================================
10415 dnl Check for Firebird stuff
10416 dnl ===================================================================
10417 ENABLE_FIREBIRD_SDBC=
10418 if test "$enable_firebird_sdbc" = "yes" ; then
10419     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10421     dnl ===================================================================
10422     dnl Check for system Firebird
10423     dnl ===================================================================
10424     AC_MSG_CHECKING([which Firebird to use])
10425     if test "$with_system_firebird" = "yes"; then
10426         AC_MSG_RESULT([external])
10427         SYSTEM_FIREBIRD=TRUE
10428         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10429         if test -z "$FIREBIRDCONFIG"; then
10430             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10431             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10432                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10433             ])
10434             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10435         else
10436             AC_MSG_NOTICE([fb_config found])
10437             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10438             AC_MSG_CHECKING([for Firebird Client library])
10439             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10440             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10441             FilterLibs "${FIREBIRD_LIBS}"
10442             FIREBIRD_LIBS="${filteredlibs}"
10443         fi
10444         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10445         AC_MSG_CHECKING([Firebird version])
10446         if test -n "${FIREBIRD_VERSION}"; then
10447             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10448             if test "$FIREBIRD_MAJOR" -ge "3"; then
10449                 AC_MSG_RESULT([OK])
10450             else
10451                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10452             fi
10453         else
10454             save_CFLAGS="${CFLAGS}"
10455             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10456             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10457 #if defined(FB_API_VER) && FB_API_VER == 30
10458 int fb_api_is_30(void) { return 0; }
10459 #else
10460 #error "Wrong Firebird API version"
10461 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10462             CFLAGS="$save_CFLAGS"
10463         fi
10464         ENABLE_FIREBIRD_SDBC=TRUE
10465         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10466     elif test "$enable_database_connectivity" = no; then
10467         AC_MSG_RESULT([none])
10468     elif test "$cross_compiling" = "yes"; then
10469         AC_MSG_RESULT([none])
10470     else
10471         dnl Embedded Firebird has version 3.0
10472         dnl We need libatomic_ops for any non X86/X64 system
10473         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10474             dnl ===================================================================
10475             dnl Check for system libatomic_ops
10476             dnl ===================================================================
10477             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10478             if test "$with_system_libatomic_ops" = "yes"; then
10479                 SYSTEM_LIBATOMIC_OPS=TRUE
10480                 AC_CHECK_HEADERS(atomic_ops.h, [],
10481                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10482             else
10483                 SYSTEM_LIBATOMIC_OPS=
10484                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10485                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10486                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10487             fi
10488         fi
10490         AC_MSG_RESULT([internal])
10491         SYSTEM_FIREBIRD=
10492         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10493         FIREBIRD_LIBS="-lfbclient"
10495         if test "$with_system_libtommath" = "yes"; then
10496             SYSTEM_LIBTOMMATH=TRUE
10497             dnl check for tommath presence
10498             save_LIBS=$LIBS
10499             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10500             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10501             LIBS=$save_LIBS
10502         else
10503             SYSTEM_LIBTOMMATH=
10504             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10505             LIBTOMMATH_LIBS="-ltommath"
10506             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10507         fi
10509         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10510         ENABLE_FIREBIRD_SDBC=TRUE
10511         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10512     fi
10514 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10515 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10516 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10517 AC_SUBST(LIBATOMIC_OPS_LIBS)
10518 AC_SUBST(SYSTEM_FIREBIRD)
10519 AC_SUBST(FIREBIRD_CFLAGS)
10520 AC_SUBST(FIREBIRD_LIBS)
10521 AC_SUBST(SYSTEM_LIBTOMMATH)
10522 AC_SUBST(LIBTOMMATH_CFLAGS)
10523 AC_SUBST(LIBTOMMATH_LIBS)
10525 dnl ===================================================================
10526 dnl Check for system curl
10527 dnl ===================================================================
10528 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10530 dnl ===================================================================
10531 dnl Check for system boost
10532 dnl ===================================================================
10533 AC_MSG_CHECKING([which boost to use])
10534 if test "$with_system_boost" = "yes"; then
10535     AC_MSG_RESULT([external])
10536     SYSTEM_BOOST=TRUE
10537     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10538     AX_BOOST_DATE_TIME
10539     AX_BOOST_FILESYSTEM
10540     AX_BOOST_IOSTREAMS
10541     AX_BOOST_LOCALE
10542     AC_LANG_PUSH([C++])
10543     save_CXXFLAGS=$CXXFLAGS
10544     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10545     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10546        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10547     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10548        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10549     CXXFLAGS=$save_CXXFLAGS
10550     AC_LANG_POP([C++])
10551     # this is in m4/ax_boost_base.m4
10552     FilterLibs "${BOOST_LDFLAGS}"
10553     BOOST_LDFLAGS="${filteredlibs}"
10554 else
10555     AC_MSG_RESULT([internal])
10556     BUILD_TYPE="$BUILD_TYPE BOOST"
10557     SYSTEM_BOOST=
10558     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10559         # use warning-suppressing wrapper headers
10560         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10561     else
10562         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10563     fi
10565 AC_SUBST(SYSTEM_BOOST)
10567 dnl ===================================================================
10568 dnl Check for system mdds
10569 dnl ===================================================================
10570 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10571 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10573 dnl ===================================================================
10574 dnl Check for system dragonbox
10575 dnl ===================================================================
10576 AC_MSG_CHECKING([which dragonbox to use])
10577 if test "$with_system_dragonbox" = "yes"; then
10578     AC_MSG_RESULT([external])
10579     SYSTEM_DRAGONBOX=TRUE
10580     AC_LANG_PUSH([C++])
10581     save_CPPFLAGS=$CPPFLAGS
10582     # This is where upstream installs to, unfortunately no .pc or so...
10583     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10584     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10585     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10586        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10587     AC_LANG_POP([C++])
10588     CPPFLAGS=$save_CPPFLAGS
10589 else
10590     AC_MSG_RESULT([internal])
10591     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10592     SYSTEM_DRAGONBOX=
10594 AC_SUBST([SYSTEM_DRAGONBOX])
10595 AC_SUBST([DRAGONBOX_CFLAGS])
10597 dnl ===================================================================
10598 dnl Check for system libfixmath
10599 dnl ===================================================================
10600 AC_MSG_CHECKING([which libfixmath to use])
10601 if test "$with_system_libfixmath" = "yes"; then
10602     AC_MSG_RESULT([external])
10603     SYSTEM_LIBFIXMATH=TRUE
10604     AC_LANG_PUSH([C++])
10605     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10606        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10607     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10608     AC_LANG_POP([C++])
10609 else
10610     AC_MSG_RESULT([internal])
10611     SYSTEM_LIBFIXMATH=
10613 AC_SUBST([SYSTEM_LIBFIXMATH])
10615 dnl ===================================================================
10616 dnl Check for system glm
10617 dnl ===================================================================
10618 AC_MSG_CHECKING([which glm to use])
10619 if test "$with_system_glm" = "yes"; then
10620     AC_MSG_RESULT([external])
10621     SYSTEM_GLM=TRUE
10622     AC_LANG_PUSH([C++])
10623     AC_CHECK_HEADER([glm/glm.hpp], [],
10624        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10625     AC_LANG_POP([C++])
10626 else
10627     AC_MSG_RESULT([internal])
10628     BUILD_TYPE="$BUILD_TYPE GLM"
10629     SYSTEM_GLM=
10630     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10632 AC_SUBST([GLM_CFLAGS])
10633 AC_SUBST([SYSTEM_GLM])
10635 dnl ===================================================================
10636 dnl Check for system odbc
10637 dnl ===================================================================
10638 AC_MSG_CHECKING([which odbc headers to use])
10639 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
10640     AC_MSG_RESULT([external])
10641     SYSTEM_ODBC_HEADERS=TRUE
10643     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10644         save_CPPFLAGS=$CPPFLAGS
10645         find_winsdk
10646         PathFormat "$winsdktest"
10647         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"
10648         AC_CHECK_HEADER(sqlext.h, [],
10649             [AC_MSG_ERROR(odbc not found. install odbc)],
10650             [#include <windows.h>])
10651         CPPFLAGS=$save_CPPFLAGS
10652     else
10653         AC_CHECK_HEADER(sqlext.h, [],
10654             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10655     fi
10656 elif test "$enable_database_connectivity" = no; then
10657     AC_MSG_RESULT([none])
10658 else
10659     AC_MSG_RESULT([internal])
10660     SYSTEM_ODBC_HEADERS=
10661     BUILD_TYPE="$BUILD_TYPE IODBC"
10663 AC_SUBST(SYSTEM_ODBC_HEADERS)
10665 dnl ===================================================================
10666 dnl Check for system NSS
10667 dnl ===================================================================
10668 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10669     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10670     AC_DEFINE(HAVE_FEATURE_NSS)
10671     ENABLE_NSS=TRUE
10672 elif test $_os != iOS ; then
10673     with_tls=openssl
10675 AC_SUBST(ENABLE_NSS)
10677 dnl ===================================================================
10678 dnl Enable LDAP support
10679 dnl ===================================================================
10681 if test "$test_openldap" = yes; then
10682     AC_MSG_CHECKING([whether to enable LDAP support])
10683     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10684         AC_MSG_RESULT([yes])
10685         ENABLE_LDAP=TRUE
10686     else
10687         if test "$enable_ldap" != "yes"; then
10688             AC_MSG_RESULT([no])
10689         else
10690             AC_MSG_RESULT([no (needs NSS or system openldap)])
10691         fi
10692     fi
10694 dnl ===================================================================
10695 dnl Check for system openldap
10696 dnl ===================================================================
10698     if test "$ENABLE_LDAP" = TRUE; then
10699         AC_MSG_CHECKING([which openldap library to use])
10700         if test "$with_system_openldap" = yes; then
10701             AC_MSG_RESULT([external])
10702             SYSTEM_OPENLDAP=TRUE
10703             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10704             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10705             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10706         else
10707             AC_MSG_RESULT([internal])
10708             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10709         fi
10710     fi
10713 AC_SUBST(ENABLE_LDAP)
10714 AC_SUBST(SYSTEM_OPENLDAP)
10716 dnl ===================================================================
10717 dnl Check for TLS/SSL and cryptographic implementation to use
10718 dnl ===================================================================
10719 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10720 if test -n "$with_tls"; then
10721     case $with_tls in
10722     openssl)
10723         AC_DEFINE(USE_TLS_OPENSSL)
10724         TLS=OPENSSL
10725         AC_MSG_RESULT([$TLS])
10727         if test "$enable_openssl" != "yes"; then
10728             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10729         fi
10731         # warn that OpenSSL has been selected but not all TLS code has this option
10732         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10733         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10734         ;;
10735     nss)
10736         AC_DEFINE(USE_TLS_NSS)
10737         TLS=NSS
10738         AC_MSG_RESULT([$TLS])
10739         ;;
10740     no)
10741         AC_MSG_RESULT([none])
10742         AC_MSG_WARN([Skipping TLS/SSL])
10743         ;;
10744     *)
10745         AC_MSG_RESULT([])
10746         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10747 openssl - OpenSSL
10748 nss - Mozilla's Network Security Services (NSS)
10749     ])
10750         ;;
10751     esac
10752 else
10753     # default to using NSS, it results in smaller oox lib
10754     AC_DEFINE(USE_TLS_NSS)
10755     TLS=NSS
10756     AC_MSG_RESULT([$TLS])
10758 AC_SUBST(TLS)
10760 dnl ===================================================================
10761 dnl Check for system sane
10762 dnl ===================================================================
10763 AC_MSG_CHECKING([which sane header to use])
10764 if test "$with_system_sane" = "yes"; then
10765     AC_MSG_RESULT([external])
10766     AC_CHECK_HEADER(sane/sane.h, [],
10767       [AC_MSG_ERROR(sane not found. install sane)], [])
10768 else
10769     AC_MSG_RESULT([internal])
10770     BUILD_TYPE="$BUILD_TYPE SANE"
10773 dnl ===================================================================
10774 dnl Check for system icu
10775 dnl ===================================================================
10776 ICU_MAJOR=72
10777 ICU_MINOR=1
10778 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10779 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10780 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10781 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10782 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10783 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10784 if test "$SYSTEM_ICU" = TRUE; then
10785     AC_LANG_PUSH([C++])
10786     AC_MSG_CHECKING([for unicode/rbbi.h])
10787     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10788     AC_LANG_POP([C++])
10790     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10791     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10792     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10794     if test "$ICU_MAJOR" -ge 50; then
10795         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10796         ICU_MINOR=
10797     fi
10799     if test "$CROSS_COMPILING" != TRUE; then
10800         # using the system icu tools can lead to version confusion, use the
10801         # ones from the build environment when cross-compiling
10802         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10803         if test -z "$SYSTEM_GENBRK"; then
10804             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10805         fi
10806         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10807         if test -z "$SYSTEM_GENCCODE"; then
10808             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10809         fi
10810         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10811         if test -z "$SYSTEM_GENCMN"; then
10812             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10813         fi
10814         if test "$ICU_MAJOR" -lt 49; then
10815             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10816             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10817             ICU_RECLASSIFIED_HEBREW_LETTER=
10818         fi
10819     fi
10821 if test "$ICU_MAJOR" -ge "59"; then
10822     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10823     # with -std=c++11 but not all external libraries can be built with that,
10824     # for those use a bit-compatible typedef uint16_t UChar; see
10825     # icu/source/common/unicode/umachine.h
10826     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10827 else
10828     ICU_UCHAR_TYPE=""
10830 AC_SUBST(SYSTEM_GENBRK)
10831 AC_SUBST(SYSTEM_GENCCODE)
10832 AC_SUBST(SYSTEM_GENCMN)
10833 AC_SUBST(ICU_MAJOR)
10834 AC_SUBST(ICU_MINOR)
10835 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10836 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10837 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10838 AC_SUBST(ICU_UCHAR_TYPE)
10840 dnl ==================================================================
10841 dnl Breakpad
10842 dnl ==================================================================
10843 DEFAULT_CRASHDUMP_VALUE="true"
10844 AC_MSG_CHECKING([whether to enable breakpad])
10845 if test "$enable_breakpad" != yes; then
10846     AC_MSG_RESULT([no])
10847 else
10848     AC_MSG_RESULT([yes])
10849     ENABLE_BREAKPAD="TRUE"
10850     AC_DEFINE(ENABLE_BREAKPAD)
10851     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10852     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10854     AC_MSG_CHECKING([for disable crash dump])
10855     if test "$enable_crashdump" = no; then
10856         DEFAULT_CRASHDUMP_VALUE="false"
10857         AC_MSG_RESULT([yes])
10858     else
10859        AC_MSG_RESULT([no])
10860     fi
10862     AC_MSG_CHECKING([for crashreport config])
10863     if test "$with_symbol_config" = "no"; then
10864         BREAKPAD_SYMBOL_CONFIG="invalid"
10865         AC_MSG_RESULT([no])
10866     else
10867         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10868         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10869         AC_MSG_RESULT([yes])
10870     fi
10871     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10873 AC_SUBST(ENABLE_BREAKPAD)
10874 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10876 dnl ===================================================================
10877 dnl Orcus
10878 dnl ===================================================================
10879 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10880 if test "$with_system_orcus" != "yes"; then
10881     if test "$SYSTEM_BOOST" = "TRUE"; then
10882         dnl Link with Boost.System
10883         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10884         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10885         dnl in documentation has no effect.
10886         AX_BOOST_SYSTEM
10887     fi
10889 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10890 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10891 AC_SUBST([BOOST_SYSTEM_LIB])
10892 AC_SUBST(SYSTEM_LIBORCUS)
10894 dnl ===================================================================
10895 dnl HarfBuzz
10896 dnl ===================================================================
10897 harfbuzz_required_version=5.1.0
10899 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10900 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10901 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10902 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10903 case "$_os" in
10904     Linux)
10905         libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],,,TRUE)
10906         libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],,,TRUE)
10907         ;;
10908     *)
10909         libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10910         libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10911         ;;
10912 esac
10914 if test "$COM" = "MSC"; then # override the above
10915     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10916     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10919 if test "$with_system_harfbuzz" = "yes"; then
10920     if test "$with_system_graphite" = "no"; then
10921         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10922     fi
10923     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10924     save_LIBS="$LIBS"
10925     save_CFLAGS="$CFLAGS"
10926     LIBS="$LIBS $HARFBUZZ_LIBS"
10927     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10928     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10929     LIBS="$save_LIBS"
10930     CFLAGS="$save_CFLAGS"
10931 else
10932     if test "$with_system_graphite" = "yes"; then
10933         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10934     fi
10937 if test "$USING_X11" = TRUE; then
10938     AC_PATH_X
10939     AC_PATH_XTRA
10940     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10942     if test -z "$x_includes"; then
10943         x_includes="default_x_includes"
10944     fi
10945     if test -z "$x_libraries"; then
10946         x_libraries="default_x_libraries"
10947     fi
10948     CFLAGS="$CFLAGS $X_CFLAGS"
10949     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10950     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10951 else
10952     x_includes="no_x_includes"
10953     x_libraries="no_x_libraries"
10956 if test "$USING_X11" = TRUE; then
10957     dnl ===================================================================
10958     dnl Check for extension headers
10959     dnl ===================================================================
10960     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10961      [#include <X11/extensions/shape.h>])
10963     # vcl needs ICE and SM
10964     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10965     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10966         [AC_MSG_ERROR(ICE library not found)])
10967     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10968     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10969         [AC_MSG_ERROR(SM library not found)])
10972 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10973     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10974     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10977 dnl ===================================================================
10978 dnl Check for system Xrender
10979 dnl ===================================================================
10980 AC_MSG_CHECKING([whether to use Xrender])
10981 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10982     AC_MSG_RESULT([yes])
10983     PKG_CHECK_MODULES(XRENDER, xrender)
10984     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10985     FilterLibs "${XRENDER_LIBS}"
10986     XRENDER_LIBS="${filteredlibs}"
10987     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10988       [AC_MSG_ERROR(libXrender not found or functional)], [])
10989     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10990       [AC_MSG_ERROR(Xrender not found. install X)], [])
10991 else
10992     AC_MSG_RESULT([no])
10994 AC_SUBST(XRENDER_CFLAGS)
10995 AC_SUBST(XRENDER_LIBS)
10997 dnl ===================================================================
10998 dnl Check for XRandr
10999 dnl ===================================================================
11000 AC_MSG_CHECKING([whether to enable RandR support])
11001 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11002     AC_MSG_RESULT([yes])
11003     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11004     if test "$ENABLE_RANDR" != "TRUE"; then
11005         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11006                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11007         XRANDR_CFLAGS=" "
11008         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11009           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11010         XRANDR_LIBS="-lXrandr "
11011         ENABLE_RANDR="TRUE"
11012     fi
11013     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11014     FilterLibs "${XRANDR_LIBS}"
11015     XRANDR_LIBS="${filteredlibs}"
11016 else
11017     ENABLE_RANDR=""
11018     AC_MSG_RESULT([no])
11020 AC_SUBST(XRANDR_CFLAGS)
11021 AC_SUBST(XRANDR_LIBS)
11022 AC_SUBST(ENABLE_RANDR)
11024 if test -z "$with_webdav"; then
11025     with_webdav=$test_webdav
11028 AC_MSG_CHECKING([for WebDAV support])
11029 case "$with_webdav" in
11031     AC_MSG_RESULT([no])
11032     WITH_WEBDAV=""
11033     ;;
11035     AC_MSG_RESULT([yes])
11036     # curl is already mandatory (almost) and checked elsewhere
11037     if test "$enable_curl" = "no"; then
11038         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11039     fi
11040     WITH_WEBDAV=TRUE
11041     ;;
11042 esac
11043 AC_SUBST(WITH_WEBDAV)
11045 dnl ===================================================================
11046 dnl Check for disabling cve_tests
11047 dnl ===================================================================
11048 AC_MSG_CHECKING([whether to execute CVE tests])
11049 # If not explicitly enabled or disabled, default
11050 if test -z "$enable_cve_tests"; then
11051     case "$OS" in
11052     WNT)
11053         # Default cves off for Windows with its wild and wonderful
11054         # variety of AV software kicking in and panicking
11055         enable_cve_tests=no
11056         ;;
11057     *)
11058         # otherwise yes
11059         enable_cve_tests=yes
11060         ;;
11061     esac
11063 if test "$enable_cve_tests" = "no"; then
11064     AC_MSG_RESULT([no])
11065     DISABLE_CVE_TESTS=TRUE
11066     AC_SUBST(DISABLE_CVE_TESTS)
11067 else
11068     AC_MSG_RESULT([yes])
11071 dnl ===================================================================
11072 dnl Check for system openssl
11073 dnl ===================================================================
11074 ENABLE_OPENSSL=
11075 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11076 if test "$enable_openssl" = "yes"; then
11077     AC_MSG_RESULT([no])
11078     ENABLE_OPENSSL=TRUE
11079     if test "$_os" = Darwin ; then
11080         # OpenSSL is deprecated when building for 10.7 or later.
11081         #
11082         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11083         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11085         with_system_openssl=no
11086         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11087     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11088             && test "$with_system_openssl" != "no"; then
11089         with_system_openssl=yes
11090         SYSTEM_OPENSSL=TRUE
11091         OPENSSL_CFLAGS=
11092         OPENSSL_LIBS="-lssl -lcrypto"
11093     else
11094         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11095         if test -n "${SYSTEM_OPENSSL}"; then
11096             AC_DEFINE([SYSTEM_OPENSSL])
11097         fi
11098     fi
11099     if test "$with_system_openssl" = "yes"; then
11100         AC_MSG_CHECKING([whether openssl supports SHA512])
11101         AC_LANG_PUSH([C])
11102         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11103             SHA512_CTX context;
11104 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11105         AC_LANG_POP(C)
11106     fi
11107 else
11108     AC_MSG_RESULT([yes])
11110     # warn that although OpenSSL is disabled, system libraries may depend on it
11111     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11112     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11115 AC_SUBST([ENABLE_OPENSSL])
11117 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11118     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11119         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11120         enable_cipher_openssl_backend=no
11121     else
11122         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11123     fi
11125 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11126 ENABLE_CIPHER_OPENSSL_BACKEND=
11127 if test "$enable_cipher_openssl_backend" = yes; then
11128     AC_MSG_RESULT([yes])
11129     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11130 else
11131     AC_MSG_RESULT([no])
11133 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11135 dnl ===================================================================
11136 dnl Select the crypto backends used by LO
11137 dnl ===================================================================
11139 if test "$build_crypto" = yes; then
11140     if test "$OS" = WNT; then
11141         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11142         AC_DEFINE([USE_CRYPTO_MSCAPI])
11143     elif test "$ENABLE_NSS" = TRUE; then
11144         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11145         AC_DEFINE([USE_CRYPTO_NSS])
11146     fi
11149 dnl ===================================================================
11150 dnl Check for system redland
11151 dnl ===================================================================
11152 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11153 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11154 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11155 if test "$with_system_redland" = "yes"; then
11156     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11157             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11158 else
11159     RAPTOR_MAJOR="0"
11160     RASQAL_MAJOR="3"
11161     REDLAND_MAJOR="0"
11163 AC_SUBST(RAPTOR_MAJOR)
11164 AC_SUBST(RASQAL_MAJOR)
11165 AC_SUBST(REDLAND_MAJOR)
11167 dnl ===================================================================
11168 dnl Check for system hunspell
11169 dnl ===================================================================
11170 AC_MSG_CHECKING([which libhunspell to use])
11171 if test "$with_system_hunspell" = "yes"; then
11172     AC_MSG_RESULT([external])
11173     SYSTEM_HUNSPELL=TRUE
11174     AC_LANG_PUSH([C++])
11175     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11176     if test "$HUNSPELL_PC" != "TRUE"; then
11177         AC_CHECK_HEADER(hunspell.hxx, [],
11178             [
11179             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11180             [AC_MSG_ERROR(hunspell headers not found.)], [])
11181             ], [])
11182         AC_CHECK_LIB([hunspell], [main], [:],
11183            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11184         HUNSPELL_LIBS=-lhunspell
11185     fi
11186     AC_LANG_POP([C++])
11187     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11188     FilterLibs "${HUNSPELL_LIBS}"
11189     HUNSPELL_LIBS="${filteredlibs}"
11190 else
11191     AC_MSG_RESULT([internal])
11192     SYSTEM_HUNSPELL=
11193     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11194     if test "$COM" = "MSC"; then
11195         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11196     else
11197         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11198     fi
11199     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11201 AC_SUBST(SYSTEM_HUNSPELL)
11202 AC_SUBST(HUNSPELL_CFLAGS)
11203 AC_SUBST(HUNSPELL_LIBS)
11205 dnl ===================================================================
11206 dnl Check for system zxing
11207 dnl ===================================================================
11208 AC_MSG_CHECKING([whether to use zxing])
11209 if test "$enable_zxing" = "no"; then
11210     AC_MSG_RESULT([no])
11211     ENABLE_ZXING=
11212     SYSTEM_ZXING=
11213 else
11214     AC_MSG_RESULT([yes])
11215     ENABLE_ZXING=TRUE
11216     AC_MSG_CHECKING([which libzxing to use])
11217     if test "$with_system_zxing" = "yes"; then
11218         AC_MSG_RESULT([external])
11219         SYSTEM_ZXING=TRUE
11220         ZXING_CFLAGS=
11221         AC_LANG_PUSH([C++])
11222         save_CXXFLAGS=$CXXFLAGS
11223         save_IFS=$IFS
11224         IFS=$P_SEP
11225         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11226             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11227             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11228             dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11229             dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11230             dnl unsetting IFS."):
11231             IFS=$save_IFS
11232             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11233             dnl ignore them here:
11234             if test -z "$i"; then
11235                 continue
11236             fi
11237             dnl TODO: White space in $i would cause problems:
11238             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11239             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11240                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11241         done
11242         CXXFLAGS=$save_CXXFLAGS
11243         if test -z "$ZXING_CFLAGS"; then
11244             AC_MSG_ERROR(zxing headers not found.)
11245         fi
11246         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11247             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11248             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11249         AC_LANG_POP([C++])
11250         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11251         FilterLibs "${ZXING_LIBS}"
11252         ZXING_LIBS="${filteredlibs}"
11253     else
11254         AC_MSG_RESULT([internal])
11255         SYSTEM_ZXING=
11256         BUILD_TYPE="$BUILD_TYPE ZXING"
11257     fi
11258     if test "$ENABLE_ZXING" = TRUE; then
11259         AC_DEFINE(ENABLE_ZXING)
11260     fi
11262 AC_SUBST(SYSTEM_ZXING)
11263 AC_SUBST(ENABLE_ZXING)
11264 AC_SUBST(ZXING_CFLAGS)
11265 AC_SUBST(ZXING_LIBS)
11267 dnl ===================================================================
11268 dnl Check for system box2d
11269 dnl ===================================================================
11270 AC_MSG_CHECKING([which box2d to use])
11271 if test "$with_system_box2d" = "yes"; then
11272     AC_MSG_RESULT([external])
11273     SYSTEM_BOX2D=TRUE
11274     AC_LANG_PUSH([C++])
11275     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11276         [BOX2D_H_FOUND='FALSE'])
11277     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11278         _BOX2D_LIB=box2d
11279         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11280     else
11281         # fail this. there's no other alternative to check when we are here.
11282         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11283             [AC_MSG_ERROR(box2d headers not found.)])
11284         _BOX2D_LIB=Box2D
11285         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11286     fi
11287     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11288         [ AC_MSG_ERROR(box2d library not found.) ], [])
11289     BOX2D_LIBS=-l$_BOX2D_LIB
11290     AC_LANG_POP([C++])
11291     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11292     FilterLibs "${BOX2D_LIBS}"
11293     BOX2D_LIBS="${filteredlibs}"
11294 else
11295     AC_MSG_RESULT([internal])
11296     SYSTEM_BOX2D=
11297     BUILD_TYPE="$BUILD_TYPE BOX2D"
11299 AC_SUBST(SYSTEM_BOX2D)
11300 AC_SUBST(BOX2D_CFLAGS)
11301 AC_SUBST(BOX2D_LIBS)
11303 dnl ===================================================================
11304 dnl Checking for altlinuxhyph
11305 dnl ===================================================================
11306 AC_MSG_CHECKING([which altlinuxhyph to use])
11307 if test "$with_system_altlinuxhyph" = "yes"; then
11308     AC_MSG_RESULT([external])
11309     SYSTEM_HYPH=TRUE
11310     AC_CHECK_HEADER(hyphen.h, [],
11311        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11312     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11313        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11314        [#include <hyphen.h>])
11315     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11316         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11317     if test -z "$HYPHEN_LIB"; then
11318         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11319            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11320     fi
11321     if test -z "$HYPHEN_LIB"; then
11322         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11323            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11324     fi
11325 else
11326     AC_MSG_RESULT([internal])
11327     SYSTEM_HYPH=
11328     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11329     if test "$COM" = "MSC"; then
11330         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11331     else
11332         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11333     fi
11335 AC_SUBST(SYSTEM_HYPH)
11336 AC_SUBST(HYPHEN_LIB)
11338 dnl ===================================================================
11339 dnl Checking for mythes
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which mythes to use])
11342 if test "$with_system_mythes" = "yes"; then
11343     AC_MSG_RESULT([external])
11344     SYSTEM_MYTHES=TRUE
11345     AC_LANG_PUSH([C++])
11346     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11347     if test "$MYTHES_PKGCONFIG" = "no"; then
11348         AC_CHECK_HEADER(mythes.hxx, [],
11349             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11350         AC_CHECK_LIB([mythes-1.2], [main], [:],
11351             [ MYTHES_FOUND=no], [])
11352     if test "$MYTHES_FOUND" = "no"; then
11353         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11354                 [ MYTHES_FOUND=no], [])
11355     fi
11356     if test "$MYTHES_FOUND" = "no"; then
11357         AC_MSG_ERROR([mythes library not found!.])
11358     fi
11359     fi
11360     AC_LANG_POP([C++])
11361     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11362     FilterLibs "${MYTHES_LIBS}"
11363     MYTHES_LIBS="${filteredlibs}"
11364 else
11365     AC_MSG_RESULT([internal])
11366     SYSTEM_MYTHES=
11367     BUILD_TYPE="$BUILD_TYPE MYTHES"
11368     if test "$COM" = "MSC"; then
11369         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11370     else
11371         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11372     fi
11374 AC_SUBST(SYSTEM_MYTHES)
11375 AC_SUBST(MYTHES_CFLAGS)
11376 AC_SUBST(MYTHES_LIBS)
11378 dnl ===================================================================
11379 dnl How should we build the linear programming solver ?
11380 dnl ===================================================================
11382 ENABLE_COINMP=
11383 AC_MSG_CHECKING([whether to build with CoinMP])
11384 if test "$enable_coinmp" != "no"; then
11385     ENABLE_COINMP=TRUE
11386     AC_MSG_RESULT([yes])
11387     if test "$with_system_coinmp" = "yes"; then
11388         SYSTEM_COINMP=TRUE
11389         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11390         FilterLibs "${COINMP_LIBS}"
11391         COINMP_LIBS="${filteredlibs}"
11392     else
11393         BUILD_TYPE="$BUILD_TYPE COINMP"
11394     fi
11395 else
11396     AC_MSG_RESULT([no])
11398 AC_SUBST(ENABLE_COINMP)
11399 AC_SUBST(SYSTEM_COINMP)
11400 AC_SUBST(COINMP_CFLAGS)
11401 AC_SUBST(COINMP_LIBS)
11403 ENABLE_LPSOLVE=
11404 AC_MSG_CHECKING([whether to build with lpsolve])
11405 if test "$enable_lpsolve" != "no"; then
11406     ENABLE_LPSOLVE=TRUE
11407     AC_MSG_RESULT([yes])
11408 else
11409     AC_MSG_RESULT([no])
11411 AC_SUBST(ENABLE_LPSOLVE)
11413 if test "$ENABLE_LPSOLVE" = TRUE; then
11414     AC_MSG_CHECKING([which lpsolve to use])
11415     if test "$with_system_lpsolve" = "yes"; then
11416         AC_MSG_RESULT([external])
11417         SYSTEM_LPSOLVE=TRUE
11418         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11419            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11420         save_LIBS=$LIBS
11421         # some systems need this. Like Ubuntu...
11422         AC_CHECK_LIB(m, floor)
11423         AC_CHECK_LIB(dl, dlopen)
11424         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11425             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11426         LIBS=$save_LIBS
11427     else
11428         AC_MSG_RESULT([internal])
11429         SYSTEM_LPSOLVE=
11430         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11431     fi
11433 AC_SUBST(SYSTEM_LPSOLVE)
11435 dnl ===================================================================
11436 dnl Checking for libexttextcat
11437 dnl ===================================================================
11438 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11439 if test "$with_system_libexttextcat" = "yes"; then
11440     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11442 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11444 dnl ===================================================================
11445 dnl Checking for libnumbertext
11446 dnl ===================================================================
11447 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11448 if test "$with_system_libnumbertext" = "yes"; then
11449     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11450     SYSTEM_LIBNUMBERTEXT=YES
11451 else
11452     SYSTEM_LIBNUMBERTEXT=
11454 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11455 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11457 dnl ***************************************
11458 dnl testing libc version for Linux...
11459 dnl ***************************************
11460 if test "$_os" = "Linux"; then
11461     AC_MSG_CHECKING([whether the libc is recent enough])
11462     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11463     #include <features.h>
11464     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11465     #error glibc >= 2.1 is required
11466     #endif
11467     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11470 dnl =========================================
11471 dnl Check for uuidgen
11472 dnl =========================================
11473 if test "$_os" = "WINNT"; then
11474     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11475     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11476     UUIDGEN=uuidgen.exe
11477     AC_SUBST(UUIDGEN)
11478 else
11479     AC_PATH_PROG([UUIDGEN], [uuidgen])
11480     if test -z "$UUIDGEN"; then
11481         AC_MSG_WARN([uuid is needed for building installation sets])
11482     fi
11485 dnl ***************************************
11486 dnl Checking for bison and flex
11487 dnl ***************************************
11488 AC_PATH_PROG(BISON, bison)
11489 if test -z "$BISON"; then
11490     AC_MSG_ERROR([no bison found in \$PATH, install it])
11491 else
11492     AC_MSG_CHECKING([the bison version])
11493     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11494     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11495     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11496     dnl cause
11497     dnl
11498     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]
11499     dnl   typedef union YYSTYPE
11500     dnl           ~~~~~~^~~~~~~
11501     dnl
11502     dnl while at least 3.4.1 is know to be good:
11503     if test "$COMPILER_PLUGINS" = TRUE; then
11504         if test "$_bison_longver" -lt 2004; then
11505             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11506         fi
11507     else
11508         if test "$_bison_longver" -lt 2000; then
11509             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11510         fi
11511     fi
11513 AC_SUBST([BISON])
11515 AC_PATH_PROG(FLEX, flex)
11516 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11517     FLEX=`cygpath -m $FLEX`
11519 if test -z "$FLEX"; then
11520     AC_MSG_ERROR([no flex found in \$PATH, install it])
11521 else
11522     AC_MSG_CHECKING([the flex version])
11523     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11524     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11525         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11526     fi
11528 AC_SUBST([FLEX])
11530 AC_PATH_PROG(DIFF, diff)
11531 if test -z "$DIFF"; then
11532     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11534 AC_SUBST([DIFF])
11536 AC_PATH_PROG(UNIQ, uniq)
11537 if test -z "$UNIQ"; then
11538     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11540 AC_SUBST([UNIQ])
11542 dnl ***************************************
11543 dnl Checking for patch
11544 dnl ***************************************
11545 AC_PATH_PROG(PATCH, patch)
11546 if test -z "$PATCH"; then
11547     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11550 dnl On Solaris or macOS, check if --with-gnu-patch was used
11551 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11552     if test -z "$with_gnu_patch"; then
11553         GNUPATCH=$PATCH
11554     else
11555         if test -x "$with_gnu_patch"; then
11556             GNUPATCH=$with_gnu_patch
11557         else
11558             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11559         fi
11560     fi
11562     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11563     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11564         AC_MSG_RESULT([yes])
11565     else
11566         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11567             AC_MSG_RESULT([no, but accepted (Apple patch)])
11568             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11569         else
11570             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11571         fi
11572     fi
11573 else
11574     GNUPATCH=$PATCH
11577 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11578     GNUPATCH=`cygpath -m $GNUPATCH`
11581 dnl We also need to check for --with-gnu-cp
11583 if test -z "$with_gnu_cp"; then
11584     # check the place where the good stuff is hidden on Solaris...
11585     if test -x /usr/gnu/bin/cp; then
11586         GNUCP=/usr/gnu/bin/cp
11587     else
11588         AC_PATH_PROGS(GNUCP, gnucp cp)
11589     fi
11590     if test -z $GNUCP; then
11591         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11592     fi
11593 else
11594     if test -x "$with_gnu_cp"; then
11595         GNUCP=$with_gnu_cp
11596     else
11597         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11598     fi
11601 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11602     GNUCP=`cygpath -m $GNUCP`
11605 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11606 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11607     AC_MSG_RESULT([yes])
11608 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11609     AC_MSG_RESULT([yes])
11610 else
11611     case "$build_os" in
11612     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11613         x_GNUCP=[\#]
11614         GNUCP=''
11615         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11616         ;;
11617     *)
11618         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11619         ;;
11620     esac
11623 AC_SUBST(GNUPATCH)
11624 AC_SUBST(GNUCP)
11625 AC_SUBST(x_GNUCP)
11627 dnl ***************************************
11628 dnl testing assembler path
11629 dnl ***************************************
11630 ML_EXE=""
11631 if test "$_os" = "WINNT"; then
11632     case "$WIN_HOST_ARCH" in
11633     x86) assembler=ml.exe ;;
11634     x64) assembler=ml64.exe ;;
11635     arm64) assembler=armasm64.exe ;;
11636     esac
11638     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11639     if test -f "$MSVC_HOST_PATH/$assembler"; then
11640         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11641         AC_MSG_RESULT([$ML_EXE])
11642     else
11643         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11644     fi
11647 AC_SUBST(ML_EXE)
11649 dnl ===================================================================
11650 dnl We need zip and unzip
11651 dnl ===================================================================
11652 AC_PATH_PROG(ZIP, zip)
11653 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11654 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11655     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],,)
11658 AC_PATH_PROG(UNZIP, unzip)
11659 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11661 dnl ===================================================================
11662 dnl Zip must be a specific type for different build types.
11663 dnl ===================================================================
11664 if test $build_os = cygwin; then
11665     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11666         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11667     fi
11670 dnl ===================================================================
11671 dnl We need touch with -h option support.
11672 dnl ===================================================================
11673 AC_PATH_PROG(TOUCH, touch)
11674 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11675 touch "$WARNINGS_FILE"
11676 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11677     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],,)
11680 dnl ===================================================================
11681 dnl Check for system epoxy
11682 dnl ===================================================================
11683 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11684 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11686 dnl ===================================================================
11687 dnl Set vcl option: coordinate device in double or sal_Int32
11688 dnl ===================================================================
11690 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11691 if test "$enable_float_device_pixel" = yes; then
11692     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11693     AC_MSG_RESULT([double])
11694 else
11695     AC_MSG_RESULT([sal_Int32])
11698 dnl ===================================================================
11699 dnl Show which vclplugs will be built.
11700 dnl ===================================================================
11701 R=""
11703 libo_ENABLE_VCLPLUG([gen])
11704 libo_ENABLE_VCLPLUG([gtk3])
11705 libo_ENABLE_VCLPLUG([gtk3_kde5])
11706 libo_ENABLE_VCLPLUG([gtk4])
11707 libo_ENABLE_VCLPLUG([kf5])
11708 libo_ENABLE_VCLPLUG([qt5])
11709 libo_ENABLE_VCLPLUG([qt6])
11711 if test "$_os" = "WINNT"; then
11712     R="$R win"
11713 elif test "$_os" = "Darwin"; then
11714     R="$R osx"
11715 elif test "$_os" = "iOS"; then
11716     R="ios"
11717 elif test "$_os" = Android; then
11718     R="android"
11721 build_vcl_plugins="$R"
11722 if test -z "$build_vcl_plugins"; then
11723     build_vcl_plugins=" none"
11725 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11726 VCL_PLUGIN_INFO=$R
11727 AC_SUBST([VCL_PLUGIN_INFO])
11729 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11730     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11733 dnl ===================================================================
11734 dnl Check for GTK libraries
11735 dnl ===================================================================
11737 GTK3_CFLAGS=""
11738 GTK3_LIBS=""
11739 ENABLE_GTKTILEDVIEWER=""
11740 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11741     if test "$with_system_cairo" = no; then
11742         add_warning 'Non-system cairo combined with gtk3 is known to cause trouble (eg. broken image in the splashscreen). Use --with-system-cairo unless you know what you are doing.'
11743     fi
11744     : ${with_system_cairo:=yes}
11745     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)
11746     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11747     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11748     FilterLibs "${GTK3_LIBS}"
11749     GTK3_LIBS="${filteredlibs}"
11751     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11752     if test "$with_system_epoxy" != "yes"; then
11753         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11754         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11755                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11756     fi
11757 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11758     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11759     if test "$build_os" = "cygwin"; then
11760         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11761         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11762     fi
11764     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11765     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11766     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11767     FilterLibs "${GTK3_LIBS}"
11768     GTK3_LIBS="${filteredlibs}"
11769     ENABLE_GTKTILEDVIEWER="yes"
11771 AC_SUBST(GTK3_LIBS)
11772 AC_SUBST(GTK3_CFLAGS)
11773 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11775 GTK4_CFLAGS=""
11776 GTK4_LIBS=""
11777 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11778     if test "$with_system_cairo" = no; then
11779         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11780     fi
11781     : ${with_system_cairo:=yes}
11782     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11783     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11784     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11785     FilterLibs "${GTK4_LIBS}"
11786     GTK4_LIBS="${filteredlibs}"
11788     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11789     if test "$with_system_epoxy" != "yes"; then
11790         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11791         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11792                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11793     fi
11795 AC_SUBST(GTK4_LIBS)
11796 AC_SUBST(GTK4_CFLAGS)
11798 if test "$enable_introspection" = yes; then
11799     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11800         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11801     else
11802         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11803     fi
11806 dnl ===================================================================
11807 dnl check for dbus support
11808 dnl ===================================================================
11809 ENABLE_DBUS=""
11810 DBUS_CFLAGS=""
11811 DBUS_LIBS=""
11812 DBUS_GLIB_CFLAGS=""
11813 DBUS_GLIB_LIBS=""
11814 DBUS_HAVE_GLIB=""
11816 if test "$enable_dbus" = "no"; then
11817     test_dbus=no
11820 AC_MSG_CHECKING([whether to enable DBUS support])
11821 if test "$test_dbus" = "yes"; then
11822     ENABLE_DBUS="TRUE"
11823     AC_MSG_RESULT([yes])
11824     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11825     AC_DEFINE(ENABLE_DBUS)
11826     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11827     FilterLibs "${DBUS_LIBS}"
11828     DBUS_LIBS="${filteredlibs}"
11830     # Glib is needed for BluetoothServer
11831     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11832     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11833         [
11834             DBUS_HAVE_GLIB="TRUE"
11835             AC_DEFINE(DBUS_HAVE_GLIB,1)
11836         ],
11837         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11838     )
11839 else
11840     AC_MSG_RESULT([no])
11843 AC_SUBST(ENABLE_DBUS)
11844 AC_SUBST(DBUS_CFLAGS)
11845 AC_SUBST(DBUS_LIBS)
11846 AC_SUBST(DBUS_GLIB_CFLAGS)
11847 AC_SUBST(DBUS_GLIB_LIBS)
11848 AC_SUBST(DBUS_HAVE_GLIB)
11850 AC_MSG_CHECKING([whether to enable Impress remote control])
11851 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11852     AC_MSG_RESULT([yes])
11853     ENABLE_SDREMOTE=TRUE
11854     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11855         <true/>"
11856     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11858     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11859         # The Bluetooth code doesn't compile with macOS SDK 10.15
11860         if test "$enable_sdremote_bluetooth" = yes; then
11861             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11862         fi
11863         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11864         enable_sdremote_bluetooth=no
11865     fi
11866     # If not explicitly enabled or disabled, default
11867     if test -z "$enable_sdremote_bluetooth"; then
11868         case "$OS" in
11869         LINUX|MACOSX|WNT)
11870             # Default to yes for these
11871             enable_sdremote_bluetooth=yes
11872             ;;
11873         *)
11874             # otherwise no
11875             enable_sdremote_bluetooth=no
11876             ;;
11877         esac
11878     fi
11879     # $enable_sdremote_bluetooth is guaranteed non-empty now
11881     if test "$enable_sdremote_bluetooth" != "no"; then
11882         if test "$OS" = "LINUX"; then
11883             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11884                 AC_MSG_RESULT([yes])
11885                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11886                 dnl ===================================================================
11887                 dnl Check for system bluez
11888                 dnl ===================================================================
11889                 AC_MSG_CHECKING([which Bluetooth header to use])
11890                 if test "$with_system_bluez" = "yes"; then
11891                     AC_MSG_RESULT([external])
11892                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11893                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11894                     SYSTEM_BLUEZ=TRUE
11895                 else
11896                     AC_MSG_RESULT([internal])
11897                     SYSTEM_BLUEZ=
11898                 fi
11899             else
11900                 AC_MSG_RESULT([no, dbus disabled])
11901                 ENABLE_SDREMOTE_BLUETOOTH=
11902                 SYSTEM_BLUEZ=
11903             fi
11904         else
11905             AC_MSG_RESULT([yes])
11906             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11907             SYSTEM_BLUEZ=
11908             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11909         <key>com.apple.security.device.bluetooth</key>
11910         <true/>"
11911         fi
11912     else
11913         AC_MSG_RESULT([no])
11914         ENABLE_SDREMOTE_BLUETOOTH=
11915         SYSTEM_BLUEZ=
11916     fi
11917 else
11918     ENABLE_SDREMOTE=
11919     SYSTEM_BLUEZ=
11920     AC_MSG_RESULT([no])
11922 AC_SUBST(ENABLE_SDREMOTE)
11923 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11924 AC_SUBST(SDREMOTE_ENTITLEMENT)
11925 AC_SUBST(SYSTEM_BLUEZ)
11927 dnl ===================================================================
11928 dnl Check whether to enable GIO support
11929 dnl ===================================================================
11930 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11931     AC_MSG_CHECKING([whether to enable GIO support])
11932     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11933         dnl Need at least 2.26 for the dbus support.
11934         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11935                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11936         if test "$ENABLE_GIO" = "TRUE"; then
11937             AC_DEFINE(ENABLE_GIO)
11938             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11939             FilterLibs "${GIO_LIBS}"
11940             GIO_LIBS="${filteredlibs}"
11941         fi
11942     else
11943         AC_MSG_RESULT([no])
11944     fi
11946 AC_SUBST(ENABLE_GIO)
11947 AC_SUBST(GIO_CFLAGS)
11948 AC_SUBST(GIO_LIBS)
11951 dnl ===================================================================
11953 SPLIT_APP_MODULES=""
11954 if test "$enable_split_app_modules" = "yes"; then
11955     SPLIT_APP_MODULES="TRUE"
11957 AC_SUBST(SPLIT_APP_MODULES)
11959 SPLIT_OPT_FEATURES=""
11960 if test "$enable_split_opt_features" = "yes"; then
11961     SPLIT_OPT_FEATURES="TRUE"
11963 AC_SUBST(SPLIT_OPT_FEATURES)
11965 dnl ===================================================================
11966 dnl Check whether the GStreamer libraries are available.
11967 dnl ===================================================================
11969 ENABLE_GSTREAMER_1_0=""
11971 if test "$test_gstreamer_1_0" = yes; then
11973     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11974     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11975         ENABLE_GSTREAMER_1_0="TRUE"
11976         AC_MSG_RESULT([yes])
11977         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11978         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11979         FilterLibs "${GSTREAMER_1_0_LIBS}"
11980         GSTREAMER_1_0_LIBS="${filteredlibs}"
11981         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11982     else
11983         AC_MSG_RESULT([no])
11984     fi
11986 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11987 AC_SUBST(GSTREAMER_1_0_LIBS)
11988 AC_SUBST(ENABLE_GSTREAMER_1_0)
11990 ENABLE_OPENGL_TRANSITIONS=
11991 ENABLE_OPENGL_CANVAS=
11992 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11993    : # disable
11994 elif test "$_os" = "Darwin"; then
11995     # We use frameworks on macOS, no need for detail checks
11996     ENABLE_OPENGL_TRANSITIONS=TRUE
11997     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11998     ENABLE_OPENGL_CANVAS=TRUE
11999 elif test $_os = WINNT; then
12000     ENABLE_OPENGL_TRANSITIONS=TRUE
12001     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12002     ENABLE_OPENGL_CANVAS=TRUE
12003 else
12004     if test "$USING_X11" = TRUE; then
12005         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12006         ENABLE_OPENGL_TRANSITIONS=TRUE
12007         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12008         ENABLE_OPENGL_CANVAS=TRUE
12009     fi
12012 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12013 AC_SUBST(ENABLE_OPENGL_CANVAS)
12015 dnl =================================================
12016 dnl Check whether to build with OpenCL support.
12017 dnl =================================================
12019 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12020     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12021     # platform (optional at run-time, used through clew).
12022     BUILD_TYPE="$BUILD_TYPE OPENCL"
12023     AC_DEFINE(HAVE_FEATURE_OPENCL)
12026 dnl =================================================
12027 dnl Check whether to build with dconf support.
12028 dnl =================================================
12030 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12031     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12032         if test "$enable_dconf" = yes; then
12033             AC_MSG_ERROR([dconf not found])
12034         else
12035             enable_dconf=no
12036         fi])
12038 AC_MSG_CHECKING([whether to enable dconf])
12039 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12040     DCONF_CFLAGS=
12041     DCONF_LIBS=
12042     ENABLE_DCONF=
12043     AC_MSG_RESULT([no])
12044 else
12045     ENABLE_DCONF=TRUE
12046     AC_DEFINE(ENABLE_DCONF)
12047     AC_MSG_RESULT([yes])
12049 AC_SUBST([DCONF_CFLAGS])
12050 AC_SUBST([DCONF_LIBS])
12051 AC_SUBST([ENABLE_DCONF])
12053 # pdf import?
12054 AC_MSG_CHECKING([whether to build the PDF import feature])
12055 ENABLE_PDFIMPORT=
12056 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12057     AC_MSG_RESULT([yes])
12058     ENABLE_PDFIMPORT=TRUE
12059     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12060 else
12061     AC_MSG_RESULT([no])
12064 # Pdfium?
12065 AC_MSG_CHECKING([whether to build PDFium])
12066 ENABLE_PDFIUM=
12067 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12068     AC_MSG_RESULT([yes])
12069     ENABLE_PDFIUM=TRUE
12070     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12071 else
12072     AC_MSG_RESULT([no])
12074 AC_SUBST(ENABLE_PDFIUM)
12076 if test "$ENABLE_PDFIUM" = "TRUE"; then
12077     AC_MSG_CHECKING([which OpenJPEG library to use])
12078     if test "$with_system_openjpeg" = "yes"; then
12079         SYSTEM_OPENJPEG2=TRUE
12080         AC_MSG_RESULT([external])
12081         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12082         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12083         FilterLibs "${OPENJPEG2_LIBS}"
12084         OPENJPEG2_LIBS="${filteredlibs}"
12085     else
12086         SYSTEM_OPENJPEG2=FALSE
12087         AC_MSG_RESULT([internal])
12088     fi
12090     AC_MSG_CHECKING([which Abseil library to use])
12091     if test "$with_system_abseil" = "yes"; then
12092         AC_MSG_RESULT([external])
12093         SYSTEM_ABSEIL=TRUE
12094         AC_LANG_PUSH([C++])
12095         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12096                         [AC_MSG_ERROR(abseil headers not found.)], [])
12097         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12098                         [AC_MSG_ERROR(abseil headers not found.)], [])
12099         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12100                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12101         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12102                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12103         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12104         AC_LANG_POP([C++])
12105         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12106         FilterLibs "${ABSEIL_LIBS}"
12107         ABSEIL_LIBS="${filteredlibs}"
12108     else
12109         AC_MSG_RESULT([internal])
12110     fi
12112 AC_SUBST(SYSTEM_OPENJPEG2)
12113 AC_SUBST(SYSTEM_ABSEIL)
12114 AC_SUBST(ABSEIL_CFLAGS)
12115 AC_SUBST(ABSEIL_LIBS)
12117 dnl ===================================================================
12118 dnl Check for poppler
12119 dnl ===================================================================
12120 ENABLE_POPPLER=
12121 AC_MSG_CHECKING([whether to build Poppler])
12122 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12123     AC_MSG_RESULT([yes])
12124     ENABLE_POPPLER=TRUE
12125     AC_DEFINE(HAVE_FEATURE_POPPLER)
12126 else
12127     AC_MSG_RESULT([no])
12129 AC_SUBST(ENABLE_POPPLER)
12131 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12132     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12135 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12136     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12139 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12140     dnl ===================================================================
12141     dnl Check for system poppler
12142     dnl ===================================================================
12143     AC_MSG_CHECKING([which PDF import poppler to use])
12144     if test "$with_system_poppler" = "yes"; then
12145         AC_MSG_RESULT([external])
12146         SYSTEM_POPPLER=TRUE
12147         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12148         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12149         FilterLibs "${POPPLER_LIBS}"
12150         POPPLER_LIBS="${filteredlibs}"
12151     else
12152         AC_MSG_RESULT([internal])
12153         SYSTEM_POPPLER=
12154         BUILD_TYPE="$BUILD_TYPE POPPLER"
12155     fi
12156     AC_DEFINE([ENABLE_PDFIMPORT],1)
12158 AC_SUBST(ENABLE_PDFIMPORT)
12159 AC_SUBST(SYSTEM_POPPLER)
12160 AC_SUBST(POPPLER_CFLAGS)
12161 AC_SUBST(POPPLER_LIBS)
12163 # Skia?
12164 ENABLE_SKIA=
12165 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12166     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12167     if test "$SYSTEM_FREETYPE" = TRUE; then
12168         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12169             [skia_freetype_ok=yes],
12170             [skia_freetype_ok=no])
12171     else # internal is ok
12172         skia_freetype_ok=yes
12173     fi
12174     AC_MSG_CHECKING([whether to build Skia])
12175     if test "$skia_freetype_ok" = "yes"; then
12176         if test "$enable_skia" = "debug"; then
12177             AC_MSG_RESULT([yes (debug)])
12178             ENABLE_SKIA_DEBUG=TRUE
12179         else
12180             AC_MSG_RESULT([yes])
12181             ENABLE_SKIA_DEBUG=
12182         fi
12183         ENABLE_SKIA=TRUE
12184         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12185                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12186         fi
12188         AC_DEFINE(HAVE_FEATURE_SKIA)
12189         BUILD_TYPE="$BUILD_TYPE SKIA"
12191         if test "$OS" = "MACOSX"; then
12192             AC_DEFINE(SK_SUPPORT_GPU,1)
12193             AC_DEFINE(SK_METAL,1)
12194             SKIA_GPU=METAL
12195             AC_SUBST(SKIA_GPU)
12196         else
12197             AC_DEFINE(SK_SUPPORT_GPU,1)
12198             AC_DEFINE(SK_VULKAN,1)
12199             SKIA_GPU=VULKAN
12200             AC_SUBST(SKIA_GPU)
12201         fi
12202     else
12203         AC_MSG_RESULT([no (freetype too old)])
12204         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12205     fi
12207 else
12208     AC_MSG_CHECKING([whether to build Skia])
12209     AC_MSG_RESULT([no])
12211 AC_SUBST(ENABLE_SKIA)
12212 AC_SUBST(ENABLE_SKIA_DEBUG)
12214 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12215 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12216 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12217 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12218 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12219 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12220 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12221 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12222 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12223 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12224 HAVE_LO_CLANG_DLLEXPORTINLINES=
12226 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12227     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12228         AC_MSG_CHECKING([for Clang])
12229         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12230     else
12231         if test "$_os" = "WINNT"; then
12232             AC_MSG_CHECKING([for clang-cl])
12233             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12234                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12235             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12236                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12237             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12238                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12239             fi
12240             if test -n "$LO_CLANG_CC"; then
12241                 dnl explicitly set -m32/-m64
12242                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12243                 LO_CLANG_CXX="$LO_CLANG_CC"
12244                 AC_MSG_RESULT([$LO_CLANG_CC])
12245             else
12246                 AC_MSG_RESULT([no])
12247             fi
12249             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12250             echo "#include <stdlib.h>" > conftest.c
12251             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12252                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12253             rm -f conftest.c conftest.obj
12254             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12255                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12256             else
12257                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12258             fi
12259         else
12260             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12261             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12262         fi
12263     fi
12264     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12265         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12266         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12267         if test "$clang2_ver" -lt 50002; then
12268             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12269             LO_CLANG_CC=
12270             LO_CLANG_CXX=
12271         fi
12272     fi
12273     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12274         save_CXX="$CXX"
12275         CXX="$LO_CLANG_CXX"
12276         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12277         AC_LANG_PUSH([C++])
12278         save_CXXFLAGS=$CXXFLAGS
12279         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12280         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12281                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12282                 AC_MSG_RESULT([yes])
12283             ], [AC_MSG_RESULT([no])])
12284         CXXFLAGS=$save_CXXFLAGS
12285         AC_LANG_POP([C++])
12286         CXX="$save_CXX"
12287         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12288             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.])
12289         fi
12290     fi
12291     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12292         # Skia is the default on Windows and Mac, so hard-require Clang.
12293         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12294         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12295             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12296         else
12297             AC_MSG_WARN([Clang compiler not found.])
12298         fi
12299     else
12301         save_CXX="$CXX"
12302         CXX="$LO_CLANG_CXX"
12303         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12304         flag_sse2=-msse2
12305         flag_ssse3=-mssse3
12306         flag_sse41=-msse4.1
12307         flag_sse42=-msse4.2
12308         flag_avx=-mavx
12309         flag_avx2=-mavx2
12310         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12311         flag_avx512f=-mavx512f
12312         flag_f16c=-mf16c
12313         flag_fma=-mfma
12315         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12316         AC_LANG_PUSH([C++])
12317         save_CXXFLAGS=$CXXFLAGS
12318         CXXFLAGS="$CXXFLAGS $flag_sse2"
12319         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12320             #include <emmintrin.h>
12321             int main () {
12322                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12323                 c = _mm_xor_si128 (a, b);
12324                 return 0;
12325             }
12326             ])],
12327             [can_compile_sse2=yes],
12328             [can_compile_sse2=no])
12329         AC_LANG_POP([C++])
12330         CXXFLAGS=$save_CXXFLAGS
12331         AC_MSG_RESULT([${can_compile_sse2}])
12332         if test "${can_compile_sse2}" = "yes" ; then
12333             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12334         fi
12336         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12337         AC_LANG_PUSH([C++])
12338         save_CXXFLAGS=$CXXFLAGS
12339         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12340         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12341             #include <tmmintrin.h>
12342             int main () {
12343                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12344                 c = _mm_maddubs_epi16 (a, b);
12345                 return 0;
12346             }
12347             ])],
12348             [can_compile_ssse3=yes],
12349             [can_compile_ssse3=no])
12350         AC_LANG_POP([C++])
12351         CXXFLAGS=$save_CXXFLAGS
12352         AC_MSG_RESULT([${can_compile_ssse3}])
12353         if test "${can_compile_ssse3}" = "yes" ; then
12354             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12355         fi
12357         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12358         AC_LANG_PUSH([C++])
12359         save_CXXFLAGS=$CXXFLAGS
12360         CXXFLAGS="$CXXFLAGS $flag_sse41"
12361         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12362             #include <smmintrin.h>
12363             int main () {
12364                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12365                 c = _mm_cmpeq_epi64 (a, b);
12366                 return 0;
12367             }
12368             ])],
12369             [can_compile_sse41=yes],
12370             [can_compile_sse41=no])
12371         AC_LANG_POP([C++])
12372         CXXFLAGS=$save_CXXFLAGS
12373         AC_MSG_RESULT([${can_compile_sse41}])
12374         if test "${can_compile_sse41}" = "yes" ; then
12375             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12376         fi
12378         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12379         AC_LANG_PUSH([C++])
12380         save_CXXFLAGS=$CXXFLAGS
12381         CXXFLAGS="$CXXFLAGS $flag_sse42"
12382         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12383             #include <nmmintrin.h>
12384             int main () {
12385                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12386                 c = _mm_cmpgt_epi64 (a, b);
12387                 return 0;
12388             }
12389             ])],
12390             [can_compile_sse42=yes],
12391             [can_compile_sse42=no])
12392         AC_LANG_POP([C++])
12393         CXXFLAGS=$save_CXXFLAGS
12394         AC_MSG_RESULT([${can_compile_sse42}])
12395         if test "${can_compile_sse42}" = "yes" ; then
12396             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12397         fi
12399         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12400         AC_LANG_PUSH([C++])
12401         save_CXXFLAGS=$CXXFLAGS
12402         CXXFLAGS="$CXXFLAGS $flag_avx"
12403         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12404             #include <immintrin.h>
12405             int main () {
12406                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12407                 c = _mm256_xor_ps(a, b);
12408                 return 0;
12409             }
12410             ])],
12411             [can_compile_avx=yes],
12412             [can_compile_avx=no])
12413         AC_LANG_POP([C++])
12414         CXXFLAGS=$save_CXXFLAGS
12415         AC_MSG_RESULT([${can_compile_avx}])
12416         if test "${can_compile_avx}" = "yes" ; then
12417             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12418         fi
12420         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12421         AC_LANG_PUSH([C++])
12422         save_CXXFLAGS=$CXXFLAGS
12423         CXXFLAGS="$CXXFLAGS $flag_avx2"
12424         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12425             #include <immintrin.h>
12426             int main () {
12427                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12428                 c = _mm256_maddubs_epi16(a, b);
12429                 return 0;
12430             }
12431             ])],
12432             [can_compile_avx2=yes],
12433             [can_compile_avx2=no])
12434         AC_LANG_POP([C++])
12435         CXXFLAGS=$save_CXXFLAGS
12436         AC_MSG_RESULT([${can_compile_avx2}])
12437         if test "${can_compile_avx2}" = "yes" ; then
12438             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12439         fi
12441         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12442         AC_LANG_PUSH([C++])
12443         save_CXXFLAGS=$CXXFLAGS
12444         CXXFLAGS="$CXXFLAGS $flag_avx512"
12445         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12446             #include <immintrin.h>
12447             int main () {
12448                 __m512i a = _mm512_loadu_si512(0);
12449                 __m512d v1 = _mm512_load_pd(0);
12450                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12451                 __m512d v2 = _mm512_abs_pd(v1);
12452                 return 0;
12453             }
12454             ])],
12455             [can_compile_avx512=yes],
12456             [can_compile_avx512=no])
12457         AC_LANG_POP([C++])
12458         CXXFLAGS=$save_CXXFLAGS
12459         AC_MSG_RESULT([${can_compile_avx512}])
12460         if test "${can_compile_avx512}" = "yes" ; then
12461             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12462             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12463         fi
12465         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12466         AC_LANG_PUSH([C++])
12467         save_CXXFLAGS=$CXXFLAGS
12468         CXXFLAGS="$CXXFLAGS $flag_f16c"
12469         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12470             #include <immintrin.h>
12471             int main () {
12472                 __m128i a = _mm_set1_epi32 (0);
12473                 __m128 c;
12474                 c = _mm_cvtph_ps(a);
12475                 return 0;
12476             }
12477             ])],
12478             [can_compile_f16c=yes],
12479             [can_compile_f16c=no])
12480         AC_LANG_POP([C++])
12481         CXXFLAGS=$save_CXXFLAGS
12482         AC_MSG_RESULT([${can_compile_f16c}])
12483         if test "${can_compile_f16c}" = "yes" ; then
12484             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12485         fi
12487         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12488         AC_LANG_PUSH([C++])
12489         save_CXXFLAGS=$CXXFLAGS
12490         CXXFLAGS="$CXXFLAGS $flag_fma"
12491         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12492             #include <immintrin.h>
12493             int main () {
12494                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12495                 d = _mm256_fmadd_ps(a, b, c);
12496                 return 0;
12497             }
12498             ])],
12499             [can_compile_fma=yes],
12500             [can_compile_fma=no])
12501         AC_LANG_POP([C++])
12502         CXXFLAGS=$save_CXXFLAGS
12503         AC_MSG_RESULT([${can_compile_fma}])
12504         if test "${can_compile_fma}" = "yes" ; then
12505             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12506         fi
12508         CXX="$save_CXX"
12509     fi
12512 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12514 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12515     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12516     AC_LANG_PUSH([C])
12517     save_CC="$CC"
12518     CC="$LO_CLANG_CC"
12519     save_CFLAGS=$CFLAGS
12520     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12521     dnl an empty program will do, we're checking the compiler flags
12522     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12523                       [use_ccache=yes], [use_ccache=no])
12524     CFLAGS=$save_CFLAGS
12525     CC=$save_CC
12526     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12527         AC_MSG_RESULT([yes])
12528     else
12529         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12530         AC_MSG_RESULT([no])
12531     fi
12532     AC_LANG_POP([C])
12534     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12535     AC_LANG_PUSH([C++])
12536     save_CXX="$CXX"
12537     CXX="$LO_CLANG_CXX"
12538     save_CXXFLAGS=$CXXFLAGS
12539     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12540     dnl an empty program will do, we're checking the compiler flags
12541     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12542                       [use_ccache=yes], [use_ccache=no])
12543     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12544         AC_MSG_RESULT([yes])
12545     else
12546         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12547         AC_MSG_RESULT([no])
12548     fi
12549     CXXFLAGS=$save_CXXFLAGS
12550     CXX=$save_CXX
12551     AC_LANG_POP([C++])
12554 AC_SUBST(LO_CLANG_CC)
12555 AC_SUBST(LO_CLANG_CXX)
12556 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12557 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12558 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12559 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12560 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12561 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12562 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12563 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12564 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12565 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12566 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12567 AC_SUBST(CLANG_USE_LD)
12568 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12570 SYSTEM_GPGMEPP=
12572 AC_MSG_CHECKING([whether to enable gpgmepp])
12573 if test "$enable_gpgmepp" = no; then
12574     AC_MSG_RESULT([no])
12575 elif test "$enable_mpl_subset" = "yes"; then
12576     AC_MSG_RESULT([no (MPL only])
12577 elif test "$enable_fuzzers" = "yes"; then
12578     AC_MSG_RESULT([no (oss-fuzz)])
12579 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12580     AC_MSG_RESULT([yes])
12581     dnl ===================================================================
12582     dnl Check for system gpgme
12583     dnl ===================================================================
12584     AC_MSG_CHECKING([which gpgmepp to use])
12585     if test "$with_system_gpgmepp" = "yes"; then
12586         AC_MSG_RESULT([external])
12587         SYSTEM_GPGMEPP=TRUE
12589         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12590         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12591             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12592         AC_CHECK_HEADER(gpgme.h, [],
12593             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12594         AC_CHECK_LIB(gpgmepp, main, [],
12595             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12596         GPGMEPP_LIBS=-lgpgmepp
12597     else
12598         AC_MSG_RESULT([internal])
12599         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12601         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12602         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12603         if test "$_os" != "WINNT"; then
12604             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12605             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12606         fi
12607     fi
12608     ENABLE_GPGMEPP=TRUE
12609     AC_DEFINE([HAVE_FEATURE_GPGME])
12610     AC_PATH_PROG(GPG, gpg)
12611     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12612     # so let's exclude that manually for the moment
12613     if test -n "$GPG" -a "$_os" != "WINNT"; then
12614         # make sure we not only have a working gpgme, but a full working
12615         # gpg installation to run OpenPGP signature verification
12616         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12617     fi
12618     if test "$_os" = "Linux"; then
12619       uid=`id -u`
12620       AC_MSG_CHECKING([for /run/user/$uid])
12621       if test -d /run/user/$uid; then
12622         AC_MSG_RESULT([yes])
12623         AC_PATH_PROG(GPGCONF, gpgconf)
12625         # Older versions of gpgconf are not working as expected, since
12626         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12627         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12628         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12629         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12630         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12631         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12632         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12633           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12634           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12635           if $GPGCONF --dump-options > /dev/null ; then
12636             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12637               AC_MSG_RESULT([yes])
12638               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12639               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12640             else
12641               AC_MSG_RESULT([no])
12642             fi
12643           else
12644             AC_MSG_RESULT([no. missing or broken gpgconf?])
12645           fi
12646         else
12647           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12648         fi
12649       else
12650         AC_MSG_RESULT([no])
12651      fi
12652    fi
12653 else
12654     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12656 AC_SUBST(ENABLE_GPGMEPP)
12657 AC_SUBST(SYSTEM_GPGMEPP)
12658 AC_SUBST(GPG_ERROR_CFLAGS)
12659 AC_SUBST(GPG_ERROR_LIBS)
12660 AC_SUBST(LIBASSUAN_CFLAGS)
12661 AC_SUBST(LIBASSUAN_LIBS)
12662 AC_SUBST(GPGMEPP_CFLAGS)
12663 AC_SUBST(GPGMEPP_LIBS)
12665 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12666 if test "$with_java" != "no"; then
12667     AC_MSG_RESULT([yes])
12668     ENABLE_JAVA_WEBSOCKET=TRUE
12669     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12670     NEED_ANT=TRUE
12671 else
12672     AC_MSG_RESULT([no])
12673     ENABLE_JAVA_WEBSOCKET=
12675 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12677 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12678 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12679     AC_MSG_RESULT([yes])
12680     ENABLE_MEDIAWIKI=TRUE
12681     BUILD_TYPE="$BUILD_TYPE XSLTML"
12682     if test  "x$with_java" = "xno"; then
12683         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12684     fi
12685 else
12686     AC_MSG_RESULT([no])
12687     ENABLE_MEDIAWIKI=
12688     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12690 AC_SUBST(ENABLE_MEDIAWIKI)
12692 AC_MSG_CHECKING([whether to build the Report Builder])
12693 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12694     AC_MSG_RESULT([yes])
12695     ENABLE_REPORTBUILDER=TRUE
12696     AC_MSG_CHECKING([which jfreereport libs to use])
12697     if test "$with_system_jfreereport" = "yes"; then
12698         SYSTEM_JFREEREPORT=TRUE
12699         AC_MSG_RESULT([external])
12700         if test -z $SAC_JAR; then
12701             SAC_JAR=/usr/share/java/sac.jar
12702         fi
12703         if ! test -f $SAC_JAR; then
12704              AC_MSG_ERROR(sac.jar not found.)
12705         fi
12707         if test -z $LIBXML_JAR; then
12708             if test -f /usr/share/java/libxml-1.0.0.jar; then
12709                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12710             elif test -f /usr/share/java/libxml.jar; then
12711                 LIBXML_JAR=/usr/share/java/libxml.jar
12712             else
12713                 AC_MSG_ERROR(libxml.jar replacement not found.)
12714             fi
12715         elif ! test -f $LIBXML_JAR; then
12716             AC_MSG_ERROR(libxml.jar not found.)
12717         fi
12719         if test -z $FLUTE_JAR; then
12720             if test -f /usr/share/java/flute-1.3.0.jar; then
12721                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12722             elif test -f /usr/share/java/flute.jar; then
12723                 FLUTE_JAR=/usr/share/java/flute.jar
12724             else
12725                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12726             fi
12727         elif ! test -f $FLUTE_JAR; then
12728             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12729         fi
12731         if test -z $JFREEREPORT_JAR; then
12732             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12733                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12734             elif test -f /usr/share/java/flow-engine.jar; then
12735                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12736             else
12737                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12738             fi
12739         elif ! test -f  $JFREEREPORT_JAR; then
12740                 AC_MSG_ERROR(jfreereport.jar not found.)
12741         fi
12743         if test -z $LIBLAYOUT_JAR; then
12744             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12745                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12746             elif test -f /usr/share/java/liblayout.jar; then
12747                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12748             else
12749                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12750             fi
12751         elif ! test -f $LIBLAYOUT_JAR; then
12752                 AC_MSG_ERROR(liblayout.jar not found.)
12753         fi
12755         if test -z $LIBLOADER_JAR; then
12756             if test -f /usr/share/java/libloader-1.0.0.jar; then
12757                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12758             elif test -f /usr/share/java/libloader.jar; then
12759                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12760             else
12761                 AC_MSG_ERROR(libloader.jar replacement not found.)
12762             fi
12763         elif ! test -f  $LIBLOADER_JAR; then
12764             AC_MSG_ERROR(libloader.jar not found.)
12765         fi
12767         if test -z $LIBFORMULA_JAR; then
12768             if test -f /usr/share/java/libformula-0.2.0.jar; then
12769                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12770             elif test -f /usr/share/java/libformula.jar; then
12771                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12772             else
12773                 AC_MSG_ERROR(libformula.jar replacement not found.)
12774             fi
12775         elif ! test -f $LIBFORMULA_JAR; then
12776                 AC_MSG_ERROR(libformula.jar not found.)
12777         fi
12779         if test -z $LIBREPOSITORY_JAR; then
12780             if test -f /usr/share/java/librepository-1.0.0.jar; then
12781                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12782             elif test -f /usr/share/java/librepository.jar; then
12783                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12784             else
12785                 AC_MSG_ERROR(librepository.jar replacement not found.)
12786             fi
12787         elif ! test -f $LIBREPOSITORY_JAR; then
12788             AC_MSG_ERROR(librepository.jar not found.)
12789         fi
12791         if test -z $LIBFONTS_JAR; then
12792             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12793                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12794             elif test -f /usr/share/java/libfonts.jar; then
12795                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12796             else
12797                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12798             fi
12799         elif ! test -f $LIBFONTS_JAR; then
12800                 AC_MSG_ERROR(libfonts.jar not found.)
12801         fi
12803         if test -z $LIBSERIALIZER_JAR; then
12804             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12805                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12806             elif test -f /usr/share/java/libserializer.jar; then
12807                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12808             else
12809                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12810             fi
12811         elif ! test -f $LIBSERIALIZER_JAR; then
12812                 AC_MSG_ERROR(libserializer.jar not found.)
12813         fi
12815         if test -z $LIBBASE_JAR; then
12816             if test -f /usr/share/java/libbase-1.0.0.jar; then
12817                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12818             elif test -f /usr/share/java/libbase.jar; then
12819                 LIBBASE_JAR=/usr/share/java/libbase.jar
12820             else
12821                 AC_MSG_ERROR(libbase.jar replacement not found.)
12822             fi
12823         elif ! test -f $LIBBASE_JAR; then
12824             AC_MSG_ERROR(libbase.jar not found.)
12825         fi
12827     else
12828         AC_MSG_RESULT([internal])
12829         SYSTEM_JFREEREPORT=
12830         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12831         NEED_ANT=TRUE
12832     fi
12833 else
12834     AC_MSG_RESULT([no])
12835     ENABLE_REPORTBUILDER=
12836     SYSTEM_JFREEREPORT=
12838 AC_SUBST(ENABLE_REPORTBUILDER)
12839 AC_SUBST(SYSTEM_JFREEREPORT)
12840 AC_SUBST(SAC_JAR)
12841 AC_SUBST(LIBXML_JAR)
12842 AC_SUBST(FLUTE_JAR)
12843 AC_SUBST(JFREEREPORT_JAR)
12844 AC_SUBST(LIBBASE_JAR)
12845 AC_SUBST(LIBLAYOUT_JAR)
12846 AC_SUBST(LIBLOADER_JAR)
12847 AC_SUBST(LIBFORMULA_JAR)
12848 AC_SUBST(LIBREPOSITORY_JAR)
12849 AC_SUBST(LIBFONTS_JAR)
12850 AC_SUBST(LIBSERIALIZER_JAR)
12852 # scripting provider for BeanShell?
12853 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12854 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12855     AC_MSG_RESULT([yes])
12856     ENABLE_SCRIPTING_BEANSHELL=TRUE
12858     dnl ===================================================================
12859     dnl Check for system beanshell
12860     dnl ===================================================================
12861     AC_MSG_CHECKING([which beanshell to use])
12862     if test "$with_system_beanshell" = "yes"; then
12863         AC_MSG_RESULT([external])
12864         SYSTEM_BSH=TRUE
12865         if test -z $BSH_JAR; then
12866             BSH_JAR=/usr/share/java/bsh.jar
12867         fi
12868         if ! test -f $BSH_JAR; then
12869             AC_MSG_ERROR(bsh.jar not found.)
12870         fi
12871     else
12872         AC_MSG_RESULT([internal])
12873         SYSTEM_BSH=
12874         BUILD_TYPE="$BUILD_TYPE BSH"
12875     fi
12876 else
12877     AC_MSG_RESULT([no])
12878     ENABLE_SCRIPTING_BEANSHELL=
12879     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12881 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12882 AC_SUBST(SYSTEM_BSH)
12883 AC_SUBST(BSH_JAR)
12885 # scripting provider for JavaScript?
12886 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12887 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12888     AC_MSG_RESULT([yes])
12889     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12891     dnl ===================================================================
12892     dnl Check for system rhino
12893     dnl ===================================================================
12894     AC_MSG_CHECKING([which rhino to use])
12895     if test "$with_system_rhino" = "yes"; then
12896         AC_MSG_RESULT([external])
12897         SYSTEM_RHINO=TRUE
12898         if test -z $RHINO_JAR; then
12899             RHINO_JAR=/usr/share/java/js.jar
12900         fi
12901         if ! test -f $RHINO_JAR; then
12902             AC_MSG_ERROR(js.jar not found.)
12903         fi
12904     else
12905         AC_MSG_RESULT([internal])
12906         SYSTEM_RHINO=
12907         BUILD_TYPE="$BUILD_TYPE RHINO"
12908         NEED_ANT=TRUE
12909     fi
12910 else
12911     AC_MSG_RESULT([no])
12912     ENABLE_SCRIPTING_JAVASCRIPT=
12913     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12915 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12916 AC_SUBST(SYSTEM_RHINO)
12917 AC_SUBST(RHINO_JAR)
12919 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12920 # paths should be added to library search path. So lets put all 64-bit
12921 # platforms there.
12922 supports_multilib=
12923 case "$host_cpu" in
12924 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12925     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12926         supports_multilib="yes"
12927     fi
12928     ;;
12930     ;;
12931 esac
12933 dnl ===================================================================
12934 dnl QT5 Integration
12935 dnl ===================================================================
12937 QT5_CFLAGS=""
12938 QT5_LIBS=""
12939 QMAKE5="qmake"
12940 MOC5="moc"
12941 QT5_GOBJECT_CFLAGS=""
12942 QT5_GOBJECT_LIBS=""
12943 QT5_HAVE_GOBJECT=""
12944 QT5_PLATFORMS_SRCDIR=""
12945 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12946         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12947         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12948 then
12949     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12950     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12952     if test -n "$supports_multilib"; then
12953         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12954     fi
12956     qt5_test_include="QtWidgets/qapplication.h"
12957     if test "$_os" = "Emscripten"; then
12958         qt5_test_library="libQt5Widgets.a"
12959     else
12960         qt5_test_library="libQt5Widgets.so"
12961     fi
12963     dnl Check for qmake5
12964     if test -n "$QT5DIR"; then
12965         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12966     else
12967         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12968     fi
12969     if test "$QMAKE5" = "no"; then
12970         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12971     else
12972         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12973         if test -z "$qmake5_test_ver"; then
12974             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12975         fi
12976         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12977         qt5_minimal_minor="6"
12978         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12979             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12980         else
12981             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12982         fi
12983     fi
12985     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12986     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12987     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12988     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12990     AC_MSG_CHECKING([for Qt5 headers])
12991     qt5_incdir="no"
12992     for inc_dir in $qt5_incdirs; do
12993         if test -r "$inc_dir/$qt5_test_include"; then
12994             qt5_incdir="$inc_dir"
12995             break
12996         fi
12997     done
12998     AC_MSG_RESULT([$qt5_incdir])
12999     if test "x$qt5_incdir" = "xno"; then
13000         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13001     fi
13002     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13003     AC_LANG_PUSH([C++])
13004     save_CPPFLAGS=$CPPFLAGS
13005     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13006     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13007         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13008     CPPFLAGS=$save_CPPFLAGS
13009     AC_LANG_POP([C++])
13011     AC_MSG_CHECKING([for Qt5 libraries])
13012     qt5_libdir="no"
13013     for lib_dir in $qt5_libdirs; do
13014         if test -r "$lib_dir/$qt5_test_library"; then
13015             qt5_libdir="$lib_dir"
13016             break
13017         fi
13018     done
13019     AC_MSG_RESULT([$qt5_libdir])
13020     if test "x$qt5_libdir" = "xno"; then
13021         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13022     fi
13024     if test "$_os" = "Emscripten"; then
13025         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13026             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13027         fi
13028         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13029             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13030         fi
13032         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13033         if ! test -x "$EMSDK_LLVM_NM"; then
13034             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13035         fi
13036         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13037             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13038         fi
13039         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13040         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13041             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13042         fi
13043         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13044             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13045         fi
13046     fi
13048     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13049     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13050     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13051     if test "$_os" = "Emscripten"; then
13052         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13053     fi
13055     if test "$USING_X11" = TRUE; then
13056         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13057         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13058             QT5_HAVE_XCB_ICCCM=1
13059             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13060         ],[
13061             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)])
13062             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13063         ])
13064         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13065         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13066         QT5_USING_X11=1
13067         AC_DEFINE(QT5_USING_X11)
13068     fi
13070     dnl Check for Meta Object Compiler
13072     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13073     if test "$MOC5" = "no"; then
13074         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13075 the root of your Qt installation by exporting QT5DIR before running "configure".])
13076     fi
13078     if test "$test_gstreamer_1_0" = yes; then
13079         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13080                 QT5_HAVE_GOBJECT=1
13081                 AC_DEFINE(QT5_HAVE_GOBJECT)
13082             ],
13083             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13084         )
13085     fi
13087 AC_SUBST(QT5_CFLAGS)
13088 AC_SUBST(QT5_LIBS)
13089 AC_SUBST(MOC5)
13090 AC_SUBST(QT5_GOBJECT_CFLAGS)
13091 AC_SUBST(QT5_GOBJECT_LIBS)
13092 AC_SUBST(QT5_HAVE_GOBJECT)
13093 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13095 dnl ===================================================================
13096 dnl QT6 Integration
13097 dnl ===================================================================
13099 QT6_CFLAGS=""
13100 QT6_LIBS=""
13101 QMAKE6="qmake"
13102 MOC6="moc"
13103 QT6_PLATFORMS_SRCDIR=""
13104 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13105 then
13106     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13107     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13109     if test -n "$supports_multilib"; then
13110         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13111     fi
13113     qt6_test_include="QtWidgets/qapplication.h"
13114     if test "$_os" = "Emscripten"; then
13115         qt6_test_library="libQt6Widgets.a"
13116     else
13117         qt6_test_library="libQt6Widgets.so"
13118     fi
13120     dnl Check for qmake6
13121     if test -n "$QT6DIR"; then
13122         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13123     else
13124         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13125     fi
13126     if test "$QMAKE6" = "no"; then
13127         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13128     else
13129         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13130         if test -z "$qmake6_test_ver"; then
13131             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13132         fi
13133         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13134     fi
13136     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13137     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13138     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13139     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13141     AC_MSG_CHECKING([for Qt6 headers])
13142     qt6_incdir="no"
13143     for inc_dir in $qt6_incdirs; do
13144         if test -r "$inc_dir/$qt6_test_include"; then
13145             qt6_incdir="$inc_dir"
13146             break
13147         fi
13148     done
13149     AC_MSG_RESULT([$qt6_incdir])
13150     if test "x$qt6_incdir" = "xno"; then
13151         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13152     fi
13153     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13154     AC_LANG_PUSH([C++])
13155     save_CPPFLAGS=$CPPFLAGS
13156     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13157     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13158         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13159     CPPFLAGS=$save_CPPFLAGS
13160     AC_LANG_POP([C++])
13162     AC_MSG_CHECKING([for Qt6 libraries])
13163     qt6_libdir="no"
13164     for lib_dir in $qt6_libdirs; do
13165         if test -r "$lib_dir/$qt6_test_library"; then
13166             qt6_libdir="$lib_dir"
13167             break
13168         fi
13169     done
13170     AC_MSG_RESULT([$qt6_libdir])
13171     if test "x$qt6_libdir" = "xno"; then
13172         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13173     fi
13175     if test "$_os" = "Emscripten"; then
13176         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13177             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13178         fi
13179         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13180             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13181         fi
13182     fi
13184     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13185     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13186     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13187     if test "$_os" = "Emscripten"; then
13188         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13189     fi
13191     if test "$USING_X11" = TRUE; then
13192         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13193         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13194         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13195         QT6_USING_X11=1
13196         AC_DEFINE(QT6_USING_X11)
13197     fi
13199     dnl Check for Meta Object Compiler
13201     for lib_dir in $qt6_libdirs; do
13202         if test -z "$qt6_libexec_dirs"; then
13203             qt6_libexec_dirs="$lib_dir/libexec"
13204         else
13205             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13206         fi
13207     done
13208     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13209     if test "$MOC6" = "no"; then
13210         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13211 the root of your Qt installation by exporting QT6DIR before running "configure".])
13212     fi
13214 AC_SUBST(QT6_CFLAGS)
13215 AC_SUBST(QT6_LIBS)
13216 AC_SUBST(MOC6)
13217 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13219 dnl ===================================================================
13220 dnl KF5 Integration
13221 dnl ===================================================================
13223 KF5_CFLAGS=""
13224 KF5_LIBS=""
13225 KF5_CONFIG="kf5-config"
13226 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13227         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13228 then
13229     if test "$OS" = "HAIKU"; then
13230         haiku_arch="`echo $RTL_ARCH | tr X x`"
13231         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13232         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13233     fi
13235     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13236     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13237     if test -n "$supports_multilib"; then
13238         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13239     fi
13241     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13242     kf5_test_library="libKF5KIOFileWidgets.so"
13243     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13245     dnl kf5 KDE4 support compatibility installed
13246     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13247     if test "$KF5_CONFIG" != "no"; then
13248         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13249         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13250     fi
13252     dnl Check for KF5 headers
13253     AC_MSG_CHECKING([for KF5 headers])
13254     kf5_incdir="no"
13255     for kf5_check in $kf5_incdirs; do
13256         if test -r "$kf5_check/$kf5_test_include"; then
13257             kf5_incdir="$kf5_check/KF5"
13258             break
13259         fi
13260     done
13261     AC_MSG_RESULT([$kf5_incdir])
13262     if test "x$kf5_incdir" = "xno"; then
13263         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13264     fi
13266     dnl Check for KF5 libraries
13267     AC_MSG_CHECKING([for KF5 libraries])
13268     kf5_libdir="no"
13269     for kf5_check in $kf5_libdirs; do
13270         if test -r "$kf5_check/$kf5_test_library"; then
13271             kf5_libdir="$kf5_check"
13272             break
13273         fi
13274     done
13276     AC_MSG_RESULT([$kf5_libdir])
13277     if test "x$kf5_libdir" = "xno"; then
13278         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13279     fi
13281     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"
13282     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13283     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13285     if test "$USING_X11" = TRUE; then
13286         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13287     fi
13289     AC_LANG_PUSH([C++])
13290     save_CXXFLAGS=$CXXFLAGS
13291     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13292     AC_MSG_CHECKING([whether KDE is >= 5.0])
13293        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13294 #include <kcoreaddons_version.h>
13296 int main(int argc, char **argv) {
13297        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13298        else return 1;
13300        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13301     CXXFLAGS=$save_CXXFLAGS
13302     AC_LANG_POP([C++])
13304 AC_SUBST(KF5_CFLAGS)
13305 AC_SUBST(KF5_LIBS)
13307 dnl ===================================================================
13308 dnl Test whether to include Evolution 2 support
13309 dnl ===================================================================
13310 AC_MSG_CHECKING([whether to enable evolution 2 support])
13311 if test "$enable_evolution2" = yes; then
13312     AC_MSG_RESULT([yes])
13313     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13314     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13315     FilterLibs "${GOBJECT_LIBS}"
13316     GOBJECT_LIBS="${filteredlibs}"
13317     ENABLE_EVOAB2="TRUE"
13318 else
13319     AC_MSG_RESULT([no])
13321 AC_SUBST(ENABLE_EVOAB2)
13322 AC_SUBST(GOBJECT_CFLAGS)
13323 AC_SUBST(GOBJECT_LIBS)
13325 dnl ===================================================================
13326 dnl Test which themes to include
13327 dnl ===================================================================
13328 AC_MSG_CHECKING([which themes to include])
13329 # if none given use default subset of available themes
13330 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13331     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_dark sukapura_dark_svg sukapura_svg"
13334 WITH_THEMES=""
13335 if test "x$with_theme" != "xno"; then
13336     for theme in $with_theme; do
13337         case $theme in
13338         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) real_theme="$theme" ;;
13339         default) real_theme=colibre ;;
13340         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13341         esac
13342         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13343     done
13345 AC_MSG_RESULT([$WITH_THEMES])
13346 AC_SUBST([WITH_THEMES])
13347 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13348 for theme in $with_theme; do
13349     case $theme in
13350     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13351     *) ;;
13352     esac
13353 done
13355 ###############################################################################
13356 # Extensions checking
13357 ###############################################################################
13358 AC_MSG_CHECKING([for extensions integration])
13359 if test "x$enable_extension_integration" != "xno"; then
13360     WITH_EXTENSION_INTEGRATION=TRUE
13361     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13362     AC_MSG_RESULT([yes, use integration])
13363 else
13364     WITH_EXTENSION_INTEGRATION=
13365     AC_MSG_RESULT([no, do not integrate])
13367 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13369 dnl Should any extra extensions be included?
13370 dnl There are standalone tests for each of these below.
13371 WITH_EXTRA_EXTENSIONS=
13372 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13374 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13375 if test "x$with_java" != "xno"; then
13376     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13379 AC_MSG_CHECKING([whether to build opens___.ttf])
13380 if test "$enable_build_opensymbol" = "yes"; then
13381     AC_MSG_RESULT([yes])
13382     AC_PATH_PROG(FONTFORGE, fontforge)
13383     if test -z "$FONTFORGE"; then
13384         AC_MSG_ERROR([fontforge not installed])
13385     fi
13386 else
13387     AC_MSG_RESULT([no])
13388     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13390 AC_SUBST(FONTFORGE)
13392 dnl ===================================================================
13393 dnl Test whether to include fonts
13394 dnl ===================================================================
13395 AC_MSG_CHECKING([whether to include third-party fonts])
13396 if test "$with_fonts" != "no"; then
13397     AC_MSG_RESULT([yes])
13398     WITH_FONTS=TRUE
13399     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13400     AC_DEFINE(HAVE_MORE_FONTS)
13401 else
13402     AC_MSG_RESULT([no])
13403     WITH_FONTS=
13404     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13406 AC_SUBST(WITH_FONTS)
13408 dnl Test whether to include more Google Noto fonts
13409 dnl ===================================================================
13410 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13411 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13412     AC_MSG_RESULT([no])
13413     WITH_NOTO_FONT=
13414 else
13415     AC_MSG_RESULT([yes])
13416     WITH_NOTO_FONT=TRUE
13417     BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13418     SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13420 AC_SUBST(WITH_NOTO_FONT)
13422 dnl ===================================================================
13423 dnl Test whether to enable online update service
13424 dnl ===================================================================
13425 AC_MSG_CHECKING([whether to enable online update])
13426 ENABLE_ONLINE_UPDATE=
13427 ENABLE_ONLINE_UPDATE_MAR=
13428 UPDATE_CONFIG=
13429 if test "$enable_online_update" = ""; then
13430     AC_MSG_RESULT([no])
13431 else
13432     if test "$enable_online_update" = "mar"; then
13433         AC_MSG_RESULT([yes - MAR-based online update])
13434         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13435         if test "$with_update_config" = ""; then
13436             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13437         fi
13438         UPDATE_CONFIG="$with_update_config"
13439         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13440     elif test "$enable_online_update" = "yes"; then
13441         AC_MSG_RESULT([yes])
13442         ENABLE_ONLINE_UPDATE="TRUE"
13443     else
13444         AC_MSG_RESULT([no])
13445     fi
13447 AC_SUBST(ENABLE_ONLINE_UPDATE)
13448 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13449 AC_SUBST(UPDATE_CONFIG)
13452 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13453 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13454     if test "x$with_privacy_policy_url" = "xundefined"; then
13455         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13456     fi
13458 AC_SUBST(PRIVACY_POLICY_URL)
13459 dnl ===================================================================
13460 dnl Test whether we need bzip2
13461 dnl ===================================================================
13462 SYSTEM_BZIP2=
13463 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13464     AC_MSG_CHECKING([whether to use system bzip2])
13465     if test "$with_system_bzip2" = yes; then
13466         SYSTEM_BZIP2=TRUE
13467         AC_MSG_RESULT([yes])
13468         PKG_CHECK_MODULES(BZIP2, bzip2)
13469         FilterLibs "${BZIP2_LIBS}"
13470         BZIP2_LIBS="${filteredlibs}"
13471     else
13472         AC_MSG_RESULT([no])
13473         BUILD_TYPE="$BUILD_TYPE BZIP2"
13474     fi
13476 AC_SUBST(SYSTEM_BZIP2)
13477 AC_SUBST(BZIP2_CFLAGS)
13478 AC_SUBST(BZIP2_LIBS)
13480 dnl ===================================================================
13481 dnl Test whether to enable extension update
13482 dnl ===================================================================
13483 AC_MSG_CHECKING([whether to enable extension update])
13484 ENABLE_EXTENSION_UPDATE=
13485 if test "x$enable_extension_update" = "xno"; then
13486     AC_MSG_RESULT([no])
13487 else
13488     AC_MSG_RESULT([yes])
13489     ENABLE_EXTENSION_UPDATE="TRUE"
13490     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13491     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13493 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13496 dnl ===================================================================
13497 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13498 dnl ===================================================================
13499 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13500 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13501     AC_MSG_RESULT([no])
13502     ENABLE_SILENT_MSI=
13503 else
13504     AC_MSG_RESULT([yes])
13505     ENABLE_SILENT_MSI=TRUE
13506     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13508 AC_SUBST(ENABLE_SILENT_MSI)
13510 AC_MSG_CHECKING([whether and how to use Xinerama])
13511 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13512     if test "$x_libraries" = "default_x_libraries"; then
13513         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13514         if test "x$XINERAMALIB" = x; then
13515            XINERAMALIB="/usr/lib"
13516         fi
13517     else
13518         XINERAMALIB="$x_libraries"
13519     fi
13520     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13521         # we have both versions, let the user decide but use the dynamic one
13522         # per default
13523         USE_XINERAMA=TRUE
13524         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13525             XINERAMA_LINK=dynamic
13526         else
13527             XINERAMA_LINK=static
13528         fi
13529     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13530         # we have only the dynamic version
13531         USE_XINERAMA=TRUE
13532         XINERAMA_LINK=dynamic
13533     elif test -e "$XINERAMALIB/libXinerama.a"; then
13534         # static version
13535         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13536             USE_XINERAMA=TRUE
13537             XINERAMA_LINK=static
13538         else
13539             USE_XINERAMA=
13540             XINERAMA_LINK=none
13541         fi
13542     else
13543         # no Xinerama
13544         USE_XINERAMA=
13545         XINERAMA_LINK=none
13546     fi
13547     if test "$USE_XINERAMA" = "TRUE"; then
13548         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13549         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13550             [AC_MSG_ERROR(Xinerama header not found.)], [])
13551         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13552         if test "x$XEXTLIB" = x; then
13553            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13554         fi
13555         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13556         if test "$_os" = "FreeBSD"; then
13557             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13558         fi
13559         if test "$_os" = "Linux"; then
13560             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13561         fi
13562         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13563             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13564     else
13565         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13566     fi
13567 else
13568     USE_XINERAMA=
13569     XINERAMA_LINK=none
13570     AC_MSG_RESULT([no])
13572 AC_SUBST(USE_XINERAMA)
13573 AC_SUBST(XINERAMA_LINK)
13575 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13576 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13577     enable_cairo_rgba=yes
13579 if test "$enable_cairo_rgba" = yes; then
13580     AC_DEFINE(ENABLE_CAIRO_RGBA)
13581     ENABLE_CAIRO_RGBA=TRUE
13582     AC_MSG_RESULT([yes])
13583 else
13584     ENABLE_CAIRO_RGBA=
13585     AC_MSG_RESULT([no])
13587 AC_SUBST(ENABLE_CAIRO_RGBA)
13589 dnl ===================================================================
13590 dnl Test whether to build cairo or rely on the system version
13591 dnl ===================================================================
13593 if test "$test_cairo" = "yes"; then
13594     AC_MSG_CHECKING([whether to use the system cairo])
13596     : ${with_system_cairo:=$with_system_libs}
13597     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13598         SYSTEM_CAIRO=TRUE
13599         AC_MSG_RESULT([yes])
13601         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13602         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13603         FilterLibs "${CAIRO_LIBS}"
13604         CAIRO_LIBS="${filteredlibs}"
13606         if test "$test_xrender" = "yes"; then
13607             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13608             AC_LANG_PUSH([C])
13609             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13610 #ifdef PictStandardA8
13611 #else
13612       return fail;
13613 #endif
13614 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13616             AC_LANG_POP([C])
13617         fi
13618     else
13619         AC_MSG_RESULT([no])
13620         BUILD_TYPE="$BUILD_TYPE CAIRO"
13621     fi
13623     if test "$enable_cairo_canvas" != no; then
13624         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13625         ENABLE_CAIRO_CANVAS=TRUE
13626     fi
13629 AC_SUBST(CAIRO_CFLAGS)
13630 AC_SUBST(CAIRO_LIBS)
13631 AC_SUBST(ENABLE_CAIRO_CANVAS)
13632 AC_SUBST(SYSTEM_CAIRO)
13634 dnl ===================================================================
13635 dnl Test whether to use avahi
13636 dnl ===================================================================
13637 if test "$_os" = "WINNT"; then
13638     # Windows uses bundled mDNSResponder
13639     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13640 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13641     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13642                       [ENABLE_AVAHI="TRUE"])
13643     AC_DEFINE(HAVE_FEATURE_AVAHI)
13644     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13645     FilterLibs "${AVAHI_LIBS}"
13646     AVAHI_LIBS="${filteredlibs}"
13649 AC_SUBST(ENABLE_AVAHI)
13650 AC_SUBST(AVAHI_CFLAGS)
13651 AC_SUBST(AVAHI_LIBS)
13653 dnl ===================================================================
13654 dnl Test whether to use liblangtag
13655 dnl ===================================================================
13656 SYSTEM_LIBLANGTAG=
13657 AC_MSG_CHECKING([whether to use system liblangtag])
13658 if test "$with_system_liblangtag" = yes; then
13659     SYSTEM_LIBLANGTAG=TRUE
13660     AC_MSG_RESULT([yes])
13661     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13662     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13663     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13664     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13665     FilterLibs "${LIBLANGTAG_LIBS}"
13666     LIBLANGTAG_LIBS="${filteredlibs}"
13667 else
13668     SYSTEM_LIBLANGTAG=
13669     AC_MSG_RESULT([no])
13670     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13671     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13672     if test "$COM" = "MSC"; then
13673         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13674     else
13675         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13676     fi
13678 AC_SUBST(SYSTEM_LIBLANGTAG)
13679 AC_SUBST(LIBLANGTAG_CFLAGS)
13680 AC_SUBST(LIBLANGTAG_LIBS)
13682 dnl ===================================================================
13683 dnl Test whether to build libpng or rely on the system version
13684 dnl ===================================================================
13686 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13687 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13688 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13690 dnl ===================================================================
13691 dnl Test whether to build libtiff or rely on the system version
13692 dnl ===================================================================
13694 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13696 dnl ===================================================================
13697 dnl Test whether to build libwebp or rely on the system version
13698 dnl ===================================================================
13700 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13702 dnl ===================================================================
13703 dnl Check for runtime JVM search path
13704 dnl ===================================================================
13705 if test "$ENABLE_JAVA" != ""; then
13706     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13707     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13708         AC_MSG_RESULT([yes])
13709         if ! test -d "$with_jvm_path"; then
13710             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13711         fi
13712         if ! test -d "$with_jvm_path"jvm; then
13713             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13714         fi
13715         JVM_ONE_PATH_CHECK="$with_jvm_path"
13716         AC_SUBST(JVM_ONE_PATH_CHECK)
13717     else
13718         AC_MSG_RESULT([no])
13719     fi
13722 dnl ===================================================================
13723 dnl Test for the presence of Ant and that it works
13724 dnl ===================================================================
13726 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13727     ANT_HOME=; export ANT_HOME
13728     WITH_ANT_HOME=; export WITH_ANT_HOME
13729     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13730         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13731             if test "$_os" = "WINNT"; then
13732                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13733             else
13734                 with_ant_home="$LODE_HOME/opt/ant"
13735             fi
13736         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13737             with_ant_home="$LODE_HOME/opt/ant"
13738         fi
13739     fi
13740     if test -z "$with_ant_home"; then
13741         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13742     else
13743         if test "$_os" = "WINNT"; then
13744             # AC_PATH_PROGS needs unix path
13745             with_ant_home=`cygpath -u "$with_ant_home"`
13746         fi
13747         AbsolutePath "$with_ant_home"
13748         with_ant_home=$absolute_path
13749         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13750         WITH_ANT_HOME=$with_ant_home
13751         ANT_HOME=$with_ant_home
13752     fi
13754     if test -z "$ANT"; then
13755         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13756     else
13757         # resolve relative or absolute symlink
13758         while test -h "$ANT"; do
13759             a_cwd=`pwd`
13760             a_basename=`basename "$ANT"`
13761             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13762             cd "`dirname "$ANT"`"
13763             cd "`dirname "$a_script"`"
13764             ANT="`pwd`"/"`basename "$a_script"`"
13765             cd "$a_cwd"
13766         done
13768         AC_MSG_CHECKING([if $ANT works])
13769         mkdir -p conftest.dir
13770         a_cwd=$(pwd)
13771         cd conftest.dir
13772         cat > conftest.java << EOF
13773         public class conftest {
13774             int testmethod(int a, int b) {
13775                     return a + b;
13776             }
13777         }
13780         cat > conftest.xml << EOF
13781         <project name="conftest" default="conftest">
13782         <target name="conftest">
13783             <javac srcdir="." includes="conftest.java">
13784             </javac>
13785         </target>
13786         </project>
13789         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13790         if test $? = 0 -a -f ./conftest.class; then
13791             AC_MSG_RESULT([Ant works])
13792             if test -z "$WITH_ANT_HOME"; then
13793                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13794                 if test -z "$ANT_HOME"; then
13795                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13796                 fi
13797             else
13798                 ANT_HOME="$WITH_ANT_HOME"
13799             fi
13800         else
13801             echo "configure: Ant test failed" >&5
13802             cat conftest.java >&5
13803             cat conftest.xml >&5
13804             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13805         fi
13806         cd "$a_cwd"
13807         rm -fr conftest.dir
13808     fi
13809     if test -z "$ANT_HOME"; then
13810         ANT_HOME="NO_ANT_HOME"
13811     else
13812         PathFormat "$ANT_HOME"
13813         ANT_HOME="$formatted_path"
13814         PathFormat "$ANT"
13815         ANT="$formatted_path"
13816     fi
13818     dnl Checking for ant.jar
13819     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13820         AC_MSG_CHECKING([Ant lib directory])
13821         if test -f $ANT_HOME/lib/ant.jar; then
13822             ANT_LIB="$ANT_HOME/lib"
13823         else
13824             if test -f $ANT_HOME/ant.jar; then
13825                 ANT_LIB="$ANT_HOME"
13826             else
13827                 if test -f /usr/share/java/ant.jar; then
13828                     ANT_LIB=/usr/share/java
13829                 else
13830                     if test -f /usr/share/ant-core/lib/ant.jar; then
13831                         ANT_LIB=/usr/share/ant-core/lib
13832                     else
13833                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13834                             ANT_LIB="$ANT_HOME/lib/ant"
13835                         else
13836                             if test -f /usr/share/lib/ant/ant.jar; then
13837                                 ANT_LIB=/usr/share/lib/ant
13838                             else
13839                                 AC_MSG_ERROR([Ant libraries not found!])
13840                             fi
13841                         fi
13842                     fi
13843                 fi
13844             fi
13845         fi
13846         PathFormat "$ANT_LIB"
13847         ANT_LIB="$formatted_path"
13848         AC_MSG_RESULT([Ant lib directory found.])
13849     fi
13851     ant_minver=1.6.0
13852     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13854     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13855     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13856     ant_version_major=`echo $ant_version | cut -d. -f1`
13857     ant_version_minor=`echo $ant_version | cut -d. -f2`
13858     echo "configure: ant_version $ant_version " >&5
13859     echo "configure: ant_version_major $ant_version_major " >&5
13860     echo "configure: ant_version_minor $ant_version_minor " >&5
13861     if test "$ant_version_major" -ge "2"; then
13862         AC_MSG_RESULT([yes, $ant_version])
13863     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13864         AC_MSG_RESULT([yes, $ant_version])
13865     else
13866         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13867     fi
13869     rm -f conftest* core core.* *.core
13871 AC_SUBST(ANT)
13872 AC_SUBST(ANT_HOME)
13873 AC_SUBST(ANT_LIB)
13875 OOO_JUNIT_JAR=
13876 HAMCREST_JAR=
13877 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13878     AC_MSG_CHECKING([for JUnit 4])
13879     if test "$with_junit" = "yes"; then
13880         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13881             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13882         elif test -e /usr/share/java/junit4.jar; then
13883             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13884         else
13885            if test -e /usr/share/lib/java/junit.jar; then
13886               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13887            else
13888               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13889            fi
13890         fi
13891     else
13892         OOO_JUNIT_JAR=$with_junit
13893     fi
13894     if test "$_os" = "WINNT"; then
13895         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13896     fi
13897     printf 'import org.junit.Before;' > conftest.java
13898     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13899         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13900     else
13901         AC_MSG_ERROR(
13902 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13903  specify its pathname via --with-junit=..., or disable it via --without-junit])
13904     fi
13905     rm -f conftest.class conftest.java
13906     if test $OOO_JUNIT_JAR != ""; then
13907         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13908     fi
13910     AC_MSG_CHECKING([for included Hamcrest])
13911     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13912     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13913         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13914     else
13915         AC_MSG_RESULT([Not included])
13916         AC_MSG_CHECKING([for standalone hamcrest jar.])
13917         if test "$with_hamcrest" = "yes"; then
13918             if test -e /usr/share/lib/java/hamcrest.jar; then
13919                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13920             elif test -e /usr/share/java/hamcrest/core.jar; then
13921                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13922             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13923                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13924             else
13925                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13926             fi
13927         else
13928             HAMCREST_JAR=$with_hamcrest
13929         fi
13930         if test "$_os" = "WINNT"; then
13931             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13932         fi
13933         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13934             AC_MSG_RESULT([$HAMCREST_JAR])
13935         else
13936             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),
13937                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13938         fi
13939     fi
13940     rm -f conftest.class conftest.java
13942 AC_SUBST(OOO_JUNIT_JAR)
13943 AC_SUBST(HAMCREST_JAR)
13946 AC_SUBST(SCPDEFS)
13949 # check for wget and curl
13951 WGET=
13952 CURL=
13954 if test "$enable_fetch_external" != "no"; then
13956 CURL=`which curl 2>/dev/null`
13958 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13959     # wget new enough?
13960     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13961     if test $? -eq 0; then
13962         WGET=$i
13963         break
13964     fi
13965 done
13967 if test -z "$WGET" -a -z "$CURL"; then
13968     AC_MSG_ERROR([neither wget nor curl found!])
13973 AC_SUBST(WGET)
13974 AC_SUBST(CURL)
13977 # check for sha256sum
13979 SHA256SUM=
13981 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13982     eval "$i -a 256 --version" > /dev/null 2>&1
13983     ret=$?
13984     if test $ret -eq 0; then
13985         SHA256SUM="$i -a 256"
13986         break
13987     fi
13988 done
13990 if test -z "$SHA256SUM"; then
13991     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13992         eval "$i --version" > /dev/null 2>&1
13993         ret=$?
13994         if test $ret -eq 0; then
13995             SHA256SUM=$i
13996             break
13997         fi
13998     done
14001 if test -z "$SHA256SUM"; then
14002     AC_MSG_ERROR([no sha256sum found!])
14005 AC_SUBST(SHA256SUM)
14007 dnl ===================================================================
14008 dnl Dealing with l10n options
14009 dnl ===================================================================
14010 AC_MSG_CHECKING([which languages to be built])
14011 # get list of all languages
14012 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14013 # the sed command does the following:
14014 #   + if a line ends with a backslash, append the next line to it
14015 #   + adds " on the beginning of the value (after =)
14016 #   + adds " at the end of the value
14017 #   + removes en-US; we want to put it on the beginning
14018 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14019 [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)]
14020 ALL_LANGS="en-US $completelangiso"
14021 # check the configured localizations
14022 WITH_LANG="$with_lang"
14024 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14025 # (Norwegian is "nb" and "nn".)
14026 if test "$WITH_LANG" = "no"; then
14027     WITH_LANG=
14030 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14031     AC_MSG_RESULT([en-US])
14032 else
14033     AC_MSG_RESULT([$WITH_LANG])
14034     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14035     if test -z "$MSGFMT"; then
14036         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14037             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14038         elif test -x "/opt/lo/bin/msgfmt"; then
14039             MSGFMT="/opt/lo/bin/msgfmt"
14040         else
14041             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14042             if test -z "$MSGFMT"; then
14043                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14044             fi
14045         fi
14046     fi
14047     if test -z "$MSGUNIQ"; then
14048         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14049             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14050         elif test -x "/opt/lo/bin/msguniq"; then
14051             MSGUNIQ="/opt/lo/bin/msguniq"
14052         else
14053             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14054             if test -z "$MSGUNIQ"; then
14055                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14056             fi
14057         fi
14058     fi
14060 AC_SUBST(MSGFMT)
14061 AC_SUBST(MSGUNIQ)
14062 # check that the list is valid
14063 for lang in $WITH_LANG; do
14064     test "$lang" = "ALL" && continue
14065     # need to check for the exact string, so add space before and after the list of all languages
14066     for vl in $ALL_LANGS; do
14067         if test "$vl" = "$lang"; then
14068            break
14069         fi
14070     done
14071     if test "$vl" != "$lang"; then
14072         # if you're reading this - you prolly quoted your languages remove the quotes ...
14073         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14074     fi
14075 done
14076 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14077     echo $WITH_LANG | grep -q en-US
14078     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14080 # list with substituted ALL
14081 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14082 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14083 test "$WITH_LANG" = "en-US" && WITH_LANG=
14084 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14085     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14086     ALL_LANGS=`echo $ALL_LANGS qtz`
14088 AC_SUBST(ALL_LANGS)
14089 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14090 AC_SUBST(WITH_LANG)
14091 AC_SUBST(WITH_LANG_LIST)
14092 AC_SUBST(GIT_NEEDED_SUBMODULES)
14094 WITH_POOR_HELP_LOCALIZATIONS=
14095 if test -d "$SRC_ROOT/translations/source"; then
14096     for l in `ls -1 $SRC_ROOT/translations/source`; do
14097         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14098             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14099         fi
14100     done
14102 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14104 if test -n "$with_locales" -a "$with_locales" != ALL; then
14105     WITH_LOCALES="$with_locales"
14107     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14108     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14109     # config_host/config_locales.h.in
14110     for locale in $WITH_LOCALES; do
14111         lang=${locale%_*}
14113         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14115         case $lang in
14116         hi|mr*ne)
14117             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14118             ;;
14119         bg|ru)
14120             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14121             ;;
14122         esac
14123     done
14124 else
14125     AC_DEFINE(WITH_LOCALE_ALL)
14127 AC_SUBST(WITH_LOCALES)
14129 dnl git submodule update --reference
14130 dnl ===================================================================
14131 if test -n "${GIT_REFERENCE_SRC}"; then
14132     for repo in ${GIT_NEEDED_SUBMODULES}; do
14133         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14134             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14135         fi
14136     done
14138 AC_SUBST(GIT_REFERENCE_SRC)
14140 dnl git submodules linked dirs
14141 dnl ===================================================================
14142 if test -n "${GIT_LINK_SRC}"; then
14143     for repo in ${GIT_NEEDED_SUBMODULES}; do
14144         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14145             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14146         fi
14147     done
14149 AC_SUBST(GIT_LINK_SRC)
14151 dnl branding
14152 dnl ===================================================================
14153 AC_MSG_CHECKING([for alternative branding images directory])
14154 # initialize mapped arrays
14155 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14156 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14158 if test -z "$with_branding" -o "$with_branding" = "no"; then
14159     AC_MSG_RESULT([none])
14160     DEFAULT_BRAND_IMAGES="$brand_files"
14161 else
14162     if ! test -d $with_branding ; then
14163         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14164     else
14165         AC_MSG_RESULT([$with_branding])
14166         CUSTOM_BRAND_DIR="$with_branding"
14167         for lfile in $brand_files
14168         do
14169             if ! test -f $with_branding/$lfile ; then
14170                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14171                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14172             else
14173                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14174             fi
14175         done
14176         check_for_progress="yes"
14177     fi
14179 AC_SUBST([BRAND_INTRO_IMAGES])
14180 AC_SUBST([CUSTOM_BRAND_DIR])
14181 AC_SUBST([CUSTOM_BRAND_IMAGES])
14182 AC_SUBST([DEFAULT_BRAND_IMAGES])
14185 AC_MSG_CHECKING([for 'intro' progress settings])
14186 PROGRESSBARCOLOR=
14187 PROGRESSSIZE=
14188 PROGRESSPOSITION=
14189 PROGRESSFRAMECOLOR=
14190 PROGRESSTEXTCOLOR=
14191 PROGRESSTEXTBASELINE=
14193 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14194     source "$with_branding/progress.conf"
14195     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14196 else
14197     AC_MSG_RESULT([none])
14200 AC_SUBST(PROGRESSBARCOLOR)
14201 AC_SUBST(PROGRESSSIZE)
14202 AC_SUBST(PROGRESSPOSITION)
14203 AC_SUBST(PROGRESSFRAMECOLOR)
14204 AC_SUBST(PROGRESSTEXTCOLOR)
14205 AC_SUBST(PROGRESSTEXTBASELINE)
14208 dnl ===================================================================
14209 dnl Custom build version
14210 dnl ===================================================================
14211 AC_MSG_CHECKING([for extra build ID])
14212 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14213     EXTRA_BUILDID="$with_extra_buildid"
14215 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14216 if test -n "$EXTRA_BUILDID" ; then
14217     AC_MSG_RESULT([$EXTRA_BUILDID])
14218 else
14219     AC_MSG_RESULT([not set])
14221 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14223 OOO_VENDOR=
14224 AC_MSG_CHECKING([for vendor])
14225 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14226     OOO_VENDOR="$USERNAME"
14228     if test -z "$OOO_VENDOR"; then
14229         OOO_VENDOR="$USER"
14230     fi
14232     if test -z "$OOO_VENDOR"; then
14233         OOO_VENDOR="`id -u -n`"
14234     fi
14236     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14237 else
14238     OOO_VENDOR="$with_vendor"
14239     AC_MSG_RESULT([$OOO_VENDOR])
14241 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14242 AC_SUBST(OOO_VENDOR)
14244 if test "$_os" = "Android" ; then
14245     ANDROID_PACKAGE_NAME=
14246     AC_MSG_CHECKING([for Android package name])
14247     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14248         if test -n "$ENABLE_DEBUG"; then
14249             # Default to the package name that makes ndk-gdb happy.
14250             ANDROID_PACKAGE_NAME="org.libreoffice"
14251         else
14252             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14253         fi
14255         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14256     else
14257         ANDROID_PACKAGE_NAME="$with_android_package_name"
14258         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14259     fi
14260     AC_SUBST(ANDROID_PACKAGE_NAME)
14263 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14264 if test "$with_compat_oowrappers" = "yes"; then
14265     WITH_COMPAT_OOWRAPPERS=TRUE
14266     AC_MSG_RESULT(yes)
14267 else
14268     WITH_COMPAT_OOWRAPPERS=
14269     AC_MSG_RESULT(no)
14271 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14273 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14274 AC_MSG_CHECKING([for install dirname])
14275 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14276     INSTALLDIRNAME="$with_install_dirname"
14278 AC_MSG_RESULT([$INSTALLDIRNAME])
14279 AC_SUBST(INSTALLDIRNAME)
14281 AC_MSG_CHECKING([for prefix])
14282 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14283 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14284 PREFIXDIR="$prefix"
14285 AC_MSG_RESULT([$PREFIXDIR])
14286 AC_SUBST(PREFIXDIR)
14288 LIBDIR=[$(eval echo $(eval echo $libdir))]
14289 AC_SUBST(LIBDIR)
14291 DATADIR=[$(eval echo $(eval echo $datadir))]
14292 AC_SUBST(DATADIR)
14294 MANDIR=[$(eval echo $(eval echo $mandir))]
14295 AC_SUBST(MANDIR)
14297 DOCDIR=[$(eval echo $(eval echo $docdir))]
14298 AC_SUBST(DOCDIR)
14300 BINDIR=[$(eval echo $(eval echo $bindir))]
14301 AC_SUBST(BINDIR)
14303 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14304 AC_SUBST(INSTALLDIR)
14306 TESTINSTALLDIR="${BUILDDIR}/test-install"
14307 AC_SUBST(TESTINSTALLDIR)
14310 # ===================================================================
14311 # OAuth2 id and secrets
14312 # ===================================================================
14314 AC_MSG_CHECKING([for Google Drive client id and secret])
14315 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14316     AC_MSG_RESULT([not set])
14317     GDRIVE_CLIENT_ID="\"\""
14318     GDRIVE_CLIENT_SECRET="\"\""
14319 else
14320     AC_MSG_RESULT([set])
14321     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14322     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14324 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14325 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14327 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14328 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14329     AC_MSG_RESULT([not set])
14330     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14331     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14332 else
14333     AC_MSG_RESULT([set])
14334     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14335     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14337 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14338 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14340 AC_MSG_CHECKING([for OneDrive client id and secret])
14341 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14342     AC_MSG_RESULT([not set])
14343     ONEDRIVE_CLIENT_ID="\"\""
14344     ONEDRIVE_CLIENT_SECRET="\"\""
14345 else
14346     AC_MSG_RESULT([set])
14347     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14348     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14350 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14351 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14354 dnl ===================================================================
14355 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14356 dnl --enable-dependency-tracking configure option
14357 dnl ===================================================================
14358 AC_MSG_CHECKING([whether to enable dependency tracking])
14359 if test "$enable_dependency_tracking" = "no"; then
14360     nodep=TRUE
14361     AC_MSG_RESULT([no])
14362 else
14363     AC_MSG_RESULT([yes])
14365 AC_SUBST(nodep)
14367 dnl ===================================================================
14368 dnl Number of CPUs to use during the build
14369 dnl ===================================================================
14370 AC_MSG_CHECKING([for number of processors to use])
14371 # plain --with-parallelism is just the default
14372 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14373     if test "$with_parallelism" = "no"; then
14374         PARALLELISM=0
14375     else
14376         PARALLELISM=$with_parallelism
14377     fi
14378 else
14379     if test "$enable_icecream" = "yes"; then
14380         PARALLELISM="40"
14381     else
14382         case `uname -s` in
14384         Darwin|FreeBSD|NetBSD|OpenBSD)
14385             PARALLELISM=`sysctl -n hw.ncpu`
14386             ;;
14388         Linux)
14389             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14390         ;;
14391         # what else than above does profit here *and* has /proc?
14392         *)
14393             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14394             ;;
14395         esac
14397         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14398         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14399     fi
14402 if test $PARALLELISM -eq 0; then
14403     AC_MSG_RESULT([explicit make -j option needed])
14404 else
14405     AC_MSG_RESULT([$PARALLELISM])
14407 AC_SUBST(PARALLELISM)
14410 # Set up ILIB for MSVC build
14412 ILIB1=
14413 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14414     ILIB="."
14415     if test -n "$JAVA_HOME"; then
14416         ILIB="$ILIB;$JAVA_HOME/lib"
14417     fi
14418     ILIB1=-link
14419     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14420     ILIB="$ILIB;$formatted_path"
14421     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14422     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14423     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14424     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14425         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14426         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14427     fi
14428     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14429     ucrtlibpath_formatted=$formatted_path
14430     ILIB="$ILIB;$ucrtlibpath_formatted"
14431     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14432     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14433         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14434         ILIB="$ILIB;$formatted_path"
14435     else
14436         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14437         ILIB="$ILIB;$formatted_path"
14438     fi
14440     if test "$cross_compiling" != "yes"; then
14441         ILIB_FOR_BUILD="$ILIB"
14442     fi
14444 AC_SUBST(ILIB)
14445 AC_SUBST(ILIB_FOR_BUILD)
14447 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14448 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14449 dnl from consteval constructor initializing const variable",
14450 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14451 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14452 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14453 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14454 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14455 dnl constructor in ternary expression (/std:c++latest)", or
14456 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14457 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14458 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14459 dnl && "Ptr must be a pointer to Val type!"' failed.":
14460 AC_LANG_PUSH([C++])
14461 save_CXX=$CXX
14462 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14463     CXX="env LIB=$ILIB $CXX"
14465 save_CXXFLAGS=$CXXFLAGS
14466 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14467 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14468         struct S {
14469             consteval S() { i = 1; }
14470             int i = 0;
14471         };
14472         S const s;
14474         struct S1 { consteval S1(int) {} };
14475         struct S2 {
14476             S1 x;
14477             S2(): x(0) {}
14478         };
14480         struct S3 {
14481             consteval S3() {}
14482             union {
14483                 int a;
14484                 unsigned b = 0;
14485             };
14486         };
14487         void f() { S3(); }
14489         struct S4 { consteval S4() = default; };
14490         void f4(bool b) { b ? S4() : S4(); }
14492         struct S5 {
14493             consteval S5() { c = 0; }
14494             char * f() { return &c; }
14495             union {
14496                 char c;
14497                 int i;
14498             };
14499         };
14500         auto s5 = S5().f();
14501     ], [
14502         return (s.i == 1) ? 0 : 1;
14503     ])], [
14504         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14505         AC_MSG_RESULT([yes])
14506     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14507 CXX=$save_CXX
14508 CXXFLAGS=$save_CXXFLAGS
14509 AC_LANG_POP([C++])
14511 # ===================================================================
14512 # Creating bigger shared library to link against
14513 # ===================================================================
14514 AC_MSG_CHECKING([whether to create huge library])
14515 MERGELIBS=
14517 if test $_os = iOS -o $_os = Android; then
14518     # Never any point in mergelibs for these as we build just static
14519     # libraries anyway...
14520     enable_mergelibs=no
14523 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14524     if test $_os != Linux -a $_os != WINNT; then
14525         add_warning "--enable-mergelibs is not tested for this platform"
14526     fi
14527     MERGELIBS="TRUE"
14528     AC_MSG_RESULT([yes])
14529     AC_DEFINE(ENABLE_MERGELIBS)
14530 else
14531     AC_MSG_RESULT([no])
14533 AC_SUBST([MERGELIBS])
14535 dnl ===================================================================
14536 dnl icerun is a wrapper that stops us spawning tens of processes
14537 dnl locally - for tools that can't be executed on the compile cluster
14538 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14539 dnl ===================================================================
14540 AC_MSG_CHECKING([whether to use icerun wrapper])
14541 ICECREAM_RUN=
14542 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14543     ICECREAM_RUN=icerun
14544     AC_MSG_RESULT([yes])
14545 else
14546     AC_MSG_RESULT([no])
14548 AC_SUBST(ICECREAM_RUN)
14550 dnl ===================================================================
14551 dnl Setup the ICECC_VERSION for the build the same way it was set for
14552 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14553 dnl ===================================================================
14554 x_ICECC_VERSION=[\#]
14555 if test -n "$ICECC_VERSION" ; then
14556     x_ICECC_VERSION=
14558 AC_SUBST(x_ICECC_VERSION)
14559 AC_SUBST(ICECC_VERSION)
14561 dnl ===================================================================
14563 AC_MSG_CHECKING([MPL subset])
14564 MPL_SUBSET=
14565 LICENSE="LGPL"
14567 if test "$enable_mpl_subset" = "yes"; then
14568     warn_report=false
14569     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14570         warn_report=true
14571     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14572         warn_report=true
14573     fi
14574     if test "$warn_report" = "true"; then
14575         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14576     fi
14577     if test "x$enable_postgresql_sdbc" != "xno"; then
14578         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14579     fi
14580     if test "$enable_lotuswordpro" = "yes"; then
14581         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14582     fi
14583     if test -n "$ENABLE_POPPLER"; then
14584         if test "x$SYSTEM_POPPLER" = "x"; then
14585             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14586         fi
14587     fi
14588     # cf. m4/libo_check_extension.m4
14589     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14590         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14591     fi
14592     for theme in $WITH_THEMES; do
14593         case $theme in
14594         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14595             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14596         *) : ;;
14597         esac
14598     done
14600     ENABLE_OPENGL_TRANSITIONS=
14602     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14603         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14604     fi
14606     MPL_SUBSET="TRUE"
14607     LICENSE="MPL-2.0"
14608     AC_DEFINE(MPL_HAVE_SUBSET)
14609     AC_MSG_RESULT([only])
14610 else
14611     AC_MSG_RESULT([no restrictions])
14613 AC_SUBST(MPL_SUBSET)
14614 AC_SUBST(LICENSE)
14616 dnl ===================================================================
14618 AC_MSG_CHECKING([formula logger])
14619 ENABLE_FORMULA_LOGGER=
14621 if test "x$enable_formula_logger" = "xyes"; then
14622     AC_MSG_RESULT([yes])
14623     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14624     ENABLE_FORMULA_LOGGER=TRUE
14625 elif test -n "$ENABLE_DBGUTIL" ; then
14626     AC_MSG_RESULT([yes])
14627     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14628     ENABLE_FORMULA_LOGGER=TRUE
14629 else
14630     AC_MSG_RESULT([no])
14633 AC_SUBST(ENABLE_FORMULA_LOGGER)
14635 dnl ===================================================================
14636 dnl Checking for active Antivirus software.
14637 dnl ===================================================================
14639 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14640     AC_MSG_CHECKING([for active Antivirus software])
14641     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14642     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14643     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14644         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14645             AC_MSG_RESULT([found])
14646             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14647             echo $EICAR_STRING > $SRC_ROOT/eicar
14648             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14649             rm $SRC_ROOT/eicar
14650             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14651                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14652             fi
14653             echo $EICAR_STRING > $BUILDDIR/eicar
14654             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14655             rm $BUILDDIR/eicar
14656             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14657                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14658             fi
14659             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"
14660         else
14661             AC_MSG_RESULT([not found])
14662         fi
14663     else
14664         AC_MSG_RESULT([n/a])
14665     fi
14668 dnl ===================================================================
14669 dnl Setting up the environment.
14670 dnl ===================================================================
14671 AC_MSG_NOTICE([setting up the build environment variables...])
14673 AC_SUBST(COMPATH)
14675 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14676     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14677         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14678         ATL_INCLUDE="$COMPATH/atlmfc/include"
14679     elif test -d "$COMPATH/atlmfc/lib"; then
14680         ATL_LIB="$COMPATH/atlmfc/lib"
14681         ATL_INCLUDE="$COMPATH/atlmfc/include"
14682     else
14683         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14684         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14685     fi
14686     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14687     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14688     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14691 if test "$build_os" = "cygwin"; then
14692     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14693     PathFormat "/usr/bin/find.exe"
14694     FIND="$formatted_path"
14695     PathFormat "/usr/bin/sort.exe"
14696     SORT="$formatted_path"
14697     PathFormat "/usr/bin/grep.exe"
14698     WIN_GREP="$formatted_path"
14699     PathFormat "/usr/bin/ls.exe"
14700     WIN_LS="$formatted_path"
14701     PathFormat "/usr/bin/touch.exe"
14702     WIN_TOUCH="$formatted_path"
14703 else
14704     FIND=find
14705     SORT=sort
14708 AC_SUBST(ATL_INCLUDE)
14709 AC_SUBST(ATL_LIB)
14710 AC_SUBST(FIND)
14711 AC_SUBST(SORT)
14712 AC_SUBST(WIN_GREP)
14713 AC_SUBST(WIN_LS)
14714 AC_SUBST(WIN_TOUCH)
14716 AC_SUBST(BUILD_TYPE)
14718 AC_SUBST(SOLARINC)
14720 PathFormat "$PERL"
14721 PERL="$formatted_path"
14722 AC_SUBST(PERL)
14724 if test -n "$TMPDIR"; then
14725     TEMP_DIRECTORY="$TMPDIR"
14726 else
14727     TEMP_DIRECTORY="/tmp"
14729 if test "$build_os" = "cygwin"; then
14730     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14732 AC_SUBST(TEMP_DIRECTORY)
14734 # setup the PATH for the environment
14735 if test -n "$LO_PATH_FOR_BUILD"; then
14736     LO_PATH="$LO_PATH_FOR_BUILD"
14737     case "$host_os" in
14738     cygwin*|wsl*)
14739         pathmunge "$MSVC_HOST_PATH" "before"
14740         ;;
14741     esac
14742 else
14743     LO_PATH="$PATH"
14745     case "$host_os" in
14747     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14748         if test "$ENABLE_JAVA" != ""; then
14749             pathmunge "$JAVA_HOME/bin" "after"
14750         fi
14751         ;;
14753     cygwin*|wsl*)
14754         # Win32 make needs native paths
14755         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14756             LO_PATH=`cygpath -p -m "$PATH"`
14757         fi
14758         if test "$WIN_BUILD_ARCH" = "x64"; then
14759             # needed for msi packaging
14760             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14761         fi
14762         # .NET 4.6 and higher don't have bin directory
14763         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14764             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14765         fi
14766         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14767         pathmunge "$CSC_PATH" "before"
14768         pathmunge "$MIDL_PATH" "before"
14769         pathmunge "$AL_PATH" "before"
14770         pathmunge "$MSVC_MULTI_PATH" "before"
14771         pathmunge "$MSVC_BUILD_PATH" "before"
14772         if test -n "$MSBUILD_PATH" ; then
14773             pathmunge "$MSBUILD_PATH" "before"
14774         fi
14775         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14776         if test "$ENABLE_JAVA" != ""; then
14777             if test -d "$JAVA_HOME/jre/bin/client"; then
14778                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14779             fi
14780             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14781                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14782             fi
14783             pathmunge "$JAVA_HOME/bin" "before"
14784         fi
14785         pathmunge "$MSVC_HOST_PATH" "before"
14786         ;;
14788     solaris*)
14789         pathmunge "/usr/css/bin" "before"
14790         if test "$ENABLE_JAVA" != ""; then
14791             pathmunge "$JAVA_HOME/bin" "after"
14792         fi
14793         ;;
14794     esac
14797 AC_SUBST(LO_PATH)
14799 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14800 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14801     x_LO_ELFCHECK_ALLOWLIST=
14802 else
14803     x_LO_ELFCHECK_ALLOWLIST=[\#]
14805 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14806 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14808 libo_FUZZ_SUMMARY
14810 # Generate a configuration sha256 we can use for deps
14811 if test -f config_host.mk; then
14812     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14814 if test -f config_host_lang.mk; then
14815     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14818 CFLAGS=$my_original_CFLAGS
14819 CXXFLAGS=$my_original_CXXFLAGS
14820 CPPFLAGS=$my_original_CPPFLAGS
14822 AC_CONFIG_LINKS([include:include])
14824 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14825 # BUILD platform configuration] - otherwise breaks cross building
14826 AC_CONFIG_FILES([config_host.mk
14827                  config_host_lang.mk
14828                  Makefile
14829                  lo.xcent
14830                  bin/bffvalidator.sh
14831                  bin/odfvalidator.sh
14832                  bin/officeotron.sh
14833                  hardened_runtime.xcent
14834                  instsetoo_native/util/openoffice.lst
14835                  sysui/desktop/macosx/Info.plist
14836                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14838 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14839 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14840 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14841 AC_CONFIG_HEADERS([config_host/config_clang.h])
14842 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14843 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14844 AC_CONFIG_HEADERS([config_host/config_eot.h])
14845 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14846 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14847 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
14848 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14849 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14850 AC_CONFIG_HEADERS([config_host/config_features.h])
14851 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14852 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14853 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14854 AC_CONFIG_HEADERS([config_host/config_folders.h])
14855 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14856 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14857 AC_CONFIG_HEADERS([config_host/config_gio.h])
14858 AC_CONFIG_HEADERS([config_host/config_global.h])
14859 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14860 AC_CONFIG_HEADERS([config_host/config_java.h])
14861 AC_CONFIG_HEADERS([config_host/config_langs.h])
14862 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14863 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14864 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14865 AC_CONFIG_HEADERS([config_host/config_locales.h])
14866 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14867 AC_CONFIG_HEADERS([config_host/config_oox.h])
14868 AC_CONFIG_HEADERS([config_host/config_options.h])
14869 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14870 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14871 AC_CONFIG_HEADERS([config_host/config_skia.h])
14872 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14873 AC_CONFIG_HEADERS([config_host/config_validation.h])
14874 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14875 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14876 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14877 AC_CONFIG_HEADERS([config_host/config_version.h])
14878 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14879 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14880 AC_CONFIG_HEADERS([config_host/config_python.h])
14881 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14882 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14883 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14884 AC_OUTPUT
14886 if test "$CROSS_COMPILING" = TRUE; then
14887     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14890 # touch the config timestamp file
14891 if test ! -f config_host.mk.stamp; then
14892     echo > config_host.mk.stamp
14893 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14894     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14895 else
14896     echo > config_host.mk.stamp
14899 # touch the config lang timestamp file
14900 if test ! -f config_host_lang.mk.stamp; then
14901     echo > config_host_lang.mk.stamp
14902 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14903     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14904 else
14905     echo > config_host_lang.mk.stamp
14909 if test \( "$STALE_MAKE" = "TRUE" \) \
14910         -a "$build_os" = "cygwin"; then
14912 cat << _EOS
14913 ****************************************************************************
14914 WARNING:
14915 Your make version is known to be horribly slow, and hard to debug
14916 problems with. To get a reasonably functional make please do:
14918 to install a pre-compiled binary make for Win32
14920  mkdir -p /opt/lo/bin
14921  cd /opt/lo/bin
14922  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14923  cp make-4.2.1-msvc.exe make
14924  chmod +x make
14926 to install from source:
14927 place yourself in a working directory of you choice.
14929  git clone git://git.savannah.gnu.org/make.git
14931  [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"]
14932  set PATH=%PATH%;C:\Cygwin\bin
14933  [or Cygwin64, if that is what you have]
14934  cd path-to-make-repo-you-cloned-above
14935  build_w32.bat --without-guile
14937 should result in a WinRel/gnumake.exe.
14938 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14940 Then re-run autogen.sh
14942 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14943 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14945 _EOS
14949 cat << _EOF
14950 ****************************************************************************
14952 To show information on various make targets and make flags, run:
14953 $GNUMAKE help
14955 To just build, run:
14956 $GNUMAKE
14958 _EOF
14960 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14961     cat << _EOF
14962 After the build has finished successfully, you can immediately run what you built using the command:
14963 _EOF
14965     if test $_os = Darwin; then
14966         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14967     else
14968         echo instdir/program/soffice
14969     fi
14970     cat << _EOF
14972 If you want to run the unit tests, run:
14973 $GNUMAKE check
14975 _EOF
14978 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14979     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14980     cat "$WARNINGS_FILE_FOR_BUILD"
14981     echo
14984 if test -s "$WARNINGS_FILE"; then
14985     echo "HOST config ($WARNINGS_FILE)"
14986     cat "$WARNINGS_FILE"
14989 # Remove unneeded emconfigure artifacts
14990 rm -f a.out a.wasm a.out.js a.out.wasm
14992 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: