upgrade libcmis
[LibreOffice.git] / configure.ac
blob810c8d8253b3959eda62653ca48d183aad52d8ee
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.6.4.0.0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     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"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468     PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
503 else
504     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 # replace backslashes, to get a valid c++ string
526 config_args=$(echo $ac_configure_args | tr '\\' '/')
527 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
529 dnl ===================================================================
530 dnl Product version
531 dnl ===================================================================
532 AC_MSG_CHECKING([for product version])
533 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
534 AC_MSG_RESULT([$PRODUCTVERSION])
535 AC_SUBST(PRODUCTVERSION)
537 AC_PROG_EGREP
538 # AC_PROG_EGREP doesn't set GREP on all systems as well
539 AC_PATH_PROG(GREP, grep)
541 BUILDDIR=`pwd`
542 cd $srcdir
543 SRC_ROOT=`pwd`
544 cd $BUILDDIR
545 x_Cygwin=[\#]
547 dnl ======================================
548 dnl Required GObject introspection version
549 dnl ======================================
550 INTROSPECTION_REQUIRED_VERSION=1.32.0
552 dnl ===================================================================
553 dnl Search all the common names for GNU Make
554 dnl ===================================================================
555 AC_MSG_CHECKING([for GNU Make])
557 # try to use our own make if it is available and GNUMAKE was not already defined
558 if test -z "$GNUMAKE"; then
559     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
560         GNUMAKE="$LODE_HOME/opt/bin/make"
561     elif test -x "/opt/lo/bin/make"; then
562         GNUMAKE="/opt/lo/bin/make"
563     fi
566 GNUMAKE_WIN_NATIVE=
567 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
568     if test -n "$a"; then
569         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
570         if test $? -eq 0;  then
571             if test "$build_os" = "cygwin"; then
572                 if test -n "$($a -v | grep 'Built for Windows')" ; then
573                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
574                     GNUMAKE_WIN_NATIVE="TRUE"
575                 else
576                     GNUMAKE=`which $a`
577                 fi
578             else
579                 GNUMAKE=`which $a`
580             fi
581             break
582         fi
583     fi
584 done
585 AC_MSG_RESULT($GNUMAKE)
586 if test -z "$GNUMAKE"; then
587     AC_MSG_ERROR([not found. install GNU Make.])
588 else
589     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
590         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
591     fi
594 win_short_path_for_make()
596     local short_path="$1"
597     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
598         cygpath -sm "$short_path"
599     else
600         cygpath -u "$(cygpath -d "$short_path")"
601     fi
605 if test "$build_os" = "cygwin"; then
606     PathFormat "$SRC_ROOT"
607     SRC_ROOT="$formatted_path"
608     PathFormat "$BUILDDIR"
609     BUILDDIR="$formatted_path"
610     x_Cygwin=
611     AC_MSG_CHECKING(for explicit COMSPEC)
612     if test -z "$COMSPEC"; then
613         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
614     else
615         AC_MSG_RESULT([found: $COMSPEC])
616     fi
619 AC_SUBST(SRC_ROOT)
620 AC_SUBST(BUILDDIR)
621 AC_SUBST(x_Cygwin)
622 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
623 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
624 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
626 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
627     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
630 # need sed in os checks...
631 AC_PATH_PROGS(SED, sed)
632 if test -z "$SED"; then
633     AC_MSG_ERROR([install sed to run this script])
636 # Set the ENABLE_LTO variable
637 # ===================================================================
638 AC_MSG_CHECKING([whether to use link-time optimization])
639 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
640     ENABLE_LTO="TRUE"
641     AC_MSG_RESULT([yes])
642 else
643     ENABLE_LTO=""
644     AC_MSG_RESULT([no])
646 AC_SUBST(ENABLE_LTO)
648 AC_ARG_ENABLE(fuzz-options,
649     AS_HELP_STRING([--enable-fuzz-options],
650         [Randomly enable or disable each of those configurable options
651          that are supposed to be freely selectable without interdependencies,
652          or where bad interaction from interdependencies is automatically avoided.])
655 dnl ===================================================================
656 dnl When building for Android, --with-android-ndk,
657 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
658 dnl mandatory
659 dnl ===================================================================
661 AC_ARG_WITH(android-ndk,
662     AS_HELP_STRING([--with-android-ndk],
663         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
666 AC_ARG_WITH(android-ndk-toolchain-version,
667     AS_HELP_STRING([--with-android-ndk-toolchain-version],
668         [Specify which toolchain version to use, of those present in the
669         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
670         with_android_ndk_toolchain_version=clang5.0)
672 AC_ARG_WITH(android-sdk,
673     AS_HELP_STRING([--with-android-sdk],
674         [Specify location of the Android SDK. Mandatory when building for Android.]),
677 AC_ARG_WITH(android-api-level,
678     AS_HELP_STRING([--with-android-api-level],
679         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
682 ANDROID_NDK_DIR=
683 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
684     with_android_ndk="$SRC_ROOT/external/android-ndk"
686 if test -n "$with_android_ndk"; then
687     eval ANDROID_NDK_DIR=$with_android_ndk
689     ANDROID_API_LEVEL=16
690     if test -n "$with_android_api_level" ; then
691         ANDROID_API_LEVEL="$with_android_api_level"
692     fi
694     if test $host_cpu = arm; then
695         LLVM_TRIPLE=armv7a-linux-androideabi
696         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
697         ANDROID_APP_ABI=armeabi-v7a
698         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
699     elif test $host_cpu = aarch64; then
700         LLVM_TRIPLE=aarch64-linux-android
701         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
702         # minimum android version that supports aarch64
703         if test "$ANDROID_API_LEVEL" -lt "21" ; then
704             ANDROID_API_LEVEL=21
705         fi
706         ANDROID_APP_ABI=arm64-v8a
707     elif test $host_cpu = x86_64; then
708         LLVM_TRIPLE=x86_64-linux-android
709         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
710         # minimum android version that supports x86_64
711         ANDROID_API_LEVEL=21
712         ANDROID_APP_ABI=x86_64
713     else
714         # host_cpu is something like "i386" or "i686" I guess, NDK uses
715         # "x86" in some contexts
716         LLVM_TRIPLE=i686-linux-android
717         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
718         ANDROID_APP_ABI=x86
719     fi
721     # Set up a lot of pre-canned defaults
723     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
724         if test ! -f $ANDROID_NDK_DIR/source.properties; then
725             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
726         fi
727         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
728     else
729         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
730     fi
731     if test -z "$ANDROID_NDK_VERSION";  then
732         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
733     fi
734     case $ANDROID_NDK_VERSION in
735     r9*|r10*)
736         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
737         ;;
738     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
739         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
740         ;;
741     23.*)
742         ;;
743     *)
744         # NDK 24 dropped support for API levels < 19
745         if test "$ANDROID_API_LEVEL" -lt "19"; then
746             ANDROID_API_LEVEL=19
747         fi
748         case $ANDROID_NDK_VERSION in
749         24.*|25.*)
750             ;;
751         *)
752             AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
753             add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
754             ;;
755         esac
756         ;;
757     esac
759     case "$with_android_ndk_toolchain_version" in
760     clang5.0)
761         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
762         ;;
763     *)
764         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
765     esac
767     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
769     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
770     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
771     # manage to link the (app-specific) single huge .so that is built for the app in
772     # android/source/ if there is debug information in a significant part of the object files.
773     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
774     # all objects have been built with debug information.)
775     case $build_os in
776     linux-gnu*)
777         android_HOST_TAG=linux-x86_64
778         ;;
779     darwin*)
780         android_HOST_TAG=darwin-x86_64
781         ;;
782     *)
783         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
784         # ndk would also support windows and windows-x86_64
785         ;;
786     esac
787     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
788     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
790     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
791     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
792     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
793     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
794     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
796     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
797     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
798     if test "$ENABLE_LTO" = TRUE; then
799         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
800         # $CC and $CXX when building external libraries
801         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
802     fi
804     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
806     if test -z "$CC"; then
807         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
808         CC_BASE="clang"
809     fi
810     if test -z "$CXX"; then
811         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
812         CXX_BASE="clang++"
813     fi
815 AC_SUBST(ANDROID_NDK_DIR)
816 AC_SUBST(ANDROID_API_LEVEL)
817 AC_SUBST(ANDROID_APP_ABI)
818 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
819 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
820 AC_SUBST(ANDROID_TOOLCHAIN)
822 dnl ===================================================================
823 dnl --with-android-sdk
824 dnl ===================================================================
825 ANDROID_SDK_DIR=
826 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
827     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
829 if test -n "$with_android_sdk"; then
830     eval ANDROID_SDK_DIR=$with_android_sdk
831     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
833 AC_SUBST(ANDROID_SDK_DIR)
835 AC_ARG_ENABLE([android-lok],
836     AS_HELP_STRING([--enable-android-lok],
837         [The Android app from the android/ subdir needs several tweaks all
838          over the place that break the LOK when used in the Online-based
839          Android app.  This switch indicates that the intent of this build is
840          actually the Online-based, non-modified LOK.])
842 ENABLE_ANDROID_LOK=
843 if test -n "$ANDROID_NDK_DIR" ; then
844     if test "$enable_android_lok" = yes; then
845         ENABLE_ANDROID_LOK=TRUE
846         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
847         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
848     else
849         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
850     fi
852 AC_SUBST([ENABLE_ANDROID_LOK])
854 libo_FUZZ_ARG_ENABLE([android-editing],
855     AS_HELP_STRING([--enable-android-editing],
856         [Enable the experimental editing feature on Android.])
858 ENABLE_ANDROID_EDITING=
859 if test "$enable_android_editing" = yes; then
860     ENABLE_ANDROID_EDITING=TRUE
862 AC_SUBST([ENABLE_ANDROID_EDITING])
864 disable_database_connectivity_dependencies()
866     enable_evolution2=no
867     enable_firebird_sdbc=no
868     enable_mariadb_sdbc=no
869     enable_postgresql_sdbc=no
870     enable_report_builder=no
873 # ===================================================================
875 # Start initial platform setup
877 # The using_* variables reflect platform support and should not be
878 # changed after the "End initial platform setup" block.
879 # This is also true for most test_* variables.
880 # ===================================================================
881 build_crypto=yes
882 test_clucene=no
883 test_gdb_index=no
884 test_openldap=yes
885 test_split_debug=no
886 test_webdav=yes
887 usable_dlapi=yes
889 # There is currently just iOS not using salplug, so this explicitly enables it.
890 # must: using_freetype_fontconfig
891 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
892 # must: using_x11
894 # Default values, as such probably valid just for Linux, set
895 # differently below just for Mac OSX, but at least better than
896 # hardcoding these as we used to do. Much of this is duplicated also
897 # in solenv for old build system and for gbuild, ideally we should
898 # perhaps define stuff like this only here in configure.ac?
900 LINKFLAGSSHL="-shared"
901 PICSWITCH="-fpic"
902 DLLPOST=".so"
904 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
906 INSTROOTBASESUFFIX=
907 INSTROOTCONTENTSUFFIX=
908 SDKDIRNAME=sdk
910 HOST_PLATFORM="$host"
912 host_cpu_for_clang="$host_cpu"
914 case "$host_os" in
916 solaris*)
917     using_freetype_fontconfig=yes
918     using_x11=yes
919     build_skia=yes
920     _os=SunOS
922     dnl ===========================================================
923     dnl Check whether we're using Solaris 10 - SPARC or Intel.
924     dnl ===========================================================
925     AC_MSG_CHECKING([the Solaris operating system release])
926     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
927     if test "$_os_release" -lt "10"; then
928         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
929     else
930         AC_MSG_RESULT([ok ($_os_release)])
931     fi
933     dnl Check whether we're using a SPARC or i386 processor
934     AC_MSG_CHECKING([the processor type])
935     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
936         AC_MSG_RESULT([ok ($host_cpu)])
937     else
938         AC_MSG_ERROR([only SPARC and i386 processors are supported])
939     fi
940     ;;
942 linux-gnu*|k*bsd*-gnu*|linux-musl*)
943     using_freetype_fontconfig=yes
944     using_x11=yes
945     build_skia=yes
946     test_gdb_index=yes
947     test_split_debug=yes
948     if test "$enable_fuzzers" = yes; then
949         test_system_freetype=no
950     fi
951     _os=Linux
952     ;;
954 gnu)
955     using_freetype_fontconfig=yes
956     using_x11=no
957     _os=GNU
958      ;;
960 cygwin*|wsl*)
961     # When building on Windows normally with MSVC under Cygwin,
962     # configure thinks that the host platform (the platform the
963     # built code will run on) is Cygwin, even if it obviously is
964     # Windows, which in Autoconf terminology is called
965     # "mingw32". (Which is misleading as MinGW is the name of the
966     # tool-chain, not an operating system.)
968     # Somewhat confusing, yes. But this configure script doesn't
969     # look at $host etc that much, it mostly uses its own $_os
970     # variable, set here in this case statement.
972     using_freetype_fontconfig=no
973     using_x11=no
974     test_unix_dlapi=no
975     test_openldap=no
976     enable_pagein=no
977     build_skia=yes
978     _os=WINNT
980     DLLPOST=".dll"
981     LINKFLAGSNOUNDEFS=
983     if test "$host_cpu" = "aarch64"; then
984         build_skia=no
985         enable_gpgmepp=no
986         enable_coinmp=no
987         enable_firebird_sdbc=no
988     fi
989     ;;
991 darwin*) # macOS
992     using_freetype_fontconfig=no
993     using_x11=no
994     build_skia=yes
995     enable_pagein=no
996     if test -n "$LODE_HOME" ; then
997         mac_sanitize_path
998         AC_MSG_NOTICE([sanitized the PATH to $PATH])
999     fi
1000     _os=Darwin
1001     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
1002     INSTROOTCONTENTSUFFIX=/Contents
1003     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
1004     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1005     LINKFLAGSSHL="-dynamiclib"
1007     # -fPIC is default
1008     PICSWITCH=""
1010     DLLPOST=".dylib"
1012     # -undefined error is the default
1013     LINKFLAGSNOUNDEFS=""
1014     case "$host_cpu" in
1015     aarch64|arm64)
1016         # Apple's Clang uses "arm64"
1017         host_cpu_for_clang=arm64
1018     esac
1021 ios*) # iOS
1022     using_freetype_fontconfig=no
1023     using_x11=no
1024     build_crypto=no
1025     test_libcmis=no
1026     test_openldap=no
1027     test_webdav=no
1028     if test -n "$LODE_HOME" ; then
1029         mac_sanitize_path
1030         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1031     fi
1032     enable_gpgmepp=no
1033     _os=iOS
1034     enable_mpl_subset=yes
1035     enable_lotuswordpro=no
1036     disable_database_connectivity_dependencies
1037     enable_coinmp=no
1038     enable_lpsolve=no
1039     enable_extension_integration=no
1040     enable_xmlhelp=no
1041     with_ppds=no
1042     if test "$enable_ios_simulator" = "yes"; then
1043         host=x86_64-apple-darwin
1044     fi
1045     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1046     LINKFLAGSSHL="-dynamiclib"
1048     # -fPIC is default
1049     PICSWITCH=""
1051     DLLPOST=".dylib"
1053     # -undefined error is the default
1054     LINKFLAGSNOUNDEFS=""
1056     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1057     # part, so use aarch64-apple-darwin for now.
1058     HOST_PLATFORM=aarch64-apple-darwin
1060     # Apple's Clang uses "arm64"
1061     host_cpu_for_clang=arm64
1064 freebsd*)
1065     using_freetype_fontconfig=yes
1066     using_x11=yes
1067     build_skia=yes
1068     AC_MSG_CHECKING([the FreeBSD operating system release])
1069     if test -n "$with_os_version"; then
1070         OSVERSION="$with_os_version"
1071     else
1072         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1073     fi
1074     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1075     AC_MSG_CHECKING([which thread library to use])
1076     if test "$OSVERSION" -lt "500016"; then
1077         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078         PTHREAD_LIBS="-pthread"
1079     elif test "$OSVERSION" -lt "502102"; then
1080         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1081         PTHREAD_LIBS="-lc_r"
1082     else
1083         PTHREAD_CFLAGS=""
1084         PTHREAD_LIBS="-pthread"
1085     fi
1086     AC_MSG_RESULT([$PTHREAD_LIBS])
1087     _os=FreeBSD
1088     ;;
1090 *netbsd*)
1091     using_freetype_fontconfig=yes
1092     using_x11=yes
1093     test_gtk3_kde5=no
1094     build_skia=yes
1095     PTHREAD_LIBS="-pthread -lpthread"
1096     _os=NetBSD
1097     ;;
1099 openbsd*)
1100     using_freetype_fontconfig=yes
1101     using_x11=yes
1102     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1103     PTHREAD_LIBS="-pthread"
1104     _os=OpenBSD
1105     ;;
1107 dragonfly*)
1108     using_freetype_fontconfig=yes
1109     using_x11=yes
1110     build_skia=yes
1111     PTHREAD_LIBS="-pthread"
1112     _os=DragonFly
1113     ;;
1115 linux-android*)
1116     # API exists, but seems not really usable since Android 7 AFAIK
1117     usable_dlapi=no
1118     using_freetype_fontconfig=yes
1119     using_headless_plugin=no
1120     using_x11=no
1121     build_crypto=no
1122     test_openldap=no
1123     test_system_freetype=no
1124     test_webdav=no
1125     disable_database_connectivity_dependencies
1126     enable_lotuswordpro=no
1127     enable_mpl_subset=yes
1128     enable_cairo_canvas=no
1129     enable_coinmp=yes
1130     enable_lpsolve=no
1131     enable_odk=no
1132     enable_python=no
1133     enable_xmlhelp=no
1134     _os=Android
1135     ;;
1137 haiku*)
1138     using_freetype_fontconfig=yes
1139     using_x11=no
1140     test_gtk3=no
1141     test_gtk3_kde5=no
1142     test_kf5=yes
1143     enable_odk=no
1144     enable_coinmp=no
1145     enable_pdfium=no
1146     enable_sdremote=no
1147     enable_postgresql_sdbc=no
1148     enable_firebird_sdbc=no
1149     _os=Haiku
1150     ;;
1152 emscripten)
1153     # API currently just exists in headers, not code
1154     usable_dlapi=no
1155     using_freetype_fontconfig=yes
1156     using_x11=yes
1157     test_openldap=no
1158     test_qt5=yes
1159     test_split_debug=yes
1160     test_system_freetype=no
1161     enable_compiler_plugins=no
1162     enable_customtarget_components=yes
1163     enable_split_debug=yes
1164     enable_wasm_strip=yes
1165     with_system_zlib=no
1166     with_theme="colibre"
1167     _os=Emscripten
1168     ;;
1171     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1172     ;;
1173 esac
1175 AC_SUBST(HOST_PLATFORM)
1177 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1178     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1181 # Set defaults, if not set by platform
1182 test "${test_cups+set}" = set || test_cups="$using_x11"
1183 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1184 test "${test_gen+set}" = set || test_gen="$using_x11"
1185 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1186 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1187 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1188 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1189 # don't handle test_qt5, so it can disable test_kf5 later
1190 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1191 test "${test_randr+set}" = set || test_randr="$using_x11"
1192 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1193 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1195 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1196 # Make sure fontconfig and freetype test both either system or not
1197 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1198 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1200 # convenience / platform overriding "fixes"
1201 # Don't sort!
1202 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1203 test "$test_kf5" = yes && test_qt5=yes
1204 test "$test_gtk3" != yes && enable_gtk3=no
1205 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1206 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1207 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1209 # Keep in sync with the above $using_x11 depending test default list
1210 disable_x11_tests()
1212     test_cups=no
1213     test_dbus=no
1214     test_gen=no
1215     test_gstreamer_1_0=no
1216     test_gtk3_kde5=no
1217     test_gtk3=no
1218     test_gtk4=no
1219     test_kf5=no
1220     test_qt5=no
1221     test_qt6=no
1222     test_randr=no
1223     test_xrender=no
1226 test "$using_x11" = yes && USING_X11=TRUE
1228 if test "$using_freetype_fontconfig" = yes; then
1229     AC_DEFINE(USE_HEADLESS_CODE)
1230     USE_HEADLESS_CODE=TRUE
1231     if test "$using_headless_plugin" = yes; then
1232         AC_DEFINE(ENABLE_HEADLESS)
1233         ENABLE_HEADLESS=TRUE
1234     fi
1235 else
1236     test_fontconfig=no
1237     test_freetype=no
1240 AC_SUBST(ENABLE_HEADLESS)
1241 AC_SUBST(USE_HEADLESS_CODE)
1243 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1244 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1245 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1246 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1248 # ===================================================================
1250 # End initial platform setup
1252 # ===================================================================
1254 if test "$_os" = "Android" ; then
1255     # Verify that the NDK and SDK options are proper
1256     if test -z "$with_android_ndk"; then
1257         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1258     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1259         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1260     fi
1262     if test -z "$ANDROID_SDK_DIR"; then
1263         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1264     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1265         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1266     fi
1269 AC_SUBST(SDKDIRNAME)
1271 AC_SUBST(PTHREAD_CFLAGS)
1272 AC_SUBST(PTHREAD_LIBS)
1274 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1275 # By default use the ones specified by our build system,
1276 # but explicit override is possible.
1277 AC_MSG_CHECKING(for explicit AFLAGS)
1278 if test -n "$AFLAGS"; then
1279     AC_MSG_RESULT([$AFLAGS])
1280     x_AFLAGS=
1281 else
1282     AC_MSG_RESULT(no)
1283     x_AFLAGS=[\#]
1285 AC_MSG_CHECKING(for explicit CFLAGS)
1286 if test -n "$CFLAGS"; then
1287     AC_MSG_RESULT([$CFLAGS])
1288     x_CFLAGS=
1289 else
1290     AC_MSG_RESULT(no)
1291     x_CFLAGS=[\#]
1293 AC_MSG_CHECKING(for explicit CXXFLAGS)
1294 if test -n "$CXXFLAGS"; then
1295     AC_MSG_RESULT([$CXXFLAGS])
1296     x_CXXFLAGS=
1297 else
1298     AC_MSG_RESULT(no)
1299     x_CXXFLAGS=[\#]
1301 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1302 if test -n "$OBJCFLAGS"; then
1303     AC_MSG_RESULT([$OBJCFLAGS])
1304     x_OBJCFLAGS=
1305 else
1306     AC_MSG_RESULT(no)
1307     x_OBJCFLAGS=[\#]
1309 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1310 if test -n "$OBJCXXFLAGS"; then
1311     AC_MSG_RESULT([$OBJCXXFLAGS])
1312     x_OBJCXXFLAGS=
1313 else
1314     AC_MSG_RESULT(no)
1315     x_OBJCXXFLAGS=[\#]
1317 AC_MSG_CHECKING(for explicit LDFLAGS)
1318 if test -n "$LDFLAGS"; then
1319     AC_MSG_RESULT([$LDFLAGS])
1320     x_LDFLAGS=
1321 else
1322     AC_MSG_RESULT(no)
1323     x_LDFLAGS=[\#]
1325 AC_SUBST(AFLAGS)
1326 AC_SUBST(CFLAGS)
1327 AC_SUBST(CXXFLAGS)
1328 AC_SUBST(OBJCFLAGS)
1329 AC_SUBST(OBJCXXFLAGS)
1330 AC_SUBST(LDFLAGS)
1331 AC_SUBST(x_AFLAGS)
1332 AC_SUBST(x_CFLAGS)
1333 AC_SUBST(x_CXXFLAGS)
1334 AC_SUBST(x_OBJCFLAGS)
1335 AC_SUBST(x_OBJCXXFLAGS)
1336 AC_SUBST(x_LDFLAGS)
1338 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1339 my_original_CFLAGS=$CFLAGS
1340 my_original_CXXFLAGS=$CXXFLAGS
1341 my_original_CPPFLAGS=$CPPFLAGS
1343 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1344 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1345 dnl AC_PROG_CC internally.
1346 if test "$_os" != "WINNT"; then
1347     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1348     save_CFLAGS=$CFLAGS
1349     AC_PROG_CC
1350     CFLAGS=$save_CFLAGS
1351     if test -z "$CC_BASE"; then
1352         CC_BASE=`first_arg_basename "$CC"`
1353     fi
1356 if test "$_os" != "WINNT"; then
1357     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1358 else
1359     ENDIANNESS=little
1361 AC_SUBST(ENDIANNESS)
1363 if test "$usable_dlapi" != no; then
1364     AC_DEFINE([HAVE_DLAPI])
1365     if test "$test_unix_dlapi" != no; then
1366         save_LIBS="$LIBS"
1367         AC_SEARCH_LIBS([dlsym], [dl],
1368             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1369             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1370         LIBS="$save_LIBS"
1371         AC_DEFINE([HAVE_UNIX_DLAPI])
1372     fi
1374 AC_SUBST(UNIX_DLAPI_LIBS)
1376 # Check for a (GNU) backtrace implementation
1377 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1378 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1379 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1380     save_LIBS="$LIBS"
1381     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1382         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1383         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1384     LIBS="$save_LIBS"
1386 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1387     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1390 dnl ===================================================================
1391 dnl Sanity checks for Emscripten SDK setup
1392 dnl ===================================================================
1394 EMSCRIPTEN_MIN_MAJOR=2
1395 EMSCRIPTEN_MIN_MINOR=0
1396 EMSCRIPTEN_MIN_TINY=31
1397 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1399 if test "$_os" = "Emscripten"; then
1400     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1401     AS_IF([test -z "$EMSDK"],
1402           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1403     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1404     if test -f "$EMSCRIPTEN_VERSION_H"; then
1405         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1406         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1407         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1408     else
1409         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1410         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1411         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1412         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1413     fi
1415     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1417     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1418     if test $? -eq 0; then
1419         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1420     else
1421         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1422     fi
1424     EMSCRIPTEN_ERROR=0
1425     if ! which emconfigure >/dev/null 2>&1; then
1426         AC_MSG_WARN([emconfigure must be in your \$PATH])
1427         EMSCRIPTEN_ERROR=1
1428     fi
1429     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1430         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1431         EMSCRIPTEN_ERROR=1
1432     fi
1433     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1434     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1435         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1436         EMSCRIPTEN_ERROR=1
1437     fi
1438     if test $EMSCRIPTEN_ERROR -ne 0; then
1439         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1440     fi
1442 AC_SUBST(EMSDK_FILE_PACKAGER)
1444 ###############################################################################
1445 # Extensions switches --enable/--disable
1446 ###############################################################################
1447 # By default these should be enabled unless having extra dependencies.
1448 # If there is extra dependency over configure options then the enable should
1449 # be automagic based on whether the requiring feature is enabled or not.
1450 # All this options change anything only with --enable-extension-integration.
1452 # The name of this option and its help string makes it sound as if
1453 # extensions are built anyway, just not integrated in the installer,
1454 # if you use --disable-extension-integration. Is that really the
1455 # case?
1457 AC_ARG_ENABLE(ios-simulator,
1458     AS_HELP_STRING([--enable-ios-simulator],
1459         [build for iOS simulator])
1462 libo_FUZZ_ARG_ENABLE(extension-integration,
1463     AS_HELP_STRING([--disable-extension-integration],
1464         [Disable integration of the built extensions in the installer of the
1465          product. Use this switch to disable the integration.])
1468 AC_ARG_ENABLE(avmedia,
1469     AS_HELP_STRING([--disable-avmedia],
1470         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1471 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1473 AC_ARG_ENABLE(database-connectivity,
1474     AS_HELP_STRING([--disable-database-connectivity],
1475         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1478 # This doesn't mean not building (or "integrating") extensions
1479 # (although it probably should; i.e. it should imply
1480 # --disable-extension-integration I guess), it means not supporting
1481 # any extension mechanism at all
1482 libo_FUZZ_ARG_ENABLE(extensions,
1483     AS_HELP_STRING([--disable-extensions],
1484         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1487 AC_ARG_ENABLE(scripting,
1488     AS_HELP_STRING([--disable-scripting],
1489         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1490 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1492 # This is mainly for Android and iOS, but could potentially be used in some
1493 # special case otherwise, too, so factored out as a separate setting
1495 AC_ARG_ENABLE(dynamic-loading,
1496     AS_HELP_STRING([--disable-dynamic-loading],
1497         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1500 libo_FUZZ_ARG_ENABLE(report-builder,
1501     AS_HELP_STRING([--disable-report-builder],
1502         [Disable the Report Builder.])
1505 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1506     AS_HELP_STRING([--enable-ext-wiki-publisher],
1507         [Enable the Wiki Publisher extension.])
1510 libo_FUZZ_ARG_ENABLE(lpsolve,
1511     AS_HELP_STRING([--disable-lpsolve],
1512         [Disable compilation of the lp solve solver ])
1514 libo_FUZZ_ARG_ENABLE(coinmp,
1515     AS_HELP_STRING([--disable-coinmp],
1516         [Disable compilation of the CoinMP solver ])
1519 libo_FUZZ_ARG_ENABLE(pdfimport,
1520     AS_HELP_STRING([--disable-pdfimport],
1521         [Disable building the PDF import feature.])
1524 libo_FUZZ_ARG_ENABLE(pdfium,
1525     AS_HELP_STRING([--disable-pdfium],
1526         [Disable building PDFium. Results in unsecure PDF signature verification.])
1529 libo_FUZZ_ARG_ENABLE(skia,
1530     AS_HELP_STRING([--disable-skia],
1531         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1534 ###############################################################################
1536 dnl ---------- *** ----------
1538 libo_FUZZ_ARG_ENABLE(mergelibs,
1539     AS_HELP_STRING([--enable-mergelibs],
1540         [Merge several of the smaller libraries into one big, "merged", one.])
1543 libo_FUZZ_ARG_ENABLE(breakpad,
1544     AS_HELP_STRING([--enable-breakpad],
1545         [Enables breakpad for crash reporting.])
1548 libo_FUZZ_ARG_ENABLE(crashdump,
1549     AS_HELP_STRING([--disable-crashdump],
1550         [Disable dump.ini and dump-file, when --enable-breakpad])
1553 AC_ARG_ENABLE(fetch-external,
1554     AS_HELP_STRING([--disable-fetch-external],
1555         [Disables fetching external tarballs from web sources.])
1558 AC_ARG_ENABLE(fuzzers,
1559     AS_HELP_STRING([--enable-fuzzers],
1560         [Enables building libfuzzer targets for fuzz testing.])
1563 libo_FUZZ_ARG_ENABLE(pch,
1564     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1565         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1566          Using 'system' will include only external headers, 'base' will add also headers
1567          from base modules, 'normal' will also add all headers except from the module built,
1568          'full' will use all suitable headers even from a module itself.])
1571 libo_FUZZ_ARG_ENABLE(epm,
1572     AS_HELP_STRING([--enable-epm],
1573         [LibreOffice includes self-packaging code, that requires epm, however epm is
1574          useless for large scale package building.])
1577 libo_FUZZ_ARG_ENABLE(odk,
1578     AS_HELP_STRING([--enable-odk],
1579         [Enable building the Office Development Kit, the part that extensions need to build against])
1582 AC_ARG_ENABLE(mpl-subset,
1583     AS_HELP_STRING([--enable-mpl-subset],
1584         [Don't compile any pieces which are not MPL or more liberally licensed])
1587 libo_FUZZ_ARG_ENABLE(evolution2,
1588     AS_HELP_STRING([--enable-evolution2],
1589         [Allows the built-in evolution 2 addressbook connectivity build to be
1590          enabled.])
1593 AC_ARG_ENABLE(avahi,
1594     AS_HELP_STRING([--enable-avahi],
1595         [Determines whether to use Avahi to advertise Impress to remote controls.])
1598 libo_FUZZ_ARG_ENABLE(werror,
1599     AS_HELP_STRING([--enable-werror],
1600         [Turn warnings to errors. (Has no effect in modules where the treating
1601          of warnings as errors is disabled explicitly.)]),
1604 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1605     AS_HELP_STRING([--enable-assert-always-abort],
1606         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1609 libo_FUZZ_ARG_ENABLE(dbgutil,
1610     AS_HELP_STRING([--enable-dbgutil],
1611         [Provide debugging support from --enable-debug and include additional debugging
1612          utilities such as object counting or more expensive checks.
1613          This is the recommended option for developers.
1614          Note that this makes the build ABI incompatible, it is not possible to mix object
1615          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1617 libo_FUZZ_ARG_ENABLE(debug,
1618     AS_HELP_STRING([--enable-debug],
1619         [Include debugging information, disable compiler optimization and inlining plus
1620          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1622 libo_FUZZ_ARG_ENABLE(split-debug,
1623     AS_HELP_STRING([--disable-split-debug],
1624         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1625          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1627 libo_FUZZ_ARG_ENABLE(gdb-index,
1628     AS_HELP_STRING([--disable-gdb-index],
1629         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1630          The feature requires a linker that supports the --gdb-index option.]))
1632 libo_FUZZ_ARG_ENABLE(sal-log,
1633     AS_HELP_STRING([--enable-sal-log],
1634         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1636 libo_FUZZ_ARG_ENABLE(symbols,
1637     AS_HELP_STRING([--enable-symbols],
1638         [Generate debug information.
1639          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1640          otherwise. It is possible to explicitly specify gbuild build targets
1641          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1642          everything in the directory; there is no ordering, more specific overrides
1643          more general, and disabling takes precedence).
1644          Example: --enable-symbols="all -sw/ -Library_sc".]))
1646 libo_FUZZ_ARG_ENABLE(optimized,
1647     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1648         [Whether to compile with optimization flags.
1649          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1650          otherwise. Using 'debug' will try to use only optimizations that should
1651          not interfere with debugging. For Emscripten we default to optimized (-O1)
1652          debug build, as otherwise binaries become too large.]))
1654 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1655     AS_HELP_STRING([--disable-runtime-optimizations],
1656         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1657          JVM JIT) that are known to interact badly with certain dynamic analysis
1658          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1659          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1660          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1662 AC_ARG_WITH(valgrind,
1663     AS_HELP_STRING([--with-valgrind],
1664         [Make availability of Valgrind headers a hard requirement.]))
1666 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1667     AS_HELP_STRING([--enable-compiler-plugins],
1668         [Enable compiler plugins that will perform additional checks during
1669          building. Enabled automatically by --enable-dbgutil.
1670          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1671 COMPILER_PLUGINS_DEBUG=
1672 if test "$enable_compiler_plugins" = debug; then
1673     enable_compiler_plugins=yes
1674     COMPILER_PLUGINS_DEBUG=TRUE
1677 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1678     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1679         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1680          relevant in the --disable-compiler-plugins case.]))
1682 libo_FUZZ_ARG_ENABLE(ooenv,
1683     AS_HELP_STRING([--enable-ooenv],
1684         [Enable ooenv for the instdir installation.]))
1686 AC_ARG_ENABLE(lto,
1687     AS_HELP_STRING([--enable-lto],
1688         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1689          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1690          linker.)]))
1692 AC_ARG_ENABLE(python,
1693     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1694         [Enables or disables Python support at run-time.
1695          Also specifies what Python to use at build-time.
1696          'fully-internal' even forces the internal version for uses of Python
1697          during the build.
1698          On macOS the only choices are
1699          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1700          ]))
1702 libo_FUZZ_ARG_ENABLE(gtk3,
1703     AS_HELP_STRING([--disable-gtk3],
1704         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1705 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1707 AC_ARG_ENABLE(gtk4,
1708     AS_HELP_STRING([--enable-gtk4],
1709         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1711 AC_ARG_ENABLE(introspection,
1712     AS_HELP_STRING([--enable-introspection],
1713         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1714          Linux distributions.)]))
1716 AC_ARG_ENABLE(split-app-modules,
1717     AS_HELP_STRING([--enable-split-app-modules],
1718         [Split file lists for app modules, e.g. base, calc.
1719          Has effect only with make distro-pack-install]),
1722 AC_ARG_ENABLE(split-opt-features,
1723     AS_HELP_STRING([--enable-split-opt-features],
1724         [Split file lists for some optional features, e.g. pyuno, testtool.
1725          Has effect only with make distro-pack-install]),
1728 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1729     AS_HELP_STRING([--disable-cairo-canvas],
1730         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1733 libo_FUZZ_ARG_ENABLE(dbus,
1734     AS_HELP_STRING([--disable-dbus],
1735         [Determines whether to enable features that depend on dbus.
1736          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1737 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1739 libo_FUZZ_ARG_ENABLE(sdremote,
1740     AS_HELP_STRING([--disable-sdremote],
1741         [Determines whether to enable Impress remote control (i.e. the server component).]),
1742 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1744 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1745     AS_HELP_STRING([--disable-sdremote-bluetooth],
1746         [Determines whether to build sdremote with bluetooth support.
1747          Requires dbus on Linux.]))
1749 libo_FUZZ_ARG_ENABLE(gio,
1750     AS_HELP_STRING([--disable-gio],
1751         [Determines whether to use the GIO support.]),
1752 ,test "${enable_gio+set}" = set || enable_gio=yes)
1754 AC_ARG_ENABLE(qt5,
1755     AS_HELP_STRING([--enable-qt5],
1756         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1757          available.]),
1760 AC_ARG_ENABLE(qt6,
1761     AS_HELP_STRING([--enable-qt6],
1762         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1763          available.]),
1766 AC_ARG_ENABLE(kf5,
1767     AS_HELP_STRING([--enable-kf5],
1768         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1769          KF5 are available.]),
1772 AC_ARG_ENABLE(gtk3_kde5,
1773     AS_HELP_STRING([--enable-gtk3-kde5],
1774         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1775          platforms where Gtk3, Qt5 and Plasma is available.]),
1778 AC_ARG_ENABLE(gen,
1779     AS_HELP_STRING([--enable-gen],
1780         [To select the gen backend in case of --disable-dynamic-loading.
1781          Per default auto-enabled when X11 is used.]),
1782 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1784 AC_ARG_ENABLE(gui,
1785     AS_HELP_STRING([--disable-gui],
1786         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1787 ,enable_gui=yes)
1789 libo_FUZZ_ARG_ENABLE(randr,
1790     AS_HELP_STRING([--disable-randr],
1791         [Disable RandR support in the vcl project.]),
1792 ,test "${enable_randr+set}" = set || enable_randr=yes)
1794 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1795     AS_HELP_STRING([--disable-gstreamer-1-0],
1796         [Disable building with the gstreamer 1.0 avmedia backend.]),
1797 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1799 libo_FUZZ_ARG_ENABLE([eot],
1800     [AS_HELP_STRING([--enable-eot],
1801         [Enable support for Embedded OpenType fonts.])],
1802 ,test "${enable_eot+set}" = set || enable_eot=no)
1804 libo_FUZZ_ARG_ENABLE(cve-tests,
1805     AS_HELP_STRING([--disable-cve-tests],
1806         [Prevent CVE tests to be executed]),
1809 AC_ARG_ENABLE(build-opensymbol,
1810     AS_HELP_STRING([--enable-build-opensymbol],
1811         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1812          fontforge installed.]),
1815 AC_ARG_ENABLE(dependency-tracking,
1816     AS_HELP_STRING([--enable-dependency-tracking],
1817         [Do not reject slow dependency extractors.])[
1818   --disable-dependency-tracking
1819                           Disables generation of dependency information.
1820                           Speed up one-time builds.],
1823 AC_ARG_ENABLE(icecream,
1824     AS_HELP_STRING([--enable-icecream],
1825         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1826          It defaults to /opt/icecream for the location of the icecream gcc/g++
1827          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1830 AC_ARG_ENABLE(ld,
1831     AS_HELP_STRING([--enable-ld=<linker>],
1832         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1833          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1834          If <linker> contains any ':', the part before the first ':' is used as the value of
1835          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1836          needed for Clang 12).]),
1839 libo_FUZZ_ARG_ENABLE(cups,
1840     AS_HELP_STRING([--disable-cups],
1841         [Do not build cups support.])
1844 AC_ARG_ENABLE(ccache,
1845     AS_HELP_STRING([--disable-ccache],
1846         [Do not try to use ccache automatically.
1847          By default we will try to detect if ccache is available; in that case if
1848          CC/CXX are not yet set, and --enable-icecream is not given, we
1849          attempt to use ccache. --disable-ccache disables ccache completely.
1850          Additionally ccache's depend mode is enabled if possible,
1851          use --enable-ccache=nodepend to enable ccache without depend mode.
1855 AC_ARG_ENABLE(z7-debug,
1856     AS_HELP_STRING([--enable-z7-debug],
1857         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1858          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1859          Enabled by default if ccache is detected.]))
1861 libo_FUZZ_ARG_ENABLE(online-update,
1862     AS_HELP_STRING([--enable-online-update],
1863         [Enable the online update service that will check for new versions of
1864          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1865          If the value is "mar", the experimental Mozilla-like update will be
1866          enabled instead of the traditional update mechanism.]),
1869 AC_ARG_WITH(update-config,
1870     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1871                    [Path to the update config ini file]))
1873 libo_FUZZ_ARG_ENABLE(extension-update,
1874     AS_HELP_STRING([--disable-extension-update],
1875         [Disable possibility to update installed extensions.]),
1878 libo_FUZZ_ARG_ENABLE(release-build,
1879     AS_HELP_STRING([--enable-release-build],
1880         [Enable release build. Note that the "release build" choice is orthogonal to
1881          whether symbols are present, debug info is generated, or optimization
1882          is done.
1883          See https://wiki.documentfoundation.org/Development/DevBuild]),
1886 AC_ARG_ENABLE(windows-build-signing,
1887     AS_HELP_STRING([--enable-windows-build-signing],
1888         [Enable signing of windows binaries (*.exe, *.dll)]),
1891 AC_ARG_ENABLE(silent-msi,
1892     AS_HELP_STRING([--enable-silent-msi],
1893         [Enable MSI with LIMITUI=1 (silent install).]),
1896 AC_ARG_ENABLE(wix,
1897     AS_HELP_STRING([--enable-wix],
1898         [Build Windows installer using WiX.]),
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(theme,
2129     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2130         [Choose which themes to include. By default those themes with an '*' are included.
2131          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2132          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2133          *elementary, *elementary_svg,
2134          *karasa_jaga, *karasa_jaga_svg,
2135          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2136          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2139 libo_FUZZ_ARG_WITH(helppack-integration,
2140     AS_HELP_STRING([--without-helppack-integration],
2141         [It will not integrate the helppacks to the installer
2142          of the product. Please use this switch to use the online help
2143          or separate help packages.]),
2146 libo_FUZZ_ARG_WITH(fonts,
2147     AS_HELP_STRING([--without-fonts],
2148         [LibreOffice includes some third-party fonts to provide a reliable basis for
2149          help content, templates, samples, etc. When these fonts are already
2150          known to be available on the system then you should use this option.]),
2153 AC_ARG_WITH(epm,
2154     AS_HELP_STRING([--with-epm],
2155         [Decides which epm to use. Default is to use the one from the system if
2156          one is built. When either this is not there or you say =internal epm
2157          will be built.]),
2160 AC_ARG_WITH(package-format,
2161     AS_HELP_STRING([--with-package-format],
2162         [Specify package format(s) for LibreOffice installation sets. The
2163          implicit --without-package-format leads to no installation sets being
2164          generated. Possible values: archive, bsd, deb, dmg,
2165          installed, msi, pkg, and rpm.
2166          Example: --with-package-format='deb rpm']),
2169 AC_ARG_WITH(tls,
2170     AS_HELP_STRING([--with-tls],
2171         [Decides which TLS/SSL and cryptographic implementations to use for
2172          LibreOffice's code. Default is to use NSS although OpenSSL is also
2173          possible. Notice that selecting NSS restricts the usage of OpenSSL
2174          in LO's code but selecting OpenSSL doesn't restrict by now the
2175          usage of NSS in LO's code. Possible values: openssl, nss.
2176          Example: --with-tls="nss"]),
2179 AC_ARG_WITH(system-libs,
2180     AS_HELP_STRING([--with-system-libs],
2181         [Use libraries already on system -- enables all --with-system-* flags.]),
2184 AC_ARG_WITH(system-bzip2,
2185     AS_HELP_STRING([--with-system-bzip2],
2186         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2187     [with_system_bzip2="$with_system_libs"])
2189 AC_ARG_WITH(system-headers,
2190     AS_HELP_STRING([--with-system-headers],
2191         [Use headers already on system -- enables all --with-system-* flags for
2192          external packages whose headers are the only entities used i.e.
2193          boost/odbc/sane-header(s).]),,
2194     [with_system_headers="$with_system_libs"])
2196 AC_ARG_WITH(system-jars,
2197     AS_HELP_STRING([--without-system-jars],
2198         [When building with --with-system-libs, also the needed jars are expected
2199          on the system. Use this to disable that]),,
2200     [with_system_jars="$with_system_libs"])
2202 AC_ARG_WITH(system-cairo,
2203     AS_HELP_STRING([--with-system-cairo],
2204         [Use cairo libraries already on system.  Happens automatically for
2205          (implicit) --enable-gtk3.]))
2207 AC_ARG_WITH(system-epoxy,
2208     AS_HELP_STRING([--with-system-epoxy],
2209         [Use epoxy libraries already on system.  Happens automatically for
2210          (implicit) --enable-gtk3.]),,
2211        [with_system_epoxy="$with_system_libs"])
2213 AC_ARG_WITH(myspell-dicts,
2214     AS_HELP_STRING([--with-myspell-dicts],
2215         [Adds myspell dictionaries to the LibreOffice installation set]),
2218 AC_ARG_WITH(system-dicts,
2219     AS_HELP_STRING([--without-system-dicts],
2220         [Do not use dictionaries from system paths.]),
2223 AC_ARG_WITH(external-dict-dir,
2224     AS_HELP_STRING([--with-external-dict-dir],
2225         [Specify external dictionary dir.]),
2228 AC_ARG_WITH(external-hyph-dir,
2229     AS_HELP_STRING([--with-external-hyph-dir],
2230         [Specify external hyphenation pattern dir.]),
2233 AC_ARG_WITH(external-thes-dir,
2234     AS_HELP_STRING([--with-external-thes-dir],
2235         [Specify external thesaurus dir.]),
2238 AC_ARG_WITH(system-zlib,
2239     AS_HELP_STRING([--with-system-zlib],
2240         [Use zlib already on system.]),,
2241     [with_system_zlib=auto])
2243 AC_ARG_WITH(system-jpeg,
2244     AS_HELP_STRING([--with-system-jpeg],
2245         [Use jpeg already on system.]),,
2246     [with_system_jpeg="$with_system_libs"])
2248 AC_ARG_WITH(system-expat,
2249     AS_HELP_STRING([--with-system-expat],
2250         [Use expat already on system.]),,
2251     [with_system_expat="$with_system_libs"])
2253 AC_ARG_WITH(system-libxml,
2254     AS_HELP_STRING([--with-system-libxml],
2255         [Use libxml/libxslt already on system.]),,
2256     [with_system_libxml=auto])
2258 AC_ARG_WITH(system-openldap,
2259     AS_HELP_STRING([--with-system-openldap],
2260         [Use the OpenLDAP LDAP SDK already on system.]),,
2261     [with_system_openldap="$with_system_libs"])
2263 libo_FUZZ_ARG_ENABLE(poppler,
2264     AS_HELP_STRING([--disable-poppler],
2265         [Disable building Poppler.])
2268 AC_ARG_WITH(system-poppler,
2269     AS_HELP_STRING([--with-system-poppler],
2270         [Use system poppler (only needed for PDF import).]),,
2271     [with_system_poppler="$with_system_libs"])
2273 AC_ARG_WITH(system-abseil,
2274     AS_HELP_STRING([--with-system-abseil],
2275         [Use the abseil libraries already on system.]),,
2276     [with_system_abseil="$with_system_libs"])
2278 AC_ARG_WITH(system-openjpeg,
2279     AS_HELP_STRING([--with-system-openjpeg],
2280         [Use the OpenJPEG library already on system.]),,
2281     [with_system_openjpeg="$with_system_libs"])
2283 libo_FUZZ_ARG_ENABLE(gpgmepp,
2284     AS_HELP_STRING([--disable-gpgmepp],
2285         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2288 AC_ARG_WITH(system-gpgmepp,
2289     AS_HELP_STRING([--with-system-gpgmepp],
2290         [Use gpgmepp already on system]),,
2291     [with_system_gpgmepp="$with_system_libs"])
2293 AC_ARG_WITH(system-mariadb,
2294     AS_HELP_STRING([--with-system-mariadb],
2295         [Use MariaDB/MySQL libraries already on system.]),,
2296     [with_system_mariadb="$with_system_libs"])
2298 AC_ARG_ENABLE(bundle-mariadb,
2299     AS_HELP_STRING([--enable-bundle-mariadb],
2300         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2303 AC_ARG_WITH(system-postgresql,
2304     AS_HELP_STRING([--with-system-postgresql],
2305         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2306          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2307     [with_system_postgresql="$with_system_libs"])
2309 AC_ARG_WITH(libpq-path,
2310     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2311         [Use this PostgreSQL C interface (libpq) installation for building
2312          the PostgreSQL-SDBC extension.]),
2315 AC_ARG_WITH(system-firebird,
2316     AS_HELP_STRING([--with-system-firebird],
2317         [Use Firebird libraries already on system, for building the Firebird-SDBC
2318          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2319     [with_system_firebird="$with_system_libs"])
2321 AC_ARG_WITH(system-libtommath,
2322             AS_HELP_STRING([--with-system-libtommath],
2323                            [Use libtommath already on system]),,
2324             [with_system_libtommath="$with_system_libs"])
2326 AC_ARG_WITH(system-hsqldb,
2327     AS_HELP_STRING([--with-system-hsqldb],
2328         [Use hsqldb already on system.]))
2330 AC_ARG_WITH(hsqldb-jar,
2331     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2332         [Specify path to jarfile manually.]),
2333     HSQLDB_JAR=$withval)
2335 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2336     AS_HELP_STRING([--disable-scripting-beanshell],
2337         [Disable support for scripts in BeanShell.]),
2341 AC_ARG_WITH(system-beanshell,
2342     AS_HELP_STRING([--with-system-beanshell],
2343         [Use beanshell already on system.]),,
2344     [with_system_beanshell="$with_system_jars"])
2346 AC_ARG_WITH(beanshell-jar,
2347     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2348         [Specify path to jarfile manually.]),
2349     BSH_JAR=$withval)
2351 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2352     AS_HELP_STRING([--disable-scripting-javascript],
2353         [Disable support for scripts in JavaScript.]),
2357 AC_ARG_WITH(system-rhino,
2358     AS_HELP_STRING([--with-system-rhino],
2359         [Use rhino already on system.]),,)
2360 #    [with_system_rhino="$with_system_jars"])
2361 # Above is not used as we have different debug interface
2362 # patched into internal rhino. This code needs to be fixed
2363 # before we can enable it by default.
2365 AC_ARG_WITH(rhino-jar,
2366     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2367         [Specify path to jarfile manually.]),
2368     RHINO_JAR=$withval)
2370 AC_ARG_WITH(system-jfreereport,
2371     AS_HELP_STRING([--with-system-jfreereport],
2372         [Use JFreeReport already on system.]),,
2373     [with_system_jfreereport="$with_system_jars"])
2375 AC_ARG_WITH(sac-jar,
2376     AS_HELP_STRING([--with-sac-jar=JARFILE],
2377         [Specify path to jarfile manually.]),
2378     SAC_JAR=$withval)
2380 AC_ARG_WITH(libxml-jar,
2381     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2382         [Specify path to jarfile manually.]),
2383     LIBXML_JAR=$withval)
2385 AC_ARG_WITH(flute-jar,
2386     AS_HELP_STRING([--with-flute-jar=JARFILE],
2387         [Specify path to jarfile manually.]),
2388     FLUTE_JAR=$withval)
2390 AC_ARG_WITH(jfreereport-jar,
2391     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2392         [Specify path to jarfile manually.]),
2393     JFREEREPORT_JAR=$withval)
2395 AC_ARG_WITH(liblayout-jar,
2396     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2397         [Specify path to jarfile manually.]),
2398     LIBLAYOUT_JAR=$withval)
2400 AC_ARG_WITH(libloader-jar,
2401     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2402         [Specify path to jarfile manually.]),
2403     LIBLOADER_JAR=$withval)
2405 AC_ARG_WITH(libformula-jar,
2406     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2407         [Specify path to jarfile manually.]),
2408     LIBFORMULA_JAR=$withval)
2410 AC_ARG_WITH(librepository-jar,
2411     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2412         [Specify path to jarfile manually.]),
2413     LIBREPOSITORY_JAR=$withval)
2415 AC_ARG_WITH(libfonts-jar,
2416     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2417         [Specify path to jarfile manually.]),
2418     LIBFONTS_JAR=$withval)
2420 AC_ARG_WITH(libserializer-jar,
2421     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2422         [Specify path to jarfile manually.]),
2423     LIBSERIALIZER_JAR=$withval)
2425 AC_ARG_WITH(libbase-jar,
2426     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2427         [Specify path to jarfile manually.]),
2428     LIBBASE_JAR=$withval)
2430 AC_ARG_WITH(system-odbc,
2431     AS_HELP_STRING([--with-system-odbc],
2432         [Use the odbc headers already on system.]),,
2433     [with_system_odbc="auto"])
2435 AC_ARG_WITH(system-sane,
2436     AS_HELP_STRING([--with-system-sane],
2437         [Use sane.h already on system.]),,
2438     [with_system_sane="$with_system_headers"])
2440 AC_ARG_WITH(system-bluez,
2441     AS_HELP_STRING([--with-system-bluez],
2442         [Use bluetooth.h already on system.]),,
2443     [with_system_bluez="$with_system_headers"])
2445 AC_ARG_WITH(system-boost,
2446     AS_HELP_STRING([--with-system-boost],
2447         [Use boost already on system.]),,
2448     [with_system_boost="$with_system_headers"])
2450 AC_ARG_WITH(system-dragonbox,
2451     AS_HELP_STRING([--with-system-dragonbox],
2452         [Use dragonbox already on system.]),,
2453     [with_system_dragonbox="$with_system_headers"])
2455 AC_ARG_WITH(system-frozen,
2456     AS_HELP_STRING([--with-system-frozen],
2457         [Use frozen already on system.]),,
2458     [with_system_frozen="$with_system_headers"])
2460 AC_ARG_WITH(system-libfixmath,
2461     AS_HELP_STRING([--with-system-libfixmath],
2462         [Use libfixmath already on system.]),,
2463     [with_system_libfixmath="$with_system_libs"])
2465 AC_ARG_WITH(system-glm,
2466     AS_HELP_STRING([--with-system-glm],
2467         [Use glm already on system.]),,
2468     [with_system_glm="$with_system_headers"])
2470 AC_ARG_WITH(system-hunspell,
2471     AS_HELP_STRING([--with-system-hunspell],
2472         [Use libhunspell already on system.]),,
2473     [with_system_hunspell="$with_system_libs"])
2475 libo_FUZZ_ARG_ENABLE(zxing,
2476     AS_HELP_STRING([--disable-zxing],
2477        [Disable use of zxing external library.]))
2479 AC_ARG_WITH(system-zxing,
2480     AS_HELP_STRING([--with-system-zxing],
2481         [Use libzxing already on system.]),,
2482     [with_system_zxing="$with_system_libs"])
2484 AC_ARG_WITH(system-box2d,
2485     AS_HELP_STRING([--with-system-box2d],
2486         [Use box2d already on system.]),,
2487     [with_system_box2d="$with_system_libs"])
2489 AC_ARG_WITH(system-mythes,
2490     AS_HELP_STRING([--with-system-mythes],
2491         [Use mythes already on system.]),,
2492     [with_system_mythes="$with_system_libs"])
2494 AC_ARG_WITH(system-altlinuxhyph,
2495     AS_HELP_STRING([--with-system-altlinuxhyph],
2496         [Use ALTLinuxhyph already on system.]),,
2497     [with_system_altlinuxhyph="$with_system_libs"])
2499 AC_ARG_WITH(system-lpsolve,
2500     AS_HELP_STRING([--with-system-lpsolve],
2501         [Use lpsolve already on system.]),,
2502     [with_system_lpsolve="$with_system_libs"])
2504 AC_ARG_WITH(system-coinmp,
2505     AS_HELP_STRING([--with-system-coinmp],
2506         [Use CoinMP already on system.]),,
2507     [with_system_coinmp="$with_system_libs"])
2509 AC_ARG_WITH(system-liblangtag,
2510     AS_HELP_STRING([--with-system-liblangtag],
2511         [Use liblangtag library already on system.]),,
2512     [with_system_liblangtag="$with_system_libs"])
2514 AC_ARG_WITH(system-lockfile,
2515     AS_HELP_STRING([--with-system-lockfile[=file]],
2516         [Detect a system lockfile program or use the \$file argument.]))
2518 AC_ARG_WITH(webdav,
2519     AS_HELP_STRING([--without-webdav],
2520         [Disable WebDAV support in the UCB.]))
2522 AC_ARG_WITH(linker-hash-style,
2523     AS_HELP_STRING([--with-linker-hash-style],
2524         [Use linker with --hash-style=<style> when linking shared objects.
2525          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2526          if supported on the build system, and "sysv" otherwise.]))
2528 AC_ARG_WITH(jdk-home,
2529     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2530         [If you have installed JDK 9 or later on your system please supply the
2531          path here. Note that this is not the location of the java command but the
2532          location of the entire distribution. In case of cross-compiling, this
2533          is the JDK of the host os. Use --with-build-platform-configure-options
2534          to point to a different build platform JDK.]),
2537 AC_ARG_WITH(help,
2538     AS_HELP_STRING([--with-help],
2539         [Enable the build of help. There is a special parameter "common" that
2540          can be used to bundle only the common part, .e.g help-specific icons.
2541          This is useful when you build the helpcontent separately.])
2542     [
2543                           Usage:     --with-help    build the old local help
2544                                  --without-help     no local help (default)
2545                                  --with-help=html   build the new HTML local help
2546                                  --with-help=online build the new HTML online help
2547     ],
2550 AC_ARG_WITH(omindex,
2551    AS_HELP_STRING([--with-omindex],
2552         [Enable the support of xapian-omega index for online help.])
2553    [
2554                          Usage: --with-omindex=server prepare the pages for omindex
2555                                 but let xapian-omega be built in server.
2556                                 --with-omindex=noxap do not prepare online pages
2557                                 for xapian-omega
2558   ],
2561 libo_FUZZ_ARG_WITH(java,
2562     AS_HELP_STRING([--with-java=<java command>],
2563         [Specify the name of the Java interpreter command. Typically "java"
2564          which is the default.
2566          To build without support for Java components, applets, accessibility
2567          or the XML filters written in Java, use --without-java or --with-java=no.]),
2568     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2569     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2572 AC_ARG_WITH(jvm-path,
2573     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2574         [Use a specific JVM search path at runtime.
2575          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2578 AC_ARG_WITH(ant-home,
2579     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2580         [If you have installed Apache Ant on your system, please supply the path here.
2581          Note that this is not the location of the Ant binary but the location
2582          of the entire distribution.]),
2585 AC_ARG_WITH(symbol-config,
2586     AS_HELP_STRING([--with-symbol-config],
2587         [Configuration for the crashreport symbol upload]),
2588         [],
2589         [with_symbol_config=no])
2591 AC_ARG_WITH(export-validation,
2592     AS_HELP_STRING([--without-export-validation],
2593         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2594 ,with_export_validation=auto)
2596 AC_ARG_WITH(bffvalidator,
2597     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2598         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2599          Requires installed Microsoft Office Binary File Format Validator.
2600          Note: export-validation (--with-export-validation) is required to be turned on.
2601          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2602 ,with_bffvalidator=no)
2604 libo_FUZZ_ARG_WITH(junit,
2605     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2606         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2607          --without-junit disables those tests. Not relevant in the --without-java case.]),
2608 ,with_junit=yes)
2610 AC_ARG_WITH(hamcrest,
2611     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2612         [Specifies the hamcrest jar file to use for JUnit-based tests.
2613          --without-junit disables those tests. Not relevant in the --without-java case.]),
2614 ,with_hamcrest=yes)
2616 AC_ARG_WITH(perl-home,
2617     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2618         [If you have installed Perl 5 Distribution, on your system, please
2619          supply the path here. Note that this is not the location of the Perl
2620          binary but the location of the entire distribution.]),
2623 libo_FUZZ_ARG_WITH(doxygen,
2624     AS_HELP_STRING(
2625         [--with-doxygen=<absolute path to doxygen executable>],
2626         [Specifies the doxygen executable to use when generating ODK C/C++
2627          documentation. --without-doxygen disables generation of ODK C/C++
2628          documentation. Not relevant in the --disable-odk case.]),
2629 ,with_doxygen=yes)
2631 AC_ARG_WITH(visual-studio,
2632     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2633         [Specify which Visual Studio version to use in case several are
2634          installed. Currently 2019 (default) and 2022 are supported.]),
2637 AC_ARG_WITH(windows-sdk,
2638     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2639         [Specify which Windows SDK, or "Windows Kit", version to use
2640          in case the one that came with the selected Visual Studio
2641          is not what you want for some reason. Note that not all compiler/SDK
2642          combinations are supported. The intent is that this option should not
2643          be needed.]),
2646 AC_ARG_WITH(lang,
2647     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2648         [Use this option to build LibreOffice with additional UI language support.
2649          English (US) is always included by default.
2650          Separate multiple languages with space.
2651          For all languages, use --with-lang=ALL.]),
2654 AC_ARG_WITH(locales,
2655     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2656         [Use this option to limit the locale information built in.
2657          Separate multiple locales with space.
2658          Very experimental and might well break stuff.
2659          Just a desperate measure to shrink code and data size.
2660          By default all the locales available is included.
2661          Just works with --disable-dynloading. Defaults to "ALL".
2662          This option is completely unrelated to --with-lang.])
2663     [
2664                           Affects also our character encoding conversion
2665                           tables for encodings mainly targeted for a
2666                           particular locale, like EUC-CN and EUC-TW for
2667                           zh, ISO-2022-JP for ja.
2669                           Affects also our add-on break iterator data for
2670                           some languages.
2672                           For the default, all locales, don't use this switch at all.
2673                           Specifying just the language part of a locale means all matching
2674                           locales will be included.
2675     ],
2678 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2679 libo_FUZZ_ARG_WITH(krb5,
2680     AS_HELP_STRING([--with-krb5],
2681         [Enable MIT Kerberos 5 support in modules that support it.
2682          By default automatically enabled on platforms
2683          where a good system Kerberos 5 is available.]),
2686 libo_FUZZ_ARG_WITH(gssapi,
2687     AS_HELP_STRING([--with-gssapi],
2688         [Enable GSSAPI support in modules that support it.
2689          By default automatically enabled on platforms
2690          where a good system GSSAPI is available.]),
2693 libo_FUZZ_ARG_WITH(lxml,
2694     AS_HELP_STRING([--without-lxml],
2695         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2696          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2697          report widget classes and ids.]),
2700 libo_FUZZ_ARG_WITH(latest-c++,
2701     AS_HELP_STRING([--with-latest-c++],
2702         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2703          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2704         [with_latest_c__=no])
2706 AC_ARG_WITH(gtk3-build,
2707     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2708         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2709          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2711 dnl ===================================================================
2712 dnl Branding
2713 dnl ===================================================================
2715 AC_ARG_WITH(branding,
2716     AS_HELP_STRING([--with-branding=/path/to/images],
2717         [Use given path to retrieve branding images set.])
2718     [
2719                           Search for intro.png about.svg and logo.svg.
2720                           If any is missing, default ones will be used instead.
2722                           Search also progress.conf for progress
2723                           settings on intro screen :
2725                           PROGRESSBARCOLOR="255,255,255" Set color of
2726                           progress bar. Comma separated RGB decimal values.
2727                           PROGRESSSIZE="407,6" Set size of progress bar.
2728                           Comma separated decimal values (width, height).
2729                           PROGRESSPOSITION="61,317" Set position of progress
2730                           bar from left,top. Comma separated decimal values.
2731                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2732                           bar frame. Comma separated RGB decimal values.
2733                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2734                           bar text. Comma separated RGB decimal values.
2735                           PROGRESSTEXTBASELINE="287" Set vertical position of
2736                           progress bar text from top. Decimal value.
2738                           Default values will be used if not found.
2739     ],
2743 AC_ARG_WITH(extra-buildid,
2744     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2745         [Show addition build identification in about dialog.]),
2749 AC_ARG_WITH(vendor,
2750     AS_HELP_STRING([--with-vendor="John the Builder"],
2751         [Set vendor of the build.]),
2754 AC_ARG_WITH(privacy-policy-url,
2755     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2756         [The URL to your privacy policy (needed when
2757          enabling online-update or crashreporting via breakpad)]),
2758         [if test "x$with_privacy_policy_url" = "xyes"; then
2759             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2760          elif test "x$with_privacy_policy_url" = "xno"; then
2761             with_privacy_policy_url="undefined"
2762          fi]
2763 ,[with_privacy_policy_url="undefined"])
2765 AC_ARG_WITH(android-package-name,
2766     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2767         [Set Android package name of the build.]),
2770 AC_ARG_WITH(compat-oowrappers,
2771     AS_HELP_STRING([--with-compat-oowrappers],
2772         [Install oo* wrappers in parallel with
2773          lo* ones to keep backward compatibility.
2774          Has effect only with make distro-pack-install]),
2777 AC_ARG_WITH(os-version,
2778     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2779         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2782 AC_ARG_WITH(parallelism,
2783     AS_HELP_STRING([--with-parallelism],
2784         [Number of jobs to run simultaneously during build. Parallel builds can
2785         save a lot of time on multi-cpu machines. Defaults to the number of
2786         CPUs on the machine, unless you configure --enable-icecream - then to
2787         40.]),
2790 AC_ARG_WITH(all-tarballs,
2791     AS_HELP_STRING([--with-all-tarballs],
2792         [Download all external tarballs unconditionally]))
2794 AC_ARG_WITH(gdrive-client-id,
2795     AS_HELP_STRING([--with-gdrive-client-id],
2796         [Provides the client id of the application for OAuth2 authentication
2797         on Google Drive. If either this or --with-gdrive-client-secret is
2798         empty, the feature will be disabled]),
2801 AC_ARG_WITH(gdrive-client-secret,
2802     AS_HELP_STRING([--with-gdrive-client-secret],
2803         [Provides the client secret of the application for OAuth2
2804         authentication on Google Drive. If either this or
2805         --with-gdrive-client-id is empty, the feature will be disabled]),
2808 AC_ARG_WITH(alfresco-cloud-client-id,
2809     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2810         [Provides the client id of the application for OAuth2 authentication
2811         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2812         empty, the feature will be disabled]),
2815 AC_ARG_WITH(alfresco-cloud-client-secret,
2816     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2817         [Provides the client secret of the application for OAuth2
2818         authentication on Alfresco Cloud. If either this or
2819         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2822 AC_ARG_WITH(onedrive-client-id,
2823     AS_HELP_STRING([--with-onedrive-client-id],
2824         [Provides the client id of the application for OAuth2 authentication
2825         on OneDrive. If either this or --with-onedrive-client-secret is
2826         empty, the feature will be disabled]),
2829 AC_ARG_WITH(onedrive-client-secret,
2830     AS_HELP_STRING([--with-onedrive-client-secret],
2831         [Provides the client secret of the application for OAuth2
2832         authentication on OneDrive. If either this or
2833         --with-onedrive-client-id is empty, the feature will be disabled]),
2836 dnl Check for coredumpctl support to present information about crashing test processes:
2837 AC_ARG_WITH(coredumpctl,
2838     AS_HELP_STRING([--with-coredumpctl],
2839         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2840         processes.]))
2842 dnl ===================================================================
2843 dnl Do we want to use pre-build binary tarball for recompile
2844 dnl ===================================================================
2846 if test "$enable_library_bin_tar" = "yes" ; then
2847     USE_LIBRARY_BIN_TAR=TRUE
2848 else
2849     USE_LIBRARY_BIN_TAR=
2851 AC_SUBST(USE_LIBRARY_BIN_TAR)
2853 dnl ===================================================================
2854 dnl Test whether build target is Release Build
2855 dnl ===================================================================
2856 AC_MSG_CHECKING([whether build target is Release Build])
2857 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2858     AC_MSG_RESULT([no])
2859     ENABLE_RELEASE_BUILD=
2860     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2861     dnl the newlines and then complains about spaces.
2862     GET_TASK_ALLOW_ENTITLEMENT='<!-- We want to be able to debug a hardened process when not building for release --><key>com.apple.security.get-task-allow</key><true/>'
2863 else
2864     AC_MSG_RESULT([yes])
2865     ENABLE_RELEASE_BUILD=TRUE
2866     GET_TASK_ALLOW_ENTITLEMENT=
2868 AC_SUBST(ENABLE_RELEASE_BUILD)
2869 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2871 AC_MSG_CHECKING([whether to build a Community flavor])
2872 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2873     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2874     AC_MSG_RESULT([yes])
2875 else
2876     AC_MSG_RESULT([no])
2879 dnl ===================================================================
2880 dnl Test whether to sign Windows Build
2881 dnl ===================================================================
2882 AC_MSG_CHECKING([whether to sign windows build])
2883 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2884     AC_MSG_RESULT([yes])
2885     WINDOWS_BUILD_SIGNING="TRUE"
2886 else
2887     AC_MSG_RESULT([no])
2888     WINDOWS_BUILD_SIGNING="FALSE"
2890 AC_SUBST(WINDOWS_BUILD_SIGNING)
2892 dnl ===================================================================
2893 dnl MacOSX build and runtime environment options
2894 dnl ===================================================================
2896 AC_ARG_WITH(macosx-version-min-required,
2897     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2898         [set the minimum OS version needed to run the built LibreOffice])
2899     [
2900                           e. g.: --with-macosx-version-min-required=10.15
2901     ],
2904 dnl ===================================================================
2905 dnl Check for incompatible options set by fuzzing, and reset those
2906 dnl automatically to working combinations
2907 dnl ===================================================================
2909 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2910         "$enable_dbus" != "$enable_avahi"; then
2911     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2912     enable_avahi=$enable_dbus
2915 add_lopath_after ()
2917     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2918         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2919     fi
2922 add_lopath_before ()
2924     local IFS=${P_SEP}
2925     local path_cleanup
2926     local dir
2927     for dir in $LO_PATH ; do
2928         if test "$dir" != "$1" ; then
2929             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2930         fi
2931     done
2932     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2935 dnl ===================================================================
2936 dnl check for required programs (grep, awk, sed, bash)
2937 dnl ===================================================================
2939 pathmunge ()
2941     local new_path
2942     if test -n "$1"; then
2943         if test "$build_os" = "cygwin"; then
2944             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2945                 PathFormat "$1"
2946                 new_path=`cygpath -sm "$formatted_path"`
2947             else
2948                 PathFormat "$1"
2949                 new_path=`cygpath -u "$formatted_path"`
2950             fi
2951         else
2952             new_path="$1"
2953         fi
2954         if test "$2" = "after"; then
2955             add_lopath_after "$new_path"
2956         else
2957             add_lopath_before "$new_path"
2958         fi
2959     fi
2962 AC_PROG_AWK
2963 AC_PATH_PROG( AWK, $AWK)
2964 if test -z "$AWK"; then
2965     AC_MSG_ERROR([install awk to run this script])
2968 AC_PATH_PROG(BASH, bash)
2969 if test -z "$BASH"; then
2970     AC_MSG_ERROR([bash not found in \$PATH])
2972 AC_SUBST(BASH)
2974 # prefer parallel compression tools, if available
2975 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2976 if test -z "$COMPRESSIONTOOL"; then
2977     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2978     if test -z "$COMPRESSIONTOOL"; then
2979         AC_MSG_ERROR([gzip not found in \$PATH])
2980     fi
2982 AC_SUBST(COMPRESSIONTOOL)
2984 AC_MSG_CHECKING([for GNU or BSD tar])
2985 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2986     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2987     if test $? -eq 0;  then
2988         GNUTAR=$a
2989         break
2990     fi
2991 done
2992 AC_MSG_RESULT($GNUTAR)
2993 if test -z "$GNUTAR"; then
2994     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2996 AC_SUBST(GNUTAR)
2998 AC_MSG_CHECKING([for tar's option to strip components])
2999 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3000 if test $? -eq 0; then
3001     STRIP_COMPONENTS="--strip-components"
3002 else
3003     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3004     if test $? -eq 0; then
3005         STRIP_COMPONENTS="--strip-path"
3006     else
3007         STRIP_COMPONENTS="unsupported"
3008     fi
3010 AC_MSG_RESULT($STRIP_COMPONENTS)
3011 if test x$STRIP_COMPONENTS = xunsupported; then
3012     AC_MSG_ERROR([you need a tar that is able to strip components.])
3014 AC_SUBST(STRIP_COMPONENTS)
3016 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3017 dnl desktop OSes from "mobile" ones.
3019 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3020 dnl In other words, that when building for an OS that is not a
3021 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3023 dnl Note the direction of the implication; there is no assumption that
3024 dnl cross-compiling would imply a non-desktop OS.
3026 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3027     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3028     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3029     if test "$_os" != Emscripten; then
3030         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3031     fi
3034 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3035 # also work with the default gtk3 plugin.
3036 if test "$enable_wasm_strip" = "yes"; then
3037     enable_avmedia=no
3038     enable_cmis=no
3039     enable_coinmp=no
3040     enable_cups=no
3041     test "$_os" = Emscripten && enable_curl=no
3042     enable_database_connectivity=no
3043     enable_dbus=no
3044     enable_dconf=no
3045     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3046     enable_extension_integration=no
3047     enable_extensions=no
3048     enable_extension_update=no
3049     enable_gio=no
3050     enable_gpgmepp=no
3051     enable_ldap=no
3052     enable_lotuswordpro=no
3053     enable_lpsolve=no
3054     enable_nss=no
3055     enable_odk=no
3056     enable_online_update=no
3057     enable_opencl=no
3058     enable_pdfimport=no
3059     enable_randr=no
3060     enable_report_builder=no
3061     enable_scripting=no
3062     enable_sdremote_bluetooth=no
3063     enable_skia=no
3064     enable_xmlhelp=no
3065     enable_zxing=no
3066     test_libepubgen=no
3067     test_libcdr=no
3068     test_libcmis=no
3069     test_libetonyek=no
3070     test_libfreehand=no
3071     test_libmspub=no
3072     test_libpagemaker=no
3073     test_libqxp=no
3074     test_libvisio=no
3075     test_libzmf=no
3076     test_webdav=no
3077     with_galleries=no
3078     with_webdav=no
3079     with_x=no
3081     test "${with_fonts+set}" = set || with_fonts=yes
3082     test "${with_locales+set}" = set || with_locales=en
3084     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3085     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3086     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3087     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3088 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3089     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3090     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3091     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3092     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3093 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3094     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3095     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3096     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3097     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3098     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3099     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3100     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3101     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3104 EMSCRIPTEN_NEH_MAJOR=3
3105 EMSCRIPTEN_NEH_MINOR=1
3106 EMSCRIPTEN_NEH_TINY=3
3107 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3109 if test "$enable_wasm_exceptions" = yes; then
3110     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3111     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3112     if test $? -ne 0; then
3113         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3114     else
3115         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3116     fi
3117     ENABLE_WASM_EXCEPTIONS=TRUE
3119 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3121 # Whether to build "avmedia" functionality or not.
3123 if test "$enable_avmedia" = yes; then
3124     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3125     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3126 else
3127     test_gstreamer_1_0=no
3130 # Decide whether to build database connectivity stuff (including Base) or not.
3131 if test "$enable_database_connectivity" != no; then
3132     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3133     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3134 else
3135     if test "$_os" = iOS; then
3136         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3137     fi
3138     disable_database_connectivity_dependencies
3141 if test -z "$enable_extensions"; then
3142     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3143     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3144         enable_extensions=yes
3145     fi
3148 DISABLE_SCRIPTING=''
3149 if test "$enable_scripting" = yes; then
3150     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3151     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3152 else
3153     DISABLE_SCRIPTING='TRUE'
3154     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3157 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3158     # Disable dynamic_loading always for iOS and Android
3159     enable_dynamic_loading=no
3160 elif test -z "$enable_dynamic_loading"; then
3161     # Otherwise enable it unless specifically disabled
3162     enable_dynamic_loading=yes
3165 DISABLE_DYNLOADING=''
3166 if test "$enable_dynamic_loading" = yes; then
3167     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3168 else
3169     DISABLE_DYNLOADING='TRUE'
3170     if test $_os != iOS -a $_os != Android; then
3171         enable_database_connectivity=no
3172         enable_nss=no
3173         enable_odk=no
3174         enable_python=no
3175         enable_skia=no
3176         with_java=no
3177     fi
3179 AC_SUBST(DISABLE_DYNLOADING)
3181 ENABLE_CUSTOMTARGET_COMPONENTS=
3182 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3183     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3184     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3185         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3186     fi
3188 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3190 if test "$enable_extensions" = yes; then
3191     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3192     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3193 else
3194     enable_extension_integration=no
3195     enable_extension_update=no
3198 # remember SYSBASE value
3199 AC_SUBST(SYSBASE)
3201 dnl ===================================================================
3202 dnl  Sort out various gallery compilation options
3203 dnl ===================================================================
3204 WITH_GALLERY_BUILD=TRUE
3205 AC_MSG_CHECKING([how to build and package galleries])
3206 if test -n "${with_galleries}"; then
3207     if test "$with_galleries" = "build"; then
3208         if test "$enable_database_connectivity" = no; then
3209             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3210         fi
3211         AC_MSG_RESULT([build from source images internally])
3212     elif test "$with_galleries" = "no"; then
3213         WITH_GALLERY_BUILD=
3214         AC_MSG_RESULT([disable non-internal gallery build])
3215     else
3216         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3217     fi
3218 else
3219     if test $_os != iOS -a $_os != Android; then
3220         AC_MSG_RESULT([internal src images for desktop])
3221     else
3222         WITH_GALLERY_BUILD=
3223         AC_MSG_RESULT([disable src image build])
3224     fi
3226 AC_SUBST(WITH_GALLERY_BUILD)
3228 dnl ===================================================================
3229 dnl  Checks if ccache is available
3230 dnl ===================================================================
3231 CCACHE_DEPEND_MODE=
3232 if test "$enable_ccache" = "no"; then
3233     CCACHE=""
3234 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3235     case "%$CC%$CXX%" in
3236     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3237     # assume that's good then
3238     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3239         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3240         CCACHE_DEPEND_MODE=1
3241         ;;
3242     *)
3243         # try to use our own ccache if it is available and CCACHE was not already defined
3244         if test -z "$CCACHE"; then
3245             if test "$_os" = "WINNT"; then
3246                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3247             fi
3248             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3249                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3250             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3251                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3252             fi
3253         fi
3254         AC_PATH_PROG([CCACHE],[ccache],[not found])
3255         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3256             CCACHE=`win_short_path_for_make "$CCACHE"`
3257             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3258             rm -f conftest.txt
3259             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3260             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3261             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3262                 AC_MSG_RESULT(yes)
3263             else
3264                 AC_MSG_RESULT(no)
3265                 CCACHE="not found"
3266             fi
3267             rm -f conftest.txt
3268         fi
3269         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3270             # on windows/VC perhaps sccache is around?
3271             case "%$CC%$CXX%" in
3272             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3273             # assume that's good then
3274             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3275                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3276                 CCACHE_DEPEND_MODE=1
3277                 SCCACHE=1
3278                 ;;
3279             *)
3280                 # for sharing code below, reuse CCACHE env var
3281                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3282                 if test "$CCACHE" != "not found"; then
3283                     CCACHE=`win_short_path_for_make "$CCACHE"`
3284                     SCCACHE=1
3285                     CCACHE_DEPEND_MODE=1
3286                 fi
3287                 ;;
3288             esac
3289         fi
3290         if test "$CCACHE" = "not found"; then
3291             CCACHE=""
3292         fi
3293         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3294             CCACHE_DEPEND_MODE=1
3295             # Need to check for ccache version: otherwise prevents
3296             # caching of the results (like "-x objective-c++" for Mac)
3297             if test $_os = Darwin -o $_os = iOS; then
3298                 # Check ccache version
3299                 AC_MSG_CHECKING([whether version of ccache is suitable])
3300                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3301                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3302                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3303                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3304                 else
3305                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3306                     CCACHE=""
3307                     CCACHE_DEPEND_MODE=
3308                 fi
3309             fi
3310         fi
3311         ;;
3312     esac
3313 else
3314     CCACHE=""
3316 if test "$enable_ccache" = "nodepend"; then
3317     CCACHE_DEPEND_MODE=""
3319 AC_SUBST(CCACHE_DEPEND_MODE)
3321 # sccache defaults are good enough
3322 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3323     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3324     # or (...) max_size = 20.0 G
3325     # -p works with both 4.2 and 4.4
3326     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3327     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3328     if test "$ccache_size" = ""; then
3329         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3330         if test "$ccache_size" = ""; then
3331             ccache_size=0
3332         fi
3333         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3334         if test $ccache_size -lt 1024; then
3335             CCACHE=""
3336             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3337             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3338         else
3339             # warn that ccache may be too small for debug build
3340             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3341             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3342         fi
3343     else
3344         if test $ccache_size -lt 5; then
3345             #warn that ccache may be too small for debug build
3346             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3347             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3348         fi
3349     fi
3352 ENABLE_Z7_DEBUG=
3353 if test "$enable_z7_debug" != no; then
3354     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3355         ENABLE_Z7_DEBUG=TRUE
3356     fi
3357 else
3358     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3359     add_warning "ccache will not work with --disable-z7-debug"
3361 AC_SUBST(ENABLE_Z7_DEBUG)
3363 dnl ===================================================================
3364 dnl  Checks for C compiler,
3365 dnl  The check for the C++ compiler is later on.
3366 dnl ===================================================================
3367 if test "$_os" != "WINNT"; then
3368     GCC_HOME_SET="true"
3369     AC_MSG_CHECKING([gcc home])
3370     if test -z "$with_gcc_home"; then
3371         if test "$enable_icecream" = "yes"; then
3372             if test -d "/usr/lib/icecc/bin"; then
3373                 GCC_HOME="/usr/lib/icecc/"
3374             elif test -d "/usr/libexec/icecc/bin"; then
3375                 GCC_HOME="/usr/libexec/icecc/"
3376             elif test -d "/opt/icecream/bin"; then
3377                 GCC_HOME="/opt/icecream/"
3378             else
3379                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3381             fi
3382         else
3383             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3384             GCC_HOME_SET="false"
3385         fi
3386     else
3387         GCC_HOME="$with_gcc_home"
3388     fi
3389     AC_MSG_RESULT($GCC_HOME)
3390     AC_SUBST(GCC_HOME)
3392     if test "$GCC_HOME_SET" = "true"; then
3393         if test -z "$CC"; then
3394             CC="$GCC_HOME/bin/gcc"
3395             CC_BASE="gcc"
3396         fi
3397         if test -z "$CXX"; then
3398             CXX="$GCC_HOME/bin/g++"
3399             CXX_BASE="g++"
3400         fi
3401     fi
3404 COMPATH=`dirname "$CC"`
3405 if test "$COMPATH" = "."; then
3406     AC_PATH_PROGS(COMPATH, $CC)
3407     dnl double square bracket to get single because of M4 quote...
3408     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3410 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3412 dnl ===================================================================
3413 dnl Java support
3414 dnl ===================================================================
3415 AC_MSG_CHECKING([whether to build with Java support])
3416 if test "$with_java" != "no"; then
3417     if test "$DISABLE_SCRIPTING" = TRUE; then
3418         AC_MSG_RESULT([no, overridden by --disable-scripting])
3419         ENABLE_JAVA=""
3420         with_java=no
3421     else
3422         AC_MSG_RESULT([yes])
3423         ENABLE_JAVA="TRUE"
3424         AC_DEFINE(HAVE_FEATURE_JAVA)
3425     fi
3426 else
3427     AC_MSG_RESULT([no])
3428     ENABLE_JAVA=""
3431 AC_SUBST(ENABLE_JAVA)
3433 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3435 dnl ENABLE_JAVA="" indicate no Java support at all
3437 dnl ===================================================================
3438 dnl Check macOS SDK and compiler
3439 dnl ===================================================================
3441 if test $_os = Darwin; then
3443     # The SDK in the currently selected Xcode should be found.
3445     AC_MSG_CHECKING([what macOS SDK to use])
3446     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3447     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3448     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3449     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3450     # problems that existed in the PPC days with target versions not being respected or random
3451     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3452     # SDK version is enough, no need to do both...
3453     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3454     if test ! -d "$MACOSX_SDK_PATH"; then
3455         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3456     fi
3457     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3458     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3459     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3460     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3461     # 10.10.2 is 101002
3462     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3463     # correct version in case such an old SDK is specified, it will be rejected later anyway
3464     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3465     if test $MACOSX_SDK_VERSION -lt 101500; then
3466         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3467     fi
3468     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3469         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3470     fi
3471     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3473     AC_MSG_CHECKING([what minimum version of macOS to require])
3474     if test "$with_macosx_version_min_required" = "" ; then
3475         if test "$host_cpu" = x86_64; then
3476             with_macosx_version_min_required="10.15";
3477         else
3478             with_macosx_version_min_required="11.0";
3479         fi
3480     fi
3481     # see same notes about MACOSX_SDK_VERSION above
3482     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3483     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3484         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3485     fi
3486     AC_MSG_RESULT([$with_macosx_version_min_required])
3488     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3489     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3490         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3491     else
3492         AC_MSG_RESULT([yes])
3493     fi
3495     # export this so that "xcrun" invocations later return matching values
3496     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3497     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3498     export DEVELOPER_DIR
3499     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3500     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3502     AC_MSG_CHECKING([whether Xcode is new enough])
3503     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3504     my_xcode_ver2=${my_xcode_ver1#Xcode }
3505     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3506     if test "$my_xcode_ver3" -ge 1205; then
3507         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3508         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3509             if test "$my_xcode_ver3" -ge 1600; then
3510                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3511                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3512                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3513             fi
3514             if test "$my_xcode_ver3" -ge 1500; then
3515                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3516                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3517                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3518                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3519                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3520                 x_LDFLAGS=
3521             fi
3522         fi
3523     else
3524         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3525     fi
3527     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3528     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3530     LIBTOOL=/usr/bin/libtool
3531     INSTALL_NAME_TOOL=install_name_tool
3532     if test -z "$save_CC"; then
3533         stdlib=-stdlib=libc++
3535         AC_MSG_CHECKING([what C compiler to use])
3536         CC="`xcrun -find clang`"
3537         CC_BASE=`first_arg_basename "$CC"`
3538         if test "$host_cpu" = x86_64; then
3539             CC+=" -target x86_64-apple-macos"
3540         else
3541             CC+=" -target arm64-apple-macos"
3542         fi
3543         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3544         AC_MSG_RESULT([$CC])
3546         AC_MSG_CHECKING([what C++ compiler to use])
3547         CXX="`xcrun -find clang++`"
3548         CXX_BASE=`first_arg_basename "$CXX"`
3549         if test "$host_cpu" = x86_64; then
3550             CXX+=" -target x86_64-apple-macos"
3551         else
3552             CXX+=" -target arm64-apple-macos"
3553         fi
3554         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3555         AC_MSG_RESULT([$CXX])
3557         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3558         AR=`xcrun -find ar`
3559         NM=`xcrun -find nm`
3560         STRIP=`xcrun -find strip`
3561         LIBTOOL=`xcrun -find libtool`
3562         RANLIB=`xcrun -find ranlib`
3563     fi
3565     AC_MSG_CHECKING([whether to do code signing])
3567     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3568         AC_MSG_RESULT([no])
3569     else
3570         if test "$enable_macosx_code_signing" = yes; then
3571             # By default use the first suitable certificate (?).
3573             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3574             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3575             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3576             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3577             # "Developer ID Application" one.
3578             identity="Developer ID Application:"
3579         else
3580             identity=$enable_macosx_code_signing
3581         fi
3582         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3583         if test -n "$identity"; then
3584             MACOSX_CODESIGNING_IDENTITY=$identity
3585             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3586             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3587         else
3588             AC_MSG_ERROR([cannot determine identity to use])
3589         fi
3590     fi
3592     AC_MSG_CHECKING([whether to create a Mac App Store package])
3594     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3595         AC_MSG_RESULT([no])
3596     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3597         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3598     else
3599         if test "$enable_macosx_package_signing" = yes; then
3600             # By default use the first suitable certificate.
3601             # It should be a "3rd Party Mac Developer Installer" one
3602             identity="3rd Party Mac Developer Installer:"
3603         else
3604             identity=$enable_macosx_package_signing
3605         fi
3606         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3607         if test -n "$identity"; then
3608             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3609             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3610             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3611         else
3612             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3613         fi
3614     fi
3616     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3617         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3618     fi
3620     AC_MSG_CHECKING([whether to sandbox the application])
3622     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3623         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3624     elif test "$enable_macosx_sandbox" = yes; then
3625         ENABLE_MACOSX_SANDBOX=TRUE
3626         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3627         AC_MSG_RESULT([yes])
3628     else
3629         AC_MSG_RESULT([no])
3630     fi
3632     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3633     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3634     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3636     if test -n "$with_macosx_provisioning_profile" ; then
3637         if test ! -f "$with_macosx_provisioning_profile"; then
3638             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3639         else
3640             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3641             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3642                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3643                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3644                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3645         fi
3646     fi
3648 AC_SUBST(MACOSX_SDK_PATH)
3649 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3650 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3651 AC_SUBST(INSTALL_NAME_TOOL)
3652 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3653 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3654 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3655 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3656 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3657 AC_SUBST(MACOSX_PROVISIONING_INFO)
3658 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3659 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3660 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3662 dnl ===================================================================
3663 dnl Check iOS SDK and compiler
3664 dnl ===================================================================
3666 if test $_os = iOS; then
3667     AC_MSG_CHECKING([what iOS SDK to use])
3669     if test "$enable_ios_simulator" = "yes"; then
3670         platformlc=iphonesimulator
3671         versionmin=-mios-simulator-version-min=14.5
3672     else
3673         platformlc=iphoneos
3674         versionmin=-miphoneos-version-min=14.5
3675     fi
3677     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3679     if ! test -d "$sysroot"; then
3680         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3681     fi
3683     AC_MSG_RESULT($sysroot)
3685     stdlib="-stdlib=libc++"
3687     AC_MSG_CHECKING([what C compiler to use])
3688     CC="`xcrun -find clang`"
3689     CC_BASE=`first_arg_basename "$CC"`
3690     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3691     AC_MSG_RESULT([$CC])
3693     AC_MSG_CHECKING([what C++ compiler to use])
3694     CXX="`xcrun -find clang++`"
3695     CXX_BASE=`first_arg_basename "$CXX"`
3696     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3697     AC_MSG_RESULT([$CXX])
3699     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3700     AR=`xcrun -find ar`
3701     NM=`xcrun -find nm`
3702     STRIP=`xcrun -find strip`
3703     LIBTOOL=`xcrun -find libtool`
3704     RANLIB=`xcrun -find ranlib`
3707 AC_MSG_CHECKING([whether to treat the installation as read-only])
3709 if test $_os = Darwin; then
3710     enable_readonly_installset=yes
3711 elif test "$enable_extensions" != yes; then
3712     enable_readonly_installset=yes
3714 if test "$enable_readonly_installset" = yes; then
3715     AC_MSG_RESULT([yes])
3716     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3717 else
3718     AC_MSG_RESULT([no])
3721 dnl ===================================================================
3722 dnl Structure of install set
3723 dnl ===================================================================
3725 if test $_os = Darwin; then
3726     LIBO_BIN_FOLDER=MacOS
3727     LIBO_ETC_FOLDER=Resources
3728     LIBO_LIBEXEC_FOLDER=MacOS
3729     LIBO_LIB_FOLDER=Frameworks
3730     LIBO_LIB_PYUNO_FOLDER=Resources
3731     LIBO_SHARE_FOLDER=Resources
3732     LIBO_SHARE_HELP_FOLDER=Resources/help
3733     LIBO_SHARE_JAVA_FOLDER=Resources/java
3734     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3735     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3736     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3737     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3738     LIBO_URE_BIN_FOLDER=MacOS
3739     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3740     LIBO_URE_LIB_FOLDER=Frameworks
3741     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3742     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3743 elif test $_os = WINNT; then
3744     LIBO_BIN_FOLDER=program
3745     LIBO_ETC_FOLDER=program
3746     LIBO_LIBEXEC_FOLDER=program
3747     LIBO_LIB_FOLDER=program
3748     LIBO_LIB_PYUNO_FOLDER=program
3749     LIBO_SHARE_FOLDER=share
3750     LIBO_SHARE_HELP_FOLDER=help
3751     LIBO_SHARE_JAVA_FOLDER=program/classes
3752     LIBO_SHARE_PRESETS_FOLDER=presets
3753     LIBO_SHARE_READMES_FOLDER=readmes
3754     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3755     LIBO_SHARE_SHELL_FOLDER=program/shell
3756     LIBO_URE_BIN_FOLDER=program
3757     LIBO_URE_ETC_FOLDER=program
3758     LIBO_URE_LIB_FOLDER=program
3759     LIBO_URE_MISC_FOLDER=program
3760     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3761 else
3762     LIBO_BIN_FOLDER=program
3763     LIBO_ETC_FOLDER=program
3764     LIBO_LIBEXEC_FOLDER=program
3765     LIBO_LIB_FOLDER=program
3766     LIBO_LIB_PYUNO_FOLDER=program
3767     LIBO_SHARE_FOLDER=share
3768     LIBO_SHARE_HELP_FOLDER=help
3769     LIBO_SHARE_JAVA_FOLDER=program/classes
3770     LIBO_SHARE_PRESETS_FOLDER=presets
3771     LIBO_SHARE_READMES_FOLDER=readmes
3772     if test "$enable_fuzzers" != yes; then
3773         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3774     else
3775         LIBO_SHARE_RESOURCE_FOLDER=resource
3776     fi
3777     LIBO_SHARE_SHELL_FOLDER=program/shell
3778     LIBO_URE_BIN_FOLDER=program
3779     LIBO_URE_ETC_FOLDER=program
3780     LIBO_URE_LIB_FOLDER=program
3781     LIBO_URE_MISC_FOLDER=program
3782     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3784 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3785 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3786 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3787 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3788 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3789 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3790 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3791 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3792 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3793 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3794 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3795 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3796 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3797 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3798 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3799 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3801 # Not all of them needed in config_host.mk, add more if need arises
3802 AC_SUBST(LIBO_BIN_FOLDER)
3803 AC_SUBST(LIBO_ETC_FOLDER)
3804 AC_SUBST(LIBO_LIB_FOLDER)
3805 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3806 AC_SUBST(LIBO_SHARE_FOLDER)
3807 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3808 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3809 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3810 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3811 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3812 AC_SUBST(LIBO_URE_BIN_FOLDER)
3813 AC_SUBST(LIBO_URE_ETC_FOLDER)
3814 AC_SUBST(LIBO_URE_LIB_FOLDER)
3815 AC_SUBST(LIBO_URE_MISC_FOLDER)
3816 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3818 dnl ===================================================================
3819 dnl Windows specific tests and stuff
3820 dnl ===================================================================
3822 reg_get_value()
3824     # Return value: $regvalue
3825     unset regvalue
3827     if test "$build_os" = "wsl"; then
3828         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3829         return
3830     fi
3832     local _regentry="/proc/registry${1}/${2}"
3833     if test -f "$_regentry"; then
3834         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3835         # Registry keys read via /proc/registry* are always \0 terminated!
3836         local _regvalue=$(tr -d '\0' < "$_regentry")
3837         if test $? -eq 0; then
3838             regvalue=$_regvalue
3839         fi
3840     fi
3843 # Get a value from the 32-bit side of the Registry
3844 reg_get_value_32()
3846     reg_get_value "32" "$1"
3849 # Get a value from the 64-bit side of the Registry
3850 reg_get_value_64()
3852     reg_get_value "64" "$1"
3855 reg_list_values()
3857     # Return value: $reglist
3858     unset reglist
3860     if test "$build_os" = "wsl"; then
3861         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3862         return
3863     fi
3865     reglist=$(ls "/proc/registry${1}/${2}")
3868 # List values from the 32-bit side of the Registry
3869 reg_list_values_32()
3871     reg_list_values "32" "$1"
3874 # List values from the 64-bit side of the Registry
3875 reg_list_values_64()
3877     reg_list_values "64" "$1"
3880 case "$host_os" in
3881 cygwin*|wsl*)
3882     COM=MSC
3883     OS=WNT
3884     RTL_OS=Windows
3885     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3886         P_SEP=";"
3887     else
3888         P_SEP=:
3889     fi
3890     case "$host_cpu" in
3891     x86_64)
3892         CPUNAME=X86_64
3893         RTL_ARCH=X86_64
3894         PLATFORMID=windows_x86_64
3895         WINDOWS_X64=1
3896         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3897         WIN_HOST_ARCH="x64"
3898         WIN_MULTI_ARCH="x86"
3899         WIN_HOST_BITS=64
3900         ;;
3901     i*86)
3902         CPUNAME=INTEL
3903         RTL_ARCH=x86
3904         PLATFORMID=windows_x86
3905         WIN_HOST_ARCH="x86"
3906         WIN_HOST_BITS=32
3907         WIN_OTHER_ARCH="x64"
3908         ;;
3909     aarch64)
3910         CPUNAME=AARCH64
3911         RTL_ARCH=AARCH64
3912         PLATFORMID=windows_aarch64
3913         WINDOWS_X64=1
3914         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3915         WIN_HOST_ARCH="arm64"
3916         WIN_HOST_BITS=64
3917         with_ucrt_dir=no
3918         ;;
3919     *)
3920         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3921         ;;
3922     esac
3924     case "$build_cpu" in
3925     x86_64) WIN_BUILD_ARCH="x64" ;;
3926     i*86) WIN_BUILD_ARCH="x86" ;;
3927     aarch64) WIN_BUILD_ARCH="arm64" ;;
3928     *)
3929         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3930         ;;
3931     esac
3933     SCPDEFS="$SCPDEFS -D_MSC_VER"
3934     ;;
3935 esac
3937 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3938 # other-arch won't, but wouldn't break the build (x64 on x86).
3939 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3940     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3944 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3945     # To allow building Windows multi-arch releases without cross-tooling
3946     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3947         cross_compiling="yes"
3948     fi
3951 if test "$cross_compiling" = "yes"; then
3952     export CROSS_COMPILING=TRUE
3953     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3954         ENABLE_WASM_STRIP=TRUE
3955     fi
3956     if test "$_os" = "Emscripten"; then
3957         if test "$with_main_module" = "calc"; then
3958             ENABLE_WASM_STRIP_WRITER=TRUE
3959         elif test "$with_main_module" = "writer"; then
3960             ENABLE_WASM_STRIP_CALC=TRUE
3961         fi
3962     fi
3963 else
3964     CROSS_COMPILING=
3965     BUILD_TYPE="$BUILD_TYPE NATIVE"
3967 AC_SUBST(CROSS_COMPILING)
3968 AC_SUBST(ENABLE_WASM_STRIP)
3969 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3970 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3972 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3973 # NOTE: must _not_ be used for bundled external libraries!
3974 ISYSTEM=
3975 if test "$GCC" = "yes"; then
3976     AC_MSG_CHECKING( for -isystem )
3977     save_CFLAGS=$CFLAGS
3978     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3979     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3980     CFLAGS=$save_CFLAGS
3981     if test -n "$ISYSTEM"; then
3982         AC_MSG_RESULT(yes)
3983     else
3984         AC_MSG_RESULT(no)
3985     fi
3987 if test -z "$ISYSTEM"; then
3988     # fall back to using -I
3989     ISYSTEM=-I
3991 AC_SUBST(ISYSTEM)
3993 dnl ===================================================================
3994 dnl  Check which Visual Studio compiler is used
3995 dnl ===================================================================
3997 map_vs_year_to_version()
3999     # Return value: $vsversion
4001     unset vsversion
4003     case $1 in
4004     2019)
4005         vsversion=16;;
4006     2022)
4007         vsversion=17;;
4008     2022preview)
4009         vsversion=17.7;;
4010     *)
4011         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4012     esac
4015 vs_versions_to_check()
4017     # Args: $1 (optional) : versions to check, in the order of preference
4018     # Return value: $vsversions
4020     unset vsversions
4022     if test -n "$1"; then
4023         map_vs_year_to_version "$1"
4024         vsversions=$vsversion
4025     else
4026         # Default version is 2019
4027         vsversions="16"
4028     fi
4031 win_get_env_from_vsdevcmdbat()
4033     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4034     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4035     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4036     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4037     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4038     local result
4039     if test "$build_os" = "wsl"; then
4040         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4041     else
4042         chmod +x $WRAPPERBATCHFILEPATH
4043         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4044     fi
4045     rm -f $WRAPPERBATCHFILEPATH
4046     printf '%s' "$result"
4049 find_ucrt()
4051     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4052     if test -n "$regvalue"; then
4053         PathFormat "$regvalue"
4054         UCRTSDKDIR=$formatted_path_unix
4055         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4056         UCRTVERSION=$regvalue
4057         # Rest if not exist
4058         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4059           UCRTSDKDIR=
4060         fi
4061     fi
4062     if test -z "$UCRTSDKDIR"; then
4063         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4064         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4065         if test -f "$ide_env_file"; then
4066             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4067             UCRTSDKDIR=$formatted_path
4068             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4069             dnl Hack needed at least by tml:
4070             if test "$UCRTVERSION" = 10.0.15063.0 \
4071                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4072                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4073             then
4074                 UCRTVERSION=10.0.14393.0
4075             fi
4076         else
4077           AC_MSG_ERROR([No UCRT found])
4078         fi
4079     fi
4082 find_msvc()
4084     # Find Visual C++
4085     # Args: $1 (optional) : The VS version year
4086     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4088     unset vctest vctoolset vcnumwithdot vcbuildnumber
4090     vs_versions_to_check "$1"
4091     if test "$build_os" = wsl; then
4092         vswhere="$PROGRAMFILESX86"
4093         if test -z "$vswhere"; then
4094             vswhere="c:\\Program Files (x86)"
4095         fi
4096     else
4097         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4098     fi
4099     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4100     PathFormat "$vswhere"
4101     vswhere=$formatted_path_unix
4102     for ver in $vsversions; do
4103         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4104         if test -z "$vswhereoutput"; then
4105             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4106         fi
4107         # Fall back to all MS products (this includes VC++ Build Tools)
4108         if ! test -n "$vswhereoutput"; then
4109             AC_MSG_CHECKING([VC++ Build Tools and similar])
4110             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4111         fi
4112         if test -n "$vswhereoutput"; then
4113             PathFormat "$vswhereoutput"
4114             vctest=$formatted_path_unix
4115             break
4116         fi
4117     done
4119     if test -n "$vctest"; then
4120         vcnumwithdot="$ver"
4121         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4122             vcnumwithdot=$vcnumwithdot.0
4123         fi
4124         case "$vcnumwithdot" in
4125         16.0)
4126             vcyear=2019
4127             vctoolset=v142
4128             ;;
4129         17.0 | 17.7)
4130             vcyear=2022
4131             vctoolset=v143
4132             ;;
4133         esac
4134         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4136     fi
4139 test_cl_exe()
4141     AC_MSG_CHECKING([$1 compiler])
4143     CL_EXE_PATH="$2/cl.exe"
4145     if test ! -f "$CL_EXE_PATH"; then
4146         if test "$1" = "multi-arch"; then
4147             AC_MSG_WARN([no compiler (cl.exe) in $2])
4148             return 1
4149         else
4150             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4151         fi
4152     fi
4154     dnl ===========================================================
4155     dnl  Check for the corresponding mspdb*.dll
4156     dnl ===========================================================
4158     # MSVC 15.0 has libraries from 14.0?
4159     mspdbnum="140"
4161     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4162         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4163     fi
4165     # The compiles has to find its shared libraries
4166     OLD_PATH="$PATH"
4167     TEMP_PATH=`cygpath -d "$2"`
4168     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4170     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4171         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4172     fi
4174     PATH="$OLD_PATH"
4176     AC_MSG_RESULT([$CL_EXE_PATH])
4179 SOLARINC=
4180 MSBUILD_PATH=
4181 DEVENV=
4182 if test "$_os" = "WINNT"; then
4183     AC_MSG_CHECKING([Visual C++])
4184     find_msvc "$with_visual_studio"
4185     if test -z "$vctest"; then
4186         if test -n "$with_visual_studio"; then
4187             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4188         else
4189             AC_MSG_ERROR([no Visual Studio installation found])
4190         fi
4191     fi
4192     AC_MSG_RESULT([])
4194     VC_PRODUCT_DIR="$vctest/VC"
4195     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4197     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4198     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4199         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4200         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4201         if test $? -ne 0; then
4202             WIN_MULTI_ARCH=""
4203             WIN_OTHER_ARCH=""
4204         fi
4205     fi
4207     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4208         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4209         test_cl_exe "build" "$MSVC_BUILD_PATH"
4210     fi
4212     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4213         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4214         test_cl_exe "host" "$MSVC_HOST_PATH"
4215     else
4216         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4217     fi
4219     AC_MSG_CHECKING([for short pathname of VC product directory])
4220     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4221     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4223     UCRTSDKDIR=
4224     UCRTVERSION=
4226     AC_MSG_CHECKING([for UCRT location])
4227     find_ucrt
4228     # find_ucrt errors out if it doesn't find it
4229     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4230     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4231     ucrtincpath_formatted=$formatted_path
4232     # SOLARINC is used for external modules and must be set too.
4233     # And no, it's not sufficient to set SOLARINC only, as configure
4234     # itself doesn't honour it.
4235     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4236     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4237     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4238     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4240     AC_SUBST(UCRTSDKDIR)
4241     AC_SUBST(UCRTVERSION)
4243     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4244     # Find the proper version of MSBuild.exe to use based on the VS version
4245     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4246     if test -z "$regvalue" ; then
4247         if test "$WIN_BUILD_ARCH" != "x64"; then
4248             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4249         else
4250             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4251         fi
4252     fi
4253     if test -d "$regvalue" ; then
4254         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4255         AC_MSG_RESULT([$regvalue])
4256     else
4257         AC_MSG_ERROR([MSBuild.exe location not found])
4258     fi
4260     # Find the version of devenv.exe
4261     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4262     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4263     DEVENV_unix=$(cygpath -u "$DEVENV")
4264     if test ! -e "$DEVENV_unix"; then
4265         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4266     fi
4268     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4269     dnl needed when building CLR code:
4270     if test -z "$MSVC_CXX"; then
4271         # This gives us a posix path with 8.3 filename restrictions
4272         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4273     fi
4275     if test -z "$CC"; then
4276         CC=$MSVC_CXX
4277         CC_BASE=`first_arg_basename "$CC"`
4278     fi
4279     if test -z "$CXX"; then
4280         CXX=$MSVC_CXX
4281         CXX_BASE=`first_arg_basename "$CXX"`
4282     fi
4284     if test -n "$CC"; then
4285         # Remove /cl.exe from CC case insensitive
4286         AC_MSG_NOTICE([found Visual C++ $vcyear])
4288         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4289         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4291         PathFormat "$COMPATH"
4292         COMPATH=`win_short_path_for_make "$formatted_path"`
4294         VCVER=$vcnumwithdot
4295         VCTOOLSET=$vctoolset
4297         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4298         # are always "better", we list them in reverse chronological order.
4300         case "$vcnumwithdot" in
4301         16.0 | 17.0 | 17.7)
4302             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4303             ;;
4304         esac
4306         # The expectation is that --with-windows-sdk should not need to be used
4307         if test -n "$with_windows_sdk"; then
4308             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4309             *" "$with_windows_sdk" "*)
4310                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4311                 ;;
4312             *)
4313                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4314                 ;;
4315             esac
4316         fi
4318         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4319         ac_objext=obj
4320         ac_exeext=exe
4322     else
4323         AC_MSG_ERROR([Visual C++ not found after all, huh])
4324     fi
4326     # ERROR if VS version < 16.5
4327     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4328     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4329         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4330         // between Visual Studio versions and _MSC_VER:
4331         #if _MSC_VER < 1925
4332         #error
4333         #endif
4334     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4336     # WARN if VS version < 16.10
4337     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4338     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4339         #if _MSC_VER < 1929
4340         #error
4341         #endif
4342     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4344     if test $vs2019_recommended_version = yes; then
4345         AC_MSG_RESULT([yes])
4346     else
4347         AC_MSG_WARN([no])
4348         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."
4349     fi
4351     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4352     # version of the Explorer extension (and maybe other small
4353     # bits, too) needed when installing a 32-bit LibreOffice on a
4354     # 64-bit OS. The 64-bit Explorer extension is a feature that
4355     # has been present since long in OOo. Don't confuse it with
4356     # building LibreOffice itself as 64-bit code.
4358     BUILD_X64=
4359     CXX_X64_BINARY=
4361     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4362         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4363         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4364              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4365         then
4366             BUILD_X64=TRUE
4367             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4368             AC_MSG_RESULT([found])
4369         else
4370             AC_MSG_RESULT([not found])
4371             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4372         fi
4373     elif test "$WIN_HOST_ARCH" = "x64"; then
4374         CXX_X64_BINARY=$CXX
4375     fi
4376     AC_SUBST(BUILD_X64)
4378     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4379     AC_SUBST(CXX_X64_BINARY)
4381     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4382     # needed to support TWAIN scan on both 32- and 64-bit systems
4384     case "$WIN_HOST_ARCH" in
4385     x64)
4386         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4387         if test -n "$CXX_X86_BINARY"; then
4388             BUILD_X86=TRUE
4389             AC_MSG_RESULT([preset])
4390         elif test -n "$WIN_MULTI_ARCH"; then
4391             BUILD_X86=TRUE
4392             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4393             AC_MSG_RESULT([found])
4394         else
4395             AC_MSG_RESULT([not found])
4396             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4397         fi
4398         ;;
4399     x86)
4400         BUILD_X86=TRUE
4401         CXX_X86_BINARY=$MSVC_CXX
4402         ;;
4403     esac
4404     AC_SUBST(BUILD_X86)
4405     AC_SUBST(CXX_X86_BINARY)
4407 AC_SUBST(VCVER)
4408 AC_SUBST(VCTOOLSET)
4409 AC_SUBST(DEVENV)
4410 AC_SUBST(MSVC_CXX)
4412 COM_IS_CLANG=
4413 AC_MSG_CHECKING([whether the compiler is actually Clang])
4414 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4415     #ifndef __clang__
4416     you lose
4417     #endif
4418     int foo=42;
4419     ]])],
4420     [AC_MSG_RESULT([yes])
4421      COM_IS_CLANG=TRUE],
4422     [AC_MSG_RESULT([no])])
4423 AC_SUBST(COM_IS_CLANG)
4425 CLANGVER=
4426 if test "$COM_IS_CLANG" = TRUE; then
4427     AC_MSG_CHECKING([whether Clang is new enough])
4428     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4429         #if !defined __apple_build_version__
4430         #error
4431         #endif
4432         ]])],
4433         [my_apple_clang=yes],[my_apple_clang=])
4434     if test "$my_apple_clang" = yes; then
4435         AC_MSG_RESULT([assumed yes (Apple Clang)])
4436     elif test "$_os" = Emscripten; then
4437         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4438     else
4439         if test "$_os" = WINNT; then
4440             dnl In which case, assume clang-cl:
4441             my_args="/EP /TC"
4442         else
4443             my_args="-E -P"
4444         fi
4445         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4446         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4447         CLANGVER=`echo $clang_version \
4448             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4449         if test "$CLANGVER" -ge 80001; then
4450             AC_MSG_RESULT([yes ($clang_version)])
4451         else
4452             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4453         fi
4454         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4455         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4456     fi
4459 SHOWINCLUDES_PREFIX=
4460 if test "$_os" = WINNT; then
4461     dnl We need to guess the prefix of the -showIncludes output, it can be
4462     dnl localized
4463     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4464     echo "#include <stdlib.h>" > conftest.c
4465     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4466         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4467     rm -f conftest.c conftest.obj
4468     if test -z "$SHOWINCLUDES_PREFIX"; then
4469         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4470     else
4471         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4472     fi
4474 AC_SUBST(SHOWINCLUDES_PREFIX)
4477 # prefix C with ccache if needed
4479 if test "$CCACHE" != ""; then
4480     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4482     AC_LANG_PUSH([C])
4483     save_CFLAGS=$CFLAGS
4484     CFLAGS="$CFLAGS --ccache-skip -O2"
4485     # msvc does not fail on unknown options, check stdout
4486     if test "$COM" = MSC; then
4487         CFLAGS="$CFLAGS -nologo"
4488     fi
4489     save_ac_c_werror_flag=$ac_c_werror_flag
4490     ac_c_werror_flag=yes
4491     dnl an empty program will do, we're checking the compiler flags
4492     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4493                       [use_ccache=yes], [use_ccache=no])
4494     CFLAGS=$save_CFLAGS
4495     ac_c_werror_flag=$save_ac_c_werror_flag
4496     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4497         AC_MSG_RESULT([yes])
4498     else
4499         CC="$CCACHE $CC"
4500         CC_BASE="ccache $CC_BASE"
4501         AC_MSG_RESULT([no])
4502     fi
4503     AC_LANG_POP([C])
4506 # ===================================================================
4507 # check various GCC options that Clang does not support now but maybe
4508 # will somewhen in the future, check them even for GCC, so that the
4509 # flags are set
4510 # ===================================================================
4512 HAVE_GCC_GGDB2=
4513 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4514     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4515     save_CFLAGS=$CFLAGS
4516     CFLAGS="$CFLAGS -Werror -ggdb2"
4517     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4518     CFLAGS=$save_CFLAGS
4519     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4520         AC_MSG_RESULT([yes])
4521     else
4522         AC_MSG_RESULT([no])
4523     fi
4525     if test "$host_cpu" = "m68k"; then
4526         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4527         save_CFLAGS=$CFLAGS
4528         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4529         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4530         CFLAGS=$save_CFLAGS
4531         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4532             AC_MSG_RESULT([yes])
4533         else
4534             AC_MSG_ERROR([no])
4535         fi
4536     fi
4538 AC_SUBST(HAVE_GCC_GGDB2)
4540 dnl ===================================================================
4541 dnl  Test the gcc version
4542 dnl ===================================================================
4543 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4544     AC_MSG_CHECKING([the GCC version])
4545     _gcc_version=`$CC -dumpfullversion`
4546     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4547         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4548     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4550     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4552     if test "$gcc_full_version" -lt 70000; then
4553         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4554     fi
4555 else
4556     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4557     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4558     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4559     # (which reports itself as GCC 4.2.1).
4560     GCC_VERSION=
4562 AC_SUBST(GCC_VERSION)
4564 dnl Set the ENABLE_DBGUTIL variable
4565 dnl ===================================================================
4566 AC_MSG_CHECKING([whether to build with additional debug utilities])
4567 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4568     ENABLE_DBGUTIL="TRUE"
4569     # this is an extra var so it can have different default on different MSVC
4570     # versions (in case there are version specific problems with it)
4571     MSVC_USE_DEBUG_RUNTIME="TRUE"
4573     AC_MSG_RESULT([yes])
4574     # cppunit and graphite expose STL in public headers
4575     if test "$with_system_cppunit" = "yes"; then
4576         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4577     else
4578         with_system_cppunit=no
4579     fi
4580     if test "$with_system_graphite" = "yes"; then
4581         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4582     else
4583         with_system_graphite=no
4584     fi
4585     if test "$with_system_orcus" = "yes"; then
4586         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4587     else
4588         with_system_orcus=no
4589     fi
4590     if test "$with_system_libcmis" = "yes"; then
4591         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4592     else
4593         with_system_libcmis=no
4594     fi
4595     if test "$with_system_hunspell" = "yes"; then
4596         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4597     else
4598         with_system_hunspell=no
4599     fi
4600     if test "$with_system_gpgmepp" = "yes"; then
4601         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4602     else
4603         with_system_gpgmepp=no
4604     fi
4605     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4606     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4607     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4608     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4609     # of those two is using the system variant:
4610     if test "$with_system_libnumbertext" = "yes"; then
4611         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4612     else
4613         with_system_libnumbertext=no
4614     fi
4615     if test "$with_system_libwps" = "yes"; then
4616         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4617     else
4618         with_system_libwps=no
4619     fi
4620 else
4621     ENABLE_DBGUTIL=""
4622     MSVC_USE_DEBUG_RUNTIME=""
4623     AC_MSG_RESULT([no])
4625 AC_SUBST(ENABLE_DBGUTIL)
4626 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4628 dnl Set the ENABLE_DEBUG variable.
4629 dnl ===================================================================
4630 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4631     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4633 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4634     if test -z "$libo_fuzzed_enable_debug"; then
4635         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4636     else
4637         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4638         enable_debug=yes
4639     fi
4642 AC_MSG_CHECKING([whether to do a debug build])
4643 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4644     ENABLE_DEBUG="TRUE"
4645     if test -n "$ENABLE_DBGUTIL" ; then
4646         AC_MSG_RESULT([yes (dbgutil)])
4647     else
4648         AC_MSG_RESULT([yes])
4649     fi
4650 else
4651     ENABLE_DEBUG=""
4652     AC_MSG_RESULT([no])
4654 AC_SUBST(ENABLE_DEBUG)
4656 dnl ===================================================================
4657 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4658 dnl This is done only after compiler checks (need to know if Clang is
4659 dnl used, for different defaults) and after checking if a debug build
4660 dnl is wanted (non-debug builds get the default linker if not explicitly
4661 dnl specified otherwise).
4662 dnl All checks for linker features/options should come after this.
4663 dnl ===================================================================
4664 check_use_ld()
4666     use_ld=-fuse-ld=${1%%:*}
4667     use_ld_path=${1#*:}
4668     if test "$use_ld_path" != "$1"; then
4669         if test "$COM_IS_CLANG" = TRUE; then
4670             if test "$CLANGVER" -ge 120000; then
4671                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4672             else
4673                 use_ld="-fuse-ld=${use_ld_path}"
4674             fi
4675         else
4676             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4677             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4678             # pickup the alternative linker, when called by libtool for linking.
4679             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4680             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4681         fi
4682     fi
4683     use_ld_fail_if_error=$2
4684     use_ld_ok=
4685     AC_MSG_CHECKING([for $use_ld linker support])
4686     use_ld_ldflags_save="$LDFLAGS"
4687     LDFLAGS="$LDFLAGS $use_ld"
4688     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4689 #include <stdio.h>
4690         ],[
4691 printf ("hello world\n");
4692         ])], USE_LD=$use_ld, [])
4693     if test -n "$USE_LD"; then
4694         AC_MSG_RESULT( yes )
4695         use_ld_ok=yes
4696     else
4697         if test -n "$use_ld_fail_if_error"; then
4698             AC_MSG_ERROR( no )
4699         else
4700             AC_MSG_RESULT( no )
4701         fi
4702     fi
4703     if test -n "$use_ld_ok"; then
4704         dnl keep the value of LDFLAGS
4705         return 0
4706     fi
4707     LDFLAGS="$use_ld_ldflags_save"
4708     return 1
4710 USE_LD=
4711 if test "$enable_ld" != "no"; then
4712     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4713         if test -n "$enable_ld"; then
4714             check_use_ld "$enable_ld" fail_if_error
4715         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4716             dnl non-debug builds default to the default linker
4717             true
4718         elif test -n "$COM_IS_CLANG"; then
4719             check_use_ld lld
4720             if test $? -ne 0; then
4721                 check_use_ld gold
4722                 if test $? -ne 0; then
4723                     check_use_ld mold
4724                 fi
4725             fi
4726         else
4727             # For gcc first try gold, new versions also support lld/mold.
4728             check_use_ld gold
4729             if test $? -ne 0; then
4730                 check_use_ld lld
4731                 if test $? -ne 0; then
4732                     check_use_ld mold
4733                 fi
4734             fi
4735         fi
4736         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4737         rm conftest.out
4738         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4739         if test -z "$ld_used"; then
4740             ld_used="unknown"
4741         fi
4742         AC_MSG_CHECKING([for linker that is used])
4743         AC_MSG_RESULT([$ld_used])
4744         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4745             if echo "$ld_used" | grep -q "^GNU ld"; then
4746                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4747                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4748             fi
4749         fi
4750     else
4751         if test "$enable_ld" = "yes"; then
4752             AC_MSG_ERROR([--enable-ld not supported])
4753         fi
4754     fi
4756 AC_SUBST(USE_LD)
4757 AC_SUBST(LD)
4759 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4760 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4761     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4762     bsymbolic_functions_ldflags_save=$LDFLAGS
4763     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4764     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4765 #include <stdio.h>
4766         ],[
4767 printf ("hello world\n");
4768         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4769     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4770         AC_MSG_RESULT( found )
4771     else
4772         AC_MSG_RESULT( not found )
4773     fi
4774     LDFLAGS=$bsymbolic_functions_ldflags_save
4776 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4778 LD_GC_SECTIONS=
4779 if test "$GCC" = "yes"; then
4780     for flag in "--gc-sections" "-dead_strip"; do
4781         AC_MSG_CHECKING([for $flag linker support])
4782         ldflags_save=$LDFLAGS
4783         LDFLAGS="$LDFLAGS -Wl,$flag"
4784         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4785 #include <stdio.h>
4786             ],[
4787 printf ("hello world\n");
4788             ])],[
4789             LD_GC_SECTIONS="-Wl,$flag"
4790             AC_MSG_RESULT( found )
4791             ], [
4792             AC_MSG_RESULT( not found )
4793             ])
4794         LDFLAGS=$ldflags_save
4795         if test -n "$LD_GC_SECTIONS"; then
4796             break
4797         fi
4798     done
4800 AC_SUBST(LD_GC_SECTIONS)
4802 HAVE_EXTERNAL_DWARF=
4803 if test "$enable_split_debug" != no; then
4804     use_split_debug=
4805     if test -n "$ENABLE_LTO"; then
4806         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4807     elif test "$enable_split_debug" = yes; then
4808         use_split_debug=1
4809     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4810     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4811         use_split_debug=1
4812     fi
4813     if test -n "$use_split_debug"; then
4814         if test "$_os" = "Emscripten"; then
4815             TEST_CC_FLAG=-gseparate-dwarf
4816         else
4817             TEST_CC_FLAG=-gsplit-dwarf
4818         fi
4819         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4820         save_CFLAGS=$CFLAGS
4821         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4822         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4823         CFLAGS=$save_CFLAGS
4824         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4825             AC_MSG_RESULT([yes])
4826         else
4827             if test "$enable_split_debug" = yes; then
4828                 AC_MSG_ERROR([no])
4829             else
4830                 AC_MSG_RESULT([no])
4831             fi
4832         fi
4833     fi
4834     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4835         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4836         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4837     fi
4839 AC_SUBST(HAVE_EXTERNAL_DWARF)
4841 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4842 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4843 save_CFLAGS=$CFLAGS
4844 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4845 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4846 CFLAGS=$save_CFLAGS
4847 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4848     AC_MSG_RESULT([yes])
4849 else
4850     AC_MSG_RESULT([no])
4852 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4854 ENABLE_GDB_INDEX=
4855 if test "$enable_gdb_index" != "no"; then
4856     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4857     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4858         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4859         save_CFLAGS=$CFLAGS
4860         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4861         have_ggnu_pubnames=
4862         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4863         if test "$have_ggnu_pubnames" != "TRUE"; then
4864             if test "$enable_gdb_index" = "yes"; then
4865                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4866             else
4867                 AC_MSG_RESULT( no )
4868             fi
4869         else
4870             AC_MSG_RESULT( yes )
4871             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4872             ldflags_save=$LDFLAGS
4873             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4874             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4875 #include <stdio.h>
4876                 ],[
4877 printf ("hello world\n");
4878                 ])], ENABLE_GDB_INDEX=TRUE, [])
4879             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4880                 AC_MSG_RESULT( yes )
4881             else
4882                 if test "$enable_gdb_index" = "yes"; then
4883                     AC_MSG_ERROR( no )
4884                 else
4885                     AC_MSG_RESULT( no )
4886                 fi
4887             fi
4888             LDFLAGS=$ldflags_save
4889         fi
4890         CFLAGS=$save_CFLAGS
4891         fi
4892     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4893         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4894         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4895     fi
4897 AC_SUBST(ENABLE_GDB_INDEX)
4899 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4900     enable_sal_log=yes
4902 if test "$enable_sal_log" = yes; then
4903     ENABLE_SAL_LOG=TRUE
4905 AC_SUBST(ENABLE_SAL_LOG)
4907 dnl Check for enable symbols option
4908 dnl ===================================================================
4909 AC_MSG_CHECKING([whether to generate debug information])
4910 if test -z "$enable_symbols"; then
4911     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4912         enable_symbols=yes
4913     else
4914         enable_symbols=no
4915     fi
4917 if test "$enable_symbols" = yes; then
4918     ENABLE_SYMBOLS_FOR=all
4919     AC_MSG_RESULT([yes])
4920 elif test "$enable_symbols" = no; then
4921     ENABLE_SYMBOLS_FOR=
4922     AC_MSG_RESULT([no])
4923 else
4924     # Selective debuginfo.
4925     ENABLE_SYMBOLS_FOR="$enable_symbols"
4926     AC_MSG_RESULT([for "$enable_symbols"])
4928 AC_SUBST(ENABLE_SYMBOLS_FOR)
4930 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4931     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4932     AC_MSG_CHECKING([whether enough memory is available for linking])
4933     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4934     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4935     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4936         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4937     else
4938         AC_MSG_RESULT([yes])
4939     fi
4942 ENABLE_OPTIMIZED=
4943 ENABLE_OPTIMIZED_DEBUG=
4944 AC_MSG_CHECKING([whether to compile with optimization flags])
4945 if test -z "$enable_optimized"; then
4946     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4947         enable_optimized=no
4948     else
4949         enable_optimized=yes
4950     fi
4952 if test "$enable_optimized" = yes; then
4953     ENABLE_OPTIMIZED=TRUE
4954     AC_MSG_RESULT([yes])
4955 elif test "$enable_optimized" = debug; then
4956     ENABLE_OPTIMIZED_DEBUG=TRUE
4957     AC_MSG_RESULT([yes (debug)])
4958     HAVE_GCC_OG=
4959     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4960         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4961         save_CFLAGS=$CFLAGS
4962         CFLAGS="$CFLAGS -Werror -Og"
4963         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4964         CFLAGS=$save_CFLAGS
4965         if test "$HAVE_GCC_OG" = "TRUE"; then
4966             AC_MSG_RESULT([yes])
4967         else
4968             AC_MSG_RESULT([no])
4969         fi
4970     fi
4971     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4972         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4973     fi
4974 else
4975     AC_MSG_RESULT([no])
4977 AC_SUBST(ENABLE_OPTIMIZED)
4978 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4981 # determine CPUNAME, OS, ...
4983 case "$host_os" in
4985 cygwin*|wsl*)
4986     # Already handled
4987     ;;
4989 darwin*)
4990     COM=GCC
4991     OS=MACOSX
4992     RTL_OS=MacOSX
4993     P_SEP=:
4995     case "$host_cpu" in
4996     aarch64|arm64)
4997         if test "$enable_ios_simulator" = "yes"; then
4998             OS=iOS
4999         else
5000             CPUNAME=AARCH64
5001             RTL_ARCH=AARCH64
5002             PLATFORMID=macosx_aarch64
5003         fi
5004         ;;
5005     x86_64)
5006         if test "$enable_ios_simulator" = "yes"; then
5007             OS=iOS
5008         fi
5009         CPUNAME=X86_64
5010         RTL_ARCH=X86_64
5011         PLATFORMID=macosx_x86_64
5012         ;;
5013     *)
5014         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5015         ;;
5016     esac
5017     ;;
5019 ios*)
5020     COM=GCC
5021     OS=iOS
5022     RTL_OS=iOS
5023     P_SEP=:
5025     case "$host_cpu" in
5026     aarch64|arm64)
5027         if test "$enable_ios_simulator" = "yes"; then
5028             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5029         fi
5030         ;;
5031     *)
5032         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5033         ;;
5034     esac
5035     CPUNAME=AARCH64
5036     RTL_ARCH=AARCH64
5037     PLATFORMID=ios_arm64
5038     ;;
5040 dragonfly*)
5041     COM=GCC
5042     OS=DRAGONFLY
5043     RTL_OS=DragonFly
5044     P_SEP=:
5046     case "$host_cpu" in
5047     i*86)
5048         CPUNAME=INTEL
5049         RTL_ARCH=x86
5050         PLATFORMID=dragonfly_x86
5051         ;;
5052     x86_64)
5053         CPUNAME=X86_64
5054         RTL_ARCH=X86_64
5055         PLATFORMID=dragonfly_x86_64
5056         ;;
5057     *)
5058         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5059         ;;
5060     esac
5061     ;;
5063 freebsd*)
5064     COM=GCC
5065     RTL_OS=FreeBSD
5066     OS=FREEBSD
5067     P_SEP=:
5069     case "$host_cpu" in
5070     aarch64)
5071         CPUNAME=AARCH64
5072         PLATFORMID=freebsd_aarch64
5073         RTL_ARCH=AARCH64
5074         ;;
5075     i*86)
5076         CPUNAME=INTEL
5077         RTL_ARCH=x86
5078         PLATFORMID=freebsd_x86
5079         ;;
5080     x86_64|amd64)
5081         CPUNAME=X86_64
5082         RTL_ARCH=X86_64
5083         PLATFORMID=freebsd_x86_64
5084         ;;
5085     powerpc64)
5086         CPUNAME=POWERPC64
5087         RTL_ARCH=PowerPC_64
5088         PLATFORMID=freebsd_powerpc64
5089         ;;
5090     powerpc|powerpcspe)
5091         CPUNAME=POWERPC
5092         RTL_ARCH=PowerPC
5093         PLATFORMID=freebsd_powerpc
5094         ;;
5095     *)
5096         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5097         ;;
5098     esac
5099     ;;
5101 haiku*)
5102     COM=GCC
5103     GUIBASE=haiku
5104     RTL_OS=Haiku
5105     OS=HAIKU
5106     P_SEP=:
5108     case "$host_cpu" in
5109     i*86)
5110         CPUNAME=INTEL
5111         RTL_ARCH=x86
5112         PLATFORMID=haiku_x86
5113         ;;
5114     x86_64|amd64)
5115         CPUNAME=X86_64
5116         RTL_ARCH=X86_64
5117         PLATFORMID=haiku_x86_64
5118         ;;
5119     *)
5120         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5121         ;;
5122     esac
5123     ;;
5125 kfreebsd*)
5126     COM=GCC
5127     OS=LINUX
5128     RTL_OS=kFreeBSD
5129     P_SEP=:
5131     case "$host_cpu" in
5133     i*86)
5134         CPUNAME=INTEL
5135         RTL_ARCH=x86
5136         PLATFORMID=kfreebsd_x86
5137         ;;
5138     x86_64)
5139         CPUNAME=X86_64
5140         RTL_ARCH=X86_64
5141         PLATFORMID=kfreebsd_x86_64
5142         ;;
5143     *)
5144         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5145         ;;
5146     esac
5147     ;;
5149 linux-gnu*|linux-musl*)
5150     COM=GCC
5151     OS=LINUX
5152     RTL_OS=Linux
5153     P_SEP=:
5155     case "$host_cpu" in
5157     aarch64)
5158         CPUNAME=AARCH64
5159         PLATFORMID=linux_aarch64
5160         RTL_ARCH=AARCH64
5161         EPM_FLAGS="-a arm64"
5162         ;;
5163     alpha)
5164         CPUNAME=AXP
5165         RTL_ARCH=ALPHA
5166         PLATFORMID=linux_alpha
5167         ;;
5168     arm*)
5169         CPUNAME=ARM
5170         EPM_FLAGS="-a arm"
5171         RTL_ARCH=ARM_EABI
5172         PLATFORMID=linux_arm_eabi
5173         case "$host_cpu" in
5174         arm*-linux)
5175             RTL_ARCH=ARM_OABI
5176             PLATFORMID=linux_arm_oabi
5177             ;;
5178         esac
5179         ;;
5180     hppa)
5181         CPUNAME=HPPA
5182         RTL_ARCH=HPPA
5183         EPM_FLAGS="-a hppa"
5184         PLATFORMID=linux_hppa
5185         ;;
5186     i*86)
5187         CPUNAME=INTEL
5188         RTL_ARCH=x86
5189         PLATFORMID=linux_x86
5190         ;;
5191     ia64)
5192         CPUNAME=IA64
5193         RTL_ARCH=IA64
5194         PLATFORMID=linux_ia64
5195         ;;
5196     mips)
5197         CPUNAME=MIPS
5198         RTL_ARCH=MIPS_EB
5199         EPM_FLAGS="-a mips"
5200         PLATFORMID=linux_mips_eb
5201         ;;
5202     mips64)
5203         CPUNAME=MIPS64
5204         RTL_ARCH=MIPS64_EB
5205         EPM_FLAGS="-a mips64"
5206         PLATFORMID=linux_mips64_eb
5207         ;;
5208     mips64el)
5209         CPUNAME=MIPS64
5210         RTL_ARCH=MIPS64_EL
5211         EPM_FLAGS="-a mips64el"
5212         PLATFORMID=linux_mips64_el
5213         ;;
5214     mipsel)
5215         CPUNAME=MIPS
5216         RTL_ARCH=MIPS_EL
5217         EPM_FLAGS="-a mipsel"
5218         PLATFORMID=linux_mips_el
5219         ;;
5220     riscv64)
5221         CPUNAME=RISCV64
5222         RTL_ARCH=RISCV64
5223         EPM_FLAGS="-a riscv64"
5224         PLATFORMID=linux_riscv64
5225         ;;
5226     m68k)
5227         CPUNAME=M68K
5228         RTL_ARCH=M68K
5229         PLATFORMID=linux_m68k
5230         ;;
5231     powerpc)
5232         CPUNAME=POWERPC
5233         RTL_ARCH=PowerPC
5234         PLATFORMID=linux_powerpc
5235         ;;
5236     powerpc64)
5237         CPUNAME=POWERPC64
5238         RTL_ARCH=PowerPC_64
5239         PLATFORMID=linux_powerpc64
5240         ;;
5241     powerpc64le)
5242         CPUNAME=POWERPC64
5243         RTL_ARCH=PowerPC_64_LE
5244         PLATFORMID=linux_powerpc64_le
5245         ;;
5246     sparc)
5247         CPUNAME=SPARC
5248         RTL_ARCH=SPARC
5249         PLATFORMID=linux_sparc
5250         ;;
5251     sparc64)
5252         CPUNAME=SPARC64
5253         RTL_ARCH=SPARC64
5254         PLATFORMID=linux_sparc64
5255         ;;
5256     s390x)
5257         CPUNAME=S390X
5258         RTL_ARCH=S390x
5259         PLATFORMID=linux_s390x
5260         ;;
5261     x86_64)
5262         CPUNAME=X86_64
5263         RTL_ARCH=X86_64
5264         PLATFORMID=linux_x86_64
5265         ;;
5266     loongarch64)
5267         CPUNAME=LOONGARCH64
5268         RTL_ARCH=LOONGARCH64
5269         PLATFORMID=linux_loongarch64
5270         ;;
5271     *)
5272         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5273         ;;
5274     esac
5275     ;;
5277 linux-android*)
5278     COM=GCC
5279     OS=ANDROID
5280     RTL_OS=Android
5281     P_SEP=:
5283     case "$host_cpu" in
5285     arm|armel)
5286         CPUNAME=ARM
5287         RTL_ARCH=ARM_EABI
5288         PLATFORMID=android_arm_eabi
5289         ;;
5290     aarch64)
5291         CPUNAME=AARCH64
5292         RTL_ARCH=AARCH64
5293         PLATFORMID=android_aarch64
5294         ;;
5295     i*86)
5296         CPUNAME=INTEL
5297         RTL_ARCH=x86
5298         PLATFORMID=android_x86
5299         ;;
5300     x86_64)
5301         CPUNAME=X86_64
5302         RTL_ARCH=X86_64
5303         PLATFORMID=android_x86_64
5304         ;;
5305     *)
5306         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5307         ;;
5308     esac
5309     ;;
5311 *netbsd*)
5312     COM=GCC
5313     OS=NETBSD
5314     RTL_OS=NetBSD
5315     P_SEP=:
5317     case "$host_cpu" in
5318     i*86)
5319         CPUNAME=INTEL
5320         RTL_ARCH=x86
5321         PLATFORMID=netbsd_x86
5322         ;;
5323     powerpc)
5324         CPUNAME=POWERPC
5325         RTL_ARCH=PowerPC
5326         PLATFORMID=netbsd_powerpc
5327         ;;
5328     sparc)
5329         CPUNAME=SPARC
5330         RTL_ARCH=SPARC
5331         PLATFORMID=netbsd_sparc
5332         ;;
5333     x86_64)
5334         CPUNAME=X86_64
5335         RTL_ARCH=X86_64
5336         PLATFORMID=netbsd_x86_64
5337         ;;
5338     *)
5339         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5340         ;;
5341     esac
5342     ;;
5344 openbsd*)
5345     COM=GCC
5346     OS=OPENBSD
5347     RTL_OS=OpenBSD
5348     P_SEP=:
5350     case "$host_cpu" in
5351     i*86)
5352         CPUNAME=INTEL
5353         RTL_ARCH=x86
5354         PLATFORMID=openbsd_x86
5355         ;;
5356     x86_64)
5357         CPUNAME=X86_64
5358         RTL_ARCH=X86_64
5359         PLATFORMID=openbsd_x86_64
5360         ;;
5361     *)
5362         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5363         ;;
5364     esac
5365     SOLARINC="$SOLARINC -I/usr/local/include"
5366     ;;
5368 solaris*)
5369     COM=GCC
5370     OS=SOLARIS
5371     RTL_OS=Solaris
5372     P_SEP=:
5374     case "$host_cpu" in
5375     i*86)
5376         CPUNAME=INTEL
5377         RTL_ARCH=x86
5378         PLATFORMID=solaris_x86
5379         ;;
5380     sparc)
5381         CPUNAME=SPARC
5382         RTL_ARCH=SPARC
5383         PLATFORMID=solaris_sparc
5384         ;;
5385     sparc64)
5386         CPUNAME=SPARC64
5387         RTL_ARCH=SPARC64
5388         PLATFORMID=solaris_sparc64
5389         ;;
5390     *)
5391         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5392         ;;
5393     esac
5394     SOLARINC="$SOLARINC -I/usr/local/include"
5395     ;;
5397 emscripten*)
5398     COM=GCC
5399     OS=EMSCRIPTEN
5400     RTL_OS=Emscripten
5401     P_SEP=:
5403     case "$host_cpu" in
5404     wasm32|wasm64)
5405         ;;
5406     *)
5407         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5408         ;;
5409     esac
5410     CPUNAME=INTEL
5411     RTL_ARCH=x86
5412     PLATFORMID=linux_x86
5413     ;;
5416     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5417     ;;
5418 esac
5420 DISABLE_GUI=""
5421 if test "$enable_gui" = "no"; then
5422     if test "$using_x11" != yes; then
5423         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5424     fi
5425     USING_X11=
5426     DISABLE_GUI=TRUE
5427     test_epoxy=no
5428 else
5429     AC_DEFINE(HAVE_FEATURE_UI)
5431 AC_SUBST(DISABLE_GUI)
5433 if test "$with_x" = "no"; then
5434     USING_X11=
5437 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5438     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5441 if test "$using_x11" = yes; then
5442     if test "$USING_X11" = TRUE; then
5443         AC_DEFINE(USING_X11)
5444     else
5445         disable_x11_tests
5446         if test "$DISABLE_DYNLOADING" = TRUE; then
5447             test_qt5=yes
5448         fi
5449     fi
5450 else
5451     if test "$USING_X11" = TRUE; then
5452         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5453     fi
5456 WORKDIR="${BUILDDIR}/workdir"
5457 INSTDIR="${BUILDDIR}/instdir"
5458 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5459 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5460 AC_SUBST(COM)
5461 AC_SUBST(CPUNAME)
5462 AC_SUBST(RTL_OS)
5463 AC_SUBST(RTL_ARCH)
5464 AC_SUBST(EPM_FLAGS)
5465 AC_SUBST(USING_X11)
5466 AC_SUBST([INSTDIR])
5467 AC_SUBST([INSTROOT])
5468 AC_SUBST([INSTROOTBASE])
5469 AC_SUBST(OS)
5470 AC_SUBST(P_SEP)
5471 AC_SUBST(WORKDIR)
5472 AC_SUBST(PLATFORMID)
5473 AC_SUBST(WINDOWS_X64)
5474 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5475 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5477 if test "$OS" = WNT -a "$COM" = MSC; then
5478     case "$CPUNAME" in
5479     INTEL) CPPU_ENV=msci ;;
5480     X86_64) CPPU_ENV=mscx ;;
5481     AARCH64) CPPU_ENV=msca ;;
5482     *)
5483         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5484         ;;
5485     esac
5486 else
5487     CPPU_ENV=gcc3
5489 AC_SUBST(CPPU_ENV)
5491 dnl ===================================================================
5492 dnl Test which package format to use
5493 dnl ===================================================================
5494 AC_MSG_CHECKING([which package format to use])
5495 if test -n "$with_package_format" -a "$with_package_format" != no; then
5496     for i in $with_package_format; do
5497         case "$i" in
5498         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5499             ;;
5500         *)
5501             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5502 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5503 deb - Debian software distribution
5504 pkg - Solaris software distribution
5505 rpm - RedHat software distribution
5507 LibreOffice additionally supports:
5508 archive - .tar.gz or .zip
5509 dmg - macOS .dmg
5510 installed - installation tree
5511 msi - Windows .msi
5512         ])
5513             ;;
5514         esac
5515     done
5516     # fakeroot is needed to ensure correct file ownerships/permissions
5517     # inside deb packages and tar archives created on Linux and Solaris.
5518     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5519         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5520         if test "$FAKEROOT" = "no"; then
5521             AC_MSG_ERROR(
5522                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5523         fi
5524     fi
5525     PKGFORMAT="$with_package_format"
5526     AC_MSG_RESULT([$PKGFORMAT])
5527 else
5528     PKGFORMAT=
5529     AC_MSG_RESULT([none])
5531 AC_SUBST(PKGFORMAT)
5533 dnl ===================================================================
5534 dnl handle help related options
5536 dnl If you change help related options, please update README.help
5537 dnl ===================================================================
5539 ENABLE_HTMLHELP=
5540 HELP_OMINDEX_PAGE=
5541 HELP_ONLINE=
5542 WITH_HELPPACKS=
5544 AC_MSG_CHECKING([which help to build])
5545 if test -n "$with_help" -a "$with_help" != "no"; then
5546     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5547     BUILD_TYPE="$BUILD_TYPE HELP"
5548     case "$with_help" in
5549     "html")
5550         ENABLE_HTMLHELP=TRUE
5551         WITH_HELPPACKS=TRUE
5552         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5553         AC_MSG_RESULT([HTML (local)])
5554         ;;
5555     "online")
5556         ENABLE_HTMLHELP=TRUE
5557         HELP_ONLINE=TRUE
5558         AC_MSG_RESULT([HTML (online)])
5559         ;;
5560     yes)
5561         WITH_HELPPACKS=TRUE
5562         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5563         AC_MSG_RESULT([XML (local)])
5564         ;;
5565     *)
5566         AC_MSG_ERROR([Unknown --with-help=$with_help])
5567         ;;
5568     esac
5569 else
5570     AC_MSG_RESULT([no])
5573 AC_MSG_CHECKING([if we need to build the help index tooling])
5574 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5575     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5576     test_clucene=yes
5577     AC_MSG_RESULT([yes])
5578 else
5579     AC_MSG_RESULT([no])
5582 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5583 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5584     if test "$HELP_ONLINE" != TRUE; then
5585         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5586     fi
5587     case "$with_omindex" in
5588     "server")
5589         HELP_OMINDEX_PAGE=TRUE
5590         AC_MSG_RESULT([SERVER])
5591         ;;
5592     "noxap")
5593         AC_MSG_RESULT([NOXAP])
5594         ;;
5595     *)
5596         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5597         ;;
5598     esac
5599 else
5600     AC_MSG_RESULT([no])
5603 AC_MSG_CHECKING([whether to include the XML-help support])
5604 if test "$enable_xmlhelp" = yes; then
5605     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5606     test_clucene=yes
5607     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5608     AC_MSG_RESULT([yes])
5609 else
5610     if test "$with_help" = yes; then
5611         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5612     fi
5613     AC_MSG_RESULT([no])
5616 dnl Test whether to integrate helppacks into the product's installer
5617 AC_MSG_CHECKING([for helppack integration])
5618 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5619     AC_MSG_RESULT([no integration])
5620 else
5621     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5622     AC_MSG_RESULT([integration])
5625 AC_SUBST([ENABLE_HTMLHELP])
5626 AC_SUBST([HELP_OMINDEX_PAGE])
5627 AC_SUBST([HELP_ONLINE])
5628 # WITH_HELPPACKS is used only in configure
5630 dnl ===================================================================
5631 dnl Set up a different compiler to produce tools to run on the build
5632 dnl machine when doing cross-compilation
5633 dnl ===================================================================
5635 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5636 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5637 if test "$cross_compiling" = "yes"; then
5638     AC_MSG_CHECKING([for BUILD platform configuration])
5639     echo
5640     rm -rf CONF-FOR-BUILD config_build.mk
5641     mkdir CONF-FOR-BUILD
5642     # Here must be listed all files needed when running the configure script. In particular, also
5643     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5644     # keep them in the same order as there.
5645     (cd $SRC_ROOT && tar cf - \
5646         config.guess \
5647         bin/get_config_variables \
5648         solenv/bin/getcompver.awk \
5649         solenv/inc/langlist.mk \
5650         download.lst \
5651         config_host.mk.in \
5652         config_host_lang.mk.in \
5653         Makefile.in \
5654         lo.xcent.in \
5655         bin/bffvalidator.sh.in \
5656         bin/odfvalidator.sh.in \
5657         bin/officeotron.sh.in \
5658         hardened_runtime.xcent.in \
5659         instsetoo_native/util/openoffice.lst.in \
5660         config_host/*.in \
5661         sysui/desktop/macosx/Info.plist.in \
5662         .vscode/vs-code-template.code-workspace.in \
5663         solenv/lockfile/autoconf.h.in \
5664         ) \
5665     | (cd CONF-FOR-BUILD && tar xf -)
5666     cp configure CONF-FOR-BUILD
5667     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5668     (
5669     unset COM USING_X11 OS CPUNAME
5670     unset CC CXX SYSBASE CFLAGS
5671     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5672     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5673     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5674     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5675     if test -n "$CC_FOR_BUILD"; then
5676         export CC="$CC_FOR_BUILD"
5677         CC_BASE=`first_arg_basename "$CC"`
5678     fi
5679     if test -n "$CXX_FOR_BUILD"; then
5680         export CXX="$CXX_FOR_BUILD"
5681         CXX_BASE=`first_arg_basename "$CXX"`
5682     fi
5683     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5684     cd CONF-FOR-BUILD
5686     # Handle host configuration, which affects the cross-toolset too
5687     sub_conf_opts=""
5688     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5689     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5690     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5691     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5692     if test -n "$ENABLE_JAVA"; then
5693         case "$_os" in
5694         Android)
5695             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5696             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5697             ;;
5698         *)
5699             if test -z "$with_jdk_home"; then
5700                 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.])
5701             fi
5702             ;;
5703         esac
5704     else
5705         sub_conf_opts="$sub_conf_opts --without-java"
5706     fi
5707     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5708     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5709     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5710     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5711     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5712     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5713     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5714     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5715     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5716     if test "$_os" = "Emscripten"; then
5717         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5718         if test "${with_main_module+set}" = set; then
5719             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5720         else
5721             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5722         fi
5723     fi
5724     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5725     # when cross-compiling for aarch64, overriding the defaults below
5726     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5728     # Don't bother having configure look for stuff not needed for the build platform anyway
5729     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5730     sub_conf_defaults=" \
5731         --build="$build_alias" \
5732         --disable-cairo-canvas \
5733         --disable-cups \
5734         --disable-customtarget-components \
5735         --disable-firebird-sdbc \
5736         --disable-gpgmepp \
5737         --disable-gstreamer-1-0 \
5738         --disable-gtk3 \
5739         --disable-gtk4 \
5740         --disable-libcmis \
5741         --disable-mariadb-sdbc \
5742         --disable-nss \
5743         --disable-online-update \
5744         --disable-opencl \
5745         --disable-openssl \
5746         --disable-pdfimport \
5747         --disable-postgresql-sdbc \
5748         --disable-skia \
5749         --disable-xmlhelp \
5750         --enable-dynamic-loading \
5751         --enable-icecream="$enable_icecream" \
5752         --without-doxygen \
5753         --without-tls \
5754         --without-webdav \
5755         --without-x \
5757     # single quotes added for better readability in case of spaces
5758     echo "    Running CONF-FOR-BUILD/configure" \
5759         $sub_conf_defaults \
5760         --with-parallelism="'$with_parallelism'" \
5761         --with-theme="'$with_theme'" \
5762         --with-vendor="'$with_vendor'" \
5763         $sub_conf_opts \
5764         $with_build_platform_configure_options \
5765         --srcdir=$srcdir
5767     ./configure \
5768         $sub_conf_defaults \
5769         --with-parallelism="$with_parallelism" \
5770         --with-theme="$with_theme" \
5771         "--with-vendor=$with_vendor" \
5772         $sub_conf_opts \
5773         $with_build_platform_configure_options \
5774         --srcdir=$srcdir \
5775         2>&1 | sed -e 's/^/    /'
5776     if test [${PIPESTATUS[0]}] -ne 0; then
5777         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5778     fi
5780     # filter permitted build targets
5781     PERMITTED_BUILD_TARGETS="
5782         AVMEDIA
5783         BOOST
5784         CAIRO
5785         CLUCENE
5786         CURL
5787         DBCONNECTIVITY
5788         DESKTOP
5789         DRAGONBOX
5790         DYNLOADING
5791         EPOXY
5792         EXPAT
5793         FROZEN
5794         GLM
5795         GRAPHITE
5796         HARFBUZZ
5797         HELPTOOLS
5798         ICU
5799         LCMS2
5800         LIBJPEG_TURBO
5801         LIBLANGTAG
5802         LibO
5803         LIBFFI
5804         LIBPN
5805         LIBTIFF
5806         LIBWEBP
5807         LIBXML2
5808         LIBXSLT
5809         MDDS
5810         NATIVE
5811         OPENSSL
5812         ORCUS
5813         PYTHON
5814         SCRIPTING
5815         ZLIB
5817     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5818     # newlined lists, to use grep as a filter
5819     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5820     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5821     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5822     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5824     cp config_host.mk ../config_build.mk
5825     cp config_host_lang.mk ../config_build_lang.mk
5826     mv config.log ../config.Build.log
5827     mkdir -p ../config_build
5828     mv config_host/*.h ../config_build
5829     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5831     # all these will get a _FOR_BUILD postfix
5832     DIRECT_FOR_BUILD_SETTINGS="
5833         CC
5834         CPPU_ENV
5835         CXX
5836         ILIB
5837         JAVA_HOME
5838         JAVAIFLAGS
5839         JDK
5840         JDK_SECURITYMANAGER_DISALLOWED
5841         LIBO_BIN_FOLDER
5842         LIBO_LIB_FOLDER
5843         LIBO_URE_LIB_FOLDER
5844         LIBO_URE_MISC_FOLDER
5845         OS
5846         SDKDIRNAME
5847         SYSTEM_LIBXML
5848         SYSTEM_LIBXSLT
5850     # these overwrite host config with build config
5851     OVERWRITING_SETTINGS="
5852         ANT
5853         ANT_HOME
5854         ANT_LIB
5855         JAVA_CLASSPATH_NOT_SET
5856         JAVA_SOURCE_VER
5857         JAVA_TARGET_VER
5858         JAVACFLAGS
5859         JAVACOMPILER
5860         JAVADOC
5861         JAVADOCISGJDOC
5862         LOCKFILE
5863         SYSTEM_GENBRK
5864         SYSTEM_GENCCODE
5865         SYSTEM_GENCMN
5867     # these need some special handling
5868     EXTRA_HANDLED_SETTINGS="
5869         INSTDIR
5870         INSTROOT
5871         PATH
5872         WORKDIR
5874     OLD_PATH=$PATH
5875     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5876     BUILD_PATH=$PATH
5877     PATH=$OLD_PATH
5879     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5880     echo "$line" >>build-config
5882     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5883         VV='$'$V
5884         VV=`eval "echo $VV"`
5885         if test -n "$VV"; then
5886             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5887             echo "$line" >>build-config
5888         fi
5889     done
5891     for V in $OVERWRITING_SETTINGS; do
5892         VV='$'$V
5893         VV=`eval "echo $VV"`
5894         if test -n "$VV"; then
5895             line=${V}='${'${V}:-$VV'}'
5896             echo "$line" >>build-config
5897         fi
5898     done
5900     for V in INSTDIR INSTROOT WORKDIR; do
5901         VV='$'$V
5902         VV=`eval "echo $VV"`
5903         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5904         if test -n "$VV"; then
5905             line="${V}_FOR_BUILD='$VV'"
5906             echo "$line" >>build-config
5907         fi
5908     done
5910     )
5911     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5912     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])
5913     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5914              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5916     eval `cat CONF-FOR-BUILD/build-config`
5918     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5920     rm -rf CONF-FOR-BUILD
5921 else
5922     OS_FOR_BUILD="$OS"
5923     CC_FOR_BUILD="$CC"
5924     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5925     CXX_FOR_BUILD="$CXX"
5926     INSTDIR_FOR_BUILD="$INSTDIR"
5927     INSTROOT_FOR_BUILD="$INSTROOT"
5928     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5929     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5930     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5931     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5932     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5933     WORKDIR_FOR_BUILD="$WORKDIR"
5935 AC_SUBST(OS_FOR_BUILD)
5936 AC_SUBST(INSTDIR_FOR_BUILD)
5937 AC_SUBST(INSTROOT_FOR_BUILD)
5938 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5939 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5940 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5941 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5942 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5943 AC_SUBST(WORKDIR_FOR_BUILD)
5944 AC_SUBST(CC_FOR_BUILD)
5945 AC_SUBST(CXX_FOR_BUILD)
5946 AC_SUBST(CPPU_ENV_FOR_BUILD)
5948 dnl ===================================================================
5949 dnl Check for lockfile deps
5950 dnl ===================================================================
5951 if test -z "$CROSS_COMPILING"; then
5952     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5953     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5954     AC_MSG_CHECKING([which lockfile binary to use])
5955     case "$with_system_lockfile" in
5956     yes)
5957         AC_MSG_RESULT([external])
5958         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5959         ;;
5960     no)
5961         AC_MSG_RESULT([internal])
5962         ;;
5963     *)
5964         if test -x "$with_system_lockfile"; then
5965             LOCKFILE="$with_system_lockfile"
5966         else
5967             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5968         fi
5969         AC_MSG_RESULT([$with_system_lockfile])
5970         ;;
5971     esac
5974 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5975     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5978 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5979 AC_CHECK_FUNCS([utime utimes])
5980 AC_SUBST(LOCKFILE)
5982 dnl ===================================================================
5983 dnl Check for syslog header
5984 dnl ===================================================================
5985 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5987 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5988 dnl ===================================================================
5989 AC_MSG_CHECKING([whether to turn warnings to errors])
5990 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5991     ENABLE_WERROR="TRUE"
5992     PYTHONWARNINGS="error"
5993     AC_MSG_RESULT([yes])
5994 else
5995     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5996         ENABLE_WERROR="TRUE"
5997         PYTHONWARNINGS="error"
5998         AC_MSG_RESULT([yes])
5999     else
6000         AC_MSG_RESULT([no])
6001     fi
6003 AC_SUBST(ENABLE_WERROR)
6004 AC_SUBST(PYTHONWARNINGS)
6006 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6007 dnl ===================================================================
6008 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6009 if test -z "$enable_assert_always_abort"; then
6010    if test "$ENABLE_DEBUG" = TRUE; then
6011        enable_assert_always_abort=yes
6012    else
6013        enable_assert_always_abort=no
6014    fi
6016 if test "$enable_assert_always_abort" = "yes"; then
6017     ASSERT_ALWAYS_ABORT="TRUE"
6018     AC_MSG_RESULT([yes])
6019 else
6020     ASSERT_ALWAYS_ABORT="FALSE"
6021     AC_MSG_RESULT([no])
6023 AC_SUBST(ASSERT_ALWAYS_ABORT)
6025 # Determine whether to use ooenv for the instdir installation
6026 # ===================================================================
6027 if test $_os != "WINNT" -a $_os != "Darwin"; then
6028     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6029     if test -z "$enable_ooenv"; then
6030         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6031             enable_ooenv=yes
6032         else
6033             enable_ooenv=no
6034         fi
6035     fi
6036     if test "$enable_ooenv" = "no"; then
6037         AC_MSG_RESULT([no])
6038     else
6039         ENABLE_OOENV="TRUE"
6040         AC_MSG_RESULT([yes])
6041     fi
6043 AC_SUBST(ENABLE_OOENV)
6045 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6046     if test "$enable_qt5" = "no"; then
6047         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6048     else
6049         enable_qt5=yes
6050     fi
6053 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6054 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6055     AC_MSG_RESULT([yes])
6056     ENABLE_PAGEIN=TRUE
6057     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6058 else
6059     AC_MSG_RESULT([no])
6061 AC_SUBST(ENABLE_PAGEIN)
6063 dnl ===================================================================
6064 dnl check for cups support
6065 dnl ===================================================================
6067 AC_MSG_CHECKING([whether to enable CUPS support])
6068 if test "$test_cups" = yes -a "$enable_cups" != no; then
6069     ENABLE_CUPS=TRUE
6070     AC_MSG_RESULT([yes])
6072     AC_MSG_CHECKING([whether cups support is present])
6073     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6074     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6075     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6076         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6077     fi
6078 else
6079     AC_MSG_RESULT([no])
6082 AC_SUBST(ENABLE_CUPS)
6084 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6086 dnl whether to find & fetch external tarballs?
6087 dnl ===================================================================
6088 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6089    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6090        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6091    else
6092        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6093    fi
6095 if test -z "$TARFILE_LOCATION"; then
6096     if test -d "$SRC_ROOT/src" ; then
6097         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6098         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6099     fi
6100     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6101 else
6102     AbsolutePath "$TARFILE_LOCATION"
6103     PathFormat "${absolute_path}"
6104     TARFILE_LOCATION="${formatted_path_unix}"
6106 AC_SUBST(TARFILE_LOCATION)
6108 AC_MSG_CHECKING([whether we want to fetch tarballs])
6109 if test "$enable_fetch_external" != "no"; then
6110     if test "$with_all_tarballs" = "yes"; then
6111         AC_MSG_RESULT([yes, all of them])
6112         DO_FETCH_TARBALLS="ALL"
6113     else
6114         AC_MSG_RESULT([yes, if we use them])
6115         DO_FETCH_TARBALLS="TRUE"
6116     fi
6117 else
6118     AC_MSG_RESULT([no])
6119     DO_FETCH_TARBALLS=
6121 AC_SUBST(DO_FETCH_TARBALLS)
6123 dnl Test whether to include MySpell dictionaries
6124 dnl ===================================================================
6125 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6126 if test "$with_myspell_dicts" = "yes"; then
6127     AC_MSG_RESULT([yes])
6128     WITH_MYSPELL_DICTS=TRUE
6129     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6130     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6131 else
6132     AC_MSG_RESULT([no])
6133     WITH_MYSPELL_DICTS=
6135 AC_SUBST(WITH_MYSPELL_DICTS)
6137 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6138 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6139     if test "$with_system_dicts" = yes; then
6140         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6141     fi
6142     with_system_dicts=no
6145 AC_MSG_CHECKING([whether to use dicts from external paths])
6146 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6147     AC_MSG_RESULT([yes])
6148     SYSTEM_DICTS=TRUE
6149     AC_MSG_CHECKING([for spelling dictionary directory])
6150     if test -n "$with_external_dict_dir"; then
6151         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6152     else
6153         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6154         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6155             DICT_SYSTEM_DIR=file:///usr/share/myspell
6156         fi
6157     fi
6158     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6159     AC_MSG_CHECKING([for hyphenation patterns directory])
6160     if test -n "$with_external_hyph_dir"; then
6161         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6162     else
6163         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6164     fi
6165     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6166     AC_MSG_CHECKING([for thesaurus directory])
6167     if test -n "$with_external_thes_dir"; then
6168         THES_SYSTEM_DIR=file://$with_external_thes_dir
6169     else
6170         THES_SYSTEM_DIR=file:///usr/share/mythes
6171     fi
6172     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6173 else
6174     AC_MSG_RESULT([no])
6175     SYSTEM_DICTS=
6177 AC_SUBST(SYSTEM_DICTS)
6178 AC_SUBST(DICT_SYSTEM_DIR)
6179 AC_SUBST(HYPH_SYSTEM_DIR)
6180 AC_SUBST(THES_SYSTEM_DIR)
6182 dnl ===================================================================
6183 dnl Precompiled headers.
6184 ENABLE_PCH=""
6185 AC_MSG_CHECKING([whether to enable pch feature])
6186 if test -z "$enable_pch"; then
6187     if test "$_os" = "WINNT"; then
6188         # Enabled by default on Windows.
6189         enable_pch=yes
6190         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6191         if test -z "$enable_ccache" -a "$SCCACHE"; then
6192             CCACHE=""
6193         fi
6194     else
6195         enable_pch=no
6196     fi
6198 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6199     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6201 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6202     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6204 if test "$enable_pch" = "system"; then
6205     ENABLE_PCH="1"
6206     AC_MSG_RESULT([yes (system headers)])
6207 elif test "$enable_pch" = "base"; then
6208     ENABLE_PCH="2"
6209     AC_MSG_RESULT([yes (system and base headers)])
6210 elif test "$enable_pch" = "normal"; then
6211     ENABLE_PCH="3"
6212     AC_MSG_RESULT([yes (normal)])
6213 elif test "$enable_pch" = "full"; then
6214     ENABLE_PCH="4"
6215     AC_MSG_RESULT([yes (full)])
6216 elif test "$enable_pch" = "yes"; then
6217     # Pick a suitable default.
6218     if test "$GCC" = "yes"; then
6219         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6220         # while making the PCHs larger and rebuilds more likely.
6221         ENABLE_PCH="2"
6222         AC_MSG_RESULT([yes (system and base headers)])
6223     else
6224         # With MSVC the highest level makes a significant difference,
6225         # and it was the default when there used to be no PCH levels.
6226         ENABLE_PCH="4"
6227         AC_MSG_RESULT([yes (full)])
6228     fi
6229 elif test "$enable_pch" = "no"; then
6230     AC_MSG_RESULT([no])
6231 else
6232     AC_MSG_ERROR([Unknown value for --enable-pch])
6234 AC_SUBST(ENABLE_PCH)
6235 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6236 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6237     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6238     if test "$CCACHE_BIN" != "not found"; then
6239         AC_MSG_CHECKING([ccache version])
6240         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6241         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6242         AC_MSG_RESULT([$CCACHE_VERSION])
6243         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6244         if test "$CCACHE_NUMVER" -gt "030701"; then
6245             AC_MSG_RESULT([yes])
6246         else
6247             AC_MSG_RESULT([no (not newer than 3.7.1)])
6248             CCACHE_DEPEND_MODE=
6249         fi
6250     fi
6253 PCH_INSTANTIATE_TEMPLATES=
6254 if test -n "$ENABLE_PCH"; then
6255     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6256     save_CFLAGS=$CFLAGS
6257     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6258     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6259     CFLAGS=$save_CFLAGS
6260     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6261         AC_MSG_RESULT(yes)
6262     else
6263         AC_MSG_RESULT(no)
6264     fi
6266 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6268 BUILDING_PCH_WITH_OBJ=
6269 if test -n "$ENABLE_PCH"; then
6270     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6271     save_CFLAGS=$CFLAGS
6272     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6273     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6274     CFLAGS=$save_CFLAGS
6275     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6276         AC_MSG_RESULT(yes)
6277     else
6278         AC_MSG_RESULT(no)
6279     fi
6281 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6283 PCH_CODEGEN=
6284 PCH_NO_CODEGEN=
6285 fpch_prefix=
6286 if test "$COM" = MSC; then
6287     fpch_prefix="-Xclang "
6289 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6290     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6291     save_CFLAGS=$CFLAGS
6292     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6293     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6294         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6295     CFLAGS=$save_CFLAGS
6296     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6297     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6298         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6299     CFLAGS=$save_CFLAGS
6300     if test -n "$PCH_CODEGEN"; then
6301         AC_MSG_RESULT(yes)
6302     else
6303         AC_MSG_RESULT(no)
6304     fi
6306 AC_SUBST(PCH_CODEGEN)
6307 AC_SUBST(PCH_NO_CODEGEN)
6308 PCH_DEBUGINFO=
6309 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6310     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6311     save_CFLAGS=$CFLAGS
6312     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6313     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6314     CFLAGS=$save_CFLAGS
6315     if test -n "$PCH_DEBUGINFO"; then
6316         AC_MSG_RESULT(yes)
6317     else
6318         AC_MSG_RESULT(no)
6319     fi
6321 AC_SUBST(PCH_DEBUGINFO)
6323 TAB=`printf '\t'`
6325 AC_MSG_CHECKING([the GNU Make version])
6326 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6327 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6328 if test "$_make_longver" -ge "040000"; then
6329     AC_MSG_RESULT([$GNUMAKE $_make_version])
6330 else
6331     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6334 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6335 STALE_MAKE=
6336 if test "$_make_ver_check" = ""; then
6337    STALE_MAKE=TRUE
6340 HAVE_LD_HASH_STYLE=FALSE
6341 WITH_LINKER_HASH_STYLE=
6342 AC_MSG_CHECKING([for --hash-style gcc linker support])
6343 if test "$GCC" = "yes"; then
6344     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6345         hash_styles="gnu sysv"
6346     elif test "$with_linker_hash_style" = "no"; then
6347         hash_styles=
6348     else
6349         hash_styles="$with_linker_hash_style"
6350     fi
6352     for hash_style in $hash_styles; do
6353         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6354         hash_style_ldflags_save=$LDFLAGS
6355         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6357         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6358             [
6359 #include <stdio.h>
6360             ],[
6361 printf ("");
6362             ])],
6363             [
6364                   HAVE_LD_HASH_STYLE=TRUE
6365                   WITH_LINKER_HASH_STYLE=$hash_style
6366             ],
6367             [HAVE_LD_HASH_STYLE=FALSE],
6368             [HAVE_LD_HASH_STYLE=FALSE])
6369         LDFLAGS=$hash_style_ldflags_save
6370     done
6372     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6373         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6374     else
6375         AC_MSG_RESULT( no )
6376     fi
6377     LDFLAGS=$hash_style_ldflags_save
6378 else
6379     AC_MSG_RESULT( no )
6381 AC_SUBST(HAVE_LD_HASH_STYLE)
6382 AC_SUBST(WITH_LINKER_HASH_STYLE)
6384 dnl ===================================================================
6385 dnl Check whether there's a Perl version available.
6386 dnl ===================================================================
6387 if test -z "$with_perl_home"; then
6388     AC_PATH_PROG(PERL, perl)
6389 else
6390     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6391     _perl_path="$with_perl_home/bin/perl"
6392     if test -x "$_perl_path"; then
6393         PERL=$_perl_path
6394     else
6395         AC_MSG_ERROR([$_perl_path not found])
6396     fi
6399 dnl ===================================================================
6400 dnl Testing for Perl version 5 or greater.
6401 dnl $] is the Perl version variable, it is returned as an integer
6402 dnl ===================================================================
6403 if test "$PERL"; then
6404     AC_MSG_CHECKING([the Perl version])
6405     ${PERL} -e "exit($]);"
6406     _perl_version=$?
6407     if test "$_perl_version" -lt 5; then
6408         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6409     fi
6410     AC_MSG_RESULT([Perl $_perl_version])
6411 else
6412     AC_MSG_ERROR([Perl not found, install Perl 5])
6415 dnl ===================================================================
6416 dnl Testing for required Perl modules
6417 dnl ===================================================================
6419 AC_MSG_CHECKING([for required Perl modules])
6420 perl_use_string="use Cwd ; use Digest::MD5"
6421 if test "$_os" = "WINNT"; then
6422     if test -n "$PKGFORMAT"; then
6423         for i in $PKGFORMAT; do
6424             case "$i" in
6425             msi)
6426                 # for getting fonts versions to use in MSI
6427                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6428                 ;;
6429             esac
6430         done
6431     fi
6433 if test "$with_system_hsqldb" = "yes"; then
6434     perl_use_string="$perl_use_string ; use Archive::Zip"
6436 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6437     # OpenSSL needs that to build
6438     perl_use_string="$perl_use_string ; use FindBin"
6440 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6441     AC_MSG_RESULT([all modules found])
6442 else
6443     AC_MSG_RESULT([failed to find some modules])
6444     # Find out which modules are missing.
6445     for i in $perl_use_string; do
6446         if test "$i" != "use" -a "$i" != ";"; then
6447             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6448                 missing_perl_modules="$missing_perl_modules $i"
6449             fi
6450         fi
6451     done
6452     AC_MSG_ERROR([
6453     The missing Perl modules are: $missing_perl_modules
6454     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6457 dnl ===================================================================
6458 dnl Check for pkg-config
6459 dnl ===================================================================
6460 if test "$_os" != "WINNT"; then
6461     PKG_PROG_PKG_CONFIG
6463 AC_SUBST(PKG_CONFIG)
6464 AC_SUBST(PKG_CONFIG_PATH)
6465 AC_SUBST(PKG_CONFIG_LIBDIR)
6467 if test "$_os" != "WINNT"; then
6469     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6470     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6471     # explicitly. Or put /path/to/compiler in PATH yourself.
6473     toolprefix=gcc
6474     if test "$COM_IS_CLANG" = "TRUE"; then
6475         toolprefix=llvm
6476     fi
6477     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6478     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6479     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6480     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6481     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6482     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6484 AC_SUBST(AR)
6485 AC_SUBST(NM)
6486 AC_SUBST(OBJDUMP)
6487 AC_SUBST(RANLIB)
6488 AC_SUBST(READELF)
6489 AC_SUBST(STRIP)
6491 dnl ===================================================================
6492 dnl pkg-config checks on macOS
6493 dnl ===================================================================
6495 if test $_os = Darwin; then
6496     AC_MSG_CHECKING([for bogus pkg-config])
6497     if test -n "$PKG_CONFIG"; then
6498         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6499             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6500         else
6501             if test "$enable_bogus_pkg_config" = "yes"; then
6502                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6503             else
6504                 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.])
6505             fi
6506         fi
6507     else
6508         AC_MSG_RESULT([no, good])
6509     fi
6512 find_csc()
6514     # Return value: $csctest
6516     unset csctest
6518     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6519     if test -n "$regvalue"; then
6520         csctest=$regvalue
6521         return
6522     fi
6525 find_al()
6527     # Return value: $altest
6529     unset altest
6531     # We need this check to detect 4.6.1 or above.
6532     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6533         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6534         PathFormat "$regvalue"
6535         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6536             altest=$regvalue
6537             return
6538         fi
6539     done
6541     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6542     for x in $reglist; do
6543         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6544         PathFormat "$regvalue"
6545         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6546             altest=$regvalue
6547             return
6548         fi
6549     done
6552 find_dotnetsdk()
6554     unset frametest
6556     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
6557         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6558         if test -n "$regvalue"; then
6559             frametest=$regvalue
6560             return
6561         fi
6562     done
6563     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6566 find_winsdk_version()
6568     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6569     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6571     unset winsdktest winsdkbinsubdir winsdklibsubdir
6573     case "$1" in
6574     8.0|8.0A)
6575         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6576         if test -n "$regvalue"; then
6577             winsdktest=$regvalue
6578             winsdklibsubdir=win8
6579             return
6580         fi
6581         ;;
6582     8.1|8.1A)
6583         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6584         if test -n "$regvalue"; then
6585             winsdktest=$regvalue
6586             winsdklibsubdir=winv6.3
6587             return
6588         fi
6589         ;;
6590     10.0)
6591         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6592         if test -n "$regvalue"; then
6593             winsdktest=$regvalue
6594             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6595             if test -n "$regvalue"; then
6596                 winsdkbinsubdir="$regvalue".0
6597                 winsdklibsubdir=$winsdkbinsubdir
6598                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6599                 local tmppath_unix=$(cygpath -u "$tmppath")
6600                 # test exist the SDK path
6601                 if test -d "$tmppath_unix"; then
6602                    # when path is convertible to a short path then path is okay
6603                    cygpath -d "$tmppath" >/dev/null 2>&1
6604                    if test $? -ne 0; then
6605                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6606                    fi
6607                 else
6608                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6609                 fi
6610             fi
6611             return
6612         fi
6613         ;;
6614     esac
6617 find_winsdk()
6619     # Return value: From find_winsdk_version
6621     unset winsdktest
6623     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6624         find_winsdk_version $ver
6625         if test -n "$winsdktest"; then
6626             return
6627         fi
6628     done
6631 find_msms()
6633     # Return value: $msmdir
6634     local version="$1"
6636     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6637     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6638     local my_msm_dir
6640     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6642     msmdir=
6643     case "$VCVER" in
6644     16.0 | 17.0 | 17.7)
6645         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6646             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6647             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6648             if test -e "$my_msm_dir${my_msm_file}"; then
6649                 msmdir=$my_msm_dir
6650             fi
6651         done
6652         ;;
6653     esac
6655     if test -n "$msmdir"; then
6656         msmdir=`cygpath -m "$msmdir"`
6657         AC_MSG_RESULT([$msmdir])
6658     else
6659         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6660             AC_MSG_FAILURE([not found])
6661         else
6662             AC_MSG_WARN([not found (check config.log)])
6663             add_warning "MSM ${my_msm_file} not found"
6664         fi
6665     fi
6668 find_msvc_x64_dlls()
6670     # Return value: $msvcdllpath, $msvcdlls
6672     AC_MSG_CHECKING([for MSVC x64 DLL path])
6674     dnl Order crtver in increasing order. Then check the directories returned by
6675     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6676     dnl the result will be the highest CRT version found in the highest directory.
6678     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6679     case "$VCVER" in
6680     16.0 | 17.0 | 17.7)
6681         for crtver in 141 142 143; do
6682             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6683                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6684                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6685                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6686                 fi
6687             done
6688         done
6689         ;;
6690     esac
6691     AC_MSG_RESULT([$msvcdllpath])
6692     AC_MSG_CHECKING([for MSVC x64 DLLs])
6693     msvcdlls="msvcp140.dll vcruntime140.dll"
6694     for dll in $msvcdlls; do
6695         if ! test -f "$msvcdllpath/$dll"; then
6696             AC_MSG_FAILURE([missing $dll])
6697         fi
6698     done
6699     AC_MSG_RESULT([found all ($msvcdlls)])
6702 dnl =========================================
6703 dnl Check for the Windows  SDK.
6704 dnl =========================================
6705 if test "$_os" = "WINNT"; then
6706     AC_MSG_CHECKING([for Windows SDK])
6707     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6708         find_winsdk
6709         WINDOWS_SDK_HOME=$winsdktest
6711         # normalize if found
6712         if test -n "$WINDOWS_SDK_HOME"; then
6713             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6714             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6715         fi
6717         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6718     fi
6720     if test -n "$WINDOWS_SDK_HOME"; then
6721         # Remove a possible trailing backslash
6722         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6724         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6725              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6726              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6727             have_windows_sdk_headers=yes
6728         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6729              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6730              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6731             have_windows_sdk_headers=yes
6732         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6733              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6734              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6735             have_windows_sdk_headers=yes
6736         else
6737             have_windows_sdk_headers=no
6738         fi
6740         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6741             have_windows_sdk_libs=yes
6742         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6743             have_windows_sdk_libs=yes
6744         else
6745             have_windows_sdk_libs=no
6746         fi
6748         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6749             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6750 the  Windows SDK are installed.])
6751         fi
6752     fi
6754     if test -z "$WINDOWS_SDK_HOME"; then
6755         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6756     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6757         WINDOWS_SDK_VERSION=80
6758         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6759     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6760         WINDOWS_SDK_VERSION=81
6761         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6762     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6763         WINDOWS_SDK_VERSION=10
6764         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6765     else
6766         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6767     fi
6768     PathFormat "$WINDOWS_SDK_HOME"
6769     WINDOWS_SDK_HOME="$formatted_path"
6770     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6771     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6772         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6773         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6774             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6775         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6776             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6777         fi
6778     fi
6780     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6781     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6782     dnl but not in v8.0), so allow this to be overridden with a
6783     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6784     dnl and configuration error if no WiLangId.vbs is found would arguably be
6785     dnl better, but I do not know under which conditions exactly it is needed by
6786     dnl msiglobal.pm:
6787     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6788         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6789         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6790         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6791             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6792             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6793         fi
6794         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6795             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6796             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6797         fi
6798         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6799             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6800             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6801         fi
6802     fi
6803     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6804         if test -n "$with_package_format" -a "$with_package_format" != no; then
6805             for i in "$with_package_format"; do
6806                 if test "$i" = "msi"; then
6807                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6808                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6809                     fi
6810                 fi
6811             done
6812         fi
6813     fi
6815 AC_SUBST(WINDOWS_SDK_HOME)
6816 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6817 AC_SUBST(WINDOWS_SDK_VERSION)
6818 AC_SUBST(WINDOWS_SDK_WILANGID)
6820 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6821     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6822     dnl dir, it also determines that dir's path w/o an arch segment if any,
6823     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6824     AC_MSG_CHECKING([for midl.exe])
6826     find_winsdk
6827     PathFormat "$winsdktest"
6828     winsdktest_unix="$formatted_path_unix"
6830     if test -n "$winsdkbinsubdir" \
6831         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6832     then
6833         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6834         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6835     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6836         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6837         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6838     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6839         MIDL_PATH=$winsdktest/Bin
6840         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6841     fi
6842     PathFormat "$MIDL_PATH"
6843     if test ! -f "$formatted_path_unix/midl.exe"; then
6844         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6845     else
6846         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6847     fi
6849     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6850     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6852     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6853          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6854          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6855          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6856     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6857          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6858          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6859          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6860     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6861          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6862          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6863          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6864     else
6865         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6866     fi
6868     dnl Check csc.exe
6869     AC_MSG_CHECKING([for csc.exe])
6870     find_csc
6871     PathFormat "$csctest"
6872     csctest_unix="$formatted_path_unix"
6873     if test -f "$csctest_unix/csc.exe"; then
6874         CSC_PATH="$csctest"
6875     fi
6876     if test ! -f "$csctest_unix/csc.exe"; then
6877         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6878     else
6879         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6880     fi
6882     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6884     dnl Check al.exe
6885     AC_MSG_CHECKING([for al.exe])
6886     if test -n "$winsdkbinsubdir" \
6887         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6888     then
6889         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6890     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6891         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6892     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6893         AL_PATH="$winsdktest/Bin"
6894     fi
6896     if test -z "$AL_PATH"; then
6897         find_al
6898         PathFormat "$altest"
6899         altest_unix="$formatted_path_unix"
6900         if test -f "$altest_unix/bin/al.exe"; then
6901             AL_PATH="$altest/bin"
6902         elif test -f "$altest_unix/al.exe"; then
6903             AL_PATH="$altest"
6904         fi
6905     fi
6906     PathFormat "$AL_PATH"
6907     if test ! -f "$formatted_path_unix/al.exe"; then
6908         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6909     else
6910         AC_MSG_RESULT([$AL_PATH/al.exe])
6911     fi
6913     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6915     dnl Check mscoree.lib / .NET Framework dir
6916     AC_MSG_CHECKING(.NET Framework)
6917     find_dotnetsdk
6918     PathFormat "$frametest"
6919     frametest="$formatted_path_unix"
6920     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6921         DOTNET_FRAMEWORK_HOME="$frametest"
6922     else
6923         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6924             DOTNET_FRAMEWORK_HOME="$winsdktest"
6925         fi
6926     fi
6927     PathFormat "$DOTNET_FRAMEWORK_HOME"
6928     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
6929         AC_MSG_ERROR([mscoree.lib not found])
6930     fi
6931     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6933     PathFormat "$MIDL_PATH"
6934     MIDL_PATH="$formatted_path"
6936     PathFormat "$AL_PATH"
6937     AL_PATH="$formatted_path"
6939     PathFormat "$DOTNET_FRAMEWORK_HOME"
6940     DOTNET_FRAMEWORK_HOME="$formatted_path"
6942     PathFormat "$CSC_PATH"
6943     CSC_PATH="$formatted_path"
6946 dnl ===================================================================
6947 dnl Testing for C++ compiler and version...
6948 dnl ===================================================================
6950 if test "$_os" != "WINNT"; then
6951     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6952     save_CXXFLAGS=$CXXFLAGS
6953     AC_PROG_CXX
6954     CXXFLAGS=$save_CXXFLAGS
6955     if test -z "$CXX_BASE"; then
6956         CXX_BASE=`first_arg_basename "$CXX"`
6957     fi
6960 dnl check for GNU C++ compiler version
6961 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6962     AC_MSG_CHECKING([the GNU C++ compiler version])
6964     _gpp_version=`$CXX -dumpversion`
6965     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6967     if test "$_gpp_majmin" -lt "700"; then
6968         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6969     else
6970         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6971     fi
6973     dnl see https://issuetracker.google.com/issues/36962819
6974         glibcxx_threads=no
6975         AC_LANG_PUSH([C++])
6976         AC_REQUIRE_CPP
6977         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6978         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6979             #include <bits/c++config.h>]],[[
6980             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6981             && !defined(_GLIBCXX__PTHREADS) \
6982             && !defined(_GLIBCXX_HAS_GTHREADS)
6983             choke me
6984             #endif
6985         ]])],[AC_MSG_RESULT([yes])
6986         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6987         AC_LANG_POP([C++])
6988         if test $glibcxx_threads = yes; then
6989             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6990         fi
6992 AC_SUBST(BOOST_CXXFLAGS)
6995 # prefx CXX with ccache if needed
6997 if test "$CCACHE" != ""; then
6998     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6999     AC_LANG_PUSH([C++])
7000     save_CXXFLAGS=$CXXFLAGS
7001     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7002     # msvc does not fail on unknown options, check stdout
7003     if test "$COM" = MSC; then
7004         CXXFLAGS="$CXXFLAGS -nologo"
7005     fi
7006     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7007     ac_cxx_werror_flag=yes
7008     dnl an empty program will do, we're checking the compiler flags
7009     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7010                       [use_ccache=yes], [use_ccache=no])
7011     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7012         AC_MSG_RESULT([yes])
7013     else
7014         CXX="$CCACHE $CXX"
7015         CXX_BASE="ccache $CXX_BASE"
7016         AC_MSG_RESULT([no])
7017     fi
7018     CXXFLAGS=$save_CXXFLAGS
7019     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7020     AC_LANG_POP([C++])
7023 dnl ===================================================================
7024 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7025 dnl ===================================================================
7027 if test "$_os" != "WINNT"; then
7028     AC_PROG_CXXCPP
7030     dnl Check whether there's a C pre-processor.
7031     AC_PROG_CPP
7035 dnl ===================================================================
7036 dnl Find integral type sizes and alignments
7037 dnl ===================================================================
7039 if test "$_os" != "WINNT"; then
7041     AC_CHECK_SIZEOF(long)
7042     AC_CHECK_SIZEOF(short)
7043     AC_CHECK_SIZEOF(int)
7044     AC_CHECK_SIZEOF(long long)
7045     AC_CHECK_SIZEOF(double)
7046     AC_CHECK_SIZEOF(void*)
7047     AC_CHECK_SIZEOF(size_t)
7049     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7050     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7051     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7052     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7053     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7054     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7056     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7057     m4_pattern_allow([AC_CHECK_ALIGNOF])
7058     m4_ifdef([AC_CHECK_ALIGNOF],
7059         [
7060             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7061             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7062             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7063             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7064         ],
7065         [
7066             case "$_os-$host_cpu" in
7067             Linux-i686)
7068                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7069                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7070                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7071                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7072                 ;;
7073             Linux-x86_64)
7074                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7075                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7076                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7077                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7078                 ;;
7079             *)
7080                 if test -z "$ac_cv_alignof_short" -o \
7081                         -z "$ac_cv_alignof_int" -o \
7082                         -z "$ac_cv_alignof_long" -o \
7083                         -z "$ac_cv_alignof_double"; then
7084                    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.])
7085                 fi
7086                 ;;
7087             esac
7088         ])
7090     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7091     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7092     if test $ac_cv_sizeof_long -eq 8; then
7093         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7094     elif test $ac_cv_sizeof_double -eq 8; then
7095         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7096     else
7097         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7098     fi
7100     dnl Check for large file support
7101     AC_SYS_LARGEFILE
7102     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7103         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7104     fi
7105     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7106         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7107     fi
7108 else
7109     # Hardcode for MSVC
7110     SAL_TYPES_SIZEOFSHORT=2
7111     SAL_TYPES_SIZEOFINT=4
7112     SAL_TYPES_SIZEOFLONG=4
7113     SAL_TYPES_SIZEOFLONGLONG=8
7114     if test $WIN_HOST_BITS -eq 32; then
7115         SAL_TYPES_SIZEOFPOINTER=4
7116         SIZEOF_SIZE_T=4
7117     else
7118         SAL_TYPES_SIZEOFPOINTER=8
7119         SIZEOF_SIZE_T=8
7120     fi
7121     SAL_TYPES_ALIGNMENT2=2
7122     SAL_TYPES_ALIGNMENT4=4
7123     SAL_TYPES_ALIGNMENT8=8
7124     LFS_CFLAGS=''
7126 AC_SUBST(LFS_CFLAGS)
7127 AC_SUBST(SIZEOF_SIZE_T)
7129 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7130 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7131 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7132 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7133 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7134 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7135 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7136 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7138 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7139 AC_MSG_CHECKING([whether jumbo sheets are supported])
7140 if test "$_os" != "WINNT"; then
7141     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7142         AC_MSG_RESULT([yes])
7143         ENABLE_JUMBO_SHEETS=TRUE
7144         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7145     else
7146         AC_MSG_RESULT([no])
7147     fi
7148 else
7149     if test $WIN_HOST_BITS -gt 32; then
7150         # 64bit windows is special-cased for tools::Long because long is 32bit
7151         AC_MSG_RESULT([yes])
7152         ENABLE_JUMBO_SHEETS=TRUE
7153         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7154     else
7155         AC_MSG_RESULT([no])
7156     fi
7158 AC_SUBST(ENABLE_JUMBO_SHEETS)
7160 dnl ===================================================================
7161 dnl Check whether to enable runtime optimizations
7162 dnl ===================================================================
7163 ENABLE_RUNTIME_OPTIMIZATIONS=
7164 AC_MSG_CHECKING([whether to enable runtime optimizations])
7165 if test -z "$enable_runtime_optimizations"; then
7166     for i in $CC; do
7167         case $i in
7168         -fsanitize=*)
7169             enable_runtime_optimizations=no
7170             break
7171             ;;
7172         esac
7173     done
7175 if test "$enable_runtime_optimizations" != no; then
7176     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7177     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7178     AC_MSG_RESULT([yes])
7179 else
7180     AC_MSG_RESULT([no])
7182 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7184 dnl ===================================================================
7185 dnl Check if valgrind headers are available
7186 dnl ===================================================================
7187 ENABLE_VALGRIND=
7188 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7189     prev_cppflags=$CPPFLAGS
7190     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7191     # or where does it come from?
7192     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7193     AC_CHECK_HEADER([valgrind/valgrind.h],
7194         [ENABLE_VALGRIND=TRUE])
7195     CPPFLAGS=$prev_cppflags
7197 AC_SUBST([ENABLE_VALGRIND])
7198 if test -z "$ENABLE_VALGRIND"; then
7199     if test "$with_valgrind" = yes; then
7200         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7201     fi
7202     VALGRIND_CFLAGS=
7204 AC_SUBST([VALGRIND_CFLAGS])
7207 dnl ===================================================================
7208 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7209 dnl ===================================================================
7211 # We need at least the sys/sdt.h include header.
7212 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7213 if test "$SDT_H_FOUND" = "TRUE"; then
7214     # Found sys/sdt.h header, now make sure the c++ compiler works.
7215     # Old g++ versions had problems with probes in constructors/destructors.
7216     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7217     AC_LANG_PUSH([C++])
7218     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7219     #include <sys/sdt.h>
7220     class ProbeClass
7221     {
7222     private:
7223       int& ref;
7224       const char *name;
7226     public:
7227       ProbeClass(int& v, const char *n) : ref(v), name(n)
7228       {
7229         DTRACE_PROBE2(_test_, cons, name, ref);
7230       }
7232       void method(int min)
7233       {
7234         DTRACE_PROBE3(_test_, meth, name, ref, min);
7235         ref -= min;
7236       }
7238       ~ProbeClass()
7239       {
7240         DTRACE_PROBE2(_test_, dest, name, ref);
7241       }
7242     };
7243     ]],[[
7244     int i = 64;
7245     DTRACE_PROBE1(_test_, call, i);
7246     ProbeClass inst = ProbeClass(i, "call");
7247     inst.method(24);
7248     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7249           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7250     AC_LANG_POP([C++])
7252 AC_CONFIG_HEADERS([config_host/config_probes.h])
7254 dnl ===================================================================
7255 dnl GCC features
7256 dnl ===================================================================
7257 HAVE_GCC_STACK_CLASH_PROTECTION=
7258 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7259     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7260     save_CFLAGS=$CFLAGS
7261     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7262     AC_LINK_IFELSE(
7263         [AC_LANG_PROGRAM(, [[return 0;]])],
7264         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7265         [AC_MSG_RESULT([no])])
7266     CFLAGS=$save_CFLAGS
7268     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7269     save_CFLAGS=$CFLAGS
7270     CFLAGS="$CFLAGS -Werror -mno-avx"
7271     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7272     CFLAGS=$save_CFLAGS
7273     if test "$HAVE_GCC_AVX" = "TRUE"; then
7274         AC_MSG_RESULT([yes])
7275     else
7276         AC_MSG_RESULT([no])
7277     fi
7279     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7280     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7281     int v = 0;
7282     if (__sync_add_and_fetch(&v, 1) != 1 ||
7283         __sync_sub_and_fetch(&v, 1) != 0)
7284         return 1;
7285     __sync_synchronize();
7286     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7287         v != 1)
7288         return 1;
7289     return 0;
7290 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7291     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7292         AC_MSG_RESULT([yes])
7293         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7294     else
7295         AC_MSG_RESULT([no])
7296     fi
7298     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7299     AC_LANG_PUSH([C++])
7300     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7301             #include <cstddef>
7302             #include <cxxabi.h>
7303             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7304         ])], [
7305             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7306             AC_MSG_RESULT([yes])
7307         ], [AC_MSG_RESULT([no])])
7308     AC_LANG_POP([C++])
7310     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7311     AC_LANG_PUSH([C++])
7312     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7313             #include <cstddef>
7314             #include <cxxabi.h>
7315             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7316         ])], [
7317             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7318             AC_MSG_RESULT([yes])
7319         ], [AC_MSG_RESULT([no])])
7320     AC_LANG_POP([C++])
7322     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7323     AC_LANG_PUSH([C++])
7324     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7325             #include <cxxabi.h>
7326             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7327         ])], [
7328             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7329             AC_MSG_RESULT([yes])
7330         ], [AC_MSG_RESULT([no])])
7331     AC_LANG_POP([C++])
7333     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7334     AC_LANG_PUSH([C++])
7335     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7336             #include <cstddef>
7337             #include <cxxabi.h>
7338             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7339         ])], [
7340             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7341             AC_MSG_RESULT([yes])
7342         ], [AC_MSG_RESULT([no])])
7343     AC_LANG_POP([C++])
7345     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7346     AC_LANG_PUSH([C++])
7347     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7348             #include <cstddef>
7349             #include <cxxabi.h>
7350             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7351         ])], [
7352             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7353             AC_MSG_RESULT([yes])
7354         ], [AC_MSG_RESULT([no])])
7355     AC_LANG_POP([C++])
7357     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7358     AC_LANG_PUSH([C++])
7359     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7360             #include <cxxabi.h>
7361             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7362         ])], [
7363             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7364             AC_MSG_RESULT([yes])
7365         ], [AC_MSG_RESULT([no])])
7366     AC_LANG_POP([C++])
7368     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7369     AC_LANG_PUSH([C++])
7370     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7371             #include <cxxabi.h>
7372             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7373         ])], [
7374             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7375             AC_MSG_RESULT([yes])
7376         ], [AC_MSG_RESULT([no])])
7377     AC_LANG_POP([C++])
7379     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7380     AC_LANG_PUSH([C++])
7381     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7382             #include <cxxabi.h>
7383             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7384         ])], [
7385             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7386             AC_MSG_RESULT([yes])
7387         ], [AC_MSG_RESULT([no])])
7388     AC_LANG_POP([C++])
7390     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7391     AC_LANG_PUSH([C++])
7392     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393             #include <cstddef>
7394             #include <cxxabi.h>
7395             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7396         ])], [
7397             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7398             AC_MSG_RESULT([yes])
7399         ], [AC_MSG_RESULT([no])])
7400     AC_LANG_POP([C++])
7402     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7403     AC_LANG_PUSH([C++])
7404     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7405             #include <cstddef>
7406             #include <cxxabi.h>
7407             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7408         ])], [
7409             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7410             AC_MSG_RESULT([yes])
7411         ], [AC_MSG_RESULT([no])])
7412     AC_LANG_POP([C++])
7415 AC_SUBST(HAVE_GCC_AVX)
7416 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7417 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7419 dnl ===================================================================
7420 dnl Identify the C++ library
7421 dnl ===================================================================
7423 AC_MSG_CHECKING([what the C++ library is])
7424 HAVE_LIBSTDCPP=
7425 HAVE_LIBCPP=
7426 AC_LANG_PUSH([C++])
7427 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7428 #include <utility>
7429 #ifndef __GLIBCXX__
7430 foo bar
7431 #endif
7432 ]])],
7433     [CPP_LIBRARY=GLIBCXX
7434      cpp_library_name="GNU libstdc++"
7435      HAVE_LIBSTDCPP=TRUE
7436     ],
7437     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7438 #include <utility>
7439 #ifndef _LIBCPP_VERSION
7440 foo bar
7441 #endif
7442 ]])],
7443     [CPP_LIBRARY=LIBCPP
7444      cpp_library_name="LLVM libc++"
7445      AC_DEFINE([HAVE_LIBCPP])
7446      HAVE_LIBCPP=TRUE
7447     ],
7448     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7449 #include <utility>
7450 #ifndef _MSC_VER
7451 foo bar
7452 #endif
7453 ]])],
7454     [CPP_LIBRARY=MSVCRT
7455      cpp_library_name="Microsoft"
7456     ],
7457     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7458 AC_MSG_RESULT([$cpp_library_name])
7459 AC_LANG_POP([C++])
7460 AC_SUBST([HAVE_LIBSTDCPP])
7461 AC_SUBST([HAVE_LIBCPP])
7463 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7464 then
7465     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7466     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7467     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7468     # although there will be backwards compatibility).
7469     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7470     # and there would be undefined references to debug functions.
7471     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7472     # So check if debug mode can be used and disable or downgrade it to assertions
7473     # if needed.
7474     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7475     AC_LANG_PUSH([C++])
7476     libcpp_debug_links=
7477     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7478 #define _LIBCPP_DEBUG 0 // only assertions
7479 #include <vector>
7480 int main()
7482     std::vector<int> v;
7483     v.push_back( 1 );
7484     return v[ 3 ];
7486 ]])], [libcpp_debug_links=1])
7487     if test -n "$libcpp_debug_links"; then
7488         # we can use at least assertions, check if debug mode works
7489         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7490 #define _LIBCPP_DEBUG 1 // debug mode
7491 #include <string>
7492 #include <vector>
7493 int foo(const std::vector<int>& v) { return *v.begin(); }
7494 int main()
7496     std::vector<int> v;
7497     v.push_back( 1 );
7498     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7499     return (foo(v) + s.size()) != 0 ? 0 : 1;
7501 ]])],
7502         [AC_MSG_RESULT(yes)
7503          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7504         ],
7505         [AC_MSG_RESULT(no, using only assertions)
7506          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7507         ]
7508         )
7509     else
7510         AC_MSG_RESULT(no)
7511     fi
7512     AC_LANG_POP([C++])
7514 AC_SUBST([LIBCPP_DEBUG])
7516 dnl ===================================================================
7517 dnl Check for gperf
7518 dnl ===================================================================
7519 AC_PATH_PROG(GPERF, gperf)
7520 if test -z "$GPERF"; then
7521     AC_MSG_ERROR([gperf not found but needed. Install it.])
7523 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7524     GPERF=`cygpath -m $GPERF`
7526 AC_MSG_CHECKING([whether gperf is new enough])
7527 my_gperf_ver1=$($GPERF --version | head -n 1)
7528 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7529 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7530 if test "$my_gperf_ver3" -ge 301; then
7531     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7532 else
7533     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7535 AC_SUBST(GPERF)
7537 dnl ===================================================================
7538 dnl Check for system libcmis
7539 dnl ===================================================================
7540 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7542 dnl ===================================================================
7543 dnl C++11
7544 dnl ===================================================================
7546 if test -z "${CXXFLAGS_CXX11+x}"; then
7547     AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7548     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7549         if test "$with_latest_c__" = yes; then
7550             CXXFLAGS_CXX11=-std:c++latest
7551         else
7552             CXXFLAGS_CXX11=-std:c++17
7553         fi
7554         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7555     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7556         my_flags='-std=c++17 -std=c++1z'
7557         if test "$with_latest_c__" = yes; then
7558             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7559         fi
7560         for flag in $my_flags; do
7561             if test "$COM" = MSC; then
7562                 flag="-Xclang $flag"
7563             fi
7564             save_CXXFLAGS=$CXXFLAGS
7565             CXXFLAGS="$CXXFLAGS $flag -Werror"
7566             AC_LANG_PUSH([C++])
7567             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7568                 #include <algorithm>
7569                 #include <functional>
7570                 #include <vector>
7572                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7573                     std::sort(v.begin(), v.end(), fn);
7574                 }
7575                 ]])],[CXXFLAGS_CXX11=$flag])
7576             AC_LANG_POP([C++])
7577             CXXFLAGS=$save_CXXFLAGS
7578             if test -n "$CXXFLAGS_CXX11"; then
7579                 break
7580             fi
7581         done
7582     fi
7583     if test -n "$CXXFLAGS_CXX11"; then
7584         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7585     else
7586         AC_MSG_ERROR(no)
7587     fi
7589 AC_SUBST(CXXFLAGS_CXX11)
7591 if test "$GCC" = "yes"; then
7592     save_CXXFLAGS=$CXXFLAGS
7593     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7594     CHECK_L_ATOMIC
7595     CXXFLAGS=$save_CXXFLAGS
7596     AC_SUBST(ATOMIC_LIB)
7599 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7600 save_CXXFLAGS=$CXXFLAGS
7601 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7602 AC_LANG_PUSH([C++])
7604 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7605 #include <stddef.h>
7607 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7609 namespace
7611         struct b
7612         {
7613                 int i;
7614                 int j;
7615         };
7617 ]], [[
7618 struct a
7620         int i;
7621         int j;
7623 a thinga[]={{0,0}, {1,1}};
7624 b thingb[]={{0,0}, {1,1}};
7625 size_t i = sizeof(sal_n_array_size(thinga));
7626 size_t j = sizeof(sal_n_array_size(thingb));
7627 return !(i != 0 && j != 0);
7629     ], [ AC_MSG_RESULT(yes) ],
7630     [ AC_MSG_ERROR(no)])
7631 AC_LANG_POP([C++])
7632 CXXFLAGS=$save_CXXFLAGS
7634 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7635 if test "$GCC" = yes; then
7636     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7637     AC_LANG_PUSH([C++])
7638     save_CXXFLAGS=$CXXFLAGS
7639     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7640     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7641     CXXFLAGS=$save_CXXFLAGS
7642     AC_LANG_POP([C++])
7643     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7644         AC_MSG_RESULT([yes])
7645     else
7646         AC_MSG_RESULT([no])
7647     fi
7649 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7651 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7652 AC_LANG_PUSH([C++])
7653 save_CXXFLAGS=$CXXFLAGS
7654 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7655 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7656         #include <algorithm>
7657         #include <initializer_list>
7658         #include <vector>
7659         template<typename T> class S {
7660         private:
7661             std::vector<T> v_;
7662         public:
7663             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7664         };
7665         constinit S<int> s{3, 2, 1};
7666     ])], [
7667         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7668         AC_MSG_RESULT([yes])
7669     ], [AC_MSG_RESULT([no])])
7670 CXXFLAGS=$save_CXXFLAGS
7671 AC_LANG_POP([C++])
7673 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7674 AC_LANG_PUSH([C++])
7675 save_CXXFLAGS=$CXXFLAGS
7676 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7677 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7678         #include <span>
7679         #include <type_traits>
7680         // Don't check size_type directly, as it was called index_type before P1872R0:
7681         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7682     ])], [
7683         AC_DEFINE([HAVE_CPP_SPAN],[1])
7684         AC_MSG_RESULT([yes])
7685     ], [AC_MSG_RESULT([no])])
7686 CXXFLAGS=$save_CXXFLAGS
7687 AC_LANG_POP([C++])
7689 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7690 AC_LANG_PUSH([C++])
7691 save_CXXFLAGS=$CXXFLAGS
7692 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7693 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7694         struct S1 { S1(S1 &&); };
7695         struct S2: S1 {};
7696         S1 f(S2 s) { return s; }
7697     ])], [
7698         AC_DEFINE([HAVE_P1155R3],[1])
7699         AC_MSG_RESULT([yes])
7700     ], [AC_MSG_RESULT([no])])
7701 CXXFLAGS=$save_CXXFLAGS
7702 AC_LANG_POP([C++])
7704 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7705 HAVE_CXX20_ATOMIC_REF=
7706 AC_LANG_PUSH([C++])
7707 save_CXXFLAGS=$CXXFLAGS
7708 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7709 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7710         #include <atomic>
7711         int x;
7712         std::atomic_ref<int> y(x);
7713     ])], [
7714         HAVE_CXX20_ATOMIC_REF=TRUE
7715         AC_MSG_RESULT([yes])
7716     ], [AC_MSG_RESULT([no])])
7717 CXXFLAGS=$save_CXXFLAGS
7718 AC_LANG_POP([C++])
7719 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7721 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7722 dnl which is included in -Wextra anyway):
7723 HAVE_WDEPRECATED_COPY_DTOR=
7724 if test "$GCC" = yes; then
7725     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7726     AC_LANG_PUSH([C++])
7727     save_CXXFLAGS=$CXXFLAGS
7728     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7729     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7730             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7731             AC_MSG_RESULT([yes])
7732         ], [AC_MSG_RESULT([no])])
7733     CXXFLAGS=$save_CXXFLAGS
7734     AC_LANG_POP([C++])
7736 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7738 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7739 dnl uninitialized warning for code like
7741 dnl   OString f();
7742 dnl   boost::optional<OString> * g(bool b) {
7743 dnl       boost::optional<OString> o;
7744 dnl       if (b) o = f();
7745 dnl       return new boost::optional<OString>(o);
7746 dnl   }
7748 dnl (as is e.g. present, in a slightly more elaborate form, in
7749 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7750 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7751 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7752 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7753     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7754     AC_LANG_PUSH([C++])
7755     save_CXXFLAGS=$CXXFLAGS
7756     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7757     if test "$ENABLE_OPTIMIZED" = TRUE; then
7758         CXXFLAGS="$CXXFLAGS -O2"
7759     else
7760         CXXFLAGS="$CXXFLAGS -O0"
7761     fi
7762     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7763             #include <new>
7764             void f1(int);
7765             struct S1 {
7766                 ~S1() { f1(n); }
7767                 int n = 0;
7768             };
7769             struct S2 {
7770                 S2() {}
7771                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7772                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7773                 void set(S1 s) {
7774                     new (stg) S1(s);
7775                     init = true;
7776                 }
7777                 bool init = false;
7778                 char stg[sizeof (S1)];
7779             } ;
7780             S1 f2();
7781             S2 * f3(bool b) {
7782                 S2 o;
7783                 if (b) o.set(f2());
7784                 return new S2(o);
7785             }
7786         ]])], [AC_MSG_RESULT([no])], [
7787             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7788             AC_MSG_RESULT([yes])
7789         ])
7790     CXXFLAGS=$save_CXXFLAGS
7791     AC_LANG_POP([C++])
7793 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7795 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7796 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7797 dnl hits us e.g. with GCC 10 and --enable-optimized at
7799 dnl   In file included from include/rtl/string.hxx:49,
7800 dnl                    from include/rtl/ustring.hxx:43,
7801 dnl                    from include/osl/file.hxx:35,
7802 dnl                    from include/codemaker/global.hxx:28,
7803 dnl                    from include/codemaker/options.hxx:23,
7804 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7805 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7806 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,
7807 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,
7808 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,
7809 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7810 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7811 dnl      78 |         memcpy( buffer, data, length );
7812 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7813 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7814 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7815     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7816     AC_LANG_PUSH([C++])
7817     save_CXXFLAGS=$CXXFLAGS
7818     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7819     if test "$ENABLE_OPTIMIZED" = TRUE; then
7820         CXXFLAGS="$CXXFLAGS -O2"
7821     else
7822         CXXFLAGS="$CXXFLAGS -O0"
7823     fi
7824     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7825     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7826             void fill(char const * begin, char const * end, char c);
7827             struct q {
7828                 char ids[4];
7829                 char username[6];
7830             };
7831             void test(q & c) {
7832                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7833                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7834             }
7835         ]])], [AC_MSG_RESULT([no])], [
7836             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7837             AC_MSG_RESULT([yes])
7838         ])
7839     CXXFLAGS=$save_CXXFLAGS
7840     AC_LANG_POP([C++])
7842 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7844 HAVE_DLLEXPORTINLINES=
7845 if test "$_os" = "WINNT"; then
7846     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7847     AC_LANG_PUSH([C++])
7848     save_CXXFLAGS=$CXXFLAGS
7849     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7850     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7851             HAVE_DLLEXPORTINLINES=TRUE
7852             AC_MSG_RESULT([yes])
7853         ], [AC_MSG_RESULT([no])])
7854     CXXFLAGS=$save_CXXFLAGS
7855     AC_LANG_POP([C++])
7857 AC_SUBST([HAVE_DLLEXPORTINLINES])
7859 dnl ===================================================================
7860 dnl CPU Intrinsics support - SSE, AVX
7861 dnl ===================================================================
7863 CXXFLAGS_INTRINSICS_SSE2=
7864 CXXFLAGS_INTRINSICS_SSSE3=
7865 CXXFLAGS_INTRINSICS_SSE41=
7866 CXXFLAGS_INTRINSICS_SSE42=
7867 CXXFLAGS_INTRINSICS_AVX=
7868 CXXFLAGS_INTRINSICS_AVX2=
7869 CXXFLAGS_INTRINSICS_AVX512=
7870 CXXFLAGS_INTRINSICS_AVX512F=
7871 CXXFLAGS_INTRINSICS_F16C=
7872 CXXFLAGS_INTRINSICS_FMA=
7874 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7875     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7876     flag_sse2=-msse2
7877     flag_ssse3=-mssse3
7878     flag_sse41=-msse4.1
7879     flag_sse42=-msse4.2
7880     flag_avx=-mavx
7881     flag_avx2=-mavx2
7882     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7883     flag_avx512f=-mavx512f
7884     flag_f16c=-mf16c
7885     flag_fma=-mfma
7886 else
7887     # With MSVC using -arch is in fact not necessary for being able
7888     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7889     # even if compiled with -arch:AVX, the -arch option really only affects
7890     # instructions generated for C/C++ code.
7891     # So use the matching same (or lower) -arch options, but only in order
7892     # to generate the best matching instructions for the C++ code surrounding
7893     # the intrinsics.
7894     # SSE2 is the default for x86/x64, so no need to specify the option.
7895     flag_sse2=
7896     # No specific options for these, use the next lower.
7897     flag_ssse3="$flag_sse2"
7898     flag_sse41="$flag_sse2"
7899     flag_sse42="$flag_sse2"
7900     flag_avx=-arch:AVX
7901     flag_avx2=-arch:AVX2
7902     flag_avx512=-arch:AVX512
7903     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7904     flag_avx512f=-arch:AVX2
7905     # No MSVC options for these.
7906     flag_f16c="$flag_sse2"
7907     flag_fma="$flag_sse2"
7910 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7911 AC_LANG_PUSH([C++])
7912 save_CXXFLAGS=$CXXFLAGS
7913 CXXFLAGS="$CXXFLAGS $flag_sse2"
7914 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7915     #include <emmintrin.h>
7916     int main () {
7917         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7918         c = _mm_xor_si128 (a, b);
7919         return 0;
7920     }
7921     ])],
7922     [can_compile_sse2=yes],
7923     [can_compile_sse2=no])
7924 AC_LANG_POP([C++])
7925 CXXFLAGS=$save_CXXFLAGS
7926 AC_MSG_RESULT([${can_compile_sse2}])
7927 if test "${can_compile_sse2}" = "yes" ; then
7928     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7931 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7932 AC_LANG_PUSH([C++])
7933 save_CXXFLAGS=$CXXFLAGS
7934 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7935 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7936     #include <tmmintrin.h>
7937     int main () {
7938         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7939         c = _mm_maddubs_epi16 (a, b);
7940         return 0;
7941     }
7942     ])],
7943     [can_compile_ssse3=yes],
7944     [can_compile_ssse3=no])
7945 AC_LANG_POP([C++])
7946 CXXFLAGS=$save_CXXFLAGS
7947 AC_MSG_RESULT([${can_compile_ssse3}])
7948 if test "${can_compile_ssse3}" = "yes" ; then
7949     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7952 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7953 AC_LANG_PUSH([C++])
7954 save_CXXFLAGS=$CXXFLAGS
7955 CXXFLAGS="$CXXFLAGS $flag_sse41"
7956 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7957     #include <smmintrin.h>
7958     int main () {
7959         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7960         c = _mm_cmpeq_epi64 (a, b);
7961         return 0;
7962     }
7963     ])],
7964     [can_compile_sse41=yes],
7965     [can_compile_sse41=no])
7966 AC_LANG_POP([C++])
7967 CXXFLAGS=$save_CXXFLAGS
7968 AC_MSG_RESULT([${can_compile_sse41}])
7969 if test "${can_compile_sse41}" = "yes" ; then
7970     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7973 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7974 AC_LANG_PUSH([C++])
7975 save_CXXFLAGS=$CXXFLAGS
7976 CXXFLAGS="$CXXFLAGS $flag_sse42"
7977 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7978     #include <nmmintrin.h>
7979     int main () {
7980         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7981         c = _mm_cmpgt_epi64 (a, b);
7982         return 0;
7983     }
7984     ])],
7985     [can_compile_sse42=yes],
7986     [can_compile_sse42=no])
7987 AC_LANG_POP([C++])
7988 CXXFLAGS=$save_CXXFLAGS
7989 AC_MSG_RESULT([${can_compile_sse42}])
7990 if test "${can_compile_sse42}" = "yes" ; then
7991     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7994 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7995 AC_LANG_PUSH([C++])
7996 save_CXXFLAGS=$CXXFLAGS
7997 CXXFLAGS="$CXXFLAGS $flag_avx"
7998 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7999     #include <immintrin.h>
8000     int main () {
8001         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8002         c = _mm256_xor_ps(a, b);
8003         return 0;
8004     }
8005     ])],
8006     [can_compile_avx=yes],
8007     [can_compile_avx=no])
8008 AC_LANG_POP([C++])
8009 CXXFLAGS=$save_CXXFLAGS
8010 AC_MSG_RESULT([${can_compile_avx}])
8011 if test "${can_compile_avx}" = "yes" ; then
8012     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8015 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8016 AC_LANG_PUSH([C++])
8017 save_CXXFLAGS=$CXXFLAGS
8018 CXXFLAGS="$CXXFLAGS $flag_avx2"
8019 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8020     #include <immintrin.h>
8021     int main () {
8022         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8023         c = _mm256_maddubs_epi16(a, b);
8024         return 0;
8025     }
8026     ])],
8027     [can_compile_avx2=yes],
8028     [can_compile_avx2=no])
8029 AC_LANG_POP([C++])
8030 CXXFLAGS=$save_CXXFLAGS
8031 AC_MSG_RESULT([${can_compile_avx2}])
8032 if test "${can_compile_avx2}" = "yes" ; then
8033     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8036 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8037 AC_LANG_PUSH([C++])
8038 save_CXXFLAGS=$CXXFLAGS
8039 CXXFLAGS="$CXXFLAGS $flag_avx512"
8040 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8041     #include <immintrin.h>
8042     int main () {
8043         __m512i a = _mm512_loadu_si512(0);
8044         __m512d v1 = _mm512_load_pd(0);
8045         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8046         __m512d v2 = _mm512_abs_pd(v1);
8047         return 0;
8048     }
8049     ])],
8050     [can_compile_avx512=yes],
8051     [can_compile_avx512=no])
8052 AC_LANG_POP([C++])
8053 CXXFLAGS=$save_CXXFLAGS
8054 AC_MSG_RESULT([${can_compile_avx512}])
8055 if test "${can_compile_avx512}" = "yes" ; then
8056     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8057     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8060 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8061 AC_LANG_PUSH([C++])
8062 save_CXXFLAGS=$CXXFLAGS
8063 CXXFLAGS="$CXXFLAGS $flag_f16c"
8064 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8065     #include <immintrin.h>
8066     int main () {
8067         __m128i a = _mm_set1_epi32 (0);
8068         __m128 c;
8069         c = _mm_cvtph_ps(a);
8070         return 0;
8071     }
8072     ])],
8073     [can_compile_f16c=yes],
8074     [can_compile_f16c=no])
8075 AC_LANG_POP([C++])
8076 CXXFLAGS=$save_CXXFLAGS
8077 AC_MSG_RESULT([${can_compile_f16c}])
8078 if test "${can_compile_f16c}" = "yes" ; then
8079     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8082 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8083 AC_LANG_PUSH([C++])
8084 save_CXXFLAGS=$CXXFLAGS
8085 CXXFLAGS="$CXXFLAGS $flag_fma"
8086 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8087     #include <immintrin.h>
8088     int main () {
8089         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8090         d = _mm256_fmadd_ps(a, b, c);
8091         return 0;
8092     }
8093     ])],
8094     [can_compile_fma=yes],
8095     [can_compile_fma=no])
8096 AC_LANG_POP([C++])
8097 CXXFLAGS=$save_CXXFLAGS
8098 AC_MSG_RESULT([${can_compile_fma}])
8099 if test "${can_compile_fma}" = "yes" ; then
8100     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8103 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8104 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8105 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8106 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8107 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8108 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8109 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8110 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8111 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8112 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8114 dnl ===================================================================
8115 dnl system stl sanity tests
8116 dnl ===================================================================
8117 if test "$_os" != "WINNT"; then
8119     AC_LANG_PUSH([C++])
8121     save_CPPFLAGS="$CPPFLAGS"
8122     if test -n "$MACOSX_SDK_PATH"; then
8123         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8124     fi
8126     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8127     # only.
8128     if test "$CPP_LIBRARY" = GLIBCXX; then
8129         dnl gcc#19664, gcc#22482, rhbz#162935
8130         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8131         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8132         AC_MSG_RESULT([$stlvisok])
8133         if test "$stlvisok" = "no"; then
8134             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8135         fi
8136     fi
8138     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8139     # when we don't make any dynamic libraries?
8140     if test "$DISABLE_DYNLOADING" = ""; then
8141         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8142         cat > conftestlib1.cc <<_ACEOF
8143 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8144 struct S2: S1<int> { virtual ~S2(); };
8145 S2::~S2() {}
8146 _ACEOF
8147         cat > conftestlib2.cc <<_ACEOF
8148 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8149 struct S2: S1<int> { virtual ~S2(); };
8150 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8151 _ACEOF
8152         gccvisinlineshiddenok=yes
8153         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8154             gccvisinlineshiddenok=no
8155         else
8156             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8157             dnl known to not work with -z defs (unsetting which makes the test
8158             dnl moot, though):
8159             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8160             if test "$COM_IS_CLANG" = TRUE; then
8161                 for i in $CXX $CXXFLAGS; do
8162                     case $i in
8163                     -fsanitize=*)
8164                         my_linkflagsnoundefs=
8165                         break
8166                         ;;
8167                     esac
8168                 done
8169             fi
8170             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8171                 gccvisinlineshiddenok=no
8172             fi
8173         fi
8175         rm -fr libconftest*
8176         AC_MSG_RESULT([$gccvisinlineshiddenok])
8177         if test "$gccvisinlineshiddenok" = "no"; then
8178             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8179         fi
8180     fi
8182    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8183     cat >visibility.cxx <<_ACEOF
8184 #pragma GCC visibility push(hidden)
8185 struct __attribute__ ((visibility ("default"))) TestStruct {
8186   static void Init();
8188 __attribute__ ((visibility ("default"))) void TestFunc() {
8189   TestStruct::Init();
8191 _ACEOF
8192     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8193         gccvisbroken=yes
8194     else
8195         case "$host_cpu" in
8196         i?86|x86_64)
8197             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8198                 gccvisbroken=no
8199             else
8200                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8201                     gccvisbroken=no
8202                 else
8203                     gccvisbroken=yes
8204                 fi
8205             fi
8206             ;;
8207         *)
8208             gccvisbroken=no
8209             ;;
8210         esac
8211     fi
8212     rm -f visibility.s visibility.cxx
8214     AC_MSG_RESULT([$gccvisbroken])
8215     if test "$gccvisbroken" = "yes"; then
8216         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8217     fi
8219     CPPFLAGS="$save_CPPFLAGS"
8221     AC_MSG_CHECKING([if CET endbranch is recognized])
8222 cat > endbr.s <<_ACEOF
8223 endbr32
8224 _ACEOF
8225     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8226     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8227         AC_MSG_RESULT([yes])
8228         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8229     else
8230         AC_MSG_RESULT([no])
8231     fi
8232     rm -f endbr.s endbr.o
8233     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8235     AC_LANG_POP([C++])
8238 dnl ===================================================================
8239 dnl  Clang++ tests
8240 dnl ===================================================================
8242 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8243 if test "$GCC" = "yes"; then
8244     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8245     AC_LANG_PUSH([C++])
8246     save_CXXFLAGS=$CXXFLAGS
8247     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8248     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8249     CXXFLAGS=$save_CXXFLAGS
8250     AC_LANG_POP([C++])
8251     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8252         AC_MSG_RESULT([yes])
8253     else
8254         AC_MSG_RESULT([no])
8255     fi
8257 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8259 dnl ===================================================================
8260 dnl Compiler plugins
8261 dnl ===================================================================
8263 COMPILER_PLUGINS=
8264 # currently only Clang
8266 if test "$COM_IS_CLANG" != "TRUE"; then
8267     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8268         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8269         enable_compiler_plugins=no
8270     fi
8273 COMPILER_PLUGINS_COM_IS_CLANG=
8274 if test "$COM_IS_CLANG" = "TRUE"; then
8275     if test -n "$enable_compiler_plugins"; then
8276         compiler_plugins="$enable_compiler_plugins"
8277     elif test -n "$ENABLE_DBGUTIL"; then
8278         compiler_plugins=test
8279     else
8280         compiler_plugins=no
8281     fi
8282     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8283         if test "$CLANGVER" -lt 120001; then
8284             if test "$compiler_plugins" = yes; then
8285                 AC_MSG_ERROR(
8286                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8287             else
8288                 compiler_plugins=no
8289             fi
8290         fi
8291     fi
8292     if test "$compiler_plugins" != "no"; then
8293         dnl The prefix where Clang resides, override to where Clang resides if
8294         dnl using a source build:
8295         if test -z "$CLANGDIR"; then
8296             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8297         fi
8298         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8299         if test -z "$COMPILER_PLUGINS_CXX"; then
8300             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8301         fi
8302         clangbindir=$CLANGDIR/bin
8303         if test "$build_os" = "cygwin"; then
8304             clangbindir=$(cygpath -u "$clangbindir")
8305         fi
8306         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8307         if test -n "$LLVM_CONFIG"; then
8308             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8309             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8310             if test -z "$CLANGLIBDIR"; then
8311                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8312             fi
8313             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8314             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8315             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8316                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8317                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8318                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8319                 fi
8320             fi
8321             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8322             clangobjdir=$($LLVM_CONFIG --obj-root)
8323             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8324                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8325             fi
8326         fi
8327         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8328         AC_LANG_PUSH([C++])
8329         save_CXX=$CXX
8330         save_CXXCPP=$CXXCPP
8331         save_CPPFLAGS=$CPPFLAGS
8332         save_CXXFLAGS=$CXXFLAGS
8333         save_LDFLAGS=$LDFLAGS
8334         save_LIBS=$LIBS
8335         CXX=$COMPILER_PLUGINS_CXX
8336         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8337         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8338         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8339         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8340             [COMPILER_PLUGINS=TRUE],
8341             [
8342             if test "$compiler_plugins" = "yes"; then
8343                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8344             else
8345                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8346                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8347             fi
8348             ])
8349         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8350         dnl comment in compilerplugins/Makefile-clang.mk:
8351         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8352             LDFLAGS=""
8353             AC_MSG_CHECKING([for clang libraries to use])
8354             if test -z "$CLANGTOOLLIBS"; then
8355                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8356                 AC_LINK_IFELSE([
8357                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8358                         [[ clang::FullSourceLoc().dump(); ]])
8359                 ],[CLANGTOOLLIBS="$LIBS"],[])
8360             fi
8361             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8362             dnl list of individual -lclang* (but note that that list can become outdated over time,
8363             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8364             dnl needs to include -lclangSupport now"):
8365             if test -z "$CLANGTOOLLIBS"; then
8366                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8367  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8368                 AC_LINK_IFELSE([
8369                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8370                         [[ clang::FullSourceLoc().dump(); ]])
8371                 ],[CLANGTOOLLIBS="$LIBS"],[])
8372             fi
8373             AC_MSG_RESULT([$CLANGTOOLLIBS])
8374             if test -z "$CLANGTOOLLIBS"; then
8375                 if test "$compiler_plugins" = "yes"; then
8376                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8377                 else
8378                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8379                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8380                 fi
8381                 COMPILER_PLUGINS=
8382             fi
8383             if test -n "$COMPILER_PLUGINS"; then
8384                 if test -z "$CLANGSYSINCLUDE"; then
8385                     if test -n "$LLVM_CONFIG"; then
8386                         # Path to the clang system headers (no idea if there's a better way to get it).
8387                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8388                     fi
8389                 fi
8390             fi
8391         fi
8392         CXX=$save_CXX
8393         CXXCPP=$save_CXXCPP
8394         CPPFLAGS=$save_CPPFLAGS
8395         CXXFLAGS=$save_CXXFLAGS
8396         LDFLAGS=$save_LDFLAGS
8397         LIBS="$save_LIBS"
8398         AC_LANG_POP([C++])
8400         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8401         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8402             #ifndef __clang__
8403             you lose
8404             #endif
8405             int foo=42;
8406             ]])],
8407             [AC_MSG_RESULT([yes])
8408              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8409             [AC_MSG_RESULT([no])])
8410         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8411     fi
8412 else
8413     if test "$enable_compiler_plugins" = "yes"; then
8414         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8415     fi
8417 COMPILER_PLUGINS_ANALYZER_PCH=
8418 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8419     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8421 AC_SUBST(COMPILER_PLUGINS)
8422 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8423 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8424 AC_SUBST(COMPILER_PLUGINS_CXX)
8425 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8426 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8427 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8428 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8429 AC_SUBST(CLANGDIR)
8430 AC_SUBST(CLANGLIBDIR)
8431 AC_SUBST(CLANGTOOLLIBS)
8432 AC_SUBST(CLANGSYSINCLUDE)
8434 # Plugin to help linker.
8435 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8436 # This makes --enable-lto build with clang work.
8437 AC_SUBST(LD_PLUGIN)
8439 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8440 AC_SUBST(HAVE_POSIX_FALLOCATE)
8442 JITC_PROCESSOR_TYPE=""
8443 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8444     # IBMs JDK needs this...
8445     JITC_PROCESSOR_TYPE=6
8446     export JITC_PROCESSOR_TYPE
8448 AC_SUBST([JITC_PROCESSOR_TYPE])
8450 # Misc Windows Stuff
8451 AC_ARG_WITH(ucrt-dir,
8452     AS_HELP_STRING([--with-ucrt-dir],
8453         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8454         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8455         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8456             Windows6.1-KB2999226-x64.msu
8457             Windows6.1-KB2999226-x86.msu
8458             Windows8.1-KB2999226-x64.msu
8459             Windows8.1-KB2999226-x86.msu
8460             Windows8-RT-KB2999226-x64.msu
8461             Windows8-RT-KB2999226-x86.msu
8462         A zip archive including those files is available from Microsoft site:
8463         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8466 UCRT_REDISTDIR="$with_ucrt_dir"
8467 if test $_os = "WINNT"; then
8468     find_msvc_x64_dlls
8469     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8470     MSVC_DLLS="$msvcdlls"
8471     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8472         with_redist=143
8473     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8474         with_redist=142
8475     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8476         with_redist=141
8477     fi
8478     for i in $PKGFORMAT; do
8479         if test "$i" = msi; then
8480             find_msms "$with_redist"
8481             if test -n "$msmdir"; then
8482                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8483                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8484             fi
8485             break
8486         fi
8487     done
8489     if test "$UCRT_REDISTDIR" = "no"; then
8490         dnl explicitly disabled
8491         UCRT_REDISTDIR=""
8492     else
8493         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8494                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8495                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8496                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8497                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8498                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8499             UCRT_REDISTDIR=""
8500             if test -n "$PKGFORMAT"; then
8501                for i in $PKGFORMAT; do
8502                    case "$i" in
8503                    msi)
8504                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8505                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8506                        ;;
8507                    esac
8508                done
8509             fi
8510         fi
8511     fi
8514 AC_SUBST(UCRT_REDISTDIR)
8515 AC_SUBST(MSVC_DLL_PATH)
8516 AC_SUBST(MSVC_DLLS)
8517 AC_SUBST(MSM_PATH)
8520 dnl ===================================================================
8521 dnl Checks for Java
8522 dnl ===================================================================
8523 if test "$ENABLE_JAVA" != ""; then
8525     # Windows-specific tests
8526     if test "$build_os" = "cygwin"; then
8527         if test -z "$with_jdk_home"; then
8528             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8529             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8530             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8531             if test -n "$regvalue"; then
8532                 ver=$regvalue
8533                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8534                 with_jdk_home=$regvalue
8535             fi
8536             howfound="found automatically"
8537         else
8538             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8539             howfound="you passed"
8540         fi
8542         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8543             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])
8544         fi
8545     fi
8547     # 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.
8548     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8549     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8550         with_jdk_home=`/usr/libexec/java_home`
8551     fi
8553     JAVA_HOME=; export JAVA_HOME
8554     if test -z "$with_jdk_home"; then
8555         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8556     else
8557         _java_path="$with_jdk_home/bin/$with_java"
8558         dnl Check if there is a Java interpreter at all.
8559         if test -x "$_java_path"; then
8560             JAVAINTERPRETER=$_java_path
8561         else
8562             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8563         fi
8564     fi
8566     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8567     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8568     dnl loaded by java to run JunitTests:
8569     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8570         shortjdkhome=`cygpath -d "$with_jdk_home"`
8571         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
8572             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8573             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8574         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
8575             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8576             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8577         fi
8579         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8580             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8581         fi
8582         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8583     elif test "$cross_compiling" != "yes"; then
8584         case $CPUNAME in
8585             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8586                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8587                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8588                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8589                 fi
8590                 ;;
8591             *) # assumption: everything else 32-bit
8592                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8593                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8594                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8595                 fi
8596                 ;;
8597         esac
8598     fi
8601 dnl ===================================================================
8602 dnl Checks for JDK.
8603 dnl ===================================================================
8605 # Whether all the complexity here actually is needed any more or not, no idea.
8607 JDK_SECURITYMANAGER_DISALLOWED=
8608 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8609     _gij_longver=0
8610     AC_MSG_CHECKING([the installed JDK])
8611     if test -n "$JAVAINTERPRETER"; then
8612         dnl java -version sends output to stderr!
8613         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8614             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8615         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8616             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8617         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8618             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8619         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8620             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8621         else
8622             JDK=sun
8624             dnl Sun JDK specific tests
8625             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8626             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8628             if test "$_jdk_ver" -lt 10900; then
8629                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8630             fi
8631             if test "$_jdk_ver" -gt 10900; then
8632                 JAVA_CLASSPATH_NOT_SET=TRUE
8633             fi
8634             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8635             dnl completely removed in some Java version > 18 (see
8636             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8637             if test "$_jdk_ver" -ge 180000; then
8638                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8639             fi
8641             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8642             if test "$_os" = "WINNT"; then
8643                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8644             fi
8645             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8647             # set to limit VM usage for JunitTests
8648             JAVAIFLAGS=-Xmx64M
8649             # set to limit VM usage for javac
8650             JAVACFLAGS=-J-Xmx128M
8651         fi
8652     else
8653         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8654     fi
8655 else
8656     if test -z "$ENABLE_JAVA"; then
8657         dnl Java disabled
8658         JAVA_HOME=
8659         export JAVA_HOME
8660     elif test "$cross_compiling" = "yes"; then
8661         # Just assume compatibility of build and host JDK
8662         JDK=$JDK_FOR_BUILD
8663         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8664     fi
8667 dnl ===================================================================
8668 dnl Checks for javac
8669 dnl ===================================================================
8670 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8671     javacompiler="javac"
8672     : ${JAVA_SOURCE_VER=8}
8673     : ${JAVA_TARGET_VER=8}
8674     if test -z "$with_jdk_home"; then
8675         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8676     else
8677         _javac_path="$with_jdk_home/bin/$javacompiler"
8678         dnl Check if there is a Java compiler at all.
8679         if test -x "$_javac_path"; then
8680             JAVACOMPILER=$_javac_path
8681         fi
8682     fi
8683     if test -z "$JAVACOMPILER"; then
8684         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8685     fi
8686     if test "$build_os" = "cygwin"; then
8687         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8688             JAVACOMPILER="${JAVACOMPILER}.exe"
8689         fi
8690         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8691     fi
8694 dnl ===================================================================
8695 dnl Checks for javadoc
8696 dnl ===================================================================
8697 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8698     if test -z "$with_jdk_home"; then
8699         AC_PATH_PROG(JAVADOC, javadoc)
8700     else
8701         _javadoc_path="$with_jdk_home/bin/javadoc"
8702         dnl Check if there is a javadoc at all.
8703         if test -x "$_javadoc_path"; then
8704             JAVADOC=$_javadoc_path
8705         else
8706             AC_PATH_PROG(JAVADOC, javadoc)
8707         fi
8708     fi
8709     if test -z "$JAVADOC"; then
8710         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8711     fi
8712     if test "$build_os" = "cygwin"; then
8713         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8714             JAVADOC="${JAVADOC}.exe"
8715         fi
8716         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8717     fi
8719     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8720     JAVADOCISGJDOC="yes"
8721     fi
8723 AC_SUBST(JAVADOC)
8724 AC_SUBST(JAVADOCISGJDOC)
8726 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8727     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8728     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8729         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8730            # try to recover first by looking whether we have an alternative
8731            # system as in Debian or newer SuSEs where following /usr/bin/javac
8732            # over /etc/alternatives/javac leads to the right bindir where we
8733            # just need to strip a bit away to get a valid JAVA_HOME
8734            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8735         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8736             # maybe only one level of symlink (e.g. on Mac)
8737             JAVA_HOME=$(readlink $JAVACOMPILER)
8738             if test "$(dirname $JAVA_HOME)" = "."; then
8739                 # we've got no path to trim back
8740                 JAVA_HOME=""
8741             fi
8742         else
8743             # else warn
8744             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8745             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8746             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8747             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8748         fi
8749         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8750         if test "$JAVA_HOME" != "/usr"; then
8751             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8752                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8753                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8754                 dnl Tiger already returns a JDK path...
8755                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8756             else
8757                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8758                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8759                 dnl that checks which version to run
8760                 if test -f "$JAVA_HOME"; then
8761                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8762                 fi
8763             fi
8764         fi
8765     fi
8766     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8768     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8769     if test -z "$JAVA_HOME"; then
8770         if test "x$with_jdk_home" = "x"; then
8771             cat > findhome.java <<_ACEOF
8772 [import java.io.File;
8774 class findhome
8776     public static void main(String args[])
8777     {
8778         String jrelocation = System.getProperty("java.home");
8779         File jre = new File(jrelocation);
8780         System.out.println(jre.getParent());
8781     }
8783 _ACEOF
8784             AC_MSG_CHECKING([if javac works])
8785             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8786             AC_TRY_EVAL(javac_cmd)
8787             if test $? = 0 -a -f ./findhome.class; then
8788                 AC_MSG_RESULT([javac works])
8789             else
8790                 echo "configure: javac test failed" >&5
8791                 cat findhome.java >&5
8792                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8793             fi
8794             AC_MSG_CHECKING([if gij knows its java.home])
8795             JAVA_HOME=`$JAVAINTERPRETER findhome`
8796             if test $? = 0 -a "$JAVA_HOME" != ""; then
8797                 AC_MSG_RESULT([$JAVA_HOME])
8798             else
8799                 echo "configure: java test failed" >&5
8800                 cat findhome.java >&5
8801                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8802             fi
8803             # clean-up after ourselves
8804             rm -f ./findhome.java ./findhome.class
8805         else
8806             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8807         fi
8808     fi
8810     # now check if $JAVA_HOME is really valid
8811     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8812         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8813             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8814             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8815             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8816             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8817             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8818             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8819         fi
8820     fi
8821     PathFormat "$JAVA_HOME"
8822     JAVA_HOME="$formatted_path"
8825 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8826     "$_os" != Darwin
8827 then
8828     AC_MSG_CHECKING([for JAWT lib])
8829     if test "$_os" = WINNT; then
8830         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8831         JAWTLIB=jawt.lib
8832     else
8833         case "$host_cpu" in
8834         arm*)
8835             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8836             JAVA_ARCH=$my_java_arch
8837             ;;
8838         i*86)
8839             my_java_arch=i386
8840             ;;
8841         m68k)
8842             my_java_arch=m68k
8843             ;;
8844         powerpc)
8845             my_java_arch=ppc
8846             ;;
8847         powerpc64)
8848             my_java_arch=ppc64
8849             ;;
8850         powerpc64le)
8851             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8852             JAVA_ARCH=$my_java_arch
8853             ;;
8854         sparc64)
8855             my_java_arch=sparcv9
8856             ;;
8857         x86_64)
8858             my_java_arch=amd64
8859             ;;
8860         *)
8861             my_java_arch=$host_cpu
8862             ;;
8863         esac
8864         # This is where JDK9 puts the library
8865         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8866             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8867         else
8868             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8869         fi
8870         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8871     fi
8872     AC_MSG_RESULT([$JAWTLIB])
8874 AC_SUBST(JAWTLIB)
8876 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8877     case "$host_os" in
8879     cygwin*|wsl*)
8880         JAVAINC="-I$JAVA_HOME/include/win32"
8881         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8882         ;;
8884     darwin*)
8885         if test -d "$JAVA_HOME/include/darwin"; then
8886             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8887         else
8888             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8889         fi
8890         ;;
8892     dragonfly*)
8893         JAVAINC="-I$JAVA_HOME/include"
8894         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8895         ;;
8897     freebsd*)
8898         JAVAINC="-I$JAVA_HOME/include"
8899         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8900         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8901         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8902         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8903         ;;
8905     k*bsd*-gnu*)
8906         JAVAINC="-I$JAVA_HOME/include"
8907         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8908         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8909         ;;
8911     linux-gnu*)
8912         JAVAINC="-I$JAVA_HOME/include"
8913         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8914         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8915         ;;
8917     *netbsd*)
8918         JAVAINC="-I$JAVA_HOME/include"
8919         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8920         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8921        ;;
8923     openbsd*)
8924         JAVAINC="-I$JAVA_HOME/include"
8925         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8926         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8927         ;;
8929     solaris*)
8930         JAVAINC="-I$JAVA_HOME/include"
8931         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8932         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8933         ;;
8934     esac
8936 SOLARINC="$SOLARINC $JAVAINC"
8938 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8939     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8940     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8941     JDK_FOR_BUILD=$JDK
8942     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8945 AC_SUBST(JAVACFLAGS)
8946 AC_SUBST(JAVACOMPILER)
8947 AC_SUBST(JAVAINTERPRETER)
8948 AC_SUBST(JAVAIFLAGS)
8949 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8950 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8951 AC_SUBST(JAVA_HOME)
8952 AC_SUBST(JAVA_HOME_FOR_BUILD)
8953 AC_SUBST(JDK)
8954 AC_SUBST(JDK_FOR_BUILD)
8955 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8956 AC_SUBST(JAVA_SOURCE_VER)
8957 AC_SUBST(JAVA_TARGET_VER)
8960 dnl ===================================================================
8961 dnl Export file validation
8962 dnl ===================================================================
8963 AC_MSG_CHECKING([whether to enable export file validation])
8964 if test "$with_export_validation" != "no"; then
8965     if test -z "$ENABLE_JAVA"; then
8966         if test "$with_export_validation" = "yes"; then
8967             AC_MSG_ERROR([requested, but Java is disabled])
8968         else
8969             AC_MSG_RESULT([no, as Java is disabled])
8970         fi
8971     elif ! test -d "${SRC_ROOT}/schema"; then
8972         if test "$with_export_validation" = "yes"; then
8973             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8974         else
8975             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8976         fi
8977     else
8978         AC_MSG_RESULT([yes])
8979         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8981         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8982         if test -z "$ODFVALIDATOR"; then
8983             # remember to download the ODF toolkit with validator later
8984             AC_MSG_NOTICE([no odfvalidator found, will download it])
8985             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8986             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8988             # and fetch name of odfvalidator jar name from download.lst
8989             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8990             AC_SUBST(ODFVALIDATOR_JAR)
8992             if test -z "$ODFVALIDATOR_JAR"; then
8993                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8994             fi
8995         fi
8996         if test "$build_os" = "cygwin"; then
8997             # In case of Cygwin it will be executed from Windows,
8998             # so we need to run bash and absolute path to validator
8999             # so instead of "odfvalidator" it will be
9000             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9001             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9002         else
9003             ODFVALIDATOR="sh $ODFVALIDATOR"
9004         fi
9005         AC_SUBST(ODFVALIDATOR)
9008         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9009         if test -z "$OFFICEOTRON"; then
9010             # remember to download the officeotron with validator later
9011             AC_MSG_NOTICE([no officeotron found, will download it])
9012             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9013             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9015             # and fetch name of officeotron jar name from download.lst
9016             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9017             AC_SUBST(OFFICEOTRON_JAR)
9019             if test -z "$OFFICEOTRON_JAR"; then
9020                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9021             fi
9022         else
9023             # check version of existing officeotron
9024             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9025             if test 0"$OFFICEOTRON_VER" -lt 704; then
9026                 AC_MSG_ERROR([officeotron too old])
9027             fi
9028         fi
9029         if test "$build_os" = "cygwin"; then
9030             # In case of Cygwin it will be executed from Windows,
9031             # so we need to run bash and absolute path to validator
9032             # so instead of "odfvalidator" it will be
9033             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9034             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9035         else
9036             OFFICEOTRON="sh $OFFICEOTRON"
9037         fi
9038     fi
9039     AC_SUBST(OFFICEOTRON)
9040 else
9041     AC_MSG_RESULT([no])
9044 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9045 if test "$with_bffvalidator" != "no"; then
9046     AC_DEFINE(HAVE_BFFVALIDATOR)
9048     if test "$with_export_validation" = "no"; then
9049         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9050     fi
9052     if test "$with_bffvalidator" = "yes"; then
9053         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9054     else
9055         BFFVALIDATOR="$with_bffvalidator"
9056     fi
9058     if test "$build_os" = "cygwin"; then
9059         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9060             AC_MSG_RESULT($BFFVALIDATOR)
9061         else
9062             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9063         fi
9064     elif test -n "$BFFVALIDATOR"; then
9065         # We are not in Cygwin but need to run Windows binary with wine
9066         AC_PATH_PROGS(WINE, wine)
9068         # so swap in a shell wrapper that converts paths transparently
9069         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9070         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9071         AC_SUBST(BFFVALIDATOR_EXE)
9072         AC_MSG_RESULT($BFFVALIDATOR)
9073     else
9074         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9075     fi
9076     AC_SUBST(BFFVALIDATOR)
9077 else
9078     AC_MSG_RESULT([no])
9081 dnl ===================================================================
9082 dnl Check for epm (not needed for Windows)
9083 dnl ===================================================================
9084 AC_MSG_CHECKING([whether to enable EPM for packing])
9085 if test "$enable_epm" = "yes"; then
9086     AC_MSG_RESULT([yes])
9087     if test "$_os" != "WINNT"; then
9088         if test $_os = Darwin; then
9089             EPM=internal
9090         elif test -n "$with_epm"; then
9091             EPM=$with_epm
9092         else
9093             AC_PATH_PROG(EPM, epm, no)
9094         fi
9095         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9096             AC_MSG_NOTICE([EPM will be built.])
9097             BUILD_TYPE="$BUILD_TYPE EPM"
9098             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9099         else
9100             # Gentoo has some epm which is something different...
9101             AC_MSG_CHECKING([whether the found epm is the right epm])
9102             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9103                 AC_MSG_RESULT([yes])
9104             else
9105                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9106             fi
9107             AC_MSG_CHECKING([epm version])
9108             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9109             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9110                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9111                 AC_MSG_RESULT([OK, >= 3.7])
9112             else
9113                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9114                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9115             fi
9116         fi
9117     fi
9119     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9120         AC_MSG_CHECKING([for rpm])
9121         for a in "$RPM" rpmbuild rpm; do
9122             $a --usage >/dev/null 2> /dev/null
9123             if test $? -eq 0; then
9124                 RPM=$a
9125                 break
9126             else
9127                 $a --version >/dev/null 2> /dev/null
9128                 if test $? -eq 0; then
9129                     RPM=$a
9130                     break
9131                 fi
9132             fi
9133         done
9134         if test -z "$RPM"; then
9135             AC_MSG_ERROR([not found])
9136         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9137             RPM_PATH=`which $RPM`
9138             AC_MSG_RESULT([$RPM_PATH])
9139             SCPDEFS="$SCPDEFS -DWITH_RPM"
9140         else
9141             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9142         fi
9143     fi
9144     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9145         AC_PATH_PROG(DPKG, dpkg, no)
9146         if test "$DPKG" = "no"; then
9147             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9148         fi
9149     fi
9150     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9151        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9152         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9153             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9154                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9155                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9156                     AC_MSG_RESULT([yes])
9157                 else
9158                     AC_MSG_RESULT([no])
9159                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9160                         _pt="rpm"
9161                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9162                         add_warning "the rpms will need to be installed with --nodeps"
9163                     else
9164                         _pt="pkg"
9165                     fi
9166                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9167                     add_warning "the ${_pt}s will not be relocatable"
9168                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9169                                  relocation will work, you need to patch your epm with the
9170                                  patch in epm/epm-3.7.patch or build with
9171                                  --with-epm=internal which will build a suitable epm])
9172                 fi
9173             fi
9174         fi
9175     fi
9176     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9177         AC_PATH_PROG(PKGMK, pkgmk, no)
9178         if test "$PKGMK" = "no"; then
9179             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9180         fi
9181     fi
9182     AC_SUBST(RPM)
9183     AC_SUBST(DPKG)
9184     AC_SUBST(PKGMK)
9185 else
9186     for i in $PKGFORMAT; do
9187         case "$i" in
9188         bsd | deb | pkg | rpm | native | portable)
9189             AC_MSG_ERROR(
9190                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9191             ;;
9192         esac
9193     done
9194     AC_MSG_RESULT([no])
9195     EPM=NO
9197 AC_SUBST(EPM)
9199 ENABLE_LWP=
9200 if test "$enable_lotuswordpro" = "yes"; then
9201     ENABLE_LWP="TRUE"
9203 AC_SUBST(ENABLE_LWP)
9205 dnl ===================================================================
9206 dnl Check for building ODK
9207 dnl ===================================================================
9208 AC_MSG_CHECKING([whether to build the ODK])
9209 if test "$enable_odk" = yes; then
9210     if test "$DISABLE_DYNLOADING" = TRUE; then
9211         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9212     fi
9213     AC_MSG_RESULT([yes])
9214     BUILD_TYPE="$BUILD_TYPE ODK"
9215 else
9216     AC_MSG_RESULT([no])
9219 if test "$enable_odk" != yes; then
9220     unset DOXYGEN
9221 else
9222     if test "$with_doxygen" = no; then
9223         AC_MSG_CHECKING([for doxygen])
9224         unset DOXYGEN
9225         AC_MSG_RESULT([no])
9226     else
9227         if test "$with_doxygen" = yes; then
9228             AC_PATH_PROG([DOXYGEN], [doxygen])
9229             if test -z "$DOXYGEN"; then
9230                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9231             fi
9232             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9233                 if ! dot -V 2>/dev/null; then
9234                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9235                 fi
9236             fi
9237         else
9238             AC_MSG_CHECKING([for doxygen])
9239             DOXYGEN=$with_doxygen
9240             AC_MSG_RESULT([$DOXYGEN])
9241         fi
9242         if test -n "$DOXYGEN"; then
9243             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9244             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9245             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9246                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9247             fi
9248         fi
9249     fi
9251 AC_SUBST([DOXYGEN])
9253 dnl ==================================================================
9254 dnl libfuzzer
9255 dnl ==================================================================
9256 AC_MSG_CHECKING([whether to enable fuzzers])
9257 if test "$enable_fuzzers" != yes; then
9258     AC_MSG_RESULT([no])
9259 else
9260     if test -z $LIB_FUZZING_ENGINE; then
9261       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9262     fi
9263     AC_MSG_RESULT([yes])
9264     ENABLE_FUZZERS="TRUE"
9265     AC_DEFINE([ENABLE_FUZZERS],1)
9266     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9267     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9269 AC_SUBST(LIB_FUZZING_ENGINE)
9271 dnl ===================================================================
9272 dnl Check for system zlib
9273 dnl ===================================================================
9274 if test "$with_system_zlib" = "auto"; then
9275     case "$_os" in
9276     WINNT)
9277         with_system_zlib="$with_system_libs"
9278         ;;
9279     *)
9280         if test "$enable_fuzzers" != "yes"; then
9281             with_system_zlib=yes
9282         else
9283             with_system_zlib=no
9284         fi
9285         ;;
9286     esac
9289 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9290 dnl and has no pkg-config for it at least on some tinderboxes,
9291 dnl so leaving that out for now
9292 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9293 AC_MSG_CHECKING([which zlib to use])
9294 if test "$with_system_zlib" = "yes"; then
9295     AC_MSG_RESULT([external])
9296     SYSTEM_ZLIB=TRUE
9297     AC_CHECK_HEADER(zlib.h, [],
9298         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9299     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9300         [AC_MSG_ERROR(zlib not found or functional)], [])
9301 else
9302     AC_MSG_RESULT([internal])
9303     SYSTEM_ZLIB=
9304     BUILD_TYPE="$BUILD_TYPE ZLIB"
9305     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9306     if test "$COM" = "MSC"; then
9307         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9308     else
9309         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9310     fi
9312 AC_SUBST(ZLIB_CFLAGS)
9313 AC_SUBST(ZLIB_LIBS)
9314 AC_SUBST(SYSTEM_ZLIB)
9316 dnl ===================================================================
9317 dnl Check for system jpeg
9318 dnl ===================================================================
9319 AC_MSG_CHECKING([which libjpeg to use])
9320 if test "$with_system_jpeg" = "yes"; then
9321     AC_MSG_RESULT([external])
9322     SYSTEM_LIBJPEG=TRUE
9323     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9324         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9325     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9326         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9327 else
9328     SYSTEM_LIBJPEG=
9329     AC_MSG_RESULT([internal, libjpeg-turbo])
9330     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9332     case "$host_cpu" in
9333     x86_64 | amd64 | i*86 | x86 | ia32)
9334         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9335         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9336             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9337                 NASM="$LODE_HOME/opt/bin/nasm"
9338             elif test -x "/opt/lo/bin/nasm"; then
9339                 NASM="/opt/lo/bin/nasm"
9340             fi
9341         fi
9343         if test -n "$NASM"; then
9344             AC_MSG_CHECKING([for object file format of host system])
9345             case "$host_os" in
9346               cygwin* | mingw* | pw32* | wsl*)
9347                 case "$host_cpu" in
9348                   x86_64)
9349                     objfmt='Win64-COFF'
9350                     ;;
9351                   *)
9352                     objfmt='Win32-COFF'
9353                     ;;
9354                 esac
9355               ;;
9356               msdosdjgpp* | go32*)
9357                 objfmt='COFF'
9358               ;;
9359               os2-emx*) # not tested
9360                 objfmt='MSOMF' # obj
9361               ;;
9362               linux*coff* | linux*oldld*)
9363                 objfmt='COFF' # ???
9364               ;;
9365               linux*aout*)
9366                 objfmt='a.out'
9367               ;;
9368               linux*)
9369                 case "$host_cpu" in
9370                   x86_64)
9371                     objfmt='ELF64'
9372                     ;;
9373                   *)
9374                     objfmt='ELF'
9375                     ;;
9376                 esac
9377               ;;
9378               kfreebsd* | freebsd* | netbsd* | openbsd*)
9379                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9380                   objfmt='BSD-a.out'
9381                 else
9382                   case "$host_cpu" in
9383                     x86_64 | amd64)
9384                       objfmt='ELF64'
9385                       ;;
9386                     *)
9387                       objfmt='ELF'
9388                       ;;
9389                   esac
9390                 fi
9391               ;;
9392               solaris* | sunos* | sysv* | sco*)
9393                 case "$host_cpu" in
9394                   x86_64)
9395                     objfmt='ELF64'
9396                     ;;
9397                   *)
9398                     objfmt='ELF'
9399                     ;;
9400                 esac
9401               ;;
9402               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9403                 case "$host_cpu" in
9404                   x86_64)
9405                     objfmt='Mach-O64'
9406                     ;;
9407                   *)
9408                     objfmt='Mach-O'
9409                     ;;
9410                 esac
9411               ;;
9412               *)
9413                 objfmt='ELF ?'
9414               ;;
9415             esac
9417             AC_MSG_RESULT([$objfmt])
9418             if test "$objfmt" = 'ELF ?'; then
9419               objfmt='ELF'
9420               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9421             fi
9423             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9424             case "$objfmt" in
9425               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9426               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9427               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9428               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9429               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9430               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9431               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9432               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9433               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9434               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9435               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9436             esac
9437             AC_MSG_RESULT([$NAFLAGS])
9439             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9440             cat > conftest.asm << EOF
9441             [%line __oline__ "configure"
9442                     section .text
9443                     global  _main,main
9444             _main:
9445             main:   xor     eax,eax
9446                     ret
9447             ]
9449             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9450             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9451               AC_MSG_RESULT(yes)
9452             else
9453               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9454               cat conftest.asm >&AS_MESSAGE_LOG_FD
9455               rm -rf conftest*
9456               AC_MSG_RESULT(no)
9457               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9458               NASM=""
9459             fi
9461         fi
9463         if test -z "$NASM"; then
9464 cat << _EOS
9465 ****************************************************************************
9466 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9467 To get one please:
9469 _EOS
9470             if test "$build_os" = "cygwin"; then
9471 cat << _EOS
9472 install a pre-compiled binary for Win32
9474 mkdir -p /opt/lo/bin
9475 cd /opt/lo/bin
9476 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9477 chmod +x nasm
9479 or get and install one from https://www.nasm.us/
9481 Then re-run autogen.sh
9483 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9484 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9486 _EOS
9487             else
9488 cat << _EOS
9489 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9491 _EOS
9492             fi
9493             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9494             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9495         fi
9496       ;;
9497     esac
9500 AC_SUBST(NASM)
9501 AC_SUBST(NAFLAGS)
9502 AC_SUBST(LIBJPEG_CFLAGS)
9503 AC_SUBST(LIBJPEG_LIBS)
9504 AC_SUBST(SYSTEM_LIBJPEG)
9506 dnl ===================================================================
9507 dnl Check for system clucene
9508 dnl ===================================================================
9509 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9510 if test "$SYSTEM_CLUCENE" = TRUE; then
9511     AC_LANG_PUSH([C++])
9512     save_CXXFLAGS=$CXXFLAGS
9513     save_CPPFLAGS=$CPPFLAGS
9514     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9515     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9516     dnl https://sourceforge.net/p/clucene/bugs/200/
9517     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9518     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9519                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9520     CXXFLAGS=$save_CXXFLAGS
9521     CPPFLAGS=$save_CPPFLAGS
9522     AC_LANG_POP([C++])
9523     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9526 dnl ===================================================================
9527 dnl Check for system expat
9528 dnl ===================================================================
9529 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9531 dnl ===================================================================
9532 dnl Check for system xmlsec
9533 dnl ===================================================================
9534 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9536 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9537 if test "$enable_eot" = "yes"; then
9538     ENABLE_EOT="TRUE"
9539     AC_DEFINE([ENABLE_EOT])
9540     AC_MSG_RESULT([yes])
9542     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9543 else
9544     ENABLE_EOT=
9545     AC_MSG_RESULT([no])
9547 AC_SUBST([ENABLE_EOT])
9549 dnl ===================================================================
9550 dnl Check for DLP libs
9551 dnl ===================================================================
9552 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9553 AS_IF([test "$COM" = "MSC"],
9554       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9555       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9557 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9558 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9560 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9562 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9564 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9565 AS_IF([test "$COM" = "MSC"],
9566       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9567       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9569 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9570 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9572 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9574 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9575 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9577 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9579 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9581 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9583 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9584 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9586 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9587 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9589 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9591 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9592 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9594 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9596 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9598 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9600 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9602 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9603 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9605 dnl ===================================================================
9606 dnl Check for system lcms2
9607 dnl ===================================================================
9608 if test "$with_system_lcms2" != "yes"; then
9609     SYSTEM_LCMS2=
9611 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9612 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9613 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9614 if test "$GCC" = "yes"; then
9615     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9617 if test "$COM" = "MSC"; then # override the above
9618     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9621 dnl ===================================================================
9622 dnl Check for system cppunit
9623 dnl ===================================================================
9624 if test "$_os" != "Android" ; then
9625     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9628 dnl ===================================================================
9629 dnl Check whether freetype is available
9631 dnl FreeType has 3 different kinds of versions
9632 dnl * release, like 2.4.10
9633 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9634 dnl * soname
9635 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9637 dnl 9.9.3 is 2.2.0
9638 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9639 dnl ===================================================================
9640 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9641 if test "x$ac_config_site_64bit_host" = xYES; then
9642     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9643 else
9644     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9646 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9648 # ===================================================================
9649 # Check for system libxslt
9650 # to prevent incompatibilities between internal libxml2 and external libxslt,
9651 # or vice versa, use with_system_libxml here
9652 # ===================================================================
9653 if test "$with_system_libxml" = "auto"; then
9654     case "$_os" in
9655     WINNT|iOS|Android)
9656         with_system_libxml="$with_system_libs"
9657         ;;
9658     Emscripten)
9659         with_system_libxml=no
9660         ;;
9661     *)
9662         if test "$enable_fuzzers" != "yes"; then
9663             with_system_libxml=yes
9664         else
9665             with_system_libxml=no
9666         fi
9667         ;;
9668     esac
9671 AC_MSG_CHECKING([which libxslt to use])
9672 if test "$with_system_libxml" = "yes"; then
9673     AC_MSG_RESULT([external])
9674     SYSTEM_LIBXSLT=TRUE
9675     if test "$_os" = "Darwin"; then
9676         dnl make sure to use SDK path
9677         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9678         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9679         dnl omit -L/usr/lib
9680         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9681         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9682     else
9683         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9684         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9685         FilterLibs "${LIBXSLT_LIBS}"
9686         LIBXSLT_LIBS="${filteredlibs}"
9687         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9688         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9689         FilterLibs "${LIBEXSLT_LIBS}"
9690         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9691     fi
9693     dnl Check for xsltproc
9694     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9695     if test "$XSLTPROC" = "no"; then
9696         AC_MSG_ERROR([xsltproc is required])
9697     fi
9698 else
9699     AC_MSG_RESULT([internal])
9700     SYSTEM_LIBXSLT=
9701     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9703 AC_SUBST(SYSTEM_LIBXSLT)
9704 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9705     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9707 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9709 AC_SUBST(LIBEXSLT_CFLAGS)
9710 AC_SUBST(LIBEXSLT_LIBS)
9711 AC_SUBST(LIBXSLT_CFLAGS)
9712 AC_SUBST(LIBXSLT_LIBS)
9713 AC_SUBST(XSLTPROC)
9715 # ===================================================================
9716 # Check for system libxml
9717 # ===================================================================
9718 AC_MSG_CHECKING([which libxml to use])
9719 if test "$with_system_libxml" = "yes"; then
9720     AC_MSG_RESULT([external])
9721     SYSTEM_LIBXML=TRUE
9722     if test "$_os" = "Darwin"; then
9723         dnl make sure to use SDK path
9724         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9725         dnl omit -L/usr/lib
9726         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9727     elif test $_os = iOS; then
9728         dnl make sure to use SDK path
9729         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9730         LIBXML_CFLAGS="-I$usr/include/libxml2"
9731         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9732     else
9733         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9734         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9735         FilterLibs "${LIBXML_LIBS}"
9736         LIBXML_LIBS="${filteredlibs}"
9737     fi
9739     dnl Check for xmllint
9740     AC_PATH_PROG(XMLLINT, xmllint, no)
9741     if test "$XMLLINT" = "no"; then
9742         AC_MSG_ERROR([xmllint is required])
9743     fi
9744 else
9745     AC_MSG_RESULT([internal])
9746     SYSTEM_LIBXML=
9747     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9748     if test "$COM" = "MSC"; then
9749         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9750     fi
9751     if test "$COM" = "MSC"; then
9752         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9753     else
9754         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9755         if test "$DISABLE_DYNLOADING" = TRUE; then
9756             LIBXML_LIBS="$LIBXML_LIBS -lm"
9757         fi
9758     fi
9759     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9761 AC_SUBST(SYSTEM_LIBXML)
9762 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9763     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9765 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9766 AC_SUBST(LIBXML_CFLAGS)
9767 AC_SUBST(LIBXML_LIBS)
9768 AC_SUBST(XMLLINT)
9770 # =====================================================================
9771 # Checking for a Python interpreter with version >= 3.3.
9772 # Optionally user can pass an option to configure, i. e.
9773 # ./configure PYTHON=/usr/bin/python
9774 # =====================================================================
9775 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9776     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9777     # unless PYTHON is defined as above which allows 'system'
9778     enable_python=internal
9780 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9781     if test -n "$PYTHON"; then
9782         PYTHON_FOR_BUILD=$PYTHON
9783     else
9784         # This allows a lack of system python with no error, we use internal one in that case.
9785         AM_PATH_PYTHON([3.3],, [:])
9786         # Clean PYTHON_VERSION checked below if cross-compiling
9787         PYTHON_VERSION=""
9788         if test "$PYTHON" != ":"; then
9789             PYTHON_FOR_BUILD=$PYTHON
9790         fi
9791     fi
9794 # Checks for Python to use for Pyuno
9795 AC_MSG_CHECKING([which Python to use for Pyuno])
9796 case "$enable_python" in
9797 no|disable)
9798     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9799         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9800         # requirement from the choice whether to include Python stuff in the installer, but why
9801         # bother?
9802         AC_MSG_ERROR([Python is required at build time.])
9803     fi
9804     enable_python=no
9805     AC_MSG_RESULT([none])
9806     ;;
9807 ""|yes|auto)
9808     if test "$DISABLE_SCRIPTING" = TRUE; then
9809         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9810             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9811         fi
9812         AC_MSG_RESULT([none, overridden by --disable-scripting])
9813         enable_python=no
9814     elif test $build_os = cygwin -o $build_os = wsl; then
9815         dnl When building on Windows we don't attempt to use any installed
9816         dnl "system"  Python.
9817         AC_MSG_RESULT([fully internal])
9818         enable_python=internal
9819     elif test "$cross_compiling" = yes; then
9820         AC_MSG_RESULT([system])
9821         enable_python=system
9822     else
9823         # Unset variables set by the above AM_PATH_PYTHON so that
9824         # we actually do check anew.
9825         AC_MSG_RESULT([])
9826         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
9827         AM_PATH_PYTHON([3.3],, [:])
9828         AC_MSG_CHECKING([which Python to use for Pyuno])
9829         if test "$PYTHON" = ":"; then
9830             if test -z "$PYTHON_FOR_BUILD"; then
9831                 AC_MSG_RESULT([fully internal])
9832             else
9833                 AC_MSG_RESULT([internal])
9834             fi
9835             enable_python=internal
9836         else
9837             AC_MSG_RESULT([system])
9838             enable_python=system
9839         fi
9840     fi
9841     ;;
9842 internal)
9843     AC_MSG_RESULT([internal])
9844     ;;
9845 fully-internal)
9846     AC_MSG_RESULT([fully internal])
9847     enable_python=internal
9848     ;;
9849 system)
9850     AC_MSG_RESULT([system])
9851     if test "$_os" = Darwin -a -z "$PYTHON"; then
9852         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9853     fi
9854     ;;
9856     AC_MSG_ERROR([Incorrect --enable-python option])
9857     ;;
9858 esac
9860 if test $enable_python != no; then
9861     BUILD_TYPE="$BUILD_TYPE PYUNO"
9864 if test $enable_python = system; then
9865     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9866         # Fallback: Accept these in the environment, or as set above
9867         # for MacOSX.
9868         :
9869     elif test "$cross_compiling" != yes; then
9870         # Unset variables set by the above AM_PATH_PYTHON so that
9871         # we actually do check anew.
9872         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
9873         # This causes an error if no python command is found
9874         AM_PATH_PYTHON([3.3])
9875         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9876         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9877         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9878         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9879         if test -z "$PKG_CONFIG"; then
9880             PYTHON_CFLAGS="-I$python_include"
9881             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9882         elif $PKG_CONFIG --exists python-$python_version-embed; then
9883             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9884             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9885         elif $PKG_CONFIG --exists python-$python_version; then
9886             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9887             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9888         else
9889             PYTHON_CFLAGS="-I$python_include"
9890             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9891         fi
9892         FilterLibs "${PYTHON_LIBS}"
9893         PYTHON_LIBS="${filteredlibs}"
9894     else
9895         dnl How to find out the cross-compilation Python installation path?
9896         AC_MSG_CHECKING([for python version])
9897         AS_IF([test -n "$PYTHON_VERSION"],
9898               [AC_MSG_RESULT([$PYTHON_VERSION])],
9899               [AC_MSG_RESULT([not found])
9900                AC_MSG_ERROR([no usable python found])])
9901         test -n "$PYTHON_CFLAGS" && break
9902     fi
9904     dnl Check if the headers really work
9905     save_CPPFLAGS="$CPPFLAGS"
9906     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9907     AC_CHECK_HEADER(Python.h)
9908     CPPFLAGS="$save_CPPFLAGS"
9910     # let the PYTHON_FOR_BUILD match the same python installation that
9911     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9912     # better for PythonTests.
9913     PYTHON_FOR_BUILD=$PYTHON
9916 if test "$with_lxml" != no; then
9917     if test -z "$PYTHON_FOR_BUILD"; then
9918         case $build_os in
9919             cygwin)
9920                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9921                 ;;
9922             *)
9923                 if test "$cross_compiling" != yes ; then
9924                     BUILD_TYPE="$BUILD_TYPE LXML"
9925                 fi
9926                 ;;
9927         esac
9928     else
9929         AC_MSG_CHECKING([for python lxml])
9930         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9931             AC_MSG_RESULT([yes])
9932         else
9933             case $build_os in
9934                 cygwin)
9935                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9936                     ;;
9937                 *)
9938                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9939                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9940                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9941                         else
9942                             BUILD_TYPE="$BUILD_TYPE LXML"
9943                             AC_MSG_RESULT([no, using internal lxml])
9944                         fi
9945                     else
9946                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9947                     fi
9948                     ;;
9949             esac
9950         fi
9951     fi
9954 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9955     SYSTEM_PYTHON=
9956     PYTHON_VERSION_MAJOR=3
9957     PYTHON_VERSION_MINOR=8
9958     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
9959     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9960         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9961     fi
9962     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9964     # Embedded Python dies without Home set
9965     if test "$HOME" = ""; then
9966         export HOME=""
9967     fi
9970 dnl By now enable_python should be "system", "internal" or "no"
9971 case $enable_python in
9972 system)
9973     SYSTEM_PYTHON=TRUE
9975     if test "x$ac_cv_header_Python_h" != "xyes"; then
9976        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9977     fi
9979     AC_LANG_PUSH(C)
9980     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9981     AC_MSG_CHECKING([for correct python library version])
9982        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9983 #include <Python.h>
9985 int main(int argc, char **argv) {
9986    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9987    else return 1;
9989        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9990     AC_LANG_POP(C)
9992     dnl FIXME Check if the Python library can be linked with, too?
9993     ;;
9995 internal)
9996     BUILD_TYPE="$BUILD_TYPE PYTHON"
9997     if test "$OS" = LINUX -o "$OS" = WNT ; then
9998         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9999     fi
10000     ;;
10002     DISABLE_PYTHON=TRUE
10003     SYSTEM_PYTHON=
10004     ;;
10006     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10007     ;;
10008 esac
10010 AC_SUBST(DISABLE_PYTHON)
10011 AC_SUBST(SYSTEM_PYTHON)
10012 AC_SUBST(PYTHON_CFLAGS)
10013 AC_SUBST(PYTHON_FOR_BUILD)
10014 AC_SUBST(PYTHON_LIBS)
10015 AC_SUBST(PYTHON_VERSION)
10016 AC_SUBST(PYTHON_VERSION_MAJOR)
10017 AC_SUBST(PYTHON_VERSION_MINOR)
10019 AC_MSG_CHECKING([whether to build LibreLogo])
10020 case "$enable_python" in
10021 no|disable)
10022     AC_MSG_RESULT([no; Python disabled])
10023     ;;
10025     if test "${enable_librelogo}" = "no"; then
10026         AC_MSG_RESULT([no])
10027     else
10028         AC_MSG_RESULT([yes])
10029         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10030         AC_DEFINE([ENABLE_LIBRELOGO],1)
10031     fi
10032     ;;
10033 esac
10034 AC_SUBST(ENABLE_LIBRELOGO)
10036 ENABLE_MARIADBC=
10037 MARIADBC_MAJOR=1
10038 MARIADBC_MINOR=0
10039 MARIADBC_MICRO=2
10040 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10041 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10042     ENABLE_MARIADBC=TRUE
10043     AC_MSG_RESULT([yes])
10044     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10045 else
10046     AC_MSG_RESULT([no])
10048 AC_SUBST(ENABLE_MARIADBC)
10049 AC_SUBST(MARIADBC_MAJOR)
10050 AC_SUBST(MARIADBC_MINOR)
10051 AC_SUBST(MARIADBC_MICRO)
10053 if test "$ENABLE_MARIADBC" = "TRUE"; then
10054     dnl ===================================================================
10055     dnl Check for system MariaDB
10056     dnl ===================================================================
10057     AC_MSG_CHECKING([which MariaDB to use])
10058     if test "$with_system_mariadb" = "yes"; then
10059         AC_MSG_RESULT([external])
10060         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10061         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10062         if test -z "$MARIADBCONFIG"; then
10063             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10064             if test -z "$MARIADBCONFIG"; then
10065                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10066                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10067             fi
10068         fi
10069         AC_MSG_CHECKING([MariaDB version])
10070         MARIADB_VERSION=`$MARIADBCONFIG --version`
10071         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10072         if test "$MARIADB_MAJOR" -ge "5"; then
10073             AC_MSG_RESULT([OK])
10074         else
10075             AC_MSG_ERROR([too old, use 5.0.x or later])
10076         fi
10077         AC_MSG_CHECKING([for MariaDB Client library])
10078         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10079         if test "$COM_IS_CLANG" = TRUE; then
10080             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10081         fi
10082         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10083         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10084         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10085         dnl linux32:
10086         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10087             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10088             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10089                 | sed -e 's|/lib64/|/lib/|')
10090         fi
10091         FilterLibs "${MARIADB_LIBS}"
10092         MARIADB_LIBS="${filteredlibs}"
10093         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10094         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10095         if test "$enable_bundle_mariadb" = "yes"; then
10096             AC_MSG_RESULT([yes])
10097             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10098             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10100 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10102 /g' | grep -E '(mysqlclient|mariadb)')
10103             if test "$_os" = "Darwin"; then
10104                 LIBMARIADB=${LIBMARIADB}.dylib
10105             elif test "$_os" = "WINNT"; then
10106                 LIBMARIADB=${LIBMARIADB}.dll
10107             else
10108                 LIBMARIADB=${LIBMARIADB}.so
10109             fi
10110             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10111             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10112             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10113                 AC_MSG_RESULT([found.])
10114                 PathFormat "$LIBMARIADB_PATH"
10115                 LIBMARIADB_PATH="$formatted_path"
10116             else
10117                 AC_MSG_ERROR([not found.])
10118             fi
10119         else
10120             AC_MSG_RESULT([no])
10121             BUNDLE_MARIADB_CONNECTOR_C=
10122         fi
10123     else
10124         AC_MSG_RESULT([internal])
10125         SYSTEM_MARIADB_CONNECTOR_C=
10126         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10127         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10128         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10129     fi
10131     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10132     AC_SUBST(MARIADB_CFLAGS)
10133     AC_SUBST(MARIADB_LIBS)
10134     AC_SUBST(LIBMARIADB)
10135     AC_SUBST(LIBMARIADB_PATH)
10136     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10139 dnl ===================================================================
10140 dnl Check for system hsqldb
10141 dnl ===================================================================
10142 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10143     AC_MSG_CHECKING([which hsqldb to use])
10144     if test "$with_system_hsqldb" = "yes"; then
10145         AC_MSG_RESULT([external])
10146         SYSTEM_HSQLDB=TRUE
10147         if test -z $HSQLDB_JAR; then
10148             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10149         fi
10150         if ! test -f $HSQLDB_JAR; then
10151                AC_MSG_ERROR(hsqldb.jar not found.)
10152         fi
10153         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10154         export HSQLDB_JAR
10155         if $PERL -e \
10156            'use Archive::Zip;
10157             my $file = "$ENV{'HSQLDB_JAR'}";
10158             my $zip = Archive::Zip->new( $file );
10159             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10160             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10161             {
10162                 push @l, split(/\n/, $mf);
10163                 foreach my $line (@l)
10164                 {
10165                     if ($line =~ m/Specification-Version:/)
10166                     {
10167                         ($t, $version) = split (/:/,$line);
10168                         $version =~ s/^\s//;
10169                         ($a, $b, $c, $d) = split (/\./,$version);
10170                         if ($c == "0" && $d > "8")
10171                         {
10172                             exit 0;
10173                         }
10174                         else
10175                         {
10176                             exit 1;
10177                         }
10178                     }
10179                 }
10180             }
10181             else
10182             {
10183                 exit 1;
10184             }'; then
10185             AC_MSG_RESULT([yes])
10186         else
10187             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10188         fi
10189     else
10190         AC_MSG_RESULT([internal])
10191         SYSTEM_HSQLDB=
10192         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10193         NEED_ANT=TRUE
10194     fi
10195 else
10196     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10197         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10198     fi
10200 AC_SUBST(SYSTEM_HSQLDB)
10201 AC_SUBST(HSQLDB_JAR)
10203 dnl ===================================================================
10204 dnl Check for PostgreSQL stuff
10205 dnl ===================================================================
10206 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10207 if test "x$enable_postgresql_sdbc" != "xno"; then
10208     AC_MSG_RESULT([yes])
10209     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10211     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10212         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10213     fi
10214     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10215         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10216     fi
10218     postgres_interface=""
10219     if test "$with_system_postgresql" = "yes"; then
10220         postgres_interface="external PostgreSQL"
10221         SYSTEM_POSTGRESQL=TRUE
10222         if test "$_os" = Darwin; then
10223             supp_path=''
10224             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10225                 pg_supp_path="$P_SEP$d$pg_supp_path"
10226             done
10227         fi
10228         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10229         if test -n "$PGCONFIG"; then
10230             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10231             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10232         else
10233             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10234               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10235               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10236             ],[
10237               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10238             ])
10239         fi
10240         FilterLibs "${POSTGRESQL_LIB}"
10241         POSTGRESQL_LIB="${filteredlibs}"
10242     else
10243         # if/when anything else than PostgreSQL uses Kerberos,
10244         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10245         WITH_KRB5=
10246         WITH_GSSAPI=
10247         case "$_os" in
10248         Darwin)
10249             # macOS has system MIT Kerberos 5 since 10.4
10250             if test "$with_krb5" != "no"; then
10251                 WITH_KRB5=TRUE
10252                 save_LIBS=$LIBS
10253                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10254                 # that the libraries where these functions are located on macOS will change, is it?
10255                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10256                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10257                 KRB5_LIBS=$LIBS
10258                 LIBS=$save_LIBS
10259                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10260                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10261                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10262                 LIBS=$save_LIBS
10263             fi
10264             if test "$with_gssapi" != "no"; then
10265                 WITH_GSSAPI=TRUE
10266                 save_LIBS=$LIBS
10267                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10268                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10269                 GSSAPI_LIBS=$LIBS
10270                 LIBS=$save_LIBS
10271             fi
10272             ;;
10273         WINNT)
10274             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10275                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10276             fi
10277             ;;
10278         Linux|GNU|*BSD|DragonFly)
10279             if test "$with_krb5" != "no"; then
10280                 WITH_KRB5=TRUE
10281                 save_LIBS=$LIBS
10282                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10283                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10284                 KRB5_LIBS=$LIBS
10285                 LIBS=$save_LIBS
10286                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10287                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10288                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10289                 LIBS=$save_LIBS
10290             fi
10291             if test "$with_gssapi" != "no"; then
10292                 WITH_GSSAPI=TRUE
10293                 save_LIBS=$LIBS
10294                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10295                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10296                 GSSAPI_LIBS=$LIBS
10297                 LIBS=$save_LIBS
10298             fi
10299             ;;
10300         *)
10301             if test "$with_krb5" = "yes"; then
10302                 WITH_KRB5=TRUE
10303                 save_LIBS=$LIBS
10304                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10305                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10306                 KRB5_LIBS=$LIBS
10307                 LIBS=$save_LIBS
10308                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10309                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10310                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10311                 LIBS=$save_LIBS
10312             fi
10313             if test "$with_gssapi" = "yes"; then
10314                 WITH_GSSAPI=TRUE
10315                 save_LIBS=$LIBS
10316                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10317                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10318                 LIBS=$save_LIBS
10319                 GSSAPI_LIBS=$LIBS
10320             fi
10321         esac
10323         if test -n "$with_libpq_path"; then
10324             SYSTEM_POSTGRESQL=TRUE
10325             postgres_interface="external libpq"
10326             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10327             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10328         else
10329             SYSTEM_POSTGRESQL=
10330             postgres_interface="internal"
10331             POSTGRESQL_LIB=""
10332             POSTGRESQL_INC="%OVERRIDE_ME%"
10333             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10334         fi
10335     fi
10337     AC_MSG_CHECKING([PostgreSQL C interface])
10338     AC_MSG_RESULT([$postgres_interface])
10340     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10341         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10342         save_CFLAGS=$CFLAGS
10343         save_CPPFLAGS=$CPPFLAGS
10344         save_LIBS=$LIBS
10345         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10346         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10347         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10348         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10349             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10350         CFLAGS=$save_CFLAGS
10351         CPPFLAGS=$save_CPPFLAGS
10352         LIBS=$save_LIBS
10353     fi
10354     BUILD_POSTGRESQL_SDBC=TRUE
10355 else
10356     AC_MSG_RESULT([no])
10358 AC_SUBST(WITH_KRB5)
10359 AC_SUBST(WITH_GSSAPI)
10360 AC_SUBST(GSSAPI_LIBS)
10361 AC_SUBST(KRB5_LIBS)
10362 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10363 AC_SUBST(SYSTEM_POSTGRESQL)
10364 AC_SUBST(POSTGRESQL_INC)
10365 AC_SUBST(POSTGRESQL_LIB)
10367 dnl ===================================================================
10368 dnl Check for Firebird stuff
10369 dnl ===================================================================
10370 ENABLE_FIREBIRD_SDBC=
10371 if test "$enable_firebird_sdbc" = "yes" ; then
10372     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10374     dnl ===================================================================
10375     dnl Check for system Firebird
10376     dnl ===================================================================
10377     AC_MSG_CHECKING([which Firebird to use])
10378     if test "$with_system_firebird" = "yes"; then
10379         AC_MSG_RESULT([external])
10380         SYSTEM_FIREBIRD=TRUE
10381         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10382         if test -z "$FIREBIRDCONFIG"; then
10383             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10384             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10385                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10386             ])
10387             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10388         else
10389             AC_MSG_NOTICE([fb_config found])
10390             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10391             AC_MSG_CHECKING([for Firebird Client library])
10392             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10393             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10394             FilterLibs "${FIREBIRD_LIBS}"
10395             FIREBIRD_LIBS="${filteredlibs}"
10396         fi
10397         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10398         AC_MSG_CHECKING([Firebird version])
10399         if test -n "${FIREBIRD_VERSION}"; then
10400             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10401             if test "$FIREBIRD_MAJOR" -ge "3"; then
10402                 AC_MSG_RESULT([OK])
10403             else
10404                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10405             fi
10406         else
10407             save_CFLAGS="${CFLAGS}"
10408             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10409             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10410 #if defined(FB_API_VER) && FB_API_VER == 30
10411 int fb_api_is_30(void) { return 0; }
10412 #else
10413 #error "Wrong Firebird API version"
10414 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10415             CFLAGS="$save_CFLAGS"
10416         fi
10417         ENABLE_FIREBIRD_SDBC=TRUE
10418         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10419     elif test "$enable_database_connectivity" = no; then
10420         AC_MSG_RESULT([none])
10421     elif test "$cross_compiling" = "yes"; then
10422         AC_MSG_RESULT([none])
10423     else
10424         dnl Embedded Firebird has version 3.0
10425         dnl We need libatomic_ops for any non X86/X64 system
10426         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10427             dnl ===================================================================
10428             dnl Check for system libatomic_ops
10429             dnl ===================================================================
10430             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10431             if test "$with_system_libatomic_ops" = "yes"; then
10432                 SYSTEM_LIBATOMIC_OPS=TRUE
10433                 AC_CHECK_HEADERS(atomic_ops.h, [],
10434                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10435             else
10436                 SYSTEM_LIBATOMIC_OPS=
10437                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10438                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10439                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10440             fi
10441         fi
10443         AC_MSG_RESULT([internal])
10444         SYSTEM_FIREBIRD=
10445         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10446         FIREBIRD_LIBS="-lfbclient"
10448         if test "$with_system_libtommath" = "yes"; then
10449             SYSTEM_LIBTOMMATH=TRUE
10450             dnl check for tommath presence
10451             save_LIBS=$LIBS
10452             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10453             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10454             LIBS=$save_LIBS
10455         else
10456             SYSTEM_LIBTOMMATH=
10457             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10458             LIBTOMMATH_LIBS="-ltommath"
10459             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10460         fi
10462         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10463         ENABLE_FIREBIRD_SDBC=TRUE
10464         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10465     fi
10467 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10468 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10469 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10470 AC_SUBST(LIBATOMIC_OPS_LIBS)
10471 AC_SUBST(SYSTEM_FIREBIRD)
10472 AC_SUBST(FIREBIRD_CFLAGS)
10473 AC_SUBST(FIREBIRD_LIBS)
10474 AC_SUBST(SYSTEM_LIBTOMMATH)
10475 AC_SUBST(LIBTOMMATH_CFLAGS)
10476 AC_SUBST(LIBTOMMATH_LIBS)
10478 dnl ===================================================================
10479 dnl Check for system curl
10480 dnl ===================================================================
10481 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10483 dnl ===================================================================
10484 dnl Check for system boost
10485 dnl ===================================================================
10486 AC_MSG_CHECKING([which boost to use])
10487 if test "$with_system_boost" = "yes"; then
10488     AC_MSG_RESULT([external])
10489     SYSTEM_BOOST=TRUE
10490     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10491     AX_BOOST_DATE_TIME
10492     AX_BOOST_FILESYSTEM
10493     AX_BOOST_IOSTREAMS
10494     AX_BOOST_LOCALE
10495     AC_LANG_PUSH([C++])
10496     save_CXXFLAGS=$CXXFLAGS
10497     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10498     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10499        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10500     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10501        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10502     CXXFLAGS=$save_CXXFLAGS
10503     AC_LANG_POP([C++])
10504     # this is in m4/ax_boost_base.m4
10505     FilterLibs "${BOOST_LDFLAGS}"
10506     BOOST_LDFLAGS="${filteredlibs}"
10507 else
10508     AC_MSG_RESULT([internal])
10509     BUILD_TYPE="$BUILD_TYPE BOOST"
10510     SYSTEM_BOOST=
10511     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10512         # use warning-suppressing wrapper headers
10513         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10514     else
10515         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10516     fi
10518 AC_SUBST(SYSTEM_BOOST)
10520 dnl ===================================================================
10521 dnl Check for system mdds
10522 dnl ===================================================================
10523 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10524 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10526 dnl ===================================================================
10527 dnl Check for system dragonbox
10528 dnl ===================================================================
10529 AC_MSG_CHECKING([which dragonbox to use])
10530 if test "$with_system_dragonbox" = "yes"; then
10531     AC_MSG_RESULT([external])
10532     SYSTEM_DRAGONBOX=TRUE
10533     AC_LANG_PUSH([C++])
10534     save_CPPFLAGS=$CPPFLAGS
10535     # This is where upstream installs to, unfortunately no .pc or so...
10536     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10537     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10538     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10539        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10540     AC_LANG_POP([C++])
10541     CPPFLAGS=$save_CPPFLAGS
10542 else
10543     AC_MSG_RESULT([internal])
10544     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10545     SYSTEM_DRAGONBOX=
10547 AC_SUBST([SYSTEM_DRAGONBOX])
10548 AC_SUBST([DRAGONBOX_CFLAGS])
10550 dnl ===================================================================
10551 dnl Check for system frozen
10552 dnl ===================================================================
10553 AC_MSG_CHECKING([which frozen to use])
10554 if test "$with_system_frozen" = "yes"; then
10555     AC_MSG_RESULT([external])
10556     SYSTEM_FROZEN=TRUE
10557     AC_LANG_PUSH([C++])
10558     save_CPPFLAGS=$CPPFLAGS
10559     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10560        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10561     AC_LANG_POP([C++])
10562     CPPFLAGS=$save_CPPFLAGS
10563 else
10564     AC_MSG_RESULT([internal])
10565     BUILD_TYPE="$BUILD_TYPE FROZEN"
10566     SYSTEM_FROZEN=
10568 AC_SUBST([SYSTEM_FROZEN])
10569 AC_SUBST([FROZEN_CFLAGS])
10571 dnl ===================================================================
10572 dnl Check for system libfixmath
10573 dnl ===================================================================
10574 AC_MSG_CHECKING([which libfixmath to use])
10575 if test "$with_system_libfixmath" = "yes"; then
10576     AC_MSG_RESULT([external])
10577     SYSTEM_LIBFIXMATH=TRUE
10578     AC_LANG_PUSH([C++])
10579     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10580        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10581     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10582     AC_LANG_POP([C++])
10583 else
10584     AC_MSG_RESULT([internal])
10585     SYSTEM_LIBFIXMATH=
10587 AC_SUBST([SYSTEM_LIBFIXMATH])
10589 dnl ===================================================================
10590 dnl Check for system glm
10591 dnl ===================================================================
10592 AC_MSG_CHECKING([which glm to use])
10593 if test "$with_system_glm" = "yes"; then
10594     AC_MSG_RESULT([external])
10595     SYSTEM_GLM=TRUE
10596     AC_LANG_PUSH([C++])
10597     AC_CHECK_HEADER([glm/glm.hpp], [],
10598        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10599     AC_LANG_POP([C++])
10600 else
10601     AC_MSG_RESULT([internal])
10602     BUILD_TYPE="$BUILD_TYPE GLM"
10603     SYSTEM_GLM=
10604     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10606 AC_SUBST([GLM_CFLAGS])
10607 AC_SUBST([SYSTEM_GLM])
10609 dnl ===================================================================
10610 dnl Check for system odbc
10611 dnl ===================================================================
10612 AC_MSG_CHECKING([which odbc headers to use])
10613 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
10614     AC_MSG_RESULT([external])
10615     SYSTEM_ODBC_HEADERS=TRUE
10617     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10618         save_CPPFLAGS=$CPPFLAGS
10619         find_winsdk
10620         PathFormat "$winsdktest"
10621         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"
10622         AC_CHECK_HEADER(sqlext.h, [],
10623             [AC_MSG_ERROR(odbc not found. install odbc)],
10624             [#include <windows.h>])
10625         CPPFLAGS=$save_CPPFLAGS
10626     else
10627         AC_CHECK_HEADER(sqlext.h, [],
10628             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10629     fi
10630 elif test "$enable_database_connectivity" = no; then
10631     AC_MSG_RESULT([none])
10632 else
10633     AC_MSG_RESULT([internal])
10634     SYSTEM_ODBC_HEADERS=
10636 AC_SUBST(SYSTEM_ODBC_HEADERS)
10638 dnl ===================================================================
10639 dnl Check for system NSS
10640 dnl ===================================================================
10641 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10642     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10643     AC_DEFINE(HAVE_FEATURE_NSS)
10644     ENABLE_NSS=TRUE
10645 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10646     with_tls=openssl
10648 AC_SUBST(ENABLE_NSS)
10650 dnl ===================================================================
10651 dnl Enable LDAP support
10652 dnl ===================================================================
10654 if test "$test_openldap" = yes; then
10655     AC_MSG_CHECKING([whether to enable LDAP support])
10656     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10657         AC_MSG_RESULT([yes])
10658         ENABLE_LDAP=TRUE
10659     else
10660         if test "$enable_ldap" != "yes"; then
10661             AC_MSG_RESULT([no])
10662         else
10663             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10664         fi
10665     fi
10667 dnl ===================================================================
10668 dnl Check for system openldap
10669 dnl ===================================================================
10671     if test "$ENABLE_LDAP" = TRUE; then
10672         AC_MSG_CHECKING([which openldap library to use])
10673         if test "$with_system_openldap" = yes; then
10674             AC_MSG_RESULT([external])
10675             SYSTEM_OPENLDAP=TRUE
10676             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10677             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10678             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10679         else
10680             AC_MSG_RESULT([internal])
10681             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10682         fi
10683     fi
10686 AC_SUBST(ENABLE_LDAP)
10687 AC_SUBST(SYSTEM_OPENLDAP)
10689 dnl ===================================================================
10690 dnl Check for TLS/SSL and cryptographic implementation to use
10691 dnl ===================================================================
10692 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10693 if test -n "$with_tls"; then
10694     case $with_tls in
10695     openssl)
10696         AC_DEFINE(USE_TLS_OPENSSL)
10697         TLS=OPENSSL
10698         AC_MSG_RESULT([$TLS])
10700         if test "$enable_openssl" != "yes"; then
10701             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10702         fi
10704         # warn that OpenSSL has been selected but not all TLS code has this option
10705         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10706         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10707         ;;
10708     nss)
10709         AC_DEFINE(USE_TLS_NSS)
10710         TLS=NSS
10711         AC_MSG_RESULT([$TLS])
10712         ;;
10713     no)
10714         AC_MSG_RESULT([none])
10715         AC_MSG_WARN([Skipping TLS/SSL])
10716         ;;
10717     *)
10718         AC_MSG_RESULT([])
10719         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10720 openssl - OpenSSL
10721 nss - Mozilla's Network Security Services (NSS)
10722     ])
10723         ;;
10724     esac
10725 else
10726     # default to using NSS, it results in smaller oox lib
10727     AC_DEFINE(USE_TLS_NSS)
10728     TLS=NSS
10729     AC_MSG_RESULT([$TLS])
10731 AC_SUBST(TLS)
10733 dnl ===================================================================
10734 dnl Check for system sane
10735 dnl ===================================================================
10736 AC_MSG_CHECKING([which sane header to use])
10737 if test "$with_system_sane" = "yes"; then
10738     AC_MSG_RESULT([external])
10739     AC_CHECK_HEADER(sane/sane.h, [],
10740       [AC_MSG_ERROR(sane not found. install sane)], [])
10741 else
10742     AC_MSG_RESULT([internal])
10743     BUILD_TYPE="$BUILD_TYPE SANE"
10746 dnl ===================================================================
10747 dnl Check for system icu
10748 dnl ===================================================================
10749 ICU_MAJOR=73
10750 ICU_MINOR=2
10751 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10752 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10753 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10754 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10755 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10756 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10757 if test "$SYSTEM_ICU" = TRUE; then
10758     AC_LANG_PUSH([C++])
10759     AC_MSG_CHECKING([for unicode/rbbi.h])
10760     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10761     AC_LANG_POP([C++])
10763     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10764     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10765     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10767     if test "$ICU_MAJOR" -ge 50; then
10768         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10769         ICU_MINOR=
10770     fi
10772     if test "$CROSS_COMPILING" != TRUE; then
10773         # using the system icu tools can lead to version confusion, use the
10774         # ones from the build environment when cross-compiling
10775         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10776         if test -z "$SYSTEM_GENBRK"; then
10777             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10778         fi
10779         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10780         if test -z "$SYSTEM_GENCCODE"; then
10781             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10782         fi
10783         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10784         if test -z "$SYSTEM_GENCMN"; then
10785             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10786         fi
10787         if test "$ICU_MAJOR" -lt 49; then
10788             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10789             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10790             ICU_RECLASSIFIED_HEBREW_LETTER=
10791         fi
10792     fi
10794 if test "$ICU_MAJOR" -ge "59"; then
10795     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10796     # with -std=c++11 but not all external libraries can be built with that,
10797     # for those use a bit-compatible typedef uint16_t UChar; see
10798     # icu/source/common/unicode/umachine.h
10799     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10800 else
10801     ICU_UCHAR_TYPE=""
10803 AC_SUBST(SYSTEM_GENBRK)
10804 AC_SUBST(SYSTEM_GENCCODE)
10805 AC_SUBST(SYSTEM_GENCMN)
10806 AC_SUBST(ICU_MAJOR)
10807 AC_SUBST(ICU_MINOR)
10808 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10809 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10810 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10811 AC_SUBST(ICU_UCHAR_TYPE)
10813 dnl ==================================================================
10814 dnl Breakpad
10815 dnl ==================================================================
10816 DEFAULT_CRASHDUMP_VALUE="true"
10817 AC_MSG_CHECKING([whether to enable breakpad])
10818 if test "$enable_breakpad" != yes; then
10819     AC_MSG_RESULT([no])
10820 else
10821     AC_MSG_RESULT([yes])
10822     ENABLE_BREAKPAD="TRUE"
10823     AC_DEFINE(ENABLE_BREAKPAD)
10824     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10825     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10827     AC_MSG_CHECKING([for disable crash dump])
10828     if test "$enable_crashdump" = no; then
10829         DEFAULT_CRASHDUMP_VALUE="false"
10830         AC_MSG_RESULT([yes])
10831     else
10832        AC_MSG_RESULT([no])
10833     fi
10835     AC_MSG_CHECKING([for crashreport config])
10836     if test "$with_symbol_config" = "no"; then
10837         BREAKPAD_SYMBOL_CONFIG="invalid"
10838         AC_MSG_RESULT([no])
10839     else
10840         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10841         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10842         AC_MSG_RESULT([yes])
10843     fi
10844     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10846 AC_SUBST(ENABLE_BREAKPAD)
10847 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10849 dnl ===================================================================
10850 dnl Orcus
10851 dnl ===================================================================
10852 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.18.0])
10853 if test "$with_system_orcus" != "yes"; then
10854     if test "$SYSTEM_BOOST" = "TRUE"; then
10855         dnl Link with Boost.System
10856         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10857         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10858         dnl in documentation has no effect.
10859         AX_BOOST_SYSTEM
10860     fi
10862 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10863 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10864 AC_SUBST([BOOST_SYSTEM_LIB])
10865 AC_SUBST(SYSTEM_LIBORCUS)
10867 dnl ===================================================================
10868 dnl HarfBuzz
10869 dnl ===================================================================
10870 harfbuzz_required_version=5.1.0
10872 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10873 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10874 case "$_os" in
10875     Linux)
10876         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10877         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10878         ;;
10879     *)
10880         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10881         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10882         ;;
10883 esac
10884 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10885 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10887 if test "$COM" = "MSC"; then # override the above
10888     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10889     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10892 if test "$with_system_harfbuzz" = "yes"; then
10893     if test "$with_system_graphite" = "no"; then
10894         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10895     fi
10896     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10897     save_LIBS="$LIBS"
10898     save_CFLAGS="$CFLAGS"
10899     LIBS="$LIBS $HARFBUZZ_LIBS"
10900     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10901     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10902     LIBS="$save_LIBS"
10903     CFLAGS="$save_CFLAGS"
10904 else
10905     if test "$with_system_graphite" = "yes"; then
10906         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10907     fi
10910 if test "$USING_X11" = TRUE; then
10911     AC_PATH_X
10912     AC_PATH_XTRA
10913     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10915     if test -z "$x_includes"; then
10916         x_includes="default_x_includes"
10917     fi
10918     if test -z "$x_libraries"; then
10919         x_libraries="default_x_libraries"
10920     fi
10921     CFLAGS="$CFLAGS $X_CFLAGS"
10922     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10923     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10924 else
10925     x_includes="no_x_includes"
10926     x_libraries="no_x_libraries"
10929 if test "$USING_X11" = TRUE; then
10930     dnl ===================================================================
10931     dnl Check for extension headers
10932     dnl ===================================================================
10933     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10934      [#include <X11/extensions/shape.h>])
10936     # vcl needs ICE and SM
10937     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10938     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10939         [AC_MSG_ERROR(ICE library not found)])
10940     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10941     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10942         [AC_MSG_ERROR(SM library not found)])
10945 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10946     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10947     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10950 dnl ===================================================================
10951 dnl Check for system Xrender
10952 dnl ===================================================================
10953 AC_MSG_CHECKING([whether to use Xrender])
10954 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10955     AC_MSG_RESULT([yes])
10956     PKG_CHECK_MODULES(XRENDER, xrender)
10957     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10958     FilterLibs "${XRENDER_LIBS}"
10959     XRENDER_LIBS="${filteredlibs}"
10960     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10961       [AC_MSG_ERROR(libXrender not found or functional)], [])
10962     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10963       [AC_MSG_ERROR(Xrender not found. install X)], [])
10964 else
10965     AC_MSG_RESULT([no])
10967 AC_SUBST(XRENDER_CFLAGS)
10968 AC_SUBST(XRENDER_LIBS)
10970 dnl ===================================================================
10971 dnl Check for XRandr
10972 dnl ===================================================================
10973 AC_MSG_CHECKING([whether to enable RandR support])
10974 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10975     AC_MSG_RESULT([yes])
10976     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10977     if test "$ENABLE_RANDR" != "TRUE"; then
10978         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10979                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10980         XRANDR_CFLAGS=" "
10981         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10982           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10983         XRANDR_LIBS="-lXrandr "
10984         ENABLE_RANDR="TRUE"
10985     fi
10986     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10987     FilterLibs "${XRANDR_LIBS}"
10988     XRANDR_LIBS="${filteredlibs}"
10989 else
10990     ENABLE_RANDR=""
10991     AC_MSG_RESULT([no])
10993 AC_SUBST(XRANDR_CFLAGS)
10994 AC_SUBST(XRANDR_LIBS)
10995 AC_SUBST(ENABLE_RANDR)
10997 if test -z "$with_webdav"; then
10998     with_webdav=$test_webdav
11001 AC_MSG_CHECKING([for WebDAV support])
11002 case "$with_webdav" in
11004     AC_MSG_RESULT([no])
11005     WITH_WEBDAV=""
11006     ;;
11008     AC_MSG_RESULT([yes])
11009     # curl is already mandatory (almost) and checked elsewhere
11010     if test "$enable_curl" = "no"; then
11011         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11012     fi
11013     WITH_WEBDAV=TRUE
11014     ;;
11015 esac
11016 AC_SUBST(WITH_WEBDAV)
11018 dnl ===================================================================
11019 dnl Check for disabling cve_tests
11020 dnl ===================================================================
11021 AC_MSG_CHECKING([whether to execute CVE tests])
11022 # If not explicitly enabled or disabled, default
11023 if test -z "$enable_cve_tests"; then
11024     case "$OS" in
11025     WNT)
11026         # Default cves off for Windows with its wild and wonderful
11027         # variety of AV software kicking in and panicking
11028         enable_cve_tests=no
11029         ;;
11030     *)
11031         # otherwise yes
11032         enable_cve_tests=yes
11033         ;;
11034     esac
11036 if test "$enable_cve_tests" = "no"; then
11037     AC_MSG_RESULT([no])
11038     DISABLE_CVE_TESTS=TRUE
11039     AC_SUBST(DISABLE_CVE_TESTS)
11040 else
11041     AC_MSG_RESULT([yes])
11044 dnl ===================================================================
11045 dnl Check for system openssl
11046 dnl ===================================================================
11047 ENABLE_OPENSSL=
11048 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11049 if test "$enable_openssl" = "yes"; then
11050     AC_MSG_RESULT([no])
11051     ENABLE_OPENSSL=TRUE
11052     if test "$_os" = Darwin ; then
11053         # OpenSSL is deprecated when building for 10.7 or later.
11054         #
11055         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11056         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11058         with_system_openssl=no
11059         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11060     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11061             && test "$with_system_openssl" != "no"; then
11062         with_system_openssl=yes
11063         SYSTEM_OPENSSL=TRUE
11064         OPENSSL_CFLAGS=
11065         OPENSSL_LIBS="-lssl -lcrypto"
11066     else
11067         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11068     fi
11069     if test "$with_system_openssl" = "yes"; then
11070         AC_MSG_CHECKING([whether openssl supports SHA512])
11071         AC_LANG_PUSH([C])
11072         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11073             SHA512_CTX context;
11074 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11075         AC_LANG_POP(C)
11076     fi
11077 else
11078     AC_MSG_RESULT([yes])
11080     # warn that although OpenSSL is disabled, system libraries may depend on it
11081     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11082     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11085 AC_SUBST([ENABLE_OPENSSL])
11087 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11088     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11089         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11090         enable_cipher_openssl_backend=no
11091     else
11092         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11093     fi
11095 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11096 ENABLE_CIPHER_OPENSSL_BACKEND=
11097 if test "$enable_cipher_openssl_backend" = yes; then
11098     AC_MSG_RESULT([yes])
11099     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11100 else
11101     AC_MSG_RESULT([no])
11103 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11105 dnl ===================================================================
11106 dnl Select the crypto backends used by LO
11107 dnl ===================================================================
11109 if test "$build_crypto" = yes; then
11110     if test "$OS" = WNT; then
11111         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11112         AC_DEFINE([USE_CRYPTO_MSCAPI])
11113     elif test "$ENABLE_NSS" = TRUE; then
11114         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11115         AC_DEFINE([USE_CRYPTO_NSS])
11116     fi
11119 dnl ===================================================================
11120 dnl Check for system redland
11121 dnl ===================================================================
11122 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11123 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11124 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11125 if test "$with_system_redland" = "yes"; then
11126     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11127             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11128 else
11129     RAPTOR_MAJOR="0"
11130     RASQAL_MAJOR="3"
11131     REDLAND_MAJOR="0"
11133 AC_SUBST(RAPTOR_MAJOR)
11134 AC_SUBST(RASQAL_MAJOR)
11135 AC_SUBST(REDLAND_MAJOR)
11137 dnl ===================================================================
11138 dnl Check for system hunspell
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which libhunspell to use])
11141 if test "$with_system_hunspell" = "yes"; then
11142     AC_MSG_RESULT([external])
11143     SYSTEM_HUNSPELL=TRUE
11144     AC_LANG_PUSH([C++])
11145     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11146     if test "$HUNSPELL_PC" != "TRUE"; then
11147         AC_CHECK_HEADER(hunspell.hxx, [],
11148             [
11149             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11150             [AC_MSG_ERROR(hunspell headers not found.)], [])
11151             ], [])
11152         AC_CHECK_LIB([hunspell], [main], [:],
11153            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11154         HUNSPELL_LIBS=-lhunspell
11155     fi
11156     AC_LANG_POP([C++])
11157     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11158     FilterLibs "${HUNSPELL_LIBS}"
11159     HUNSPELL_LIBS="${filteredlibs}"
11160 else
11161     AC_MSG_RESULT([internal])
11162     SYSTEM_HUNSPELL=
11163     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11164     if test "$COM" = "MSC"; then
11165         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11166     else
11167         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11168     fi
11169     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11171 AC_SUBST(SYSTEM_HUNSPELL)
11172 AC_SUBST(HUNSPELL_CFLAGS)
11173 AC_SUBST(HUNSPELL_LIBS)
11175 dnl ===================================================================
11176 dnl Check for system zxing
11177 dnl ===================================================================
11178 AC_MSG_CHECKING([whether to use zxing])
11179 if test "$enable_zxing" = "no"; then
11180     AC_MSG_RESULT([no])
11181     ENABLE_ZXING=
11182     SYSTEM_ZXING=
11183 else
11184     AC_MSG_RESULT([yes])
11185     ENABLE_ZXING=TRUE
11186     AC_MSG_CHECKING([which libzxing to use])
11187     if test "$with_system_zxing" = "yes"; then
11188         AC_MSG_RESULT([external])
11189         SYSTEM_ZXING=TRUE
11190         ZXING_CFLAGS=
11191         AC_LANG_PUSH([C++])
11192         save_CXXFLAGS=$CXXFLAGS
11193         save_IFS=$IFS
11194         IFS=$P_SEP
11195         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11196             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11197             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11198             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11199             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11200             dnl unsetting IFS."):
11201             IFS=$save_IFS
11202             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11203             dnl ignore them here:
11204             if test -z "$i"; then
11205                 continue
11206             fi
11207             dnl TODO: White space in $i would cause problems:
11208             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11209             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11210                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11211         done
11212         CXXFLAGS=$save_CXXFLAGS
11213         if test -z "$ZXING_CFLAGS"; then
11214             AC_MSG_ERROR(zxing headers not found.)
11215         fi
11216         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11217             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11218             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11219         AC_LANG_POP([C++])
11220         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11221         FilterLibs "${ZXING_LIBS}"
11222         ZXING_LIBS="${filteredlibs}"
11223     else
11224         AC_MSG_RESULT([internal])
11225         SYSTEM_ZXING=
11226         BUILD_TYPE="$BUILD_TYPE ZXING"
11227     fi
11228     if test "$ENABLE_ZXING" = TRUE; then
11229         AC_DEFINE(ENABLE_ZXING)
11230     fi
11232 AC_SUBST(SYSTEM_ZXING)
11233 AC_SUBST(ENABLE_ZXING)
11234 AC_SUBST(ZXING_CFLAGS)
11235 AC_SUBST(ZXING_LIBS)
11237 dnl ===================================================================
11238 dnl Check for system box2d
11239 dnl ===================================================================
11240 AC_MSG_CHECKING([which box2d to use])
11241 if test "$with_system_box2d" = "yes"; then
11242     AC_MSG_RESULT([external])
11243     SYSTEM_BOX2D=TRUE
11244     AC_LANG_PUSH([C++])
11245     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11246         [BOX2D_H_FOUND='FALSE'])
11247     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11248         _BOX2D_LIB=box2d
11249         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11250     else
11251         # fail this. there's no other alternative to check when we are here.
11252         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11253             [AC_MSG_ERROR(box2d headers not found.)])
11254         _BOX2D_LIB=Box2D
11255         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11256     fi
11257     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11258         [ AC_MSG_ERROR(box2d library not found.) ], [])
11259     BOX2D_LIBS=-l$_BOX2D_LIB
11260     AC_LANG_POP([C++])
11261     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11262     FilterLibs "${BOX2D_LIBS}"
11263     BOX2D_LIBS="${filteredlibs}"
11264 else
11265     AC_MSG_RESULT([internal])
11266     SYSTEM_BOX2D=
11267     BUILD_TYPE="$BUILD_TYPE BOX2D"
11269 AC_SUBST(SYSTEM_BOX2D)
11270 AC_SUBST(BOX2D_CFLAGS)
11271 AC_SUBST(BOX2D_LIBS)
11273 dnl ===================================================================
11274 dnl Checking for altlinuxhyph
11275 dnl ===================================================================
11276 AC_MSG_CHECKING([which altlinuxhyph to use])
11277 if test "$with_system_altlinuxhyph" = "yes"; then
11278     AC_MSG_RESULT([external])
11279     SYSTEM_HYPH=TRUE
11280     AC_CHECK_HEADER(hyphen.h, [],
11281        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11282     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11283        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11284        [#include <hyphen.h>])
11285     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11286         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11287     if test -z "$HYPHEN_LIB"; then
11288         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11289            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11290     fi
11291     if test -z "$HYPHEN_LIB"; then
11292         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11293            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11294     fi
11295 else
11296     AC_MSG_RESULT([internal])
11297     SYSTEM_HYPH=
11298     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11299     if test "$COM" = "MSC"; then
11300         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11301     else
11302         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11303     fi
11305 AC_SUBST(SYSTEM_HYPH)
11306 AC_SUBST(HYPHEN_LIB)
11308 dnl ===================================================================
11309 dnl Checking for mythes
11310 dnl ===================================================================
11311 AC_MSG_CHECKING([which mythes to use])
11312 if test "$with_system_mythes" = "yes"; then
11313     AC_MSG_RESULT([external])
11314     SYSTEM_MYTHES=TRUE
11315     AC_LANG_PUSH([C++])
11316     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11317     if test "$MYTHES_PKGCONFIG" = "no"; then
11318         AC_CHECK_HEADER(mythes.hxx, [],
11319             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11320         AC_CHECK_LIB([mythes-1.2], [main], [:],
11321             [ MYTHES_FOUND=no], [])
11322     if test "$MYTHES_FOUND" = "no"; then
11323         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11324                 [ MYTHES_FOUND=no], [])
11325     fi
11326     if test "$MYTHES_FOUND" = "no"; then
11327         AC_MSG_ERROR([mythes library not found!.])
11328     fi
11329     fi
11330     AC_LANG_POP([C++])
11331     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11332     FilterLibs "${MYTHES_LIBS}"
11333     MYTHES_LIBS="${filteredlibs}"
11334 else
11335     AC_MSG_RESULT([internal])
11336     SYSTEM_MYTHES=
11337     BUILD_TYPE="$BUILD_TYPE MYTHES"
11338     if test "$COM" = "MSC"; then
11339         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11340     else
11341         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11342     fi
11344 AC_SUBST(SYSTEM_MYTHES)
11345 AC_SUBST(MYTHES_CFLAGS)
11346 AC_SUBST(MYTHES_LIBS)
11348 dnl ===================================================================
11349 dnl How should we build the linear programming solver ?
11350 dnl ===================================================================
11352 ENABLE_COINMP=
11353 AC_MSG_CHECKING([whether to build with CoinMP])
11354 if test "$enable_coinmp" != "no"; then
11355     ENABLE_COINMP=TRUE
11356     AC_MSG_RESULT([yes])
11357     if test "$with_system_coinmp" = "yes"; then
11358         SYSTEM_COINMP=TRUE
11359         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11360         FilterLibs "${COINMP_LIBS}"
11361         COINMP_LIBS="${filteredlibs}"
11362     else
11363         BUILD_TYPE="$BUILD_TYPE COINMP"
11364     fi
11365 else
11366     AC_MSG_RESULT([no])
11368 AC_SUBST(ENABLE_COINMP)
11369 AC_SUBST(SYSTEM_COINMP)
11370 AC_SUBST(COINMP_CFLAGS)
11371 AC_SUBST(COINMP_LIBS)
11373 ENABLE_LPSOLVE=
11374 AC_MSG_CHECKING([whether to build with lpsolve])
11375 if test "$enable_lpsolve" != "no"; then
11376     ENABLE_LPSOLVE=TRUE
11377     AC_MSG_RESULT([yes])
11378 else
11379     AC_MSG_RESULT([no])
11381 AC_SUBST(ENABLE_LPSOLVE)
11383 if test "$ENABLE_LPSOLVE" = TRUE; then
11384     AC_MSG_CHECKING([which lpsolve to use])
11385     if test "$with_system_lpsolve" = "yes"; then
11386         AC_MSG_RESULT([external])
11387         SYSTEM_LPSOLVE=TRUE
11388         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11389            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11390         save_LIBS=$LIBS
11391         # some systems need this. Like Ubuntu...
11392         AC_CHECK_LIB(m, floor)
11393         AC_CHECK_LIB(dl, dlopen)
11394         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11395             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11396         LIBS=$save_LIBS
11397     else
11398         AC_MSG_RESULT([internal])
11399         SYSTEM_LPSOLVE=
11400         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11401     fi
11403 AC_SUBST(SYSTEM_LPSOLVE)
11405 dnl ===================================================================
11406 dnl Checking for libexttextcat
11407 dnl ===================================================================
11408 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11409 if test "$with_system_libexttextcat" = "yes"; then
11410     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11412 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11414 dnl ===================================================================
11415 dnl Checking for libnumbertext
11416 dnl ===================================================================
11417 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11418 if test "$with_system_libnumbertext" = "yes"; then
11419     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11420     SYSTEM_LIBNUMBERTEXT=YES
11421 else
11422     SYSTEM_LIBNUMBERTEXT=
11424 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11425 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11427 dnl ***************************************
11428 dnl testing libc version for Linux...
11429 dnl ***************************************
11430 if test "$_os" = "Linux"; then
11431     AC_MSG_CHECKING([whether the libc is recent enough])
11432     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11433     #include <features.h>
11434     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11435     #error glibc >= 2.1 is required
11436     #endif
11437     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11440 dnl =========================================
11441 dnl Check for uuidgen
11442 dnl =========================================
11443 if test "$_os" = "WINNT"; then
11444     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11445     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11446     UUIDGEN=uuidgen.exe
11447     AC_SUBST(UUIDGEN)
11448 else
11449     AC_PATH_PROG([UUIDGEN], [uuidgen])
11450     if test -z "$UUIDGEN"; then
11451         AC_MSG_WARN([uuid is needed for building installation sets])
11452     fi
11455 dnl ***************************************
11456 dnl Checking for bison and flex
11457 dnl ***************************************
11458 AC_PATH_PROG(BISON, bison)
11459 if test -z "$BISON"; then
11460     AC_MSG_ERROR([no bison found in \$PATH, install it])
11461 else
11462     AC_MSG_CHECKING([the bison version])
11463     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11464     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11465     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11466     dnl cause
11467     dnl
11468     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]
11469     dnl   typedef union YYSTYPE
11470     dnl           ~~~~~~^~~~~~~
11471     dnl
11472     dnl while at least 3.4.1 is know to be good:
11473     if test "$COMPILER_PLUGINS" = TRUE; then
11474         if test "$_bison_longver" -lt 2004; then
11475             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11476         fi
11477     else
11478         if test "$_bison_longver" -lt 2000; then
11479             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11480         fi
11481     fi
11483 AC_SUBST([BISON])
11485 AC_PATH_PROG(FLEX, flex)
11486 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11487     FLEX=`cygpath -m $FLEX`
11489 if test -z "$FLEX"; then
11490     AC_MSG_ERROR([no flex found in \$PATH, install it])
11491 else
11492     AC_MSG_CHECKING([the flex version])
11493     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11494     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11495         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11496     fi
11498 AC_SUBST([FLEX])
11500 AC_PATH_PROG(DIFF, diff)
11501 if test -z "$DIFF"; then
11502     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11504 AC_SUBST([DIFF])
11506 AC_PATH_PROG(UNIQ, uniq)
11507 if test -z "$UNIQ"; then
11508     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11510 AC_SUBST([UNIQ])
11512 dnl ***************************************
11513 dnl Checking for patch
11514 dnl ***************************************
11515 AC_PATH_PROG(PATCH, patch)
11516 if test -z "$PATCH"; then
11517     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11520 dnl On Solaris or macOS, check if --with-gnu-patch was used
11521 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11522     if test -z "$with_gnu_patch"; then
11523         GNUPATCH=$PATCH
11524     else
11525         if test -x "$with_gnu_patch"; then
11526             GNUPATCH=$with_gnu_patch
11527         else
11528             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11529         fi
11530     fi
11532     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11533     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11534         AC_MSG_RESULT([yes])
11535     else
11536         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11537             AC_MSG_RESULT([no, but accepted (Apple patch)])
11538             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11539         else
11540             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11541         fi
11542     fi
11543 else
11544     GNUPATCH=$PATCH
11547 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11548     GNUPATCH=`cygpath -m $GNUPATCH`
11551 dnl We also need to check for --with-gnu-cp
11553 if test -z "$with_gnu_cp"; then
11554     # check the place where the good stuff is hidden on Solaris...
11555     if test -x /usr/gnu/bin/cp; then
11556         GNUCP=/usr/gnu/bin/cp
11557     else
11558         AC_PATH_PROGS(GNUCP, gnucp cp)
11559     fi
11560     if test -z $GNUCP; then
11561         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11562     fi
11563 else
11564     if test -x "$with_gnu_cp"; then
11565         GNUCP=$with_gnu_cp
11566     else
11567         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11568     fi
11571 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11572     GNUCP=`cygpath -m $GNUCP`
11575 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11576 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11577     AC_MSG_RESULT([yes])
11578 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11579     AC_MSG_RESULT([yes])
11580 else
11581     case "$build_os" in
11582     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11583         x_GNUCP=[\#]
11584         GNUCP=''
11585         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11586         ;;
11587     *)
11588         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11589         ;;
11590     esac
11593 AC_SUBST(GNUPATCH)
11594 AC_SUBST(GNUCP)
11595 AC_SUBST(x_GNUCP)
11597 dnl ***************************************
11598 dnl testing assembler path
11599 dnl ***************************************
11600 ML_EXE=""
11601 if test "$_os" = "WINNT"; then
11602     case "$WIN_HOST_ARCH" in
11603     x86) assembler=ml.exe ;;
11604     x64) assembler=ml64.exe ;;
11605     arm64) assembler=armasm64.exe ;;
11606     esac
11608     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11609     if test -f "$MSVC_HOST_PATH/$assembler"; then
11610         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11611         AC_MSG_RESULT([$ML_EXE])
11612     else
11613         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11614     fi
11617 AC_SUBST(ML_EXE)
11619 dnl ===================================================================
11620 dnl We need zip and unzip
11621 dnl ===================================================================
11622 AC_PATH_PROG(ZIP, zip)
11623 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11624 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11625     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],,)
11628 AC_PATH_PROG(UNZIP, unzip)
11629 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11631 dnl ===================================================================
11632 dnl Zip must be a specific type for different build types.
11633 dnl ===================================================================
11634 if test $build_os = cygwin; then
11635     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11636         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11637     fi
11640 dnl ===================================================================
11641 dnl We need touch with -h option support.
11642 dnl ===================================================================
11643 AC_PATH_PROG(TOUCH, touch)
11644 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11645 touch "$WARNINGS_FILE"
11646 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11647     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],,)
11650 dnl ===================================================================
11651 dnl Check for system epoxy
11652 dnl ===================================================================
11653 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11654 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11656 dnl ===================================================================
11657 dnl Set vcl option: coordinate device in double or sal_Int32
11658 dnl ===================================================================
11660 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11661 if test "$enable_float_device_pixel" = yes; then
11662     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11663     AC_MSG_RESULT([double])
11664 else
11665     AC_MSG_RESULT([sal_Int32])
11668 dnl ===================================================================
11669 dnl Show which vclplugs will be built.
11670 dnl ===================================================================
11671 R=""
11673 libo_ENABLE_VCLPLUG([gen])
11674 libo_ENABLE_VCLPLUG([gtk3])
11675 libo_ENABLE_VCLPLUG([gtk3_kde5])
11676 libo_ENABLE_VCLPLUG([gtk4])
11677 libo_ENABLE_VCLPLUG([kf5])
11678 libo_ENABLE_VCLPLUG([qt5])
11679 libo_ENABLE_VCLPLUG([qt6])
11681 if test "$_os" = "WINNT"; then
11682     R="$R win"
11683 elif test "$_os" = "Darwin"; then
11684     R="$R osx"
11685 elif test "$_os" = "iOS"; then
11686     R="ios"
11687 elif test "$_os" = Android; then
11688     R="android"
11691 build_vcl_plugins="$R"
11692 if test -z "$build_vcl_plugins"; then
11693     build_vcl_plugins=" none"
11695 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11696 VCL_PLUGIN_INFO=$R
11697 AC_SUBST([VCL_PLUGIN_INFO])
11699 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11700     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11703 dnl ===================================================================
11704 dnl Check for GTK libraries
11705 dnl ===================================================================
11707 GTK3_CFLAGS=""
11708 GTK3_LIBS=""
11709 ENABLE_GTKTILEDVIEWER=""
11710 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11711     if test "$with_system_cairo" = no; then
11712         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.'
11713     fi
11714     : ${with_system_cairo:=yes}
11715     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)
11716     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11717     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11718     FilterLibs "${GTK3_LIBS}"
11719     GTK3_LIBS="${filteredlibs}"
11721     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11722     if test "$with_system_epoxy" != "yes"; then
11723         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11724         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11725                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11726     fi
11727 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11728     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11729     if test "$build_os" = "cygwin"; then
11730         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11731         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11732     fi
11734     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11735     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11736     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11737     FilterLibs "${GTK3_LIBS}"
11738     GTK3_LIBS="${filteredlibs}"
11739     ENABLE_GTKTILEDVIEWER="yes"
11741 AC_SUBST(GTK3_LIBS)
11742 AC_SUBST(GTK3_CFLAGS)
11743 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11745 GTK4_CFLAGS=""
11746 GTK4_LIBS=""
11747 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11748     if test "$with_system_cairo" = no; then
11749         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11750     fi
11751     : ${with_system_cairo:=yes}
11752     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11753     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11754     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11755     FilterLibs "${GTK4_LIBS}"
11756     GTK4_LIBS="${filteredlibs}"
11758     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11759     if test "$with_system_epoxy" != "yes"; then
11760         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11761         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11762                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11763     fi
11765 AC_SUBST(GTK4_LIBS)
11766 AC_SUBST(GTK4_CFLAGS)
11768 if test "$enable_introspection" = yes; then
11769     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11770         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11771     else
11772         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11773     fi
11776 dnl ===================================================================
11777 dnl check for dbus support
11778 dnl ===================================================================
11779 ENABLE_DBUS=""
11780 DBUS_CFLAGS=""
11781 DBUS_LIBS=""
11782 DBUS_GLIB_CFLAGS=""
11783 DBUS_GLIB_LIBS=""
11784 DBUS_HAVE_GLIB=""
11786 if test "$enable_dbus" = "no"; then
11787     test_dbus=no
11790 AC_MSG_CHECKING([whether to enable DBUS support])
11791 if test "$test_dbus" = "yes"; then
11792     ENABLE_DBUS="TRUE"
11793     AC_MSG_RESULT([yes])
11794     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11795     AC_DEFINE(ENABLE_DBUS)
11796     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11797     FilterLibs "${DBUS_LIBS}"
11798     DBUS_LIBS="${filteredlibs}"
11800     # Glib is needed for BluetoothServer
11801     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11802     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11803         [
11804             DBUS_HAVE_GLIB="TRUE"
11805             AC_DEFINE(DBUS_HAVE_GLIB,1)
11806         ],
11807         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11808     )
11809 else
11810     AC_MSG_RESULT([no])
11813 AC_SUBST(ENABLE_DBUS)
11814 AC_SUBST(DBUS_CFLAGS)
11815 AC_SUBST(DBUS_LIBS)
11816 AC_SUBST(DBUS_GLIB_CFLAGS)
11817 AC_SUBST(DBUS_GLIB_LIBS)
11818 AC_SUBST(DBUS_HAVE_GLIB)
11820 AC_MSG_CHECKING([whether to enable Impress remote control])
11821 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11822     AC_MSG_RESULT([yes])
11823     ENABLE_SDREMOTE=TRUE
11824     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11825         <true/>"
11826     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11828     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11829         # The Bluetooth code doesn't compile with macOS SDK 10.15
11830         if test "$enable_sdremote_bluetooth" = yes; then
11831             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11832         fi
11833         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11834         enable_sdremote_bluetooth=no
11835     fi
11836     # If not explicitly enabled or disabled, default
11837     if test -z "$enable_sdremote_bluetooth"; then
11838         case "$OS" in
11839         LINUX|MACOSX|WNT)
11840             # Default to yes for these
11841             enable_sdremote_bluetooth=yes
11842             ;;
11843         *)
11844             # otherwise no
11845             enable_sdremote_bluetooth=no
11846             ;;
11847         esac
11848     fi
11849     # $enable_sdremote_bluetooth is guaranteed non-empty now
11851     if test "$enable_sdremote_bluetooth" != "no"; then
11852         if test "$OS" = "LINUX"; then
11853             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11854                 AC_MSG_RESULT([yes])
11855                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11856                 dnl ===================================================================
11857                 dnl Check for system bluez
11858                 dnl ===================================================================
11859                 AC_MSG_CHECKING([which Bluetooth header to use])
11860                 if test "$with_system_bluez" = "yes"; then
11861                     AC_MSG_RESULT([external])
11862                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11863                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11864                     SYSTEM_BLUEZ=TRUE
11865                 else
11866                     AC_MSG_RESULT([internal])
11867                     SYSTEM_BLUEZ=
11868                 fi
11869             else
11870                 AC_MSG_RESULT([no, dbus disabled])
11871                 ENABLE_SDREMOTE_BLUETOOTH=
11872                 SYSTEM_BLUEZ=
11873             fi
11874         else
11875             AC_MSG_RESULT([yes])
11876             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11877             SYSTEM_BLUEZ=
11878             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11879         <key>com.apple.security.device.bluetooth</key>
11880         <true/>"
11881         fi
11882     else
11883         AC_MSG_RESULT([no])
11884         ENABLE_SDREMOTE_BLUETOOTH=
11885         SYSTEM_BLUEZ=
11886     fi
11887 else
11888     ENABLE_SDREMOTE=
11889     SYSTEM_BLUEZ=
11890     AC_MSG_RESULT([no])
11892 AC_SUBST(ENABLE_SDREMOTE)
11893 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11894 AC_SUBST(SDREMOTE_ENTITLEMENT)
11895 AC_SUBST(SYSTEM_BLUEZ)
11897 dnl ===================================================================
11898 dnl Check whether to enable GIO support
11899 dnl ===================================================================
11900 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11901     AC_MSG_CHECKING([whether to enable GIO support])
11902     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11903         dnl Need at least 2.26 for the dbus support.
11904         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11905                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11906         if test "$ENABLE_GIO" = "TRUE"; then
11907             AC_DEFINE(ENABLE_GIO)
11908             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11909             FilterLibs "${GIO_LIBS}"
11910             GIO_LIBS="${filteredlibs}"
11911         fi
11912     else
11913         AC_MSG_RESULT([no])
11914     fi
11916 AC_SUBST(ENABLE_GIO)
11917 AC_SUBST(GIO_CFLAGS)
11918 AC_SUBST(GIO_LIBS)
11921 dnl ===================================================================
11923 SPLIT_APP_MODULES=""
11924 if test "$enable_split_app_modules" = "yes"; then
11925     SPLIT_APP_MODULES="TRUE"
11927 AC_SUBST(SPLIT_APP_MODULES)
11929 SPLIT_OPT_FEATURES=""
11930 if test "$enable_split_opt_features" = "yes"; then
11931     SPLIT_OPT_FEATURES="TRUE"
11933 AC_SUBST(SPLIT_OPT_FEATURES)
11935 dnl ===================================================================
11936 dnl Check whether the GStreamer libraries are available.
11937 dnl ===================================================================
11939 ENABLE_GSTREAMER_1_0=""
11941 if test "$test_gstreamer_1_0" = yes; then
11943     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11944     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11945         ENABLE_GSTREAMER_1_0="TRUE"
11946         AC_MSG_RESULT([yes])
11947         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11948         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11949         FilterLibs "${GSTREAMER_1_0_LIBS}"
11950         GSTREAMER_1_0_LIBS="${filteredlibs}"
11951         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11952     else
11953         AC_MSG_RESULT([no])
11954     fi
11956 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11957 AC_SUBST(GSTREAMER_1_0_LIBS)
11958 AC_SUBST(ENABLE_GSTREAMER_1_0)
11960 ENABLE_OPENGL_TRANSITIONS=
11961 ENABLE_OPENGL_CANVAS=
11962 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11963    : # disable
11964 elif test "$_os" = "Darwin"; then
11965     # We use frameworks on macOS, no need for detail checks
11966     ENABLE_OPENGL_TRANSITIONS=TRUE
11967     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11968     ENABLE_OPENGL_CANVAS=TRUE
11969 elif test $_os = WINNT; then
11970     ENABLE_OPENGL_TRANSITIONS=TRUE
11971     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11972     ENABLE_OPENGL_CANVAS=TRUE
11973 else
11974     if test "$USING_X11" = TRUE; then
11975         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11976         ENABLE_OPENGL_TRANSITIONS=TRUE
11977         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11978         ENABLE_OPENGL_CANVAS=TRUE
11979     fi
11982 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11983 AC_SUBST(ENABLE_OPENGL_CANVAS)
11985 dnl =================================================
11986 dnl Check whether to build with OpenCL support.
11987 dnl =================================================
11989 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11990     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11991     # platform (optional at run-time, used through clew).
11992     BUILD_TYPE="$BUILD_TYPE OPENCL"
11993     AC_DEFINE(HAVE_FEATURE_OPENCL)
11996 dnl =================================================
11997 dnl Check whether to build with dconf support.
11998 dnl =================================================
12000 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12001     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12002         if test "$enable_dconf" = yes; then
12003             AC_MSG_ERROR([dconf not found])
12004         else
12005             enable_dconf=no
12006         fi])
12008 AC_MSG_CHECKING([whether to enable dconf])
12009 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12010     DCONF_CFLAGS=
12011     DCONF_LIBS=
12012     ENABLE_DCONF=
12013     AC_MSG_RESULT([no])
12014 else
12015     ENABLE_DCONF=TRUE
12016     AC_DEFINE(ENABLE_DCONF)
12017     AC_MSG_RESULT([yes])
12019 AC_SUBST([DCONF_CFLAGS])
12020 AC_SUBST([DCONF_LIBS])
12021 AC_SUBST([ENABLE_DCONF])
12023 # pdf import?
12024 AC_MSG_CHECKING([whether to build the PDF import feature])
12025 ENABLE_PDFIMPORT=
12026 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12027     AC_MSG_RESULT([yes])
12028     ENABLE_PDFIMPORT=TRUE
12029     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12030 else
12031     AC_MSG_RESULT([no])
12034 # Pdfium?
12035 AC_MSG_CHECKING([whether to build PDFium])
12036 ENABLE_PDFIUM=
12037 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12038     AC_MSG_RESULT([yes])
12039     ENABLE_PDFIUM=TRUE
12040     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12041 else
12042     AC_MSG_RESULT([no])
12044 AC_SUBST(ENABLE_PDFIUM)
12046 if test "$ENABLE_PDFIUM" = "TRUE"; then
12047     AC_MSG_CHECKING([which OpenJPEG library to use])
12048     if test "$with_system_openjpeg" = "yes"; then
12049         SYSTEM_OPENJPEG2=TRUE
12050         AC_MSG_RESULT([external])
12051         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12052         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12053         FilterLibs "${OPENJPEG2_LIBS}"
12054         OPENJPEG2_LIBS="${filteredlibs}"
12055     else
12056         SYSTEM_OPENJPEG2=FALSE
12057         AC_MSG_RESULT([internal])
12058     fi
12060     AC_MSG_CHECKING([which Abseil library to use])
12061     if test "$with_system_abseil" = "yes"; then
12062         AC_MSG_RESULT([external])
12063         SYSTEM_ABSEIL=TRUE
12064         AC_LANG_PUSH([C++])
12065         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12066                         [AC_MSG_ERROR(abseil headers not found.)], [])
12067         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12068                         [AC_MSG_ERROR(abseil headers not found.)], [])
12069         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12070                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12071         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12072                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12073         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12074         AC_LANG_POP([C++])
12075         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12076         FilterLibs "${ABSEIL_LIBS}"
12077         ABSEIL_LIBS="${filteredlibs}"
12078     else
12079         AC_MSG_RESULT([internal])
12080     fi
12082 AC_SUBST(SYSTEM_OPENJPEG2)
12083 AC_SUBST(SYSTEM_ABSEIL)
12084 AC_SUBST(ABSEIL_CFLAGS)
12085 AC_SUBST(ABSEIL_LIBS)
12087 dnl ===================================================================
12088 dnl Check for poppler
12089 dnl ===================================================================
12090 ENABLE_POPPLER=
12091 AC_MSG_CHECKING([whether to build Poppler])
12092 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12093     AC_MSG_RESULT([yes])
12094     ENABLE_POPPLER=TRUE
12095     AC_DEFINE(HAVE_FEATURE_POPPLER)
12096 else
12097     AC_MSG_RESULT([no])
12099 AC_SUBST(ENABLE_POPPLER)
12101 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12102     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12105 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12106     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12109 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12110     dnl ===================================================================
12111     dnl Check for system poppler
12112     dnl ===================================================================
12113     AC_MSG_CHECKING([which PDF import poppler to use])
12114     if test "$with_system_poppler" = "yes"; then
12115         AC_MSG_RESULT([external])
12116         SYSTEM_POPPLER=TRUE
12117         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12118         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12119         FilterLibs "${POPPLER_LIBS}"
12120         POPPLER_LIBS="${filteredlibs}"
12121     else
12122         AC_MSG_RESULT([internal])
12123         SYSTEM_POPPLER=
12124         BUILD_TYPE="$BUILD_TYPE POPPLER"
12125     fi
12126     AC_DEFINE([ENABLE_PDFIMPORT],1)
12128 AC_SUBST(ENABLE_PDFIMPORT)
12129 AC_SUBST(SYSTEM_POPPLER)
12130 AC_SUBST(POPPLER_CFLAGS)
12131 AC_SUBST(POPPLER_LIBS)
12133 # Skia?
12134 ENABLE_SKIA=
12135 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12136     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12137     if test "$SYSTEM_FREETYPE" = TRUE; then
12138         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12139             [skia_freetype_ok=yes],
12140             [skia_freetype_ok=no])
12141     else # internal is ok
12142         skia_freetype_ok=yes
12143     fi
12144     AC_MSG_CHECKING([whether to build Skia])
12145     if test "$skia_freetype_ok" = "yes"; then
12146         if test "$enable_skia" = "debug"; then
12147             AC_MSG_RESULT([yes (debug)])
12148             ENABLE_SKIA_DEBUG=TRUE
12149         else
12150             AC_MSG_RESULT([yes])
12151             ENABLE_SKIA_DEBUG=
12152         fi
12153         ENABLE_SKIA=TRUE
12154         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12155                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12156         fi
12158         AC_DEFINE(HAVE_FEATURE_SKIA)
12159         BUILD_TYPE="$BUILD_TYPE SKIA"
12161         if test "$OS" = "MACOSX"; then
12162             AC_DEFINE(SK_SUPPORT_GPU,1)
12163             AC_DEFINE(SK_METAL,1)
12164             SKIA_GPU=METAL
12165             AC_SUBST(SKIA_GPU)
12166         else
12167             AC_DEFINE(SK_SUPPORT_GPU,1)
12168             AC_DEFINE(SK_VULKAN,1)
12169             SKIA_GPU=VULKAN
12170             AC_SUBST(SKIA_GPU)
12171         fi
12172     else
12173         AC_MSG_RESULT([no (freetype too old)])
12174         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12175     fi
12177 else
12178     AC_MSG_CHECKING([whether to build Skia])
12179     AC_MSG_RESULT([no])
12181 AC_SUBST(ENABLE_SKIA)
12182 AC_SUBST(ENABLE_SKIA_DEBUG)
12184 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12185 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12186 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12187 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12188 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12189 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12190 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12191 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12192 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12193 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12194 HAVE_LO_CLANG_DLLEXPORTINLINES=
12196 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12197     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12198         AC_MSG_CHECKING([for Clang])
12199         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12200     else
12201         if test "$_os" = "WINNT"; then
12202             AC_MSG_CHECKING([for clang-cl])
12203             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12204                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12205             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12206                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12207             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12208                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12209             fi
12210             if test -n "$LO_CLANG_CC"; then
12211                 dnl explicitly set -m32/-m64
12212                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12213                 LO_CLANG_CXX="$LO_CLANG_CC"
12214                 AC_MSG_RESULT([$LO_CLANG_CC])
12215             else
12216                 AC_MSG_RESULT([no])
12217             fi
12219             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12220             echo "#include <stdlib.h>" > conftest.c
12221             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12222                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12223             rm -f conftest.c conftest.obj
12224             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12225                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12226             else
12227                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12228             fi
12229         else
12230             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12231             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12232         fi
12233     fi
12234     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12235         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12236         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12237         if test "$clang2_ver" -lt 50002; then
12238             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12239             LO_CLANG_CC=
12240             LO_CLANG_CXX=
12241         fi
12242     fi
12243     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12244         save_CXX="$CXX"
12245         CXX="$LO_CLANG_CXX"
12246         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12247         AC_LANG_PUSH([C++])
12248         save_CXXFLAGS=$CXXFLAGS
12249         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12250         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12251                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12252                 AC_MSG_RESULT([yes])
12253             ], [AC_MSG_RESULT([no])])
12254         CXXFLAGS=$save_CXXFLAGS
12255         AC_LANG_POP([C++])
12256         CXX="$save_CXX"
12257         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12258             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.])
12259         fi
12260     fi
12261     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12262         # Skia is the default on Windows and Mac, so hard-require Clang.
12263         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12264         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12265             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12266         else
12267             AC_MSG_WARN([Clang compiler not found.])
12268         fi
12269     else
12271         save_CXX="$CXX"
12272         CXX="$LO_CLANG_CXX"
12273         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12274         flag_sse2=-msse2
12275         flag_ssse3=-mssse3
12276         flag_sse41=-msse4.1
12277         flag_sse42=-msse4.2
12278         flag_avx=-mavx
12279         flag_avx2=-mavx2
12280         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12281         flag_avx512f=-mavx512f
12282         flag_f16c=-mf16c
12283         flag_fma=-mfma
12285         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12286         AC_LANG_PUSH([C++])
12287         save_CXXFLAGS=$CXXFLAGS
12288         CXXFLAGS="$CXXFLAGS $flag_sse2"
12289         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12290             #include <emmintrin.h>
12291             int main () {
12292                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12293                 c = _mm_xor_si128 (a, b);
12294                 return 0;
12295             }
12296             ])],
12297             [can_compile_sse2=yes],
12298             [can_compile_sse2=no])
12299         AC_LANG_POP([C++])
12300         CXXFLAGS=$save_CXXFLAGS
12301         AC_MSG_RESULT([${can_compile_sse2}])
12302         if test "${can_compile_sse2}" = "yes" ; then
12303             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12304         fi
12306         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12307         AC_LANG_PUSH([C++])
12308         save_CXXFLAGS=$CXXFLAGS
12309         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12310         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12311             #include <tmmintrin.h>
12312             int main () {
12313                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12314                 c = _mm_maddubs_epi16 (a, b);
12315                 return 0;
12316             }
12317             ])],
12318             [can_compile_ssse3=yes],
12319             [can_compile_ssse3=no])
12320         AC_LANG_POP([C++])
12321         CXXFLAGS=$save_CXXFLAGS
12322         AC_MSG_RESULT([${can_compile_ssse3}])
12323         if test "${can_compile_ssse3}" = "yes" ; then
12324             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12325         fi
12327         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12328         AC_LANG_PUSH([C++])
12329         save_CXXFLAGS=$CXXFLAGS
12330         CXXFLAGS="$CXXFLAGS $flag_sse41"
12331         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12332             #include <smmintrin.h>
12333             int main () {
12334                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12335                 c = _mm_cmpeq_epi64 (a, b);
12336                 return 0;
12337             }
12338             ])],
12339             [can_compile_sse41=yes],
12340             [can_compile_sse41=no])
12341         AC_LANG_POP([C++])
12342         CXXFLAGS=$save_CXXFLAGS
12343         AC_MSG_RESULT([${can_compile_sse41}])
12344         if test "${can_compile_sse41}" = "yes" ; then
12345             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12346         fi
12348         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12349         AC_LANG_PUSH([C++])
12350         save_CXXFLAGS=$CXXFLAGS
12351         CXXFLAGS="$CXXFLAGS $flag_sse42"
12352         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12353             #include <nmmintrin.h>
12354             int main () {
12355                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12356                 c = _mm_cmpgt_epi64 (a, b);
12357                 return 0;
12358             }
12359             ])],
12360             [can_compile_sse42=yes],
12361             [can_compile_sse42=no])
12362         AC_LANG_POP([C++])
12363         CXXFLAGS=$save_CXXFLAGS
12364         AC_MSG_RESULT([${can_compile_sse42}])
12365         if test "${can_compile_sse42}" = "yes" ; then
12366             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12367         fi
12369         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12370         AC_LANG_PUSH([C++])
12371         save_CXXFLAGS=$CXXFLAGS
12372         CXXFLAGS="$CXXFLAGS $flag_avx"
12373         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12374             #include <immintrin.h>
12375             int main () {
12376                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12377                 c = _mm256_xor_ps(a, b);
12378                 return 0;
12379             }
12380             ])],
12381             [can_compile_avx=yes],
12382             [can_compile_avx=no])
12383         AC_LANG_POP([C++])
12384         CXXFLAGS=$save_CXXFLAGS
12385         AC_MSG_RESULT([${can_compile_avx}])
12386         if test "${can_compile_avx}" = "yes" ; then
12387             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12388         fi
12390         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12391         AC_LANG_PUSH([C++])
12392         save_CXXFLAGS=$CXXFLAGS
12393         CXXFLAGS="$CXXFLAGS $flag_avx2"
12394         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12395             #include <immintrin.h>
12396             int main () {
12397                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12398                 c = _mm256_maddubs_epi16(a, b);
12399                 return 0;
12400             }
12401             ])],
12402             [can_compile_avx2=yes],
12403             [can_compile_avx2=no])
12404         AC_LANG_POP([C++])
12405         CXXFLAGS=$save_CXXFLAGS
12406         AC_MSG_RESULT([${can_compile_avx2}])
12407         if test "${can_compile_avx2}" = "yes" ; then
12408             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12409         fi
12411         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12412         AC_LANG_PUSH([C++])
12413         save_CXXFLAGS=$CXXFLAGS
12414         CXXFLAGS="$CXXFLAGS $flag_avx512"
12415         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12416             #include <immintrin.h>
12417             int main () {
12418                 __m512i a = _mm512_loadu_si512(0);
12419                 __m512d v1 = _mm512_load_pd(0);
12420                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12421                 __m512d v2 = _mm512_abs_pd(v1);
12422                 return 0;
12423             }
12424             ])],
12425             [can_compile_avx512=yes],
12426             [can_compile_avx512=no])
12427         AC_LANG_POP([C++])
12428         CXXFLAGS=$save_CXXFLAGS
12429         AC_MSG_RESULT([${can_compile_avx512}])
12430         if test "${can_compile_avx512}" = "yes" ; then
12431             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12432             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12433         fi
12435         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12436         AC_LANG_PUSH([C++])
12437         save_CXXFLAGS=$CXXFLAGS
12438         CXXFLAGS="$CXXFLAGS $flag_f16c"
12439         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12440             #include <immintrin.h>
12441             int main () {
12442                 __m128i a = _mm_set1_epi32 (0);
12443                 __m128 c;
12444                 c = _mm_cvtph_ps(a);
12445                 return 0;
12446             }
12447             ])],
12448             [can_compile_f16c=yes],
12449             [can_compile_f16c=no])
12450         AC_LANG_POP([C++])
12451         CXXFLAGS=$save_CXXFLAGS
12452         AC_MSG_RESULT([${can_compile_f16c}])
12453         if test "${can_compile_f16c}" = "yes" ; then
12454             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12455         fi
12457         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12458         AC_LANG_PUSH([C++])
12459         save_CXXFLAGS=$CXXFLAGS
12460         CXXFLAGS="$CXXFLAGS $flag_fma"
12461         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12462             #include <immintrin.h>
12463             int main () {
12464                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12465                 d = _mm256_fmadd_ps(a, b, c);
12466                 return 0;
12467             }
12468             ])],
12469             [can_compile_fma=yes],
12470             [can_compile_fma=no])
12471         AC_LANG_POP([C++])
12472         CXXFLAGS=$save_CXXFLAGS
12473         AC_MSG_RESULT([${can_compile_fma}])
12474         if test "${can_compile_fma}" = "yes" ; then
12475             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12476         fi
12478         CXX="$save_CXX"
12479     fi
12482 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12484 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12485     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12486     AC_LANG_PUSH([C])
12487     save_CC="$CC"
12488     CC="$LO_CLANG_CC"
12489     save_CFLAGS=$CFLAGS
12490     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12491     dnl an empty program will do, we're checking the compiler flags
12492     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12493                       [use_ccache=yes], [use_ccache=no])
12494     CFLAGS=$save_CFLAGS
12495     CC=$save_CC
12496     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12497         AC_MSG_RESULT([yes])
12498     else
12499         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12500         AC_MSG_RESULT([no])
12501     fi
12502     AC_LANG_POP([C])
12504     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12505     AC_LANG_PUSH([C++])
12506     save_CXX="$CXX"
12507     CXX="$LO_CLANG_CXX"
12508     save_CXXFLAGS=$CXXFLAGS
12509     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12510     dnl an empty program will do, we're checking the compiler flags
12511     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12512                       [use_ccache=yes], [use_ccache=no])
12513     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12514         AC_MSG_RESULT([yes])
12515     else
12516         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12517         AC_MSG_RESULT([no])
12518     fi
12519     CXXFLAGS=$save_CXXFLAGS
12520     CXX=$save_CXX
12521     AC_LANG_POP([C++])
12524 AC_SUBST(LO_CLANG_CC)
12525 AC_SUBST(LO_CLANG_CXX)
12526 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12527 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12528 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12529 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12530 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12531 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12532 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12533 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12534 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12535 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12536 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12537 AC_SUBST(CLANG_USE_LD)
12538 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12540 SYSTEM_GPGMEPP=
12542 AC_MSG_CHECKING([whether to enable gpgmepp])
12543 if test "$enable_gpgmepp" = no; then
12544     AC_MSG_RESULT([no])
12545 elif test "$enable_mpl_subset" = "yes"; then
12546     AC_MSG_RESULT([no (MPL only])
12547 elif test "$enable_fuzzers" = "yes"; then
12548     AC_MSG_RESULT([no (oss-fuzz)])
12549 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12550     AC_MSG_RESULT([yes])
12551     dnl ===================================================================
12552     dnl Check for system gpgme
12553     dnl ===================================================================
12554     AC_MSG_CHECKING([which gpgmepp to use])
12555     if test "$with_system_gpgmepp" = "yes"; then
12556         AC_MSG_RESULT([external])
12557         SYSTEM_GPGMEPP=TRUE
12559         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12560         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12561             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12562         AC_CHECK_HEADER(gpgme.h, [],
12563             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12564         AC_CHECK_LIB(gpgmepp, main, [],
12565             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12566         GPGMEPP_LIBS=-lgpgmepp
12567     else
12568         AC_MSG_RESULT([internal])
12569         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12571         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12572         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12573         if test "$_os" != "WINNT"; then
12574             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12575             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12576         fi
12577     fi
12578     ENABLE_GPGMEPP=TRUE
12579     AC_DEFINE([HAVE_FEATURE_GPGME])
12580     AC_PATH_PROG(GPG, gpg)
12581     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12582     # so let's exclude that manually for the moment
12583     if test -n "$GPG" -a "$_os" != "WINNT"; then
12584         # make sure we not only have a working gpgme, but a full working
12585         # gpg installation to run OpenPGP signature verification
12586         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12587     fi
12588     if test "$_os" = "Linux"; then
12589       uid=`id -u`
12590       AC_MSG_CHECKING([for /run/user/$uid])
12591       if test -d /run/user/$uid; then
12592         AC_MSG_RESULT([yes])
12593         AC_PATH_PROG(GPGCONF, gpgconf)
12595         # Older versions of gpgconf are not working as expected, since
12596         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12597         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12598         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12599         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12600         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12601         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12602         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12603           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12604           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12605           if $GPGCONF --dump-options > /dev/null ; then
12606             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12607               AC_MSG_RESULT([yes])
12608               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12609               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12610             else
12611               AC_MSG_RESULT([no])
12612             fi
12613           else
12614             AC_MSG_RESULT([no. missing or broken gpgconf?])
12615           fi
12616         else
12617           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12618         fi
12619       else
12620         AC_MSG_RESULT([no])
12621      fi
12622    fi
12623 else
12624     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12626 AC_SUBST(ENABLE_GPGMEPP)
12627 AC_SUBST(SYSTEM_GPGMEPP)
12628 AC_SUBST(GPG_ERROR_CFLAGS)
12629 AC_SUBST(GPG_ERROR_LIBS)
12630 AC_SUBST(LIBASSUAN_CFLAGS)
12631 AC_SUBST(LIBASSUAN_LIBS)
12632 AC_SUBST(GPGMEPP_CFLAGS)
12633 AC_SUBST(GPGMEPP_LIBS)
12635 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12636 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12637     AC_MSG_RESULT([yes])
12638     ENABLE_MEDIAWIKI=TRUE
12639     BUILD_TYPE="$BUILD_TYPE XSLTML"
12640     if test  "x$with_java" = "xno"; then
12641         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12642     fi
12643 else
12644     AC_MSG_RESULT([no])
12645     ENABLE_MEDIAWIKI=
12646     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12648 AC_SUBST(ENABLE_MEDIAWIKI)
12650 AC_MSG_CHECKING([whether to build the Report Builder])
12651 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12652     AC_MSG_RESULT([yes])
12653     ENABLE_REPORTBUILDER=TRUE
12654     AC_MSG_CHECKING([which jfreereport libs to use])
12655     if test "$with_system_jfreereport" = "yes"; then
12656         SYSTEM_JFREEREPORT=TRUE
12657         AC_MSG_RESULT([external])
12658         if test -z $SAC_JAR; then
12659             SAC_JAR=/usr/share/java/sac.jar
12660         fi
12661         if ! test -f $SAC_JAR; then
12662              AC_MSG_ERROR(sac.jar not found.)
12663         fi
12665         if test -z $LIBXML_JAR; then
12666             if test -f /usr/share/java/libxml-1.0.0.jar; then
12667                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12668             elif test -f /usr/share/java/libxml.jar; then
12669                 LIBXML_JAR=/usr/share/java/libxml.jar
12670             else
12671                 AC_MSG_ERROR(libxml.jar replacement not found.)
12672             fi
12673         elif ! test -f $LIBXML_JAR; then
12674             AC_MSG_ERROR(libxml.jar not found.)
12675         fi
12677         if test -z $FLUTE_JAR; then
12678             if test -f /usr/share/java/flute-1.3.0.jar; then
12679                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12680             elif test -f /usr/share/java/flute.jar; then
12681                 FLUTE_JAR=/usr/share/java/flute.jar
12682             else
12683                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12684             fi
12685         elif ! test -f $FLUTE_JAR; then
12686             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12687         fi
12689         if test -z $JFREEREPORT_JAR; then
12690             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12691                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12692             elif test -f /usr/share/java/flow-engine.jar; then
12693                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12694             else
12695                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12696             fi
12697         elif ! test -f  $JFREEREPORT_JAR; then
12698                 AC_MSG_ERROR(jfreereport.jar not found.)
12699         fi
12701         if test -z $LIBLAYOUT_JAR; then
12702             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12703                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12704             elif test -f /usr/share/java/liblayout.jar; then
12705                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12706             else
12707                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12708             fi
12709         elif ! test -f $LIBLAYOUT_JAR; then
12710                 AC_MSG_ERROR(liblayout.jar not found.)
12711         fi
12713         if test -z $LIBLOADER_JAR; then
12714             if test -f /usr/share/java/libloader-1.0.0.jar; then
12715                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12716             elif test -f /usr/share/java/libloader.jar; then
12717                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12718             else
12719                 AC_MSG_ERROR(libloader.jar replacement not found.)
12720             fi
12721         elif ! test -f  $LIBLOADER_JAR; then
12722             AC_MSG_ERROR(libloader.jar not found.)
12723         fi
12725         if test -z $LIBFORMULA_JAR; then
12726             if test -f /usr/share/java/libformula-0.2.0.jar; then
12727                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12728             elif test -f /usr/share/java/libformula.jar; then
12729                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12730             else
12731                 AC_MSG_ERROR(libformula.jar replacement not found.)
12732             fi
12733         elif ! test -f $LIBFORMULA_JAR; then
12734                 AC_MSG_ERROR(libformula.jar not found.)
12735         fi
12737         if test -z $LIBREPOSITORY_JAR; then
12738             if test -f /usr/share/java/librepository-1.0.0.jar; then
12739                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12740             elif test -f /usr/share/java/librepository.jar; then
12741                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12742             else
12743                 AC_MSG_ERROR(librepository.jar replacement not found.)
12744             fi
12745         elif ! test -f $LIBREPOSITORY_JAR; then
12746             AC_MSG_ERROR(librepository.jar not found.)
12747         fi
12749         if test -z $LIBFONTS_JAR; then
12750             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12751                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12752             elif test -f /usr/share/java/libfonts.jar; then
12753                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12754             else
12755                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12756             fi
12757         elif ! test -f $LIBFONTS_JAR; then
12758                 AC_MSG_ERROR(libfonts.jar not found.)
12759         fi
12761         if test -z $LIBSERIALIZER_JAR; then
12762             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12763                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12764             elif test -f /usr/share/java/libserializer.jar; then
12765                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12766             else
12767                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12768             fi
12769         elif ! test -f $LIBSERIALIZER_JAR; then
12770                 AC_MSG_ERROR(libserializer.jar not found.)
12771         fi
12773         if test -z $LIBBASE_JAR; then
12774             if test -f /usr/share/java/libbase-1.0.0.jar; then
12775                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12776             elif test -f /usr/share/java/libbase.jar; then
12777                 LIBBASE_JAR=/usr/share/java/libbase.jar
12778             else
12779                 AC_MSG_ERROR(libbase.jar replacement not found.)
12780             fi
12781         elif ! test -f $LIBBASE_JAR; then
12782             AC_MSG_ERROR(libbase.jar not found.)
12783         fi
12785     else
12786         AC_MSG_RESULT([internal])
12787         SYSTEM_JFREEREPORT=
12788         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12789         NEED_ANT=TRUE
12790     fi
12791 else
12792     AC_MSG_RESULT([no])
12793     ENABLE_REPORTBUILDER=
12794     SYSTEM_JFREEREPORT=
12796 AC_SUBST(ENABLE_REPORTBUILDER)
12797 AC_SUBST(SYSTEM_JFREEREPORT)
12798 AC_SUBST(SAC_JAR)
12799 AC_SUBST(LIBXML_JAR)
12800 AC_SUBST(FLUTE_JAR)
12801 AC_SUBST(JFREEREPORT_JAR)
12802 AC_SUBST(LIBBASE_JAR)
12803 AC_SUBST(LIBLAYOUT_JAR)
12804 AC_SUBST(LIBLOADER_JAR)
12805 AC_SUBST(LIBFORMULA_JAR)
12806 AC_SUBST(LIBREPOSITORY_JAR)
12807 AC_SUBST(LIBFONTS_JAR)
12808 AC_SUBST(LIBSERIALIZER_JAR)
12810 # scripting provider for BeanShell?
12811 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12812 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12813     AC_MSG_RESULT([yes])
12814     ENABLE_SCRIPTING_BEANSHELL=TRUE
12816     dnl ===================================================================
12817     dnl Check for system beanshell
12818     dnl ===================================================================
12819     AC_MSG_CHECKING([which beanshell to use])
12820     if test "$with_system_beanshell" = "yes"; then
12821         AC_MSG_RESULT([external])
12822         SYSTEM_BSH=TRUE
12823         if test -z $BSH_JAR; then
12824             BSH_JAR=/usr/share/java/bsh.jar
12825         fi
12826         if ! test -f $BSH_JAR; then
12827             AC_MSG_ERROR(bsh.jar not found.)
12828         fi
12829     else
12830         AC_MSG_RESULT([internal])
12831         SYSTEM_BSH=
12832         BUILD_TYPE="$BUILD_TYPE BSH"
12833     fi
12834 else
12835     AC_MSG_RESULT([no])
12836     ENABLE_SCRIPTING_BEANSHELL=
12837     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12839 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12840 AC_SUBST(SYSTEM_BSH)
12841 AC_SUBST(BSH_JAR)
12843 # scripting provider for JavaScript?
12844 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12845 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12846     AC_MSG_RESULT([yes])
12847     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12849     dnl ===================================================================
12850     dnl Check for system rhino
12851     dnl ===================================================================
12852     AC_MSG_CHECKING([which rhino to use])
12853     if test "$with_system_rhino" = "yes"; then
12854         AC_MSG_RESULT([external])
12855         SYSTEM_RHINO=TRUE
12856         if test -z $RHINO_JAR; then
12857             RHINO_JAR=/usr/share/java/js.jar
12858         fi
12859         if ! test -f $RHINO_JAR; then
12860             AC_MSG_ERROR(js.jar not found.)
12861         fi
12862     else
12863         AC_MSG_RESULT([internal])
12864         SYSTEM_RHINO=
12865         BUILD_TYPE="$BUILD_TYPE RHINO"
12866         NEED_ANT=TRUE
12867     fi
12868 else
12869     AC_MSG_RESULT([no])
12870     ENABLE_SCRIPTING_JAVASCRIPT=
12871     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12873 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12874 AC_SUBST(SYSTEM_RHINO)
12875 AC_SUBST(RHINO_JAR)
12877 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12878 # paths should be added to library search path. So lets put all 64-bit
12879 # platforms there.
12880 supports_multilib=
12881 case "$host_cpu" in
12882 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12883     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12884         supports_multilib="yes"
12885     fi
12886     ;;
12888     ;;
12889 esac
12891 dnl ===================================================================
12892 dnl QT5 Integration
12893 dnl ===================================================================
12895 QT5_CFLAGS=""
12896 QT5_LIBS=""
12897 QMAKE5="qmake"
12898 MOC5="moc"
12899 QT5_GOBJECT_CFLAGS=""
12900 QT5_GOBJECT_LIBS=""
12901 QT5_HAVE_GOBJECT=""
12902 QT5_PLATFORMS_SRCDIR=""
12903 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12904         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12905         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12906 then
12907     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12908     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12910     if test -n "$supports_multilib"; then
12911         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12912     fi
12914     qt5_test_include="QtWidgets/qapplication.h"
12915     if test "$_os" = "Emscripten"; then
12916         qt5_test_library="libQt5Widgets.a"
12917     else
12918         qt5_test_library="libQt5Widgets.so"
12919     fi
12921     dnl Check for qmake5
12922     if test -n "$QT5DIR"; then
12923         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12924     else
12925         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12926     fi
12927     if test "$QMAKE5" = "no"; then
12928         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12929     else
12930         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12931         if test -z "$qmake5_test_ver"; then
12932             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12933         fi
12934         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12935         qt5_minimal_minor="6"
12936         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12937             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12938         else
12939             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12940         fi
12941     fi
12943     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12944     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12945     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12946     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12948     AC_MSG_CHECKING([for Qt5 headers])
12949     qt5_incdir="no"
12950     for inc_dir in $qt5_incdirs; do
12951         if test -r "$inc_dir/$qt5_test_include"; then
12952             qt5_incdir="$inc_dir"
12953             break
12954         fi
12955     done
12956     AC_MSG_RESULT([$qt5_incdir])
12957     if test "x$qt5_incdir" = "xno"; then
12958         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12959     fi
12960     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12961     AC_LANG_PUSH([C++])
12962     save_CPPFLAGS=$CPPFLAGS
12963     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12964     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12965         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12966     CPPFLAGS=$save_CPPFLAGS
12967     AC_LANG_POP([C++])
12969     AC_MSG_CHECKING([for Qt5 libraries])
12970     qt5_libdir="no"
12971     for lib_dir in $qt5_libdirs; do
12972         if test -r "$lib_dir/$qt5_test_library"; then
12973             qt5_libdir="$lib_dir"
12974             break
12975         fi
12976     done
12977     AC_MSG_RESULT([$qt5_libdir])
12978     if test "x$qt5_libdir" = "xno"; then
12979         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12980     fi
12982     if test "$_os" = "Emscripten"; then
12983         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12984             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12985         fi
12986         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12987             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12988         fi
12990         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12991         if ! test -x "$EMSDK_LLVM_NM"; then
12992             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12993         fi
12994         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12995             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12996         fi
12997         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12998         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12999             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13000         fi
13001         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13002             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13003         fi
13004     fi
13006     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13007     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13008     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13009     if test "$_os" = "Emscripten"; then
13010         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13011     fi
13013     if test "$USING_X11" = TRUE; then
13014         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13015         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13016             QT5_HAVE_XCB_ICCCM=1
13017             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13018         ],[
13019             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)])
13020             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13021         ])
13022         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13023         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13024         QT5_USING_X11=1
13025         AC_DEFINE(QT5_USING_X11)
13026     fi
13028     dnl Check for Meta Object Compiler
13030     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13031     if test "$MOC5" = "no"; then
13032         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13033 the root of your Qt installation by exporting QT5DIR before running "configure".])
13034     fi
13036     if test "$test_gstreamer_1_0" = yes; then
13037         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13038                 QT5_HAVE_GOBJECT=1
13039                 AC_DEFINE(QT5_HAVE_GOBJECT)
13040             ],
13041             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13042         )
13043     fi
13045 AC_SUBST(QT5_CFLAGS)
13046 AC_SUBST(QT5_LIBS)
13047 AC_SUBST(MOC5)
13048 AC_SUBST(QT5_GOBJECT_CFLAGS)
13049 AC_SUBST(QT5_GOBJECT_LIBS)
13050 AC_SUBST(QT5_HAVE_GOBJECT)
13051 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13053 dnl ===================================================================
13054 dnl QT6 Integration
13055 dnl ===================================================================
13057 QT6_CFLAGS=""
13058 QT6_LIBS=""
13059 QMAKE6="qmake"
13060 MOC6="moc"
13061 QT6_PLATFORMS_SRCDIR=""
13062 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13063 then
13064     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13065     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13067     if test -n "$supports_multilib"; then
13068         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13069     fi
13071     qt6_test_include="QtWidgets/qapplication.h"
13072     if test "$_os" = "Emscripten"; then
13073         qt6_test_library="libQt6Widgets.a"
13074     else
13075         qt6_test_library="libQt6Widgets.so"
13076     fi
13078     dnl Check for qmake6
13079     if test -n "$QT6DIR"; then
13080         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13081     else
13082         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13083     fi
13084     if test "$QMAKE6" = "no"; then
13085         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13086     else
13087         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13088         if test -z "$qmake6_test_ver"; then
13089             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13090         fi
13091         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13092     fi
13094     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13095     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13096     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13097     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13099     AC_MSG_CHECKING([for Qt6 headers])
13100     qt6_incdir="no"
13101     for inc_dir in $qt6_incdirs; do
13102         if test -r "$inc_dir/$qt6_test_include"; then
13103             qt6_incdir="$inc_dir"
13104             break
13105         fi
13106     done
13107     AC_MSG_RESULT([$qt6_incdir])
13108     if test "x$qt6_incdir" = "xno"; then
13109         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13110     fi
13111     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13112     AC_LANG_PUSH([C++])
13113     save_CPPFLAGS=$CPPFLAGS
13114     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13115     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13116         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13117     CPPFLAGS=$save_CPPFLAGS
13118     AC_LANG_POP([C++])
13120     AC_MSG_CHECKING([for Qt6 libraries])
13121     qt6_libdir="no"
13122     for lib_dir in $qt6_libdirs; do
13123         if test -r "$lib_dir/$qt6_test_library"; then
13124             qt6_libdir="$lib_dir"
13125             break
13126         fi
13127     done
13128     AC_MSG_RESULT([$qt6_libdir])
13129     if test "x$qt6_libdir" = "xno"; then
13130         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13131     fi
13133     if test "$_os" = "Emscripten"; then
13134         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13135             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13136         fi
13137         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13138             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13139         fi
13140     fi
13142     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13143     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13144     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13145     if test "$_os" = "Emscripten"; then
13146         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13147     fi
13149     if test "$USING_X11" = TRUE; then
13150         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13151         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13152         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13153         QT6_USING_X11=1
13154         AC_DEFINE(QT6_USING_X11)
13155     fi
13157     dnl Check for Meta Object Compiler
13159     for lib_dir in $qt6_libdirs; do
13160         if test -z "$qt6_libexec_dirs"; then
13161             qt6_libexec_dirs="$lib_dir/libexec"
13162         else
13163             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13164         fi
13165     done
13166     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
13167     if test "$MOC6" = "no"; then
13168         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13169 the root of your Qt installation by exporting QT6DIR before running "configure".])
13170     else
13171         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13172         if test -z "$moc6_test_ver"; then
13173             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13174         fi
13175         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13176     fi
13178 AC_SUBST(QT6_CFLAGS)
13179 AC_SUBST(QT6_LIBS)
13180 AC_SUBST(MOC6)
13181 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13183 dnl ===================================================================
13184 dnl KF5 Integration
13185 dnl ===================================================================
13187 KF5_CFLAGS=""
13188 KF5_LIBS=""
13189 KF5_CONFIG="kf5-config"
13190 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13191         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13192 then
13193     if test "$OS" = "HAIKU"; then
13194         haiku_arch="`echo $RTL_ARCH | tr X x`"
13195         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13196         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13197     fi
13199     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13200     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13201     if test -n "$supports_multilib"; then
13202         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13203     fi
13205     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13206     kf5_test_library="libKF5KIOFileWidgets.so"
13207     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13209     dnl kf5 KDE4 support compatibility installed
13210     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13211     if test "$KF5_CONFIG" != "no"; then
13212         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13213         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13214     fi
13216     dnl Check for KF5 headers
13217     AC_MSG_CHECKING([for KF5 headers])
13218     kf5_incdir="no"
13219     for kf5_check in $kf5_incdirs; do
13220         if test -r "$kf5_check/$kf5_test_include"; then
13221             kf5_incdir="$kf5_check/KF5"
13222             break
13223         fi
13224     done
13225     AC_MSG_RESULT([$kf5_incdir])
13226     if test "x$kf5_incdir" = "xno"; then
13227         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13228     fi
13230     dnl Check for KF5 libraries
13231     AC_MSG_CHECKING([for KF5 libraries])
13232     kf5_libdir="no"
13233     for kf5_check in $kf5_libdirs; do
13234         if test -r "$kf5_check/$kf5_test_library"; then
13235             kf5_libdir="$kf5_check"
13236             break
13237         fi
13238     done
13240     AC_MSG_RESULT([$kf5_libdir])
13241     if test "x$kf5_libdir" = "xno"; then
13242         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13243     fi
13245     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"
13246     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13247     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13249     if test "$USING_X11" = TRUE; then
13250         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13251     fi
13253     AC_LANG_PUSH([C++])
13254     save_CXXFLAGS=$CXXFLAGS
13255     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13256     AC_MSG_CHECKING([whether KDE is >= 5.0])
13257        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13258 #include <kcoreaddons_version.h>
13260 int main(int argc, char **argv) {
13261        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13262        else return 1;
13264        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13265     CXXFLAGS=$save_CXXFLAGS
13266     AC_LANG_POP([C++])
13268 AC_SUBST(KF5_CFLAGS)
13269 AC_SUBST(KF5_LIBS)
13271 dnl ===================================================================
13272 dnl Test whether to include Evolution 2 support
13273 dnl ===================================================================
13274 AC_MSG_CHECKING([whether to enable evolution 2 support])
13275 if test "$enable_evolution2" = yes; then
13276     AC_MSG_RESULT([yes])
13277     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13278     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13279     FilterLibs "${GOBJECT_LIBS}"
13280     GOBJECT_LIBS="${filteredlibs}"
13281     ENABLE_EVOAB2="TRUE"
13282 else
13283     AC_MSG_RESULT([no])
13285 AC_SUBST(ENABLE_EVOAB2)
13286 AC_SUBST(GOBJECT_CFLAGS)
13287 AC_SUBST(GOBJECT_LIBS)
13289 dnl ===================================================================
13290 dnl Test which themes to include
13291 dnl ===================================================================
13292 AC_MSG_CHECKING([which themes to include])
13293 # if none given use default subset of available themes
13294 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13295     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"
13298 WITH_THEMES=""
13299 if test "x$with_theme" != "xno"; then
13300     for theme in $with_theme; do
13301         case $theme in
13302         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" ;;
13303         default) real_theme=colibre ;;
13304         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13305         esac
13306         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13307     done
13309 AC_MSG_RESULT([$WITH_THEMES])
13310 AC_SUBST([WITH_THEMES])
13311 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13312 for theme in $with_theme; do
13313     case $theme in
13314     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13315     *) ;;
13316     esac
13317 done
13319 ###############################################################################
13320 # Extensions checking
13321 ###############################################################################
13322 AC_MSG_CHECKING([for extensions integration])
13323 if test "x$enable_extension_integration" != "xno"; then
13324     WITH_EXTENSION_INTEGRATION=TRUE
13325     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13326     AC_MSG_RESULT([yes, use integration])
13327 else
13328     WITH_EXTENSION_INTEGRATION=
13329     AC_MSG_RESULT([no, do not integrate])
13331 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13333 dnl Should any extra extensions be included?
13334 dnl There are standalone tests for each of these below.
13335 WITH_EXTRA_EXTENSIONS=
13336 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13338 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13339 if test "x$with_java" != "xno"; then
13340     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13343 AC_MSG_CHECKING([whether to build opens___.ttf])
13344 if test "$enable_build_opensymbol" = "yes"; then
13345     AC_MSG_RESULT([yes])
13346     AC_PATH_PROG(FONTFORGE, fontforge)
13347     if test -z "$FONTFORGE"; then
13348         AC_MSG_ERROR([fontforge not installed])
13349     fi
13350 else
13351     AC_MSG_RESULT([no])
13352     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13354 AC_SUBST(FONTFORGE)
13356 dnl ===================================================================
13357 dnl Test whether to include fonts
13358 dnl ===================================================================
13359 AC_MSG_CHECKING([whether to include third-party fonts])
13360 if test "$with_fonts" != "no"; then
13361     AC_MSG_RESULT([yes])
13362     WITH_FONTS=TRUE
13363     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13364     AC_DEFINE(HAVE_MORE_FONTS)
13365 else
13366     AC_MSG_RESULT([no])
13367     WITH_FONTS=
13368     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13370 AC_SUBST(WITH_FONTS)
13373 dnl ===================================================================
13374 dnl Test whether to enable online update service
13375 dnl ===================================================================
13376 AC_MSG_CHECKING([whether to enable online update])
13377 ENABLE_ONLINE_UPDATE=
13378 ENABLE_ONLINE_UPDATE_MAR=
13379 UPDATE_CONFIG=
13380 if test "$enable_online_update" = ""; then
13381     AC_MSG_RESULT([no])
13382 else
13383     if test "$enable_online_update" = "mar"; then
13384         AC_MSG_RESULT([yes - MAR-based online update])
13385         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13386         if test "$with_update_config" = ""; then
13387             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13388         fi
13389         UPDATE_CONFIG="$with_update_config"
13390         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13391     elif test "$enable_online_update" = "yes"; then
13392         AC_MSG_RESULT([yes])
13393         ENABLE_ONLINE_UPDATE="TRUE"
13394     else
13395         AC_MSG_RESULT([no])
13396     fi
13398 AC_SUBST(ENABLE_ONLINE_UPDATE)
13399 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13400 AC_SUBST(UPDATE_CONFIG)
13403 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13404 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13405     if test "x$with_privacy_policy_url" = "xundefined"; then
13406         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13407     fi
13409 AC_SUBST(PRIVACY_POLICY_URL)
13410 dnl ===================================================================
13411 dnl Test whether we need bzip2
13412 dnl ===================================================================
13413 SYSTEM_BZIP2=
13414 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13415     AC_MSG_CHECKING([whether to use system bzip2])
13416     if test "$with_system_bzip2" = yes; then
13417         SYSTEM_BZIP2=TRUE
13418         AC_MSG_RESULT([yes])
13419         PKG_CHECK_MODULES(BZIP2, bzip2)
13420         FilterLibs "${BZIP2_LIBS}"
13421         BZIP2_LIBS="${filteredlibs}"
13422     else
13423         AC_MSG_RESULT([no])
13424         BUILD_TYPE="$BUILD_TYPE BZIP2"
13425     fi
13427 AC_SUBST(SYSTEM_BZIP2)
13428 AC_SUBST(BZIP2_CFLAGS)
13429 AC_SUBST(BZIP2_LIBS)
13431 dnl ===================================================================
13432 dnl Test whether to enable extension update
13433 dnl ===================================================================
13434 AC_MSG_CHECKING([whether to enable extension update])
13435 ENABLE_EXTENSION_UPDATE=
13436 if test "x$enable_extension_update" = "xno"; then
13437     AC_MSG_RESULT([no])
13438 else
13439     AC_MSG_RESULT([yes])
13440     ENABLE_EXTENSION_UPDATE="TRUE"
13441     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13442     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13444 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13447 dnl ===================================================================
13448 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13449 dnl ===================================================================
13450 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13451 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13452     AC_MSG_RESULT([no])
13453     ENABLE_SILENT_MSI=
13454 else
13455     AC_MSG_RESULT([yes])
13456     ENABLE_SILENT_MSI=TRUE
13457     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13459 AC_SUBST(ENABLE_SILENT_MSI)
13461 dnl ===================================================================
13462 dnl Check for WiX tools.
13463 dnl ===================================================================
13464 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13465     AC_MSG_RESULT([no])
13466     ENABLE_WIX=
13467 else
13468     AC_MSG_RESULT([yes])
13469     if ! which candle  >/dev/null 2>&1; then
13470       AC_MSG_ERROR([WiX requested but WiX toolset not found.])
13471     fi
13472     ENABLE_WIX=TRUE
13474 AC_SUBST(ENABLE_SILENT_MSI)
13476 AC_MSG_CHECKING([whether and how to use Xinerama])
13477 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13478     if test "$x_libraries" = "default_x_libraries"; then
13479         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13480         if test "x$XINERAMALIB" = x; then
13481            XINERAMALIB="/usr/lib"
13482         fi
13483     else
13484         XINERAMALIB="$x_libraries"
13485     fi
13486     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13487         # we have both versions, let the user decide but use the dynamic one
13488         # per default
13489         USE_XINERAMA=TRUE
13490         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13491             XINERAMA_LINK=dynamic
13492         else
13493             XINERAMA_LINK=static
13494         fi
13495     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13496         # we have only the dynamic version
13497         USE_XINERAMA=TRUE
13498         XINERAMA_LINK=dynamic
13499     elif test -e "$XINERAMALIB/libXinerama.a"; then
13500         # static version
13501         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13502             USE_XINERAMA=TRUE
13503             XINERAMA_LINK=static
13504         else
13505             USE_XINERAMA=
13506             XINERAMA_LINK=none
13507         fi
13508     else
13509         # no Xinerama
13510         USE_XINERAMA=
13511         XINERAMA_LINK=none
13512     fi
13513     if test "$USE_XINERAMA" = "TRUE"; then
13514         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13515         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13516             [AC_MSG_ERROR(Xinerama header not found.)], [])
13517         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13518         if test "x$XEXTLIB" = x; then
13519            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13520         fi
13521         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13522         if test "$_os" = "FreeBSD"; then
13523             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13524         fi
13525         if test "$_os" = "Linux"; then
13526             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13527         fi
13528         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13529             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13530     else
13531         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13532     fi
13533 else
13534     USE_XINERAMA=
13535     XINERAMA_LINK=none
13536     AC_MSG_RESULT([no])
13538 AC_SUBST(USE_XINERAMA)
13539 AC_SUBST(XINERAMA_LINK)
13541 dnl ===================================================================
13542 dnl Test whether to build cairo or rely on the system version
13543 dnl ===================================================================
13545 if test "$test_cairo" = "yes"; then
13546     AC_MSG_CHECKING([whether to use the system cairo])
13548     : ${with_system_cairo:=$with_system_libs}
13549     if test "$with_system_cairo" = "yes"; then
13550         SYSTEM_CAIRO=TRUE
13551         AC_MSG_RESULT([yes])
13553         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13554         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13555         FilterLibs "${CAIRO_LIBS}"
13556         CAIRO_LIBS="${filteredlibs}"
13558         if test "$test_xrender" = "yes"; then
13559             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13560             AC_LANG_PUSH([C])
13561             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13562 #ifdef PictStandardA8
13563 #else
13564       return fail;
13565 #endif
13566 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13568             AC_LANG_POP([C])
13569         fi
13570     else
13571         AC_MSG_RESULT([no])
13572         BUILD_TYPE="$BUILD_TYPE CAIRO"
13573     fi
13575     if test "$enable_cairo_canvas" != no; then
13576         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13577         ENABLE_CAIRO_CANVAS=TRUE
13578     fi
13581 AC_SUBST(CAIRO_CFLAGS)
13582 AC_SUBST(CAIRO_LIBS)
13583 AC_SUBST(ENABLE_CAIRO_CANVAS)
13584 AC_SUBST(SYSTEM_CAIRO)
13586 dnl ===================================================================
13587 dnl Test whether to use avahi
13588 dnl ===================================================================
13589 if test "$_os" = "WINNT"; then
13590     # Windows uses bundled mDNSResponder
13591     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13592 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13593     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13594                       [ENABLE_AVAHI="TRUE"])
13595     AC_DEFINE(HAVE_FEATURE_AVAHI)
13596     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13597     FilterLibs "${AVAHI_LIBS}"
13598     AVAHI_LIBS="${filteredlibs}"
13601 AC_SUBST(ENABLE_AVAHI)
13602 AC_SUBST(AVAHI_CFLAGS)
13603 AC_SUBST(AVAHI_LIBS)
13605 dnl ===================================================================
13606 dnl Test whether to use liblangtag
13607 dnl ===================================================================
13608 SYSTEM_LIBLANGTAG=
13609 AC_MSG_CHECKING([whether to use system liblangtag])
13610 if test "$with_system_liblangtag" = yes; then
13611     SYSTEM_LIBLANGTAG=TRUE
13612     AC_MSG_RESULT([yes])
13613     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13614     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13615     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13616     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13617     FilterLibs "${LIBLANGTAG_LIBS}"
13618     LIBLANGTAG_LIBS="${filteredlibs}"
13619 else
13620     SYSTEM_LIBLANGTAG=
13621     AC_MSG_RESULT([no])
13622     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13623     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13624     if test "$COM" = "MSC"; then
13625         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13626     else
13627         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13628     fi
13630 AC_SUBST(SYSTEM_LIBLANGTAG)
13631 AC_SUBST(LIBLANGTAG_CFLAGS)
13632 AC_SUBST(LIBLANGTAG_LIBS)
13634 dnl ===================================================================
13635 dnl Test whether to build libpng or rely on the system version
13636 dnl ===================================================================
13638 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13639 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13640 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13642 dnl ===================================================================
13643 dnl Test whether to build libtiff or rely on the system version
13644 dnl ===================================================================
13646 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13648 dnl ===================================================================
13649 dnl Test whether to build libwebp or rely on the system version
13650 dnl ===================================================================
13652 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13654 dnl ===================================================================
13655 dnl Check for runtime JVM search path
13656 dnl ===================================================================
13657 if test "$ENABLE_JAVA" != ""; then
13658     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13659     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13660         AC_MSG_RESULT([yes])
13661         if ! test -d "$with_jvm_path"; then
13662             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13663         fi
13664         if ! test -d "$with_jvm_path"jvm; then
13665             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13666         fi
13667         JVM_ONE_PATH_CHECK="$with_jvm_path"
13668         AC_SUBST(JVM_ONE_PATH_CHECK)
13669     else
13670         AC_MSG_RESULT([no])
13671     fi
13674 dnl ===================================================================
13675 dnl Test for the presence of Ant and that it works
13676 dnl ===================================================================
13678 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13679     ANT_HOME=; export ANT_HOME
13680     WITH_ANT_HOME=; export WITH_ANT_HOME
13681     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13682         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13683             if test "$_os" = "WINNT"; then
13684                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13685             else
13686                 with_ant_home="$LODE_HOME/opt/ant"
13687             fi
13688         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13689             with_ant_home="$LODE_HOME/opt/ant"
13690         fi
13691     fi
13692     if test -z "$with_ant_home"; then
13693         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13694     else
13695         if test "$_os" = "WINNT"; then
13696             # AC_PATH_PROGS needs unix path
13697             with_ant_home=`cygpath -u "$with_ant_home"`
13698         fi
13699         AbsolutePath "$with_ant_home"
13700         with_ant_home=$absolute_path
13701         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13702         WITH_ANT_HOME=$with_ant_home
13703         ANT_HOME=$with_ant_home
13704     fi
13706     if test -z "$ANT"; then
13707         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13708     else
13709         # resolve relative or absolute symlink
13710         while test -h "$ANT"; do
13711             a_cwd=`pwd`
13712             a_basename=`basename "$ANT"`
13713             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13714             cd "`dirname "$ANT"`"
13715             cd "`dirname "$a_script"`"
13716             ANT="`pwd`"/"`basename "$a_script"`"
13717             cd "$a_cwd"
13718         done
13720         AC_MSG_CHECKING([if $ANT works])
13721         mkdir -p conftest.dir
13722         a_cwd=$(pwd)
13723         cd conftest.dir
13724         cat > conftest.java << EOF
13725         public class conftest {
13726             int testmethod(int a, int b) {
13727                     return a + b;
13728             }
13729         }
13732         cat > conftest.xml << EOF
13733         <project name="conftest" default="conftest">
13734         <target name="conftest">
13735             <javac srcdir="." includes="conftest.java">
13736             </javac>
13737         </target>
13738         </project>
13741         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13742         if test $? = 0 -a -f ./conftest.class; then
13743             AC_MSG_RESULT([Ant works])
13744             if test -z "$WITH_ANT_HOME"; then
13745                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13746                 if test -z "$ANT_HOME"; then
13747                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13748                 fi
13749             else
13750                 ANT_HOME="$WITH_ANT_HOME"
13751             fi
13752         else
13753             echo "configure: Ant test failed" >&5
13754             cat conftest.java >&5
13755             cat conftest.xml >&5
13756             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13757         fi
13758         cd "$a_cwd"
13759         rm -fr conftest.dir
13760     fi
13761     if test -z "$ANT_HOME"; then
13762         ANT_HOME="NO_ANT_HOME"
13763     else
13764         PathFormat "$ANT_HOME"
13765         ANT_HOME="$formatted_path"
13766         PathFormat "$ANT"
13767         ANT="$formatted_path"
13768     fi
13770     dnl Checking for ant.jar
13771     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13772         AC_MSG_CHECKING([Ant lib directory])
13773         if test -f $ANT_HOME/lib/ant.jar; then
13774             ANT_LIB="$ANT_HOME/lib"
13775         else
13776             if test -f $ANT_HOME/ant.jar; then
13777                 ANT_LIB="$ANT_HOME"
13778             else
13779                 if test -f /usr/share/java/ant.jar; then
13780                     ANT_LIB=/usr/share/java
13781                 else
13782                     if test -f /usr/share/ant-core/lib/ant.jar; then
13783                         ANT_LIB=/usr/share/ant-core/lib
13784                     else
13785                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13786                             ANT_LIB="$ANT_HOME/lib/ant"
13787                         else
13788                             if test -f /usr/share/lib/ant/ant.jar; then
13789                                 ANT_LIB=/usr/share/lib/ant
13790                             else
13791                                 AC_MSG_ERROR([Ant libraries not found!])
13792                             fi
13793                         fi
13794                     fi
13795                 fi
13796             fi
13797         fi
13798         PathFormat "$ANT_LIB"
13799         ANT_LIB="$formatted_path"
13800         AC_MSG_RESULT([Ant lib directory found.])
13801     fi
13803     ant_minver=1.6.0
13804     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13806     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13807     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13808     ant_version_major=`echo $ant_version | cut -d. -f1`
13809     ant_version_minor=`echo $ant_version | cut -d. -f2`
13810     echo "configure: ant_version $ant_version " >&5
13811     echo "configure: ant_version_major $ant_version_major " >&5
13812     echo "configure: ant_version_minor $ant_version_minor " >&5
13813     if test "$ant_version_major" -ge "2"; then
13814         AC_MSG_RESULT([yes, $ant_version])
13815     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13816         AC_MSG_RESULT([yes, $ant_version])
13817     else
13818         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13819     fi
13821     rm -f conftest* core core.* *.core
13823 AC_SUBST(ANT)
13824 AC_SUBST(ANT_HOME)
13825 AC_SUBST(ANT_LIB)
13827 OOO_JUNIT_JAR=
13828 HAMCREST_JAR=
13829 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13830     AC_MSG_CHECKING([for JUnit 4])
13831     if test "$with_junit" = "yes"; then
13832         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13833             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13834         elif test -e /usr/share/java/junit4.jar; then
13835             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13836         else
13837            if test -e /usr/share/lib/java/junit.jar; then
13838               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13839            else
13840               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13841            fi
13842         fi
13843     else
13844         OOO_JUNIT_JAR=$with_junit
13845     fi
13846     if test "$_os" = "WINNT"; then
13847         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13848     fi
13849     printf 'import org.junit.Before;' > conftest.java
13850     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13851         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13852     else
13853         AC_MSG_ERROR(
13854 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13855  specify its pathname via --with-junit=..., or disable it via --without-junit])
13856     fi
13857     rm -f conftest.class conftest.java
13858     if test $OOO_JUNIT_JAR != ""; then
13859         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13860     fi
13862     AC_MSG_CHECKING([for included Hamcrest])
13863     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13864     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13865         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13866     else
13867         AC_MSG_RESULT([Not included])
13868         AC_MSG_CHECKING([for standalone hamcrest jar.])
13869         if test "$with_hamcrest" = "yes"; then
13870             if test -e /usr/share/lib/java/hamcrest.jar; then
13871                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13872             elif test -e /usr/share/java/hamcrest/core.jar; then
13873                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13874             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13875                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13876             else
13877                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13878             fi
13879         else
13880             HAMCREST_JAR=$with_hamcrest
13881         fi
13882         if test "$_os" = "WINNT"; then
13883             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13884         fi
13885         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13886             AC_MSG_RESULT([$HAMCREST_JAR])
13887         else
13888             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),
13889                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13890         fi
13891     fi
13892     rm -f conftest.class conftest.java
13894 AC_SUBST(OOO_JUNIT_JAR)
13895 AC_SUBST(HAMCREST_JAR)
13898 AC_SUBST(SCPDEFS)
13901 # check for wget and curl
13903 WGET=
13904 CURL=
13906 if test "$enable_fetch_external" != "no"; then
13908 CURL=`which curl 2>/dev/null`
13910 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13911     # wget new enough?
13912     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13913     if test $? -eq 0; then
13914         WGET=$i
13915         break
13916     fi
13917 done
13919 if test -z "$WGET" -a -z "$CURL"; then
13920     AC_MSG_ERROR([neither wget nor curl found!])
13925 AC_SUBST(WGET)
13926 AC_SUBST(CURL)
13929 # check for sha256sum
13931 SHA256SUM=
13933 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13934     eval "$i -a 256 --version" > /dev/null 2>&1
13935     ret=$?
13936     if test $ret -eq 0; then
13937         SHA256SUM="$i -a 256"
13938         break
13939     fi
13940 done
13942 if test -z "$SHA256SUM"; then
13943     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13944         eval "$i --version" > /dev/null 2>&1
13945         ret=$?
13946         if test $ret -eq 0; then
13947             SHA256SUM=$i
13948             break
13949         fi
13950     done
13953 if test -z "$SHA256SUM"; then
13954     AC_MSG_ERROR([no sha256sum found!])
13957 AC_SUBST(SHA256SUM)
13959 dnl ===================================================================
13960 dnl Dealing with l10n options
13961 dnl ===================================================================
13962 AC_MSG_CHECKING([which languages to be built])
13963 # get list of all languages
13964 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13965 # the sed command does the following:
13966 #   + if a line ends with a backslash, append the next line to it
13967 #   + adds " on the beginning of the value (after =)
13968 #   + adds " at the end of the value
13969 #   + removes en-US; we want to put it on the beginning
13970 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13971 [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)]
13972 ALL_LANGS="en-US $completelangiso"
13973 # check the configured localizations
13974 WITH_LANG="$with_lang"
13976 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13977 # (Norwegian is "nb" and "nn".)
13978 if test "$WITH_LANG" = "no"; then
13979     WITH_LANG=
13982 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13983     AC_MSG_RESULT([en-US])
13984 else
13985     AC_MSG_RESULT([$WITH_LANG])
13986     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13987     if test -z "$MSGFMT"; then
13988         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13989             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13990         elif test -x "/opt/lo/bin/msgfmt"; then
13991             MSGFMT="/opt/lo/bin/msgfmt"
13992         else
13993             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13994             if test -z "$MSGFMT"; then
13995                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13996             fi
13997         fi
13998     fi
13999     if test -z "$MSGUNIQ"; then
14000         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14001             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14002         elif test -x "/opt/lo/bin/msguniq"; then
14003             MSGUNIQ="/opt/lo/bin/msguniq"
14004         else
14005             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14006             if test -z "$MSGUNIQ"; then
14007                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14008             fi
14009         fi
14010     fi
14012 AC_SUBST(MSGFMT)
14013 AC_SUBST(MSGUNIQ)
14014 # check that the list is valid
14015 for lang in $WITH_LANG; do
14016     test "$lang" = "ALL" && continue
14017     # need to check for the exact string, so add space before and after the list of all languages
14018     for vl in $ALL_LANGS; do
14019         if test "$vl" = "$lang"; then
14020            break
14021         fi
14022     done
14023     if test "$vl" != "$lang"; then
14024         # if you're reading this - you prolly quoted your languages remove the quotes ...
14025         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14026     fi
14027 done
14028 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14029     echo $WITH_LANG | grep -q en-US
14030     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14032 # list with substituted ALL
14033 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14034 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14035 test "$WITH_LANG" = "en-US" && WITH_LANG=
14036 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14037     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14038     ALL_LANGS=`echo $ALL_LANGS qtz`
14040 AC_SUBST(ALL_LANGS)
14041 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14042 AC_SUBST(WITH_LANG)
14043 AC_SUBST(WITH_LANG_LIST)
14044 AC_SUBST(GIT_NEEDED_SUBMODULES)
14046 WITH_POOR_HELP_LOCALIZATIONS=
14047 if test -d "$SRC_ROOT/translations/source"; then
14048     for l in `ls -1 $SRC_ROOT/translations/source`; do
14049         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14050             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14051         fi
14052     done
14054 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14056 if test -n "$with_locales" -a "$with_locales" != ALL; then
14057     WITH_LOCALES="$with_locales"
14059     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14060     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14061     # config_host/config_locales.h.in
14062     for locale in $WITH_LOCALES; do
14063         lang=${locale%_*}
14065         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14067         case $lang in
14068         hi|mr*ne)
14069             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14070             ;;
14071         bg|ru)
14072             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14073             ;;
14074         esac
14075     done
14076 else
14077     AC_DEFINE(WITH_LOCALE_ALL)
14079 AC_SUBST(WITH_LOCALES)
14081 dnl git submodule update --reference
14082 dnl ===================================================================
14083 if test -n "${GIT_REFERENCE_SRC}"; then
14084     for repo in ${GIT_NEEDED_SUBMODULES}; do
14085         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14086             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14087         fi
14088     done
14090 AC_SUBST(GIT_REFERENCE_SRC)
14092 dnl git submodules linked dirs
14093 dnl ===================================================================
14094 if test -n "${GIT_LINK_SRC}"; then
14095     for repo in ${GIT_NEEDED_SUBMODULES}; do
14096         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14097             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14098         fi
14099     done
14101 AC_SUBST(GIT_LINK_SRC)
14103 dnl branding
14104 dnl ===================================================================
14105 AC_MSG_CHECKING([for alternative branding images directory])
14106 # initialize mapped arrays
14107 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14108 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14110 if test -z "$with_branding" -o "$with_branding" = "no"; then
14111     AC_MSG_RESULT([none])
14112     DEFAULT_BRAND_IMAGES="$brand_files"
14113 else
14114     if ! test -d $with_branding ; then
14115         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14116     else
14117         AC_MSG_RESULT([$with_branding])
14118         CUSTOM_BRAND_DIR="$with_branding"
14119         for lfile in $brand_files
14120         do
14121             if ! test -f $with_branding/$lfile ; then
14122                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14123                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14124             else
14125                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14126             fi
14127         done
14128         check_for_progress="yes"
14129     fi
14131 AC_SUBST([BRAND_INTRO_IMAGES])
14132 AC_SUBST([CUSTOM_BRAND_DIR])
14133 AC_SUBST([CUSTOM_BRAND_IMAGES])
14134 AC_SUBST([DEFAULT_BRAND_IMAGES])
14137 AC_MSG_CHECKING([for 'intro' progress settings])
14138 PROGRESSBARCOLOR=
14139 PROGRESSSIZE=
14140 PROGRESSPOSITION=
14141 PROGRESSFRAMECOLOR=
14142 PROGRESSTEXTCOLOR=
14143 PROGRESSTEXTBASELINE=
14145 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14146     source "$with_branding/progress.conf"
14147     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14148 else
14149     AC_MSG_RESULT([none])
14152 AC_SUBST(PROGRESSBARCOLOR)
14153 AC_SUBST(PROGRESSSIZE)
14154 AC_SUBST(PROGRESSPOSITION)
14155 AC_SUBST(PROGRESSFRAMECOLOR)
14156 AC_SUBST(PROGRESSTEXTCOLOR)
14157 AC_SUBST(PROGRESSTEXTBASELINE)
14160 dnl ===================================================================
14161 dnl Custom build version
14162 dnl ===================================================================
14163 AC_MSG_CHECKING([for extra build ID])
14164 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14165     EXTRA_BUILDID="$with_extra_buildid"
14167 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14168 if test -n "$EXTRA_BUILDID" ; then
14169     AC_MSG_RESULT([$EXTRA_BUILDID])
14170 else
14171     AC_MSG_RESULT([not set])
14173 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14175 OOO_VENDOR=
14176 AC_MSG_CHECKING([for vendor])
14177 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14178     OOO_VENDOR="$USERNAME"
14180     if test -z "$OOO_VENDOR"; then
14181         OOO_VENDOR="$USER"
14182     fi
14184     if test -z "$OOO_VENDOR"; then
14185         OOO_VENDOR="`id -u -n`"
14186     fi
14188     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14189 else
14190     OOO_VENDOR="$with_vendor"
14191     AC_MSG_RESULT([$OOO_VENDOR])
14193 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14194 AC_SUBST(OOO_VENDOR)
14196 if test "$_os" = "Android" ; then
14197     ANDROID_PACKAGE_NAME=
14198     AC_MSG_CHECKING([for Android package name])
14199     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14200         if test -n "$ENABLE_DEBUG"; then
14201             # Default to the package name that makes ndk-gdb happy.
14202             ANDROID_PACKAGE_NAME="org.libreoffice"
14203         else
14204             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14205         fi
14207         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14208     else
14209         ANDROID_PACKAGE_NAME="$with_android_package_name"
14210         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14211     fi
14212     AC_SUBST(ANDROID_PACKAGE_NAME)
14215 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14216 if test "$with_compat_oowrappers" = "yes"; then
14217     WITH_COMPAT_OOWRAPPERS=TRUE
14218     AC_MSG_RESULT(yes)
14219 else
14220     WITH_COMPAT_OOWRAPPERS=
14221     AC_MSG_RESULT(no)
14223 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14225 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14226 AC_MSG_CHECKING([for install dirname])
14227 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14228     INSTALLDIRNAME="$with_install_dirname"
14230 AC_MSG_RESULT([$INSTALLDIRNAME])
14231 AC_SUBST(INSTALLDIRNAME)
14233 AC_MSG_CHECKING([for prefix])
14234 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14235 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14236 PREFIXDIR="$prefix"
14237 AC_MSG_RESULT([$PREFIXDIR])
14238 AC_SUBST(PREFIXDIR)
14240 LIBDIR=[$(eval echo $(eval echo $libdir))]
14241 AC_SUBST(LIBDIR)
14243 DATADIR=[$(eval echo $(eval echo $datadir))]
14244 AC_SUBST(DATADIR)
14246 MANDIR=[$(eval echo $(eval echo $mandir))]
14247 AC_SUBST(MANDIR)
14249 DOCDIR=[$(eval echo $(eval echo $docdir))]
14250 AC_SUBST(DOCDIR)
14252 BINDIR=[$(eval echo $(eval echo $bindir))]
14253 AC_SUBST(BINDIR)
14255 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14256 AC_SUBST(INSTALLDIR)
14258 TESTINSTALLDIR="${BUILDDIR}/test-install"
14259 AC_SUBST(TESTINSTALLDIR)
14262 # ===================================================================
14263 # OAuth2 id and secrets
14264 # ===================================================================
14266 AC_MSG_CHECKING([for Google Drive client id and secret])
14267 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14268     AC_MSG_RESULT([not set])
14269     GDRIVE_CLIENT_ID="\"\""
14270     GDRIVE_CLIENT_SECRET="\"\""
14271 else
14272     AC_MSG_RESULT([set])
14273     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14274     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14276 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14277 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14279 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14280 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14281     AC_MSG_RESULT([not set])
14282     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14283     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14284 else
14285     AC_MSG_RESULT([set])
14286     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14287     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14289 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14290 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14292 AC_MSG_CHECKING([for OneDrive client id and secret])
14293 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14294     AC_MSG_RESULT([not set])
14295     ONEDRIVE_CLIENT_ID="\"\""
14296     ONEDRIVE_CLIENT_SECRET="\"\""
14297 else
14298     AC_MSG_RESULT([set])
14299     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14300     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14302 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14303 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14306 dnl ===================================================================
14307 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14308 dnl --enable-dependency-tracking configure option
14309 dnl ===================================================================
14310 AC_MSG_CHECKING([whether to enable dependency tracking])
14311 if test "$enable_dependency_tracking" = "no"; then
14312     nodep=TRUE
14313     AC_MSG_RESULT([no])
14314 else
14315     AC_MSG_RESULT([yes])
14317 AC_SUBST(nodep)
14319 dnl ===================================================================
14320 dnl Number of CPUs to use during the build
14321 dnl ===================================================================
14322 AC_MSG_CHECKING([for number of processors to use])
14323 # plain --with-parallelism is just the default
14324 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14325     if test "$with_parallelism" = "no"; then
14326         PARALLELISM=0
14327     else
14328         PARALLELISM=$with_parallelism
14329     fi
14330 else
14331     if test "$enable_icecream" = "yes"; then
14332         PARALLELISM="40"
14333     else
14334         case `uname -s` in
14336         Darwin|FreeBSD|NetBSD|OpenBSD)
14337             PARALLELISM=`sysctl -n hw.ncpu`
14338             ;;
14340         Linux)
14341             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14342         ;;
14343         # what else than above does profit here *and* has /proc?
14344         *)
14345             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14346             ;;
14347         esac
14349         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14350         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14351     fi
14354 if test $PARALLELISM -eq 0; then
14355     AC_MSG_RESULT([explicit make -j option needed])
14356 else
14357     AC_MSG_RESULT([$PARALLELISM])
14359 AC_SUBST(PARALLELISM)
14362 # Set up ILIB for MSVC build
14364 ILIB1=
14365 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14366     ILIB="."
14367     if test -n "$JAVA_HOME"; then
14368         ILIB="$ILIB;$JAVA_HOME/lib"
14369     fi
14370     ILIB1=-link
14371     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14372     ILIB="$ILIB;$formatted_path"
14373     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14374     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14375     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14376     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14377         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14378         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14379     fi
14380     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14381     ucrtlibpath_formatted=$formatted_path
14382     ILIB="$ILIB;$ucrtlibpath_formatted"
14383     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14384     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14385         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14386         ILIB="$ILIB;$formatted_path"
14387     else
14388         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14389         ILIB="$ILIB;$formatted_path"
14390     fi
14392     if test "$cross_compiling" != "yes"; then
14393         ILIB_FOR_BUILD="$ILIB"
14394     fi
14396 AC_SUBST(ILIB)
14397 AC_SUBST(ILIB_FOR_BUILD)
14399 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14400 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14401 dnl from consteval constructor initializing const variable",
14402 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14403 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14404 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14405 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14406 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14407 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14408 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14409 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14410 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14411 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14412 AC_LANG_PUSH([C++])
14413 save_CXX=$CXX
14414 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14415     CXX="env LIB=$ILIB $CXX"
14417 save_CXXFLAGS=$CXXFLAGS
14418 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14419 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14420         struct S {
14421             consteval S() { i = 1; }
14422             int i = 0;
14423         };
14424         S const s;
14426         struct S1 { consteval S1(int) {} };
14427         struct S2 {
14428             S1 x;
14429             S2(): x(0) {}
14430         };
14432         struct S3 {
14433             consteval S3() {}
14434             union {
14435                 int a;
14436                 unsigned b = 0;
14437             };
14438         };
14439         void f() { S3(); }
14441         struct S4 { consteval S4() = default; };
14442         void f4(bool b) { b ? S4() : S4(); }
14444         struct S5 {
14445             consteval S5() { c = 0; }
14446             char * f() { return &c; }
14447             union {
14448                 char c;
14449                 int i;
14450             };
14451         };
14452         auto s5 = S5().f();
14453     ], [
14454         return (s.i == 1) ? 0 : 1;
14455     ])], [
14456         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14457         AC_MSG_RESULT([yes])
14458     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14459 CXX=$save_CXX
14460 CXXFLAGS=$save_CXXFLAGS
14461 AC_LANG_POP([C++])
14463 # ===================================================================
14464 # Creating bigger shared library to link against
14465 # ===================================================================
14466 AC_MSG_CHECKING([whether to create huge library])
14467 MERGELIBS=
14469 if test $_os = iOS -o $_os = Android; then
14470     # Never any point in mergelibs for these as we build just static
14471     # libraries anyway...
14472     enable_mergelibs=no
14475 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14476     if test $_os != Linux -a $_os != WINNT; then
14477         add_warning "--enable-mergelibs is not tested for this platform"
14478     fi
14479     MERGELIBS="TRUE"
14480     AC_MSG_RESULT([yes])
14481     AC_DEFINE(ENABLE_MERGELIBS)
14482 else
14483     AC_MSG_RESULT([no])
14485 AC_SUBST([MERGELIBS])
14487 dnl ===================================================================
14488 dnl icerun is a wrapper that stops us spawning tens of processes
14489 dnl locally - for tools that can't be executed on the compile cluster
14490 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14491 dnl ===================================================================
14492 AC_MSG_CHECKING([whether to use icerun wrapper])
14493 ICECREAM_RUN=
14494 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14495     ICECREAM_RUN=icerun
14496     AC_MSG_RESULT([yes])
14497 else
14498     AC_MSG_RESULT([no])
14500 AC_SUBST(ICECREAM_RUN)
14502 dnl ===================================================================
14503 dnl Setup the ICECC_VERSION for the build the same way it was set for
14504 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14505 dnl ===================================================================
14506 x_ICECC_VERSION=[\#]
14507 if test -n "$ICECC_VERSION" ; then
14508     x_ICECC_VERSION=
14510 AC_SUBST(x_ICECC_VERSION)
14511 AC_SUBST(ICECC_VERSION)
14513 dnl ===================================================================
14515 AC_MSG_CHECKING([MPL subset])
14516 MPL_SUBSET=
14518 if test "$enable_mpl_subset" = "yes"; then
14519     warn_report=false
14520     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14521         warn_report=true
14522     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14523         warn_report=true
14524     fi
14525     if test "$warn_report" = "true"; then
14526         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14527     fi
14528     if test "x$enable_postgresql_sdbc" != "xno"; then
14529         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14530     fi
14531     if test "$enable_lotuswordpro" = "yes"; then
14532         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14533     fi
14534     if test -n "$ENABLE_POPPLER"; then
14535         if test "x$SYSTEM_POPPLER" = "x"; then
14536             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14537         fi
14538     fi
14539     # cf. m4/libo_check_extension.m4
14540     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14541         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14542     fi
14543     for theme in $WITH_THEMES; do
14544         case $theme in
14545         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14546             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14547         *) : ;;
14548         esac
14549     done
14551     ENABLE_OPENGL_TRANSITIONS=
14553     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14554         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14555     fi
14557     MPL_SUBSET="TRUE"
14558     AC_DEFINE(MPL_HAVE_SUBSET)
14559     AC_MSG_RESULT([only])
14560 else
14561     AC_MSG_RESULT([no restrictions])
14563 AC_SUBST(MPL_SUBSET)
14565 dnl ===================================================================
14567 AC_MSG_CHECKING([formula logger])
14568 ENABLE_FORMULA_LOGGER=
14570 if test "x$enable_formula_logger" = "xyes"; then
14571     AC_MSG_RESULT([yes])
14572     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14573     ENABLE_FORMULA_LOGGER=TRUE
14574 elif test -n "$ENABLE_DBGUTIL" ; then
14575     AC_MSG_RESULT([yes])
14576     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14577     ENABLE_FORMULA_LOGGER=TRUE
14578 else
14579     AC_MSG_RESULT([no])
14582 AC_SUBST(ENABLE_FORMULA_LOGGER)
14584 dnl ===================================================================
14585 dnl Checking for active Antivirus software.
14586 dnl ===================================================================
14588 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14589     AC_MSG_CHECKING([for active Antivirus software])
14590     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14591     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14592     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14593         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14594             AC_MSG_RESULT([found])
14595             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14596             echo $EICAR_STRING > $SRC_ROOT/eicar
14597             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14598             rm $SRC_ROOT/eicar
14599             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14600                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14601             fi
14602             echo $EICAR_STRING > $BUILDDIR/eicar
14603             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14604             rm $BUILDDIR/eicar
14605             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14606                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14607             fi
14608             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"
14609         else
14610             AC_MSG_RESULT([not found])
14611         fi
14612     else
14613         AC_MSG_RESULT([n/a])
14614     fi
14617 dnl ===================================================================
14619 AC_MSG_CHECKING([for coredumpctl support])
14620 if test -z "$with_coredumpctl" && test $_os != Linux; then
14621     with_coredumpctl=no
14623 if test "$with_coredumpctl" = no; then
14624     WITH_COREDUMPCTL=
14625 else
14626     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14627     AC_PATH_PROG(JQ, jq)
14628     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14629     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14630     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14631         || test -z "$SYSTEMD_RUN"
14632     then
14633         if test -z "$with_coredumpctl"; then
14634             WITH_COREDUMPCTL=
14635         else
14636             if test -z "$COREDUMPCTL"; then
14637                 AC_MSG_ERROR([coredumpctl not found])
14638             fi
14639             if test -z "$JQ"; then
14640                 AC_MSG_ERROR([jq not found])
14641             fi
14642             if test -z "$SYSTEMD_ESCAPE"; then
14643                 AC_MSG_ERROR([systemd-escape not found])
14644             fi
14645             if test -z "$SYSTEMD_RUN"; then
14646                 AC_MSG_ERROR([systemd-run not found])
14647             fi
14648         fi
14649     else
14650         WITH_COREDUMPCTL=TRUE
14651     fi
14653 if test -z "$WITH_COREDUMPCTL"; then
14654     AC_MSG_RESULT([no])
14655 else
14656     AC_MSG_RESULT([yes])
14658 AC_SUBST(COREDUMPCTL)
14659 AC_SUBST(JQ)
14660 AC_SUBST(SYSTEMD_ESCAPE)
14661 AC_SUBST(SYSTEMD_RUN)
14662 AC_SUBST(WITH_COREDUMPCTL)
14664 dnl ===================================================================
14665 dnl Setting up the environment.
14666 dnl ===================================================================
14667 AC_MSG_NOTICE([setting up the build environment variables...])
14669 AC_SUBST(COMPATH)
14671 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14672     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14673         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14674         ATL_INCLUDE="$COMPATH/atlmfc/include"
14675     elif test -d "$COMPATH/atlmfc/lib"; then
14676         ATL_LIB="$COMPATH/atlmfc/lib"
14677         ATL_INCLUDE="$COMPATH/atlmfc/include"
14678     else
14679         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14680         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14681     fi
14682     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14683     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14684     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14687 if test "$build_os" = "cygwin"; then
14688     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14689     PathFormat "/usr/bin/find.exe"
14690     FIND="$formatted_path"
14691     PathFormat "/usr/bin/sort.exe"
14692     SORT="$formatted_path"
14693     PathFormat "/usr/bin/grep.exe"
14694     WIN_GREP="$formatted_path"
14695     PathFormat "/usr/bin/ls.exe"
14696     WIN_LS="$formatted_path"
14697     PathFormat "/usr/bin/touch.exe"
14698     WIN_TOUCH="$formatted_path"
14699 else
14700     FIND=find
14701     SORT=sort
14704 AC_SUBST(ATL_INCLUDE)
14705 AC_SUBST(ATL_LIB)
14706 AC_SUBST(FIND)
14707 AC_SUBST(SORT)
14708 AC_SUBST(WIN_GREP)
14709 AC_SUBST(WIN_LS)
14710 AC_SUBST(WIN_TOUCH)
14712 AC_SUBST(BUILD_TYPE)
14714 AC_SUBST(SOLARINC)
14716 PathFormat "$PERL"
14717 PERL="$formatted_path"
14718 AC_SUBST(PERL)
14720 if test -n "$TMPDIR"; then
14721     TEMP_DIRECTORY="$TMPDIR"
14722 else
14723     TEMP_DIRECTORY="/tmp"
14725 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
14726 if test "$build_os" = "cygwin"; then
14727     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14728     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
14730 AC_SUBST(TEMP_DIRECTORY)
14731 AC_SUBST(CYGWIN_BASH)
14733 # setup the PATH for the environment
14734 if test -n "$LO_PATH_FOR_BUILD"; then
14735     LO_PATH="$LO_PATH_FOR_BUILD"
14736     case "$host_os" in
14737     cygwin*|wsl*)
14738         pathmunge "$MSVC_HOST_PATH" "before"
14739         ;;
14740     esac
14741 else
14742     LO_PATH="$PATH"
14744     case "$host_os" in
14746     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14747         if test "$ENABLE_JAVA" != ""; then
14748             pathmunge "$JAVA_HOME/bin" "after"
14749         fi
14750         ;;
14752     cygwin*|wsl*)
14753         # Win32 make needs native paths
14754         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14755             LO_PATH=`cygpath -p -m "$PATH"`
14756         fi
14757         if test "$WIN_BUILD_ARCH" = "x64"; then
14758             # needed for msi packaging
14759             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14760         fi
14761         if test "$WIN_BUILD_ARCH" = "arm64"; then
14762             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
14763             # the x86 ones probably would work just as well...
14764             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
14765         fi
14766         # .NET 4.6 and higher don't have bin directory
14767         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14768             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14769         fi
14770         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14771         pathmunge "$CSC_PATH" "before"
14772         pathmunge "$MIDL_PATH" "before"
14773         pathmunge "$AL_PATH" "before"
14774         pathmunge "$MSVC_MULTI_PATH" "before"
14775         pathmunge "$MSVC_BUILD_PATH" "before"
14776         if test -n "$MSBUILD_PATH" ; then
14777             pathmunge "$MSBUILD_PATH" "before"
14778         fi
14779         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14780         if test "$ENABLE_JAVA" != ""; then
14781             if test -d "$JAVA_HOME/jre/bin/client"; then
14782                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14783             fi
14784             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14785                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14786             fi
14787             pathmunge "$JAVA_HOME/bin" "before"
14788         fi
14789         pathmunge "$MSVC_HOST_PATH" "before"
14790         ;;
14792     solaris*)
14793         pathmunge "/usr/css/bin" "before"
14794         if test "$ENABLE_JAVA" != ""; then
14795             pathmunge "$JAVA_HOME/bin" "after"
14796         fi
14797         ;;
14798     esac
14801 AC_SUBST(LO_PATH)
14803 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14804 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14805     x_LO_ELFCHECK_ALLOWLIST=
14806 else
14807     x_LO_ELFCHECK_ALLOWLIST=[\#]
14809 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14810 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14812 libo_FUZZ_SUMMARY
14814 # Generate a configuration sha256 we can use for deps
14815 if test -f config_host.mk; then
14816     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14818 if test -f config_host_lang.mk; then
14819     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14822 CFLAGS=$my_original_CFLAGS
14823 CXXFLAGS=$my_original_CXXFLAGS
14824 CPPFLAGS=$my_original_CPPFLAGS
14826 AC_CONFIG_LINKS([include:include])
14828 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14829 # BUILD platform configuration] - otherwise breaks cross building
14830 AC_CONFIG_FILES([config_host.mk
14831                  config_host_lang.mk
14832                  Makefile
14833                  lo.xcent
14834                  bin/bffvalidator.sh
14835                  bin/odfvalidator.sh
14836                  bin/officeotron.sh
14837                  hardened_runtime.xcent
14838                  instsetoo_native/util/openoffice.lst
14839                  sysui/desktop/macosx/Info.plist
14840                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14842 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14843 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14844 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14845 AC_CONFIG_HEADERS([config_host/config_clang.h])
14846 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14847 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14848 AC_CONFIG_HEADERS([config_host/config_eot.h])
14849 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14850 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14851 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14852 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14853 AC_CONFIG_HEADERS([config_host/config_features.h])
14854 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14855 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14856 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14857 AC_CONFIG_HEADERS([config_host/config_folders.h])
14858 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14859 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14860 AC_CONFIG_HEADERS([config_host/config_gio.h])
14861 AC_CONFIG_HEADERS([config_host/config_global.h])
14862 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14863 AC_CONFIG_HEADERS([config_host/config_java.h])
14864 AC_CONFIG_HEADERS([config_host/config_langs.h])
14865 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14866 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14867 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14868 AC_CONFIG_HEADERS([config_host/config_locales.h])
14869 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14870 AC_CONFIG_HEADERS([config_host/config_oox.h])
14871 AC_CONFIG_HEADERS([config_host/config_options.h])
14872 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14873 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14874 AC_CONFIG_HEADERS([config_host/config_skia.h])
14875 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14876 AC_CONFIG_HEADERS([config_host/config_validation.h])
14877 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14878 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14879 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14880 AC_CONFIG_HEADERS([config_host/config_version.h])
14881 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14882 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14883 AC_CONFIG_HEADERS([config_host/config_python.h])
14884 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14885 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14886 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14887 AC_OUTPUT
14889 if test "$CROSS_COMPILING" = TRUE; then
14890     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14893 # touch the config timestamp file
14894 if test ! -f config_host.mk.stamp; then
14895     echo > config_host.mk.stamp
14896 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14897     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14898 else
14899     echo > config_host.mk.stamp
14902 # touch the config lang timestamp file
14903 if test ! -f config_host_lang.mk.stamp; then
14904     echo > config_host_lang.mk.stamp
14905 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14906     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14907 else
14908     echo > config_host_lang.mk.stamp
14912 if test \( "$STALE_MAKE" = "TRUE" \) \
14913         -a "$build_os" = "cygwin"; then
14915 cat << _EOS
14916 ****************************************************************************
14917 WARNING:
14918 Your make version is known to be horribly slow, and hard to debug
14919 problems with. To get a reasonably functional make please do:
14921 to install a pre-compiled binary make for Win32
14923  mkdir -p /opt/lo/bin
14924  cd /opt/lo/bin
14925  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14926  cp make-4.2.1-msvc.exe make
14927  chmod +x make
14929 to install from source:
14930 place yourself in a working directory of you choice.
14932  git clone git://git.savannah.gnu.org/make.git
14934  [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"]
14935  set PATH=%PATH%;C:\Cygwin\bin
14936  [or Cygwin64, if that is what you have]
14937  cd path-to-make-repo-you-cloned-above
14938  build_w32.bat --without-guile
14940 should result in a WinRel/gnumake.exe.
14941 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14943 Then re-run autogen.sh
14945 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14946 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14948 _EOS
14952 cat << _EOF
14953 ****************************************************************************
14955 To show information on various make targets and make flags, run:
14956 $GNUMAKE help
14958 To just build, run:
14959 $GNUMAKE
14961 _EOF
14963 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14964     cat << _EOF
14965 After the build has finished successfully, you can immediately run what you built using the command:
14966 _EOF
14968     if test $_os = Darwin; then
14969         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14970     else
14971         echo instdir/program/soffice
14972     fi
14973     cat << _EOF
14975 If you want to run the unit tests, run:
14976 $GNUMAKE check
14978 _EOF
14981 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14982     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14983     cat "$WARNINGS_FILE_FOR_BUILD"
14984     echo
14987 if test -s "$WARNINGS_FILE"; then
14988     echo "HOST config ($WARNINGS_FILE)"
14989     cat "$WARNINGS_FILE"
14992 # Remove unneeded emconfigure artifacts
14993 rm -f a.out a.wasm a.out.js a.out.wasm
14995 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: